LB = new Object({openLightBox: false});
LB.createLightboxLinks = function() {

	// get all lightbox links
	$('a.lightbox').click(function(){
		LB.createLighboxContentForLink(this);
		return false;
	});
}

LB.readLightboxParametersFromHref = function(href) {
	var parameters = new Array();
	var params = href.substr(href.lastIndexOf('#') + 1);

	var paramsArr = params.split(',');
	for (k=0; k<paramsArr.length; k++) {
		var paramArr = paramsArr[k].split('=');
		parameters[paramArr[0]] = paramArr[1];
	}

	return parameters;
}

LB.createLighboxContentForLink = function(link) {
	var url = link.href.substring(0,link.href.lastIndexOf('#'));
	var parameters = LB.readLightboxParametersFromHref(link.href);
	
	var id = 'lightbox_' + (parameters['id']?parameters['id']:(Math.round(Math.random()*1000)));

	LB.createLighboxContent(id, url, parameters);
}

LB.createLighboxContent = function(foid, url, parameters) {


	var type = url ? url.substr(url.lastIndexOf('.') + 1).toLowerCase() : 'empty';
	
	// create lightbox
	var grayDiv = $('<div id="graysite" style="position: fixed; *position: absolute; left: 0; top: 0; height: 100%; width: 100%; opacity: 0; z-index: 1000; background-color: '+(parameters['fadecolor'] ? '#'+parameters['fadecolor'] : '#454545')+'"/>');
	$('body').append(grayDiv);

	// create an close event on lightbox
	$(grayDiv).bind('click', LB.closeLightboxContainer);

	// fade in
	var opacity = (typeof(parameters['fadeopacity'])!='undefined')?parseFloat(parameters['fadeopacity']):0.8;
	
	
	
	$('body').addClass('light-boxed');

	$(grayDiv).fadeTo(500, opacity, function(){
		
	
		
		// if fading done, create container

		
    		// create flash Container
    		var fo_container = document.createElement('div');
    		fo_container.id = 'fo_' + foid;
    		fo_container.className = 'lightboxobj_container';
    		fo_container.style.position = 'absolute';
    		fo_container.style.zIndex = '10001';


			// check if there is a height specified
			if (!parameters['fullscreen']) {
	    		var winHeight = 500;
				if (parameters['height']) {
					winHeight = parameters['height'];
				} else if (parameters['voffset']) {
					winHeight = $(window).height() - (2 * parseInt(parameters['voffset']));
				}
	
				// check if there is a width specified
				var winWidth = 500;
				if (parameters['width']) {
					winWidth = parameters['width'];
				} else if (parameters['hoffset']) {
					winWidth = $(window).width() - (2 * parseInt(parameters['hoffset']));
				}
				var top,left;
				if (parameters['top']) {
					top = parseInt(parameters['top']) + $(window).scrollTop();
				}
				else {
					top = ($(window).height() - winHeight)/2 + $(window).scrollTop();
				}
				if (parameters['left']) {
					left = parseInt(parameters['left']) + $(window).scrollLeft();
				}
				else {
					left = ($(window).width() - winWidth)/2 + $(window).scrollLeft();
				}
	    		
	    		if (top < ($(window).scrollTop()+25) && !parameters['voffset']) top = ($(window).scrollTop()+25);
				if (left < ($(window).scrollLeft()+25) && !parameters['hoffset']) left = ($(window).scrollLeft()+25);
	
				$(fo_container).css({left: left, top: top});

			} else {
				winWidth = $(document).width();
				winHeight = $(document).height();
				$(fo_container).css({left: 0, top: 0, width: winWidth, height: winHeight});
			}

    		document.body.appendChild(fo_container);
    		
    		if (parameters['callback']) {
    			eval(parameters['callback'])();
    		}
    		
    		if (parameters['css']) {
    			$(fo_container).css(eval(parameters['css']));
    		}

    		LB.openLightboxContainer = fo_container.id;

			// write flash object

			switch(type) {
				case 'swf':
					$(fo_container).append('<div id="flash_'+fo_container.id+'"/>');
					swfobject.embedSWF(url, 'flash_'+fo_container.id, winWidth, winHeight, '9', false, {}, {allowScriptAccess: 'always', wmode: 'transparent'});
					break;

				case ('jpg' || 'gif'):
					var img = new Image();
					img.src = url;
					img.style.width = winWidth + 'px';
					img.style.height = winHeight + 'px';
					fo_container.appendChild(img);
					break;
					
				case ('empty'):
					break;

				default:

					var iframe = document.createElement('iframe');
					iframe.src = url;
					iframe.style.width = winWidth + 'px';
					iframe.style.height = winHeight + 'px';
					iframe.setAttribute('frameBorder','0');
					if (parameters['iframecss']) {
						var css = eval(parameters['iframecss']);
						$(iframe).css(css);
						if (css.overflow && css.overflow == 'hidden') {
							iframe.setAttribute('scrolling','no');
						}
					}
					
					fo_container.appendChild(iframe);
					break;

			}

		if ('none' != parameters['close']) {
				$('<a class="close" style="color: #fff; text-decoration: none; position: absolute; right: 0; top: -16px; font-size: 12px;" href="#_close">sluiten</a>').click(function(){
					LB.closeLightboxContainer();
					return false;
				}).appendTo(fo_container);
    		}

    		// ie6 fix
			grayDiv.height(($('body').height() > $(window).height() ?  $('body').height() :  $(window).height()) + 40);
			/*
			*/

	});
}

