var ICONS = [];
var map = null;
var mgr = null;
var oldCenter;
var oldRadius;
var oldPoly;
function loadMap(latitud, longitud, zoomLevel, showeventsActivated, showStandardTools, showOverviewMap, showMapType,
    showZoomTool, mapThemeType, mapName, page) 
{
    if (GBrowserIsCompatible()) 
    {
        map = new GMap2(page.getElementById("large-google-map" + mapName));
        map.setCenter(new GLatLng(latitud, longitud), zoomLevel);
        if(showeventsActivated) GEvent.addListener(map, 'click', mapClick);
        if(showStandardTools) map.addControl(new GSmallMapControl());
        if(showOverviewMap) map.addControl(new GOverviewMapControl());
        if(showMapType) map.addControl(new GMapTypeControl());
        if(showZoomTool) createZoomTools(map);
        map.setMapType(mapThemeType);
        addMarkers(map);     
        map.checkResize();
        window.setTimeout(function() {  map.panTo(new GLatLng(latitud, longitud));}, 1000);
        //drawCircle(new GLatLng(latitud, longitud), .015);
    }
}
function createZoomTools(map)
{
    map.addControl(new GZoomControl({nOpacity:.2,sBorder:"2px solid red"},
    {sButtonHTML:"<img src='/SiteCollectionImages/zoom.gif' />",
    sButtonZoomingHTML:"<img src='/SiteCollectionImages/zoom.gif' />",
    oButtonStartingStyle:{width:'24px',height:'24px'}},
    {buttonClick:function(){display("Zoom rekangel aktiveret")},
    dragStart:function(){display("Første hjørne sat . . .")},
    dragging:function(x1,y1,x2,y2){display('Næste hjørne x='+x2+',y='+y2)},
    dragEnd:function(nw,ne,se,sw,nwpx,nepx,sepx,swpx){display('Zoomer NE='+ne+';SW='+sw)}}))
    bStickyZoom=false;
}

function createMarker(latit,longit,textStr,addrStr,telfStr,mailStr,URLStr,smallStr,linkURL,iconImg,shadowIcon) 
{
    var point = new GLatLng(latit,longit);
    //var marker = new GMarker(point,options);
    var marker;
    if(iconImg != "")
    {
        var icon = new GIcon(G_DEFAULT_ICON);
        icon.image = iconImg;  
        var icSize = new GSize(17,17);
        icon.iconSize = icSize; 
        if(shadowIcon != "")
        {
            icon.shadow = shadowIcon;
            var shadowSize = new GSize(22,18);
            icon.shadowSize = shadowSize;
        }
        icon.iconAnchor = new GPoint(11, 16); 
        marker = new GMarker(point,icon);
    }
    else
    {
        var options = { title: smallStr,draggable: false,bouncy: false};
        marker = new GMarker(point,options);
    }
    if(linkURL == "")
    {
        GEvent.addListener(marker, 'click', function() {
        marker.openInfoWindowHtml("<div class=infodescription><table><tr><td>" +
        textStr + "<br>" +
        addrStr + "<br>" +
        telfStr + "<br>" +
        "<a href='mailto:" + mailStr + "'>" + mailStr + "</a>" + "<br>" +
        "<a target='_blank' href='http://" + URLStr + "'>" + URLStr + "</a>" + 
        "</td></tr></table></div>");
    });  
    }
    else
    {
        GEvent.addListener(marker, 'click', function() {
        marker.openInfoWindowHtml("<div class=infodescription><table><tr><td><a target='_blank' href='" + linkURL + "'>" + 
        textStr + "</a>" + "<br>" + 
        addrStr + "<br>" + 
        telfStr + "<br>" +
        "<a href='mailto:" + mailStr + "'>" + mailStr + "</a>" + "<br>" + 
        "<a target='_blank' href='http://" + URLStr + "'>" + URLStr + "</a>" + 
        "</td></tr></table></div>");
    });  
    }
    return marker;
}
function display(message)
{
    $id("display-div").innerHTML=message;
}
function mapClick(marker, clickedPoint) 
{
    var mapNormalProj = G_NORMAL_MAP.getProjection();
    var mapZoom = map.getZoom();

    var clickedPixel = mapNormalProj.fromLatLngToPixel(clickedPoint, mapZoom);
    var polyPixel = new GPoint(clickedPixel.x,clickedPixel.y);
    var polyPoint = mapNormalProj.fromPixelToLatLng(polyPixel,mapZoom);
    map.removeOverlay(lastMarker);
    map.addOverlay(lastMarker = new GMarker(polyPoint));
    //map.addOverlay(createMarker(polyPoint.x,polyPoint.y,"New","","","","");
    //document.forms[0].marks.value+='<marker lat="'+polyPoint.x+'" lng="'+polyPoint.y+'" info="" />';
    //document.forms[0].markers.value='<markers>'+document.forms[0].marks.value+'</markers>';
    //display('Lat:'+polyPoint.x+' Long:'+polyPoint.y);
    var inputLatitude = document.getElementById(latitudeUniqueID);
    inputLatitude.value = String(polyPoint.y).replace(".",",");
    var inputLongitude = document.getElementById(longitudeUniqueID);
    inputLongitude.value = String(polyPoint.x).replace(".",",");
}

function drawCircle(center, cColor,radius){
    var circleQuality = 5;
    var points = [];
    oldCenter = center;
    oldRadius = radius;
    var M = Math.PI / 180;
    var L = map.getBounds();
    var circleSquish = 1;
    circleSquish = (L.minX - L.maxX) / (L.minY - L.maxY);	
    for(var i=0; i<=360; i+=circleQuality)
    {
        var P = new GPoint(center.x + (radius * Math.cos(i * M)) * circleSquish, center.y + (radius * Math.sin(i * M)));
        points.push(P);
    }
    oldPoly = new GPolyline(points,cColor);
    map.addOverlay(oldPoly);
}

function makeDoubleDelegate(function1, function2) 
{
    return function() 
    {
        if (function1)
            function1();
        if (function2)
            function2();
    }
}