﻿var gdir;
var codeMistake = 0;
var isFirstSearchGeo = true;

function createMarker(point, html, icon, id, name) {
    if (!icon)
        icon = blueIcon;

    markerOptions = { icon: icon, title: name };
    var marker = new GMarker(point, markerOptions);

    GEvent.addListener(marker, "click", function() {
        marker.openExtInfoWindow(
              map,
              "simple_example_window",
              "<div style='width: 330px; text-align:left; heigth: 250; padding-left: 10px; background-color: #FFFFFF; float:left'>" +
                "<div style='width:300px; height:15px; font-weight: bold;'>" + homeList[0].id + " - " + homeList[0].name + "</div>" +
                "<div style='width:300px; height:15px'>" +
                    "<div style='float:left;'>" + startAddr + ": </div>" +
                    "<div style:'color:#939393; float:left; margin-left:2px;'> ( ex: vestergade 10, 5000 Odense)</div>" +
                "</div>" +
                "<input type='text' name='address' id='address' value='' style='width:320px; float:clear;'/>" +
                "<div style='width:157px; height:17px; float:left; margin-top:5px; cursor:pointer;' onclick='viewWay();'>" +
                    "<img src='" + viewRuteImg + "'/>" +
                "</div>" +
                "<div style='width:157px; height:19px; cursor:pointer; float:left; margin: 4px 0px 0px 5px;' onclick='drivingDirShow();'>" +
                    "<img src='" + drivingDirectionImg + "'/>" +
                "</div>" +
              "</div>"
            );

        if (codeMistake == 0 && $("img.gmnoprint")[1] != null) {
            var curTop = Number($("img.gmnoprint")[1].style.top.split("px")[0]) - 50;
        }
        $("#simple_example_window_close").css("top", "10px");
        $("#simple_example_window_close").css("left", "330px");
        $("#simple_example_window").css("left", "100px");
        $("#simple_example_window").css("float", "left");
        $("#simple_example_window_t").css("width", "320px");
        $("#simple_example_window_b").css("width", "320px");
        $("#simple_example_window_br").css("left", "336px");
        $("#simple_example_window_r").css("left", "351px");
        $("#simple_example_window_tr").css("left", "336px");
        $("#simple_example_window_contents").css("width", "350px");
    });
    return marker;
}


function openDirectionsInfo() {
    gdir.clear();
    initializeGeo(true);
    map.setCenter(homeList[0].gPoint, 15);
    GEvent.trigger(homeList[0].marker, "click");
}

function drivingDirShow() {
    try { pageTracker._trackPageview("/tracking/husdetalje/korselvejledning"); }
    catch (e) { }

    var inputAddress = "";
    var lat = "";
    var lng = "";

    if ($("#address").val() != undefined && $("#address").val() != "")
        inputAddress = $("#address").val();

    if (homeList[0].lat != undefined && homeList[0].lat.toString() != "")
        lat = homeList[0].lat.toString();
    if (homeList[0].lng != undefined && homeList[0].lng.toString() != "")
        lng = homeList[0].lng.toString();

    window.open("http://maps.google." + domain1 + "/?saddr=" + inputAddress + "&daddr=" + lat + " " + lng);
}


function viewWay() {
    try { pageTracker._trackPageview("/tracking/husdetalje/se_rute"); }
    catch (e) { }

    if ($("#address").val() == "")
        alert(inputAlert);
    else {
        var geocoder = new GClientGeocoder();
        var address = $("#address").val();
        map.closeExtInfoWindow();
        geocoder.getLatLng(address, function(latlng) {
            if (!latlng) {
                alert(address + foundAlert);
            }
            else {
                map.clearOverlays();
                setDirections("" + latlng.lat() + "," + latlng.lng(), "" + homeList[0].lat + "," + homeList[0].lng);
                setBackToMapParams(true);
            }
        });
    }
}


function setDirections(fromAddress, toAddress) {
    gdir.load("from: " + fromAddress + " to: " + toAddress);
}


