// 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; 

/******************************************************************
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()+"Stores.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 += 'Sélectionner 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élé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="20" align="center">'+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'>Il semble que votre province ne compte malheureusement aucune Boutique Koodo ou partenaire de vente. Vous pouvez toutefois profiter de tous les services et offres de mobilité minceur en effectuant vos transactions en ligne ou par téléphone, soit votre commande, l'activation du téléphone mobile et la gestion subséquente de votre compte.</div>";
								
			}else{
					getElement(this.dataDivId).innerHTML = "<div class='not_complete' style='display:block'>Sorry. It seems there are no Koodo Shops or retail partners in your province. But, you can still get all the services and fat-free mobility offers, you just have to order, activate and manage your account online or by phone.</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 lat = Number(pointNew.split(",")[0]);
		var lon = Number(pointNew.split(",")[1]);	
		
		
		
		
		this[this.provSearch+"filterdData"] = [];
		var dataInDistArr =   this[this.provSearch+"filterdData"];
		for(var i =0;i<dataArr.length;i++){
			var dist = this.calcDist(dataArr[i].lon,dataArr[i].lat,lon,lat)*1.609344;
			
			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(lon1,lat1,lon2,lat2) {
		
		   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();
}

