	var ext_prefix = " x";

	var PardotData = {
		zip: "",
		city: "",
		state: "",
		geocode: null,
		success: false,
		loaded: false
	};
	
	var QuovaData = {
		zip: "",
		city: "",
		state: "",
		geocode: null,
		success: false,
		loaded: false
	};
	
	var LocalData = {
		zip: "",
		city: "",
		state: "",
		geocode: null,
		success: false,
		loaded: false
	}
	
	//RL_showLocationData();
	
	function RL_showLocationData() {
		// This function will be loaded once the Pardot IFRAME is determined to have loaded.
		alert('Pardot says:  City = ' + PardotData.city + ' State = ' + PardotData.state + ' Zip = ' + PardotData.zip + ' Geocode = ' + PardotData.geocode);
		alert('Quova says: City = ' + QuovaData.city + ' State = ' + QuovaData.state + ' Zip = ' + QuovaData.zip + ' Geocode = ' + QuovaData.geocode);
		alert('Local says: City = ' + LocalData.city + ' State = ' + LocalData.state + ' Zip = ' + LocalData.zip + ' Geocode = ' + LocalData.geocode);
	}
		
	/*function RL_getQuovaData() {
		try {
			jQuery.getJSON("http://www.recurve.com/services/QuovaLocator.php", { method: "getQuovaInfo", ipaddress: ipaddress }, RL_injectQuovaData);
		} catch (err) {
			QuovaData.success = false;
			QuovaData.loaded = true;
		}
	}*/
	
	function RL_injectQuovaData(data) {
		try {
			QuovaData.zip = data.zip;
			QuovaData.city = data.city;
			QuovaData.state = data.state;
			QuovaData.geocode = data.geocode;
			QuovaData.success = true;
			QuovaData.loaded = true;
		} catch (err) {
			QuovaData.success = false;
			QuovaData.loaded = true;
		}
	}
			
	function RL_updateLocalData() {
		// 3 values.
		var lifetime = 500000;
		try {
			jQuery.Jookie.Initialise("RL_LocalData", lifetime);
			LocalData = jQuery.Jookie.Get("RL_LocalData", "LocalData");
		} catch (err) {
			jQuery.Jookie.Initialise("RL_LocalData", lifetime);
			jQuery.Jookie.Set("RL_LocalData", "LocalData", LocalData);
		}
		
		try {
			bLocal = LocalData.success;
		} catch (err) {
			bLocal = false;
		}
		
		try {
			bPardot = PardotData.success;
		} catch (err) {
			bPardot = false;
		}
		
		try {
			bQuova = QuovaData.success;
		} catch (err) {
			bQuova = false;
		}
		
		if (!bLocal) {
			if (bPardot) {
				LocalData = PardotData;
			} else if (bQuova) {
				LocalData = QuovaData;
			} else {
				if (LocalData == null) {
					var LocalData = {
						zip: "",
						city: "",
						state: "",
						geocode: null,
						success: false,
						loaded: false
					}
				} else {
					LocalData.geocode = "NONE";
					LocalData.success = false;
					LocalData.loaded = true;
				}
			}
		}
			
		// refresh/update cookie.
		RL_update_CTA();
	}
	
	function RL_updateZipCode(postalcode) {
		postalcode = postalcode.split("-",1);
		US_LookupByZip(postalcode);
		runTerritoryInfoByZip(postalcode);
		LocalData.zip = postalcode;
	}
	
	function getDynamicPhone(geocode) {
		/* switch(geocode) {
			case "RECURVE":
				result = "877.303.0979";
				break;
			case "GRUPE":
				result = "877.303.9430";
				break;
			default:
				// Means NONE or a territory that isn't designated... yet.
				result = "877.703.6318";
				break;
		}
		*/
		// hardcoded phone number
		result = "1-877-303-0979";
		return result;
	}
	
	function RL_update_CTA() {
		var dynamic_phonenumber = getDynamicPhone(LocalData.geocode);
		if ((LocalData.city) && (LocalData.state)) {
			getstarted = "<a class=\"jumptoform\" href=\"#\">CLICK TO GET STARTED</a> IN " + LocalData.city + ", " + LocalData.state + "<br/>";
			dontlive = "don't live in " + LocalData.city + ", " + LocalData.state + "? <a href=\"#\" class=\"change\">Change</a>";
		} else {
			getstarted = "<a class=\"jumptoform\" href=\"#\">CLICK TO GET STARTED NOW!</a><br/>";
			dontlive = "For Faster Service, <a href=\"#\" class=\"change\">Enter your Zip Code</a>";
		}
		if (dynamic_phonenumber) {
			getstarted += "or call us for a free consultation at <strong><span class=\"dynamic_Phone\">" + dynamic_phonenumber + "</span></strong>";
			form_cta_content = "Call <span class=\"dynamic_Phone\">" + dynamic_phonenumber + "</span> today to take the first step towards a more comfortable, energy efficient, and healthy home";
		} else {
			form_cta_content = "Get started today!  Fill out this form to take the first step towards a more comfortable, energy efficient, and healthy home.";
		}
			
		try {
			// Code to update the look/feel of call out to show/hide
			// location and phone numbers.
			jQuery("#calltoaction span.get-started").html(getstarted);
			jQuery("#calltoaction span.dont-live").html(dontlive);
			jQuery("#form_cta").html(form_cta_content);
			RL_updateFooterSignup(dynamic_phonenumber);
			RL_updateDynamicPhone(dynamic_phonenumber);
			RL_updateZipBinds();
			RL_updateJumpToForm();
		} catch (err) {
			alert(err + getstarted + "\n" + dontlive + "\n" + form_cta_content);
		}
		jQuery.Jookie.Set("RL_LocalData", "LocalData", LocalData);
	}
	
	function RL_updateFooterSignup(dynamic_phonenumber) {
		//console.debug("entered RL_updateFooterSignup");
		if (dynamic_phonenumber) {
			$(".footer-signup").attr("src", "/images/signup-bottom3.png");
			$(".footer-signup").attr("alt", "Sign up for your free consultation or call at " + dynamic_phonenumber);
		} else {
			$(".footer-signup").attr("src", "/images/signup-bottom5.png");
			$(".footer-signup").attr("alt", "Sign up for your free consultation");
		}
	}
	
	function RL_updateDynamicPhone(dynamic_phonenumber) {
		if (dynamic_phonenumber) {
			jQuery(".dynamic_Phone").each(function() {
				jQuery(this).html(dynamic_phonenumber);
			});
			jQuery("#phone_bottom").html("<span>" + dynamic_phonenumber + "</span>");
			//console.debug("Got here");
			//console.debug(jQuery("#phone_bottom").html());
		} else {
			jQuery(".dynamic_Phone").each(function() {
				jQuery(this).html("");
			});
		}
	}
	
	/*function RL_update_Extensions() {
		jQuery.getJSON("http://www.recurve.com/services/zipservice.php", {method: "ExtLookup", geocode: LocalData.geocode}, RL_updateMongoose);
	}*/
	
	function RL_injectGeoCode(data) {
		if (data.Error != undefined) {
			LocalData.geocode = "NONE";
		} else {
			LocalData.geocode = data.covered_territory;
		}
		RL_update_CTA();  // this is the key.  Everytime the GEOCODE updates is when we must update the call to action.
	}
	
	function RL_injectCityState(data) {
		if (data.Error == undefined) {
			LocalData.city = data.CityName;
			LocalData.state = data.StateAbbr;
		} else {
			LocalData = {
				zip: "",
				city: "",
				state: "",
				geocode: null,
				success: false,
				loaded: false
			}
		}
	}

	function runTerritoryInfoByZip(postalcode) {
		jQuery.getJSON("http://www.recurve.com/services/zipservice.php", { method: "TerritoryInfoByZip", postalcode: postalcode}, RL_injectGeoCode);
	}

	function US_LookupByZip(postalcode) {
		jQuery.getJSON("http://www.recurve.com/services/zipservice.php", { method: "US_LookupByZip", postalcode: postalcode}, RL_injectCityState);
	}
	
	function RL_updateZipBinds() {
		jQuery("a.change").unbind('click');
		jQuery("#zip button").unbind('click');
		jQuery("#zip input").unbind('keydown');
		
		jQuery("a.change").click(function() { jQuery("#zip").fadeIn(); });
		jQuery("#zip button").click(function() { 
			var postalcode = jQuery("#zip input.zip").val();
			RL_updateZipCode(postalcode);
			jQuery("#zip").fadeOut();
			return false;
		});
		jQuery("#zip input").keydown(function(e) {
			if (e.keyCode == 13) {
				jQuery("#zip button").click();
				return false;
			}
		});
	}
	
	function RL_updateJumpToForm() {
		var formlink = "#nowsignup";
		var currentpath = window.location.pathname;
		
		switch(LocalData.geocode) {
			case "GRUPE":
				formlink = "http://www.recurve.com/quick-start100";
				break;
			default:
				currentpath = currentpath.toLowerCase();
				if (!currentpath.match("problems-we-solve")) {
					formlink = "http://www.recurve.com/quick-start";
				} else {
					jQuery(".jumptoform").each(function() {
						jQuery(this).unbind('click');
						jQuery(this).click(function() {
							jQuery("#fname").focus();
						});
					});
				}
				break;
		}
		
		jQuery(".jumptoform").each(function() {
			jQuery(this).attr("href", formlink);
		});
	}