/***********************************************************************

Author:     Sander Tiekstra
Company:    Tiekstramedia
URL:        http://www.tiekstramedia.nl
            http://www.4rn0.nl

***********************************************************************/


/*	Initialize behaviour on page or DOM load
-------------------------------------------------------------------- */
if (document.addEventListener) { document.addEventListener('DOMContentLoaded',init,null); }
/*@cc_on @*/ /*@if (@_win32) document.write("<script defer src=init.js><"+"/script>"); /*@end @*/   
window.onload = init;

function init() {

	if (arguments.callee.done) {
		return;
	}
	
	arguments.callee.done = true;
	
	initSifr();
	setHomeMainNav();
	replaceHr();
	replaceSources();
	setPicturePlayer();
	
}

/*	Functions
-------------------------------------------------------------------- */
function initSifr() {
	
	if (typeof sIFR == 'function') {
		// Home
		sIFR.replaceElement(named({sSelector:"body#home h2", sFlashSrc:"swf/kievit-medium.swf", sColor:"#000000", sLinkColor:"#000000", sBgColor:"#fde899", sHoverColor:"#000000", sWmode:"transparent", sFlashVars:""}));
		sIFR.replaceElement(named({sSelector:"body#home div.specialBig h3", sFlashSrc:"swf/kievit-medium.swf", sColor:"#000000", sLinkColor:"#000000", sBgColor:"#fde899", sHoverColor:"#000000", sWmode:"transparent", sFlashVars:""}));
		sIFR.replaceElement(named({sSelector:"body#home div.special h3", sFlashSrc:"swf/kievit-medium.swf", sColor:"#000000", sLinkColor:"#000000", sBgColor:"#fac500", sHoverColor:"#000000", sWmode:"transparent", sFlashVars:""}));

		// Overview
		sIFR.replaceElement(named({sSelector:"body#overview div.special h3", sFlashSrc:"swf/kievit-medium.swf", sColor:"#000000", sLinkColor:"#000000", sBgColor:"#fde899", sHoverColor:"#000000", nPaddingTop:"15", nPaddingLeft:"25", nPaddingBottom:"0", nPaddingRight:"15", sWmode:"transparent", sFlashVars:""}));
		sIFR.replaceElement(named({sSelector:"body#overview div#container h2", sFlashSrc:"swf/kievit-mediumsc.swf", sColor:"#000000", sLinkColor:"#000000", sBgColor:"#fac500", sHoverColor:"#000000", sWmode:"transparent", sCase:"lower", sFlashVars:""}));
		sIFR.replaceElement(named({sSelector:"body#overview div#listing h3", sFlashSrc:"swf/kievit-mediumsc.swf", sColor:"#000000", sLinkColor:"#000000", sBgColor:"#fac500", sHoverColor:"#000000", sWmode:"transparent", sCase:"lower", sFlashVars:""}));
		sIFR.replaceElement(named({sSelector:"body#overview div#listing h4", sFlashSrc:"swf/kievit-medium.swf", sColor:"#ffffff", sLinkColor:"#ffffff", sBgColor:"#fa8900", sHoverColor:"#ffffff", sWmode:"transparent", sFlashVars:""}));
		
		// Detail
		sIFR.replaceElement(named({sSelector:"body#detail h2", sFlashSrc:"swf/kievit-medium.swf", sColor:"#000000", sLinkColor:"#000000", sBgColor:"#fac500", sHoverColor:"#000000", sWmode:"transparent", sFlashVars:""}));
		sIFR.replaceElement(named({sSelector:"body#detail div#intro div#relatedInfo h3", sFlashSrc:"swf/kievit-medium.swf", sColor:"#000000", sLinkColor:"#000000", sBgColor:"#fac500", sHoverColor:"#000000", nPaddingTop:"10", nPaddingBottom:"10", sWmode:"transparent", sFlashVars:""}));
		
		// Page
		sIFR.replaceElement(named({sSelector:"body#page h2", sFlashSrc:"swf/kievit-medium.swf", sColor:"#000000", sLinkColor:"#000000", sBgColor:"#fac500", sHoverColor:"#000000", sWmode:"transparent", sFlashVars:""}));
	}
	
}


