/* Support scripts for dealer locator
 * - check if google geolocator figured out a user location
 * - use yahoo based on postal code
 * - manage caching of location in cookie
 * 
 *  requires jQuery and jQuery.cookie
 */

// suitelet to return dealer info, or lat/long
var dealerUrl = "http://hansdevice.com/app/site/hosting/scriptlet.nl";
var dealerParams = { script: "3", deploy: "2", compid: "337809", h: "2b6f28d0f001cdaf403a"};

// Callback function that is run after google is loaded and the page is loaded as well  
// This will grab the IP geolocation data for the user and lookup the dealers via AJAX 
// then put that data in the footer of the page 
function afterPageLoaded() 
{    
	if (jQuery.cookie('dealerList'))
	{
		insertDealerList(jQuery.cookie('dealerList'));  // use session cached value
		return;
	}
	if (jQuery.cookie('custLat'))
	{
		loadDealerListHTML(jQuery.cookie('custLat'), jQuery.cookie('custLon'));
		return;
	}
	if (google.loader.ClientLocation) {  
		mylat = google.loader.ClientLocation.latitude; 
		mylon = google.loader.ClientLocation.longitude;
		storeLatLon(mylat, mylon);
		loadDealerListHTML(mylat, mylon);
	} 
	else 
	{ 
		// Google did not return a latitude and longitude
		// ask user for postal code and then query Yahoo.
		jQuery("#footer-form-zip").show();
	}

};
google.setOnLoadCallback(afterPageLoaded); 

function cookiesEnabled () {
	jQuery.cookie('testCookie', 'testvalue');
	if (jQuery.cookie('testCookie')) return true;
	return false;
}
function storeLatLon (mylat, mylon) {
	jQuery.cookie('custLat', mylat, { expires: 365, path: '/' });
	jQuery.cookie('custLon', mylon, { expires: 365, path: '/' }); 
}

function loadDealerListHTML(mylat,mylon) 
{ 
	var myloc = {lat: mylat, lon: mylon};
	var p = jQuery.extend(myloc, dealerParams);
	jQuery.get(dealerUrl, p, dealerListHTML, "text");
};

function dealerListHTML(htmlResponse) {
	if (htmlResponse) 
	{ //There was a text response
		// remove NetSuite inserted response stats
		var trimmedHtmlResponse = htmlResponse.substring(0, htmlResponse.indexOf("<!"));
		jQuery.cookie('dealerList', trimmedHtmlResponse, { expires: 7, path: '/' } ); // cache for session
		insertDealerList(trimmedHtmlResponse);
	}
	else {  //There was no text response
	//
	}
}

function getLocationFromZip (postalcode) 
{ 
	if (cookiesEnabled() && postalcode)
	{
		var myzip = { zip: postalcode};
		jQuery.get( dealerUrl, jQuery.extend(myzip, dealerParams), zipCallback, "text" );
	}
	else
	{
		alert("We're sorry, but you must have cookies enabled to use this function.");
	}
}; 


var yahooLatRegEx = new RegExp("<Latitude>([0-9\.-]+)</Latitude>");
var yahooLonRegEx = new RegExp("<Longitude>([0-9\.-]+)</Longitude>");

function zipCallback(resp)
{
	var mylat;
	var mylon;
	if (resp) 
	{
		var rxLat = yahooLatRegEx.exec(resp);
		var rxLon = yahooLonRegEx.exec(resp);
		if (rxLat && rxLat.length > 1) mylat = rxLat[1];
		if (rxLon && rxLon.length > 1) mylon = rxLon[1];
		storeLatLon(mylat, mylon);
		loadDealerListHTML(mylat,mylon);
	}
	else
	{
		jQuery("dealer-finder-zip").val("");
		jQuery("#footer-form-zip").show();		
	};	
}


function setPostalCode (argument) {
	var zipvalue = document.getElementById("dealer-finder-zip").value; // jQuery("dealer-finder-zip").val();
	if (zipvalue) {
		getLocationFromZip (zipvalue);
		jQuery("#footer-form-zip").hide();
	};
};

//jQuery("#zip-button").click(setPostalCode);
jQuery("#zip-button").bind("click", setPostalCode);
jQuery("#zip-button").bind("onkeypress", function(e){
	if (e && e.which == 13) { setPostalCode(); }
	else { return true; }
	});

function setLocation () {
	jQuery.cookie('dealerList', null);
	insertDealerList("");
	jQuery("#footer-form-zip").show();
}

function insertDealerList (htmlToInsert) 
{
	var f = document.getElementById("footer-list-div");
	f.innerHTML= htmlToInsert;
}


// <script language="Javascript" type="text/javascript">
// //<![CDATA[
// // function to return the response text from the suitelet
// function urltext(htmlResponse) {
// 	if (htmlResponse) { //There was a text response
// 		position = htmlResponse.indexOf("<!");
// 		trimmedHtmlResponse = htmlResponse.substring(0,position);
// 		var f = document.getElementById("footer-list-div");
// 		f.innerHTML= trimmedHtmlResponse;
// 		//var listText = document.createTextNode(trimmedHtmlResponse);
// 		//f.appendChild(listText);
// 	}
// 	else {  //There was no text response
// 	//
// 	}
// }
// //]]>
// </script>

// <script src="https://forms.netsuite.com/app/site/hosting/scriptlet.nl?script=4&deploy=1&compid=337809&h=ce12f50d8dc5d1f3894f" type="text/javascript"></script>
