var map;
var butik;
var points = [];
var søgtimer;

function toggleform() {
    if (document.getElementById("tilføj").style.display == 'none') {
        document.getElementById("tilføj").style.display = "block";
        document.getElementById("tilføjknap").innerHTML = "Skjul";
    }
    else {
        document.getElementById("tilføj").style.display = "none";
        document.getElementById("tilføjknap").innerHTML = "Tilføj forretning";
    }
}

function setup() {
    if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map"));

        /*
           Horrible, soul-stealing, baby-eating browser-detection to get the width
           and height in various different ways.
        */
        if( typeof( window.innerWidth ) == 'number' ) {
            //Non-IE
            w = window.innerWidth;
            h = window.innerHeight;
        }
        else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
            //IE 6+ in 'standards compliant mode'
            w = document.documentElement.clientWidth;
            h = document.documentElement.clientHeight;
        }
        else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
            //IE 4 compatible
            w = document.body.clientWidth;
            h = document.body.clientHeight;
        }

        // Find a reasonable zoom level
        zoom = 5;
        if (w > 750 && h > 400)
            zoom = 6;
        if (w > 950 && h > 500)
            zoom = 7;
        if (w > 1200 && h > 650)
            zoom = 8;

        map.setCenter(new GLatLng(56.20, 11.25), zoom);
        map.addControl(new GLargeMapControl());
        //map.addControl(new GSmallMapControl());
        //map.addControl(new GSmallZoomControl());
        //map.addControl(new GScaleControl());
        //map.addControl(new GMapTypeControl());
        map.addControl(new GHierarchicalMapTypeControl());
        map.enableScrollWheelZoom();
        //map.addControl(new GOverviewMapControl());
        map.addMapType(G_PHYSICAL_MAP);
        map.enableDoubleClickZoom();
        map.enableContinuousZoom();
    }
    butik = new GIcon();
    butik.image = "mm_20_blue.png";
    butik.shadow = "mm_20_shadow.png";
    butik.iconSize = new GSize(12, 20);
    butik.shadowSize = new GSize(22, 20);
    butik.iconAnchor = new GPoint(6, 20);
    butik.infoWindowAnchor = new GPoint(5, 1);
    document.getElementById("tilføj").style.display = "none";
    
    //GEvent.addListener(map, "dragend", updatelist);
    GEvent.addListener(map, "zoomend", updatelist);
    GEvent.addListener(map, "moveend", updatelist);
}

function addentry(id, navn, adresse, adresselatin1, postnr, by, tlf, hjemmeside, lat, lng, icon) {
    var marker = new GMarker(new GLatLng(lat, lng), icon);
    var text = "";
    text += "<b>" + navn + "</b><br />";
    text += adresse + "<br />" + postnr + " " + by + "<br />";
    if (tlf != '') {
        text += "Tlf: " + tlf + "<br />";
    }
    if (hjemmeside != '') {
        text += "<a href='"+hjemmeside+"'>Hjemmeside</a><br />";
    }
    text += "<div style='text-align: right'>";
    text += "<a href='http://www.degulesider.dk/vbw/kort/kort-rute.do?to.z="+postnr+"&to.g="+adresselatin1+"'>Ruteplan</a>";
    text += " <img src='dgs.png' width='16' height='16' />";
    text += "</div>";
    info = [ navn, lat, lng, marker, by ];
    points.push(info);
    var tabs = [
        //
        new GInfoWindowTab("Adresse", text),
        new GInfoWindowTab("Kommentar", "Skriv kommentar til mig om denne butik.<br /><textarea class='kommentar' id='kommentar"+id+"'></textarea><div style='display: none' id='besked"+id+"'></div><br /><input onclick='kommentar("+id+")' id='sendkommentar"+id+"' type='submit' value='Send' />")
    ];
    GEvent.addListener(marker, "click", function() {
        marker.openInfoWindowTabsHtml(tabs);
    });
    map.addOverlay(marker);
}

function kommentar(id) {
    var textarea = document.getElementById("kommentar"+id);
    var besked = document.getElementById("besked"+id);
    var knap = document.getElementById("sendkommentar"+id);

    knap.value = "Sender..";
    knap.disabled = true;
    
    http_request = get_http_request();
    
    http_request.onreadystatechange = function() {
        if (http_request.readyState == 4) {
            textarea.style.display = "none";
            knap.style.display = "none";
            besked.style.display = "block";
            if (http_request.status == 200) {
                //alert(http_request.responseText);
                var xmldoc = http_request.responseXML;
                var succes = xmldoc.getElementsByTagName('succes').item(0).firstChild.data;
                var svar =  xmldoc.getElementsByTagName('besked').item(0).firstChild.data;
                //alert(svar);
                besked.innerHTML = svar;
                if (succes == 1) {
                    textarea.value = '';
                }
            }
            else {
                besked.innerHTML = "Serverfejl. Prøv igen.";
            }
            knap.value = 'Send';
            knap.disabled = false;
        }
    };
    http_request.open("POST", 'index.php', true);
    http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    str  = "kommentar=" + encodeURIComponent(textarea.value);
    str += "&id=" + id;
    http_request.send(str);

    return false;    
}