function setHomeMainNav() {
	if (!document.getElementById('home') || !document.getElementById('mainNavigation')) return;
	
	allDivs = document.getElementById('mainNavigation').getElementsByTagName('div');
	for (var i=0; i < allDivs.length; i++) {
		allDivs[i].onclick = function() {
			document.location = this.getElementsByTagName('a')[0];
		}
	}

}


function replaceHr() {
	if (!document.getElementsByTagName('hr')) return;
	
	allHrs = document.getElementsByTagName('hr');
	for (var i=0; i < allHrs.length; i++) {
		var div = document.createElement("div");
		div.className = 'hr';
		allHrs[i].parentNode.insertBefore(div, allHrs[i]);
	}
	
}


function focusTimeline(level) {
	if (!document.getElementById('timeline')) return;
	
	if (level == "top") {
		document.getElementById('timeline').style.zIndex = "99";
	} else {
		document.getElementById('timeline').style.zIndex = "0";		
	}
	
}


function replaceSources () {
	// plaats de description bij de afbeelding op een detail pagina laag
	// voor de source id
	lowerSource();
	
	// plaats de description bij de afbeelding op een detail pagina laag
	// voor de description id
	lowerDescription();
	
	function lowerSource() {

		if (!document.getElementById('detail') || !document.getElementById('content') || !document.getElementById('source')) return;

		var contentHeight = document.getElementById('content').offsetHeight;
		var sourceHeight = document.getElementById('source').offsetHeight;

		if (contentHeight > sourceHeight) {
			var marginTopSource = contentHeight - sourceHeight;
			document.getElementById('source').style.marginTop = marginTopSource + 'px';
		}

	}
	
	function lowerDescription() {

		if (!document.getElementById('detail') || !document.getElementById('pictures')) return;

		var pictures = document.getElementById('pictures');
		
		allPs = pictures.getElementsByTagName('p')
		
		for (var i=0; i < allPs.length; i++) {
			if (allPs[i].className == "description") {
				var description = allPs[i];
			};	
		};
		
		if (!description) return;

		resetMarginTop = pictures.getElementsByTagName('div')[0].offsetHeight - pictures.getElementsByTagName('div')[1].offsetHeight - description.offsetHeight;
		if (resetMarginTop > 0) {
			description.style.marginTop = resetMarginTop + "px";
		}
				
		var intervalImageLoad = window.setInterval(waiting, 50);
		
		function waiting () {
			resetMarginTop = pictures.getElementsByTagName('div')[0].offsetHeight - pictures.getElementsByTagName('div')[1].offsetHeight - description.offsetHeight;
			if (resetMarginTop > 0) {
				description.style.marginTop = resetMarginTop + "px";
				clearInterval(intervalImageLoad);
			}
		}			

	}
	
}


