/* 
 * Interstitial helper functions
 * user globals: 
 * var int_delay = 6;
 * var int_media = "meh.swf";
 * var int_width = 640;
 * var int_height = 480;
 * var int_altimage = "meh.jpg";
 * var int_color = "#FFFFFF";
 */

var int_topz = -1;


function int_compress_z() {
	/* 
	 * compresses z-index of all objects, returns highest z 
	 * @see http://greengeckodesign.com/blog/2007/07/get-highest-z-index-in-javascript.html
	 */
	var tObj = document.getElementsByTagName('*');
	var sortA = new Array();
	function _fsortZ(a,b){  return a.z - b.z; };
	for (var i = 0; i < tObj.length; i++)
	{ 
	  var zF = -1;    
	  if (tObj[i].currentStyle){ zF = parseFloat(tObj[i].currentStyle['zIndex']);   }
	  else if(window.getComputedStyle){ zF = parseFloat(document.defaultView.getComputedStyle(tObj[i],null).getPropertyValue('z-index')); }
	  // TODO test safari Mac
	  if(zF > 0){  sortA.push({ obj:tObj[i], z: zF}); };
	};
	sortA.sort(_fsortZ);
	var prev_val; var newZ = 0;
	for (var i = 0; i < sortA.length; i++)
	{
	  if(prev_val !== sortA[i].z)
	  {
	    newZ ++;    
	  }
	  sortA[i].obj.style.zIndex = newZ;
	  prev_val = sortA[i].z;
	  //console.log(sortA[i].z + " | " + sortA[i].obj.style.zIndex);
	}
	return (newZ + 1);
}

function int_setStyle(element, styleText){
	if(element.style.setAttribute)
		element.style.setAttribute("cssText", styleText );
	else
		element.setAttribute("style", styleText );
}

function write_interstitial_overlay(doc)
{
	var t = setTimeout("write_interstitial_overlay_delayed(document);", 100); //fix for some ads
}

function write_interstitial_overlay_delayed(doc)
{	
	int_topz = int_compress_z();
	
	var overlay = document.createElement('div');
	overlay.id = "interstitial_overlay";
	int_setStyle(overlay, "display:none");

	var content = document.createElement('div');
	content.id = "interstitial_content";

	var button = document.createElement('div');
	button.id = "interstitial_button";
	button.innerHTML = "<div style='width: 80px; margin-right: 10px; color: black; float: right; _cursor: hand; cursor: pointer; font-size: 8pt; font-weight: bold; text-align: right;' onclick='javascript:remove_interstitial_overlay(document)'>skip intro</a>";
	button.style.height = "30px";

	var iframe = document.createElement('IFRAME');
	iframe.id = "interstitial_iframe";
	iframe.setAttribute("src", "http://www.rtl.nl/advertisement/dclk_interstitial_iframe.html#" + escape(int_media + "||" + int_altimage));
	iframe.frameBorder = 0; // IE
	iframe.setAttribute("allowtransparency", "true");
	iframe.setAttribute("height", int_height);
	iframe.setAttribute("width", int_width);
	iframe.setAttribute("leftmargin", 0);
	iframe.setAttribute("topmargin", 0);	
	iframe.setAttribute("marginwidth", 0);
	iframe.setAttribute("marginheight", 0);
	iframe.setAttribute("hspace", 0);
	iframe.setAttribute("vspace", 0);
	iframe.setAttribute("scrolling", "no");
	
	//hide all dynamic objects
	dart_ads_visible(false);

	content.appendChild(iframe);
	content.appendChild(button);

	int_placeCenter(int_width, int_height, content);

	document.body.appendChild(content);
	document.body.appendChild(overlay);
	
	show_interstitial(); //also does removal after int_delay sec
};

function remove_interstitial_overlay(doc)
{
	//remove content, fade out
	try
	{	
		var content, overlay, opacityTween_a, opacityTween_b, a, b;
		content = document.getElementById('interstitial_content');
		overlay = document.getElementById('interstitial_overlay');
		
		opacityTween_b = new OpacityTween(content,Tween.strongEaseOut,66,0,0.5);
		b = new Object();
		b.onMotionFinished = function()
		{		
			doc.body.removeChild(content);
		};
		opacityTween_b.addListener(b);
		opacityTween_b.start();

		opacityTween_a = new OpacityTween(overlay,Tween.strongEaseOut,66,0,0.5);
		a = new Object();
		a.onMotionFinished = function()
		{		
			doc.body.removeChild(overlay);
			dart_ads_visible(true);
		};
		opacityTween_a.addListener(a);
		opacityTween_a.start();
	}catch(e){};
}

