/**
 * LiveSearch (requires the dimensions plug-in)
 *
 * Applies "live search" to input-fields
 *
 * Usage: jQuery('#q').liveSearch({ajaxURL: '/ajax/search/?q='});
 *
 * @class liveSearch
 * @param {Object} conf, custom config-object
 *
 * Copyright (c) 2008 Andreas Lagerkvist (andreaslagerkvist.com)
 * Released under a GNU General Public License v3 (http://creativecommons.org/licenses/by/3.0/)
 */
 
 /* modified by Chris Fordham for Netcat package */
 
// Hide all search-results if you click outside them
jQuery(document.body).click(function(event) {
	if(!jQuery(event.target).parents('div.live-search-results').length) {
		jQuery('div.live-search-results').slideUp(300);
	}
});

jQuery.fn.liveSearch = function(conf)
{
	var config = jQuery.extend(
	{
		ajaxURL: '/mod/search-results.php?q=',
		resultsTargetID: 'live-search-results'
	}, conf);

	return this.each(function()
	{
		var input		= jQuery(this);
		inputID = jQuery(this);
		var tmpOffset	= input.offset();
		var inputDim	= {
			left:	tmpOffset.left, 
			top:	tmpOffset.top, 
			width:	input.outerWidth(), 
			height:	input.outerHeight()
		};
		var results = jQuery('#'+config.resultsTargetID);
		results.hide().slideDown('slow');
		
		var resultsShit	= parseInt(results.css('paddingLeft'), 10) + parseInt(results.css('paddingRight'), 10) + parseInt(results.css('borderLeftWidth'), 10) + parseInt(results.css('borderRightWidth'), 10);
		inputDim.topNHeight	= inputDim.top + inputDim.height;
		inputDim.widthNShit	= inputDim.width - resultsShit;
/*		results.css({ */
/*			position:	'absolute', */
/*			left:		inputDim.left +'px', */
/*			top:		inputDim.topNHeight +'px', */
/*			width:		inputDim.widthNShit +'px' */
/*		}); */

		input.keyup(function(){
			if(this.value != this.lastValue) {
				input.addClass('ajax-loading');

				var q = this.value;

				if(this.timer) {
					clearTimeout(this.timer);
				}

				this.timer = setTimeout(function() {
					jQuery.get(config.ajaxURL +q, function(data) {
						input.removeClass('ajax-loading');
						if(data.length)
						{
							results.html(data).slideDown(300);
						}
						else
						{
							results.slideUp(300);
						}
					});
				}, 200);

				this.lastValue = this.value;
			}
		});
		
		jQuery(document).ready(function()
		{		
       
			jQuery('#tagReset').click(function(){
				var input = jQuery(this);
				input.addClass('ajax-loading');
				var q = '';
				if(this.timer)
				{
					clearTimeout(this.timer);
				}

				this.timer = setTimeout(function()
				{
					jQuery.get(config.ajaxURL +q, function(data){
						input.removeClass('ajax-loading');
						if(data.length)
						{
							results.html(data).slideDown(300);
						}
						else
						{
							results.slideUp(300);
						}
					});
				}, 200);
				this.lastValue = this.value;
			});
		});
		
	});
};