var enableCache = true;
var jsCache = new Array();

var dynamicContent_ajaxObjects = new Array();

/* Simple AJAX Code-Kit (SACK) v1.6.1 */
/* ©2005 Gregory Wild-Smith */
/* www.twilightuniverse.com */
/* Software licenced under a modified X11 licence,
   see documentation or authors website for more details */

function sack(file) {
	this.xmlhttp = null;

	this.resetData = function() {
		this.method = "POST";
  		this.queryStringSeparator = "?";
		this.argumentSeparator = "&";
		this.URLString = "";
		this.encodeURIString = true;
  		this.execute = false;
  		this.element = null;
		this.elementObj = null;
		this.requestFile = file;
		this.vars = new Object();
		this.responseStatus = new Array(2);
  	};

	this.resetFunctions = function() {
  		this.onLoading = function() { };
  		this.onLoaded = function() { };
  		this.onInteractive = function() { };
  		this.onCompletion = function() { };
  		this.onError = function() { };
		this.onFail = function() { };
	};

	this.reset = function() {
		this.resetFunctions();
		this.resetData();
	};

	this.createAJAX = function() {
		try {
			this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e1) {
			try {
				this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e2) {
				this.xmlhttp = null;
			}
		}

		if (! this.xmlhttp) {
			if (typeof XMLHttpRequest != "undefined") {
				this.xmlhttp = new XMLHttpRequest();
			} else {
				this.failed = true;
			}
		}
	};

	this.setVar = function(name, value){
		this.vars[name] = Array(value, false);
	};

	this.encVar = function(name, value, returnvars) {
		if (true == returnvars) {
			return Array(encodeURIComponent(name), encodeURIComponent(value));
		} else {
			this.vars[encodeURIComponent(name)] = Array(encodeURIComponent(value), true);
		}
	}

	this.processURLString = function(string, encode) {
		encoded = encodeURIComponent(this.argumentSeparator);
		regexp = new RegExp(this.argumentSeparator + "|" + encoded);
		varArray = string.split(regexp);
		for (i = 0; i < varArray.length; i++){
			urlVars = varArray[i].split("=");
			if (true == encode){
				this.encVar(urlVars[0], urlVars[1]);
			} else {
				this.setVar(urlVars[0], urlVars[1]);
			}
		}
	}

	this.createURLString = function(urlstring) {
		if (this.encodeURIString && this.URLString.length) {
			this.processURLString(this.URLString, true);
		}

		if (urlstring) {
			if (this.URLString.length) {
				this.URLString += this.argumentSeparator + urlstring;
			} else {
				this.URLString = urlstring;
			}
		}

		// prevents caching of URLString
		this.setVar("rndval", new Date().getTime());

		urlstringtemp = new Array();
		for (key in this.vars) {
			if (false == this.vars[key][1] && true == this.encodeURIString) {
				encoded = this.encVar(key, this.vars[key][0], true);
				delete this.vars[key];
				this.vars[encoded[0]] = Array(encoded[1], true);
				key = encoded[0];
			}

			urlstringtemp[urlstringtemp.length] = key + "=" + this.vars[key][0];
		}
		if (urlstring){
			this.URLString += this.argumentSeparator + urlstringtemp.join(this.argumentSeparator);
		} else {
			this.URLString += urlstringtemp.join(this.argumentSeparator);
		}
	}

	this.runResponse = function() {
		eval(this.response);
	}

	this.runAJAX = function(urlstring) {
		if (this.failed) {
			this.onFail();
		} else {
			this.createURLString(urlstring);
			if (this.element) {
				this.elementObj = document.getElementById(this.element);
			}
			if (this.xmlhttp) {
				var self = this;
				if (this.method == "GET") {
						
					totalurlstring = this.requestFile + this.queryStringSeparator + this.URLString;
					this.xmlhttp.open(this.method, totalurlstring, true);
				} else {
					this.xmlhttp.open(this.method, this.requestFile, true);
					try {
						this.xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
					} catch (e) { }
				}

				this.xmlhttp.onreadystatechange = function() {
					switch (self.xmlhttp.readyState) {
						case 1:
							self.onLoading();
							break;
						case 2:
							self.onLoaded();
							break;
						case 3:
							self.onInteractive();
							break;
						case 4:			
							self.response = self.xmlhttp.responseText;
							self.responseXML = self.xmlhttp.responseXML;
							self.responseStatus[0] = self.xmlhttp.status;
							self.responseStatus[1] = self.xmlhttp.statusText;

							if (self.execute) {
								self.runResponse();
							}

							if (self.elementObj) {
								elemNodeName = self.elementObj.nodeName;
								elemNodeName.toLowerCase();
								if (elemNodeName == "input"
								|| elemNodeName == "select"
								|| elemNodeName == "option"
								|| elemNodeName == "textarea") {
									self.elementObj.value = self.response;
								} else {
									self.elementObj.innerHTML = self.response;
								}
							}
							if (self.responseStatus[0] == "200") {
								self.onCompletion();
							} else {
								self.onError();
							}

							self.URLString = "";
							break;
					}
				};

				this.xmlhttp.send(this.URLString);
			}
		}
	};

	this.reset();
	this.createAJAX();
}


