var map;
var geocoder, setGeocoder;
var mgr;
var geoXml;
var baseIcon;
var iBounds;
var icon;
var iconPrem;
var searchTerm;
var search_form;
var markers = new Array();
var markers_id = new Array();
var markers_content = new Array();
var index = 0;
Array.prototype.in_array = function(needle) {
    for(var i=0; i < this.length; i++) if(this[i] === needle) return true;
    return false;
}
jQuery.fn.extend({
    scrollTo : function(speed, easing) {
        return this.each(function() {
            var targetOffset = $(this).offset().top-42;
            $('html,body').animate({
                scrollTop: targetOffset
            }, speed, easing);
        });
    }
});
jQuery.fn.fadeToggle = function(speed, easing, callback) {
    return this.animate({
        opacity: 'toggle'
    }, speed, easing, callback);

}; 
function runde(x, n) {
    if (n < 1 || n > 14) return false;
    var e = Math.pow(10, n);
    var k = (Math.round(x * e) / e).toString();
    if (k.indexOf('.') == -1) k += '.';
    k += e.toString().substring(1);
    return k.substring(0, k.indexOf('.') + n+1).replace(".", ",");
}

function initialize() {
    $("#search_form").submit(function() {
        search_institut();
        return false;
    });
    if (GBrowserIsCompatible()) {
        //geoXml = new GGeoXml("http://www.ihrheimplatz.de/ajax/NRW.kml");
        map = new GMap2(document.getElementById("map"));
        map.setCenter(new GLatLng(51.13800, 10.195313), 6);
        map.addControl(new GSmallMapControl());
        map.addControl(new GMapTypeControl());
        map.addControl(new GScaleControl());
        map.enableDoubleClickZoom();
        map.enableContinuousZoom();
        map.enableScrollWheelZoom();
        icon = new GIcon(G_DEFAULT_ICON);
        icon.image = "http://ihrheimplatz.de/css/images/pin-map.png";
        iconPrem = new GIcon(G_DEFAULT_ICON);
        iconPrem.image = "http://ihrheimplatz.de/css/images/pin-map-prem.png";

        iBounds = new GLatLngBounds();
        
        GEvent.addListener(map, "addoverlay", function(overlay) {
            if (overlay instanceof GMarker) {
                var point = overlay.getLatLng();
                iBounds.extend(point);
                var center    = iBounds.getCenter();
                var zoomLevel = map.getBoundsZoomLevel(iBounds);
                if (zoomLevel>16) {
                    zoomLevel = 16;
                }
                map.setCenter(center, zoomLevel);
            }
        });

        geocoder = new GClientGeocoder();
        setGeocoder = new GClientGeocoder();
        //getInstituts(map.getZoom());
        window.setTimeout(search_institut, 0);
    }
}

