/**********************************
	UTILITY FUNCTIONS
***********************************/

function addEvent(obj, evt, func){
	if(obj.addEventListener){
		obj.addEventListener(evt,func,false);
	}
	else if(obj.attachEvent){
		obj.attachEvent("on"+evt,func);
	}
	else {
		obj["on"+ evt] = func;
	}
}

// Add load event
// Thanks to Simon Willison (http://simonwillison.net/2004/May/26/addLoadEvent/)
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
	window.onload = func;
  } else {
	window.onload = function() {
	  if (oldonload) {
		oldonload();
	  }
	  func();
	}
  }
}

function setOpacity(obj, opacity)
{
	opacity = (opacity == 100)?99.999:opacity;
	
// IE 8	
	obj.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(Opacity=' + opacity + ')';
// IE/Win
	obj.style.filter = "alpha(opacity:"+opacity+")";
// Safari<1.2, Konqueror
	obj.style.KHTMLOpacity = opacity/100;
// Older Mozilla and Firefox
	obj.style.MozOpacity = opacity/100;
// Safari 1.2, newer Firefox and Mozilla, CSS3
	obj.style.opacity = opacity/100;
}

//Ajax object
var xmlHttp;
function GetXmlHttpObject()
{
var xmlHttp=null;
try
  {
  // Firefox, Opera 8.0+, Safari, IE7+
  xmlHttp=new XMLHttpRequest();
  }
catch (e)
  {
  // Internet Explorer
  try
    {
    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
  catch (e)
    {
    xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
return xmlHttp;
}

function pngfix(){
	var arVersion = navigator.appVersion.split("MSIE")
	var version = parseFloat(arVersion[1])
	
	if ((version >= 5.5) && (version < 7)) 
	{
	   for(var i=0; i<document.images.length; i++)
	   {
		  var img = document.images[i]
		  var imgName = img.src.toUpperCase()
		  if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
		  {
			 var imgID = (img.id) ? "id='" + img.id + "' " : ""
			 var imgClass = (img.className) ? "class='" + img.className + "' " : ""
			 var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
			 var imgStyle = "display:inline-block;" + img.style.cssText 
			 if (img.align == "left") imgStyle = "float:left;" + imgStyle
			 if (img.align == "right") imgStyle = "float:right;" + imgStyle
			 if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
			 var strNewHTML = "<span " + imgID + imgClass + imgTitle
			 + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
			 + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
			 + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>" 
			 img.outerHTML = strNewHTML
			 i = i-1
		  }
	   }
	}
}

function initLinks()
{
	//debug('initLinks');
	var links = document.getElementsByTagName('A');
	for(var i = 0, link; link = links[i]; i++)
	{
		if(link.getAttribute('rel') == 'external')
			link.setAttribute('target', '_blank');
	}
}

function initMenu()
{
	var menu = document.getElementById("left_menu");
	var imgs = menu.getElementsByTagName("IMG");

	for (var i=0; i < imgs.length; i++){
		var chunks = imgs[i].src.split(".");
		var ext = chunks[chunks.length-1];
		chunks.pop();
		var namepart = chunks.join(".");
				//preload mouseover image
				
		new Image().src = namepart + "_select." + ext;
		
		//make the current page url selected
		if(imgs[i].parentNode.parentNode.className == "active_menu_item"){
			imgs[i].src = namepart + "_select." + ext;
		}
		
		if(document.getElementById('homeswapimg')){
			var urlchunks = imgs[i].parentNode.href.split("/");
			var section = urlchunks[urlchunks.length - 1];
			//preload swapping destination image
			new Image().src = "/nl/images/home_"+section+".gif";
		}
			
		imgs[i].onmouseover = function(){		
			var chunks = this.src.split(".");
			var ext = chunks[chunks.length-1];
			chunks.pop();
			var namepart = chunks.join(".");
			if(this.parentNode.parentNode.className != "active_menu_item")
				this.src = namepart + "_select." + ext;	
			
			if(document.getElementById('homeswapimg')){
				var urlchunks = this.parentNode.href.split("/");
				var section = urlchunks[urlchunks.length - 1];
				document.getElementById('homeswapimg').src = "/nl/images/home_"+section+".gif";
			}
		};
		
		imgs[i].onmouseout = function(){
			var chunks = this.src.split("_select");
			var url = chunks.join("");
			if(this.parentNode.parentNode.className != "active_menu_item")
				this.src = url;
			if(document.getElementById('homeswapimg')){
				document.getElementById('homeswapimg').src = "/nl/images/home.gif";
			}
		};
		
	}
}

function swapHomeImg(newsrc){
	document.getElementById('homeswapimg').src = "/nl/images/"+newsrc+".gif"; 
	
	var menu_anchors = document.getElementById('left_menu').getElementsByTagName("A");
	var menuhrefchunk;
	
	for(var i=0; i < menu_anchors.length; i++ ){
		
		menuhrefchunk = menu_anchors[i].href.split("/");
		if(newsrc.substr(5) == menuhrefchunk[menuhrefchunk.length -1]){
			menuimg = menu_anchors[i].getElementsByTagName("IMG")[0];
			var oldsrcchunks = menuimg.src.split(".");
			var ext = oldsrcchunks[oldsrcchunks.length-1];
			oldsrcchunks.pop();
			var namepart = oldsrcchunks.join(".");
			newsrc = namepart + "_select." + ext;
			menuimg.src = newsrc;
		}
	}
}


function homeImgOut(){
	var menu_anchors = document.getElementById('left_menu').getElementsByTagName("A");
	var menuhrefchunk;
	
	for(var i=0; i < menu_anchors.length; i++ ){	
		menuhrefchunk = menu_anchors[i].href.split("/");
		if(menu_anchors[i].getElementsByTagName("IMG")[0]){
			menuimg = menu_anchors[i].getElementsByTagName("IMG")[0];
			menuimg.src = menuimg.src.replace(/_select/i, "");
		}
	}
	document.getElementById('homeswapimg').src = "/nl/images/home.gif";
}

addLoadEvent(initMenu);
/**********************************
	MEDIA
***********************************/

function initMediaSlide(){
	if(!document.getElementById('mediaslide'))
		return;
	slide = document.getElementById('mediaslide');
	images = slide.getElementsByTagName("IMG");
	for(var i=0; i< images.length; i++){
		images[i].onmouseover = function(e){setOpacity(this, 90); /*this.style.cursor = 'cross'*/};
		images[i].onmouseout = function(e){setOpacity(this, 100);};	
	}
}

function initMediaPage(){
	if(!document.getElementById('mediagallery'))
		return;
	page = document.getElementById('mediagallery');
	images = page.getElementsByTagName("IMG");
	for(var i=0; i< images.length; i++){
		images[i].onmouseover = function(e){setOpacity(this, 90); /*this.style.cursor = 'cross'*/};
		images[i].onmouseout = function(e){setOpacity(this, 100);};	
	}
}

function initMeerFotos(){
	if(!document.getElementById('meerfotos'))
		return;
	var meerfotos = document.getElementById('meerfotos');
	meerfotos.onmouseover = function(e){setOpacity(this, 60); this.style.cursor = 'pointer'};
	meerfotos.onmouseout = function(e){setOpacity(this, 100)};	
}


/*
function openMediaPage(){
	if(!document.getElementById("gallerypage"))
		return;
	mediapage = document.getElementById("gallerypage");
	var arrayPageSize = getPageSize();
	
	// set dimensions to take up whole page and show
	mediapage.style.height = (arrayPageSize[1] + 'px');
	mediapage.style.width = (arrayPageSize[0] + 'px');
	mediapage.style.display = 'block';	

    var section = mediapage.getAttribute('title') ;
	xmlHttp=GetXmlHttpObject();
	if (xmlHttp==null){
		alert ("Your browser does not support AJAX!");
		return;
	}
	
	var url="/nl/mediapage.php";
	url=url+"?section="+section;
	url=url+"&sid="+Math.random();
	xmlHttp.onreadystatechange=function(){
		if (xmlHttp.readyState==4)
		{
			info = xmlHttp.responseText;
			mediapage.innerHTML = info;
			
			var closePage = document.createElement("div");
			closePage.onclick = function(){document.getElementById(mediapage.id).style.display='none'};
			closePage.innerHTML = "<img src='"+closeButton+"' alt='close'/>";
			mediapage.appendChild(closePage);
			initLightbox(); //reload lightbox to include new images links in the lightbox
			mediapage.style.display = "block";
		}
	};
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}
*/
var closeButtonN3 = '/nl/images/close-white.png';
function openLevel3(source){
	if(!document.getElementById("level3"))
		return;
	
	var flashwidth = 1088;
	var flashheight = 630;
	
	var layer3 = document.getElementById("level3");
	layer3.innerHTML ='';
	
	var arrayPageSize = getPageSize();
	var arrayPageScroll = getPageScroll();

    var section = source;//.id ;

	var closePage = document.createElement("div");
	closePage.onclick = function(){
			layer3.innerHTML ='';
			layer3.style.display='none';
	};
	closePage.innerHTML = "<div id='level3close'><img src='"+closeButtonN3+"' alt='close'/></div>";
	layer3.appendChild(closePage);
		
    var placeholder = document.createElement("div");
	placeholder.style.position = "absolute";
	placeholder.style.height = flashheight + "px";
	placeholder.style.width = flashwidth + "px";
	
	var flashElement = document.createElement("div");
	flashElement.id = "placeholder";
	placeholder.appendChild(flashElement);
	
	layer3.appendChild(placeholder);
	
	var params = {
	};
	params.allowscriptaccess = "always";
	params.wmode = "transparent";
	swfobject.embedSWF("/nl/images/"+section+".swf","placeholder", flashwidth, flashheight, "8", false, false, params, false);	
	
	arrayPageSize = getPageSize();
	
	// set dimensions to take up whole page and show
	layer3.style.height = (arrayPageSize[1] > flashheight) ? arrayPageSize[1] + "px" :flashheight+ "px";
	layer3.style.width = (arrayPageSize[0] + 'px');
	layer3.style.display = 'block';	
    window.scrollTo(0,0);
	pngfix();
}

function closeLevel3(){
	document.getElementById("level3").innerHTML ='';
	document.getElementById("level3").style.display='none';
}

/**********************************
	FLASH MOVIES
***********************************/

function setMovie(id, file, thumb, w, h){
	var flashvars = {};
	flashvars.file = file;
	flashvars.width = w;
	flashvars.height = h;
	
	flashvars.image = thumb;
	flashvars.controlbar = "over";
	flashvars.backcolor = "DDDDDD";
	flashvars.frontcolor = "FFFFFF";
	flashvars.lightcolor = "FFFFFF";
	flashvars.screencolor = "FFFFFF";
	flashvars.autostart = "true";
	flashvars.mute = "true";
	var params = {};
	params.wmode = "transparent";
	params.allowfullscreen = "true";
	params.allowscriptaccess = "always";
	
	//needed for js interaction with player
	var attributes = {};
	attributes.id = id;
	attributes.name = id;
	
	swfobject.embedSWF("mediaplayer/mediaplayer.swf", id,w, h, "8", false, flashvars, params, attributes);
}

/************************
	MAIL FUNCTIONS
*************************/

function checkMail(mail){
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (filter.test(mail)) 
		return true;
	return false;
}

var errormsg = "<img src='./images/error.gif' alt='verplicht veld' title='verplicht veld' />";

function checkFormData(form){
	var submiterror = 0;
	inputTags = form.getElementsByTagName('input');
	textAreas = form.getElementsByTagName('textarea');
	
	for(i=0;i<inputTags.length;i++){
		if(document.getElementById(inputTags[i].name+"-error"))
			document.getElementById(inputTags[i].name+"-error").innerHTML = "";			
		if (inputTags[i].value == "" && inputTags[i].getAttribute('type') != 'hidden' && inputTags[i].getAttribute('type')!='submit' &&inputTags[i].className=="required") {
			document.getElementById(inputTags[i].name+"-error").innerHTML = errormsg;
			submiterror++;
		}		
		if (inputTags[i].name == 'email' && !checkMail(inputTags[i].value)){{
			document.getElementById("email-error").innerHTML = errormsg;}
			submiterror++;
		}		
	}
	
	for(i=0;i<textAreas.length;i++){
		document.getElementById(textAreas[i].name+"-error").innerHTML = "";
		if (textAreas[i].value == ""){
			document.getElementById(textAreas[i].name+"-error").innerHTML = errormsg;
			submiterror++;
		}
	}
	
	if (submiterror >0)
		return false;
	
	return true;
}


/*
	BASED ON: Lightbox JS: Fullsize Image Overlays 
	by Lokesh Dhakar - http://www.huddletogether.com

	For more information on this script, visit:
	http://huddletogether.com/projects/lightbox/

	Licensed under the Creative Commons Attribution 2.5 License - http://creativecommons.org/licenses/by/2.5/
	(basically, do anything you want, just leave my name and link)
	
	Table of Contents
	-----------------
	Configuration
	
	Functions
	- getPageScroll()
	- getPageSize()
	- pause()
	- getKey()
	- listenKey()
	- showLightbox()
	- hideLightbox()
	- initLightbox()
	
	Function Calls
	- addLoadEvent(initLightbox)

*/

//
// Configuration
//

// If you would like to use a custom loading image or close button reference them in the next two lines.
var loadingImage = '/nl/images/ajax-loader.gif';		
var closeButton = '/nl/images/close.png';		
var flashmovie = new Object();

//edit: define flash movie dimensions
flashmovie.width = 640;
flashmovie.height = 480;

//
// getPageScroll()
// Returns array with x,y page scroll values.
// Core code from - quirksmode.org
//
function getPageScroll(){

	var xScroll, yScroll;

	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
	} else if (window.pageYOffset) {
		yScroll = window.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
		yScroll = document.documentElement.scrollTop;
	} else if (document.body) {// all other Explorers
		yScroll = document.body.scrollTop;
	}
	
	//EDIT: return horizontal scroll
    if(self.pageXOffset)
		xScroll =  self.pageXOffset;
	else if(window.pageXOffset)
		xScroll =  window.pageXOffset;
	else if (document.documentElement && document.documentElement.scrollLeft)	 // Explorer 6 Strict
		xScroll = document.documentElement.scrollLeft;
	else if(document.body.scrollLeft)	
		xScroll = document.body.scrollLeft;
		
	//EDIT: if page is not scrolled, some browsers may return 'undefined', which may result in unreliable behaviour	
	if(typeof xScroll == 'undefined')	xScroll = 0;
	if(typeof yScroll == 'undefined')	yScroll = 0;
	
	arrayPageScroll = new Array(xScroll,yScroll) ;
	return arrayPageScroll;
}


//
// getPageSize()
// Returns array with page width, height and window width, height
// Core code from - quirksmode.org
// Edit for Firefox by pHaez
//
function getPageSize(){
	
	var xScroll, yScroll;
	
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	
	//EDIT: this should solve improper pagewidth detection for some browsers
	if(document.documentElement.scrollWidth && document.documentElement.scrollWidth > xScroll){
		xScroll = document.documentElement.scrollWidth;
	}

	//EDIT: this should solve improper pageheight detection for some browsers
	if(document.documentElement.scrollHeight && document.documentElement.scrollHeight > yScroll){
		yScroll = document.documentElement.scrollHeight;
	}

	var windowWidth, windowHeight;
	if (self.innerHeight) {	// all except Explorer
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	
	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else { 
		pageHeight = yScroll;
	}

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){	
		pageWidth = windowWidth;
	} else {
		pageWidth = xScroll;
	}

	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
	return arrayPageSize;
}


//
// pause(numberMillis)
// Pauses code execution for specified time. Uses busy code, not good.
// Code from http://www.faqts.com/knowledge_base/view.phtml/aid/1602
//
function pause(numberMillis) {
	var now = new Date();
	var exitTime = now.getTime() + numberMillis;
	while (true) {
		now = new Date();
		if (now.getTime() > exitTime)
			return;
	}
}

//
// getKey(key)
// Gets keycode. If 'x' is pressed then it hides the lightbox.
//

function getKey(e){
	if (e == null) { // ie
		keycode = event.keyCode;
	} else { // mozilla
		keycode = e.which;
	}
	key = String.fromCharCode(keycode).toLowerCase();
	
	if(key == 'x'){ hideLightbox(); }
}


//
// listenKey()
//
function listenKey () {	document.onkeypress = getKey; }
	

//
// showLightbox()
// Preloads images. Pleaces new image in lightbox then centers and displays.
//

function showLightbox(objLink)
{
	// prep objects
	var objOverlay = document.getElementById('overlay');
	var objLightbox = document.getElementById('lightbox');
	var objCaption = document.getElementById('lightboxCaption');
	var objImage = document.getElementById('lightboxImage');
	var objLoadingImage = document.getElementById('loadingImage');
	var objLightboxDetails = document.getElementById('lightboxDetails');

	
	var arrayPageSize = getPageSize();
	var arrayPageScroll = getPageScroll();
    
	//alertSize();
	// center loadingImage if it exists
	if (objLoadingImage) {
		objLoadingImage.style.top = (arrayPageScroll[1] + ((arrayPageSize[3] - 35 - objLoadingImage.height) / 2) + 'px');
		//EDIT: base left alignment amount on viewport + scroll
		objLoadingImage.style.left = (arrayPageScroll[0] + ((arrayPageSize[2] - 20 - objLoadingImage.width) / 2) + 'px');
		objLoadingImage.style.display = 'block';
	}

	// set height of Overlay to take up whole page and show
	objOverlay.style.height = (arrayPageSize[1] + 'px');
	objOverlay.style.width = (arrayPageSize[0] + 'px');//edit: width
	objOverlay.style.display = 'block';

	/*EDIT FOR FLV MOVIES*/
	
	//remove existing flashplayer
	if(document.getElementById('flashbox'))
		objLightbox.removeChild(document.getElementById('flashbox'));

	var chunks = objLink.href.split('.');
	var extension = chunks[(chunks.length -1)];
	if (extension.toLowerCase() == 'flv'){

		//hide previous Image
		objImage.style.display = 'none';
 
 		//create placeholder element for flash movie
    	var objFlashBox = document.createElement('div');
		objFlashBox.id = "flashbox";
		objLightbox.appendChild(objFlashBox);
		
		if (objLoadingImage) {objLoadingImage.style.display = 'none';}	
		
		//Hide select boxes as they will 'peek' through the image in IE
		selects = document.getElementsByTagName("select");
        for (i = 0; i != selects.length; i++) {
                selects[i].style.visibility = "hidden";
        }

		//show flashbox
		objFlashBox.style.display = 'block';
		
		setMovie("flashbox", objLink.href, false, flashmovie.width, flashmovie.height);
		
		// center lightbox and make sure that the top and left values are not negative
		// and the image placed outside the viewport
		var lightboxTop = arrayPageScroll[1] + ((arrayPageSize[3] - 35 - flashmovie.height) / 2);
		var lightboxLeft = arrayPageScroll[0] + ((arrayPageSize[2] - 20 - flashmovie.width) / 2);
		
		objLightbox.style.top = (lightboxTop < 0) ? "0px" : lightboxTop + "px";
		objLightbox.style.left = (lightboxLeft < 0) ? "0px" : lightboxLeft + "px";


		objLightboxDetails.style.width = flashmovie.width + 'px';
		
		if(objLink.getAttribute('title')){
			objCaption.style.display = 'block';
			//objCaption.style.width = imgPreload.width + 'px';
			objCaption.innerHTML = objLink.getAttribute('title');
		} else {
			objCaption.style.display = 'none';
		}
		
		// update the overlay height as the new image might have
		// increased the overall page height.
		arrayPageSize = getPageSize();
		objOverlay.style.height = (arrayPageSize[1] + 'px');
		
		// Check for 'x' keypress
		listenKey();
			
		objLightbox.style.display = 'block';

		return false;
	}
    /* END EDIT FOR FLV */
	
	// preload image
	imgPreload = new Image();

	imgPreload.onload=function(){
		
		objImage.src = objLink.href;
        objImage.style.display = 'block';
		
		// center lightbox and make sure that the top and left values are not negative
		// and the image placed outside the viewport
		var lightboxTop = arrayPageScroll[1] + ((arrayPageSize[3] - 35 - imgPreload.height) / 2);
		//EDIT: base left alignment amount on viewport + scroll
		var lightboxLeft = arrayPageScroll[0] + ((arrayPageSize[2] - 20 - imgPreload.width) / 2);
		
		objLightbox.style.top = (lightboxTop < 0) ? "0px" : lightboxTop + "px";
		objLightbox.style.left = (lightboxLeft < 0) ? "0px" : lightboxLeft + "px";


		objLightboxDetails.style.width = imgPreload.width + 'px';
		
		if(objLink.getAttribute('title')){
			objCaption.style.display = 'block';
			//objCaption.style.width = imgPreload.width + 'px';
			objCaption.innerHTML = objLink.getAttribute('title');
		} else {
			objCaption.style.display = 'none';
		}
		
		// A small pause between the image loading and displaying is required with IE,
		// this prevents the previous image displaying for a short burst causing flicker.
		if (navigator.appVersion.indexOf("MSIE")!=-1){
			pause(250);
		} 

		if (objLoadingImage) {	objLoadingImage.style.display = 'none'; }

		// Hide select boxes as they will 'peek' through the image in IE
		selects = document.getElementsByTagName("select");
        for (i = 0; i != selects.length; i++) {
                selects[i].style.visibility = "hidden";
        }
		
		objLightbox.style.display = 'block';

		// After image is loaded, update the overlay height as the new image might have
		// increased the overall page height.
		arrayPageSize = getPageSize();
		objOverlay.style.height = (arrayPageSize[1] + 'px');
		objOverlay.style.width = (arrayPageSize[0] + 'px');
		// Check for 'x' keypress
		listenKey();

		return false;
	}

	imgPreload.src = objLink.href;

}


//
// hideLightbox()
//

function hideLightbox()
{
	// get objects
	objOverlay = document.getElementById('overlay');
	objLightbox = document.getElementById('lightbox');

	// hide lightbox and overlay
	objOverlay.style.display = 'none';
	objLightbox.style.display = 'none';

	// make select boxes visible
	selects = document.getElementsByTagName("select");
    for (i = 0; i != selects.length; i++) {
		selects[i].style.visibility = "visible";
	}

	// disable keypress listener
	document.onkeypress = '';
}

//
// initLightbox()
// Function runs on window load, going through link tags looking for rel="lightbox".
// These links receive onclick events that enable the lightbox display for their targets.
// The function also inserts html markup at the top of the page which will be used as a
// container for the overlay pattern and the inline image.
//

function initLightbox()
{
	if (!document.getElementsByTagName){ return; }
	var anchors = document.getElementsByTagName("a");

	// loop through all anchor tags
	for (var i=0; i<anchors.length; i++){
		var anchor = anchors[i];

		if (anchor.getAttribute("href") && (anchor.getAttribute("rel") == "lightbox")){
			anchor.onclick = function () {showLightbox(this);return false;}
		}
	}

	// the rest of this code inserts html at the top of the page that looks like this:
	//
	// <div id="overlay">
	//		<a href="#" onclick="hideLightbox(); return false;"><img id="loadingImage" /></a>
	//	</div>
	// <div id="lightbox">
	//		<a href="#" onclick="hideLightbox(); return false;" title="Click anywhere to close image">
	//			<img id="closeButton" />		
	//			<img id="lightboxImage" />
	//		</a>
	//		<div id="lightboxDetails">
	//			<div id="lightboxCaption"></div>
	//			<div id="keyboardMsg"></div>
	//		</div>
	// </div>
	
	var objBody = document.getElementsByTagName("body").item(0);
	
	// create overlay div and hardcode some functional styles (aesthetic styles are in CSS file)
	var objOverlay = document.createElement("div");
	objOverlay.setAttribute('id','overlay');
	objOverlay.onclick = function () {hideLightbox(); return false;}
	objOverlay.style.display = 'none';
	objOverlay.style.position = 'absolute';
	objOverlay.style.top = '0';
	objOverlay.style.left = '0';
	objOverlay.style.zIndex = '90';
 	objOverlay.style.width = '100%';
	objBody.insertBefore(objOverlay, objBody.firstChild);
	
	var arrayPageSize = getPageSize();
	var arrayPageScroll = getPageScroll();

	// preload and create loader image
	var imgPreloader = new Image();
	
	// if loader image found, create link to hide lightbox and create loadingimage
	imgPreloader.onload=function(){

		var objLoadingImageLink = document.createElement("a");
		objLoadingImageLink.setAttribute('href','#');
		objLoadingImageLink.onclick = function () {hideLightbox(); return false;}
		objOverlay.appendChild(objLoadingImageLink);
		
		var objLoadingImage = document.createElement("img");
		objLoadingImage.src = loadingImage;
		objLoadingImage.setAttribute('id','loadingImage');
		objLoadingImage.style.position = 'absolute';
		objLoadingImage.style.zIndex = '150';
		objLoadingImageLink.appendChild(objLoadingImage);

		imgPreloader.onload=function(){};	//	clear onLoad, as IE will flip out w/animated gifs

		return false;
	}

	imgPreloader.src = loadingImage;

	// create lightbox div, same note about styles as above
	var objLightbox = document.createElement("div");
	objLightbox.setAttribute('id','lightbox');
	objLightbox.style.display = 'none';
	objLightbox.style.position = 'absolute';
	objLightbox.style.zIndex = '100';	
	objBody.insertBefore(objLightbox, objOverlay.nextSibling);
	
	// create link
	var objLink = document.createElement("a");
	objLink.setAttribute('href','#');
	objLink.setAttribute('title','Click to close');
	objLink.onclick = function () {hideLightbox(); return false;}
	objLightbox.appendChild(objLink);

	// preload and create close button image
	var imgPreloadCloseButton = new Image();

	// if close button image found, 
	imgPreloadCloseButton.onload=function(){

		var objCloseButton = document.createElement("img");
		objCloseButton.src = closeButton;
		objCloseButton.setAttribute('id','closeButton');
		objCloseButton.style.position = 'absolute';
		objCloseButton.style.zIndex = '200';
		objLink.appendChild(objCloseButton);

		return false;
	}

	imgPreloadCloseButton.src = closeButton;

	// create image
	var objImage = document.createElement("img");
	objImage.setAttribute('id','lightboxImage');
	objLink.appendChild(objImage);
		
	// create details div, a container for the caption and keyboard message
	var objLightboxDetails = document.createElement("div");
	objLightboxDetails.setAttribute('id','lightboxDetails');
	objLightbox.appendChild(objLightboxDetails);

	// create caption
	var objCaption = document.createElement("div");
	objCaption.setAttribute('id','lightboxCaption');
	objCaption.style.display = 'none';
	objLightboxDetails.appendChild(objCaption);

	// create keyboard message
	var objKeyboardMsg = document.createElement("div");
	objKeyboardMsg.setAttribute('id','keyboardMsg');
	//objKeyboardMsg.innerHTML = 'press <a href="#" onclick="hideLightbox(); return false;"><kbd>x</kbd></a> to close';
	objLightboxDetails.appendChild(objKeyboardMsg);
}

/************************ load events ************************************/


addLoadEvent(initMeerFotos);
addLoadEvent(initLinks);
addLoadEvent(initMediaSlide);
addLoadEvent(initMediaPage);


/************************************************************ 
*															*	
*			LOAD LIGHTBOX AFTER DOM HAS LOADED. 		    *
*			LEAVE THIS AT THE BOTTOM!!!						*
*															*
*************************************************************/

// Cross Browser Onload workaround by Dean Edwards/Matthias Miller/John Resig

function globalInit(){
	// quit if this function has already been called
	if (arguments.callee.done) return;
	
	// flag this function so we don't do the same thing twice
	arguments.callee.done = true;
	
	// kill the timer
	if (_timer) clearInterval(_timer);
	
	//run the script
	initLightbox();
}

/* for Mozilla/Opera9 */
if (document.addEventListener) {
	document.addEventListener("DOMContentLoaded", globalInit, false);
}

/* for Internet Explorer */
/*@cc_on @*/
/*@if (@_win32)
  document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
  var script = document.getElementById("__ie_onload");
  script.onreadystatechange = function() {
    if (this.readyState == "complete") {
      globalInit(); // call the onload handler
    }
  };
/*@end @*/

/* for Safari */
if (/WebKit/i.test(navigator.userAgent)) { // sniff
  var _timer = setInterval(function() {
    if (/loaded|complete/.test(document.readyState)) {
      globalInit(); // call the onload handler
    }
  }, 10);
}

addLoadEvent(globalInit);
addLoadEvent(pngfix);
