var ajaxSearch = {}

ajaxSearch.attr = {'i' : 0, 'last': null, 'active_copy' : false, 'results': false, 'hidden': new Array()}

ajaxSearch.show = function (obj)
{
	obj = $(obj);
	obj.show();
}

ajaxSearch.hide = function (obj)
{
	obj = $(obj);
	obj.hide();
}

ajaxSearch.query = function ()
{
	$('#search-x').addClass('search-loading');

	var pars = 'i=1';
	
	$('#search input').each(function() { pars += '&'+this.name+'='+encodeURI(this.value); });
	$('#spotsettings input').each(function() { pars += '&'+this.name+'='+encodeURI(this.value); });

	$.get(ajaxSearch.attr['url']+'?'+pars,
		function(data){
			$('#search-x').removeClass('search-loading');
			if ($.trim($(ajaxSearch.attr['source']).val()))
			{
				ajaxSearch.hide('#spotsettings');
				$(ajaxSearch.attr['destination']).html(data);
				ajaxSearch.show(ajaxSearch.attr['destination']);
				ajaxSearch.attr['results'] = true;
			}
		}
	);
}

ajaxSearch.wait_for_search = function ()
{
	var obj = ajaxSearch.attr['source'];
	if ($.trim($(obj).val()) && $(obj).val() != ajaxSearch.attr['last'])
	{
		ajaxSearch.attr['i']++;
		if (ajaxSearch.attr['i'] >= ajaxSearch.attr['time'])
		{
			ajaxSearch.attr['i'] = 0;
			ajaxSearch.attr['last'] = $(obj).val();
			ajaxSearch.query(obj);
			ajaxSearch.attr['active_copy'] = false;
			return;
		}
		ajaxSearch.attr['active_copy'] = true;
		setTimeout('ajaxSearch.wait_for_search()', 100);
	}
	if (!$.trim($(obj).val()))
	{
		ajaxSearch.attr['last'] = null;
		ajaxSearch.attr['active_copy'] = false;
		ajaxSearch.hide(ajaxSearch.attr['destination']);
		ajaxSearch.attr['results'] = false;
	}
}

ajaxSearch.prepare = function (source, url, destination, time)
{
	ajaxSearch.attr['source'] = source;
	ajaxSearch.attr['url'] = url;
	ajaxSearch.attr['time'] = time;
	ajaxSearch.attr['destination'] = destination;

	ajaxSearch.hide(ajaxSearch.attr['destination']);

	$(ajaxSearch.attr['source']).bind('keyup', function(event) {
		if ($(ajaxSearch.attr['source']).val())
		{
			$('#search-x').removeClass('hidden');
		}
		else
		{
			$('#search-x').addClass('hidden');
		}
		ajaxSearch.attr['i'] = 0;
		if (!ajaxSearch.attr['active_copy'])
		{
			ajaxSearch.wait_for_search();
		}
	});

	$(ajaxSearch.attr['source']).bind('click', function(event) {
		ajaxSearch.hide('#spotsettings');
		if (ajaxSearch.attr['results'])
		{
			ajaxSearch.show(ajaxSearch.attr['destination']);
		}
		event.stopPropagation();
		return false;
	});

	$(ajaxSearch.attr['destination']).bind('click', function(event) {
		if (event.tagName == 'A' || event.tagName == 'EM')
		{
			ajaxSearch.hide(ajaxSearch.attr['destination']);
			ajaxSearch.attr['results'] = false;
			return true;
		}
		event.stopPropagation();
		//return false;
	});

	$(document).bind('click', function(event) {
		ajaxSearch.hide(ajaxSearch.attr['destination']);
		ajaxSearch.hide('#spotsettings');
	});
}