// JavaScript Document
google.load("maps", "2.x");

var gmarkers = [];
var g = 0;

var qs = new Querystring();
var rxml = "_data/electrical-locations.xml";
var rlat = qs.get('lat');
var rlng = qs.get('lng');
var rzoom = qs.get('zoom');
var map;
   
// Call this function when the page has been loaded
function initialize() {
	$("table").tablesorter({widgets: ['zebra']}); 
	if (GBrowserIsCompatible()) {
    	map = new GMap2(document.getElementById("map"));
        map.setCenter(new google.maps.LatLng(parseFloat(rlat), parseFloat(rlng)), parseFloat(rzoom));
        map.addControl(new GSmallMapControl());
        map.addControl(new GMapTypeControl());
        
        GDownloadUrl(rxml, function(data) {
        	var xml = GXml.parse(data);
        	var markers = xml.documentElement.getElementsByTagName("marker")
        	var tbl = document.getElementById("locations").tBodies[0];
          	for (var i = 0; i < markers.length; i++) {
				
            	var point = new GLatLng(parseFloat(markers[i].getAttribute("bg_lat")),parseFloat(markers[i].getAttribute("bg_long")));
				var attr = new Array(markers[i].getAttribute('desc'), markers[i].getAttribute('name'),markers[i].getAttribute('address'),markers[i].getAttribute('city'),markers[i].getAttribute('state'),markers[i].getAttribute('zip'),markers[i].getAttribute('phone'));
				//var attr = new Array(markers[i].getAttribute('desc'), markers[i].getAttribute('name'),markers[i].getAttribute('address'),markers[i].getAttribute('city'),markers[i].getAttribute('state'),markers[i].getAttribute('zip'),markers[i].getAttribute('phone'),markers[i].getAttribute('type'),markers[i].getAttribute('products'));
			var address = attr[2]+", "+attr[3]+", "+attr[4]+", "+attr[5];
			var info = "<strong>"+attr[1]+"</strong><br /><br />"+attr[2]+"<br />"+attr[3]+", "+attr[4]+" "+attr[5]+"<br /><br />Phone: "+attr[6]+"<br /><br /><a href='javascript:;' onClick='addDestination(\""+address+"\");directions();'>Get Directions</a>";
			//var info = "<strong>"+attr[1]+"</strong><br /><br /><strong>Location Type:</strong> "+attr[7]+"<br /><strong>Products Available:</strong> "+attr[8]+"<br /><br />"+attr[2]+"<br />"+attr[3]+", "+attr[4]+" "+attr[5]+"<br /><br />Phone: "+attr[6]+"<br /><br /><a href='javascript:;' onClick='addDestination(\""+address+"\");'>Get Directions</a>";
    	   var row = document.createElement("tr");   
		   for (var c = 1; c < 7; c++) {
				var cell = document.createElement("td");	
				if(c==1 || c==2) {
					var cText = document.createElement("a");
					cText.setAttribute("href","javascript:activate("+g+",\'"+address+"\');directions();");
					//cText.setAttribute("onClick","listClick("+g+");addDestination(\""+address+"\");");
					cText.appendChild(document.createTextNode(attr[c]));
					//var cText = document.innerHTML("<a href='#' onClick='addDestination(\""+address+"\");'>"+attr[c]+"</a>");
				} else {
					var cText = document.createTextNode(attr[c]);
				};
				cell.appendChild(cText)
				row.appendChild(cell)
		   };
		   locinfo = qs.get('loc');
				if(attr[4]==locinfo.toUpperCase() && locinfo!="all"){
					tbl.appendChild(row);
					var marker = createMarker(point,info); 
					map.addOverlay(marker);
				} else if(locinfo=="all") {
					tbl.appendChild(row);
					var marker = createMarker(point,info); 
				}
          	};
			
			$("table").trigger("update"); 
			if(locinfo=="all"){
				var sorting = [[3,0],[2,0],[4,0],[1,0]]; 
			}else{
		  		var sorting = [[2,0]]; 
		  	};
            $("table").trigger("sorton",[sorting]); 
    	});
	}
}

function activate(g,address){
	listClick(g);
	addDestination(address);
}
    
function createMarker(pt,info) { 
   var mrkr = new GMarker(pt); 
   var html = info; 
   GEvent.addListener(mrkr, "click", function() { 
	if(locinfo=="all"){
		map.addOverlay(mrkr);		
	}
     mrkr.openInfoWindowHtml(html); 
   }); 
   gmarkers[g] = mrkr;
   g++;
   return mrkr; 
}

function listClick(val) {
	GEvent.trigger(gmarkers[val], "click");	
}
google.setOnLoadCallback(initialize);   
