var acTimeout = 0;
var acTimerID = -1;
var acKeycode;
$(document).ready(function() {
    $('div.searchArea input.input').keydown(function(event) {
        //$('#divJSDebug').append(event.keyCode + '|');
        acKeycode = event.keyCode;
        setTimeout(acKeypress, 100);
        $('div.searchSuggest a').mouseover(function(event) {
            $('div.searchSuggest a').removeClass('active');
            $(this).addClass('active');
        });
        $('div.searchSuggest a').mouseout(function(event) {
            $(this).removeClass('active');
        });
    });
    /*$('div.searchArea input.input').blur(function(event) {
        setTimeout(acHideSuggest, 250);
    });*/
});
function acKeypress() {
    if ((acKeycode >= 48 && acKeycode <= 57) ||
        (acKeycode >= 96 && acKeycode <= 105) ||
        (acKeycode >= 65 && acKeycode <= 90) ||
        acKeycode == 8 ||
        acKeycode == 109) {  //0-9, numpad 0-9, a-z, backspace, -
        if ($('div.searchArea input.input').val().length > 0) {
            if (acTimeout <= 0) {
                acTimeout = 300;
                acTimerID = setInterval(acIntervalLookup, 100);
            }
        }
    }
    if (acKeycode == 13) { //enter
        //hide suggestion box
        $('div.searchSuggest').hide();
    }
    if (acKeycode == 38 ||
        acKeycode == 40) { //up & down
        if (acKeycode == 38) {
            var active = 0;
            $('div.searchSuggest').show();
            $('div.searchSuggest').children('a.active').each(function() {
                $(this).prev('a').addClass('active');
                $('div.searchArea input.input').val($(this).prev('a').html());
                $(this).removeClass('active');
                active = 1;
            });
            if (active == 0) {
                $('div.searchSuggest').children('a:last').addClass('active');
                $('div.searchArea input.input').val($('div.searchSuggest').children('a:last').html());
            }
        }
        else if (acKeycode == 40) {
            var active = 0;
            $('div.searchSuggest').show();
            $('div.searchSuggest').children('a.active').each(function() {
                $(this).next('a').addClass('active');
                $('div.searchArea input.input').val($(this).next('a').html());
                $(this).removeClass('active');
                active = 1;
            });
            if (active == 0) {
                $('div.searchSuggest').children('a:first').addClass('active');
                $('div.searchArea input.input').val($('div.searchSuggest').children('a:first').html());
            }
        }
    }
}
function acHideSuggest() {
    $('div.searchSuggest').hide();
}
function acIntervalLookup() {
    acTimeout -= 100;
    if (acTimeout <= 0) {
        clearInterval(acTimerID);
        acServerLookup();
    }
}
function acServerLookup() {
    $.get(globalSiteRoot + "search/Suggestions.ashx", { q: $('div.searchArea input.input').val() }, function(data) {
        if (data.length > 0) {
            $('div.searchSuggest').html('');
            var suggestions = data.split('|');
            for (var i = 0; i < suggestions.length; i++) {
                $('div.searchSuggest').append('<a href="' + globalSiteRoot + 'products/all-products?keyword=' + suggestions[i] + '">' + suggestions[i] + '</a>');
            }
            $('div.searchSuggest').show();

            $('div.searchSuggest a').mouseover(function(event) {
                $('div.searchSuggest a').removeClass('active');
                $(this).addClass('active');
            });
            $('div.searchSuggest a').mouseout(function(event) {
                $(this).removeClass('active');
            });
        }
    });
}