function openpoint(i) {
    marker = points[i][3];
    map.panTo(marker.getPoint());
    GEvent.trigger(marker, 'click');
}

function updatelist() {
    list = document.getElementById("liste");
    list.innerHTML = "";
    var minLat = map.getBounds().getSouthWest().lat();
    var minLng = map.getBounds().getSouthWest().lng();
    var maxLat = map.getBounds().getNorthEast().lat();
    var maxLng = map.getBounds().getNorthEast().lng();

    var found = 0;
    for (var i in points) {
        var navn = points[i][0];
        var lat = points[i][1];
        var lng = points[i][2];
        if (lat > minLat && lat < maxLat && lng > minLng && lng < maxLng) {
            found++;
            if (found > 5) {
                list.innerHTML += "... og flere<br />";
                break;
            }
            list.innerHTML += "<a href='javascript:openpoint("+i+")'>" + navn + "</a><br />";
        }
    }
    if (found == 0) {
        list.innerHTML = "Ingen butikker på kortet";
    }
    else {
        list.innerHTML = "Butikker på kortet:<br />" + list.innerHTML;
    }
}

function indsend() {
    knap = document.getElementById("tilføjsubmit");
    fnavn = document.getElementById("fnavn");
    fadresse = document.getElementById("fadresse");
    fpostnr = document.getElementById("fpostnr");
    fby = document.getElementById("fby");
    ftlf = document.getElementById("ftlf");
    fhjemmeside = document.getElementById("fhjemmeside");
    
    if (fnavn.value == "" || fadresse.value == "" || fpostnr.value == "" || fby.value == "") {
        document.getElementById("besked").innerHTML = "Udfyld venligst alle felter markeret med *";
        return false;
    }
    
    knap.value = "Sender..";
    knap.disabled = true;
    
    http_request = get_http_request();
    
    http_request.onreadystatechange = function() {
        if (http_request.readyState == 4) {
            if (http_request.status == 200) {
                var xmldoc = http_request.responseXML;
                var succes = xmldoc.getElementsByTagName('succes').item(0).firstChild.data; 
                var besked = xmldoc.getElementsByTagName('besked').item(0).firstChild.data;
                document.getElementById("besked").innerHTML = besked;
                if (succes == 1) {
                    document.getElementById("fnavn").value = "";
                    document.getElementById("fadresse").value = "";
                    document.getElementById("fpostnr").value = "";
                    document.getElementById("fby").value = "";
                    document.getElementById("ftlf").value = "";
                    document.getElementById("fhjemmeside").value = "";
                }
            }
            else {
                document.getElementById("besked").innerHTML = "Serverfejl. Prøv igen.";
            }
            knap.disabled = false;
            knap.value = "Send";
        }
    };
    http_request.open("POST", 'index.php', true);
    http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    str  = "fnavn=" + encodeURIComponent(fnavn.value);
    str += "&fadresse=" + encodeURIComponent(fadresse.value);
    str += "&fpostnr=" + encodeURIComponent(fpostnr.value);
    str += "&fby=" + encodeURIComponent(fby.value);
    str += "&ftlf=" + encodeURIComponent(ftlf.value);
    str += "&fhjemmeside=" + encodeURIComponent(fhjemmeside.value);
    http_request.send(str);


    return false;
}

function update_søg() {
    var s = document.getElementById("søgefelt").value.toLowerCase();
    var found = 0;
    var res = "";
    var moreprinted = false;
    if (s.length >= 3) {
        document.getElementById("liste").style.display = 'none';
        //res += "<strong>Søg efter " + s + "</strong><br />";
        for (var i in points) {
            var marker = points[i][3];
            var navn = points[i][0];
            var by = points[i][4];
            if (navn.toLowerCase().match(s) != null || by.toLowerCase().match(s) != null) {
                found++;
                marker.show();
                if (found > 15 && moreprinted == false) {
                    res += "... og flere<br />";
                    moreprinted = true;
                }
                else if (moreprinted == false) {
                    res += "<a href='javascript:openpoint("+i+")'>" + navn + "</a><br />";
                }
            }
            else {
                marker.hide();
            }
        }
        if (found == 0) {
            res += "Ingen butikker fundet";
        }
    }
    else {
        for (var i in points) {
            points[i][3].show();
        }
        document.getElementById("liste").style.display = 'block';
    }
    document.getElementById("søgeresultater").innerHTML = res;
}

function søgchanged() {
    clearTimeout(søgtimer);
    søgtimer = setTimeout("update_søg()", 500);
}

function get_http_request() {
    // Attempt to create an XMLHTTP instance
    var http_request;
     
    if (window.XMLHttpRequest) { // Mozilla, Safari,...
        http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType) {
            http_request.overrideMimeType('text/xml');
        }
    } else if (window.ActiveXObject) { // IE
        try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }
    
    // All our efforts failed. How awful
    if (!http_request) {
        alert('Giving up :( Cannot create an XMLHTTP instance');
        return false;
    }
    else {
        return http_request;
    }
}

