var qsConfig = new Object();
var qsChanged = true;
var qsBeginChange = false;
var timer;
qsConfig.time = 1000000;
qsConfig.pause = 0;

var activeElement = null;
var lastQuerry = null;


function qsHide() {
    if (qsConfig.pause == 0) {
        qsConfig.pause = 1;
        window.clearTimeout(timer);
    }
    $('#quicksearch').css("display", "none");
}

function qsStart() {
    if (qsConfig.pause == 1) {
        qsConfig.pause = 0;
        if (qsConfig.time)
            timer = window.setTimeout('qsHide()', qsConfig.time);
    }
}

function qsStop() {
    if (qsConfig.pause == 0) {
        window.clearTimeout(timer);
        qsConfig.pause = 1;
    }
}

function qsKeyPress(e) {
    var kC = (window.event) ? event.keyCode : e.keyCode;
    var kEsc = 27;
    if (kC == Esc) {
        qsHide();
    }
}

function nazwaKeyDown(e) {
    var kC = (window.event) ? event.keyCode : e.keyCode;
    var kEsc = 27;

    if (kC == kEsc)
    {
        if ($("#search-text").attr("value") == "") return false;
        if (activeElement != null)
        {
            activeElement.css("background", "");
            activeElement = null;
            if (lastQuerry != null)
            {                
                $("#search-text").attr("value", lastQuerry);
            }
            return false;
        }
        qsHide();
        if (lastQuerry != null)
        {
            if (lastQuerry == $("#search-text").attr("value"))
            {
                $("#search-text").attr("value", "");
                activeElement = null;
                return false
            }
            $("#search-text").attr("value", lastQuerry);
        }
        return false;
    }
    else if (kC == 13) //enter
    {
        e.preventDefault();
        if (qsBeginChange == true) return false;

        if (activeElement != null)
        {
            if (activeElement.parent().is(".qs"))
            {
                var adres = activeElement.find("a:first").attr("href");
                top.location = adres;
                return false;
            }
            else
            {
                wyszukajclick();
                return false;
            }
        }
        else
        {
            wyszukajclick();
            return false;
        }
    }
    else if (kC == 38) //gora
    {
        e.preventDefault();
        if (qsBeginChange == true) return false;
        if (activeElement == null)
        {
            if ($(".qs").length != 0)
                activeElement = $(".qs").children(":last");
            else if ($(".ac").length != 0)
                activeElement = $(".ac").children(":last");
            else
                return false;
        }
        else
        {
            if (activeElement.is(":first-child"))
            {
                if (activeElement.parent().is(".ac"))
                {
                    if ($(".qs").length != 0)
                    {
                        activeElement.removeClass("selected");
                        activeElement = $(".qs").children(":last");
                    }
                    else
                    {
                        activeElement.removeClass("selected");
                        activeElement = $(".ac").children(":last");
                    }
                }
                else
                {
                    if ($(".ac").length != 0)
                    {
                        activeElement.removeClass("selected");
                        activeElement = $(".ac").children(":last");
                    }
                    else
                    {
                        activeElement.removeClass("selected");
                        activeElement = $(".qs").children(":last");
                    }
                }
            }
            else
            {
                activeElement.removeClass("selected");
                activeElement = activeElement.prev();
            }
        }
        activeElement.addClass("selected");
        $("#search-text").attr("value", activeElement.find("a:first").text());
        return false;
    }
    else if (kC == 40) //dol
    {
        e.preventDefault();
        if (qsBeginChange == true) return false;
        if (activeElement == null)
        {
            if ($(".ac").length != 0)
                activeElement = $(".ac").children(":first");
            else if ($(".qs").length != 0)
                activeElement = $(".qs").children(":first");
            else
                return false;
        }
        else
        {
            if (activeElement.is(":last-child"))
            {
                if (activeElement.parent().is(".ac"))
                {
                    if ($(".qs").length != 0)
                    {
                        activeElement.removeClass("selected");
                        activeElement = $(".qs").children(":first");
                    }
                    else
                    {
                        activeElement.removeClass("selected");
                        activeElement = $(".ac").children(":first");
                    }
                }
                else
                {
                    if ($(".ac").length != 0)
                    {
                        activeElement.removeClass("selected");
                        activeElement = $(".ac").children(":first");
                    }
                    else
                    {
                        activeElement.removeClass("selected");
                        activeElement = $(".qs").children(":first");
                    }
                }
            }
            else
            {
                activeElement.removeClass("selected");
                activeElement = activeElement.next();
            }
        }
        activeElement.addClass("selected");
        //$("#search-text").text(activeElement.find("a:first").text());
        $("#search-text").attr("value", activeElement.find("a:first").text());
        return false;
    }
    else if (kC == 39 || kC == 37) //lewo prawo
    {
        return false;
    }
    else //inny klawisz
    {
        $("#search-text").change();
        return true;
    }
}

function qsInit() {
    $('#quicksearch').mouseover(function(event) { qsStop(); });
    $('#quicksearch').mouseout(function(event) { qsStart(); });
    $('#quicksearch').keypress(function(event) { qsKeyPress(event); });
    $('#quicksearch').mousedown(function(event) { $('#search-text').focus(); return false; });    
    $('#search-text').mouseover(function(event) { qsStop(); });
    $('#search-text').mouseout(function(event) { qsStart(); });
    $('#search-text').keydown(function(event) { nazwaKeyDown(event); });
    $('#search-text').blur(function (event) { qsHide(); return false; });

    $("#search-text").change(function()
    {
        if (qsChanged)
        {
            qsChanged = false;            
            qsBeginChange = true;
        }
    });

    setInterval(function () {
        if (qsBeginChange) {
            qsBeginChange = false;
            activeElement = null;
            lastQuerry = $("#search-text").val();
            if (lastQuerry == "" || lastQuerry == "np. notebook")
                return;
            $.get("/quicksearch_ws.ashx", { qtand: $("#search-text").val() },
            function (data) {
                if (data != "") {
                    $('#quicksearch').css("display", "block");
                    $('#quicksearch').html(data);
                    qsChanged = true;
                }
                else {
                    $('#quicksearch').css("display", "none");
                    qsChanged = true;
                }
            }, 'html');
        }

    }, 1000);
}