//
// getPageScroll()
// Returns array with x,y page scroll values.
// Core code from - quirksmode.org
//
function getPageScroll(){

	var yScroll;

	if (self.pageYOffset) {
		yScroll = self.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;
	}

	arrayPageScroll = new Array('',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;
	}
	
	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;
}

function detectMacXFF2() {
  var userAgent = navigator.userAgent.toLowerCase();
  if (/firefox[\/\s](\d+\.\d+)/.test(userAgent)) {
    var ffversion = new Number(RegExp.$1);
    if (ffversion < 3 && userAgent.indexOf('mac') != -1) {
      return true;
    } else {
        return false;
    }
  } else {
      return false;
  }
}

function anzeigenFlashelemente(aissichtbar ) {
	//Durchlaufe alle Einträge vom div-Typ	
	var tdivname = 'paFlashCont_';
	var tlaenge = (tdivname).length;	
	for(var i=0;i<document.getElementsByTagName('div').length; i++){
	    var objElem = document.getElementsByTagName('div')[i];
		controlname = objElem.id;
		if (controlname.substr( 0,tlaenge)==tdivname) {
		    if (aissichtbar) {
		        objElem.style.display='inline';
		    } else {
				objElem.style.display='none';
		    }
		}			
	}		
}

function initialisiereOverlay(){
	var objBody = document.getElementsByTagName('body').item(0);
	
	var objOverlay = document.createElement('div');
	objOverlay.setAttribute('id','paOverlayBody');
	//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 = '9000';
 	objOverlay.style.width = '100%';
 	var isMACFF = detectMacXFF2(); 
 	if (isMACFF) {
 	    objOverlay.className = 'wzkp_overlaymacff';
 	} else {
 	    objOverlay.className = 'wzkp_overlay';
 	}
	objBody.insertBefore(objOverlay, objBody.firstChild);
	
	var objOverlayContainer = document.createElement("div");
	objOverlayContainer.setAttribute('id','paOverlayCont');
	//objOverlay.onclick = function () {hideLightbox(); return false;}
	objOverlayContainer.style.display = 'none';
	objOverlayContainer.style.position = 'absolute';
	objOverlayContainer.style.top = '0';
	objOverlayContainer.style.left = '0';
	objOverlayContainer.style.zIndex = '9001';
 	objOverlayContainer.className = 'wzkp_overlaycont';
	objBody.insertBefore(objOverlayContainer, objOverlay.nextSibling);	
}

function aktiviereOverlay(aContainerID, aPosX, aPosY, aBreite, aHoehe, aClassName) {
	var objOverlay = document.getElementById('paOverlayBody');
	var arrayPageSize = getPageSize();
	var arrayPageScroll = getPageScroll();

    objOverlay.style.top = (arrayPageScroll[1] + 'px');
	objOverlay.style.height = (arrayPageSize[1] + 'px');
	objOverlay.style.display = 'block';
	
	if (aContainerID ) {
		positioniereOverlayInhalt( aContainerID, aPosX, aPosY, aBreite, aHoehe, aClassName);
	} 
}

function deaktiviereOverlay(  ) {
    anzeigenFlashelemente(true);

	var objOverlay = document.getElementById('paOverlayBody');
	objOverlay.style.display = 'none';
	
	if (paOverlayContainerInhalt ) {	
		paOverlayContainerInhalt.style.display = 'none';
	}	
}

//Alias für deaktiviereOverlay wegen Flashfilmen
function ausblendenOverlay() {
	deaktiviereOverlay();
}

function positioniereOverlayInhalt( aContainerID, aPosX, aPosY, aBreite, aHoehe, aClassName ) {
	var paContainer = document.getElementById(aContainerID);
	if (paContainer) {
		paOverlayContainerInhalt = paContainer;
	    paContainer.style.position = 'absolute';
	    if (aPosX == -1 ) {
    		var arrayPageSize = getPageSize();
	    	var arrayPageScroll = getPageScroll();
		
    		var playerTop = arrayPageScroll[1] + ((arrayPageSize[3] - aHoehe) / 2 -30 );
	    	var playerLeft = ((arrayPageSize[0] - 20 - aBreite) / 2);
    		paContainer.style.top = (playerTop < 0) ? "0px" : playerTop + "px";
	    	paContainer.style.left = (playerLeft < 0) ? "0px" : playerLeft + "px";
	    } else {	    
	        paContainer.style.top = aPosY + "px";
	        paContainer.style.left = aPosX + "px";
	        paContainer.style.width = aBreite+ "px";
	        paContainer.style.height = aHoehe+ "px";
	    }
		
		if (aClassName) {
			paContainer.className = aClassName; 
		}
		
		anzeigenElement(aContainerID);
	}
}

