var gcd;
var stores;
var map;
var pMk;
var sLs;
var sMks;
var dWin;
var mapProp=0.6;
var mapSearch="";
var root;
var mCd="dm";

function bs3(){
	if (!GBrowserIsCompatible()){
		alert("Error - not a compatible browser!");
		return;
	}
	loadxml=bs0();
	root="accounts/"+mCd+"/";
	bs1();
}

function bs4(inid){
	return document.getElementById(inid);
}

function bs5(inval){
	if(inval<0 && map.getZoom()<19)map.setZoom(map.getZoom()+1);
	if(inval>0 && map.getZoom()>2)map.setZoom(map.getZoom()-1);
}



function bs6(){
	if(document.body.clientWidth)return document.body.clientWidth;
	if(window.innerWidth)return window.innerWidth;
	return 0;
}

function bs7(){
	gcd = new GClientGeocoder();
	var windowWidth=bs6();
	var marginLeft=(windowWidth/2)-(mapWidth/2);
	if(marginLeft<0)marginLeft=0;
	stores=new Array();
	sLs=new Array();
	sMks=new Array();
	var dcontain=bs4("blipstarcontainer");
	var dbanner=bs4("blipstarbanner");
	var dmap=bs4("blipstarmap");
	var dinfo=bs4("blipstarinfo");
	var dsearch=bs4("blipstarsearch");
	var dlogo=bs4("logo");
	if(mapLogo==""){
		dlogo.src="headerslim.jpg";
	}
	else{
		dlogo.src=root+mapLogo;
	}
	dlogo.setAttribute("width",mapLogoWidth);
	dlogo.setAttribute("height",mapLogoHeight);
	dlogo.setAttribute("text-align",mapLogoPos);
	dcontain.style.height=mapHeight+"px";
	dcontain.style.width=mapWidth+"px";
	dcontain.style.marginLeft=marginLeft+"px";
	mapHeight=mapHeight-8-mapLogoHeight;
	mapWidth=mapWidth-2;
	dbanner.style.width=mapWidth+"px";
	dbanner.style.background="rgb("+mapBannerColour+")";
	dbanner.style.textAlign=mapLogoPos;
	dmap.style.width=((mapWidth*mapProp)-2)+"px";
	dmap.style.height=(mapHeight-2)+"px";
	dmap.style.marginLeft=(mapWidth*(1-mapProp))+"px";
	dinfo.style.width=(mapWidth*(1-mapProp))+"px";
	dinfo.style.height=mapHeight+"px";
	dinfo.display="none";
	dsearch.style.width=mapWidth+"px";
	dsearch.style.height=mapHeight+"px";
	dsearch.style.background="rgb("+mapBackgroundColour+")";
	map=new GMap2(bs4("blipstarmap"));
	if(mapSmallControl==true){
		map.addControl(new GSmallMapControl());
	}
	else{
		map.addControl(new GLargeMapControl());
	}
	if(mapScale==true)map.addControl(new GScaleControl());
	map.setCenter(new GLatLng(49,-97),2);
	map.enableDoubleClickZoom();
	map.enableContinuousZoom();
	pMk=new GMarker(new GLatLng(-90,-180),bs20());
	map.addOverlay(pMk);
	try{
		if(document.body.addEventListener){
			map.getContainer().addEventListener("DOMMouseScroll",function(oEvent){bs5(oEvent.detail);},false);
		}
		else{
			map.getContainer().onmousewheel = function() { bs5(-event.wheelDelta); return false;};
		}
	}
	catch(e){}
	
	bs13();
	if(initQuery==""){
		document.body.style.visibility="visible";
	}
}

function bs8(inval){
	if(inval==false){
		bs4("blipstarinfo").style.display="block";
		bs4("blipstarsearch").style.display="none";
	}
	else{
		bs4("blipstarinfo").style.display="none";
		bs4("blipstarsearch").style.display="block";
	}
}

function bs9(inval){
	bs4("searchingtext").innerHTML=inval;
}

function bs10(){
	var tval=bs4("searchterm").value;
	if(bs4("searchnum").value=="-1"){
		bs17();
		bs8(false);
		bs9("");
		return;
	}
	if(tval.length<2)return;
	bs9(searchMessageVal);
	bs11(tval);
}

function bs11(inval){
	inval=inval.charAt(0).toUpperCase()+inval.substring(1);
	gcd.getLatLng(inval,
		function(point){
			if(!point){
				bs9(searchMessageNoVal);
			}
			else{
				mapSearch=inval;
				map.setCenter(point,16);
				pMk.setPoint(point);
				bs17();
				bs9("");
				bs8(false);
			}
		}
	);
}

function bs12(){
	bs17();
	bs9("");
	bs8(false);
}

function bs13(){
	loadxml.open("GET",root+"Data.aspx?r="+Math.random(),true);
	loadxml.onreadystatechange=bs14;
	loadxml.send(null);
}

