// JavaScript Document

/******************************************************************
WriteLayer: common function used to write all data to the page
*******************************************************************/
UtilObject = new Object();
/* UtilObject.WriteLayer = function(ID,parentID,sText) { 
	 if (document.layers) { 
		var oLayer; 
		if(parentID){ 
			oLayer = eval('document.' + parentID + '.document.' + ID + '.document'); 
		}else{ 
		 	oLayer = document.layers[ID].document; 
		} 
		oLayer.open(); 
		oLayer.write(sText); 
		oLayer.close(); 
	 } else if (parseInt(navigator.appVersion)>=5&&navigator.appName=="Netscape") { 
	   document.getElementById(ID).innerHTML = sText; 
	 } else if (document.all) 
		document.all[ID].innerHTML = sText 
} */
/******************************************************************
ImportXML: common function used call all xml
*******************************************************************/
UtilObject.importXML = function(obj,xml,xmlLoc,preload)
{
	var http_request = false;
	
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
	  
		http_request = new XMLHttpRequest();
		
		if (http_request.overrideMimeType) {
		http_request.overrideMimeType('text/xml');
		}
		
		http_request.onreadystatechange = function () {
			if (http_request.readyState == 4) {
				var xmldoc = http_request.responseXML;
				//once finished call the appropriate function to store the xml
				obj.storeXML(xmldoc,preload);
			}
		};
	  //pass in time stamp sp safari doesn't cache		
		  http_request.open('GET', xmlLoc+xml+"?"+ new Date().getTime(), true);
		  http_request.send(null);
		  
	} else if (window.ActiveXObject) { // IE
	 	http_request = new ActiveXObject("Microsoft.XMLDOM");
		http_request.onreadystatechange = function () {
			//once finished call the appropriate function to store the xml
			if (http_request.readyState == 4) 
				obj.storeXML(http_request,preload);
		};		
	var xmlName = xml;
	http_request.load(xmlLoc+xmlName);		
  }
  if (!http_request) {
	 alert('Cannot create XMLHTTP instance');
	 return false;
  }
}

pageData = new Object();
pageData.root = this;
pageData["BCData"] = undefined; 
pageData["ONData"] = undefined; 
pageData["QCData"] = undefined;
pageData["PEData"] = undefined;  
pageData["NSData"] = undefined;  
pageData["NBData"] = undefined;  
pageData["NLData"] = undefined;  
pageData["PEData"] = undefined;  
pageData["MBData"] = undefined; 
pageData["SKData"] = undefined; 
pageData["YTData"] = undefined; 
pageData["NTData"] = undefined; 

/******************************************************************
SetData: Called from the html page to get the ball rolling
*******************************************************************/
pageData.setData = function(xmlLocation,pageType,dataDivId,prov,tab,lang){
	//find the current language
		
	switch (pageType){
	
		case "storeLocator":
			this.xmlFile = prov.toUpperCase()+".xml";
			pageData.parseData = pageData.parseStoreLocator;
		break;		
	}
	
	
	if(lang== undefined){
		lang = "en";	
	}
	//set properties
	this.lang = lang;
	this.xmlLoc = xmlLocation;
	this.dataDivId = dataDivId;
	this.prov = prov.toUpperCase();
	
	
	//call to get the features		
}



pageData.getData = function(preload){
	var xml=this.xmlFile;	
	UtilObject.importXML(pageData,xml,this.xmlLoc,preload);
}


