var handler,
resultsHandler,
minLength,
position;

resultsHandler = '#autoCompleteResult';
position = -1;

//on keyup
function autocomplete(handler, minLength, event){

    //jesli nie jest klawiszem strzaki 
    if(! (isAllowKey(event.keyCode)) ){
        position = -1;
        term = $(handler).attr('value');

        if(term.length >= minLength){ 
                  
            $.ajax({
                url: '/search/autocomplete',
                dataType: 'json',
                data: {
                    term : term,
                    format : 'json'
                },
                success: function(data){
                     
                    $(resultsHandler+' ul').empty();
                      
                    counter = 0;
                    $.each( data, function(){
                        $(resultsHandler +' ul').append('<li><a href="' + this.url + '"><div class=image><img src="'+ this.image +'" /></div><div class="name">'+ this.name +'<div class="type">'+this.type+'</div></div></a></li>');
                        counter++;
                    });
                   
                    $(resultsHandler + ' ul li').hover(function(){
                        $(resultsHandler + ' ul li').removeClass('active');
                    }); 
                    
                    appendSeeAllLink(term);
                    
                    //show result div
                    if(counter > 0){
                        if( $(resultsHandler).css('display') != 'block' ){
                            $(resultsHandler).fadeIn('fast');
                        }
                    }else{
                        $(resultsHandler).fadeOut('fast');
                    }
                }
            });        
        }
    
        //close
        $('html :not('+resultsHandler+')').click(function(){
             $(resultsHandler).fadeOut('fast');
        });    
    }
}

function appendSeeAllLink(href){
    $(resultsHandler + ' ul').append('<li class="seeAll"><a href="/search?query='+href+'">zobacz szczegółowe wyniki</a></li>');
}

function isAllowKey(key){
    if(key == 38 || key == 40){
        return true;
    }
    return false;
}

function hoverItem(item){
    $(resultsHandler + ' ul li').removeClass('active');
    $(resultsHandler + ' ul li:eq(' + item + ')').addClass('active');
}

function enterItem(item){
    var aItem = $(resultsHandler + ' ul li:eq(' + item + ')').find('a');
    location.replace(aItem.attr('href'));
}




$(window).keypress(
    function(event){
        var allItems = $(resultsHandler + ' ul li').size();
        
        if ($(resultsHandler + ' ul').is(':visible')) {
            //up
            if(event.keyCode == 38){
                //alert(position);
                if(position > 0){
                    position--;
                    hoverItem(position);
                } 
            }
            //down
            else if(event.keyCode == 40){
                //alert(position);
                if( allItems > position + 1){
                    position++;
                    hoverItem(position);
                }
            }
            //enter
            else if(event.keyCode == 13){
               
                if(position > -1){
                    enterItem(position);
                    return false
                }
                
            }
        }
}); 
 
 
   
 