function bs14(){
	if(loadxml.readyState!=4)return;
	var ps=loadxml.responseXML.getElementsByTagName("ps");
	var curps;
	for(var i=0;i<ps.length;i++){
		curps=bs15(ps[i],i);stores.push(curps);
	}
}

function bs15(innode,inid){
	var pos=new GLatLng(innode.getAttribute("lat"),innode.getAttribute("long"));
	var marker;
	if(mapIcon==""){
		marker=new GMarker(pos);
	}
	else{
		marker=new GMarker(pos,bs16());
	}
	var html="<b>"+unescape(innode.getAttribute("name"))+"</b><br>"+unescape(innode.getAttribute("addr"))+"<br>"+unescape(innode.getAttribute("html"));
	var options="<div class='searchopt'><a href='javascript:bs21("+inid+");'>"+mapLinkVal+"</a>&nbsp;&nbsp;<a href='javascript:bs23("+inid+");'>"+directionsLinkVal+"</a>&nbsp;&nbsp;</div>";
	marker.html=html;
	marker.options=options;
	GEvent.addListener(marker, "click", function() {marker.openInfoWindowHtml(html+options);});
	return marker;
}

function bs16(){
	var icon = new GIcon();
	icon.image = root+mapIcon;
	icon.iconSize = new GSize(mapIconWidth,mapIconHeight);
	icon.iconAnchor = new GPoint(mapIconWidth/2,mapIconHeight/2);
	icon.infoWindowAnchor = new GPoint(mapIconWidth/2,mapIconHeight/2);
	return icon;
}

function bs17(){
	for(var i=0;i<sMks.length;i++){
		map.removeOverlay(sMks[i]);
	}
	for(var i=0;i<sLs.length;i++){
		map.removeOverlay(sLs[i]);
	}
	sLs=new Array();
	sMks=new Array();
	if(initQuery==""){
		mSN=parseInt(bs4("searchnum").value);
		if(mSN=="-1")mSN=stores.length;
	}
	
	var sortDist=new Array();
	var dist;
	var ce;
	for(var i=0;i<stores.length;i++){
		dist=stores[i].getPoint().distanceFrom(map.getCenter());
		ce=new Array();
		ce.id=i;
		ce.dist=dist;
		sortDist.push(ce);
	}
	sortDist.sort(bs18);
	var showMax=mSN;
	if(showMax>sortDist.length)showMax=sortDist.length;
	var mbound=map.getBounds();
	var iwidth=(mapWidth*(1-mapProp)-28)+"px";
	var st=bs4("blipstarinfo");
	var stext="<div class='searchinfotitle'>"+mapSearch+"</div><div style='text-align:right;width:"+iwidth+"'><a href='javascript:bs22()'>"+searchTextVal+"</a></div>";
	if(st==null)return;
	for(var i=0;i<showMax;i++){
		var cs=stores[sortDist[i].id];
		map.addOverlay(cs);
		sMks.push(cs);
		var clp=new Array();
		clp.push(cs.getPoint());
		clp.push(map.getCenter());
		if(mapLines==true){
			var cline=new GPolyline(clp);
			map.addOverlay(cline);
			sLs.push(cline);
		}
		mbound.extend(cs.getPoint());
		stext+="<div class='storebox' style='background:rgb("+mapBackgroundColour+");width:"+iwidth+"'>";
		stext+=cs.html+"<br><br><div>";
		stext+="<div class='searchdist'>"+bs19(sortDist[i].dist)+"</div>";
		stext+=cs.options+"</div></div>";
	}
	st.innerHTML=stext;
	var inside=map.getBoundsZoomLevel(mbound);
	while(inside>1){
		map.setCenter(map.getCenter(),inside);
		if(map.getBounds().containsBounds(mbound))inside=0;
		inside--;
	}
}

function bs18(a,b){
	return a.dist-b.dist;
}

function bs19(inval){
	var outval;inval=inval/1000;
	if(mapMiles==true)inval=inval*0.621371192;
	if(inval<1){
		outval="<1";
		if(mapMiles==true){
			outval+=" "+mileVal;
		}
		else{
			outval+="km";
		}
	}
	else{
		outval=Math.round(inval);
		if(mapMiles==true){
			outval+=" "+milesVal;
		}
		else{
			outval+="km";
		}
	}
	return outval;
}

function bs20(){
	var icon = new GIcon();
	icon.image = "marker.png";
	icon.iconSize = new GSize(12,12);
	icon.iconAnchor = new GPoint(3,3);
	icon.infoWindowAnchor = new GPoint(3,3);
	return icon;
}

function bs21(inid){
	var cp=stores[inid].getPoint();
	if(mapBlowup==true){
		map.showMapBlowup(cp);
	}
	else{
		map.setCenter(cp,14);
	}
}

function bs22(){
	if(initQuery!=""){
		history.back();
	}
	else{
		bs8(true);
	}
}

function bs23(inid){
	dWin=window.open("http://maps.google.com?saddr="+mapSearch+"&daddr="+stores[inid].getPoint().toUrlValue(),"search");
	dWin.focus();
}