// Epic Javascript of Doom!
var serverroot = "/";


var prettyPhotoCallback = "";
var menuetimeout;
var menueaktiv;
var userBearbeitetStandort=false;
var geocoder = null;
var map = null;
var mapinfowindow;

$(document).ready(function() //Ersetzt onLoad
{
    $("input.standardwert").Standardwert();
    $("textarea.standardwert").Standardwert();

    if (!mobil) {
        Tooltip(); //Tooltips initialisieren
        PrettyPhoto(); //PrettyPhoto intitialisieren
        Konami(); //Konami

        menueaktiv = $('.umaktiv').attr('id');
        if (menueaktiv != null) {
            menueaktiv = menueaktiv.substring(menueaktiv.length -1);
        } else {
            menueaktiv = -1;
        }
    }
    if (!googleStandort) {
        UserStandortBestimmen();
    }
});

function Konami() {
    var kkeys = [], konami = "38,38,40,40,37,39,37,39,66,65";
    $(document).keydown(function(e) {
        kkeys.push( e.keyCode );
        if ( kkeys.toString().indexOf( konami ) >= 0 ){
            $(document).unbind('keydown',arguments.callee);
            document.body.style.backgroundImage = "url(img/hg.gif)";
            $("div#infoleiste").append('<object width="230" height="230"><param name="movie" value="http://www.youtube.com/v/vstma42lHEk&&autoplay=1"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/vstma42lHEk&hl=de_DE&fs=1&rel=0&autoplay=1" type="application/x-shockwave-flash" allowscriptaccess="always" width="230" height="230"></embed></object>');
        }
    });
}

function Tooltip() {
    /*$(".tooltip").wTooltip({
        style: {
            border: "1px solid gray",
            background: "white",
            color: "black",
            padding: "2px",
            marginTop: "-10px",
            marginLeft: "13px"
        }
    });*/
    $(".tooltip").tipsy( {
        gravity: $.fn.tipsy.autoWE
    })

    $(".tooltipns").tipsy( {
        gravity: $.fn.tipsy.autoNS
    })

}

function PrettyPhoto() {
    if ($("a[rel^='prettyPhoto']").length > 0) {
        $("a[rel^='prettyPhoto']").prettyPhoto({
            theme: 'facebook',
            padding: 5,
            opacity: 0.2,
            animationSpeed: 'fast',
            showTitle: false
        });
    }
}

//Menü
function Untermenue(id) {
    $('#untermenue_1').hide();
    $('#untermenue_2').hide();
    $('#untermenue_3').hide();
    $('#untermenue_4').hide();
    $('#untermenue_12').hide();
    $('#untermenue_13').hide();
    if (id != -1) { 
        $('#untermenue_' + id).fadeIn(200);
    }
}

function MenueZurueck() {
    menuetimeout = setTimeout('Untermenue(menueaktiv)',4000);
}

function MenueZAbbrechen() {
    window.clearTimeout(menuetimeout);
}

//AJAX-Bearbeitungsmodul - einbinden
function ModulBearbeiten(divid, dienstleister) {
    //Ladebalken :-)
    LadeGrafik("#" + divid);
    jetzt = new Date();
    timestamp = jetzt.getTime();
    //$('#' + divid).html("Laden...");
    $.get(serverroot + "be_mod_bearbeiten_ajax.php", {
        d: dienstleister,
        div: divid,
        timestamp: timestamp
    },
    function(data){
        $('#' + divid).html(data);
    });
}

function ModulAnzeigen(divid, dienstleister) {
    //Ladebalken :-)
    LadeGrafik("#" + divid);
    jetzt = new Date();
    timestamp = jetzt.getTime();
    $('#' + divid).html("Laden...");
    $.get(serverroot + "be_mod_anzeigen_ajax.php", {
        d: dienstleister,
        div: divid,
        timestamp: timestamp
    },
    function(data){
        $('#' + divid).html(data);
    });
}

