// YEAH!

window.addEvent('domready', function()
{
	showNavigation();
	getProjects(undefined, undefined); 
});

function showNavigation()
{
	var url='ajax/navigation.php';
	//new Ajax(url, {method: 'get', onComplete: showNavigationComplete, update: $('navigate')}).request();
	new Request.HTML(
	{
		url: 'ajax/navigation.php',
		method: 'get', 
		update: $('navigate'),
		onComplete: showNavigationComplete
	}).send();
	

}

function showNavigationComplete()
{
	/*
	$('header').getElements('a').addEvent('click', function(e)
		{
			handleClick(this.id);
	});
	*/

	$('navigate').getElements('a').addEvent('click', function(e)
		{
			handleClick(this.id);
	});
	
}

function getProjects(year, medium)
{
	if (year == undefined)
	{
		year = 'all';		
	}
	if (medium == undefined)
	{
		medium = 'all';
	}

	// For IE always append milliseconds in order to force getting the damn page...

	var url='ajax/projects.php';
	//new Ajax(url, {data: 'year='+year, method: 'get', onComplete: getProjectsComplete, update: $('main')}).request();
	new Request.HTML(
	{
		url: 'ajax/projects.php',
		method: 'get',
		update: $('main'),
		onComplete: getProjectsComplete
	}).send('year='+year+'&medium='+medium+'&refresh='+new Date().getTime());
	hideDetails();
}


function getProjectsComplete()
{
	
	$('content').getElements('div').addEvent('mouseover', function(e)
	{

		if (!e)
		{
			var e = window.event;
		}
		var tg = (window.event) ? e.srcElement : e.target;
		
		//alert('target: '+e.target);
		//alert('src: '+e.srcElement);
		var tg = e.target;
		
		if (tg.nodeName != 'DIV' && tg.nodeName != 'IMG') 
		{
			//alert(tg.nodeName+'no div!');
			///console.log('no div');
			return;
		}	
			
		
		
		var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;
		
		//alert(reltg.nodeName);
		
		while (reltg && reltg != tg && reltg.nodeName != 'BODY')
		{
			
			reltg= reltg.parentNode;
		}	
			
		if (reltg== tg)
		{
			
			//return;
		}

		//alert('mouseover div!');
		///console.log('mouseover div: '+e.target);
	
		// Swap image with text
		//if (this.id=='projcontact')
		//{
			//console.log($(this.id).innerHTML);
			//console.log($('hidden'+this.id+'txt').innerHTML);

			closeOtherDivs();
			$(this.id).innerHTML=$('hidden'+this.id+'txt').innerHTML;
			
			
			$('content').getElements('a').addEvent('click', function(e)
			{
				handleClick(this.id);
			});
		
			$('content').getElements('a').addEvent('mouseover', function(e)
			{
				///console.log('mouseover a: '+e.target);
				var tg = (window.event) ? e.srcElement : e.target;
				//console.log('over link'+tg.id);
				var tg=e.target;
				//$(tg.id).setStyle('text-decoration', 'underline');
			});
			
			$('content').getElements('a').addEvent('mouseout', function(e)
			{
				var tg = (window.event) ? e.srcElement : e.target;
				var tg=e.target;

				//$(tg.id).setStyle('text-decoration', 'none');
			});
			
		

			
		//}
		
		
	});
	
	
	$('content').getElements('div').addEvent('mouseout', function(e)
	{
		if (!e)
		{
			var e = window.event;
		}
		var tg = (window.event) ? e.srcElement : e.target;
		
		//console.log('target: '+e.srcElement);
		var tg = e.target;
		
		if (tg.nodeName != 'DIV' && tg.nodeName != 'IMG')  
		{
			///console.log('no div');
			return;
		}	
			
		var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;
		
		///console.log('related target: '+reltg.nodeName);
		
		
		while (reltg && reltg != tg && reltg.nodeName != 'BODY')
		{
			reltg= reltg.parentNode;
		}	
			
		if (reltg== tg)
		{
			return;
		}
		
		// Mouseout took place when mouse actually left layer, handle event
		//alert('mouseout div');
				
		//console.log('out div');
		
		$(this.id).innerHTML=$('hidden'+this.id+'img').innerHTML;		
		
		
		
		
		
	});
}

