function stripLeadingZeroes(input) {
	if((input.length > 1) && (input.substr(0,1) == "0")) return input.substr(1);
	else return input;
}

function fadeElements() {

	var name = document.getElementById("f_name").value;
	var email = document.getElementById("f_email").value;
	var area = document.getElementById("f_area").value;
	var phone = document.getElementById("f_phone").value;
	var ext = document.getElementById("f_ext").value;
	var city = document.getElementById("f_city").value;
	var zip = document.getElementById("f_zip").value;
	var todaysDate = document.getElementById("f_today").value;
	var startDate = document.getElementById("f_start_date").value;
//	var endDate = document.getElementById("f_end_date").value;
	var startTime = document.getElementById("f_start_time").value;
//	var endTime = document.getElementById("f_end_time").value;
	var duration = document.getElementById("f_duration").value;
	var comments = document.getElementById("f_comments").value;
	var services = document.getElementById("f_services").value;
	var subscribers = document.getElementById("f_subscribers").value;
	var providers = document.getElementById("f_providers").value;
	var numSubscribers = document.getElementById('f_num_subscribers').value;
	var numProviders = document.getElementById('f_num_providers').value;
	var numHousesitters = document.getElementById('f_num_housesitters').value;
	var housesitters = document.getElementById('f_housesitters').value;
	
	var hsString = "";
	
	for (var x = 1; x <= numHousesitters; x++) {
		if($('hs_'+x).hasClassName('providerOff')) hsString += "0";
		else hsString += "1";
		if(x != numHousesitters) hsString += ","; 
	}

	var subString = "";
	
	for (var x = 1; x <= numSubscribers; x++) {
		if($('sub_'+x).hasClassName('providerOff')) subString += "0";
		else subString += "1";
		if(x != numSubscribers) subString += ","; 
	}
	
	var proString = "";
	
	for (var x = 1; x <= numProviders; x++) {
		if($('pro_'+x).hasClassName('providerOff')) proString += "0";
		else proString += "1";
		if(x != numProviders) proString += ","; 
	}
	
	var regEmail = "^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$";
	
	var regPhone1 = "^[0-9]{3} [0-9]{4}$";
	var regPhone2 = "^[0-9]{3}-[0-9]{4}$";
	var regPhone3 = "^[0-9]{7}$";
	
	var regArea = "^[0-9]{3}$";
	
	var reg1 = new RegExp(regEmail);
	var reg2 = new RegExp(regPhone1);
	var reg3 = new RegExp(regPhone2);
	var reg4 = new RegExp(regPhone3);
	var reg5 = new RegExp(regArea);
	
	/*
	if(startDate != "") {

		var todayArray = todaysDate.split("/");
		var humDate = new Date(Date.UTC(todayArray[2],stripLeadingZeroes(todayArray[0]),stripLeadingZeroes(todayArray[1])));
		var todayUnix = (humDate.getTime()/1000.0);
	
		var startArray = startDate.split("/");
		var humDate = new Date(Date.UTC(startArray[2],stripLeadingZeroes(startArray[0]),stripLeadingZeroes(startArray[1])));
		var startUnix = (humDate.getTime()/1000.0);
		
	}
	*/
	
	var errorMessage = "I'm sorry, there are some problems with the information you submitted. They are:\n\n";
	
	if(name == "") {
		var errors = 1;
		errorMessage += "     - Name was left blank. \n";
	}
	
	if(email == "") {
		var errors = 1;
		errorMessage += "     - E-mail address was left blank. \n";
	} else {
		if(!reg1.test(email)) {
			var errors = 1;
			errorMessage += "     - E-mail address was invalid. \n";
		}
	}
	
	if(area == "") {
		var errors = 1;
		errorMessage += "     - Area code was left blank. \n";
	} else {
		if(!reg5.test(area)) {
			var errors = 1;
			errorMessage += "     - Area code is invalid. \n";
		}
	}
	
	if(phone == "") {
		var errors = 1;
		errorMessage += "     - Phone number was left blank. \n";
	} else {
		if(reg2.test(phone) || reg3.test(phone) || reg4.test(phone)) {
			// do nothing
		} else {
			var errors = 1;
			errorMessage += "     - Phone number is invalid. \n";
		}
	}

	if(city == "") {
		var errors = 1;
		errorMessage += "     - City was left blank. \n";
	}

	if(zip == "") {
		var errors = 1;
		errorMessage += "     - ZIP code was left blank. \n";
	}
	
	/*
	if(startDate != "" && endDate != "") {
	
		if(startUnix < todayUnix) {
			var errors = 1;
			errorMessage += "     - Start date must be after today. \n";
		}
	
	}
	*/
	errorMessage += "\nPlease correct these problems and try again.\n\n";
	
	if(errors == 1) {
	
		alert(errorMessage);
		return false;
		
	} else {
		
		window.scrollTo(0,0);
		Element.show('overlayDiv');
		Element.show('lightboxDiv');
		
		var pars = "name="+name+"&email="+email+"&area="+area+"&phone="+phone+"&ext="+ext+"&city="+city+"&zip="+zip+"&services="+services+"&start_date="+startDate+"&start_time="+startTime+"&duration="+duration+"&comments="+comments+"&subscribers="+subscribers+"&providers="+providers+"&blockPro="+proString+"&blockSub="+subString+"&housesitters="+housesitters+"&blockSit="+hsString;
		
		var show_form = new Ajax.Updater('formConfirm','/ajax/form_confirm.php', {
			method: 'get', 
			asynchronous:true,
			parameters: pars,
			evalScripts:true
			}
		);
	 
		return false;
		
	}

}

