// JavaScript Document

var JSPath = "";

/******************************************************************
Load All other javascript files needed for the tool
*******************************************************************/
document.write('<SCR'+'IPT language="JavaScript" type="text/javascript" SRC="'+JSPath+'js/filterTool/loadStoreLocatorXML.js" ><\/scr'+'ipt>');
document.write('<SCR'+'IPT language="JavaScript" type="text/javascript" SRC="'+JSPath+'js/filterTool/filterTools.js" ><\/scr'+'ipt>');
document.write('<SCR'+'IPT language="JavaScript" type="text/javascript" SRC="'+JSPath+'js/filterTool/searchTools.js" ><\/scr'+'ipt>');
document.write('<SCR'+'IPT language="JavaScript" type="text/javascript" SRC="'+JSPath+'js/filterTool/toolDisplay.js" ><\/scr'+'ipt>');



var boxId1 = null;


function loadXMLFiles(prov,lang,preload){
	var tabObj = getElement('tab'+(1));
	
	var prov = prov;
	
	//xmlLocation: this can be absolute or relative
	var xmlLocation="xml/";
	
	var pageType="storeLocator";		
	var dataDivId = "vertical_container";		
	//don't change the function call
	
	if(filterObject[prov+"Data"] == undefined){			
		filterObject.setData(xmlLocation,pageType,dataDivId,prov,tabObj,lang);
		filterObject.getData(preload);
	}else{
		filterObject.setData(xmlLocation,pageType,dataDivId,prov,tabObj,lang);
		filterObject.showCities(filterObject[filterObject.prov+"CityData"]);
	}
	
}

function citySort(obj){	
	loader(true);	
	var city = obj.value;		
	filterObject.citySort(city);
	
	
}

function runSort(){		
	//loader(true);
	//setTimeout('filterObject.runSort();',1000);
	filterObject.runSort();
	
}

function showFilterTools(bool){
		filterObject.showFilterTools(bool);
}

function setSorting(id,type,dataName,defaultDisplay,checkType){
	filterObject.setSorting(id,type,dataName,defaultDisplay,checkType);	
}
function  buildSlider(id,display,min,max){
	filterObject.buildSlider(id,display,min,max)
}

function sortRadius(obj,sortBy){
	loader(true);	
	mytime=setTimeout('filterObject.sortRadius('+obj.value+',"'+sortBy+'")',500);
	
}

/***************************************************************************
Map Function
****************************************************************************/
var map = null;
var geocoder = null;

function initialize() {
  if (GBrowserIsCompatible()) {
	geocoder = new GClientGeocoder();
  }
 }

function showMap(address,mapHolder) {
		  
   if (geocoder) {
	geocoder.getLatLng(
	  address+" canada",
	  function(point) {
		if (!point) {
			//alert(point+" -- "+dataObj['postal_code']);
			if(filterObject.lang == "fr"){
				getElement(mapHolder).innerhtml = "<br/><br/><br/><br/>"+filterObject.mapErrorFR;
			}else{
				getElement(mapHolder).innerhtml = "<br/><br/><br/><br/>"+filterObject.mapErrorEN;
			}
		} else {	
			this.jMapHolder = mapHolder;
			this.jPoint= point;
			//setTimeout("loadactualMap(this.jMapHolder,this.jPoint);", 2000);
			 map = new GMap2(getElement(mapHolder));			
			  map.setCenter(point, 13);
			 map.addControl(new GLargeMapControl());
			 map.addControl(new GMapTypeControl());

			  var marker = new GMarker(point);
			  map.addOverlay(marker);
			
		}
	  }
	);
  }
  
}


//var count = 0;
function showAddress(objId1,objId2,radiusID,sortById) {
	getElement('Cities').value = '';

	 var address = 	getElement(objId1).value + getElement(objId2).value;
	 var radius = getElement(radiusID).value;
	var sortBy = sortById;
	 
	 if(validatePostalFormat(address)){
		loader(true);
		  if (geocoder) {
			geocoder.getLatLng(
			  address,
			  function(point) {
				
				
				if (!point) {
					if(filterObject.lang == "fr"){
						showError(filterObject.postalCodeErrorFR);
					}else{
						showError(filterObject.postalCodeErrorEN);
					} 
					loader(false);
				} else {
					filterObject.runMySearch(point,radius,sortBy,address);				
				}
			  }
			);
		  }
		}  
}