function FormSpeichern(formid, divid, callback) {
    LadeGrafik("#" + formid);
    var formulardaten = $('#' + formid).serialize();
    $.post(serverroot + "be_mod_speichern_ajax.php", formulardaten,
        function(data){
            if (!Fehler(data, formid)) {
                //Keine Fehler
                if (data.substring(data.length-2) == "|n") { //Neu
                    data = data.substring(0,data.length-2); // data = zB "asdfjkl|n"
                    $('#' + formid).replaceWith(data);
                } else {
                    $('#' + divid).html(data);
                }
            } else {
                LadeGrafikEntfernen("#" + formid);
            }
            eval(callback);
        });
    return false;
}

function FormularStoppen() {
    return false;
}

function DivsTauschen(altesdiv, neuesdiv, geschwindigkeit) {
    $(neuesdiv).show(geschwindigkeit);
    $(altesdiv).hide(geschwindigkeit);
}

function Ausblenden(id, geschwindigkeit) {
    $(id).hide(geschwindigkeit);
}

function Popin() {
    //Aufruf mit parent.popin();
    //$pp_pic_holder.find('object,embed').css('visibility','hidden');

    //$('div.pp_pic_holder,div.ppt').fadeOut("normal");

    //$('div.pp_overlay').fadeOut("normal", function(){
    //    $('div.pp_overlay,div.pp_pic_holder,div.ppt').remove();

        // To fix the bug with IE select boxes
     //   if($.browser.msie && $.browser.version == 6){
     //       $('select').css('visibility','visible');
  //      };
  //alert("Ja!");
  $('div.pp_pic_holder:visible').each(function(){
      $.prettyPhoto.close();
      //$("div:visible").hide("slow");
  });
  //alert("ja");
  eval(prettyPhotoCallback);
  prettyPhotoCallback = "";
    //});
}

function prettyPhotoAufrufen(url, titel) { //ruft PrettyPhoto direkt auf
    if (titel === undefined) { 
        titel="";
    }
    
    $("body").append("<div title=\"" + titel + "\" rel=\"prettyPhotoAufruf\" href=\"" + url +  "\" id=\"prettyPhotoAufruf\"></div>");
    $("#prettyPhotoAufruf").prettyPhoto({
        theme: 'light_square',
        padding: 5,
        opacity: 0.2,
        animationSpeed: 'fast'
    });
    $("#prettyPhotoAufruf").click();
    $("#prettyPhotoAufruf").remove();
}

function Login() {
    var form = $("form[name='login']").serialize();
    var url = "fe_popin.php?site=login&" + form + "&iframe=true&heigth=400&width=500";
    prettyPhotoAufrufen(url);
}

function Fehler(data, formid) {
    //Todo: auch FormID übergeben via PHP

    //Farben zurücksetzen
    $("form#" + formid + " .formfehler").removeClass("formfehler");
    //Fehlermeldungen löschen
    $("form#" + formid + " div:visible.fehler").remove();
    
    if (data.substring(data.length-2) != "||") {
        //keine Fehler
        return false;
    } else {
        //Fehler >_>
        fehlerfelder = data.substring(0,data.length-2);
        fehlerfelder = fehlerfelder.substring(fehlerfelder.lastIndexOf("||")+2); //Nur Fehlerblock nehmen
        fehlerfelder = fehlerfelder.split("|");

        fokus = false;
        for (var i = 0; i<fehlerfelder.length;i++) {
            //alert(fehlerfelder[i]);
            fehlermeldung="";
            fehlerfeld=fehlerfelder[i];
            if (fehlerfeld.indexOf(":")!=-1) {
                fehlermeldung = fehlerfeld.substring(fehlerfeld.indexOf(":")+1,fehlerfeld.length);
                fehlerfeld = fehlerfeld.substring(0,fehlerfeld.indexOf(":"));
            }
            
            //Einfärben
            if (fehlerfeld != "") {
                $("form#" + formid + " *[name=" + fehlerfeld + "]:first").addClass("formfehler");
                if (!fokus) {
                    fokus = true;
                    $(document).ready(function() //Ersetzt onLoad
                    {
                        $("form#" + formid + " *[name=" + fehlerfeld + "]:first").focus();
                    //document.forms[formid].elements[fehlerfeld].focus();
                    });
                }
            }
            //Fehlermeldung ausgeben falls vorhanden
            if (fehlermeldung != "") {
                if (fehlerfeld != "") {
                    $("form#" + formid + " *[name=" + fehlerfeld + "]:first").after('<div class="fehler">' + fehlermeldung + '</div>');
                } else {
                    $("form#" + formid + "").prepend('<div class="fehler">' + fehlermeldung + '</div>');
                }
            }
        }

        return true;
    }
}

