/**
* Capitalize the first letter of every word
*/
function capitalizeFirst(text) {
		text = text.toLowerCase();
		
    var words = text.split(/\s/);
    var out = '';
		
    for (var i = 0; i < words.length; i++){
        words[i] = words[i].replace(/^[a-z]/, words[i].substring(0, 1).toUpperCase());
        out += words[i] + (i == words.length-1 ? '' : ' ');
    }
    return out;
}

/**
* Standardize the formatting for hours 
*/
function normalizeHours(hour_block){
	var hours = $.trim(hour_block);
	
	if (!hours || hours == '')
		return '';
		
	hours = hours.toLowerCase();
	
	if (hours == 'closed')
		return 'Closed';
	
	try{
		hours = hours.replace(/\s|m/g, '');
		
		/*console.log('Open test--' + hours.match(/(\d{1,2}:\d{2}|^\d{1,2})[ap]-/g));
		console.log('Close test--' + hours.match(/(-\d{1,2}:\d{2}|-\d{1,2})[ap]/g));
		return;*/
		
		var open = hours.match(/(\d{1,2}:\d{2}|^\d{1,2})[ap]-/g).join('|').replace(/-/g, '');
		var close = hours.match(/(-\d{1,2}:\d{2}|-\d{1,2})[ap]/g).join('|').replace(/-/g, '');
	}catch(e){
		return '';
	}
	
	//console.log('Open--' + open);
	//console.log('Close--' +  close);
	
	if (!open || !close)
		return '';
	
	open = open.split('|');
	close = close.split('|');

	var formattedHours = new Array(open.length);
	
	if (open.length == close.length){
		for(var i = 0; i < open.length; i++){
			formattedHours[i] = open[i].replace(/(a|p)/, '$1m') + ' - ' + close[i].replace(/(a|p)/, '$1m');
		}
	}
	
	 return formattedHours.join(', ');
}

/**
* Standardize the formatting for phone numbers
*/
function normalizePhone(digits){
	
	if (!$.trim(digits))
		return;
	
	var regex = new RegExp(/x\d+/);
	var ext = regex.exec(digits);
	regex.lastIndex = 0;
	
	if (ext)
		digits = digits.replace(ext, '');
	
	// remove spaces -- remove leading 1 or leading non-digit 1 e.g. +1 -- replace all non digits with periods
	digits = digits.replace(/\s+/g, '').replace(/^(1|\D1)/, '').replace(/\D+/g, '.');	
	// break into array of numbers splitting on periods
	var digitArray = digits.split(/\./);
	
	// add periods into the array if a number precedes and follows
	for(i = 0; i < digitArray.length - 1; i++){
		if (digitArray[i].match(/\d/) && digitArray[i+1].match(/\d/))
			digitArray[i] = digitArray[i] + '.';
	}
	
	// format the number and return
	var phoneNumber = '+1 ' + digitArray.join('') + (ext ? ' ' + ext : '');
	return phoneNumber;
}

/**
* Standardize the formatting for url
*/
function normalizeUrl(url){
	if (!$.trim(url))
		return;
		
	if (!url.match(/^(http|https):\/\//))
		url = 'http://' + url;
		
	return url;
}

function validUrl(url){	
	var regexp = /(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
	return regexp.test(url);
}

function validEmail(email){
	var regexp  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	return regexp.test(email);
}