google.load("jquery", "1.3.2");
google.load("jqueryui", "1.7.2");

google.setOnLoadCallback(function() {
    var config = {
		mouseDownOnSelect: false
	};
    var searchBox = $(".searchbox");
    var searchbutton = $(".searchbutton");
    var searchResultHolder = $('#suggestions');
    
    searchBox.attr('autocomplete', 'off');
    searchBox.click(function() { if (searchBox.val() == 'Search Redbridge i...') { this.value = ''; } });
    
    searchbutton.click(function() {
        if (searchBox.val() == 'Search Redbridge i...' || searchBox.val() == '') {
            searchBox.focus();
            searchBox.val('');
            return false;
        }
    });
	
	var KEY = {
		UP: 38,
		DOWN: 40,
		DEL: 46,
		TAB: 9,
		RETURN: 13,
		ESC: 27,
	

	COMMA: 188,
		PAGEUP: 33,
		PAGEDOWN: 34,
		BACKSPACE: 8
	};
	
	// Fade out the ajax search box when not active
    searchBox.blur(function() {
        if (!config.mouseDownOnSelect) {
            $('#searchresults').fadeOut(400);
        }
    });

    //add ajax type ahead search functionality
    searchResultHolder.mousedown(function() {
            config.mouseDownOnSelect = true;
    }).mouseup(function() {
	        

config.mouseDownOnSelect = false;
    });
    
    var selectedIndex = -1;
	
	//Catch return return key and tab for search box
    searchBox.bind('keydown', function(e) {
        if (e.keyCode == KEY.RETURN || e.keyCode == KEY.TAB) {
            return false; //prevent default behaviour
        }
    });
    
    searchBox.bind('keyup',function(event) {
        if (!config.mouseDownOnSelect && event.keyCode == KEY.RETURN)
        {
            eval($('.searchbutton').attr('href'));
        }
        else
        {
            config.mouseDownOnSelect = false;
            var searchResultItems = $('#searchresults li a');
            switch(event.keyCode) {
		        case KEY.UP:
		            if(selectedIndex > 0)
		            {
		

                selectedIndex--;
		                $(searchResultItems[selectedIndex+1]).toggleClass('selected');
		              

  $(searchResultItems[selectedIndex]).toggleClass('selected');
			        }
			        config.mouseDownOnSelect = 

true;
			        break;
		        case KEY.DOWN:
		        case KEY.TAB:
		            config.mouseDownOnSelect 

= true;
		            if(selectedIndex < searchResultItems.length-1)
		            {
		                selectedIndex++;
	

	                if(selectedIndex > 0){
		                    $(searchResultItems[selectedIndex-1]).toggleClass('selected');
		

                }
        		        
		                $(searchResultItems[selectedIndex]).toggleClass('selected');
		

	        }
			        config.mouseDownOnSelect = true;
			        break;
			    case KEY.RETURN:
			        config.mouseDownOnSelect = false;
			        var item = $(searchResultItems[selectedIndex]);
			        if(item.hasClass('suggestionText')){
			            selectedIndex = -1;
			            //suggestion so call the click event
			            item.trigger('click');
			        }
			        else{
			            //call the url
			            window.location = item.attr('href');
			        }
			        break;
			    default:
			    selectedIndex = -1;
			    jQuery.fn.performAjaxSearch($(this).val(), false, event);
			    break;
            }
            return true;
       }
    });
    
    jQuery.fn.performAjaxSearch = function(searchText, resetSearchText, event) {
        if (resetSearchText) {
            searchBox.val(searchText);
        }
        if (searchText.length == 0) {
             $('#searchresults').fadeOut(400); // Hide the suggestions box
        }
        else if (searchText.length > 2) {
		 
            $.ajax({
                contentType: "text/html; charset=utf-8",
                data: "queryString=" + searchText,
                url: "/search.aspx",
                dataType: "html",
                success: function(data) {
                    searchResultHolder.html(data);
                    
                    var searchresults = $('#searchresults');
                    $('#searchresults li a').mouseover(function(){
                                                    selectedIndex = jQuery.inArray(this, $('#searchresults li a'));
                                                   });

                    if (searchText.length == 3)// && code != 8)//dont fadeIn on backspace, only on keydown of 3rd character
                    {
                        searchresults.fadeIn(400);
                    }
                    else 
                    {
                        searchresults.show();
                    }
                }
            });
        }
    }
 
});
