var currentId="home.html";
var currentNavItem=false;
var contents={};
var contentsLoading={};
var allowShow=false;

var hideRequest=[];
var hiding=[];
var showing=[];
var showed=[];
var hideTimeout=[];
function h() {
	var elem = this;
	if(!hideRequest[elem.id]) {
		hideRequest[elem.id]=true;
		hideTimeout[elem.id] = setTimeout(function(){ hDo(elem) },400);
	}
}
function hDo(elem) {
	if(hideRequest[elem.id]) {
		hiding[elem.id]=true;
		showed[elem.id]=false;
		hideRequest[elem.id]=false;
		$(elem).children("ul").stop(true,true);
		$(elem).children("ul").slideUp(300,function() { hiding[elem.id]=false;});
		
		if(currentNavItem==false) {
			$(elem).children("a").animate({color:"#717171"},300);
		} else if(currentNavItem.parent().attr("id")=='') {
			$(elem).children("a").animate({color:"#717171"},300);
		} else if(currentNavItem.parent().attr("id")!=elem.id) {
			$(elem).children("a").animate({color:"#717171"},300);
		}
	}
	hideTimeout[elem.id]=false;
}

function nh() {
	var elem = this;
	// prevent hiding...
	if(hideTimeout[elem.id] && hideTimeout[elem.id]!=false) {
		clearTimeout(hideTimeout[elem.id]);
		hideTimeout[elem.id]=false;
	}
	hideRequest[elem.id]=false;
	if(!stopHiding(elem)) {
		if(!showed[elem.id] && !showing[elem.id]) {
			$(elem).children("a").animate({color:"#FFF"},500);
			showing[elem.id]=true;
			$(elem).children("ul").slideDown(500,function() {
				showed[elem.id]=true;
				showing[elem.id]=false;
			});
		}
	}
}

function stopHiding(elem) {
	if(hiding[elem.id] && hiding[elem.id]==true) {
		hiding[elem.id]=false;
		$(elem).children("ul").stop(true).css("height","auto");
		$(elem).children("a").stop(true).css("color","#FFF");
		return true;
	}
	return false;
}

$(document).ready(function(){
	currentId = window.location.pathname.replace(/.*\/([^\/]*)/g,'$1');
	if(currentId=='') currentId='home.html';

	contents[currentId] = $($(".content")[0]);
	
	$("#css").after('<style type="text/css">#navigation ul li:hover ul { display: none; }</style>');
	$("#navigation>ul>li>a").each(function () {
		var href = $(this).attr('href');
		if(href && href.indexOf(':')==-1 && href.indexOf('.html')!=-1) {
			this.href="#";
			$(this).attr('url',href);
			$(this).attr('oldcolor',$(this).css('color'));
			$(this).click(function() {
				if(currentNavItem) {
					currentNavItem.animate({color: currentNavItem.attr('oldcolor')},300);
				}
				currentNavItem=$(this);
				currentNavItem.animate({color:"#B84322"},300);
				display(currentNavItem.attr('url'));
			});
		}
	});
	$("#navigation>ul>li>ul>li>a, #logo").each(function () {
		var href = $(this).attr('href');
		if(href && href.indexOf(':')==-1 && href.indexOf('.html')!=-1) {
			this.href="#";
			$(this).attr('url',href);
			$(this).attr('oldcolor',$(this).css('color'));
			$(this).click(function() {
				if(currentNavItem) {
					currentNavItem.animate({color: currentNavItem.attr('oldcolor')},300);
				}
				currentNavItem=$(this);
				currentNavItem.animate({color:"#FFF"},300);
				display(currentNavItem.attr('url'));
			});
		}
	});

	$("#navigation>ul>li").mouseenter(nh).mouseleave(h);
	if(currentId=="images.html") {
		initImages();
	}
	if(currentId=="home.html") {
		initHome();
	}
});

var running=false;
function display(id) {
	if(currentId==id && running==false)
		return;
	running=true;
	if(stopShow(id)) { // stopped displaying - status: grey waiting overlay
		if(!loadContent(id)) { // content already cached
			allowShow=true;
			show(id);
		}
	} else {
		loadContent(id); // content already cached
		displayRegular(id);
	}
}

