jQuery(document).ready(function() {
	document.getElementById("search-form").setAttribute("autocomplete","off");
	setupLiveSearch();
});

function setupLiveSearch() {
	SearchFormId = "#search-form";
	SearchFieldId = "#search-query";
	HiddenSearchFieldId = "#hidden-search-query";
	SearchResultsId = "#search-results";
	SearchResultsListId = "#search-results-list";

	SearchForm = jQuery(SearchFormId);
	SearchField = jQuery(SearchFieldId);
	HiddenSearchField = jQuery(HiddenSearchFieldId);
	SearchResults = jQuery(SearchResultsId);
	SearchResultsList = jQuery(SearchResultsListId);

	SearchField.blur(function() { setTimeout(function () {clearsearch()}, 200) });
	SearchField.keyup(function(e) {
		var keyCode = e.keyCode || window.event.keyCode;
		var lastvalue = escape(SearchField.val());
		if(updownArrow(keyCode)){
			return;
		};
		if(keyCode == 13) {
			clearsearch();
			SearchForm.submit();
			return;
		};
		if(keyCode == 27) {
			clearsearch();
			return;
		};
		offset=0;
		setTimeout(function () {runQuery(lastvalue,0)}, 200);
	});
};

function runQuery(lastvalue,offset)
{
        var query = escape(SearchField.val());
        if(query == ''){
                clearsearch();
                return;
        }

        if(lastvalue != query){
                return;
        }

        jQuery.getJSON("/cgi-bin/search/livesearch.pl?live=yes&amp;offset=" + offset + "&amp;query=" + query, function(json){
                var ansLength = SearchResultsListTotal = json.length;
                if(ansLength > 0){

                        var newData = '';
			totalresults = json[0];

			newData ='';

                        for(i=1; i < ansLength; i++) {
				var jsondata="";
				var jsondata=json[i].split("||");
				if (jsondata[1].length > 1) {
					newData += '<div class="result"><span style="display: none;">' + jsondata[0] + '</span><img src="' + jsondata[1] + '" alt="" /><div class="result-text"><span class="result-topic">' + jsondata[2] + '</span><br /><span class="result-type">' + jsondata[3] + '</span></div></div>';
				} else {
					newData += '<div class="result"><span style="display: none;">' + jsondata[0] + '</span><img src="http://images.starpulse.com/images/star-placeholder.jpg"/><div class="result-text"><span class="result-topic">' + jsondata[2] + '</span><br /><span class="result-type">' + jsondata[3] + '</span></div></div>';
				};
                        }

                        SearchResultsList.html(newData);
			jQuery('#ad1').css('visibility','hidden');
			jQuery('#ad2').css('visibility','hidden');
                        SearchResults.slideDown("fast");

                        var divs = jQuery(SearchResultsListId + " > div");

                        // on mouse over clean previous selected and set a new one
                        divs.mouseover( function() {
                                divs.each(function(){ jQuery(this).removeClass("highlight"); });
                                jQuery(this).addClass("highlight");
                        })
                        divs.mouseout( function() {
                                divs.each(function(){ jQuery(this).removeClass("highlight"); });
			})

			SearchResultsList.children().each(function(i){
				if(i == SearchResultsListCurrent){
					HiddenSearchField.val(this.childNodes[0].childNodes[0].nodeValue);
					// SearchField.val(this.childNodes[2].childNodes[0].childNodes[0].nodeValue);
					jQuery(this).addClass("highlight");
				} else {
					jQuery(this).removeClass("highlight");
				}
			});

                        // on click copy the result text to the search field and hide
                        divs.click( function() {
                                HiddenSearchField.val(this.childNodes[0].childNodes[0].nodeValue);
				// SearchField.val(this.childNodes[2].childNodes[0].childNodes[0].nodeValue);
                                clearsearch();
				SearchForm.submit();
                        })

                } else {
                        clearsearch();
                }
        })
}

function clearsearch() {
	SearchResults.slideUp("fast", function() { SearchResultsList.html (""); });
	jQuery('#ad1').css('visibility','visible');
	jQuery('#ad2').css('visibility','visible');
};

function updownArrow(keyCode) {
	var query = escape(SearchField.val());
        if(keyCode == 40 || keyCode == 38){

                if(keyCode == 38){ // keyUp
                        if(SearchResultsListCurrent == 0 || SearchResultsListCurrent == -1){
				if (offset > 0) {
					offset--;
					runQuery(query,offset);
				}
                        }else{
                                SearchResultsListCurrent--;
                        }
                } else { // keyDown
                        if(SearchResultsListCurrent == SearchResultsListTotal-2){
				offset++;
				runQuery(query,offset);
                        }else {
				SearchResultsListCurrent++;
                        }
                }

                // loop through each result div applying the correct style
                SearchResultsList.children().each(function(i){
                        if(i == SearchResultsListCurrent){
                                HiddenSearchField.val(this.childNodes[0].childNodes[0].nodeValue);
				// SearchField.val(this.childNodes[2].childNodes[0].childNodes[0].nodeValue);
                                jQuery(this).addClass("highlight");
                        } else {
                                jQuery(this).removeClass("highlight");
                        }
                });

                return true;
        } else {
                // reset
                SearchResultsListCurrent = -1;
                return false;
        }
}