function showAddress(address, umkreis) {
    searchTerm = address+", Germany";
    geocoder.getLatLng(
        searchTerm,
        function(point) {
            if (!point) {
            //$("#map_container").append(searchTerm + " not found<br>");
            } else {
                getInstitutes(point.lat(), point.lng(), umkreis);
            }
        }
        );
}
function setLatLng(id, val) {
    var Term = val+", Germany";
    setGeocoder.getLatLng(
        Term,
        function(point) {
            if (!point) {
            //$("#map_container").append(Term + " not found<br>");
            } else {
                var lat = point.lat();
                var lng = point.lng();
                $.ajax( {
                    type:"POST",
                    url: "ajax/setLatLng.php",
                    data: "id="+id+"&lat="+lat+"&lng="+lng
                });
            }
        }
        );
}
function createMarker(point, data) {
    var id, premium, content;

    id = data.id;
    premium = data.premium;

    if(premium == 1) {
        content = '<a href="informationen/detailansicht.html?id='+id+'" tabindex="'+((index+1)*100+1)+'"><h4>'+data.name+'</h4></a>';
    }
    else {
        content = '<h4>'+data.name+'</h4>';
    }
    content += data.strasse+'<br />'+data.plz+' '+data.ort;
    if(data.telefon != '') {
        content += '<br />Tel. '+data.telefon;
    }
    if(premium == 1) {
        content += '<br /><a class="info_link" href="informationen/detailansicht.html?id='+id+'" tabindex="'+((index+1)*100+2)+'">Weitere Informationen</a>';
    }
    
    if(premium == 1) {
        markerOptions = {
            icon:iconPrem
        };
    }
    else {
        markerOptions = {
            icon:icon
        };
    }

    var back_link = '<br /><a href="#" onClick="scrollBack('+(index+1)+'); return false;">Zum Listeneintrag</a>';

    var marker = new GMarker(point, markerOptions);

    GEvent.addListener(marker, "click", function() {
        marker.openInfoWindowHtml('<div class="gInfoWindow">'+content+back_link+'<div class="clr"></div></div>');
    });


    if(!markers_id.in_array(id)) {
        markers_id[index] = id;
        markers[index] = marker;
        markers_content[index] = '<div class="gInfoWindow">'+content+back_link+'<div class="clr"></div></div>';
        index++;
    }
    else {
        return false;
    }

    var div_image = document.createElement("div");
    var $div_image = $(div_image);
    $div_image.attr("id","institut_image_"+index);
    $div_image.addClass("institut_image");

    var div_content = document.createElement("div");
    var $div_content = $(div_content);
    $div_content.attr("id", "institut_content_"+index);
    $div_content.addClass("institut_content");

    var div_pflege = document.createElement("div");
    var $div_pflege = $(div_pflege);
    $div_pflege.attr("id", "institut_pflege_"+index);
    $div_pflege.addClass("institut_pflege");

    var div_schwerpunkte = document.createElement("div");
    var $div_schwerpunkte = $(div_schwerpunkte);
    $div_schwerpunkte.attr("id", "institut_schwerpunkte_"+index);
    $div_schwerpunkte.addClass("institut_schwerpunkte");

    var div_einzelzimmer = document.createElement("div");
    var $div_einzelzimmer = $(div_einzelzimmer);
    $div_einzelzimmer.attr("id", "institut_einzelzimmer_"+index);
    $div_einzelzimmer.addClass("institut_einzelzimmer");

    var div_anz_plaetze = document.createElement("div");
    var $div_anz_plaetze = $(div_anz_plaetze);
    $div_anz_plaetze.attr("id", "institut_anz_plaetze_"+index);
    $div_anz_plaetze.addClass("institut_anz_plaetze");

    var div_freie_plaetze = document.createElement("div");
    var $div_freie_plaetze = $(div_freie_plaetze);
    $div_freie_plaetze.attr("id", "institut_freie_plaetze_"+index);
    $div_freie_plaetze.addClass("institut_freie_plaetze");

    var div_preise = document.createElement("div");
    var $div_preise = $(div_preise);
    $div_preise.attr("id", "institut_preise_"+index);
    $div_preise.addClass("institut_preise");

    var div_clr = document.createElement("div");
    var $div_clr = $(div_clr);
    $div_clr.addClass("clr");
    
    var div_institut = document.createElement("div");
    var $div_institut = $(div_institut);
    $div_institut.attr("id", "institut_"+index);

    div_institut.appendChild(div_image);
    div_institut.appendChild(div_content);
    div_institut.appendChild(div_pflege);
    div_institut.appendChild(div_schwerpunkte);
    div_institut.appendChild(div_einzelzimmer);
    div_institut.appendChild(div_anz_plaetze);
    div_institut.appendChild(div_freie_plaetze);
    div_institut.appendChild(div_preise);
    div_institut.appendChild(div_clr);

    $("#map_container").append(div_institut);
    if(premium == 1) {
        var institut_img = document.createElement("img");
        var $institut_img = $(institut_img);
        $institut_img.attr("src", "bild.html?id="+id);
    
        var pflege_content = "k.A.";
        if(data.vollstationaerepflege == "1" || data.kurzzeitpflege == "1" || data.verhinderungspflege == "1" || data.tagespflege == "1" || data.nachtpflege == "1" || data.betreuteswohnen == "1") {
            pflege_content = "";
            if(data.vollstationaerepflege == "1")  {
                pflege_content += "Vollstation&auml;re Pflege";
            }
            if(data.kurzzeitpflege == "1") {
                if(pflege_content.length > 0) {
                    pflege_content += ", "
                }
                pflege_content += "Kurzzeitpflege";
            }
            if(data.verhinderungspflege == "1")  {
                if(pflege_content.length > 0) {
                    pflege_content += ", "
                }
                pflege_content += "Verhinderungspflege";
            }
            if(data.tagespflege == "1")  {
                if(pflege_content.length > 0) {
                    pflege_content += ", "
                }
                pflege_content += "Tagespflege";
            }
            if(data.nachtpflege == "1")  {
                if(pflege_content.length > 0) {
                    pflege_content += ", "
                }
                pflege_content += "Nachtpflege";
            }
            if(data.betreuteswohnen == "1") {
                if(pflege_content.length > 0) {
                    pflege_content += ", "
                }
                pflege_content += "Betreutes Wohnen";
            }
        }
        var schwerpunkte_content = "k.A.";
        if(data.demenz == "1" || data.wachkoma == "1" || data.beatmung == "1") {
            schwerpunkte_content = "";
            if(data.demenz == "1") {
                schwerpunkte_content += "Demenz";
            }
            if(data.wachkoma == "1") {
                if(schwerpunkte_content.length > 0) {
                    schwerpunkte_content += ", "
                }
                schwerpunkte_content += "Wachkoma"
            }
            if(data.beatmung == "1") {
                if(schwerpunkte_content.length > 0) {
                    schwerpunkte_content += ", "
                }
                schwerpunkte_content += "Beatmung"
            }
        }
        var einzelsimmer_content = "k.A.";
        if(data.einzelzimmer == "1") {
            einzelsimmer_content = "ja";
        }
        var anz_plaetze_content = "k.A.";
        if(parseInt(data.anzahlplaetze) > 0 && parseInt(data.anzahlplaetze) != "NaN") {
            anz_plaetze_content = data.anzahlplaetze;
        }
        var freie_plaetze_content = "k.A.";
        if(data.freieplaetze == "1") {
            freie_plaetze_content = "ja";
        }
        var preise_content = "k.A.";
        var preispflege0 = parseFloat(data.preispflege0);
        var preispflege1 = parseFloat(data.preispflege1);
        var preispflege2 = parseFloat(data.preispflege2);
        var preispflege3 = parseFloat(data.preispflege3);
        var preisunterkunft = parseFloat(data.preisunterkunft);
        var preisinvestition = parseFloat(data.preisinvestition);
        if((preispflege0 != "NaN" || preispflege1 != "NaN" || preispflege2 != "NaN" || preispflege3 != "NaN") && preisunterkunft != "NaN" && preisinvestition != "NaN") {

            var p0 = (preispflege0 + preisunterkunft + preisinvestition) * 30.42;
            var p1 = (preispflege1 + preisunterkunft + preisinvestition) * 30.42;
            var p2 = (preispflege2 + preisunterkunft + preisinvestition) * 30.42;
            var p3 = (preispflege3 + preisunterkunft + preisinvestition) * 30.42;
            //alert(p0 +" = "+preispflege0+" + "+preisunterkunft +" + "+preisinvestition);
            
            preise_content = "";
            if(p0 > 0) {
                preise_content += "Pflegestufe 0: "+runde(p0,2)+" &euro;";
            }
            if(p1 > 0) {
                if(preise_content.length > 0) {
                    preise_content += "<br />"
                }
                preise_content += "Pflegestufe 1: "+runde(p1,2)+" &euro;";
            }
            if(p2 > 0) {
                if(preise_content.length > 0) {
                    preise_content += "<br />"
                }
                preise_content += "Pflegestufe 2: "+runde(p2,2)+" &euro;";
            }
            if(p3 > 0) {
                if(preise_content.length > 0) {
                    preise_content += "<br />"
                }
                preise_content += "Pflegestufe 3: "+runde(p3,2)+" &euro;";
            }
            if(preise_content.length == 0) {
                preise_content = "k.A.";
            }
        }

        $("#institut_image_"+index).append(institut_img);
        $("#institut_content_"+index).html(content);
        $("#institut_pflege_"+index).html(pflege_content);
        $("#institut_schwerpunkte_"+index).html(schwerpunkte_content);
        $("#institut_einzelzimmer_"+index).html(einzelsimmer_content);
        $("#institut_anz_plaetze_"+index).html(anz_plaetze_content);
        $("#institut_freie_plaetze_"+index).html(freie_plaetze_content);
        $("#institut_preise_"+index).html(preise_content);
        $("#institut_content_"+index+' > a').filter(":first").before('<a href="#" onclick="getMarkerInfo('+index+'); return false;" tabindex="'+((index)*100+2)+'"><img src="css/images/pin-map-prem.png" width="15" height="26" align="right" /></a>');
    }
    else {
        $("#institut_content_"+index).html(content);
        $("#institut_content_"+index+' > h4').filter(":first").before('<a href="#" onclick="getMarkerInfo('+index+'); return false;" tabindex="'+((index)*100+2)+'"><img src="css/images/pin-map.png" width="15" height="26" align="right" /></a>');
    }

    return marker;
}