pageData.storeXML = function(xml,preLoad){
	var nodes = xml.getElementsByTagName('item');
	var total_nodes = nodes.length;
	this[this.prov+"Data"] = new Array();
	//this.dataArr = new Array();
	//this.cityObj =[];
	this[this.prov+"CityData"] = [];
	var tempObj = [];
	
	for(var i=0; i<total_nodes; i++){
		var tempObj = [];
		
		for(var j = 0;j< nodes[i].attributes.length;j++){
			tempObj[nodes[i].attributes[j].name] = nodes[i].attributes[j].value;		
		}
		
		for(var j = 0;j < nodes[i].childNodes.length;j++ ){
			
			var textNodes = nodes[i].childNodes[j];
		
			if(textNodes.firstChild != undefined){
				tempObj[textNodes.nodeName] = textNodes.firstChild.nodeValue;	
			}else{
				tempObj[textNodes.nodeName] = "";	
			}
			
			if(textNodes.nodeName == "city"){
				
				this[this.prov+"CityData"][textNodes.firstChild.nodeValue] = true;
			}
		
		}
		
		this[this.prov+"Data"].push(tempObj);
	}
	
	this[this.prov+"Data"] = sortByShop(this[this.prov+"Data"]);
	
	if(preLoad == undefined){
		this.showCities(this[this.prov+"CityData"]);
	}else{
		
		loadCities();	
	}
	
	//this.parseData(this.dataArr) ;
	
	
}

pageData.showCities = function(cityObj){
				
	var displayData = '<select id="Cities" onchange="javascript: citySort(this);"><option value="">';
	if(this.lang == "fr"){
	 	displayData += 'Choisir une ville';
	}else{
		displayData += 'Choose a City';
	}
	displayData +='</option>';
	
	var cityArray = new Array();
	for(var a in cityObj){
		if(cityObj[a] == true){
			cityArray.push(a);
		}		
	}
	
	cityArray.sort();
	
	for(var i=0;i<cityArray.length;i++){		
		displayData +='<option value="'+cityArray[i]+'">'+cityArray[i]+'</option>';	
	}
	//alert(displayData)
	displayData+='</select>';
	//getElement(this.prov+'Cities').innerHTML = displayData;
	getElement('BCCities').innerHTML = displayData;
	//UtilObject.WriteLayer(this.prov+'Cities',null,displayData);	
}

showItem = function(obj,pos,prov,i,type){
		var displayData = '';
		obj.mapShown = false;
		
		//var prov = this.provSearch;
		if(pageData.lang == "fr"){
			var text = ['Cliquer pour agrandir',
						'Téléphone:',
						'Télécopieur:',
						'Type de magasin',
						'Imprimer',
						'T&eacute;l&eacute;chargement de la carte...'];
		}else{
			var text = ['click to expand',
						'Phone:',
						'Fax:',
						'Store Type',
						'Print',
						'Loading Map...'];
		}
		
		if(pos%2 == 0){
			displayData +='<div class="accordion_toggle features_accordion accordion_white">';
		}else{
			displayData +='<div class="accordion_toggle features_accordion">';
		}
		displayData +='<table width="100%" cellpadding="0" cellspacing="0" class="where_to_buy"><tr>';
		

		
		displayData +='<td class="title blue_link"><a title="'+text[0]+'" href="javascript:openStoreAccordion('+pos+',\'accArr'+prov+pos+'\',\''+prov+'\',\''+i+'\')">';
		displayData +=obj.store+'</a></td><td class="address"> <span id="active_address">'+obj.address+' '+obj.city+'</span>';
		/*if(obj.dist != undefined){
			displayData +=' -- '+obj.dist+' km</span>';
		}else{
			displayData +='</span>';
		}*/
		
		
		if(obj.connection_center == 'TRUE'){
			displayData +='</td><td class="indicator" width="20" align="center"><img src="../images/indicator_pink.gif" /></td>';
		}else{
			displayData +='</td><td class="indicator" width="20" align="center">&nbsp;</td>';
		}
		if(type == undefined && obj.dist != undefined){
			displayData +='<td class="address" style="color:#666666;" width="60" align="right">'+obj.dist+' km</td>';
		}else{
			displayData +='<td class="address" width="20" align="center">&nbsp;</td>';
		}
		
		displayData +='<td><a title="'+text[0]+'" href="javascript:openStoreAccordion('+pos+',\'accArr'+prov+pos+'\',\''+prov+'\',\''+i+'\')" id="accArr'+prov+pos+'" class="arrow" ></a></td>';
		displayData +='</tr></table></div>';
		if(pos%2 == 0){
			displayData +='<div class="accordion_content accordion_white"><table width="100%" cellpadding="0" cellspacing="0"><tr>';
		}else{
			displayData +='<div class="accordion_content"><table width="100%" cellpadding="0" cellspacing="0"><tr>';
		}
		
		displayData +='<td valign="top"><p class="bodycopy">';
		displayData +=obj.address+'<br/>';
		displayData +=obj.city+', '+obj.province+'<br />';
		displayData +=obj.postal_code+'</p>';
		/*displayData +='<p class="bodycopy">';
		if(obj.phone != " " && obj.phone != "")
			displayData +='<strong>'+text[1]+' </strong>'+obj.phone+'<br/>';
		if(obj.fax != " " && obj.fax != "" )	
			displayData +='<strong>'+text[2]+' </strong>'+obj.fax;
		displayData +='</p>';
		displayData +='<p class="bodycopy">';
		
		if(obj.connection_center == "TRUE"){
			if(pageData.lang != "fr"){
				var type = "Activating";
			}else{
				var type = "Activation";
			}
		}else{
			if(pageData.lang != "fr"){
				var type = "Non-activating";
			}else{
				var type = "Sans activation";
			}
		}
		
		displayData +='<strong>'+text[3]+'</strong><br/>';
		displayData +=type+'</p>';*/
		displayData +='<p class="bodycopy"><a href="javascript: window.print();">'+text[4]+'</a></p></td>';
		displayData +='<td align="right"><div id="map_canvas'+pos+'"   style="width:340px;height:300px;text-align:center;"><br/><br/><br/><br/>'+text[5]+'</div></td>';
		displayData +='</tr></table></div>';	
	
		return displayData;
}


