/* START: JQuery */
$(document).ready(function() {
    initAll2();
    initMRDealerSearchbox();
});

function initAll2() {
    $("#navigation-sitemap-link").mouseover(function() { showSitemap(); });
    //$("#navigation-modelrangeoverview-link").mouseover(function() { showModels(); })
    $("#navigation-modelrangeoverview-link, #navigation-wappen, #navigation-sub, #navigation-bluebox, #footer, #content").mouseover(function() { showContent(); });
    $("#metamyporsche, #metalogin, #metasitesearch, #metadealersearch").mouseover(function() { activeMetaDrop(this); });

    checkLoginError();
    initInfoLayerClueTip();
}

function showContent() {
    $("#navigation-sitemap, #navigation-sitemap-shadow, #navigation-modelrangeoverview, #navigation-modelrangeoverview-shadow").hide();
    $("#navigation-modelrangeoverview-link, #navigation-sitemap-link, #navigation-sub, #navigation-bluebox, #menu1, #footer").removeClass("fadeout"); //.css("opacity", "1.0");
    $("#metamyporschecontainer, #metalogincontainer, #metasitesearchcontainer, #metadealersearchcontainer").hide();
    $("#metamyporsche, #metalogin, #metasitesearch, #metadealersearch").parent().removeClass("active");
    $("#metamyporsche, #metalogin").parent().removeClass("activeborderleft");
    $("#metadealersearch").removeClass("activeborderright");
    if (g_is_ie6) 
    {
        ieToggleDropDowns(getListIEDropDowns(), false);
    }
}
function hideContent(element) {
    //$("#navigation-sub, #navigation-bluebox, #footer, #menu1" + element).addClass("fadeout"); 
}
function showSitemap() {
    $("#navigation-sitemap-link").removeClass("fadeout");
    $("#navigation-modelrangeoverview, #navigation-modelrangeoverview-shadow").hide();
    hideContent(", #navigation-modelrangeoverview-link");
    var height = 0 + $("#navigation-sitemap").height();
    height = height + 32 // padding top + bottom;
    //$("#navigation-sitemap-shadow").height(height);
    $("#navigation-sitemap-shadow, #navigation-sitemap").show();
    //$("#navigation-sitemap").show();
}
function showModels() {
    // wenn "Modelle" = aktiver Menüpunkt, dann nicht das Flyout-Script ausführen
    if (!$("#navigation-modelrangeoverview-link").hasClass("active")) {
        $("#navigation-modelrangeoverview-link").removeClass("fadeout");
        $("#navigation-sitemap, #navigation-sitemap-shadow").hide();
        hideContent(", #navigation-sitemap-link");
        var height = 0 + $("#navigation-modelrangeoverview").height();
        height = height + 32 // padding;
//        $("#navigation-modelrangeoverview-shadow").height(height);
        $("#navigation-modelrangeoverview-shadow").show();
        $("#navigation-modelrangeoverview, #navigation-modelrangeoverview-shadow").show();
    }
    else {
        showContent();
    }
}

function activeMetaDrop(element) {

    //drops ausbleneden
    $("#metamyporschecontainer, #metalogincontainer, #metasitesearchcontainer, #metadealersearchcontainer").hide();
    $("#metamyporsche, #metalogin, #metasitesearch, #metadealersearch").parent().removeClass("active");
    $("#metamyporsche, #metalogin").parent().removeClass("activeborderleft");
    $("#metadealersearch").removeClass("activeborderright");

    if (g_is_ie6) 
    {
        if (element.id == 'metalogin' || element.id == 'metadealersearch')
            ieToggleDropDowns(getListIEDropDowns(), true);
        else
            ieToggleDropDowns(getListIEDropDowns(), false);
    }

    // wenn element an erster Stelle steht wird ein Border eingeblendet
    if ($(element).hasClass("metafirst")) {
        $(element).parent().addClass("activeborderleft");
    }
    //wenn es dealersearch ist 
    if ($(element).hasClass("metadealersearch")) {
        $(element).addClass("activeborderright");
    }
    
    $(element).parent().addClass("active");

    var container = element.id + "container";
    $("#" + container).show();
//document.getElementById(container).show();
}

function checkLoginError() {
    var errorcode = getUrlParamValue('error');
    if (errorcode == 1 || errorcode == 2) {
        $("#metalogincontent").addClass("errorCon");
        $("#metaloginshadow").addClass("errorSha");
        $("#metalogincontainer").show();
        $("#metalogin").addClass("activeborderleft");
      

        if (errorcode == 1)
            $("#metaloginerror1").show();
        if (errorcode == 2)
            $("#metaloginerror2").show();
     
            
    }
}

var g_clueTip_ModelLayer_TimeoutId = null;
var g_clueTip_ModelLayer_TimeoutMillisec = 1000;

