// no conflict mode
jQuery(document).ready(function($){

	// global indicator of whether an search is going on
	var doingAjaxSearch = false;

	// current search term to prevent same AJAX search from happening
	var currentSearchTerm = "";

	// ID of current search request
	var searchTimeout;

	var alertTimerId = 0;

	$("#header").append('<div id="ajax_search_container"></div>');
	
	$("#ajax_search_container").html("<div id=\"search_list\"><p id=\"searching_indicator\">Searching</p></div>");
	
	$("#search_list").hide();

	/* 
	// generic keypress bind
	$("#queries_searchfield_query-new").keypress(function () {
		ajaxSearch();
	});
	*/

	/*
	// event for when a focus is made, possibly not required? 
	$("#queries_searchfield_query-new").focus(function () {
		ajaxSearch();
	})
	*/

	$("#queries_searchfield_query-new").bind('keyup', function() {
		// clears the future search if a keypress is made within that time
		if(searchTimeout != undefined) {
			clearTimeout(searchTimeout);
		}

		// set doing the search in 500 milliseconds
		searchTimeout = setTimeout(function() {
			searchTimeout = undefined;
			ajaxSearch();
			}, 500 // increase time to reduce the server load
		); 
	}); 

	// when the return/enter key is pressed
	$(document).keyup(function(event){
		if (event.keyCode == 27) {
			closeSearchList();
		}
	});

	//** Search functions  **/
	// Main search function
	function ajaxSearch () {

		var search_term =  $("#queries_searchfield_query-new").val();

		if (!doingAjaxSearch && (currentSearchTerm != search_term) && (search_term != "Search Shelter...")) {
			if (search_term == "") {

				$("#search_list").fadeOut("medium");

			} else if (search_term.length >= 3) {

				doSearch();
			}
			
			/* else if (search_term.length == 3) {

				doSearch();

			} else if (search_term.length > 3) {

				alertTimerId = setTimeout("doSearch()", 250);

			} */
		}

	} // end ajaxSearch


	function doSearch() {  
		$("#queries_searchfield_query-new").addClass("active_search");

		doingAjaxSearch = true;

		$.ajax({
			type: "POST",
			url: "/ajax_search",
			data: "?mode=results&queries_search_query=" + $("#queries_searchfield_query-new").val(),
			dataType: "html",
			timeout: 30000, // 30 second timeout
			// ifModified: true, // don't do a search if the same as last request
			success: function(htmlData){
				doingAjaxSearch = false;
				currentSearchTerm = $("#queries_searchfield_query-new").val();

				$("#search_list").html(htmlData,function(){

				});
				
				$("#ajax_search_close").bind("click", function (event) {
					closeSearchList();
				});
				$("#more_search_results").attr("href","/search_results?mode=results&queries_search_query=" + $("#queries_searchfield_query-new").val());
				$("#search_list").fadeIn("fast");
				$("#queries_searchfield_query-new").removeClass("active_search");
			
				},
			error: function(request, errorType, errorThrown) {
				doingAjaxSearch = false;
				$("#queries_searchfield_query-new").removeClass("active_search");
				}
		});

	} // end doSearch


	function closeSearchList () {
		$("#search_list").fadeOut("medium");
		clearTimeout(searchTimeout);
		$("#queries_searchfield_query-new").removeClass("active_search");
		return false;
	} // end closeSearchList

});