function handleErrors() {
    if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS) {
        codeMistake = gdir.getStatus().code;
        alert(unknAddress + gdir.getStatus().code);
        openDirectionsInfo();
    }
    else if (gdir.getStatus().code == G_GEO_SERVER_ERROR) {
        codeMistake = gdir.getStatus().code;
        alert(geoServErr + gdir.getStatus().code);
        openDirectionsInfo();
    }
    else if (gdir.getStatus().code == G_GEO_MISSING_QUERY) {
        codeMistake = gdir.getStatus().code;
        alert(missQuery + gdir.getStatus().code);
        openDirectionsInfo();
    }
    else if (gdir.getStatus().code == G_GEO_BAD_KEY) {
        codeMistake = gdir.getStatus().code;
        alert(badKey + gdir.getStatus().code);
        openDirectionsInfo();
    }
    else if (gdir.getStatus().code == G_GEO_BAD_REQUEST) {
        codeMistake = gdir.getStatus().code;
        alert(badRequest + gdir.getStatus().code);
        openDirectionsInfo();
    }
    else if (gdir.getStatus().code == G_GEO_UNKNOWN_DIRECTIONS) {
        codeMistake = gdir.getStatus().code;
        alert(unknDirections + gdir.getStatus().code);
        openDirectionsInfo();
    }
    else {
        codeMistake = 1;
        alert(unknownErr);
        openDirectionsInfo();
    }

}

function openMapDialog() {
    $("#google_map").css("display", "block");
    $("#google_map").css("padding", "0px");
    $("#google_map").css("visibility", "visible");
    $("#google_map").dialog("open");
    $(".ui-dialog-titlebar").empty();
    $(".ui-dialog-titlebar").css("height", "15px");
    $(".ui-dialog-titlebar").append("<div id='backToMapId' onclick='' style='width:60px; color:Black; margin-right: 2px; float:left; '></div>");
    $(".ui-dialog-titlebar").append("<div onclick='closeMap();' style='float:right; margin-top: 2px; cursor:pointer;'><img src='/images/icon_close.gif' width='11' height='11' /></div>");
    $(".ui-dialog-titlebar").append("<div onclick='closeMap();' style='width: 60px; color:Black; margin-right: 10px; float:right; cursor:pointer; text-align:right;'>" + closeTxt + "</div>");
    $("#google_map").css("width", "600px");
}

function enlargeMap() {
    try { pageTracker._trackPageview("/tracking/husdetalje/kort"); }
    catch (e) { }
    map.setCenter(homeList[0].gPoint, 15);
    openMapDialog();
    $(".ui-dialog-overlay").unbind();
    $(".ui-dialog-overlay").click(function() { $("#google_map").dialog("close"); });
}

function setBackToMapParams(b) {
    if (b) {
        $("#backToMapId").css("cursor", "pointer");
        $("#backToMapId").unbind();
        $("#backToMapId").click(backToMap);
        $("#backToMapId").text("‹‹ " + back);
    }
    else {
        $("#backToMapId").css("cursor", "default");
        $("#backToMapId").unbind();
        $("#backToMapId").text("");
    }
}

function closeMap() {
    $('#google_map').dialog('close');
    $("div[@dir=ltr] span").css("display", "none");
}

function backToMap() {
    gdir.clear();
    initializeGeo(true);
    map.setCenter(homeList[0].gPoint, 15);
    setBackToMapParams(false);
    $("div[@dir=ltr] span").css("display", "none");
}

function onZoomMapEnd() {
    map.closeExtInfoWindow();
}

function onLoadDialog() {

    $("#enlargeMap").text(enlargeMapVar);
    $("#drivingDirections").text(drivingDirections);

    $("#google_map").dialog({
        autoOpen: false,
        height: 600,
        width: 600,
        modal: true,
        close: backToMap,
        overlay: {
            opacity: 0.5,
            background: "black"
        }
    });
}

function onLoadSearchDetail() {
    if (homeList.length != 0) {
        var home = homeList[0];
        if ((home.lat == 0 || home.lng == 0) || (abs(home.lat) > 85) || (abs(home.lng) > 180) && isFirstSearchGeo) {
            getGeoFromAddress(home, false)
            return false;
        }
        onLoadMapMini();
    }
}

function onLoadMapMini() {
    if (document.getElementById("google_map") != null) {
        $("#googleMapMini").css("display", "block");
        $("#google_map").css("display", "block");
        initializeMap();
        map.savePosition();

        map.setCenter(homeList[0].gPoint, 15);
        map.addControl(new GMapTypeControl());
        gdir = new GDirections(map);
        GEvent.addListener(gdir, "error", handleErrors);
        $("#google_map").css("display", "none");
        $("#google_map").css("visibility", "hidden");
        onLoadDialog();
        GEvent.addListener(map, "zoomend", onZoomMapEnd);
    }
    else {
        $("#googleMapMini").css("display", "none");
    }
}