﻿
var g_mapId = 'map';
var g_locations = new Object();
var g_markers = new Object();
var g_movableMarkerIds = new Object();
var g_map;
var g_zoom = -1;
var g_bounds;
var g_editMarker = 0;
var g_editMode = '';
var g_editMarkerHiddenFieldId = '';


function LocationMarker(id,longitude,latitude,isMovable){
    this.id = id;
    this.longitude = longitude;
    this.latitude = latitude;
    this.isMovable = isMovable;
}

function registerMapBoundsField(hiddenFieldId){
    g_editMapBoundsFieldId = hiddenFieldId;
    
    GEvent.addListener(g_map, "moveend", function() {
        document.getElementById(g_editMapBoundsFieldId).value = g_map.getBounds();
        
    });
}

function addLocation(id,longitude,latitude,isMovable){

    var point = new GLatLng(latitude, longitude);
    g_locations[id] = point;
    
    var marker;
    if(isMovable){
        if(!g_editMarkerHiddenFieldId){
            alert('No field registered for edit-mode');
            return;
        }
        marker = new GMarker(point, {draggable: true});
        document.getElementById(g_editMarkerHiddenFieldId).value = marker.getLatLng();
        GEvent.addListener(marker, "dragend", function() {
           
           document.getElementById(g_editMarkerHiddenFieldId).value = marker.getLatLng();
           
            }
        );
        g_markers[id] = marker;
    } else {
        marker = new GMarker(point);
        g_markers[id] = marker;
    }    


    return marker;
}

function addMarker(markerId, longitude, latitude,isMovable,markerTitle,baloonHtml){
    
    
    var point = new GLatLng(latitude, longitude);
    g_locations[markerId] = point;
    
    var marker;
    if(isMovable){
        if(!g_editMarkerHiddenFieldId){
            alert('No field registered for edit-mode');
            return;
        }
        marker = new GMarker(point, {draggable: true});
        document.getElementById(g_editMarkerHiddenFieldId).value = marker.getLatLng();
        GEvent.addListener(marker, "dragend", function() {
           document.getElementById(g_editMarkerHiddenFieldId).value = marker.getLatLng();
            }
        );
        g_markers[markerId] = marker;
    } else {
    
        marker = new GMarker(point,{title: markerTitle});
        g_markers[markerId] = marker;
    } 
    
    if(baloonHtml){
        marker.bindInfoWindowHtml(baloonHtml);
    }
}


function initMap()
{


    //alert('initMap');
   g_map = new GMap2(document.getElementById(g_mapId));
   g_map.setCenter(new GLatLng(0,0),0);
   var bounds = new GLatLngBounds();	
   
   for ( keyVar in g_markers ) {
        //alert(g_locations[keyVar]);
        var marker = g_markers[keyVar];
        
        bounds.extend(marker.getPoint());
        //map.setCenter(point, 13);
        g_map.addOverlay(marker);
    }
   
    if(g_bounds){
        bounds = g_bounds;
        
        g_map.setCenter(bounds.getCenter(),g_map.getBoundsZoomLevel(bounds));
        
    } else{
        g_map.setCenter(bounds.getCenter(),g_map.getBoundsZoomLevel(bounds)-1);
    }
    
    g_map.addControl(new GSmallMapControl());
    g_map.addControl(new GMapTypeControl());
    
    if(g_zoom > 0){
        g_map.setZoom(g_zoom);
    }
}
   
function showLocationInfo(id,htmlContent)
{
     var marker = g_markers[id];
     marker.openInfoWindowHtml('<div class="bread"><b>'+htmlContent+'</b></div>');
}

function hideLocationInfo(id)
{
     var marker = g_markers[id];
     marker.closeInfoWindow();
}

function setZoom(level){
    g_zoom = level;
}

function setBounds(bounds){
    g_bounds = bounds;
}

function getMarkerIcon(){
    var icon = new GIcon();
    icon.image = "/images/red_pushpin.gif";
    icon.iconSize = new GSize(24, 30);
    icon.iconAnchor = new GPoint(6, 20);
    return icon;
}


function initAddMarkerPosition(hiddenFieldId){
    g_editMarkerHiddenFieldId = hiddenFieldId;
}

function registerMarkerPositionsField(id){
    g_editMarkerHiddenFieldId = id;
}

function toggle(elementid) {
    var element = document.getElementById(elementid);
    if (element) {
        if (element.style.visibility == 'visible') {
            element.style.visibility = 'hidden';
            element.style.display = 'none';
        } else {
            element.style.visibility = 'visible';
            element.style.display = 'block';
        }
    }
}