var map = null;
var geocoder = null;
var marker =  null;

// Create a base icon for all of our markers that specifies the shadow, icon dimensions, etc.
var baseIcon = new GIcon(G_DEFAULT_ICON);
baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
baseIcon.iconSize = new GSize(20, 34);
baseIcon.shadowSize = new GSize(37, 34);
baseIcon.iconAnchor = new GPoint(9, 34);
baseIcon.infoWindowAnchor = new GPoint(9, 2);

function load(defaultlatitude, defaultlongitude, defaultzoomlevel) {
 if (GBrowserIsCompatible()) {

	map = new GMap2(document.getElementById("map"));
	map.addControl(new GSmallMapControl());
	map.removeMapType(G_SATELLITE_MAP);
	  
    var mapControl = new GMapTypeControl();
    map.addControl(mapControl);	
	
	geocoder = new GClientGeocoder();
		
	var zoomLevel = defaultzoomlevel;
	var defaultpos = new GLatLng(defaultlatitude, defaultlongitude);
	var eZoomlevel = document.getElementById("zoomlevel");
	var initialPosition = null;        
	var mapitems = document.getElementById("mapitems");	
	var iconTypesObject = document.getElementById("icons");	
	var iconTypes = false;
	var markerType = 1;
	if ( iconTypesObject != null && iconTypesObject.value ) iconTypes = true;
	if ( mapitems != null ) 
	{   
		var mapitemscount = Number(mapitems.value);
		if ( mapitemscount > 0 ) {
			for(var i=0; i < mapitemscount; i++) 
			{
				var lat = document.getElementById("lat"+i);
				var lng = document.getElementById("lng"+i);
				var xtitle = document.getElementById("title"+i);
				
				if ( lat != null && lng != null && lat.value!=0 && lng.value != 0) {
					var ctitle = document.getElementById("ctitle"+i);
					var adtitle = document.getElementById("adtitle"+i);
					var finalString = xtitle.value;
					if ( iconTypes ) {
						markerType = i;
					} else {
						markerType = 1;
						if ( ctitle != null) {
							finalString = ctitle.value + "<br>" + finalString;
							markerType = 2;
						} else if ( adtitle != null ){
							finalString = adtitle.value + "<br>" + finalString;
							markerType = 3;							
						}
					}
					initialPosition = new GLatLng(lat.value , lng.value);
					map.setCenter(initialPosition, zoomLevel); 
					map.addOverlay(createMarker(initialPosition, markerType, finalString, iconTypes));
				} 
			}
			if ( mapitemscount > 1 ) 
				map.setCenter(defaultpos, zoomLevel-1); 
		} else {
			map.setCenter(defaultpos, zoomLevel); 			
		}
	} 
	else 
	{
		if ( eZoomlevel != null ) {
			var xzoomLevel = eZoomlevel.value;
			if ( xzoomLevel != 0 ) {
				zoomLevel = Number(xzoomLevel);
			}
		}
		
		var lat = document.getElementById("lat");
		var lng = document.getElementById("lng");

		if ( lat != null && lng != null && eZoomlevel != null &&  lat.value!=0 && lng.value != 0) {
			initialPosition = new GLatLng(lat.value , lng.value);
		} else {
			initialPosition = defaultpos;
		}

		map.setCenter(initialPosition, zoomLevel); 
		marker = new GMarker(initialPosition, {draggable: true});
		map.addOverlay(marker);

		GEvent.addListener(marker, "dragend", function() {
		  var pos = marker.getLatLng();
		  document.getElementById("lng").value = pos.lng();
		  document.getElementById("lat").value = pos.lat();
		  document.getElementById("zoomlevel").value = map.getZoom();
		});    
		GEvent.addListener(map, "zoomend", function() {
		  document.getElementById("zoomlevel").value = map.getZoom();
		});  
	}	
 }
}

function showAddress(address) {
 if (geocoder) {
   geocoder.getLatLng(
     address,
     function(point) {
       if (!point) {
         alert("Unable to find " + address + " on map. Please position marker on map yourself.");
       } else {
         map.setCenter(point, map.getZoom());
         marker.setLatLng(point);
		 document.getElementById("lng").value = point.lng();
	     document.getElementById("lat").value = point.lat();
	     document.getElementById("zoomlevel").value = map.getZoom();

       }
     }
   );
 }
}

function GMapUpdate(){
	var index = 0;
	var text = new Array();
	while ( true ) {
		var elem = document.getElementById("locationid"+index);	
		if ( elem == null || (elem != null && elem.selectedIndex == 0)) { break;}
		text[index] = elem.options[elem.selectedIndex].text;
	  		index++;
	}
	
	var address = "";
	if ( text.length == 1 ) { address = text[0]; } 
	else if ( text.length == 2 ) { address = text[1] + ", " + text[0]; } 
	else if ( text.length == 3 ) { address = text[1] + "-" + text[2] + ", " + text[0];}
	if ( address != "" ) {
		showAddress(address);
	}
}

// Creates a marker whose info window displays the letter corresponding to the given index.
function createMarker(point, index, msg, iconTypes) {
  // Create a lettered icon for this point using our icon class
  var letter = String.fromCharCode("A".charCodeAt(0) + index);
  var letteredIcon = new GIcon(baseIcon);
  if ( iconTypes )
  letteredIcon.image = "http://www.google.com/mapfiles/marker" + letter + ".png";
  else
  letteredIcon.image = "http://static.chandigarhmarket.com/images/marker" + letter + ".png";

  // Set up our GMarkerOptions object
  markerOptions = { icon:letteredIcon,draggable: false };
  var markerx = new GMarker(point, markerOptions);

  GEvent.addListener(markerx, "click", function() {
    markerx.openInfoWindowHtml(msg);
  });
  return markerx;
}
function managediv(divid)
{
	var divXObject = document.getElementById(divid);

	var image = "";	
	var imagetext = "";
	if ( divXObject != null ) {
		var divObject = null;
		
		if ( divXObject.style != null ) {
			divObject = divXObject.style;
		} else {
			divObject = divXObject;
		}
		if (divObject.display == 'block') {
			divObject.display = 'none';
			imagepath = "images/expand.gif";
			imagetext = "Expand";
		} else {
			divObject.display = 'block';
			imagepath = "images/collapse.gif";
			imagetext = "Collapse";
		}
	} else {
		imagepath = "images/collapse.gif";
		imagetext = "Collapse";
	}
	var imageObject = document.getElementById("i"+divid);
	if ( imageObject != null ) {
		imageObject.src = imagepath;
		imageObject.alt = imagetext;
	}
}