

	// Define constants and variables

	var gmMaps = new Array();

	var Markers = new Array();

	var MarkersInfo = new Array();

	var gmCategories = new Array();

	var _SHOWMAPTYPE = 1;

	var _ADDLOCALSEARCH = 2;

	var _ADDMAPOVERVIEW = 3;

	var _ENABLEDOUBLECLICKZOOM = 4;

	var _DISABLEDOUBLECLICKZOOM = 5;

	var _LARGEZOOMTYPE = 6;

	var _SMALLZOOMTYPE = 7;	

	var _SATELLITEMAP = 8;

	var _HYBRIDMAP = 9;

	var _NORMALMAP = 10;

	var _TERRAINMAP = 11;

    var _SATELLITE_3D_MAP = 12;


	

	/**

		Initialize a specifc map

	*/

	function initMap(id) {

		map = new GMap2(document.getElementById("googlemap_" + id));

		gmMaps[id] = map;

	}


	/**

		This function will add specific options to the map

	*/

	function addMapOption(id, feature) {

		switch (feature) {

			case _SHOWMAPTYPE:
                
gmMaps[id].addControl(new GHierarchicalMapTypeControl());



				break;

			case _ADDLOCALSEARCH:

				gmMaps[id].addControl(new google.maps.LocalSearch());

				break;

			case _ADDMAPOVERVIEW:

				gmMaps[id].addControl(new GOverviewMapControl());

				break;

			case _ENABLEDOUBLECLICKZOOM:

				gmMaps[id].enableDoubleClickZoom();

				break;

			case _DISABLEDOUBLECLICKZOOM:

				gmMaps[id].disableDoubleClickZoom();

				break;				

			case _LARGEZOOMTYPE:

				gmMaps[id].addControl(new GLargeMapControl());

				break;

			case _SMALLZOOMTYPE:

				gmMaps[id].addControl(new GSmallMapControl());

				break;		

			case _SATELLITEMAP:

				gmMaps[id].addMapType(G_SATELLITE_MAP);

				gmMaps[id].setMapType(G_SATELLITE_MAP);				

				break;

			case _HYBRIDMAP:
				gmMaps[id].addMapType(G_HYBRID_MAP);

				gmMaps[id].setMapType(G_HYBRID_MAP);	
				
				break;

			case _NORMALMAP:

				gmMaps[id].addMapType(G_NORMAL_MAP);

				gmMaps[id].setMapType(G_NORMAL_MAP);				

				break;

			case _TERRAINMAP:

				gmMaps[id].addMapType(G_SATELLITE_3D_MAP);

				gmMaps[id].setMapType(G_SATELLITE_3D_MAP);
			
				break;	

				case _SATELLITE_3D_MAP:

				gmMaps[id].addMapType(G_SATELLITE_3D_MAP);

				gmMaps[id].setMapType(G_SATELLITE_3D_MAP);										
break;

		}

	}

	

	/**

		This function will specify the maps center

	*/

	function setMapCenter(id,lat,lng,zoom) {

		gmMaps[id].setCenter(new GLatLng(lat,lng),zoom);

	}

	

	/**

		Add an object to the specified map

	*/

	function addOverlay(id,obj) {

		gmMaps[id].addOverlay(obj);

	}

	

	

function openInfoWindow(mapid,id,usetabs) {  

	if (usetabs == 'N') {     

		Markers[mapid,id].openInfoWindowHtml(MarkersInfo[mapid,id]);

	} else {     

		Markers[mapid,id].openInfoWindowTabsHtml(MarkersInfo[mapid,id]);   

	}

}	

	



function changeMarkerPosition(mapid,marker,lat,lng) {

	var curPosition = marker.getPoint();

	map = gmMaps[mapid];

	map.setCenter(marker.getPoint());

	lat.value = curPosition.lat();

	lng.value = curPosition.lng();

}



function previewMarkerInfoWindow(marker) {

    var title = "<div class='markerName'>" + document.adminForm.name.value + "</div>";

    var desc = "<div class='markerDescription'>" + document.adminForm.description.value + "</div>";

	marker.openInfoWindowHtml(title + desc);

}





function geocodeMarkerAddress(mapid,mid) {

  var address = document.adminForm.geocodeaddr.value

  var lat = document.adminForm.latitude;

  var lng = document.adminForm.longitude;

  var id = document.adminForm.id.value;

  var geocoder = new GClientGeocoder();

  var marker = Markers[mapid,mid];

  var map = gmMaps[mapid];

  geocoder.getLatLng(

    address,

    function(point) {

      if (!point) {

        alert(address + " not found");

      } else {

        map.setCenter(point, 13);

        marker.setPoint(point);

//        map_0.addOverlay(marker);

		lat.value = point.lat();

		lng.value = point.lng();

      }

    }

  );

  

  

}

	