function GoogleGeocoderInitialisieren() {
    if (geocoder == null) {
        if (GBrowserIsCompatible()) {
            //map = new GMap2(document.getElementById("map_canvas"));
            //map.setCenter(new GLatLng(37.4419, -122.1419), 13);
            geocoder = new GClientGeocoder();
            geocoder.setBaseCountryCode('AT');
        }
    }
}


//JQuery-Erweiterung - Standardwert
(function($) {
    $.fn.Standardwert = function() {
        this.each(function() {
            var input = this;
            var wert = $(this).val();
            $(this).bind("focus",function() {
                if ($(this).val() == wert) {
                    $(this).val("");
                    $(this).removeClass("standardwert");
                }
            })
            $(this).bind("blur",function(){
                if ($(this).val() == "") {
                    $(this).val(wert);
                    $(this).addClass("standardwert");
                }
            })
            //Wenn Standardwert nicht geändert -> Löschen beim Abschicken des Formulars
            $(this).parents("form").bind("submit",function(){ 
                if ($(input).val() == wert) {
                    $(input).val("");
                }
            })
        });
        return this;
    };
})(jQuery);

//Standort ändern in der mobilen Version
function StandortAendernMobil() {
    var standort = $("#suchestartseiteort").val();
    $("#suchestartseiteort").attr("disabled", "disabled");
    $.get(serverroot + 'be_user_ajax_div.php',
    {
        modus:'standortort',
        standort: standort
    }, function(data) {
        StandortAktualisieren(data);
    },"html");
}

//User bearbeitet seinen Standort in der Infoleiste
function StandortAuswaehlenBlur(standort,laengengrad, breitengrad) {
    
    if (standort == null) {
        standort = $('#suche_standort_formular input').val();
    } else if (standort == "startseite") {
        standort = $('#suche_standort_formular_startseite input').val();
    }
    DivsTauschen('#suche_standort_formular', '#suche_standort_text');
    DivsTauschen('#suche_standort_formular_startseite', '#suche_standort_text_startseite');

    userBearbeitetStandort=false;
    $('#infoleiste #suche_standort_text').html("Lade..."); //@TODO Laden-Symbol
    $('#sucheStartseite #suche_standort_text_startseite').html("Lade...");
    
    if (laengengrad == null) {
        $.get(serverroot + 'be_user_ajax_div.php',
        {
            modus:'standortort',
            standort: standort
        }, function(data) {
            StandortAktualisieren(data);
        }
        );
    } else {
        $.get(serverroot + 'be_user_ajax_div.php',
        {
            
            modus:'standortkoordinaten',
            laengengrad: laengengrad,
            breitengrad: breitengrad
        }, function(data) {
            StandortAktualisieren(data);
        }
        );
    };
}

