﻿// JScript File
var geocoder;
var myMark;
var map;
var masterPagePrefix = "ctl00_MainContentPlaceHolder_";
var bounds;
var ikontype = 1; // UMV ikoner
var uddannelsesOmraadeID = 1;
var showZoom = false;

function loadPlaceringKort() {

    if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map"));

        var latitude = parseFloat(document.getElementById(masterPagePrefix + 'Latitude').value);
        var longitude = parseFloat(document.getElementById(masterPagePrefix + 'Longitude').value);

        if (latitude != "" && longitude != "") {
            point = new GLatLng(latitude, longitude);
            map.setCenter(point, 15);
            marker = new GMarker(point, { draggable: false });
            map.addOverlay(marker);
            map.disableDoubleClickZoom();
            map.disableDragging();
            map.savePosition();
        }
    }
}

function updateFields() {
    if (myMark != null) {
 
        document.getElementById(masterPagePrefix + 'coordinates').value = myMark.getLatLng();
        document.getElementById(masterPagePrefix + 'coordinatesLabel').innerText = myMark.getLatLng();
    }
}

function showAddress() {
    address = document.getElementById(masterPagePrefix + 'InstitutionsAdresse').value;
    address += ", denmark";

    if (geocoder) {
        geocoder.getLatLng(address, function(point) {
            if (!point) {
                alert(address + " ikke fundet");
            }
            else {
                map.setCenter(point, 15);

                if (myMark != null)
                    map.removeOverlay(myMark);

                myMark = new GMarker(point, { draggable: true });
                GEvent.addListener(myMark, "dragend", updateFields);

                updateFields();
                map.addOverlay(myMark);
            }
        }
        );
    }
}

function loadSetupForSkoler() {

    if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map"));
        geocoder = new GClientGeocoder();
        
        map.setCenter(new GLatLng(56.275, 10.569), 7);
        map.enableScrollWheelZoom();
        map.enableContinuousZoom();

        var ov_map = new GOverviewMapControl(new GSize(100, 100));
        map.addControl(new GLargeMapControl());
        map.addControl(new GScaleControl());
        map.addControl(ov_map);

        

        GEvent.addListener(map, "click", function(marker, point) {

            if (marker != null) {
                return;
            }


            if (document.getElementById(masterPagePrefix + 'coordinates').value != '') {
                return;
            }

            document.getElementById(masterPagePrefix + 'coordinates').value = point;
            document.getElementById(masterPagePrefix + 'coordinatesLabel').innerText = point;
            myMark = new GMarker(point, { draggable: true });
            GEvent.addListener(myMark, "dragend", updateFields);
            
            map.addOverlay(myMark);

        });




        if (document.getElementById(masterPagePrefix + 'coordinates').value != '') {
            
            var icon = new GIcon();
            icon.image = "Images/bullet_blue.png";
            icon.iconSize = new GSize(12, 20);
            icon.shadowSize = new GSize(22, 20);
            icon.iconAnchor = new GPoint(6, 20);
            icon.infoWindowAnchor = new GPoint(5, 1);

            var latitude = document.getElementById(masterPagePrefix + 'Latitude').value;
            var longitude = document.getElementById(masterPagePrefix + 'Longitude').value;

            var p = new GLatLng(latitude, longitude);
            myMark = new GMarker(p, { draggable: true });
            GEvent.addListener(myMark, "dragend", updateFields);
            map.addOverlay(myMark);
        }
    }
}

function reloadPage() {
    map.removeOverlay(myMark);

    document.getElementById(masterPagePrefix + 'coordinates').value = '';
    document.getElementById(masterPagePrefix + 'coordinatesLabel').innerText = '';
    document.getElementById(masterPagePrefix + 'latitude').value = '';
    document.getElementById(masterPagePrefix + 'longitude').value = '';

    return false;
}

var qsParm = new Array();
function qs() {
    var query = window.location.search.substring(1);
    var parms = query.split('&');

    for (var i = 0; i < parms.length; i++) {
        var pos = parms[i].indexOf('=');
        if (pos > 0) {
            var key = parms[i].substring(0, pos);
            var val = parms[i].substring(pos + 1);
            qsParm[key] = val;

        }
    }
}

function loadDanmarkskort() {
    qsParm['center'] = null;
    qsParm['zoomlevel'] = null;
    qs();


    center = qsParm['center'];
    if (center != null) {
        center = center.substring(1, center.length - 1);
        zoom = qsParm['zoomlevel'];

    }



    if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map"));
        
        
        var ov_map = new GOverviewMapControl(new GSize(100, 100));
        if (center == null)
            map.setCenter(new GLatLng(56.275, 10.569), 7);
        else
            map.setCenter(new GLatLng(center.split(',')[0], center.split(',')[1]), 9);
        map.savePosition();
        map.disableDoubleClickZoom();
        //map.enableScrollWheelZoom();
        map.enableContinuousZoom();
        map.addControl(new GLargeMapControl());
        map.addControl(new GScaleControl());

        map.addControl(ov_map);
        
    }

    GEvent.addListener(map, "click", function(marker, point) {
        if (!marker) map.closeInfoWindow();
    });

    GEvent.addListener(map, "moveend", function() {
        // Hvis kortets centrum flyttes ud over dk's umiddelbare grænser, så skal der returneres til udgangspunktet
        //map.returnToSavedPosition();

        // Hvis zoom-level er 9 eller derover hentes der institutioner til det pågældende område
        // Dette gøres hver gang kortet flyttes.

        OpdaterKort();

    });

    OpdaterKort();
}