function getInstitutes(iLat, iLng, umkreis) {
    $.ajax ({
        url: 'ajax/getInstitute2.php',
        type:'POST',
        data:'lat='+iLat+
        '&lng='+iLng+
        '&umkreis='+umkreis+
        search_form,
        beforeSend: function(){
            $("#map_status").html('<img src="images/suche.gif" alt="Suche l&auml;uft"');
            $(".map_container_slider").slideUp();
        },
        success: function(r){

            eval("var json="+r);
            var data = json.data;
            var lat, lng;
            if(data.length == 0) {
                $("#map_status").html("<font color=\"red\">Keine Treffer f&uuml;r Ihre Suche.</font>");
                
                if(iLat != 38.760994 && iLng != -79.396731) {
                    map.setCenter(new GLatLng(iLat, iLng),12);
                }

                if($("#search_form").serialize().indexOf("&") != -1) {
                    if($(".detail_search").is(":hidden")) {
                        $('.detail_search').slideDown();
                    }
                    alert("Bitte entfernen Sie Ihre Filterkriterien und versuchen es erneut.")
                }
            }
            else {
                $("#map_container").html("");
                $('.detail_search').slideUp();
                if(data.length == 200) {
                    $("#map_status").html("Ihre Suche wurde auf 200 Ergebnisse begrenzt.");
                }
                else {
                    $("#map_status").html("Ihre Suche ergab "+data.length+" Ergebnisse");
                }
                for(var i=0; i<data.length; i++) {
                    lat = data[i].lat;
                    lng = data[i].lng;

                    if(parseInt(lat) == 0) {
                        setLatLng(id,strasse+", "+plz+" "+ort);
                    }
                    else {
                        latlng = new GLatLng(lat, lng);
                        
                        var marker = createMarker(latlng, data[i]);
                        if(marker !== false)
                            map.addOverlay(marker);
                    }
                }
                $.ajax({
                    url: 'search_save_script.html',
                    type:'POST',
                    data:search_form
                });
                $(".map_container_slider").slideDown("slow");
            }
        }
    });
}

