var lat = 38.26206;
var lon = -85.73536;
var xmlHttp;
var map;
function load() {
  var mapobject;
  if (GBrowserIsCompatible()) {
    var map = new GMap2(
    document.getElementById("map"));
    map.addControl(new GSmallMapControl());
    map.addControl(new GMapTypeControl());
		var myTweed = getCookie('MY_TUMBLEWEED');
		if(myTweed != ''){
			myTweed = myTweed.split(/,/);
			lat = myTweed[2];
			lon = myTweed[1];
		}
		map.setCenter(
    new GLatLng(lat,lon), 11);
    mapobject = map;
  }
  return mapobject;
}

function GetXmlHttpObject(){
	var xmlHttp=null;
	try
		{
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
		}
	catch (e)
		{
		// Internet Explorer
		try
			{
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
			}
		catch (e)
			{
			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
			}
		}
	return xmlHttp;
}

function getStores(){
  xmlHttp=GetXmlHttpObject();
  if (xmlHttp==null)
    {
    alert ("Your browser does not support AJAX!");
    return;
    } 
  var url="googlemap/getStores.cgi";
  xmlHttp.onreadystatechange=getDistances;
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
}

function getDistances(){
  var storedistance;
  var distance;
  var myStores = new Object;
  if (xmlHttp.readyState==4)
  {
    var geocoder = new GClientGeocoder();
    var stores = eval(xmlHttp.responseText);
    for(var v in stores){
      if(v !== undefined){
        var latlonid = stores[v].split(":");
        var id= latlonid[1];
        var latlon = latlonid[0].split(",");
        var mylatlng = new GLatLng(lat,lon);
        var storelatlng = new GLatLng(latlon[1],latlon[0]);
        distance = mylatlng.distanceFrom(storelatlng);
				distance = (distance * 0.000621371192).toFixed(2);
	      var store = "store" + latlonid[1];
        eval("myStores." + store + " = distance");
      }
    }
    getNearestStores(myStores);
  }
}
function getNearestStores(Stores){
  var sortedStores = [];
  var closest4 =[];
  for (var storeid in Stores){
    sortedStores.push([storeid, Stores[storeid]]);
  }
  sortedStores.sort(function(a, b) {return a[1] - b[1]});
  for(var i=0; i < 7; i++){
    var store = sortedStores[i][0];
    closest4.push(store);
    closest4.push(sortedStores[i][1]);
  }
  xmlHttp=GetXmlHttpObject();
  if (xmlHttp==null)
    {
    alert ("Your browser does not support AJAX!");
    return;
    } 
  var url="googlemap/getClosestStoreInfo.cgi?stores=" + closest4.toString();
  xmlHttp.onreadystatechange=showResults;
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
}

function showResults(){
  if (xmlHttp.readyState==4)
  {
    var storesinfo = xmlHttp.responseText;
    $("#closest_stores").html(storesinfo);
  }
}

function setCookie(store){
  var exdate=new Date();
  exdate.setDate(exdate.getDate()+250);
  document.cookie="MY_TUMBLEWEED=" +escape(store)+
  ((250==null) ? "" : ";expires="+exdate.toGMTString());
  window.location.reload();
}

function getCookie(c_name)
{
if (document.cookie.length>0)
  {
  c_start=document.cookie.indexOf(c_name + "=");
  if (c_start!=-1)
    {
    c_start=c_start + c_name.length+1;
    c_end=document.cookie.indexOf(";",c_start);
    if (c_end==-1) c_end=document.cookie.length;
    return unescape(document.cookie.substring(c_start,c_end));
    }
  }
return "";
}

function showStores(zipcode){
  window.location = "http://tumbleweedrestaurants.com/locations.html?address=" + zipcode;
  return false;
}

function getClosestStores(mylat, mylon){
  lat = mylat;
  lon = mylon;
  getStores();
}

function getDirections(storeAddress){
	var myAddress = String(window.location);
	myAddress = myAddress.split("?");
	if(myAddress[1]){
		myAddress = myAddress[1].split("=");
		myAddress = myAddress[1].replace(/%20/g, " ");
	}
	$("#closest_stores").html("");
  var directionsPanel = document.getElementById("closest_stores")
  var directions = new GDirections(map, directionsPanel);
  directions.load("from: " + myAddress + " to: " + storeAddress);	
}