function OpdaterKort() {


    uddannelsesOmraadeID = document.getElementById('ctl00_MainContentPlaceHolder_UddannelsesomraadeDropDownList').value;

    if (uddannelsesOmraadeID == "3") {
        if (document.getElementById('antimobbe') != null)
            document.getElementById('antimobbe').style.display = 'none';

        ikontype = 1;

    }
    else {
        if ( document.getElementById('antimobbe') != null)
            document.getElementById('antimobbe').style.display = 'inline';
    }

    if (map.getZoom() >= 9) {
        HentInstitutioner();
    }
    else {
        HentInstitutionerTilKommuner();
    }
}

function HentInstitutioner() {

    var commandString = uddannelsesOmraadeID;

    commandString += ";" + map.getBounds();
    commandString += ";" + ikontype;

    //alert(commandString);
    //alert(commandString);
    Dcum.KortNS.Kort.HentInstitutionerTilUddannelsesomraade(commandString, PlacerPaaKort, MyError);
    //alert("Hov");
}

function HentInstitutionerTilKommuner() {
    Dcum.KortNS.Kort.HentInstitutionerTilUddannelsesomraadeKommuneNiveau(uddannelsesOmraadeID, ikontype, PlacerPaaKort, MyError);
}




// A function to create the marker and set up the event window
// Dont try to unroll this function. It has to be here for the function closure
// Each instance of the function preserves the contends of a different instance
// of the "marker" and "html" variables which will be needed later when the event triggers.    


// ikontyper 1 = umvlille, 2 = antimobbelille, 
function createMarker(point, html) {

    var icon = new GIcon();
    icon.iconSize = new GSize(20, 34);
    icon.iconAnchor = new GPoint(6, 20);
    var marker = new GMarker(point, icon);

    if (!showZoom) {
        if (ikontype == 1) {
            icon.image = "Images/marker_umv.png";
            icon.shadowSize = new GSize(22, 20);
            icon.shadow = "http://www.google.com/mapfiles/shadow50.png";

        }
        else if (ikontype == 2) {
            icon.image = "Images/marker_antimob.png";
            icon.shadowSize = new GSize(22, 20);
            icon.shadow = "http://www.google.com/mapfiles/shadow50.png";
        }
    }
    else {
        icon.image = "Images/Zoom_stor_pwk.png";
        icon.shadow = "http://www.google.com/mapfiles/shadow50.png";
        icon.iconSize = new GSize(26, 26);
        icon.shadowSize = new GSize(22, 20);
        icon.iconAnchor = new GPoint(13, 13);
    }


    icon.infoWindowAnchor = new GPoint(5, 1);

    if (!showZoom) {
        GEvent.addListener(marker, "click", function() {
            marker.openInfoWindowHtml(html);
        });
    } else {
    GEvent.addListener(marker, "click", function() {
        
        point = marker.getLatLng();
        moveto = new GLatLng(parseFloat(point.lat()), parseFloat(point.lng()));
        
        map.clearOverlays();
        map.setCenter(moveto, 9);
    });
    }
    return marker;
}

function PlacerPaaKort(result) {

    // SEN: showZoom angiver om kortet skal vise kommune-niveau-zoom-knapper i stedet for institutioner...
    // Ved at bruge en bool, slipper vi for at ændre på ikontypen, så vi bevarer valget af UMV / Antimobbe 
    // på tværs af zoom ind og zoom ud
    showZoom = map.getZoom() < 9;
    map.clearOverlays();

    
    for (i = 0; i < result.length; i++) {

        institution = result[i];

        if (institution.Latitude != "") {
            p = new GLatLng(institution.Latitude, institution.Longitude);
            var s = institution.Navn + "<br />" + "<a href='http://" + institution.InternetAdresse + "' target='_blank'>" + institution.InternetAdresse + "</a>";
            s += "<br />";
            s += "<br />";
            if (institution.TilmeldtTermometeret)
                s += "&nbsp;<img src='Images/UMVLogoLille.gif' align='absmiddle'>";
            if (institution.TilmeldtRegistreringssystem)
                s += "&nbsp;<img src='Images/AntimobbeLogoLille.gif' align='absmiddle'>";

            var mark = createMarker(p, s);
            map.addOverlay(mark);
      
        }
    }
    
    return false;
}

function loadMiniDanmarkskort() {
    if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map"));
        map.setCenter(new GLatLng(56.275, 11.200), 6);
        map.savePosition();
        map.disableDoubleClickZoom();
        map.disableDragging();


    }
    GEvent.addListener(map, "click", function(marker, point) {
        if (marker != null)
            point = marker.getPoint();

        myLat = point.lat();
        myLon = point.lng();

        centerPoint = "(" + myLat + "," + myLon + ")";

        document.location.href = "Danmarkskortet.aspx?center=" + centerPoint + "&zoomlevel=9";
    });

}

function MyError(result) {
    alert("Fejl: " + result);
}

       