function initInfoLayerClueTip() 
{
    $('a.modelLink').cluetip({
                                width: 369 //466
                              , height: 285 //SELECT_INFOLAYER_HEIGHT
                              , positionBy: 'mouse' // can be  'auto', 'mouse', 'bottomTop', 'fixed'
                              , fx: {
                                  open: 'fadeIn', // can be 'show' or 'slideDown' or 'fadeIn'
                                  openSpeed: 'fast'
                              }
                              , local: true
                              , cursor: 'pointer'
                              , showTitle: false
                              , dropShadow: false
                              , topOffset: 40
                              , leftOffset: 15
                              , sticky: true
                              , mouseOutClose: true
                              //, onShow: clueTipModelLayerSetTimeout
                              , onShow: clueTipModelLayerClearTimeout
                              , onClose: clueTipModelLayerClearTimeout

                              , hoverIntent: {
                                    sensitivity: 7
                                  , interval: 75
                              }
                              , closeText: ''
                          });

//                          $('#cluetip').hover(
//                            function() {
//                                log("ct mouseover");
//                            }, 
//                            function() {
//                                log("ct mouseout");
//                                $(this).hide();
//                            }
//                          );
//

                          //$('#cluetip').mouseover(clueTipModelLayerClearTimeout);
                          $('#cluetip').bind('mouseenter', clueTipModelLayerClearTimeout);
                          $('a.modelLink, a.modelLink img').mouseout(clueTipModelLayerSetTimeout);
                          $('a.modelLink, a.modelLink img').bind('mouseenter', clueTipModelLayerClearTimeout);
//                          $('a.modelLink, a.modelLink img, a.modelLink span').mouseout(clueTipModelLayerSetTimeout);
//                          $('a.modelLink img, a.modelLink span').bind('mouseenter', function() { $('#cluetip').show(); });
//                          $('a.modelLink, a.modelLink img, a.modelLink span').bind('mouseenter', clueTipModelLayerClearTimeout);
}


function clueTipModelLayerSetTimeout() {
    clueTipModelLayerClearTimeout();
    g_clueTip_ModelLayer_TimeoutId = window.setTimeout("$('#cluetip').hide()", g_clueTip_ModelLayer_TimeoutMillisec);
    log("cluetip timeout set to " + g_clueTip_ModelLayer_TimeoutMillisec);
}
function clueTipModelLayerClearTimeout() {
    window.clearTimeout(g_clueTip_ModelLayer_TimeoutId);
    log("cluetip timeout cleared!");
}

/* END: JQuery */


function switchFooter() {
    var elem = document.getElementById("ifLoggedOut");
    var elem2 = document.getElementById("ifLoggedIn");

    if (elem && elem2) {
        elem.style.display = (elem.style.display == 'inline' || elem.style.display == '') ? 'none' : 'inline';
        elem2.style.display = (elem.style.display == 'inline') ? 'none' : 'inline';
    }
    //wechsel Loginstatus in der meta Navi
   var elem3 = document.getElementById("ifmetaLoggedOut");
   var elem4 = document.getElementById("ifmetaLoggedIn");

   if (elem3 && elem4) {
        elem3.style.display = (elem3.style.display == 'inline' || elem3.style.display == '') ? 'none' : 'inline';
        elem4.style.display = (elem3.style.display == 'inline') ? 'none' : 'inline';
   }
}

function filter() {

    var val1 = document.getElementById("modeltype").value;
    var val2 = document.getElementById("modeldrivetrain").value;
    var val3 = document.getElementById("modelprice").value;
    var val4 = document.getElementById("modelpower").value;


    for (var i in tmpHashtable.items)
    {
        var element = document.getElementById(i);
        if (!element)
            continue;
        var code = tmpHashtable.items[i];
        i = "#" + i;
        if(!$(i).hasClass("fadeout"))
            $(i).addClass("fadeout");
       
        var c1 = code.slice(0, 1);  var c2 = code.slice(1, 2);  var c3 = code.slice(2, 3);  var c4 = code.slice(3, 4);
        var w1 = val1;  var w2 = val2;  var w3 = val3;  var w4 = val4;

        if (val1 == '' || val1 == 0) w1 = c1;
        if (val2 == '' || val2 == 0) w2 = c2;
        if (val3 == '' || val3 == 0) w3 = c3;
        if (val4 == '' || val4 == 0) w4 = c4;

        if (w1 == c1 && w2 == c2 && w3 == c3 && w4 == c4) {
            $(i).removeClass("fadeout");
        }
    }
}
function filterreset() 
{
    document.getElementById("modeltype").selectedIndex=0;
    document.getElementById("modeldrivetrain").selectedIndex=0;
    document.getElementById("modelprice").selectedIndex=0;
    document.getElementById("modelpower").selectedIndex=0;
}


