YAHOO.namespace("sitespecific");
YAHOO.namespace("sitespecific.container");

YAHOO.sitespecific.waitDuration = 0;
YAHOO.sitespecific.dataTimer = null;

var ajaxUrl = null;

var projectFilter = {
	init: function(){
		var timer = null;
		var lastIndex = -1;
		$('#projectFilter ul.controls li a').each(function(index){
			$(this).bind('mouseover', function(){
				$('#projectFilter .filters > div').eq(index).slideDown();
				if (lastIndex != index) {
					$('#projectFilter .filters > div').eq(lastIndex).slideUp();
					lastIndex = index;
				}
				clearTimeout(timer);
			});
		});
		$('#projectFilter').bind('mouseover', function(){
			clearTimeout(timer);
		});				
		$('#projectFilter').bind('mouseout', function(){
			//timer = setTimeout(projectFilter.hide, 1000);	
		});
		$('#projectFilter .filters').bind('click', function(event){
			return false;
		});			
		$('body').bind('click', function(event){
			projectFilter.hide();
		});		
		$('#projectFilter .close a').bind('click', function(){
			projectFilter.hide();
		});
		$('#projectFilter .filters .artist ul a').bind('click', function(){
			projectFilter.resetFilterValues();
			$('#projectFilter input[name="artists[]"]').val($(this).parent().find('input').val());
			loadDataWait();
			projectFilter.hide();
			return false;
		});
		$('#projectFilter .filters .project ul a').bind('click', function(){
			projectFilter.resetFilterValues();
			$('#projectFilter input[name="projects[]"]').val($(this).parent().find('input').val());
			loadDataWait();
			projectFilter.hide();
			return false;
		});				
		$('#projectFilter .filters .location ul a').bind('click', function(){
			projectFilter.resetFilterValues();
			$('#projectFilter input[name="locations[]"]').val($(this).parent().find('input').val());
			loadDataWait();
			projectFilter.hide();
			return false;
		});
	},	
	hide: function(){
		$('#projectFilter .filters > div').slideUp();
	},
	resetFilterValues: function(){
		$('#projectFilter input[name="start"], #projectFilter input[name="end"], #projectFilter input[name="artists[]"], #projectFilter input[name="projects[]"], #projectFilter input[name="locations[]"]').val('');
	}
};
	
$(function(){

	// Initalize project filter
	projectFilter.init();
	
	$('div.projectList .pager a').bind('click', function(){
		// TO DO: Set page number in form
		//$('#projectFilter input[name="page"]').val(3);
		ajaxUrl = $(this).attr('href');
		loadDataWait();
		return false;
	});
	
});

function loadDataWait() {

	// Reset timer
	clearTimeout(YAHOO.sitespecific.dataTimer);
	
	// Give the user a few seconds to make changes before loading data
	YAHOO.sitespecific.dataTimer = setTimeout(function(){loadData();}, YAHOO.sitespecific.waitDuration);
	
}

function loadData() {

	// Show loading screen
	YAHOO.sitespecific.container.wait.show();

	// Force a half-second delay to prevent the loading screen from rapidly appearing and
	// then disappearing when the remote data is cached or loaded fast
	setTimeout(function(){

		if (ajaxUrl != null) {
			var url = ajaxUrl;
		} else {
			var url = basePath + section + '/?' + $('#projectFilterForm').serialize() + '&nocache=' + Math.random();
		}
		if (url.indexOf('?')) {
			url = url + '&ajax';
		} else {
			url = url + '?ajax';
		}
	
		// Load content
		$('#content').load(url, null, function(){
			// Reset AJAX URL variable so it isn't used for the next request
			ajaxUrl = null;
			// Rebind pager links
			$('div.projectList .pager a').bind('click', function(){
				loadDataWait($(this).attr('href'));
				ajaxUrl = $(this).attr('href');
				return false;
			});		
			// Hide loading screen
			YAHOO.sitespecific.container.wait.hide();
		});
	},500);
}

YAHOO.util.Event.onDOMReady(function() {
	if (!YAHOO.sitespecific.container.wait) {
		// Initialize the temporary Panel to display while waiting for external content to load
		YAHOO.sitespecific.container.wait = 
				new YAHOO.widget.Panel("wait",  
												{ width: "240px", 
												  fixedcenter: true, 
												  close: false, 
												  draggable: false, 
												  zindex: 100000,
												  modal: true,
												  visible: false
												} 
											);
		YAHOO.sitespecific.container.wait.setHeader("Loading projects...please wait");
		YAHOO.sitespecific.container.wait.setBody("<img src=\"http://us.i1.yimg.com/us.yimg.com/i/us/per/gr/gp/rel_interstitial_loading.gif\"/>");
		YAHOO.sitespecific.container.wait.render(document.body);
	}
});