pageData.runSort = function(sortby){
	if(this.provSearch != undefined){
		var dataArr = this[this.provSearch+"filterdData"];
		var prov = this.provSearch;
		var city = undefined;
		//alert('here')
	}else{
		var dataArr = this[this.prov+"filterdData"];
		var prov = this.prov;
		var city = 'city';
	}
	var displayData = "";
	var count =0;
	
	dataArr = sortByShop(dataArr);
	
	for(var i = 0;i<dataArr.length;i++){	
	
		if(sortby=='all'){			
			displayData +=showItem(dataArr[i],count,prov,dataArr[i].pos,city);
			count++;
		}else if(dataArr[i].connection_center == 'TRUE' && sortby=='activating'){
			displayData +=showItem(dataArr[i],count,prov,dataArr[i].pos,city);
			count++;
		}else if(dataArr[i].store == 'Koodo Shop' && sortby=='koodo'){
			displayData +=showItem(dataArr[i],count,prov,dataArr[i].pos,city);
			count++;
		}else if(dataArr[i].connection_center == 'FALSE' && sortby=='nonactivating'){
			displayData +=showItem(dataArr[i],count,prov,dataArr[i].pos,city);
			count++;
		}
	}

	
	getElement(this.dataDivId).innerHTML = displayData;
	//UtilObject.WriteLayer(this.dataDivId,null,displayData);
	loader(false);
}

pageData.sortRadius = function(radius,sortBy){
		//alert(this[this.prov+'point']);
		if(this[this.provSearch+'point'] != undefined){
			pageData.runMySearch(this[this.provSearch+'point'],radius,sortBy);	
		}
		loader(false);
}