function setPicturePlayer () {
	if (!document.getElementById('detail') || !document.getElementById('pictures')) return;
	
	var pictures = document.getElementById('pictures');
	var picture = pictures.getElementsByTagName('img')[0];
	pictures.getElementsByTagName('div')[1].style.visibility = "hidden";
	var allPs = pictures.getElementsByTagName('p');
	
	pictures.getElementsByTagName('div')[0].style.background = "#fff url(layout/loader.gif) no-repeat 50% 50%";
	
	for (var i=0; i < allPs.length; i++) {
		if (allPs[i].className == "goto") {
			var goTo = allPs[i];
		} else if (allPs[i].className == "prevNext") {
			var prevNext = allPs[i];
		} else if (allPs[i].className == "description") {
			var description = allPs[i];
		};	
	};
	
	pictureNr = 0;
	pictureTotal = goTo.getElementsByTagName('a').length;
	
	// Make copy of goTo
	var allGoToAs = new Array;
	for (var i=0; i < goTo.getElementsByTagName('a').length; i++) {
		allGoToAs[i] = goTo.getElementsByTagName('a')[i];
	};
	// hide navigation incase there is only one image
	if (allGoToAs.length > 1) {
		pictures.getElementsByTagName('div')[1].style.visibility = "visible";
	}
	
	if (prevNext) {
		allPrevNextAs = prevNext.getElementsByTagName('a');
		for (var i = allPrevNextAs.length - 1; i >= 0; i--){
			if (allPrevNextAs[i].className == "next") {
				btnNext = allPrevNextAs[i];
				btnNext.onclick = function() {
					if (pictureNr < pictureTotal - 1) {
						loadNewImage(allGoToAs[pictureNr+1]);
						pictureNr++;
					}
					return false;
				}
			} else if (allPrevNextAs[i].className == "prev") {
				btnPrev = allPrevNextAs[i];
				btnPrev.onclick = function() {
					if (pictureNr > 0) {
						loadNewImage(allGoToAs[pictureNr-1]);
						pictureNr--;
					}
					return false;
				}
				
			};
		};
	};
	
	var intervalInitImageLoad = window.setInterval(initWaiting, 50);
	
	function initWaiting () {
		if (picture.offsetHeight > 0) {
			checkImgHeight();
			clearInterval(intervalInitImageLoad);
		}
	}
	
	resetNav();
	resetGoTo();
	
	function loadNewImage (src) {
		description.style.visibility = "hidden";
		description.style.marginTop = 0 + "px";
		picture.style.visibility = "hidden";
		picture.src = src;
		var title = src.getAttribute("title");
		picture.onload  = function() {
			checkImgHeight();
			picture.style.visibility = "visible";
			description.innerHTML = title;
			resetNav();
			resetGoTo();
		}
				
	}
		
	function resetNav () {
		var setNr = Math.ceil((pictureNr + 1) / 5);
		
		goTo.innerHTML = "";
		
		for (var i=(setNr * 5) - 5; i < (setNr * 5); i++) {
			if (i < allGoToAs.length) {
				var newA = document.createElement("a");
				newA.href = allGoToAs[i];
				newA.title = allGoToAs[i].getAttribute("title")
				var nr = document.createTextNode(i + 1);
				newA.appendChild(nr);
				
				if (i == pictureNr) {
					newA.className = "active";
				}
				
				newA.onclick = function() {
					loadNewImage(this);
					pictureNr = this.firstChild.nodeValue - 1;
					return false;
				}
				
				if (i !== (setNr * 5) - 5) {
					var pipe = document.createTextNode(" | ");
					goTo.appendChild(pipe);
				}
				
				goTo.appendChild(newA);
				
			}
		};
			
	}
	
	function resetGoTo () {
		if (pictureNr == 0) {
			btnPrev.className = "prev inactive";
		} else {
			btnPrev.className = "prev";			
		}
		
		if (pictureNr == pictureTotal - 1) {
			btnNext.className = "next inactive";
		} else {
			btnNext.className = "next";			
		}
		
	}

	function resetDescription() {
		var intervalImageLoad = window.setInterval(waiting, 50);
		
		function waiting () {
			resetMarginTop = pictures.getElementsByTagName('div')[0].offsetHeight - pictures.getElementsByTagName('div')[1].offsetHeight - description.offsetHeight;
			if (resetMarginTop !== 0) {
				if (resetMarginTop < 0) {
					description.style.marginTop = "0px";
				} else {
					description.style.marginTop = resetMarginTop + "px";
				}
				description.style.visibility = "visible";
				clearInterval(intervalImageLoad);
			}
		}
	}
	
	function checkImgHeight() {
		picture.style.height = "auto";
		picture.style.width = "460px";
		if (picture.offsetHeight > 460) {
			picture.style.height = 460 + "px";
			picture.style.width = "auto";
		}
		resetDescription();
	}
	
}