function show_interstitial()
{
	var is_layer = document.getElementById('interstitial_content');
	var element_overlay = document.getElementById('interstitial_overlay');
	var overlayColor = document.body.getAttribute("bgcolor") ? document.body.getAttribute("bgcolor") : "#FFFFFF";
	if(int_color !== "")
	{
		overlayColor = int_color;
	}

	var determinePageHeight = function()
	{
		var test1 = document.body.scrollHeight;
		var test2 = document.body.offsetHeight;
		return (test1 > test2)? {x: document.body.scrollWidth, y: document.body.scrollHeight}: {x: document.body.offsetWidth, y: document.body.offsetHeight};
	};


	int_setStyle(element_overlay, "display:block;position:absolute;left:0;top:0;width:100%;height:" + determinePageHeight().y + "px;background-color:" + overlayColor + ";filter:alpha(opacity=0);-moz-opacity:0.0;-khtml-opacity:0.0;opacity:0.0;z-index:" + int_topz + ";");
	var opacityTween = new OpacityTween(element_overlay,Tween.strongEaseIn,0,66,0.5);

	var a = new Object();
	a.onMotionFinished = function()
	{
		is_layer.style.display = 'block';
		setTimeout('remove_interstitial_overlay(document)',int_delay*1000);
	};
	opacityTween.addListener(a);
	opacityTween.start();
};

function int_placeCenter(Xwidth,Yheight,object) 
{
	// First, determine how much the visitor has scrolled
	var scrolledX, scrolledY;
	if( self.pageYOffset ) 
	{
		scrolledX = self.pageXOffset;
		scrolledY = self.pageYOffset;
	} 
	else if( document.documentElement && document.documentElement.scrollTop ) 
	{
		scrolledX = document.documentElement.scrollLeft;
		scrolledY = document.documentElement.scrollTop;
	} 
	else if( document.body ) 
	{
		scrolledX = document.body.scrollLeft;
		scrolledY = document.body.scrollTop;
	}

	// Next, determine the coordinates of the center of browser's window

	var centerX, centerY;
	if( self.innerHeight ) 
	{
		centerX = self.innerWidth;
		centerY = self.innerHeight;
	} 
	else if( document.documentElement && document.documentElement.clientHeight ) 
	{
		centerX = document.documentElement.clientWidth;
		centerY = document.documentElement.clientHeight;
	} 
	else if( document.body ) 
	{
		centerX = document.body.clientWidth;
		centerY = document.body.clientHeight;
	}

	// Xwidth is the width of the object, Yheight is the height of the
	// object passed as arguments to the function:
	var leftOffset = scrolledX + (centerX - Xwidth) / 2;
	var topOffset = scrolledY + (centerY - Yheight) / 2;

	int_setStyle(object, "display:none;filter:alpha(opacity=100);-moz-opacity:1.0;-khtml-opacity:1.0;opacity:1.0;border:0px;position:absolute;padding:5px;left:" + leftOffset + "px;top:" + topOffset + "px;width:" + Xwidth + "px;height:" + Yheight + "px;z-index:" + (int_topz + 1) + ";");
}

function dart_ads_visible(b)
{
	var swfObjects = document.getElementsByTagName('embed');
   	for( var i = 0; i < swfObjects.length; i++ )
    	{
		swfObjects[i].style.visibility = (b ? "visible" : "hidden");
    	};
	swfObjects = document.getElementsByTagName('object');
   	for( var i = 0; i < swfObjects.length; i++ )
    	{
		swfObjects[i].style.visibility = (b ? "visible" : "hidden");
    	};
	var iframeObjects = document.getElementsByTagName('iframe');
   	for( var i = 0; i < iframeObjects.length; i++ )
    	{
		iframeObjects[i].style.visibility = (b ? "visible" : "hidden");
    	};
}

