(function($) {
	var cache = [];
	// Arguments are image paths relative to the current page.
	$.preLoadImages = function() {
		var args_len = arguments.length;
		for (var i = args_len; i--;) {
			var cacheImage = document.createElement('img');
			cacheImage.src = arguments[i];
			cache.push(cacheImage);
		}
	}
})(jQuery)

$(document).ready(function() {
	var ajaxFileFolder = '/ajax/';
	var pageExtension = '.html';

	var inputClass = 'input_ajax';
	var resultClass = 'result';
	var resultContainerClass = 'ajax_result';
	var resultContainer = '<div class="'+resultContainerClass+'"></div>';
	var resultContainerTop = '<div class="ajax_result_top"></div>';
	var resultContainerBottom = '<div class="ajax_result_bottom"></div>';

	jQuery.preLoadImages('/images/popular_searches/popular_searches_top.png', '/images/popular_searches/popular_searches_bottom.png');

	var stoppedTypingTimeOut = 0;
	var stoppedTyping;
	var resultsCrustyTimeOut = 60000;
	var resultsCrusty;

	var resultClickSubmit = true;

	$('input.'+inputClass).focusout(function(){
		$('.'+resultContainerClass).fadeOut('fast', function(){
			$(this).remove();
		});
	});
	
	$('input.'+inputClass).bind('click keyup', function(){
		if(stoppedTyping != undefined) clearTimeout(stoppedTyping);
		if(resultsCrusty != undefined) clearTimeout(resultsCrusty);
		var kwords = $(this).attr('value');
		var inputId = $(this).attr('id');
		var inputName = $(this).attr('name');
		var returnDiv = 'ajax'+inputId.charAt(0).toUpperCase()+inputId.substr(1);
		stoppedTyping = setTimeout(function(){
			$.post(ajaxFileFolder+inputClass+pageExtension, { keyword: kwords, name: inputName, resultClass: resultClass  },
				function(data){
					if(data.length == 0) {
						$('.'+resultContainerClass).fadeOut('fast', function(){
							$(this).remove();
						});
					} else {
						if($('.'+resultContainerClass).length == 0) {
							$('#'+inputId).after(resultContainer);
						}

						$('.'+resultContainerClass).html(resultContainerTop+data+resultContainerBottom);
						$('.'+resultContainerClass).fadeIn('fast');

						$('.'+resultClass).bind('click', function() {
							$('#'+inputId).attr('value', $(this).html());
							if(resultClickSubmit == true) {
								var id = $('#'+inputId).parent().attr('id');
								$('#'+$('#'+inputId).parent().attr('id')).submit();
							}
						});

						resultsCrusty = setTimeout(function(){
							$('.'+resultContainerClass).fadeOut('fast', function(){
								$(this).remove();
							});
						}, resultsCrustyTimeOut);
					}
				}
			);
		}, stoppedTypingTimeOut);
	});
});

