/************************************************************************/
/*                 zBox - Dynamic Layer                                 */
/*                                                                      */
/*                 Version: 0.1                                         */
/*                 Authors: Timon Rapp <rapp@equinoxe.de>               */
/*                 Changed: 2007/10/08 15:08                            */
/*                                                                      */
/*                 Required: zDOMReady.js                               */
/*                                                                      */
/************************************************************************/

/* 
################# zBox Functions #########################################
*/

var opacity= 0;
var op_max = 80;
var op_min = 0;
var counter_step = 30;
var counter=0;
var zBox_box;
var zBox_overlay;
var zBox_box_inhalt;

//Shell the init-function when DOM ready
zDOMReady_addEvent(zBox_init);
//zDOMReady_addEvent(replace_links);

// Initialize the Layer
function zBox_init()
{	
	//Preload used images
	/*var bilder = new Array('overlay.png','blank.gif');
	document.Vorladen = new Array();
	if(document.images)
	{
		for(var i = 0; i < bilder.length; i++)
		{
			document.Vorladen[i] = new Image();
			document.Vorladen[i].src = bilder[i];
		}
	}*/
	
	//Get Body
	var tmpBody = document.getElementsByTagName("body").item(0);
	
	//Create layercontainer
	
	//Remove comments when data comes from database
	var container = document.createElement("div");
	container.setAttribute('id','zBox_box');
			
	zBox_box_inhalt = document.createElement("div");
	zBox_box_inhalt.setAttribute('id','zBox_box_inhalt');
	zBox_box_inhalt.innerHTML = "<br/>";
	
	var closer = document.createElement("a");
	closer.setAttribute('id','zBox_close_small');
	closer.setAttribute('id','zBox_close_small');	
	closer.onclick = function () { zBox_hide(); return false; };
	closer.innerHTML = 'X';
	
	//Create overlay-background
	var overlay = document.createElement("div");
	overlay.setAttribute('id','zBox_overlay');
	overlay.onclick = function () { zBox_hide(); return false; };
	//Add overlay and layer
	//Remove comment when data comes from database			
	container.appendChild(zBox_box_inhalt);
	container.insertBefore(closer, zBox_box_inhalt);
		
	tmpBody.insertBefore(container, tmpBody.firstChild);
	tmpBody.insertBefore(overlay, tmpBody.firstChild);	
	
	zBox_box = document.getElementById("zBox_box");
	zBox_overlay = document.getElementById("zBox_overlay");	
}

function decrease_opacity()
{
	opacity-=counter;
	if(opacity<op_min)
	opacity = op_min;
	//counter=counter*2;
	if(navigator.appName == "Microsoft Internet Explorer")
		zBox_overlay.style.filter = "alpha(opacity="+opacity+")";
	else
		zBox_overlay.style.opacity = "0."+opacity;
	if(opacity>op_min)
	window.setTimeout("decrease_opacity()",10);	
	else
	{
		
		//Hide overlay
		zBox_overlay.style.display = "none";
		
		//Show select-boxes (IE only)
		if(navigator.appName == "Microsoft Internet Explorer")
		{
			zBox_selects = document.getElementsByTagName("select");
			for(var i = 0; i<zBox_selects.length; i++)
				zBox_selects[i].style.visibility = "visible";
		}
		
		counter = counter_step;
	}
}

function increase_opacity()
{
	opacity+=counter;
	if(opacity>op_max)
	opacity = op_max;
	
	//counter=counter*2;
	if(navigator.appName == "Microsoft Internet Explorer")
		zBox_overlay.style.filter = "alpha(opacity="+opacity+")";
	else
	zBox_overlay.style.opacity = "0."+opacity;
	if(opacity<op_max)
	{
		window.setTimeout("increase_opacity()",10);		
	}
	else
	{
		counter = counter_step;
		//document.getElementById("zBox_box").style.display = "block";
	}
	
	
	
	
}

//Show the box
function zBox_show(cmd,param)
{
	zBox_box_inhalt.innerHTML = '<h1>Bitte warten</h1><br/>';

	ajaxMakeRequest(cmd,"zBox_box_inhalt","zBox_box",param);

	if(zBox_box.style.display != "block")
	{
		opacity = op_min;
		counter = counter_step;
		increase_opacity();
	
		//Hide select-boxes (IE only)
		if(navigator.appName == "Microsoft Internet Explorer")
		{
			zBox_selects = document.getElementsByTagName("select");
			for(var i = 0; i<zBox_selects.length; i++)
				zBox_selects[i].style.visibility = "hidden";
		}
		//Get variables

		var size = zBox_getPageSize();
		var sc = zBox_getPageScroll();
		//Set the top of the layer
		zBox_box.style.top = (sc[1]+50)+"px";
		//Manually set the overlay-height
		zBox_overlay.style.height = 	size[1]+"px";
		//Make the overlay visible
		zBox_overlay.style.display = "block";
		//Make the layer visible
		
		
		zBox_box.style.display = "block";
	}
	
	//Set size once again after showing the container
	var size = zBox_getPageSize();
	zBox_overlay.style.height = 	size[1]+"px";
	
	
	
}

//Hide the box
function zBox_hide()
{
	
	//Hide box
	zBox_box.style.display = "none";
	zBox_box_inhalt.innerHTML = '<br/>';
		
	
	opacity = op_max;
	decrease_opacity();
}

function replace_links()
{
	var links = document.getElementsByTagName("a");
	for(var i=0; i<links.length; i++)
	{
		if(links[i].rel == "zBox")
		{
			//links[i].setAttribute("onclick","alert('"+links[i].href+"');return false;");
			links[i].onclick = function() { zBox_show(this.href+"&back=0");  return false;};
			//links[i].href = "#";
		}
	   
	}
}


/* 
################# Third Party Functions ######################################
*/


//
// getPageScroll()
// Returns array with x,y page scroll values.
// Core code from - quirksmode.org
//
function zBox_getPageScroll()
{
	var yScroll;
	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop){
		yScroll = document.documentElement.scrollTop;
	} else if (document.body) {
		yScroll = document.body.scrollTop;
	}
	arrayPageScroll = new Array('',yScroll) 
	return arrayPageScroll;
}


//
// getPageSize()
// Returns array with page width, height and window width, height
// Core code from - quirksmode.org
// Changed for IE by Timon Rapp
//
function zBox_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) {
        xScroll = document.body.scrollWidth;
        yScroll = document.body.scrollHeight;
    } else {
        xScroll = document.body.offsetWidth;
        yScroll = document.body.offsetHeight;
    }
    var windowWidth, windowHeight;
    if (self.innerHeight) {
        windowWidth = self.innerWidth;
        windowHeight = self.innerHeight;
    } else if (document.documentElement && document.documentElement.scrollHeight) {
        windowWidth = document.documentElement.scrollWidth;
        windowHeight = document.documentElement.scrollHeight;
    } else if (document.body) {
        windowWidth = document.body.clientWidth;
        windowHeight = document.body.clientHeight;
    }
    if (yScroll < windowHeight) {
        pageHeight = windowHeight;
    } else {
        pageHeight = yScroll;
    }
    if (xScroll < windowWidth) {
        pageWidth = windowWidth;
    } else {
        pageWidth = xScroll;
    }
    arrayPageSize = new Array(pageWidth, pageHeight, windowWidth, windowHeight, xScroll, yScroll);
    return arrayPageSize;
}