function closeOtherDivs()
{
			// close other divs (possibly open)
			var divs = $$('div.hor');
			divs.each(function(div) 
			{
				$(div.id).innerHTML=$('hidden'+div.id+'img').innerHTML;
			});
			divs = $$('div.ver');
			divs.each(function(div) 
			{
				$(div.id).innerHTML=$('hidden'+div.id+'img').innerHTML;
			});
}

// Handles clicks in overview page as well as navigation page
function handleClick(id)
{
		switch(id.substring(0,4))
		{
			case 'book':
				getProjects(undefined, 'books');
				break;
				
			case 'post':
				getProjects(undefined, 'posters');
				break;
				
			case 'type':
				getProjects(undefined, 'typefaces');
				break;
			
			case 'cont':
				showContactDetails();
				break;
			
			case 'rndm':
				showDetails('random');
				break;
				
			case 'rand':
				getProjects(undefined, undefined); 
				break;
				
			case 'news':
				showNews();
				break;
	
			case 'year':
				var year = id.substring(4);
				getProjects(year, undefined)
				break;
				
			default:
				id = id.substring(4);
				showDetails(id);
				break;
		}

}

function showContactDetails()
{
	$('detail').setStyle('display', 'block');
	var url='ajax/contact.php';
	//new Ajax(url, {method: 'get', onComplete: initDetailsEventHandler, update: $('detail')}).request();
	new Request.HTML(
	{
		url: 'ajax/contact.php',
		method: 'get',
		update: $('detail'),
		onComplete: initDetailsEventHandler
	}).send();
	
}

function showNews()
{
	$('detail').setStyle('display', 'block');
		
	new Request.HTML(
	{
		url: 'ajax/news.php',
		method: 'get',
		update: $('detail'),
		onComplete: initDetailsEventHandler
	}).send();
	
}

function showDetails(index)
{
	
	$('detail').setStyle('display', 'block');
	var url='ajax/works.php';
	//new Ajax(url, {data: 'project='+index, method: 'get', onComplete: initDetailsEventHandler, update: $('detail')}).request();
	new Request.HTML(
	{
		url: 'ajax/works.php',
		method: 'get',
		update: $('detail'),
		onComplete: initDetailsEventHandler
	}).send('project='+index);

	// hide text and show image again
	//$('thumbproj'+index).innerHTML=$('hiddenthumbproj'+index+'img').innerHTML;			

}

function hideDetails()
{
	$('detail').setStyle('display', 'none');
	$('detail').innerHTML='';
}	

function initDetailsEventHandler()
{
	$('detail').getElements('div').addEvent('click', function(e)
	{

		// Bleh, on clicking on href we also receive this...
		if (!e)
		{
			var e = window.event;
		}
		var tg = (window.event) ? e.srcElement : e.target;
		
		var tg = e.target;
		
		if (tg.nodeName != 'DIV' && tg.nodeName != 'IMG')  
		{
			return;
		}	
			
		var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;
		
		while (reltg && reltg != tg && reltg.nodeName != 'BODY')
		{
			reltg= reltg.parentNode;
		}	
			
		if (reltg== tg)
		{
			return;
		}

		hideDetails();
	});
	
	$('detail').getElements('a').addEvent('click', function(e)
	{
		if (this.id.substring(0,4)=='prev')
		{
			showNextPrev(this.id.substring(4),-1);
		}
		else if (this.id.substring(0,4)=='next')
		{
			showNextPrev(this.id.substring(4),1);
		}
	});

	
}

function showNextPrev(index, direction)
{
	new Request.HTML(
	{
		url: 'ajax/works.php',
		method: 'get',
		update: $('detail'),
		onComplete: initDetailsEventHandler
	}).send('project='+index+'&direction='+direction);
}