function displayRegular(id) {
	allowShow=false;
	if(currentId=="home.html") {
		$("#main.content").wait(1000).slideUp(500,function(){
			$('#mainimage').cycle('pause');
			contents[currentId].hide(); 
			allowShow = true;
			show(id);
		});
		$("#replacer.content").slideUp(0).fadeTo(0,0.5).slideDown(750);
	} else {
		if(id=="home.html") {
			contents[currentId].slideUp(500,function(){
				contents[currentId].hide(); 
				allowShow=true;
				show(id);
			});
		} else {
			contents[currentId].slideUp(500,function(){
				contents[currentId].hide(); 
				$("#replacer.content").slideUp(0).fadeTo(0,0.5).slideDown(500,function(){
					allowShow=true;
					show(id);
				});
			});
		}
	}
}

function initImages() {
	$("#strip").after('<div id="imageArea"><a href="#" class="downloadLink" title="Download in High Resolution"><span id="imgBorder" /><img id="middleSize" /></a><div id="bottom"><a href="#" class="downloadLink" title="Download in High Resolution">Download</a></div></div>');
	for(var i=1;i<5;i++) {
		var a=$("#img"+i);
		a.attr("fullsize",a.attr("href"));
		a.attr("href","#");
		a.attr("target","");
		a.attr("title","Make bigger");
		a.attr("middle","images/download/image_" + i + "_large.jpg");
		a.click(function() { showMidSizeImage($(this)); } );
		a.mouseenter(function() { $(this).children(".overlay").fadeTo(100,0); } );
		a.mouseleave(function() { $(this).children(".overlay").fadeTo(100,1); } );
	}
	showMidSizeImage($("#img"+1));
}
function initHome() {
	$('#mainimage').cycle({timeout: 6000, speed: 2000});
}
function loadContent(id) {
	if(!contents[id] && !contentsLoading[id]) {
		contentsLoading[id]=true;
		$.get("index.php?contentOnly=1&fn=" + id,function(data) {
			var a=document.createElement("div");
			$(a).hide().append(data);
			for(var j=0;j<a.childNodes.length;j++) {
				if(a.childNodes[j] && a.childNodes[j].className && a.childNodes[j].className=='content') {
					$(a.childNodes[j]).hide();
					a=a.childNodes[j];
					break;
				}
			}
			$("#footer").before(a);
			contents[id] = $(a);
			show(id);
			if(id=='images.html') {
				initImages();
			}
			if(id=="home.html") {
				initHome();
			}
		});
		return true;
	}
	return false;
}
var currentMidSizeImage=null;
function showMidSizeImage(link) {
	link.children(".arrow").fadeTo(50,1).wait(50).fadeTo(50,0).wait(100).fadeTo(50,1).wait(150).fadeTo(50,0);
	if(currentMidSizeImage!=null) {
		if(currentMidSizeImage.attr('id')==link.attr('id')) {
			return
		}
		currentMidSizeImage.children(".arrow").fadeTo(250,1);
	}
	
	currentMidSizeImage = link;
	var imgArea = $("#imageArea");
	var image = $("#middleSize");
	imgArea.fadeTo(250,0,function() {
		image.load(function() { imgArea.show().fadeTo(500,1); });
		image.attr("src",link.attr("middle"));
	});
	$(".downloadLink").attr("href",link.attr("fullsize")).attr("target","_blank");
}

var showing=false;
function show(id) {
	if(!contents[id] || !allowShow) {
		return;
	}
	allowShow=false;
	currentId=id;
	showing=true;
	contents[id].fadeTo(0,0).show(function() {
		$("#replacer.content").fadeTo(1000,0);
		contents[id].fadeTo(1500,1,function() { 
			if(id=="home.html") {
				$('#mainimage').cycle('resume');
			}
			try {
				pageTracker._trackPageview(id);
			} catch(err) {}
			showing=false;
			running=false;
		});
	});
}

function stopShow(newId) {
	if(showing) {
		showing=false;
		$("#replacer.content").stop(true).fadeTo(500,0.5);
		contents[currentId].stop(true).fadeTo(500,0,function() { contents[currentId].hide(); allowShow=true; show(newId) });
		return true;
	}
	return false;
}