var filter_is_open = true;
var timer;
var filterHeight;

window.addEvent('domready',function()
{
	filterHeight = $('result-update-wrapper').getStyle('height');
	
	filterToggleListener();
	
	
	$('home-filter-form').addEvent('change',function(e)
	{
		e.stop();
		var object = this;
		makeAjaxRequest(object);
	});
	
	$('keyword').addEvent('keyup', function(e)
	{
		e.stop();
		var object = this;
		
		if(timer)
		{
			clearTimeout(timer);	
		}
		
		timer = setTimeout(function(){makeKeypressRequest(object)}, 250);
	
	});	
	
	showMoreListener();
});

function showMoreListener()
{
	$('showmore').addEvent('click', function(e)
	{
		e.stop();
		var hidden = $('result-update').getElements('div.hide');
		var show_more_limit = 5;
		if( hidden.length > 0 )
		{
			if( show_more_limit > hidden.length )
			{
				show_more_limit = hidden.length;	
			}
				
			var wrapper = $('result-update-wrapper');
			var result_height = $('result-height');
			
			var wrapper_height = result_height.getStyle('height');
			wrapper.setStyle('height', wrapper_height);

			for( var i=0; i<show_more_limit; i++)
			{
				hidden[i].removeClass('hide');
				hidden[i].setStyle('opacity', 0);
			}
			
			var slideWrapper = new Fx.Tween( wrapper, 
			{
				duration:750,
				onComplete:function()
				{
					for( var i=0; i<show_more_limit; i++)
					{
						fadeIn(hidden[i]);
					}
					
					wrapper.setStyle('height', 'auto');
				}
			});
			
			slideWrapper.start('height', result_height.getStyle('height') );
			
			var hiddenLeft = $('result-update').getElements('div.hide').length;
			
			if(hiddenLeft == 0)
			{
				$('showmore').innerHTML = 'No more results';
			}
		}		
	});	
}

function fadeIn(object)
{
	var fadeIn = new Fx.Tween( object );
	fadeIn.start('opacity', 1);
}

function makeKeypressRequest(rawr)
{
	var object = rawr.getParent();
	makeAjaxRequest(object);	
}

function makeAjaxRequest(object)
{
	var submitted = false;
	
	var updateArea = $('result-height');
	var updateWrapper = $('result-update-wrapper');
	
	var updateHeight = updateArea.getStyle('height');
	var updateWidth = updateArea.getStyle('width');
	
	var ajaxLoader = new Element('div', 
	{
		id: 'ajax-loader',
		styles: 
		{
			'height' : updateHeight,
			'width' : updateWidth
		}
	});
	
	var ajaxLoaderDiv = new Element('div');
			
	//updateArea.empty();
	
	ajaxLoader.inject(updateWrapper);
	ajaxLoaderDiv.inject(ajaxLoader);
	
	ajaxLoader.setStyle('opacity',0);
	
	var fadeAjaxLoaderOut = new Fx.Tween(ajaxLoader, {duration:250});
	var fadeAjaxLoaderIn = new Fx.Tween(ajaxLoader, 
	{ 
		duration:250,  
		onComplete: function()
		{
			//Send the form.
			object.send();
		}
	});
	
	object.set('send', { url: 'includes/home-filter-results.inc.php', onComplete: function(response) 
	{ 
		//updateArea.empty();
		updateArea.set('html', response);
		fadeAjaxLoaderOut.start('opacity', 0);
		filterToggleListener();
		showMoreListener();
	}});
	
	fadeAjaxLoaderIn.start('opacity', 1);
		
}

function filterToggleListener()
{
	$('filter-toggle').addClass('hide');
	
	if($('filter-toggle'))
	{
		if(filter_is_open)
		{
			$('filter-toggle').innerHTML = 'Hide all';
		}
		else
		{
			$('filter-toggle').innerHTML = 'Show all';
		}
		
		$('filter-toggle').addEvent('click',function(e)
		{
			e.stop();
			var wrapper = $('result-update');
			var slideFilter = new Fx.Tween(wrapper, { duration:500 } );
			
			if(filter_is_open)
			{
				slideFilter.start('height', 27);	
				filter_is_open = false;
				this.innerHTML = 'Show all';
			}
			else
			{
				slideFilter.start('height', filterHeight);	
				filter_is_open = true;
				this.innerHTML = 'Hide all';
			}
		});		
	}
}