/* START DEALER SEARCH */


var searchMRBlockShadowId = 'metadealersearchshadow';

function porscheCenterMRSearchHandleError(errCode, errorMessage, fallBackMessage) {
    preInitMRPorscheCenterSearch(searchMRBlockShadowId);
    var msg;
    if (errorMessage && trim(errorMessage) != '') {
        msg = errorMessage;
       // log("INFO: Text \"" + errCode + "\" gefunden.");
    }
    else {
        msg = fallBackMessage; // fallback error message.
       //log("FEHLER: Text \"" + errCode + "\" nicht gefunden! Falls zurück auf den generischen Text '" + escape(fallBackMessage) + "'");
    }
    $("<p class=\"error\"></p>").text(msg).appendTo("#metamrdealersearchresults");
}


function preInitMRPorscheCenterSearch(searchBlockShadowId) {
    // handle intro-facts
    if ($(".introFacts").length > 0) {
        // stretch the result container downwards
        //  $("#porscheCenterSearchResults").css("height", "259px");
    }
    // set initial height;
    //$("#" + searchBlockShadowId + "").css("height", "60px");
    // "loading.." Gif animation.
    $("#metamrdealersearchresults").addClass("loading");
    // set page cursor to progress, so that the user knows we're doing something.


}

// initDealerSearchbox helper function
function initMRPorscheCenterResultsDisplay(searchBlockId) {

    // hide introfacts elements
    //$('.introFactsShade, .introFactsContent').hide();
    // cancel the "loading.." sequence.
    $('#metamrdealersearchresults').removeClass('loading');
    // make site search almost almost transparent 
    //to draw the focus on the center search.
    //$("a.homeHead").fadeTo(150, 0.3);
    // setup region click sensing to close the window when clicked "outside".
    //handleClickOutsideMR($("#" + searchBlockId), "MRSearchClickedOutsideEvents()", true);
    //$("#metadealersearchresultsBG").show();
    //$("#metadealersearchresults").show();
}

function MRSearchClickedOutsideEvents() {
    // reset heights
    //$("#porscheCenterSearchResults").css("height", "auto");
    // reset site search visibility
    //$("#p_searchSite *, a.homeHead").fadeTo(150, 1.0);
    // hide result container.
    //$('#metadealersearchresultsBG').hide();
    //$('#metamrdealersearchresults').hide();
    // reset searchbox shadow to original height
    //$("#dealersearchHomeShadow, #searchsitePageShadow").css("height", "64px");
    // if they are available, re-display intro-facts elements.
    $('.introFactsShade, .introFactsContent').show();

}

function handleClickOutsideMR(obj, doEvent, bindOnce) {

    var elmo;
    if (obj.length && obj.length > 0)
        elmo = obj[0];
    else
        elmo = obj;

    // 
    //*******************************
    //Document click management 
    //******************************* 
    ///
    $(document).click(function(e) { // when anywhere in the doc is clicked
        var clickedOutside = true; // start searching assuming we clicked outside
        $(e.target).parents().andSelf().each(function() { // search parents and self
            // if the original element selector is the click's target or a parent of the target
            // we have not clicked outside the box
            if (this == elmo) {
                clickedOutside = false; // found
               //log("ClickedOutside = false. Returning..")
                return false; // stop searching
            }
        });
        if (clickedOutside) {
           //log("ClickedOutside = true. executing " + doEvent);
            eval(doEvent);
            //$(elmo).fadeOut("fast");
            if (bindOnce) {
                // unbind this listener, we're done with it
                $(document).unbind('click', arguments.callee);
            }
        }
    });
}

function getPoolLangUrl(pool, lang) {
    return (lang != 'none') ? pool + '/' + lang : pool;
}

