/* $Id: maps.js,v 1.1 2009/09/18 13:07:58 pmorrill Exp $ */
var g_xg = null;
var g_map = null;
var g_map_type = null;
var g_markers = null;
var iconSize = [12,12];
var iconAnchor = [6,6];
var iconShadowSize = [59,32];
var altIconSize = [12,12];
var altIconAnchor = [6,6];
var altIconShadowSize = [34,29];
var defIcon = '/images/gr_dot.png';
var defShadow = '';
var altIconPath = "/images/";
var altShadow = "";
var g_mouseover = null;
var g_mouseclick = null;
var g_mapclick = null;
var g_mouseout = null;
var g_polys = null;
var g_kml_file = null;
var g_mapClickEvent = null;

function map_properties(pap,form) {
	var pps = '';
	if ( form ) {
		for (var i = 0; i < form.elements.length; i++) {
			var s = form.elements[i];
			if ( s.type == 'checkbox' && s.checked == 1 ) { pps += s.value+':'; }
		}
	}
	popup_window('/partners/agency/reports/mapping.php/'+pap,'pMap',850,650,'');
}

function load_markers() {
	if (GBrowserIsCompatible()) {
		if ( g_map_type == 'satellite' ) g_map = new GMap2(document.getElementById("map"),{mapTypes:[G_SATELLITE_MAP]});
		else if ( g_map_type == 'hybrid' ) g_map = new GMap2(document.getElementById("map"),{mapTypes:[G_HYBRID_MAP]});
		else g_map = new GMap2(document.getElementById("map"));
		var center = new GLatLng(mapcenter[0],mapcenter[1]);
		g_map.setCenter(center,zoom);

		var customUI = g_map.getDefaultUI();

		if ( maxzoom > 0 ) {
			customUI.controls.largemapcontrol3d = false;
			customUI.controls.smallzoomcontrol3d = false;
			customUI.zoom.scrollwheel = false;
			customUI.zoom.doubleclick = false;
		}

		if ( cb_zoom > 0 ) {
			GEvent.addListener(g_map,"dblclick",function(d,pt) {
				var zm = g_map.getZoom();
				if ( zm > cb_zoom ) document.location.href = cb_script + '/' + pt.lng() + '/' + pt.lat();
				else {
					g_map.setZoom(zm+1);
					g_map.setCenter(pt,zm+1);
				}
			});
		} else if ( maxzoom > 0 ) {
			GEvent.addListener(g_map,"dblclick",function(d,pt) {
				var z = g_map.getZoom();
				if ( z < maxzoom ) {
					g_map.setZoom(z+1);
					g_map.setCenter(pt,z+1);
				}
			});
		}

		g_map.setUI(customUI);
		if ( g_markers ) {
			var defaultIcon = new GIcon(G_DEFAULT_ICON);
			defaultIcon.image = defIcon;
			defaultIcon.shadow = defShadow;
			defaultIcon.iconSize = new GSize(iconSize[0],iconSize[1]);
			defaultIcon.shadowSize = new GSize(iconShadowSize[0],iconShadowSize[1]);
			defaultIcon.iconAnchor = new GPoint(iconAnchor[0],iconAnchor[1]);

			//
			// alternate icon if needed below
			//
			var altIcon = new GIcon(G_DEFAULT_ICON);

			var markers = [];
			var i = 0;
	
			for ( var i = 0; i < g_markers.length; i++ ) {
				var dot = new GLatLng(g_markers[i][0],g_markers[i][1]);

				//
				// see if there is an alt icon specified (it has to be square)
				//
				if ( g_markers[i][3] == 'default' ) markers[i] = new GMarker(dot,{draggable: false});
				else if ( g_markers[i][3] ) {
					altIcon.image = altIconPath+g_markers[i][3];
					altIcon.shadow = altShadow;
					altIcon.iconSize = new GSize(altIconSize[0],altIconSize[1]);
					altIcon.shadowSize = new GSize(altIconShadowSize[0],altIconShadowSize[1]);
					altIcon.iconAnchor = new GPoint(altIconAnchor[0],altIconAnchor[1]);
					markers[i] = new GMarker(dot,{draggable: false, icon: altIcon});
				} else markers[i] = new GMarker(dot,{draggable: false, icon: defaultIcon});

				if ( g_markers[i][2] != '' ) {
					markers[i].info = g_markers[i][2];
					if ( g_mapclick ) g_mapClickEvent = GEvent.addListener(g_map, "click", function() { eval(g_mapclick+'(this)'); });
					if ( g_mouseover ) GEvent.addListener(markers[i], "mouseover", function() { eval(g_mouseover+'(this)'); });
					else if ( g_mouseclick ) GEvent.addListener(markers[i], "click", function() { eval(g_mouseclick+'(this)'); });
					else GEvent.addListener(markers[i], "mouseover", function() { infoWindow(this); });
					if ( g_mouseout ) GEvent.addListener(markers[i], "mouseout", function() { eval(g_mouseout+'(this)'); });
				}
				g_map.addOverlay(markers[i]);
			}
		}

		if ( g_polys ) {
			var lat = mapcenter[0];
			var lon = mapcenter[1];
			var latOffset = 1;
			var lonOffset = 1;
			var vtx = [];
			for ( var i = 0; i < g_polys.length; i++ ) {
				vtx = [];
				for ( var j = 0; j < g_polys[i].length; j++ ) {
					vtx[j] = new GLatLng(g_polys[i][j][1],g_polys[i][j][0]);
				}
	    			var polygon = new GPolygon(vtx,"#00ff00", 1, 1, "#00ff00", 0.3);
				g_map.addOverlay(polygon);
			}
		}
																											 

		if ( g_kml_file ) g_xg = new GGeoXml(g_kml_file,handleKML);
	}
}

function handleKML() {
	if ( g_xg.hasLoaded() && g_xg.loadedCorrectly() ) {
		g_map.addOverlay(g_xg);
		g_xg.show();
	}
}

function infoWindow(mk) {
	mk.closeInfoWindow();
	mk.openInfoWindowHtml('<div style=\"text-align: left\">'+mk.info+'</div>');
}

