/* --- Global Timeout --- */

var logoutTimoutID = 0;
var intLogout      = 30 * 60 * 1000;
   
jQuery(function($) {
    if ( $('form#global-logout').length ) {
        // call first time the logout
        setLogout();
      
        // Set human interaction capture to set the interval back
        document.onkeydown   = interAction;
        document.onmousedown = interAction;
    }
    
    $('a.tariff_more').click(function() {
      var next = $(this).parents('table:first').find("tr.hideTariff").show();
                 $(this).parents('tr').hide().next().show();
    });
    $('a.tariff_less').click(function() {
      var next = $(this).parents('table:first').find("tr.hideTariff").hide();
                 $(this).parents('tr').hide().prev().show();
    });

});

// Suggest
jQuery(function($) {

    // dirty: host detection via DOM
    var host = '';
    var js = /(https?:\/\/[^\/]+)\/.*portal\.js$/;
    $('script[src]').filter(function() {
        return (this.src.search(js) > -1);
    }).each(function() {
        host = RegExp.$1;
    });

    //$('#global-search-0-search-search').unbind('keydown').unbind('keyup');
    // Autocomplete abschalten:
    $('#global-search-0-search-search').attr('autocomplete', 'off');
    $('#global-search-0-search-search').each(function() {
        // Charset erzwingen (damit auch auf ISO-Seiten UTF-8 verschickt wird):
        $(this.form).attr('accept-charset', 'UTF-8');
        // Erstmal dieses dumme hidden input-Feld entfernen, da wir sonst
        // die Formular-Action nicht ändern können:
        $("input:hidden[name='action']", this.form).remove();
        // Dann die Formular-Action hart setzen, damit das URL-encoding nicht
        // beim Redirect kaputt geht:
        $(this.form).attr('action', function() {
            return $(this).attr('action').replace(/.*\/redirect\/portal/, host);
        });
    });

    // Keydown-Events: Timer clearen, Cursor-Events verarbeiten, Enter
    // selektiert Ergebnis 
    $("#global-search-0-search-search").keydown(function(e) {
        if (document.searchTimer) clearTimeout(document.searchTimer);
        switch (e.which) {
            case 13: // Enter
                var container = $("div.suggestions:visible");
                if (container.length) {
                    // finde ein markiertes li
                    var li = $("li.active", container).eq(0);
                    if (li.length) {
                        e.preventDefault(); // damit das Formular nicht submittet wird
                        // klicke den ersten link im li
                        $("a", li).eq(0).each(function() {
                            location.href = $(this).attr("href");
                        });
                    }
                }
                break;
            case 40: // Cursor hoch
            case 38: // Cursor runter
                var cursorUp = (e.which == 40);
                var cursorDown = (e.which == 38);
                var container = $("div.suggestions").filter(":visible");
                if (container.length) {
                    // alle lis im container
                    var lis = $("li", container);
                    // finde ein markiertes li
                    var li = $("li.active", container).eq(0);
                    var next;
                    if (li.length) {
                        li.removeClass("active");
                        // index des li in der liste:
                        var index = lis.index(li);
                        if (cursorUp) {
                            if (index < lis.length-1) next = lis.eq(index+1);
                            else next = lis.eq(0);
                        } else {
                            if (index > 0) next = lis.eq(index-1);
                            else next = lis.eq(lis.length-1);
                        }
                    } else {
                        if (cursorUp) next = lis.eq(0);
                        else next = lis.eq(lis.length-1);
                    }
                    next.addClass("active");
                }
        }
    });

    // Keyup-Events: Eingabe im Suchfeld triggert AJAX-Suche,
    // ESC schließt Layer
    $("#global-search-0-search-search").keyup(function(e) {
        switch (e.which) {
            case 27: // ESC
                $("div.suggestions").hide();
                break;
            default:
                var val = $(this).val();
                if (val && (!document.lastSearch || val != document.lastSearch)) {
                    document.lastSearch = val;
                    document.searchTimer = setTimeout(function() {
                        var div = $("div.suggestions");
                        if (!div.length) {
                            var code = '<div class="suggestions">'
                                + '<div class="suggesttype shop"></div>'
                                + '<div class="suggesttype top"></div>'
                                + '<div class="suggesttype fulltext"></div>'
                                + '<form class="static" method="get" action="suche.php">'
                                + '<button type="button" class="submit">'
                                + 'Weitere Ergebnisse&nbsp;&raquo;</button>'
                                + '</form></div>';
                            div = $(code).appendTo($("#path"));
                            $("button.submit", div).click(function() {
                                $("#global-search-0-search-search").get(0).form.submit();
                            });
                        }
                        div.hide();
                        var search = $("#global-search-0-search-search").val();
                        var params = {search: search};
                        $.getJSON(
                            host+"/ajax/shopsuche.php?"+$.param(params)+"&jsonp=?",
                            function(data) {
                                var container = $("div.suggesttype.shop", div);
                                container.empty()
                                         .append($("<h3>"+data.title+"</h3>"));
                                var ul = $('<ul class="horizontal" />');
                                $.each(data.results, function(i, item) {
                                    var li = '<li tabindex="'+(i+1)+'">'
                                        +'<div class="img">'
                                        +'<a href="'+item.target+'" title="'+item.title+'">'
                                        +'<img src="'+item.img+'" alt="'+item.title+'"/>'
                                        +'</a></div>'
                                        +'<a href="'+item.target+'" title="'+item.title+'">'
                                        +item.name+'</a></li>';
                                    ul.append($(li));
                                });
                                container.append(ul);
                                if (data) container.parent().show();
                            }
                        );
                        $.getJSON(
                            host+"/ajax/suche.php?"+$.param(params)+"&jsonp=?",
                            function(data) {
                                var container = $("div.suggesttype.fulltext", div);
                                container.empty()
                                         .append($('<h3>'+data.title+'</h3>'));
                                var ul = $('<ul />');
                                $.each(data.results, function(i, item) {
                                    var li = '<li tabindex="'+(i+1)+'">'
                                        +'<a class="searchhit" href="'+item.target+'" title="'+item.title+'">'
                                        +item.name+'</a>'
                                        +'<p class="searchdesc">'+item.description+'</p>'
                                        +'</li>';
                                    ul.append($(li));
                                });
                                container.append(ul);
                                if (data) container.parent().show();
                            }
                        );
                        $.getJSON(
                            host+"/ajax/toptreffer.php?"+$.param(params)+"&jsonp=?",
                            function(data) {
                                var container = $("div.suggesttype.top", div);
                                container.empty()
                                         .append($('<h3>'+data.title+'</h3'));
                                var ul = $('<ul />');
                                $.each(data.results, function(i, item) {
                                    var li = '<li tabindex="'+(i+1)+'">'
                                    +'<a class="searchhit" href="'+item.target+'" title="'+item.title+'">'
                                    +item.name+'</a>'
                                    +'<p class="searchdesc">'+item.description+'</p>'
                                    +'</li>';
                                ul.append($(li));
                                });
                                container.append(ul);
                                if (data) container.parent().show();
                            }
                        );
                    }, 300);
                }
        }
    });
    
    // Clicks außerhalb des Suggest-Layers registrieren und den Layer schließen
    $(document).click(function(e) {
        if ($("div.suggestions:visible").length) {
            var clickedElement = e.target;
            var allowedElements = $("div.suggestions")
                                  .find('*')
                                  .add("#global-search-0-search-search");
            if (allowedElements.index(clickedElement) == -1) {
                $("div.suggestions").hide();
            }
        }
    });
    
});


function setLogout() {
    logoutTimoutID = setTimeout ( "logout()", intLogout );
}


// logout function
function logout (){
    $("form#global-logout").submit();
}

function interAction (e) {
    clearTimeout ( logoutTimoutID );
    setLogout();
}