function getMarkerInfo(index) {
    var marker = markers[index - 1];
    //    map.setCenter(marker.getPoint(),14);
    marker.openInfoWindowHtml(markers_content[index-1])
    $('#content').scrollTo(1000);
}
function scrollBack(index) {
    $('#institut_'+index).scrollTo(1000);
}
function setAddress() {
    if($("#address").val() != "") {
        showAddress($("#address").val(),$("#umkreis").val());
    }
    else {
        $("#map_status").html("Bitte geben Sie eine g&uuml;ltige Suche ein.");
    }
    search_form = "";
}

function search_institut() {
    search_form = "&"+$('#search_form').serialize();
    markers = new Array();
    markers_id = new Array();
    markers_content = new Array();
    index = 0;
    map.clearOverlays();
    iBounds = new GLatLngBounds();

    if($("#address").val() == "") {
        $("#map_status").html("<strong>Bitte geben Sie eine g&uuml;ltige Suche ein.</strong>");
        alert('Geben Sie bitte eine PLZ oder ein ORT an.');
    }
    else if($("#address").val() != "") {
        showAddress($("#address").val(),$("#umkreis").val());
    }
    else {
        getInstitutes(40, 4,1000000000000);
    }
}

$(window).scroll(function() {
    if( window.clipboardData && document.compatMode ) {
        x=window.XMLHttpRequest? 'IE7' : 'IE6';
    }
    else {
        x = 'other';
    }
    if(x != 'IE6') {
        if($(this).scrollTop() > $(".box1_content_search").position().top) {
            $('#map_headlines').css('position', "fixed");
            $('#map_headlines').css('top', "0px");
            $('#map_headlines').css('left', ($(".box1_content_search").position().left + 19)+"px");
        }
        else {
            $('#map_headlines').css('position', "absolute");
            $('#map_headlines').css('top', "0px");
            $('#map_headlines').css('left', "19px");
        }
    }
});