// Hinweis:
//  Sollten sich hier Funktionen ändern, müssen die Aufrufe an den entsprechenden Seiten/Script Dateien angepasst werden.
//  Alle Variablen für die Karten sind auf den jeweiligen Seiten deklariert, da sonst Probleme beim aufrufen der
//  Seiten Funktionen mit dort genutzten Karten Variablen entstehen.
//  Anpassungen der Aufrufe müssen sowohl auf den Seiten sowie im GeoFeedHelper gemacht werden, der die JS Strings
//  erstellt und zurück gibt.
//  Die Add* Funktionen rufen die Add*CommonShape Funktionen auf. Diese unterscheidet sich je nach Seite und Parametern.
//  Deshalb liegt die Definition in den unterschiedlichen Script Dateien unter /DeDeMap.
//  Aktuelle Seiten mit Karten: Map.aspx, EventControlSettings.aspx, LiveTicket.aspx, LiveTracking.aspx, LocationEdit.aspx, SublocationEdit.aspx, CustomerEdit.aspx
//
//  Die Objekte map, layer, customerlayer, lastlayer, lastcustomerlayer und useXML müssen auf der Seite definiert werden
//  Ebenfalls müssen diese auch auf der Seite initalisiert werden(GetMap Funktion benötigt).
//  Seitenabhängige Add* Funktionen sollten auf der Seite bleiben.

function hideMap(hidden) {
    if (hidden == true) {
        document.getElementById('myMap').style.display = 'none';
        hideControls();
    }
    else {
        document.getElementById('myMap').style.display = 'block';
        restoreControls();
    }
}

function SetStartPosition() {
    var latitude = 51.7023316666667;
    var longitude = 9.98836666666667;

    SetNewPosition(latitude, longitude);
    zoomOnGEO(latitude, longitude);
}

function addShim(el) {
    var shim = document.createElement("iframe");
    shim.id = "myShim";
    shim.frameBorder = "0";
    shim.style.position = "absolute";
    shim.style.zIndex = "1";
    shim.style.top = el.offsetTop;
    shim.style.left = el.offsetLeft;
    shim.width = el.offsetWidth;
    shim.height = el.offsetHeight;
    el.shimElement = shim;
    el.parentNode.insertBefore(shim, el);
}


function distance(lat1, lon1, lat2, lon2) {
    var factor = Math.PI / 180;
    var dLat = (lat2 - lat1) * factor;
    var dLon = (lon2 - lon1) * factor;
    var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(lat1 * factor) * Math.cos(lat2 * factor) * Math.sin(dLon / 2) * Math.sin(dLon / 2);
    var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
    var d = earthRadius * c;

    return d;
}

function createControl(x, y, width, id, inhtml) {
    var control = document.createElement("div");
    control.id = id;
    control.style.width = width + "px"
    control.style.top = y + "px";
    control.style.left = x + "px";
    control.style.border = "1px solid white";
    control.style.background = "#72B0E1";
    control.style.filter = "Alpha(opacity=80)";
    control.style.cursor = "pointer";
    control.innerHTML = "<span class='veControl'><center>" + inhtml + "</center></span>";

    return control;
}

function createButtonControl(x, y, width, id, inhtml) {
    var control = document.createElement("input");
    control.id = id;
    control.style.width = width + "px"
    control.style.top = y + "px";
    control.style.left = x + "px";
    control.style.border = "1px solid white";
    control.style.background = "#72B0E1";
    control.style.filter = "Alpha(opacity=80)";
    control.style.cursor = "pointer";
    control.style.color = "#FFFFFF";
    control.type = "button";
    control.value = inhtml;

    return control;
}

function setScrolling(bodyID, overMap)
{
    var body = document.getElementById(bodyID);
	
	if(body != null)
	{
		if(overMap == true)
		    body.style.overflowY = "hidden";
		else
		    body.style.overflowY = "auto";
	}
}

function delLastLayer() {
    if (map == null)
        return;
		
    if (lastlayer != null) {
		DeleteLayer(lastlayer);
        lastlayer = null;
    }
}

function delLastStaticLayer() {
    if (map == null)
        return;
    if (lastcustomerlayer != null) {
		DeleteLayer(lastcustomerlayer);
        lastcustomerlayer = null;
    }
}