function sendReferral() {

	var name = document.getElementById("f_name").value;
	var email = document.getElementById("f_email").value;
	var area = document.getElementById("f_area").value;
	var phone = document.getElementById("f_phone").value;
	var ext = document.getElementById("f_ext").value;
	var city = document.getElementById("f_city").value;
	var zip = document.getElementById("f_zip").value;
	var todaysDate = document.getElementById("f_today").value;
	var startDate = document.getElementById("f_start_date").value;
//	var endDate = document.getElementById("f_end_date").value;
	var startTime = document.getElementById("f_start_time").value;
//	var endTime = document.getElementById("f_end_time").value;
	var duration = document.getElementById("f_duration").value;
	var comments = document.getElementById("f_comments").value;
	var service = document.getElementById("f_services").value;
	var subscribers = document.getElementById("f_subscribers").value;
	var providers = document.getElementById("f_providers").value;
	var numSubscribers = document.getElementById('f_num_subscribers').value;
	var numProviders = document.getElementById('f_num_providers').value;
	var numHousesitters = document.getElementById('f_num_housesitters').value;
	var housesitters = document.getElementById('f_housesitters').value;

	var hsString = "";
	
	for (var x = 1; x <= numHousesitters; x++) {
		if($('hs_'+x).hasClassName('providerOff')) hsString += "0";
		else hsString += "1";
		if(x != numHousesitters) hsString += ","; 
	}

	var subString = "";
	
	for (var x = 1; x <= numSubscribers; x++) {
		if($('sub_'+x).hasClassName('providerOff')) subString += "0";
		else subString += "1";
		if(x != numSubscribers) subString += ","; 
	}
	
	var proString = "";
	
	for (var x = 1; x <= numProviders; x++) {
		if($('pro_'+x).hasClassName('providerOff')) proString += "0";
		else proString += "1";
		if(x != numProviders) proString += ","; 
	}

	var loadingEffect = new Effect.Appear('sendingRequest',{
		duration: .2,
		afterFinish:function(){
		setTimeout(function(){
	new Effect.Fade('sendingRequest',{
		duration: .2,
		afterFinish:function(){
			new Element.remove('lightboxDiv');
			new Element.remove('overlayDiv');
			new Element.remove('zip_panel')
			new Effect.Appear('main_panel', {duration:1});
			var pars = "name="+name+"&email="+email+"&area="+area+"&phone="+phone+"&ext="+ext+"&city="+city+"&zip="+zip+"&services="+services+"&start_date="+startDate+"&start_time="+startTime+"&duration="+duration+"&comments="+comments+"&service="+service+"&subscribers="+subscribers+"&providers="+providers+"&blockPro="+proString+"&blockSub="+subString+"&housesitters="+housesitters+"&blockSit="+hsString;
			
			var show_form = new Ajax.Updater('main_panel','/ajax/contact_response.php', {
				method: 'get', 
				asynchronous:true,
				parameters: pars,
				evalScripts:true
			}
		);
	
		Element.remove('sendingRequest');

		}
	});}, 2000);
	}
 });
	
}

function showZipForm() {

	Element.show('zip_text');

	var pars = "";
	
	var showHomeContent = new Element.show('home_box');
	var hideSearchForm = new Element.hide('main_panel');
	
	var zip_form = new Ajax.Updater('zip_panel','/ajax/zip_form.php', {
		method: 'get', 
		asynchronous:true,
		parameters: pars,
		evalScripts:true
		}
	);
	
	document.zip_code.f_zipcode.focus();
	
	return false;
	
}

