﻿// global variables
var gmarkers=[];
var map;
var request;
var bounds = new GBounds(Number.MAX_VALUE, Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE);
var mapInfo = new Object();
var mapMarkers= new Array();

var baseIcon = new GIcon();
baseIcon.image = mapInfo.baseImageLocn+"house1.png";
baseIcon.iconSize = new GSize(28, 36);
baseIcon.iconAnchor = new GPoint(14, 44);
baseIcon.infoWindowAnchor = new GPoint(14, 5);
baseIcon.transparent = mapInfo.baseImageLocn+"pinTrans.png";

//baseIcon.transparent = "mapIcons/mm_20_transparent.png";
//baseIcon.shadowSize = new GSize(22, 20);
//baseIcon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";

var icons=[];

function Markers(pinIcon){

map.closeInfoWindow();
   if (document.getElementById(pinIcon).checked==false) { // hide the marker
      for (var i=0;i<gmarkers.length;i++) {
         if (gmarkers[i].type==pinIcon)  {
            map.removeOverlay(gmarkers[i]);
         }
      }
   } else { // show the marker again
      for (var i=0;i<gmarkers.length;i++) {
         if (gmarkers[i].type==pinIcon)  {
            map.addOverlay(gmarkers[i]);
         }
      }
   }
}

function shareIcons(pinIcon) {
   var theIcon;
   if ((typeof(pinIcon)=="undefined") || (pinIcon==null)) {
      theIcon = "house1"
   } else {
      theIcon = pinIcon;
   }
   if (!icons[theIcon]) {
    	var icon = new GIcon(baseIcon);
    	icon.image = mapInfo.baseImageLocn + theIcon + ".png";
    	icons[theIcon]=icon;
		cb=document.getElementById(theIcon);
		if(cb) {
			cb.onclick=function() { Markers(this.id); };
		}
   }
   return icons[theIcon];
}

function addMarker(theMarker) {
   var latlng = new GLatLng(theMarker.lat,theMarker.lng);
   var icon = shareIcons(theMarker.icon);
   var marker = new GMarker(latlng, icon);
	bounds.extend(latlng);
   gmarkers.push(marker);
   marker.type = theMarker.icon;
	if(((theMarker.infoTitle.length) + (theMarker.infoText.length))>0) {
		GEvent.addListener(marker, "click", function () {
			text = "<div style=\"white-space:nowrap;\">";
			if(theMarker.infoTitle.length>0) {
				text+="<h1 class=\"infoWindow\">"+theMarker.infoTitle+"</h1>";
			}
			if(theMarker.infoText.length>0) {
				text+="<p class=\"infoWindow\">"+theMarker.infoText+"</p>";
			}
			if(theMarker.infoLink.length>0) {
				text+="<a href=\""+theMarker.infoLink+"\" class=\"infoWindow\">"+moreinfo+"</a>";
			}
			text+="</div>";
			marker.openInfoWindowHtml(text);
		});
	}
   map.addOverlay(marker);
}

function makeLargeMap() {
	var minLat=999;
	var maxLat=-999;

	var minLng=999;
	var maxLng=-999;

	map = new GMap2(document.getElementById(mapInfo.tagID));
	map.addControl(new GLargeMapControl());
	map.setCenter(new GLatLng( mapInfo.lat, mapInfo.lng), mapInfo.zoomLevel);

	for(i=0; i<mapMarkers.length; i++) {
		theMarker=mapMarkers[i];
		addMarker(theMarker);
	}
}

function makeLargeTestMap() {
	var minLat=999;
	var maxLat=-999;

	var minLng=999;
	var maxLng=-999;

	map = new GMap2(document.getElementById(mapInfo.tagID));
	map.addControl(new GLargeMapControl());
	map.setCenter(new GLatLng( mapInfo.lat, mapInfo.lng), mapInfo.zoomLevel);

	for(i=0; i<mapMarkers.length; i++) {
		theMarker=mapMarkers[i];
		addMarker(theMarker);
	}

	GEvent.addListener(map, "click", function(marker, point) {
	if (marker) {
		//map.removeOverlay(marker);
	} else {
		console.log("lat="+point.lat()+" / Lng="+point.lng());
		//map.addOverlay(new GMarker(point));
	}
	});
}

function makeSmallMap() {
	map = new GMap2(document.getElementById(mapInfo.tagID));
	map.addControl(new GSmallZoomControl());
	map.setCenter(new GLatLng( mapInfo.lat, mapInfo.lng), mapInfo.zoomLevel);

	for(i=0; i<mapMarkers.length; i++) {
		theMarker=mapMarkers[i];
		addMarker(theMarker);
	}
}