function ajax_aktiviereOverlay(aContainerID,ajaxIndex, aURL, aPosX, aPosY, aBreite, aHoehe, aClassName)
{
	anzeigenFlashelemente(false);
	
	var targetObj = document.getElementById(aContainerID);
	targetObj.innerHTML = dynamicContent_ajaxObjects[ajaxIndex].response;
	//if(enableCache){
	//	jsCache[url] = 	dynamicContent_ajaxObjects[ajaxIndex].response;
	//}
	dynamicContent_ajaxObjects[ajaxIndex] = false;	
	ajax_parseJs(targetObj)	
	positioniereOverlayInhalt( aContainerID, aPosX, aPosY, aBreite, aHoehe, aClassName);
}

function ajax_ladeOverlay(aContainerID, aURL, aPosX, aPosY, aBreite, aHoehe, aClassName)
{
	//if(enableCache && jsCache[url]){
		//document.getElementById(aContainerID).innerHTML = jsCache[url];
		//return;
	//}
	
	if (document.getElementById(aContainerID)) {
	    aktiviereOverlay();
    	
	    var ajaxIndex = dynamicContent_ajaxObjects.length;
	    document.getElementById(aContainerID).innerHTML = '<div style="padding:10px;"><img src="/radcontrols/ajax/skins/default/loading2.gif" alt=" "/></div>';
	    dynamicContent_ajaxObjects[ajaxIndex] = new sack();
	    dynamicContent_ajaxObjects[ajaxIndex].method = 'get';
	    dynamicContent_ajaxObjects[ajaxIndex].requestFile = aURL;	// Specifying which file to get
	    dynamicContent_ajaxObjects[ajaxIndex].onCompletion = function(){ ajax_aktiviereOverlay(aContainerID,ajaxIndex,aURL, aPosX, aPosY, aBreite, aHoehe, aClassName); };	// Specify function that will be executed after file has been found
	    dynamicContent_ajaxObjects[ajaxIndex].runAJAX();		// Execute AJAX function	
	}
}   

function ajax_ladeOverlayVideo(aID_FLV)
{
    ajax_ladeOverlay( idOverlayCont, '/d'+aID_FLV+'/ajax_video_overlay.html',-1,-1,550,450 );
}

function ajax_ladeOverlayVideoGroesse(aID_FLV, aBreite, aHoehe)
{
    ajax_ladeOverlay( idOverlayCont, '/d'+aID_FLV+'/ajax_video_overlay.html',-1,-1,aBreite, aHoehe );
}

function ajax_showContent(divId,ajaxIndex,url)
{
	var targetObj = document.getElementById(divId);
	targetObj.innerHTML = dynamicContent_ajaxObjects[ajaxIndex].response;
	if(enableCache){
		jsCache[url] = 	dynamicContent_ajaxObjects[ajaxIndex].response;
	}
	dynamicContent_ajaxObjects[ajaxIndex] = false;
	
	ajax_parseJs(targetObj)
}

function ajax_loadContent(divId,url)
{
	if(enableCache && jsCache[url]){
		document.getElementById(divId).innerHTML = jsCache[url];
		return;
	}
	
	var ajaxIndex = dynamicContent_ajaxObjects.length;
	document.getElementById(divId).innerHTML = '<div style="background-color:white;border:1px solid #CCCCCC;padding:10px;">Inhalt wird geladen - Bitte warten!</div>';
	dynamicContent_ajaxObjects[ajaxIndex] = new sack();
	dynamicContent_ajaxObjects[ajaxIndex].method = 'get';
	dynamicContent_ajaxObjects[ajaxIndex].requestFile = url;	// Specifying which file to get
	dynamicContent_ajaxObjects[ajaxIndex].onCompletion = function(){ ajax_showContent(divId,ajaxIndex,url); };	// Specify function that will be executed after file has been found
	dynamicContent_ajaxObjects[ajaxIndex].runAJAX();		// Execute AJAX function	
}

function ajax_parseJs(inputObj)
{	
	var jsTags = inputObj.getElementsByTagName('SCRIPT');
	for(var no=0;no<jsTags.length;no++){
		eval(jsTags[no].innerHTML);
	}	
}

var paOverlayContainerInhalt;  //Das aktuelle Objekt, das im Overlay angezeigt wird
var idOverlayCont = 'paOverlayCont';

//Bei OnLoad hinzufügen

hinzufuegenLoadEvent(initialisiereOverlay);