var suggest_count=0;
var suggest_selected=0;
var input_initial_value='';

$(window).load(function(){
        if(!search_suggestion_url)return;
        var typingTimer;                //timer identifier
        var doneTypingInterval = 42;  //time in ms

        if(document.getElementById('search_suggestion')==null){
                pa=document.getElementById('opensearch_input');
                if(!pa) return;
                rr=getDim(pa);
                var pos_left = rr.x;
                var pos_top = (rr.y + pa.offsetHeight);
                $('<ul id="search_suggestion"></ul>').appendTo('body').css({'display':'none','position':'absolute','left':pos_left,'top':Math.ceil(pos_top)});
        }
        
        $("#opensearch_input").focus();
        $("#opensearch_input").select();

        //Если keyup, start the countdown
        $("#opensearch_input").keyup(function(I){
                switch(I.keyCode) {
                        case 18:case 9: break;
                        case 38:case 40:break;
                        default: typingTimer = setTimeout(doneTyping, doneTypingInterval);
                        break;
                }
        });
        
        $('html').click(function(){
                $('#search_suggestion').hide();
        });

        $('#search_suggestion').click(function(event){
                if(suggest_count)
                        $('#search_suggestion').show();
                event.stopPropagation();
        });

        $("#opensearch_input").click(function(event){
                if(suggest_count)
                        $('#search_suggestion').show();
                if(suggest_selected>0){
                        $('#search_suggestion li').eq(suggest_selected-1).removeClass('active');
                        suggest_selected=0;
                        $(this).attr('value',input_initial_value);
                }
                event.stopPropagation();
        });
        $("#opensearch_input").keypress(function(J) {
                switch(J.keyCode) {
                        case 13:
                                if(suggest_selected==0)
                                        $(this).closest("form").submit();
                                else
                                        window.location=$('#search_suggestion li a').eq(suggest_selected-1).attr('href');
                                return false;
                        case 27:
                                return false;
                }
        });
        //on keydown, clear the countdown
        $("#opensearch_input").keydown(function(I){
             //   document.title=I.keyCode;
                switch(I.keyCode) {
                        case 18:case 9: break;
                        case 38:case 40:
                                I.preventDefault();
                                if(suggest_count)
                                        key_activate(I.keyCode-39)
                        break;
                        case 13:break;
                        case 27:
                                $(this).click();
                        break;
                        default:
                                clearTimeout(typingTimer);
                        break;
                }
        });


        function doneTyping (){
                $.getJSON(search_suggestion_url+$("#opensearch_input").attr("value"), show_suggestion);
        }
});

function getDim(el){
        for (var lx=0,ly=0;el!=null;
                lx+=el.offsetLeft,ly+=el.offsetTop,el=el.offsetParent);
        return {x:lx,y:ly}
}

function show_suggestion(res){
        if(res[1] && res[1].length){
                input_initial_value=res[0];
                suggest_count=res[1].length;
                suggest_selected=0;
                $('#search_suggestion li').each(function(){$(this).remove()});
                for(i in res[1]){
                        var option = document.createElement("li")
                        //option.value=item_imgs[item][i][0];
                        option.innerHTML='<a href="'+res[3][i]+'">'+unhtml(res[1][i])+'</a><i>'+unhtml(res[2][i]);
                        document.getElementById('search_suggestion').appendChild(option);
                }
                $('#search_suggestion').show(500);
        }
        else {
                suggest_count=0;
                $('#search_suggestion').hide();
        }
}

function key_activate(n){
        $('#search_suggestion li').eq(suggest_selected-1).removeClass('active');
        if(n ==1 && suggest_selected<suggest_count){
                suggest_selected++;
        }
        if(n ==-1 && suggest_selected>0){
                suggest_selected--;
        }
        if(suggest_selected>0){
                $('#search_suggestion li').eq(suggest_selected-1).addClass('active');
                $("#opensearch_input").attr("value",$('#search_suggestion li a').eq(suggest_selected-1).text());
        }
        else {
                $("#opensearch_input").attr("value",input_initial_value);
        }
}

function unhtml(s){
        return s.toString().replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&amp;/g, '&').replace(/&quot;/g, '"');
}

