var siteSearch = $.Class.create({
	
	initialize: function(options) {
		this.input = options.input || '#search_input';
		this.container = options.container || '#search_results_container';
		this.loading = options.loading || '#search_loading';
		this.results = options.results || '#search_results';
		this.url = options.url || '';
		this.min_chars = options.min_chars || 3;
		this.tag = options.tag || 'search';
		this.timeout = options.timeout || 350;
		this.action = options.action || null;

		this.timer = null;
		
		var self = this;
		
		$(document).ready( function(){
			$(self.input).keypress(function(event) {
				if (event.which == '13') {
					event.preventDefault();
					if (self.action) {
						$('#input-keywords').val($(self.input).val());
						$('#search').submit();
					}
				}				
			});

			$(self.input).keyup(function(event) {
				if($(this).val().length < self.min_chars) {
					$(self.container).fadeOut('fast', function(){
						$(self.results).hide();
						$(self.loading).show();
					});
				} else {
					$(self.loading).html('Searching results for "'+ $(this).val() +'"...');
					if(self.timer)
						clearTimeout(self.timer);
					self.timer = setTimeout(function(){ self.search(); }, self.timeout);		
				}
			});
		});		
	},
	
	search: function(){
		var self = this;
		
		if ( $(self.input).val() ) {
			$(self.results).fadeOut('fast', function(){
				$(self.loading).fadeIn('fast', function(){
					$(self.container).fadeIn('fast', function(){
						$.get(self.url +'?'+ self.tag +'='+ $(self.input).val(), function(data){
							$(self.results).html(data);
							$(self.loading).fadeOut('fast', function(){
								$(self.results).fadeIn('fast');
							});
						});
					})
				});
			});
		}
	}
});