// dealer search box on the homepage
function initMRDealerSearchbox() {
   //log("initMRDealerSearchbox() entered.");

    // Setup Dealer Vicinity Search
    var searchMRBlockId = "metamrdealersearchcontent";
   var searchMRBlockShadowId = "metadealersearchshadow";
    //var searchMRFieldBGColor = $("#metadealersearchcontent .searchfield").css("background-color"); // initial background color
   // $("#test").click(function() {
    //    log("haendler suchbox geklickt!");

    //}).focus(function() {
       //log("#" + searchMRBlockId + " .searchfield gotFocus");
        
        // empty default value
        if (this.value == this.defaultValue) {
            this.value = "";
        }
        // initialize search results container
        var searchMRResultContainer = $("#metamrdealersearchresults");


        //if (searchMRResultContainer.length == 0) {
           //log("First time call. setting up searchResultContainer");
            // layout setup
            //$("<div id=\"metadealersearchresultsBG\"></div><div id=\"metadealersearchresults\"><ul></ul></div>").insertAfter("#" + searchMRBlockShadowId);


            // intro text
            var titleMRImgHtml = "<img src=\"/" + CURRENTPOOL + "/ImageMachines/LinkBlockTitle.ashx/rendered.gif?text=" + encodeURIComponent($("input[name='porscheCentersNearYou']").val()) + "\" />";
            //log("titleImgHtml: " + titleImgHtml);
            $("<p></p>").html(titleMRImgHtml).prependTo("#metamrdealersearchresults");

            preInitMRPorscheCenterSearch(searchMRBlockShadowId);

            //$("#metadealersearchresultsBG").show();

            //load and display results
            var MRsearchUrl = "";
            MRsearchUrl += "/all/dealer2/search.aspx?siteid=" + CURRENTPOOL + "&market=" + CURRENTPOOL + "&language=" + CURRENTLANGUAGE + "&mode=nearestbyip&locationtype=centre&maxresults=2";

            $("body").css("cursor", "progress");
            $.ajax({
                url: MRsearchUrl,
                dataType: "xml",
                success: function(data) {
                    // process resulting html here
                    var dealersFound = false;
                    $(data).find('#dealerNonHTML dealer').each(function() {
                        // raise flag "at least one dealer found!"
                        if (!dealersFound) dealersFound = true;
                        // Porsche center URL (Google Porsche Center Search)
                        var pcUrl = "";
                        if (CURRENTPOOL == "usa") {
                            pcUrl = $(this).find('dealerlink').text();
                        }
                        else {
                            pcUrl = "/all/dealer2/" + getPoolLangUrl(CURRENTPOOL, CURRENTLANGUAGE) + "/location.aspx?locationId=" + $(this).attr("nr") + "&locationtype=centre";
                        }
                        // build Porsche center link
                        var link = $("<a target=\"_blank\" href=\"" + pcUrl + "\" >" + $(this).find('name').text() + "</a>");
                        // wrap link in <li> and append the whole thing to the <ul>.
                        $("<li></li>").append(link).appendTo('#metamrdealersearchresults ul');
                        // setup porsche center link click function.
                        // (yes, we can refer to an object after inserting it into the dom)
                      /*  $(link).click(function() {
                            // Porsche center link Click events 
                            try {
                                click_track('Klick-Startseite/Search/Dealer');
                            }
                            catch (e) {
                               //log("FEHLER: WIREDMINDS tracking gescheitert. Auf DEV-Server kann man diesen Fehler ignorieren.");
                            }


                            var winOptions = false;
                            if (CURRENTPOOL == 'germany') {
                                winOptions = "left=40,top=40,dependent=yes,location=yes,resizable=yes,scrollbars=yes,status=yes,toolbar=yes,menubar=yes,directories=yes,personalbar=yes";
                            }
                           //log("winOptions: " + winOptions);
                            //openDealerLocator(null, 980, 725, 'dealer', pcUrl, winOptions);
                            return false; // we don't want to open the link in the current window.
                        });*/
                    }); //.each
                    if (!dealersFound) {
                        // We could not find any dealers,
                        // display an appropriate message
                       //log("No centers found");
                        porscheCenterSearchHandleError('noCentersFound', $("input[name='noCentersFound']").val(), "NO PORSCHE CENTERS FOUND.");
                    }
                }, //success: function(data)
                error: function(request, error) {
                   //log("HTTP-FEHLER: Typ '" + error + "'");

                    porscheCenterSearchHandleError('errorInProcess', $("input[name='errorInProcess']").val(), "HTTP-ERROR.");
                },
                complete: function() {
                    $("body").css("cursor", "default");
                    preInitMRPorscheCenterSearch(searchMRBlockShadowId);
                    initMRPorscheCenterResultsDisplay(searchMRBlockId);
                }
            }); // $.ajax

     //   }
      //  else {
       //     log("Search container exists");
        //    preInitMRPorscheCenterSearch(searchMRBlockShadowId);

            //initMRPorscheCenterResultsDisplay(searchMRBlockId);
        //}

    //}).blur(function() {
        // reset default value if lost focus
     //   $(this).css("background-color", searchMRFieldBGColor);
     //   if (!this.value.length) {
     //       this.value = this.defaultValue;
     //   }
     //   log("haendler suchbox: blur");

    //});
    return false;
}


 /* END DEALER SEARCH */

//Parameter aus Url auslesen |erwartet parametername|liefert wert des Parameters
function getUrlParamValue(parametername) {
    parametername = parametername.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");

    var regexpQ = "[\\?&]" + parametername + "=([^&#]*)";
    var regexp = new RegExp(regexpQ);
    var paramValue = regexp.exec(window.location.href);

    if (paramValue == null)
        return "";
    else
        return paramValue[1];
}