pageData.citySort = function(city){
	var displayData ='';
	var dataArr = this[this.prov+"Data"];
	this.provSearch = undefined;
	
	//var count = 0;
	//var prov = 'BC';
	
	var count =0;
	dataArr = this[this.prov+"Data"];
	
	this[this.prov+"filterdData"] = [];
	
	
	
	for(var i = 0;i<dataArr.length;i++){	
		if(dataArr[i].city == city){	
			this[this.prov+"filterdData"].push(dataArr[i]);
			this[this.prov+"filterdData"][this[this.prov+"filterdData"].length-1].pos = i;
			displayData +=showItem(dataArr[i],count,this.prov,i,'city');
			count++;
		}
	}
	
	if(this.root["accAccordionBC"].currentOpenPos != undefined){
		this.root["accAccordionBC"].activate($$('#vertical_containerBC .accordion_toggle')[this.root["accAccordionBC"].currentOpenPos]);
		this.root["accAccordionBC"].currentOpenPos = undefined;
	}
	
	this.root["accAccordionBC"].arrowBut = undefined;
	
	//alert(this.dataDivId)
	getElement(this.dataDivId).innerHTML = displayData;
	//UtilObject.WriteLayer(this.dataDivId,null,displayData);
	//run the hide on accordions
	/*var verticalAccordions = $$('.accordion_toggle');
	verticalAccordions.each(function(accordion) {
		$(accordion.next(0)).setStyle({
		  height: '0px'
		});
	});*/	
	getElement('sortByBC').value = 'all';
	getElement('sortByBC').disabled = false;
	loader(false);
	
}

pageData.runMySearch = function (point,radius,sortBy,address){
		
		
		//alert(address.charAt(0));
		if(address != undefined){
			this.provSearch = postalObj[address.charAt(0).toUpperCase()];
			this.provSearch = this.provSearch.toUpperCase();
		}
		
		if(this[this.provSearch+"Data"] != undefined){
			var dataArr = this[this.provSearch+"Data"];	
		}else{
			
			if(pageData.lang == "fr"){
				//<div  class="not_complete"></div>
					getElement(this.dataDivId).innerHTML = "<div  class='not_complete' style='display:block'></div>";
								
			}else{
					getElement(this.dataDivId).innerHTML = "<div class='not_complete' style='display:block'></div>";
				} 

			loader(false);
			return;
		}
		
		this[this.provSearch+'point'] = point;
		var pointNew = String(point);			
		var displayData ='';
		var count =0;
		
		//getElement(sortBy).value = 'all';
		//alert(pointNew)		
		pointNew = pointNew.substring(1,pointNew.length-1);
		var lon = Number(pointNew.split(",")[0]);
		var lat = Number(pointNew.split(",")[1]);	
		
		
		
		//alert(radius);
		
		this[this.provSearch+"filterdData"] = [];
		var dataInDistArr =   this[this.provSearch+"filterdData"];
		for(var i =0;i<dataArr.length;i++){
			//alert(dataArr[i].lon+" -- "+dataArr[i].lat+" -- "+lon+" -- "+lat);
			var dist = this.calcDist(dataArr[i].lon,dataArr[i].lat,lon,lat)*1.609344;
			//alert(dist);
			dataArr[i].dist = Math.round(dist*100)/100;
			dataArr[i].pos = i;
			if(dist < radius){	
				if(count == 0){
					var dataInDistArr =   this[this.provSearch+"filterdData"] = [];	
				}
				dataInDistArr.push(dataArr[i]);
				//displayData +=showItem(dataArr[i],count,this.prov,i);	
				count++;
			}else if(count == 0 && dist < 100){
				dataInDistArr.push(dataArr[i]);
				
			}
			
			//var point2 = new GLatLng(pointArray[i].lon,pointArray[i].lat);    
			//var marker = new GMarker(point2);
			//map.addOverlay(marker);
		}
		
		if(count == 0 ){
			if(dataInDistArr.length == 0){
				dataInDistArr = dataArr;				
			}else{
				getElement('radiusBC').value = 100;	
			}
		}
		
		myArraySort('dist',dataInDistArr);
		dataInDistArr = sortByShop(dataInDistArr);
		
		for(var i=0;i<dataInDistArr.length;i++){
			displayData +=showItem(dataInDistArr[i],i,this.provSearch,dataInDistArr[i].pos);	
		}
		
		/*if(count > 0){
			getElement('sortByBC').disabled = false;
		}else{
			getElement('sortByBC').disabled = true;
		}*/
		
		if(this["accAccordionBC"] != undefined){
			if(this.root["accAccordionBC"].currentOpenPos != undefined){
				this.root["accAccordionBC"].activate($$('#vertical_containerBC .accordion_toggle')[this.root["accAccordionBC"].currentOpenPos]);
				this.root["accAccordionBC"].currentOpenPos = undefined;
			}
					
			this.root["accAccordionBC"].arrowBut = undefined;
		}
		getElement(this.dataDivId).innerHTML = displayData;
		//UtilObject.WriteLayer(this.dataDivId,null,displayData);
		getElement('sortByBC').disabled = false;
		loader(false);
}
	
		
pageData.calcDist = function(lat1,lon1,lat2,lon2) {
		   var r = 3963.0;
		   var multiplier = 1;
		   return multiplier * r * Math.acos(Math.sin(lat1/57.2958) *
				   Math.sin(lat2/57.2958) +  Math.cos(lat1/57.2958) *
				   Math.cos(lat2/57.2958) * Math.cos(lon2/57.2958 -
				   lon1/57.2958));
		}