//Standortsensitive Informationen aktualisieren
function StandortAktualisieren(data) {
    $('#infoleiste #suche_standort_text').html(data); //Richtigen Ort einsetzen
    $('#sucheStartseite #suche_standort_text_startseite').html(data); //Richtigen Ort einsetzen -> Startseite

    //Standortabhängige Anzeigen neu laden

    $("div#dienstleisterinnaehe").each(function(){ //Dienstleister in Nähe auf Dienstleisterseiten
        $.get(serverroot + "fe_dienstleister_infoleiste_dienstleisterinnaehe.php",{
            d:dienstleisterJS
        },function(data) {
            $("div#dienstleisterinnaehe").replaceWith(data);
        },"html");
    });
    $("div#dienstleisterinnaeheStartseite").each(function() { //Startseite

        $("div#dienstleisterinnaeheStartseite").fadeOut("normal");
        $.get("fe_startseite_infoleiste.php",{},function(data) {
            $("div#dienstleisterinnaeheStartseite").replaceWith(data);
        },"html");
        $.get("fe_startseite_dienstleisterKarte_ajax.php",{},function(data) {
            $("div#karteStartseite").prepend(data);
        },"html");
        $.get("fe_startseite_spotlight.php",{},function(data) {
            $("div#spotlightStartseite").replaceWith(data);
        },"html");
    });

    $("div#mobildinhp").each(function() { //mobile Startseite
        $("#suchestartseiteort").removeAttr("disabled");
        $("div#mobildinhp").slideUp("normal");
        $.get(serverroot + "m/mfe_startseite_din.php",{},function(data) {
            $("div#mobildinhp").replaceWith(data);
        },"html");

        $("#suchestartseiteort").val(data);

        $.get(serverroot + "m/mfe_startseite_karte_ajax.php",{},function(data) {
            $("div#karteStartseite").prepend(data);
        },"html");
    });

}

//Flaggen/Als Spam melden/markieren
function AlsSpamMelden(typ, id) {
    $.get(serverroot + "be_ajax_melden.php", {
        typ:typ,
        id:id
    }, function(data) {
        alert("Das Sinra-Team wurde benachrichtigt und wird sich so schnell wie möglich\num Ihr Anliegen kümmern.");
    })
}

function LadeGrafik(position) {
    //Grafiken austauschen
    $(position + " img.laden").addClass("ladenaktiv");
    $(position + " img.laden").removeClass("laden");

    //Formularfelder inaktiv setzen
    $(position + " input[type=submit]").attr("disabled", "disabled");
}

function LadeGrafikEntfernen(position) {
    //Grafiken austauschen
    $(position + " img.ladenaktiv").addClass("laden");
    $(position + " img.ladenaktiv").removeClass("ladenaktiv");
    
    //Formularfelder inaktiv setzen
    $(position + " input[type=submit]").removeAttr("disabled");
}

function Trigger(position) {
    $(position + " div.getriggert:visible").each(function() {
        $(position + " div.getriggert").slideUp("medium");
        $(position).find("img.einklappen").removeClass("einklappen").addClass("ausklappen").attr("title","anzeigen");
    });

    $(position  + " div.getriggert:hidden").each(function() {
        $(position + " div.getriggert").slideDown("medium");
        $(position).find("img.ausklappen").removeClass("ausklappen").addClass("einklappen").attr("title","ausblenden");
    })
}

function FelderSynchronisieren(quellfeld,zielfeld) {
    wertquelle = $(quellfeld).val();
    wertziel = $(zielfeld).val();
    if (wertquelle.indexOf(wertziel, 0) == 0) {
        //gleicher Text -> ins Zielfeld übertragen
        $(zielfeld).val(wertquelle);
    }
}

function UserStandortBestimmen() {
    var initialLocation;
    // Try W3C Geolocation (Preferred)
    if(navigator.geolocation) {
        browserSupportFlag = true;
        navigator.geolocation.getCurrentPosition(function(position) {
            initialLocation = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
            StandortAuswaehlenBlur(null, position.coords.longitude, position.coords.latitude)
        }, function() {
            handleNoGeolocation(browserSupportFlag);
        });
    // Try Google Gears Geolocation
    } else if (google.gears) {
        browserSupportFlag = true;
        var geo = google.gears.factory.create('beta.geolocation');
        geo.getCurrentPosition(function(position) {
            initialLocation = new google.maps.LatLng(position.latitude,position.longitude);
            StandortAuswaehlenBlur(null, position.coords.longitude, position.coords.latitude)
        }, function() {
            handleNoGeoLocation(browserSupportFlag);
        });
    }
    else {
        browserSupportFlag = false;
        handleNoGeolocation(browserSupportFlag);
    }

}

function handleNoGeolocation(errorFlag) {
    
}

