// define global variables
var map;
var max_zoom = 17;
var min_zoom = 7;
var current_zoom;
var zoomlevel_out;
      var tooltip = document.createElement("div");

var markers=new Array();
/*function addLoadEvent(func) {
	if (window.location.href.indexOf("-popup.htm") < 0) {
		var oldonload = window.onload;
		if (typeof window.onload != "function") {
			window.onload = func;
		}
		else {
			window.onload = function() {
				oldonload();
				func();
			}
		}
	}
}
*/

var infoOpen=false;

function loadMap() {

	if (GBrowserIsCompatible()) {
		
		// create the map object
		map = new GMap2(document.getElementById("map"));
		// set the centre to nowhere
		var zoom;
		if(gPoints.length>2) zoom=10;
		else zoom=16; 		
		map.setCenter(gPoints[0],zoom);
		
	      map.getPane(G_MAP_FLOAT_PANE).appendChild(tooltip);
	      tooltip.style.visibility="hidden";		
		// store the current position so you can return to it
		GEvent.addListener(map, "movestart", function() {
 			map.savePosition();
		});
		
		// store the current zoom after every zoom
		GEvent.addListener(map, "zoomend", function() {
 			current_zoom = map.getZoom();
 			zoomLevels(current_zoom);
		});

		// set up the marker
		pin = new GIcon();
		pin.image = "/img/map/pin-school.png";
		pin.shadow = "/img/map/pin-schoolshadow.png";
		pin.iconSize = new GSize(41, 49);
		pin.shadowSize = new GSize(85, 49);
		pin.iconAnchor = new GPoint(20, 49);

		
		// plot the marker on the map
	//	var point = new GLatLng(lat,lng);
		// add marker to map
		
		function create_marker(gPoint,i){
			var gPointR = gPoint;
			if(zoom=10){
				if(i==7){
					
					gPoint=new GLatLng(gPoint.lat()-0.01, gPoint.lng());
					
					}
				if(i==9){
				
					gPoint=new GLatLng(gPoint.lat(), gPoint.lng()-0.01);
				}if(i==1){
				
					gPoint=new GLatLng(gPoint.lat(), gPoint.lng()+0.02);
				}
				
			}
							
			var marker=new GMarker(gPoint,pin);
			marker.realLatLng=gPointR;	
			markers[i]=marker;
			marker.tooltip = '<div class="tooltip">'+aInfo[i]+'</div>';	
			GEvent.addListener(marker, "click", function() {
		  		if(map.getZoom()>=16)
					window.location=aUrls[i];
				else{
					 map.setCenter(this.getPoint(),map.getZoom()+2);
					 
					 
				}		
		  
		  
			  });
			GEvent.addListener(marker, "mouseover", function() {
					
					var anch=document.getElementById("school"+i);
					/*if(!infoOpen){
						map.openInfoWindowHtml(this.getPoint(),aInfo[i]);
						
					}else{
						map.closeInfoWindow();
						map.openInfoWindowHtml(this.getPoint(),aInfo[i]);
					}*/
					
				
				//	anch.class="overMap";
				showTooltip(this);
				if(anch)
					anch.style.background="#fff";
					
			  });
			GEvent.addListener(marker, "mouseout", function() {
					/*if(infoOpen){
					
						map.closeInfoWindow();
						}*/
					var anch=document.getElementById("school"+i);
				tooltip.style.visibility="hidden"
				//	anch.class="outMap";
								if(anch)
								anch.style.background="none";
			  });

			return marker;
			
		
		
		}
		
		GEvent.addListener(map, "zoomend", function() {
			if(markers[7]){
				if(map.getZoom()!=10){
					gPoint=markers[7].realLatLng;
					markers[7].setPoint(new GLatLng(gPoint.lat(), gPoint.lng()));
					gPoint=markers[9].realLatLng;
					markers[9].setPoint(new GLatLng(gPoint.lat(), gPoint.lng()));
					gPoint=markers[1].realLatLng;
					markers[1].setPoint(new GLatLng(gPoint.lat(), gPoint.lng()));					
				}else{
					gPoint=markers[7].realLatLng;
					markers[7].setPoint(new GLatLng(gPoint.lat()-0.01, gPoint.lng()));
					gPoint=markers[9].realLatLng;
					markers[9].setPoint(new GLatLng(gPoint.lat(), gPoint.lng()-0.01));	
					gPoint=markers[1].realLatLng;
					markers[1].setPoint(new GLatLng(gPoint.lat(), gPoint.lng())+0.02);									
				}
			}
		});
		
		for(var i=0; i<gPoints.length; i++){
			map.addOverlay(create_marker(gPoints[i], aIds[i]));
		}
		
		GEvent.addListener(map, "infowindowclose", function(){
			infoOpen=false;
		});
		
		//save the map position
		map.savePosition();
		//save the inital zoom level
		current_zoom = map.getZoom();
		//set the zoom bars
		zoomLevels(current_zoom);
		
		//add the overview map
		//map.addControl(new GOverviewMapControl(new GSize(109,59)));

		setTimeout("moveOverview();",10);

		
	}
		
}


var geoCode=new GClientGeocoder();
var i;
var gPoints = new Array();
var errors = 0;
var bla= new Array();
function addGPoint(point){
	//alert(i+" "+point)
	
	if (point!=null)
		gPoints.push(point);
	else
		gPoints.push("0,0");

	if(gPoints.length==aIds.length){
	
			loadMap(gPoints);
			}
}


