    var isHighLight = false;
    var closeInfoWindow = false;
    var listOfMarkers = [];
    var minZoom = generalMinZoom;
    var activeMapPoints = [];
    var oldPoint;
	var _Zoomlevel = -1;
	
    function addPointToMap(point){
    	var i = activeMapPoints.length;
    	activeMapPoints[i] = point;
    	//alert(activeMapPoints.length);
    }
    
    function getActiveMapPoints(){
    	return activeMapPoints;
    }
    
    function loadPoints() {
	
	//alert( _Zoomlevel );
		
      if (GBrowserIsCompatible()) {
        var map = new GMap2(document.getElementById("LocationsMap"));
        var center = new GLatLng(generalLat,generalLong);
        setMap(map);
       
		getMap().setCenter(center, minZoom);
        getMap().addControl(new GMapTypeControl());
        getMap().addControl(new GSmallMapControl());
        getMap().enableDoubleClickZoom();

//	if( _Zoomlevel != -1 )
	//		getMap().setZoom( _Zoomlevel );
 
        GEvent.addListener(getMap(), "click", function(marker, point) {
          if (marker) {
            if(closeInfoWindow){
                getMap().closeInfoWindow();
                closeInfoWindow = false;
            }else{
                var pos = marker.getPoint();
                id = pos.toUrlValue();
                highlight(pos.lat(),pos.lng(),map);
            }
          } 
        });
        GEvent.addListener(map, "dragend", function() {
          isHighlight = false;
        });     
	 getLocations();
        
	
      }
    }
    
    function loadMoveablePoint() {
      if (GBrowserIsCompatible()) {
        var map = new GMap2(document.getElementById("LocationsMap"));
        var center = new GLatLng(generalLat, generalLong);
        setMap(map);
        
        getMap().setCenter(center, generalAdminMinZoom);
        getMap().addControl(new GMapTypeControl());
        getMap().addControl(new GSmallMapControl());
        getMap().enableDoubleClickZoom();
        
        GEvent.addListener(getMap(), "click", function(marker, point) {
          if (marker) {
            if(closeInfoWindow){
                getMap().closeInfoWindow();
                closeInfoWindow = false;
            }else{
                var pos = marker.getPoint();
                id = pos.toUrlValue();
                var t = id.split(',');
                highlight(t[0],t[1],map);
            }
          } 
        });
        GEvent.addListener(map, "dragend", function() {
          isHighlight = false;
        });
       getMoveablePoint();
        
      }
    }
    
    function getMoveablePoint(){
    	if(pLat != 0 && pLon != 0){
    		var point = generateMoveableMarkerObjectFromLatLng(pLat,pLon,getStandardIcon());
    	}else{
    		var point = generateMoveableMarkerObjectFromLatLng('55.714735','9.689941',getStandardIcon());
    		insertPoint('55.714735,9.689941');
    	}
    	document.getElementById('lat').value = point.getPoint().lat();
    	document.getElementById('lng').value = point.getPoint().lng();
    	oldPoint = point.getPoint().toUrlValue();
    	getMap().addOverlay(point);
    }
    
    function generateMap(id){
    	if (GBrowserIsCompatible()) {
        var aMap = new GMap2(document.getElementById(id));
        var center = new GLatLng(generalLat, generalLong);
        aMap.setCenter(center, generalMinZoom);
        aMap.addControl(new GMapTypeControl());
        aMap.addControl(new GSmallMapControl());
        aMap.enableDoubleClickZoom();
        
        GEvent.addListener(aMap, "click", function(marker, point) {
          if (marker) {
            if(closeInfoWindow){
                aMap.closeInfoWindow();
                closeInfoWindow = false;
            }else{
                var pos = marker.getPoint();
                id = pos.toUrlValue();
                highlight(pos.lat(),pos.lng(),aMap);
            }
          } 
        });
        GEvent.addListener(aMap, "dragend", function() {
          isHighlight = false;
        });
      }
    	return aMap
    }
    
   function generateFloatingMap(id){
    	if (GBrowserIsCompatible()) {
        var aMap = new GMap2(document.getElementById(id));
        var center = new GLatLng(generalLat, generalLong);
        aMap.setCenter(center, generalMinZoom);
        aMap.addControl(new GMapTypeControl());
        aMap.addControl(new GSmallMapControl());
        aMap.enableDoubleClickZoom();
        
        GEvent.addListener(aMap, "click", function(marker, point) {
          if (marker) {
            if(closeInfoWindow){
                aMap.closeInfoWindow();
                closeInfoWindow = false;
            }else{
                var pos = marker.getPoint();
                id = pos.toUrlValue();
                highlight(pos.lat(),pos.lng(),aMap);
            }
          } 
        });
        GEvent.addListener(aMap, "dragend", function() {
          isHighlight = false;
          getLocations2(aMap);
        });
        GEvent.addListener(aMap, "zoomend", function() {
          isHighlight = false;
          getLocations2(aMap);
        });
      }
    	return aMap
    }
    
    function loadMaps(){
    	if(activeMaps.length> 0){
    		var maps = [activeMaps.length];
    		for(var i = 0; i< activeMaps.length; i++){
    			var aMap = generateMap('mapMaps'+i);
    			getRoutesOnMap(maps[i],aMap);
    		}
    	}
    }
    
    function loadFloatingMap(){
    	//alert('hertil1');
    	if(activeMaps2.length > 0){
    		var maps = [activeMaps2.length];
    		for(var i = 0; i< activeMaps2.length; i++){
    			//alert('hertil2-'+i);
    			maps[i] = generateFloatingMap('mapNoContent'+i);
				var	points = new Array();
    			points[0] = new GLatLng(parseFloat(nwLat[i]),parseFloat(nwLng[i]));
    			
    			points[1] = new GLatLng(parseFloat(seLat[i]),parseFloat(seLng[i]));
 				//maps[i].addOverlay(generateMarkerObjectFromLatLng(points[0].lat(),points[0].lng(),null));
 				//maps[i].addOverlay(generateMarkerObjectFromLatLng(points[1].lat(),points[1].lng(),null)); 				
 				//alert(points[0]+'-----'+points[1]);
 				resizeV2(maps[i],points);
				getLocations2(maps[i]);
    		}
    	}
    }
    
    function InStr(strSearch, charSearchFor)
	{
		for (i=0; i < Len(strSearch); i++)
		{
		    if (charSearchFor == Mid(strSearch, i, 1))
		    {
				return i;
		    }
		}
		return -1;
	}
    function Len(str)
   	{  
   		return String(str).length;  
	}
	function Mid(str, start, len)
    {
            if (start < 0 || len < 0) return "";

            var iEnd, iLen = String(str).length;
            if (start + len > iLen)
                    iEnd = iLen;
            else
                    iEnd = start + len;

            return String(str).substring(start,iEnd);
    }
	
    function SetZoomLevel(level)
	{
		_Zoomlevel = level;
	}
    
    function getLocations2(map){
		
			
//    	document.getElementById(map.getContainer()).style.cursor = 'wait';
    	var bounds = map.getBounds();
        var southWest = bounds.getSouthWest();
        var northEast = bounds.getNorthEast();
        
        zoomLevel = map.getZoom();
        
		
		
	
        var urlXML = '/pages/gmap/gmap_functions.asp?function=getPointsXML&siteGuid=' + siteGuid+'&southWestLat='+southWest.lat()+'&northEastLat='+northEast.lat()+'&southWestLng='+southWest.lng()+'&northEastLng='+northEast.lng()+'&zoomLevel='+zoomLevel;
		if(document.getElementById('flashcontent') != null){
			document.getElementById('flashcontent').style.display = "block";
		}
        GDownloadUrl(urlXML, function(data, responseCode) {
			var xml = GXml.parse(data);
			
            if(xml.documentElement.getElementsByTagName("marker") != null){
                var markers = xml.documentElement.getElementsByTagName("marker");
				
	            map.clearOverlays();
	            var routes = '';
	            if (markers.length > 0){
					
	                for (var i = 0; i < markers.length; i++) {
	                    var LocationIcon = markers[i].getAttribute("LocationIcon");
	                    var LocationIconXAnchor = parseInt(markers[i].getAttribute("LocationIconXAnchor"));
	                    var LocationIconYAnchor = parseInt(markers[i].getAttribute("LocationIconYAnchor"));
	                    var inRoute = markers[i].getAttribute("InRoute");
	                    var isVisible = markers[i].getAttribute("IsVisible");
	                    if(inRoute != ''){
	                 	   routes = routes + inRoute + "-"; 
	                	}
	                    var icon = new GIcon(getBaseIcon());
	                    icon.image = LocationIcon;
	                    icon.iconAnchor = new GPoint(LocationIconXAnchor, LocationIconYAnchor);
	                    icon.infoWindowAnchor = new GPoint(LocationIconXAnchor, LocationIconYAnchor);
	                    
	                    var marker = generateMarkerObjectFromLatLng(parseFloat(markers[i].getAttribute("lat")),parseFloat(markers[i].getAttribute("lng")),icon);
	                    var LocationGuid = parseInt(markers[i].getAttribute("locationGuid"));
	                    if(isVisible == "true"){
	                    	map.addOverlay(marker, icon);
	                    }
	                }
	            }
	            
	            loadRoutes2(routes, map);
            
            	
            }
        	if(document.getElementById('flashcontent') != null){
				document.getElementById('flashcontent').style.display = "none";
			}
            
            
        });
        
     }
    function loadRoutes2(routes, aMap){
        var urlXML = '/pages/gmap/gmap_functions.asp?function=getRoutes&siteGuid='+siteGuid+'&routes='+routes;
		//alert(urlXML);

        GDownloadUrl(urlXML, function(data, responseCode) {

            var xml = GXml.parse(data);
            for (var n = 0; n < xml.documentElement.childNodes.length; n++) {
            	
                if(xml.documentElement.childNodes[n].nodeType == 1){
                    var markers = xml.documentElement.childNodes[n].getElementsByTagName("marker");
                    
                    var routeMarkers = new Array(markers.length);
                    if (markers.length > 0){
                        for (var i = 0; i < markers.length; i++) {
                            var latLng = new GLatLng(parseFloat(markers[i].getAttribute("lat")),parseFloat(markers[i].getAttribute("lng")));
                            routeMarkers[i] = latLng;
                            addPointToMap(latLng);
                            if(markers[i].getAttribute("visible") == "True"){
                                var LocationIcon = markers[i].getAttribute("LocationIcon");
                                var LocationIconXAnchor = parseInt(markers[i].getAttribute("LocationIconXAnchor"));
                                var LocationIconYAnchor = parseInt(markers[i].getAttribute("LocationIconYAnchor"));
                                
                                var icon = new GIcon(getBaseIcon());
                                icon.image = LocationIcon;
                                icon.iconAnchor = new GPoint(LocationIconXAnchor, LocationIconYAnchor);
                                icon.infoWindowAnchor = new GPoint(LocationIconXAnchor, LocationIconYAnchor);
                                
                                var marker = generateMarkerObjectFromLatLng(latLng.lat(), latLng.lng(), icon);
                                aMap.addOverlay(marker);
                            }
                        }
                        
                        var polyline = new GPolyline(routeMarkers, "#FF0000", 10);
                        aMap.addOverlay(polyline);
                        
                    }
                }
            }
            
            xml = null;
            markers = null;
           
        });
    }

    function loadRoutes(){

        var urlXML = '/pages/gmap/gmap_functions.asp?function=getRoutesFromRelXML&siteGuid='+siteGuid+'&fromSubModuleGuid='+fromSubModuleGuid+'&fromModuleGuid='+fromModuleGuid+'&fromEntityGuid='+fromEntity;

        GDownloadUrl(urlXML, function(data, responseCode) {
            var xml = GXml.parse(data);
            var maps = [xml.documentElement.childNodes.length];
            var no = 0;
            for (var n = 0; n < xml.documentElement.childNodes.length; n++) {
            	
                if(xml.documentElement.childNodes[n].nodeType == 1){
                	//insert map
                	maps[no] = generateMap('mapRoutes'+no);
                	
                    var markers = xml.documentElement.childNodes[n].getElementsByTagName("marker");
                    var routeMarkers = new Array(markers.length);
                    if (markers.length > 0){
                        for (var i = 0; i < markers.length; i++) {
                            var latLng = new GLatLng(parseFloat(markers[i].getAttribute("lat")),parseFloat(markers[i].getAttribute("lng")));
                            routeMarkers[i] = latLng;
                            if(markers[i].getAttribute("visible") == "True"){
                                var LocationIcon = markers[i].getAttribute("LocationIcon");
                                var LocationIconXAnchor = parseInt(markers[i].getAttribute("LocationIconXAnchor"));
                                var LocationIconYAnchor = parseInt(markers[i].getAttribute("LocationIconYAnchor"));
                                
                                var icon = new GIcon(getBaseIcon());
                                icon.image = LocationIcon;
                                icon.iconAnchor = new GPoint(LocationIconXAnchor, LocationIconYAnchor);
                                icon.infoWindowAnchor = new GPoint(LocationIconXAnchor, LocationIconYAnchor);
                                
                                var marker = generateMarkerObjectFromLatLng(latLng.lat(), latLng.lng(), icon);
                                maps[no].addOverlay(marker);
                                
                            }
                        }
                        
                        var polyline = new GPolyline(routeMarkers, "#FF0000", 10);
                        maps[no].addOverlay(polyline);
                        resizeV2(maps[no],routeMarkers);
                    }
                no = no +1;
                }
            }
            xml = null;
            markers = null;
        });
    }
    
    function setMap(map){
        currentMap = map
    }
    
    function getMap(){
        return currentMap;
    }
    
    function getLocations(){
        var urlXML = '/pages/gmap/gmap_functions.asp?function=getPointsFromRelation&siteGuid='+siteGuid+'&fromSubModuleGuid='+fromSubModuleGuid+'&fromModuleGuid='+fromModuleGuid+'&fromEntityGuid='+fromEntity;

        GDownloadUrl(urlXML, function(data, responseCode) {
            //alert(data);
			
			
			
            var xml = GXml.parse(data);
            var markers = xml.documentElement.getElementsByTagName("marker");
            getMap().clearOverlays();
            listOfMarkers = [];
                   
            if (markers.length > 0){
				
                for (var i = 0; i < markers.length; i++) {
                    var LocationIcon = markers[i].getAttribute("LocationIcon");
                    minZoom = markers[i].getAttribute("minZoomLevel");
                    if(LocationIcon == ''){
                    	var icon = getStandardIcon();
                    }else{
	                    var LocationIconXAnchor = parseInt(markers[i].getAttribute("LocationIconXAnchor"));
	                    var LocationIconYAnchor = parseInt(markers[i].getAttribute("LocationIconYAnchor"));
	                    
	                    var icon = new GIcon(getBaseIcon());
	                    icon.image = LocationIcon;
	                    icon.iconAnchor = new GPoint(LocationIconXAnchor, LocationIconYAnchor);
	                    icon.infoWindowAnchor = new GPoint(LocationIconXAnchor, LocationIconYAnchor);
	                }
                    var marker = generateMarkerObjectFromLatLng(parseFloat(markers[i].getAttribute("lat")),parseFloat(markers[i].getAttribute("lng")),icon);
                    var LocationGuid = parseInt(markers[i].getAttribute("locationGuid"));
                    var inRoute = markers[i].getAttribute("InRoute");
	                    //alert("Inroute"+inRoute);
                    getMap().addOverlay(marker, icon);

	
                    listOfMarkers[i] = marker.getPoint();
                }
                resizeV2(getMap(), listOfMarkers);
                if(listOfMarkers.length == 1)
                	highlight(listOfMarkers[0].lat(),listOfMarkers[0].lng(),getMap());
            }
        });
     }
     
     function getLocationsOnMap(mapId, aMap){
       
        var urlXML = '/pages/gmap/gmap_functions.asp?function=getPointsOnMapXML&siteGuid=' + siteGuid+'&mapGuid='+mapId;
        
        GDownloadUrl(urlXML, function(data, responseCode) {
            var xml = GXml.parse(data);
            var markers = xml.documentElement.getElementsByTagName("marker");
            //getMap().clearOverlays();
            //listOfMarkers = new Array();
            if (markers.length > 0){
                for (var i = 0; i < markers.length; i++) {
                    var LocationIcon = markers[i].getAttribute("LocationIcon");
                    var LocationIconXAnchor = parseInt(markers[i].getAttribute("LocationIconXAnchor"));
                    var LocationIconYAnchor = parseInt(markers[i].getAttribute("LocationIconYAnchor"));
                    
                    var icon = new GIcon(getBaseIcon());
                    icon.image = LocationIcon;
                    icon.iconAnchor = new GPoint(LocationIconXAnchor, LocationIconYAnchor);
                    icon.infoWindowAnchor = new GPoint(LocationIconXAnchor, LocationIconYAnchor);
                    
                    var marker = generateMarkerObjectFromLatLng(parseFloat(markers[i].getAttribute("lat")),parseFloat(markers[i].getAttribute("lng")),icon);
                    var LocationGuid = parseInt(markers[i].getAttribute("locationGuid"));
                    aMap.addOverlay(marker, icon);
                    addPointToMap(marker.getPoint());
                }
            }
            resizeV2(aMap,getActiveMapPoints());
        });
        
     }
     
     function getRoutesOnMap(mapId, aMap){
        var urlXML = '/pages/gmap/gmap_functions.asp?function=getRoutesOnMapXML&siteGuid='+siteGuid+'&mapGuid='+mapId;
        GDownloadUrl(urlXML, function(data, responseCode) {

            var xml = GXml.parse(data);
            for (var n = 0; n < xml.documentElement.childNodes.length; n++) {
            	
                if(xml.documentElement.childNodes[n].nodeType == 1){
                    var markers = xml.documentElement.childNodes[n].getElementsByTagName("marker");
                    
                    var routeMarkers = new Array(markers.length);
                    if (markers.length > 0){
                        for (var i = 0; i < markers.length; i++) {
                            var latLng = new GLatLng(parseFloat(markers[i].getAttribute("lat")),parseFloat(markers[i].getAttribute("lng")));
                            routeMarkers[i] = latLng;
                            addPointToMap(latLng);
                            if(markers[i].getAttribute("visible") == "True"){
                                var LocationIcon = markers[i].getAttribute("LocationIcon");
                                var LocationIconXAnchor = parseInt(markers[i].getAttribute("LocationIconXAnchor"));
                                var LocationIconYAnchor = parseInt(markers[i].getAttribute("LocationIconYAnchor"));
                                
                                var icon = new GIcon(getBaseIcon());
                                icon.image = LocationIcon;
                                icon.iconAnchor = new GPoint(LocationIconXAnchor, LocationIconYAnchor);
                                icon.infoWindowAnchor = new GPoint(LocationIconXAnchor, LocationIconYAnchor);
                                
                                var marker = generateMarkerObjectFromLatLng(latLng.lat(), latLng.lng(), icon);
                                aMap.addOverlay(marker);
                            }
                        }
                        
                        var polyline = new GPolyline(routeMarkers, "#FF0000", 10);
                        aMap.addOverlay(polyline);
                        
                    }
                }
            }
            
            xml = null;
            markers = null;
            getLocationsOnMap(mapId,aMap);
        });
     }
     
  	function generateMarkerObjectFromLatLng(lat,lng,anIcon){
    	var point = new GLatLng(lat,lng);
        var marker = new GMarker(point, {draggable: false, icon:anIcon});
        return marker;
 	}
 	
  	function generateMoveableMarkerObjectFromLatLng(lat,lng,anIcon){
    	var point = new GLatLng(lat,lng);
        var marker = new GMarker(point, {draggable: true, icon:anIcon});
        marker.enableDragging();
        marker = fillEventsToMarker(marker);
        return marker;
 	}
    function fillEventsToMarker(marker){
        GEvent.addListener(marker, "dragstart", function() {
          var gll = marker.getPoint();
          oldPoint = gll.toUrlValue();
          getMap().closeInfoWindow();
          });

        GEvent.addListener(marker, "dragend", function() {
          var gll = marker.getPoint();
          var p = gll.toUrlValue();
          var t = p.split(',');
          document.getElementById('lat').value = t[0];
          document.getElementById('lng').value = t[1];
          updateLocation(gll.toUrlValue());
          
          });
        return marker;
     }
     
     function saveFieldsManual(){
     	var lat = document.getElementById('lat').value;
   		var lng = document.getElementById('lng').value;
		var point = new GLatLng(parseFloat(lat),parseFloat(lng));
     	updateLocation(point.toUrlValue());
     	var p = point.toUrlValue();
     	var t = p.split(',');
     	getMap().clearOverlays();
     	var m = generateMoveableMarkerObjectFromLatLng(parseFloat(t[0]),parseFloat(t[1]),getStandardIcon());	
     	getMap().addOverlay(m),
     	getMap().setCenter(point.toUrlValue(), getMap().getZoom());
     }
     
     function updateLocation(point){
        var pars = '&newPoint=' + point + '&oldPoint=' + oldPoint;
     	sendAsync("updatePointLatLong", '', pars);
     	oldPoint = point;
     } 
     
     function insertPoint(point){
        var pars = '&point=' + point;
        pars = pars + '&fromModuleGuid='+fromModuleGuid;
        pars = pars + '&fromSubModuleGuid='+fromSubModuleGuid;
        pars = pars + '&fromEntityGuid='+fromEntityGuid;
        pars = pars + '&currentPladsName='+escape(currentPladsName);
        sendAsync("insertPoint", '', pars);
     }
      
     function sendAsync(func, updateFieldId, additionalPars){
	    var url = '/pages/gmap/gmap_functions.asp'
        var pars="";
        pars = pars + '?siteGuid='+siteGuid;
        pars = pars + '&function='+func;
        pars = pars + additionalPars;
        url = url + pars;
        var myAjax = new Ajax.Updater( updateFieldId, url, { 
            method: 'post'
        });
     }
     
     function getBaseIcon(){
        var baseIcon = new GIcon();
        baseIcon.iconSize = new GSize(24, 24);
        return baseIcon
     }
     
     function getStandardIcon(){
     	var icon = new GIcon(getBaseIcon());
        icon.image = standardIcon;
        icon.iconAnchor = new GPoint(7,17);
        icon.infoWindowAnchor = new GPoint(7,17);
     	return icon;
     }
     
     function resizeV2(map, points) {
	 
	 //if(points.length > 1){
//			alert(points.length);
	        var bounds = new GBounds(points);
	
	        var sw = new GLatLng(bounds.maxY, bounds.minX);
	        var ne = new GLatLng(bounds.minY, bounds.maxX);
	
	        var latLngBounds = new GLatLngBounds(sw, ne);
	
	        var center = latLngBounds.getCenter();
	        
			
			var zoom = map.getBoundsZoomLevel(latLngBounds);
			
			if( _Zoomlevel != -1 )
				zoom = _Zoomlevel;
			//alert(zoom);
			if(zoom >= 16)
				zoom = 16;
			//alert(zoom);
	        map.setCenter(center, zoom);

		//}
    }
    
     function highlight(lat,lng,aMap){
        isHighlight= true;
        var urlXML = '/pages/gmap/gmap_functions.asp?function=getHighlightInfo&siteGuid='+siteGuid+'&lat='+lat+'&lng='+lng+'&fromModuleGuid='+fromModuleGuid+'&fromSubModuleGuid='+fromSubModuleGuid+'&fromEntityGuid='+fromEntity;
        //alert (urlXML);
        GDownloadUrl(urlXML, function(data, responseCode) {
            aMap.closeInfoWindow();
            var point = new GLatLng(lat,lng);
            aMap.openInfoWindowHtml(point,data);
            
            GEvent.addListener(aMap.getInfoWindow(), "closeclick", function() {
              closeInfoWindow = true;
            });
           
        });
     }