var map;
var data = new Array();	  
var lat = 47.6357;
var lng = -120.02563;
var zoom = 7;
var bigIcons = false;
var firstRun = true;
var markers = new Array();

// Create Icons
var siteIcon = new GIcon();
siteIcon.image = "appImages/flagIcon2.png";
siteIcon.shadow = "appImages/flagIconShadow3.png";
siteIcon.iconSize = new GSize(19, 17);
siteIcon.shadowSize = new GSize(29, 21);
siteIcon.iconAnchor = new GPoint(0, 19);
siteIcon.infoWindowAnchor = new GPoint(5, 1);

var shopIcon = new GIcon();
shopIcon.image = "appImages/shopIcon.png";
shopIcon.shadow = "appImages/flagIconShadow3.png";
shopIcon.iconSize = new GSize(19, 17);
shopIcon.shadowSize = new GSize(29, 21);
shopIcon.iconAnchor = new GPoint(0, 19);
shopIcon.infoWindowAnchor = new GPoint(5, 1);

var lSiteIcon = new GIcon();
lSiteIcon.image = "appImages/site_dot.png";
lSiteIcon.shadow = "appImages/shadow_dot.png";
lSiteIcon.iconSize = new GSize(7, 7);
lSiteIcon.shadowSize = new GSize(7, 7);
lSiteIcon.iconAnchor = new GPoint(0, 3);
lSiteIcon.infoWindowAnchor = new GPoint(6, 6);

var lShopIcon = new GIcon();
lShopIcon.image = "appImages/shop_dot.png";
lSiteIcon.shadow = "appImages/shadow_dot.png";
lShopIcon.iconSize = new GSize(7, 7);
lSiteIcon.shadowSize = new GSize(7, 7);
lShopIcon.iconAnchor = new GPoint(0, 3);
lShopIcon.infoWindowAnchor = new GPoint(6, 6);

function onMapLoad() 
{
	if (! GBrowserIsCompatible())
		return;

	map = new GMap2(document.getElementById("map"));
	
	map.addControl(new GLargeMapControl());
	map.addControl(new GMapTypeControl());
	map.addControl(new GOverviewMapControl());

	map.enableScrollWheelZoom();

	GEvent.addListener(map, "zoomend", function(oldZ, newZ){ chIconType(oldZ, newZ); });

	// map.enableContinuousZoom(); 
	
	var cookie = document.cookie;
	var each_cookie = cookie.split(";");
	
	for (i = 0; i < each_cookie.length; i++)
	{
		var key_val = each_cookie[i].split('=');
		key_val[0] = key_val[0].replace(/[^\w]*/, '');
		
		if(key_val[0] == "lat")
			lat = parseFloat(key_val[1]);
		else if(key_val[0] == "lng")
			lng = parseFloat(key_val[1]);
		else if(key_val[0] == "zoom")
			zoom = parseInt(key_val[1]);
	}//ends FOR
	
	map.setCenter(new GLatLng( lat, lng), zoom);
	onMapResize();
}

function setMapCookie()
{
	var latlng = map.getCenter();
	document.cookie = "lat=" + latlng.lat();
	document.cookie = "lng=" + latlng.lng();
	document.cookie = "zoom=" + map.getZoom();
}

function DisplayPageInfo( pageID, markerID)
{
 	var fnSucc =  function(data){
 		markers[markerID].openInfoWindowHtml(data);
 	}

 	AjaxRequest('map_info.php', 'pageID=' + pageID, fnSucc, null);
}

function chIconType(oldZ, newZ)
{
	if(!firstRun)
	{
		if(bigIcons && newZ > 6)
			return;
		else if( !bigIcons && newZ <= 6)
			return;
	}
	else
		firstRun = false;
		
	var nMarkers = markers.length;
	for(var i = 0; i < nMarkers; i++)
		map.removeOverlay(markers[i]);
	markers.length = 0;
	
	bigIcons  = map.getZoom() > 6;
	
	var nPages = data.length;
	for(var i = 0; i < nPages; i++)
	{
		var icon;
		if(bigIcons)
			icon = (data[i][0] == "site") ? siteIcon : shopIcon;
		else
			icon = (data[i][0] == "site") ? lSiteIcon : lShopIcon;
		
		var marker = new GMarker( new GLatLng( data[i][2], data[i][3]), icon);
		markers[i] = marker;

		var fn = "DisplayPageInfo( " + data[i][1] + ", " + i + ");";
		var funct = new Function(fn);

		GEvent.addListener(markers[i], 'click', funct );
		map.addOverlay( marker );
	}
}

function onMapResize()
{
	var h = 0;
	if(window.innerHeight) // FF
		h = window.innerHeight - 116 - 15 + "px";
	else // IE
		h = document.documentElement.clientHeight - 133 - 15 + "px";
	
	var mapDiv = document.getElementById("map");
	mapDiv.style.height = h;
	map.checkResize();
}

// Add Events
if(window.attachEvent)
{
	window.attachEvent("onload", onMapLoad);
	window.attachEvent("onresize", onMapResize);
}
else
{
	window.addEventListener("load", onMapLoad, false);
	window.addEventListener("resize", onMapResize, false);
}