for(i=0;i<aIds.length;i++){
	setTimeout("geoCodeThis("+i+")", i*1000);
}


function geoCodeThis(i){
	geoCode.getLatLng(aAddresses[aIds[i]], addGPoint);
}



// PAN THE MAP
function panMap(way){ switch (way) { case "north": map.panDirection(0,1);break; case "south": map.panDirection(0,-1);break; case "east": map.panDirection(-1,0);break; case "west": map.panDirection(1,0);break; } }
// RETURN TO THE PREVIOUS MAP POSITION
function returnMap() { map.returnToSavedPosition(); }
// ZOOM THE MAP
function zoomMap(way) {
	var currentzoom = map.getZoom();
	var way = parseInt(way);
	if (((currentzoom+way) >= min_zoom) && ((currentzoom+way) <= max_zoom)) {
		map.setZoom(map.getZoom()+parseInt(way));
	}
}
// CHANGE THE MAP TYPE
function viewMap(type) { switch(type) { case "road": map.setMapType(G_NORMAL_MAP);break; case "satellite": map.setMapType(G_SATELLITE_MAP);break; case "hybrid": map.setMapType(G_HYBRID_MAP);break; } }

function findPos(obj,pos) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft; curtop = obj.offsetTop;
		while (obj = obj.offsetParent) { curleft += obj.offsetLeft; curtop += obj.offsetTop;}
	}	
	//return [curleft,curtop];
	if (pos == "left") return curleft;
	if (pos == "top") return curtop;
}

function zoomBar(level) {
	map.setZoom(level);
}

function zoomLevels(level) {
	
	clearTimeout(zoomlevel_out);
	
	for (var i=min_zoom;i<=level;i++) {
		var img_src = document.getElementById("image"+i).src;
		if (img_src) {
			document.getElementById("image"+i).src = img_src.replace(/down/,"up");
		}
		else {
			document.getElementById("image"+i).src = "/img/map/zoom"+i+"-up.gif";
		}
	}
	
	for (var i=level+1;i<max_zoom+1;i++) {
		var img_src = document.getElementById("image"+i).src;
		if (img_src) {
			document.getElementById("image"+i).src = img_src.replace(/up/,"down");
		}
		else {
			document.getElementById("image"+i).src = "/img/map/zoom"+i+"-down.gif";
		}
	}
	
}

function zoomLevelsOut(level) {
	zoomlevel_out = setTimeout("zoomLevels("+level+")",500);
}

function moveOverview() {
	/*var map = document.getElementById("map");
	var omap = document.getElementById("map_overview");
	var smap = document.getElementById("smallmap");
	
	var smallx = findPos(smap,"left");
	var smally = findPos(smap,"top");
  
  var mapx = findPos(map,"left");
  var mapy = findPos(map,"top");
  
  omap.style.left = (smallx-mapx+omapOffset("x",getBrowser()))+"px";
  omap.style.top = (smally-mapy+omapOffset("y",getBrowser()))+"px";

  // == restyling ==
  omap.firstChild.style.backgroundColor = "transparent";
  omap.firstChild.style.border = "none";

  omap.firstChild.firstChild.style.left="-1px";
  omap.firstChild.firstChild.style.top="-1px";
  omap.firstChild.firstChild.style.width="109px";
  omap.firstChild.firstChild.style.height="59px";
  // remove collapseable image
  var imgs = omap.getElementsByTagName("img");
  for (var i=0;i<imgs.length;i++) {
	  if (imgs[i].src == "http://www.google.com/intl/en_ALL/mapfiles/overcontract.gif") {
			//GLog.write(imgs[i].src+" - "+imgs[i].getAttribute("id"));
			imgs[i].parentNode.removeChild(imgs[i]);
		}
  } 
  
  var terms = map.firstChild.nextSibling;
  terms.style.right = "5px";*/
}

function omapOffset(axis,browser) {
	switch (axis) {
		case "x":
			switch (browser) {
				case "firefox": return 0;break;
				case "ie7": return 1;break;
				case "ie6": return 2;break;
			}
			break;
		case "y":
			switch (browser) {
				case "firefox": return 0;break;
				case "ie7": return 8;break;
				case "ie6": return 9;break;
			}
			break;
	}
}

function getBrowser() {
	var browser = navigator.userAgent;
	if (browser.indexOf("Firefox") > -1) return "firefox";
	if (browser.indexOf("MSIE 7") > -1) return "ie7";
	if (browser.indexOf("MSIE 6") > -1) return "ie6";
}

      function showTooltip(marker) {
      	tooltip.innerHTML = marker.tooltip;
	var point=map.getCurrentMapType().getProjection().fromLatLngToPixel(map.fromDivPixelToLatLng(new GPoint(0,0),true),map.getZoom());
	var offset=map.getCurrentMapType().getProjection().fromLatLngToPixel(marker.getPoint(),map.getZoom());
	var anchor=marker.getIcon().iconAnchor;
	var width=marker.getIcon().iconSize.width;
	var height=tooltip.clientHeight;
	var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(offset.x - point.x - anchor.x + width + 5, offset.y - point.y -anchor.y -height/2)); 
	pos.apply(tooltip);
	tooltip.style.visibility="visible";
      }