/***************************************************************
Postal code hash table

****************************************************************/

postalObj = {};
postalObj.A = "nl";
postalObj.B = "ns";
postalObj.C = "pe";
postalObj.E = "nb";
postalObj.G = "qc";
postalObj.H = "qc";
postalObj.J = "qc";
postalObj.K = "on";
postalObj.L = "on";
postalObj.M = "on";
postalObj.N = "on";
postalObj.P = "on";
postalObj.R = "mb";
postalObj.S = "sk";
postalObj.T = "ab";
postalObj.V = "bc";
postalObj.X = "nt";
postalObj.Y = "yu";


//initialize();

function checkPostalValue(obj,prov,boxId1,boxId2,radiusID,sortBy,side){

	this.boxId1 = boxId1;
	this.boxId2 = boxId2;
	
	//var newProv = getElement(prov).value;
	//default to on as the province is not part of the search
	
	var newProv = 'on';
	
	
	//alert(newProv)
	this.tabProv = newProv;
	this.radiusID = radiusID;
	this.sortBy = sortBy;
	
	

	filterObject[filterObject.prov+'point'] = undefined;
	
	getElement("errorAreaBC").style.display = 'none';
	if(side == undefined){
	/*	//alert(obj.value.toUpperCase()+" -- "+newProv)
		if(postalObj[obj.value.toUpperCase()] != newProv && obj.value.length == 1){
			obj.value = "";
			
			 if(filterObject.lang == "fr"){
				showError("Le code postal entré n'est pas valide dans cette province.");
			}else{
				showError("The postal code that you entered is invalid for this province.")
			} 
			//set error
		}*/
		
		if(obj.value.length == 3){
			getElement(boxId2).focus();
		}
	}
}



document.onkeyup = function(event2){
	 //var keyCode = document.layers ? event.which : document.all ? event.keyCode : event.keyCode;
	 if(event2 == undefined){
		var keyCode = event.keyCode;	 
	}else{
		var keyCode = event2.keyCode;	 	
	}

	if(keyCode==13){
		
		if(boxId1 != undefined){
			showAddress(boxId1,boxId2, radiusID, sortBy);
		}
	} 
}


function showError(txt){
	if(this.tabProv != undefined){
	getElement("errorAreaBC").innerHTML = txt;	
	getElement("errorAreaBC").style.display = 'inline';
	}
}


/*****************************************************************
*	check to see if the postal code is valid
*		
*
********************************************************************/
function validatePostalFormat(postal)
{
	var p = postal;
	//create regular expression for testing
	reg_exp_pcode = new RegExp(/(^s*([a-z](\s)?\d(\s)?){3}$)s*/i);
	
	if(p!= "" && reg_exp_pcode.test(p))
	{	
	  return true;
	}
	if(filterObject.lang == "fr"){
		showError(filterObject.postalCodeErrorFR);
	}else{
		showError(filterObject.postalCodeErrorEN);
	} 


	// setErrorClass(getElement(postal))
	return false;
}

function loader(toggle,init){
//removed for now
	return;
	
	if(toggle){ 
	
		var displayObj = getElement("shield");				
		//find page size
		var size = pageSize();
		var height = size.height;			
		var width = size.width;		
		var insideShieldObj = getElement("insideShield");
		insideShieldObj.style.width=width+'px'
		insideShieldObj.style.height = height+'px';
		displayObj.style.display = '';
		
		var titleObj = getElement("imageArea");
		//titleObj.innerHTML = "<img src='/images/parrot_loading.gif' />";
		//titleObj.style.display = '';
		var infoObj = getElement("infoPopUp");
		//infoObj.className = "insideText_popup";									
		
		infoObj.style.top =(420)+"px";
		infoObj.style.left =((width -480)/2)+"px";
	
	}else{	
		var displayObj = getElement("shield");
		displayObj.style.display = 'none';
		
	}	

}