function countZip(maxlen) {

	var zip = "";
	var zcount = document.getElementById("f_zipcode").value.length;
	var zip = document.getElementById("f_zipcode").value;
	
	if(zcount == maxlen) {
	
		var re5digit=/^\d{5}$/
	
		if (document.getElementById("f_zipcode").value.search(re5digit)==-1) {
		
			alert("I'm sorry, there was an error:\n\nZIP code must contain numbers only. Please try again.");
			document.getElementById("f_zipcode").value = "";
		
		} else {
			
			document.getElementById('f_zipcode').disabled="disabled";
		
			var loadingEffect = new Effect.Appear('spinner',{
				afterFinish:function(){
			setTimeout(function(){
				new Effect.Fade('spinner',{
			afterFinish:function(){
				
				var pars = "zip="+zip;
				
				var zip_results = new Ajax.Updater('zip_panel','/ajax/search_results.php', {
					method: 'get', 
					asynchronous:true,
					parameters: pars,
					evalScripts:true
					}
				);
				
				Element.hide('zip_text');
				Element.hide('city_search');
	
			}
			});}, 200);
			}
		 	});
			
		}

	}	
}

function checkServices() {

	if(document.getElementById("check_1").checked == true) var check1=1;
	else var check1=0;
	if(document.getElementById("check_2").checked == true) var check2=1;
	else var check2=0;
	if(document.getElementById("check_3").checked == true) var check3=1;
	else var check3=0;
	if(document.getElementById("check_4").checked == true) var check4=1;
	else var check4=0;
	if(document.getElementById("check_5").checked == true) var check5=1;
	else var check5=0;	
		
	var checkAll = check1 + check2 + check3 + check4 + check5;
	
	if(checkAll < 1) {
	
		alert("I'm sorry, there was an error:\n\nYou must select at least one service to continue.");
		
	} else {
		
		Element.hide('noMatches');
	
		var searchingEffect = new Effect.Appear('searchListings',{
			duration: .2,
			afterFinish:function(){
		setTimeout(function(){
			new Effect.Fade('searchListings',{
			duration: .2,
			afterFinish:function(){
		
				if(document.getElementById("check_1").checked == true) var service=1;
				if(document.getElementById("check_2").checked == true) var service=2;
				if(document.getElementById("check_3").checked == true) var service=3;
				if(document.getElementById("check_4").checked == true) var service=4;
				if(document.getElementById("check_5").checked == true) var service=5;
			
				var zip = document.getElementById('f_zipcode').value;			
				
				var pars = "zip="+zip+"&services="+service;
				
				new Ajax.Request('/ajax/check_services.php',{
					asynchronous: true,
					postBody: pars,
					onComplete:function(request){
						if(request.responseText == '1') {
							return loadForm();
						} else {
							return errorForm();
						}
					}
				});
							}
				});}, 1500);
				}
			 });
			
		}
	
	return false;
	
}

function errorForm() {

	// var slideErrorDown = new Effect.Appear('noMatches',{duration: .5});
	var redirect = location.href='/no_matches';
	
}

function loadForm() { 

	if(document.getElementById("check_1").checked == true) var service=1;
	if(document.getElementById("check_2").checked == true) var service=2;
	if(document.getElementById("check_3").checked == true) var service=3;
	if(document.getElementById("check_4").checked == true) var service=4;
	if(document.getElementById("check_5").checked == true) var service=5;

	var zip = document.getElementById("f_zipcode").value;
	var searchEffect1 = new Element.hide('home_box');
	
	var pars = "zip="+zip+"&services="+service;

	var zip_results = new Ajax.Updater('zip_panel','/ajax/search_results.php?state=1', {
		method: 'get', 
		asynchronous:true,
		parameters: pars,
		evalScripts:true
		}
	);

	var show_form = new Ajax.Updater('main_panel','/ajax/contact_form.php', {
		method: 'get', 
		asynchronous:true,
		parameters: pars,
		evalScripts:true
		}
	);
	
	var searchEffect2 = new Element.show('main_panel');	

}

function providerClick(id) {
	
	var curClass = document.getElementById(id).className;
	
	if(curClass == "providerOn") var newState = "providerOff";
	else var newState = "providerOn";
	
	document.getElementById(id).className = newState;
	
	return false;

}

function removeLightbox() {

	Element.hide('overlayDiv');
	Element.hide('lightboxDiv');

}

function linkTo(to) {

	pars = "link="+to;

	var show_form = new Ajax.Updater('zip_panel','./ajax/linkto.php', {
		method: 'get', 
		asynchronous:true,
		parameters: pars,
		evalScripts:true
		}
	);
	
}