var markerMap = new Array();
var map = null;
var geoCoder = null;
var directionsService = null;
var directionDisplay = null;
var currentActiveWindow = null;
var routeOID = null;
var zindex = 1000;
var markerIcon = null;
var persSettings = null;

function refreshIndex(){
	zindex = 1000;
}

function initializeMap(id, icon, mapOptions, settings) {
	markerIcon = icon;
	var markerOptions =
	{
		icon: markerIcon,
		clickable:false
	}; 
	var directionOptions =
	{
		markerOptions: markerOptions
	}; 
	map = new google.maps.Map(document.getElementById(id), mapOptions);
	google.maps.event.addListener(map, 'tilesloaded', function () {
		refreshIndex();
	});
	persSettings = settings;
	geocoder = new google.maps.Geocoder();
	directionService = new google.maps.DirectionsService();
	directionsDisplay = new google.maps.DirectionsRenderer(directionOptions);
	directionsDisplay.setMap(map);
}


function openMarkerAndCreateText(oid){
	var markerFile = persSettings.markerFile + ""
	var partnerObj = markerMap[oid];
	if (partnerObj) {
		var objName = partnerObj["objName"];
		var marker = partnerObj["marker"];
		var cord = partnerObj["coordinate"];
		$.get(pathPrefix + markerFile + "?client_request_ajaxcutid=markerContent&view_" + objName + "_OID=" + oid, function(data) {
			var infoWindow = new google.maps.InfoWindow 
			(
				{ 
					content:data,
					size: new google.maps.Size(200,200)
				}
			);
			if (currentActiveWindow) {
				currentActiveWindow.close();
			}
			currentActiveWindow = infoWindow;
			currentActiveWindow.setPosition(marker.getPosition());
			currentActiveWindow.open(map,marker);
		});
	}
	
}

function addMarkerWithCoordinates(coordinate, objName, oid){
	coordinate = coordinate.replace("(", "");
	coordinate = coordinate.replace(")", "");
	var pos = coordinate.indexOf(",");
	var lng = coordinate.substring(pos+2, coordinate.length);
	var lat = coordinate.substring(0, pos);
	var myLatlng = new google.maps.LatLng(lat,lng);
	var marker = new google.maps.Marker({
	      position: myLatlng, 
	      map: map,
	      icon: markerIcon
	  });
	 marker.setZIndex(zindex);
     zindex = zindex - 1;
	 google.maps.event.addListener(marker, 'click', function() {
		 openMarkerAndCreateText(oid);
	 });
	 map.setCenter(myLatlng);
	 var partnerMap = new Array();
	 partnerMap["marker"] = marker;
	 partnerMap["oid"] = oid;
	 partnerMap["coordinate"] = coordinate;
	 partnerMap["objName"] = objName;
	 markerMap[oid]=partnerMap;
}





function setCoordinateAndCreateMarker(address, objName, OID) {
	geocoder.geocode( { 'address': address}, function(results, status) {
		 if (status == google.maps.GeocoderStatus.OK) {
			 var myResult = results[0].geometry.location;
			 var escaped = escape(myResult); 
			 map.setCenter(results[0].geometry.location);
	          var marker = new google.maps.Marker({
	              map: map, 
	              icon: markerIcon,
	              position: results[0].geometry.location
	          });
	        	  ajaxReplace('saver' , pathPrefix + '/boxalino/public/gmaps/coordinateSave.html?client_request_objName=' + objName + '&client_request_OID='+OID + '&client_request_coordinate=' + escaped);
	          marker.setZIndex(zindex);
	          zindex = zindex - 1;
	          var partnerMap = new Array();
	          partnerMap["marker"] = marker;
	          partnerMap["objName"] = objName;
	          partnerMap["oid"] = OID;
	          partnerMap["coordinate"] = myResult;
	          markerMap[OID]=partnerMap;
	          google.maps.event.addListener(marker, 'click', function() {
	     		 openMarkerAndCreateText(OID);
	     	 });
		 }
    });
}
