/* Searchbox Autocomplete */

//var ezAutocompleteServiceUrl = "http://://[base_ramp_url]/autocomplete/[sitetoken]?callbackName=queryExpansion_callback&q=";
//var ezAutocompleteSearchUrl = "http://[base_ramp_url]/search?";
var queryExpansionSearchTimer = null;
var queryExpansionSearchBox = null;
var queryExpansionListBox = null;


queryExpansion_init = function(searchBox, listBox){
    queryExpansionSearchBox = searchBox;
    queryExpansionListBox = listBox;
    
    jQuery(queryExpansionSearchBox).attr("autocomplete", "off");
    
    jQuery(queryExpansionSearchBox).bind("blur", function(event){
        jQuery(queryExpansionListBox).css("display", "none");
    });
    
    jQuery(queryExpansionListBox).bind("blur", function(){
        jQuery(queryExpansionListBox).css("display", "none");
    });
    
    jQuery(queryExpansionSearchBox).bind("keydown", function(event){
        var selected = jQuery("a.selected", queryExpansionListBox);
        
        // The up/down key events
        if (event.keyCode == 38 || event.keyCode == 40){
           if (selected.length > 0){
                if (event.keyCode == 38) {
                    selected = selected.prev();//up
                }else{
                    selected = selected.next();//down
                }
            }
            
            if (selected.length == 0){
                if (event.keyCode == 38) {
                    selected = jQuery("a:last-child", queryExpansionListBox);
                }else{
                    selected = jQuery("a:first-child", queryExpansionListBox);
                }
            }
            
            if (selected.length == 0) { return; }
            
            jQuery(queryExpansionListBox).css("display", "block");
            selected.addClass("selected").siblings().removeClass("selected");
            jQuery(queryExpansionSearchBox)[0].value = jQuery(selected[0]).text();
            
        // Any other keys pressed
        }else{
            if (queryExpansionSearchTimer != null){
                clearTimeout(queryExpansionSearchTimer);
            }
            queryExpansionSearchTimer = setTimeout(queryExpansion_getData, 300);
        }
    });
};


queryExpansion_callback = function(data, textStatus){
    var el = jQuery(queryExpansionListBox);
    var list = data.ac.q;
    var content = "";
    
    if (list.length > 0){
        el.css("display", "block");
    }else{
        el.css("display", "none");
    }
    
    for (var i = 0; i < list.length; i+=1){
        var url = ezAutocompleteSearchUrl + "q=" + list[i];
        content += "<a href='' onmousedown='window.location=\""+ url + "\"'>" + list[i] + "</a>"
    }
    
    el.each(function(){
        this.innerHTML = content;
    });
};


queryExpansion_getData = function(){
    var url = ezAutocompleteServiceUrl + encodeURIComponent(jQuery(queryExpansionSearchBox)[0].value);
    var head = document.getElementsByTagName("head")[0];
    var newScript = document.createElement("script");
    newScript.type = "text/javascript";
    newScript.src = url;
    head.appendChild(newScript);
};