// function to close container and re-enable site
LB.closeLightboxContainer = function() {
	$('body').removeClass('light-boxed');
	$('#graysite, #'+LB.openLightboxContainer).fadeTo(300,0,function(){
		$(this).remove();
	});
}

LB.openLightBoxByHash = function() {

	var lightboxId = document.location.hash.substring(1);

	// get all lightbox links in the primary container
	$('a.lightbox').each(function(){
		var lightboxLink = $(this);
		var parameters = LB.readLightboxParametersFromHref(lightboxLink[0].href);
		var lightboxLinkId =  parameters['id'];
		if (lightboxLinkId == lightboxId) {
			LB.createLighboxContentForLink(lightboxLink);
		}
	});
}


//// takeover scripts
LB.doTakeOver = function() {
	var takeoverLink = $('a.takeover:first');
	if (!takeoverLink.size()) return;
	
	
	
	// ###################################
	// ############# COOKIES #############
	// ###################################

	function setCookie(name, value, days){
	  var cookieString = name + "=" + escape(value);
	  if (days) {
	    var date = new Date();
	    date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
	    cookieString += "; expires="+date.toGMTString();
	  }
	  document.cookie = cookieString;
	}

	function getCookie(name) {
	  var results = document.cookie.match (name + "=(.*?)(;|$)");

	  if (results)
	    return (unescape(results[1]));
	  else
	    return null;
	}

	function removeCookie(name) {
	  var cookieDate = new Date ();  // current date & time
	  cookieDate.setTime(cookieDate.getTime()-1);
	  document.cookie = name += "=; expires=" + cookieDate.toGMTString();
	}
	
	
	
	var target = takeoverLink.attr('target');
	if (target && target!='') {
		var correctUserAgent = false;
		var targetUserAgents = target.split("|");
		for (var agentIdx = 0; agentIdx < targetUserAgents.length; ++agentIdx) {
			if (navigator.userAgent.toLowerCase().indexOf(targetUserAgents[agentIdx]) > -1) {
				correctUserAgent = true;
			}
		}
		if (!correctUserAgent) {
			return;
		}
	}
	
	var parameters = LB.readLightboxParametersFromHref(takeoverLink[0].href);
	var lightboxId = parameters['id'];
	
	var showTakeOver = true;
	if (typeof lightboxId != 'undefined') {
		setCookie('takeover_check',true,365);
		if (getCookie('takeover_check') && !getCookie('takeover_' + lightboxId)) {
			setCookie('takeover_' + lightboxId,true,365);
		} else {
			showTakeOver = false;
		}
	}
	if (showTakeOver) {
		if (parameters['force']=='true') {
			document.location.href = takeoverLink[0].href.substring(0,takeoverLink[0].href.lastIndexOf('#'));
		} else {
			LB.createLighboxContentForLink(takeoverLink[0]);
		}
	}
}
$(document).ready(function(){
	LB.createLightboxLinks();
	LB.openLightBoxByHash();
	LB.doTakeOver();
});