function printPopStandAlone(index)
{
	this.my_window = window.open ("content/printPage.html","mywindow1","status=1,width=600,height=400"); 
	this.displayData = '';
	var obj = pageData.dataArr[index];
	displayData +='<div class="" style="padding:10px 10px 10px 10px;">';
	displayData +='<div class="news_header">'+obj.date+', '+ obj.year+' | '+obj.title+'</div>';
	displayData +='<div class="news_header news_links"><a href="javascript: window.print();">Print</a>';
	displayData +='</div>';					
	displayData +='<p class="bodycopy">'+obj.topParagraph+'<br /><br />';	
	displayData +=obj.bottomParagraph+'</p></div>';
	
	
	setTimeout("printData(this.my_window,this.displayData);", 500);

	
	}


function printPop(index)
{
	this.my_window = window.open ("../content/printPage.html","mywindow1","status=1,width=600,height=400"); 
	this.displayData = '';
	var obj = pageData.dataArr[index];
	displayData +='<div class="" style="padding:10px 10px 10px 10px;">';
	displayData +='<div class="news_header">'+obj.date+', '+ obj.year+' | '+obj.title+'</div>';
	displayData +='<div class="news_header news_links"><a href="javascript: window.print();">Print</a>';
	displayData +='</div>';					
	displayData +='<p class="bodycopy">'+obj.topParagraph+'<br /><br />';	
	displayData +=obj.bottomParagraph+'</p></div>';
	
	
	setTimeout("printData(this.my_window,this.displayData);", 500);

	
	}

function myArraySort(f,array) {
  var i, j;
  var currentValue;
  var currentObj;
  var compareObj;
  var compareValue;
  
  for(i=1; i<array.length;i++) {
    currentObj = array[i];
    currentValue = currentObj[f];
    
    j= i-1;
    compareObj = array[j];
    compareValue = compareObj[f];
    
    while(j >=0 && compareValue > currentValue) {
      array[j+1] = array[j];
      j--;
      if (j >=0) {
        compareObj = array[j];
        compareValue = compareObj[f];
      }        
    }  
    array[j+1] = currentObj;
  }
}

sortByShop = function(dataArr){
	
	var newArray = [];
	var newArray2 = [];
	
	for(var i = 0;i<dataArr.length;i++){	
	
		if(dataArr[i].store == 'Koodo Shop'){
			newArray.push(dataArr[i]);
			
		}else{
			newArray2.push(dataArr[i]);
		}
	}
	
	return newArray.concat(newArray2);
		
}


printData = function(my_window, dataStr){
	
	my_window.document.getElementById('printArea').innerHTML = dataStr;
	my_window.print();
}

