/***************************************************************/
// Javascript Code fuer Abdeckerfunktionalitaet
// Author CVH, bookandsmile.de
// @ver: 0.3
// @author: CVH
// @date:   2008-08-27
/***************************************************************/

/**
 * Dokumentation zur Klasse: abdecker v0.3
				
				Kompatibilität (getestet):
				
				- IE 6 
				- Firefox (Win/Linux)
				- Konqueror (Linux) -- Transparenzwird vom Konqueror (KHTML) nicht unterstützt
				- Opera (Win/Linux) -- abdecker.disableOnClick=true wird nicht unterstützt
				
				Die Datei abdecker.js ist unobstrusive
				
				###############################################################################
				Aufruf durch : 
				###############################################################################
				<script language="JavaScript" type="text/javascript" src="../abdecker.js">
				var Abdecker = new abdecker();
				
				//Optionale einstellungen :
				
				Abdecker.coverHTMLElementById="table1";
				Abdecker.useImage('bf.png','eine unterschrift',200,100);
				Abdecker.contentImg.shadow=10;
				Abdecker.contentImg.shadowFadeOut=true;
				Abdecker.contentImg.bgColor='#ffffff';
				Abdecker.bgColor='#cb0';
				Abdecker.disableOnClickGlobal=true;
				Abdecker.bgOpacity=20;
				
				
				</script>
				
				###############################################################################
				Eigenschaften  				Default   Erklärung
				###############################################################################
				
				Abdecker.useZIndex		=	5000;	optional -- legt zu verwendenden zIndex fest
				Abdecker.width			=	0;	optional -- legt Breite fest; wenn nicht gesetzt, wird Breite des Windows ermittelt
				Abdecker.height			=	0;      s.o.
				Abdecker.top			=	0;      optional -- legt Top Position fest; zuweisung nur als Integer (ohne px)
				Abdecker.left			=	0;	s.o.
				Abdecker.padding		=   	0;	optional -- legt Padding fest -- nur sinnvoll in Verbindung mit .content oder .bgColor
				Abdecker.pageCenter 		=   	false;  optional -- legt fest ob die Einblendung zentriert über ganzes Window erfolgt oder nicht 
										(nur sinnvoll in Verbindung mit .width/.height)
				Abdecker.bgImage		=	false;  optional -- Hintergrundbild
				Abdecker.bgPosition 		=	false;  optional -- Hintergrundbild-Position (zb: '10px 10px'): wird dies in Verbindung mit 
										.bgImage (Hintergrundbild) verwendet, wird dieses nicht wiederholt sondern positioniert
									(siehe Test 7 )
				Abdecker.bgColor		= 	false;	optional -- Hintergrundfarbe
				Abdecker.bgOpacity 		=	100;	optional -- Opacity/Deckkraft (=100-Transparenz) nicht in Konqeror
				Abdecker.borderWidth		=	0;      optional -- Randdicke
				Abdecker.borderColor		=	'';	optional -- Randfarbe
				Abdecker.css			=	false;  optional -- Zusätzlich CSS-Eigenschaften (bitte keine die anders festgelegt werden)
				
				
				Abdecker.coverHTMLElementById=false;    optional -- Wenn nicht über gesamtem Dokument sondern nur ein Element abgedeckt werden soll.
										    Verlangt eine ID. top,width,height,left werden ermittelt also nicht setzen
										    siehe Tests 5-8
				Abdecker.content		= 	false;	optional -- Zusätzlicher Content (HTML/Text)
				
				Abdecker.disableOnClick		= 	false;  optional -- Klick auf Div beendet Einblendung wenn (bool)true; Nicht aber Klick irgendwo im Dokument
											    Achtung: Funktioniert nicht in Opera
				Abdecker.disableOnClickGlobal	= 	false;  optional -- Klick irgendwo im Dokument beendet Einblendung wenn (bool)true
				Abdecker.external		= 	false;  optional -- Wenn true: Nur ein externer Aufruf wird die Einblendung beenden. Kein Zeitlimit
				Abdecker.checkTimer		=	5;	optional -- Sekunden (nicht ms!) nachdem eine Überprüfung mit .check gemacht wird
											    nur sinnvoll in Vervindung mit check
				Abdecker.check			=	false;	optional -- Soll in regelmäßigen Abständen (checkTimer) etwas geprüft/bearbeitet werden, 
											    wird hier ein Funktionsobjekt verlangt. Beispiel siehe Test 7
				Abdecker.disableAfterSec	= 	false;  optional -- Automatisches Ausblenden nach (int) Sekunden, ist keine Option zum Beenden
											    gesetzt, wird hier 5 Sekunden automatisch gesetzt.
				
				Abdecker.ID			=	'jsCover_'+Math.random(); optional -- interne ID, die vergeben wird. Kann auch manuell gesetzt werden
				
				###############################################################################
				Methoden			Erklärung
				###############################################################################
				Abdecker.show()			Blendet die Abdeckung ein. Muss aufgerufen werden, nachdem die Seite fertig geladen wurde
								also per Event oder im HTML als script :(
				Abdecker.hide()			Blendet die Abdeckung aus.
				
				Abdecker.useImage(isrc,ilabel,iWidth,iHeight,padding,paddingColor,css)
								Diese Methode ermöglicht das Einblenden eines Bildes mit Label, css, und Transparenz
								Parameter:
								isrc   -- src-Attribut z.B "../bild.png"
								iLabel -- Label der unter dem Bild steht (HTML/text) oder ''
								iWidth -- (int) Width
								iHeight-- (int) Height
								padding-- optional -- padding-Stärke in int (ohne px)
								paddingColor -- optional HintergrundFarbe zB "#fff" 
								css	  -- optional -- zusätzliche css-Eigenschaften
				
				Ein Aufruf von useImage mit isrc=false ergibt eine TextMeldung 
				
				Nach dem Aufruf von useImage(..) können zusätzliche Parameter angegeben werden (Aber erst danach). 
				Dies ist möglich über das (ChildObjekt) contentImg:
				
				Abdecker.contentImg.image 		= false;
				Abdecker.contentImg.width 		= 0;
				Abdecker.contentImg.height		= 0;     //explizite Gesamthöhe
				Abdecker.contentImg.imageHeight= 0;      //explizite Höhe des Bildes
				Abdecker.contentImg.lblHeight 	= 0;     //explizite Höhe des Unterschriftenbereichs
				Abdecker.contentImg.lbl 		= false; //Text für Untertitel
				Abdecker.contentImg.lblcss		= '';    //zusätzliches css für Label/Untertitel
				Abdecker.contentImg.padding    = 15;	 //padding
				Abdecker.contentImg.css	    = false;     //zusätzliches css für gesamtes Div
				
				Abdecker.contentImg.bgColor	= '#ffffff'; //Hintergrundfarbe
				Abdecker.contentImg.tlBorderColor = "#cccccc";  //obere und linke Rahmenfarbe
				Abdecker.contentImg.rbBorderColor = "#666666";  //rechte und untere Rahmenfarbe
				Abdecker.contentImg.borderWidth   =2;			//Rahmenstärke
				Abdecker.contentImg.shadow		= 0;			//Stärke-Breite des Schattens (0=kein)
				Abdecker.contentImg.shadowFadeOut=false;		//Einfacher (false) oder FadeOutSchatten (true)
				
				
				Abdecker.useVideo (playerfile,videofile,w,h,bcolor,allowfullscreen) - bindet einen Flashplayer ein (erforder swfobject.js)


 * 
 */

function Messenger() {
	this.image 		= false;
	this.width 		= 0;
	this.height		= 0;
	this.imageHeight= 0;
	//this.lblHeight 	= 0;
	
	this.lbl 		= false;
	this.padding    = 15;	
	this.css	    = false;
	this.lblcss		= '';
	this.bgColor	= '#ffffff';
	this.tlBorderColor = "#cccccc";
	this.rbBorderColor = "#666666";
	this.borderWidth   =2;
	this.shadow		= 0;	
	this.shadowFadeOut=false;
	this.get = function() {
		this.ID='jsMessage_'+parseInt(100*Math.random());

	    var message=document.createElement("div");
	    message.id=this.ID;
	    if (false!=this.css)  	_setStyle(message,this.css);
	    message.style.backgroundColor	= this.bgColor;
	    message.style.width				= this.width+'px';
	    message.style.height			= (this.imageHeight+this.padding*2)+'px';
	    if (0<this.padding) 	message.style.padding			= this.padding + 'px';
	    if (0<this.borderWidth) message.style.borderLeft		= this.borderWidth+'px solid '+this.tlBorderColor;
	    if (0<this.borderWidth) message.style.borderTop			= this.borderWidth+'px solid '+this.tlBorderColor;	    
	    if (0<this.borderWidth) message.style.borderRight		= this.borderWidth+'px solid '+this.rbBorderColor;
     	if (0<this.borderWidth) message.style.borderBottom		= this.borderWidth+'px solid '+this.rbBorderColor;	    
	    message.style.position			= 'absolute';
	    message.style.marginLeft		= '-'+((this.width+(2*this.padding)+(this.borderWidth*2))/2)+'px';
   	    message.style.marginTop			= '-'+((this.imageHeight+(this.padding*3)+(this.borderWidth*2))/2)+'px';
		message.style.top				= '50%';
		message.style.left				= '50%';
	    if (this.image!=false) {
	 //   	message.innerHTML ='<div style="position:absolute;top:0;left:0;"><img src="'+this.image+'" width="'+this.width+'" height="'+this.imageHeight+'" /></div>';	    	
	    	message.innerHTML ='<img src="'+this.image+'" width="'+this.width+'" height="'+this.height+'" style="display:block;float:none;margin-bottom:'+(5+this.padding)+'px;" />';	    	
	    } else	{
	    	message.style.verticalAlign="middle";
	    	message.style.height= (this.imageHeight)+'px';
	    	message.style.paddingTop= (this.imageHeight/2)+'px';
	    	message.style.paddingBottom='0';
	    	
	    	message.style.textAlign="center";
	    }
		if (this.lbl!=false) {
//			message.innerHTML+=	(this.image!=false)	
//								?'<div style="position:absolute;top:'+(2*this.padding+this.height-this.lblHeight)+'px;left:0;width:'+this.width+'px">'+this.lbl+'</div>'
//								:'<div style="position:absolute;top:50%; margin-top:-'+(this.lblHeight/2)+'px;left:0;width:'+this.width+'px">'+this.lbl+'</div>';
			message.innerHTML+=	'<span style="margin-top:5px;clear:both;float:none;'+this.lblcss+'">'+this.lbl+'</span>';
						
		}
	
		return message;
	
	}
	
	
}


AbdeckerMeObj=false;
var AbdeckerID='';

function abdecker() {

this.useZIndex	=	500;	
this.width		=	0;
this.height		=	0;
this.top		=	0;
this.left		=	0;
this.padding	=   0;
this.pageCenter =   false;
this.bgImage	=	false;
this.bgColor	= 	false;
this.bgOpacity 	=	100;	
this.borderWidth=	0;
this.borderColor=	'';
this.bgPosition =	false;
this.css		=	false;
this.label 		= false;
this.closeLabel = "x";


this.coverHTMLElementById=false;
this.content	= 	false;
this.disableOnClick= 	false;
this.disableOnClickGlobal= 	false;
this.disableAfterSecs= 	false;
this.external	= 	false;
this.checkTimer	=	5;
this.check		=	false;
this.ID			=	'jsCover_'+Math.random();
this.closeOverVideo = false;
//Private
this.contentImg = 	false;

this.useImage=function(isrc,ilabel,iWidth,iHeight,padding,paddingColor,css) {
	
	if (typeof(css)=="undefined") {		
		css="";
	}
	if (typeof(padding)=="undefined") {
		padding=15;
	}
	if (typeof(paddingColor)=="undefined") {
		paddingColor="#ffffff";
	}
	var message = new Messenger();
	message.image=isrc;
	message.padding=padding;
	message.bgColor=paddingColor;
	
	message.lbl = ilabel;
	message.css=css;
	message.lblHeight=20;
	message.width=iWidth;
	message.imageHeight=iHeight;
	message.height=iHeight+30;
	this.contentImg=message;

}

this.changeVidFile = function (vidfile) {
	if (this.video && vidfile ) {
//	&& this.video._emobj) {
/*		newdatt=this.video._emobj.getAttribute("flashvars").replace(/&file=.*$/i,"&file="+vidfile);
		newdatt=newdatt.replace(/&file=.*&/i,"&file="+vidfile+"&");
		this.video._emobj.setAttribute("flashvars",newdatt);
*/		
		//this.so.addVariable("file",vidfile+ '&autostart=false');
		//this.so.variables.file.replace(/&file=.*&/i,"&file="+vidfile+"&");
		//this.so.getVariablePairs('flashvars').replace(/&file=.*&/i,"&file="+vidfile+"&");
		deconcept.SWFObjectUtil.cleanupSWFs();
		this.so.variables.file= vidfile;
		this.so.addVariable("autostart","false");		
	}
}

this.changeVidFileAutoPlay = function (vidfile) {
	if (this.video && vidfile ) {
		deconcept.SWFObjectUtil.cleanupSWFs();
		this.so.variables.file= vidfile;
		this.so.addVariable("autostart","true");		
	}
}


this.useVideo = function (playerfile,videofile,w,h,bcolor,allowfullscreen,bgImage,label,opacity,css){
	if (typeof(label)=="undefined") {
		label=false;
		
	} else {
		this.label=label;
	}
	if (typeof(bcolor)=="undefined") bcolor="#CC0000";
	if (typeof(w)=="undefined") w="250px";
	if (typeof(h)=="undefined") h="250px";
	
	if (typeof(allowfullscreen)=="undefined") allowfullscreen=true;

	
	var ver = "7";
	var so = new SWFObject(playerfile, "mpl", w, h ,ver , bcolor);
	so.addParam("quality", "high");
	so.addVariable("stretching","exactfit");
	//so.addParam("wmode", "transparent"); //wmode means no fullscreen
	so.addParam("allowfullscreen", (allowfullscreen)?"true":"false");
	
    //so.addVariable("overstretch", "fit");
	so.addVariable("showicons", "true");
	if (typeof(bgImage)!="undefined") {
		so.addVariable("image", bgImage);	
	}
	
        so.addVariable("overstretch", "fit");
	so.addVariable("showicons", "true");
	
	
	so.addParam("salign", "t");
	so.addParam("align", "t");
	so.addParam('allowscriptaccess','always');
	
	so.addVariable("file",videofile + '&autostart=false');
	so.addVariable("autostart","false");
	
	var vframe=document.createElement("div");
	vframe.setAttribute("id","vframe");
	_setStyle(vframe,"position:absolute;top:50%;left:50%;margin-top:-"+(parseInt(h/2)+35)+"px;margin-left:-"+(parseInt(w/2)+35)+"px;");
	if (typeof(css)!="undefined") _setStyle(vframe,css);
	if (typeof(opacity)!="undefined") {
		vframe.style.opacity=opacity/100;
		vframe.style.filter='alpha(opacity=' + opacity + ')';
	}
	
	//so.write(vframe);
	this.so = so;
	this.video=vframe;
//	this.video._emobj = vframe.firstChild;
	
	
}

this.show 	= 	function () {
	

	this.shadow=false;
	//Parent schon da?
	if (document.getElementById) {
		this.par=document.getElementById("jsCover_par");
		
	} else {
		this.par=document.all["jsCover_par"];
	}
	if (!this.par) {
			this.par=document.createElement("div");
			this.par.setAttribute("id","jsCover_par");
			this.par.style.width=0;
			this.par.style.height=0;
			document.body.appendChild(this.par);					
	}	
	this.par.innerHTML="";
	this.cover 	= document.createElement("div");
	

	if (this.height<=0 && this.coverHTMLElementById==false) {
		// Wenn alles abgedeckt twird, Scrollen deaktivieren
		if(document.body) document.body.style.overflow="hidden";
		if (document.all) {
			document.getElementsByTagName("html")[0].style.overflow="hidden";
		}
	}
	// Window-Groesse ermitteln, falls groesse nicht definiert
	this.height= (this.height<=0) ?getWindowHeight():this.height;
	this.width = (this.width <=0) ?getWindowWidth() :this.width;
	// Soll ein HTML-Element ueberdeckt werden?
	if (this.coverHTMLElementById!=false) {
		var geo=getGeometryById(this.coverHTMLElementById);
		if (! geo) {
			//Element Existiert nicht oder Geometrie konnte nicht ermittelt werden
			this.coverHTMLElementById=false;
		} else {
			this.left	= geo[0];
			this.top	= geo[1];
			this.width	= geo[2];
			this.height = geo[3];
	
			geo=null;
		}
	} 

	
	//Abdeck Div
	this.cover.setAttribute("id",this.ID);
	if (this.css) {
		_setStyle(this.cover,this.css);
	}	
	if (this.bgImage) {
		this.cover.style.backgroundImage= 'url('+this.bgImage+')';
		if (this.bgPosition) { 
			this.cover.style.backgroundRepeat   = 'no-repeat';
			this.cover.style.backgroundPosition = this.bgPosition;
		} else {
			this.cover.style.backgroundRepeat   = 'repeat';
		}
	}

	
	if (this.borderWidth>0) {
	    
		this.width  -= 2*this.borderWidth;
		this.height -= 2*this.borderWidth;	
		this.cover.style.borderWidth=this.borderWidth +'px';		
		this.cover.style.borderStyle='solid';
		this.cover.style.borderColor=this.borderColor;
					
			
	}
	
	this.cover.style.position = 'absolute';
	this.cover.style.top	  = this.top+'px';
	this.cover.style.left	  = this.left+'px';
	this.cover.style.width	  = this.width+'px';
	this.cover.style.height	  = this.height+'px';
	this.cover.style.zIndex	  = this.useZIndex;
	this.cover.style.margin	  = 0;
	this.cover.style.padding  = (this.padding>0)?this.padding+"px":0;
	// Soll auf Body zentriert werden?
	if (this.pageCenter) {
		this.cover.style.marginLeft	='-'+(this.width/2)+'px';
		this.cover.style.marginTop	='-'+(this.height/2)+'px';
		this.cover.style.top		='50%';
		this.cover.style.left		='50%';
	}



	if (this.video) {
		this.so.write(this.video);

		this.video.style.zIndex=parseInt(this.cover.style.zIndex)+100;
		this.par.appendChild(this.video);
	}
	else {
		this.cover.innerHTML += (this.content != false) ? this.content : '';
	}
	

	// Additional Text 
	this.cover.innerHTML="";

	if (this.video && this.label!=false) {


		if (this.video._label && this.video._label.parentNode ) {
			
				//alert("Im IE 7 geht die folgende Meldung schief"+this.video._label.className+this.video._label.tagName);
				//this.video.removeChild(this.video._label);
				this.video._label.parentNode.removeChild(this.video._label);
							
				
				
		}	
				
		var vidLabel=document.createElement("div");
		vidLabel.setAttribute("id","jsCover_vidLabel2");
		
		vidLabel.setAttribute("class","ADText");
		vidLabel.className="ADText";
		vidLabel.innerHTML=this.label;
		this.video.appendChild(vidLabel); 
		this.video._label = vidLabel;
	
		
	}


		
	
	//Close Button
	if (this.cover && this.closeButton) {
	
		if (this.closeOverVideo && this.video) {
			closeParent=this.video;
		} else {
			closeParent=this.cover;
		}
		/*if (closeParent._closeB && closeParent._closeB.parentNode) {
			closeParent.removeChild(closeParent._closeB);
		}*/
		
		var closeB = document.createElement("div");
		closeB.setAttribute("class", "ADClose");
		closeB.className="ADClose";
		closeB.appendChild(document.createElement("a"));
		var self = this;
		closeB.firstChild.onclick = function(){
		
			self.hide()
		};
		closeB.firstChild.innerHTML = this.closeLabel;
		closeB.firstChild.href = "#";
		closeParent.appendChild(closeB);
		closeParent._closeB = closeB;		
	}




	//console.debug(this.video);
	//console.debug(this.video.innerHTML);
	
	if (this.check==false && !this.disableAfterSecs && !this.disableOnClick && !this.disableOnClickGlobal && !this.external) {
		//Irgendwas muss ja sein		
		this.disableAfterSecs=5;
	}
	if (this.check!=false) {
		
		window.setTimeout(this.check,this.checkTimer*1000);		
	}
	if (this.disableAfterSecs>0) {
		setTimeout('hideAbdecker("'+this.ID+'");',this.disableAfterSecs*1000);
	} 
	if (this.disableOnClick) {
		if (document.addEventListener) {
		  this.cover.addEventListener("click", hideAbdecker, true);		
		} else {
			// this.cover.setAttribute("onClick",'hideAbdecker("'+this.ID+'");');		
			this.cover.onclick=hideAbdecker;
		}	
	}
	if (this.disableOnClickGlobal) {
		if (document.addEventListener) {
		  document.addEventListener("click", hideAbdecker, true);		
		} else {
			
			document.onclick=hideAbdecker;
		}	
	}	
	if (this.bgOpacity<=100 ) {
		this.cover.style.opacity = this.bgOpacity/100;
		this.cover.style.filter = 'alpha(opacity=' + this.bgOpacity + ')';
	}
	if (this.bgColor) {
		this.cover.style.backgroundColor=this.bgColor;	
	}
	this.par.appendChild(this.cover);
	if (this.contentImg!=false) {
		this.mess = this.contentImg.get();
		this.mess.style.zIndex=(parseint(this.useZIndex)+10);
		
		if (this.coverHTMLElementById!=false) {
		// Mittig in ueberdecktem ID abbilden
			this.mess.style.left 	= (this.left+(this.width/2))+"px";
			this.mess.style.top 	= (this.top +(this.height/2))+"px";
			
			//alert;
			this.mess.style.marginLeft	= "-"+(parseInt(this.mess.style.width )/2) +"px";
			this.mess.style.marginTop	= "-"+(parseInt(this.mess.style.height)/2)+"px";
		
		}
		
		if (this.disableOnClick) {
			if (document.addEventListener) {
			  this.mess.addEventListener("click", hideAbdecker, true);		
			} else {
				this.mess.onclick=hideAbdecker;
			}	
		}
		this.par.appendChild(this.mess);
		//this.contentImg.style.zIndex=(this.useZIndex+10);
		//document.getElementById('jsCover_par').appendChild(this.contentImg);
		
	}
	// Schlagschatten?
	
	var shadowbase;
	if (this.video && this.video.shadow) {
	shadowbase=this.video;
	shadowbase.ID=this.video.id;
	} else {
	shadowbase=this.contentImg;
	}
	
	if (shadowbase.shadow ) {
	
		geo=getGeometryById(shadowbase.ID);
		
		if (geo) {
			if (shadowbase.shadowFadeOut==true) {
				var opacity = 70/shadowbase.shadow;
				
				var offset  = 0; var startOffset=5;
				var shades=shadowbase.shadow/2;
			} else {
				var opacity = 50;
				var offset  = 0;
			
				var shades=1;
				var startOffset=0;
			}
			this.shadow= new Array(shadowbase.shadow);
			var shade;
			for (var i=0; i<shades;i++) {
						offset++;
						shade=document.createElement("div");
						shade.style.zIndex		=(this.useZIndex+1);
					//	shade.style.zIndex		=parseInt(this.par.style.zIndex)-100;
					//	_setStyle(shade,"z-index="+(parseInt(this.par.style.zIndex)-100)+";");
						shade.style.position	="absolute";
						shade.innerHTML		="&nbsp;";
						shade.style.left		=(geo[0]+startOffset+shadowbase.shadow/2)+'px';
						shade.style.top			=(geo[1]+startOffset+shadowbase.shadow/2)+'px';
					//	shade.style.left		=parseInt(0+startOffset+shadowbase.shadow/2)+'px';
					//	shade.style.top			=parseInt(0+startOffset+shadowbase.shadow/2)+'px';
						shade.style.width		=parseInt(geo[2]+offset)+'px';
						shade.style.height		=parseInt(geo[3]+offset)+'px';
						shade.style.backgroundColor="#000000";
						shade.style.opacity = (opacity/100);
						shade.style.filter = 'alpha(opacity='+opacity+')';
						this.par.appendChild(shade);
						//shadowbase.appendChild(shade)

						this.shadow[i]=shade;
			}	
			
					
		}
	
	
	}


	
	AbdeckerID=this.ID;
}

this.reCheck = function () {
	if (this.cover) {
		window.setTimeout(this.check,this.checkTimer*1000);
	}
}
this.updateContent=function(content) {
	if (this.cover) {
		this.cover.innerHTML=content;
	}
}


this.hide 	= 	function() {
	if (this.cover)	this.cover.parentNode.innerHTML="";//removeChild(this.cover);
	this.cover=false;
	document.body.style.overflow="auto";
	if (document.all) {
			document.getElementsByTagName("html")[0].style.overflow="auto";
	}
//	this.contentImg=false;
}
AbdeckerMeObj=this;
}

hideAbdecker =function () {
	AbdeckerMeObj.hide();
}

/**
* getWindowHeight -- liefert die Hoehe des aktuellen window.Objects
* IE/NN/FF/K safe
*/
function getWindowHeight() {
	return ( typeof(window.innerHeight)=="undefined") ?document.body.offsetHeight:window.innerHeight;
 }
/**
* getWindowWidth -- liefert die Breite des aktuellen window.Objects
* IE/NN/FF/K safe
*/ 
function getWindowWidth() {
 return ( typeof(window.innerWidth)=="undefined")  ?document.body.offsetWidth:window.innerWidth;
 
}




/**
* getGeometryById -- liefert Array mit Information zur Geometrie eines Tags/Objekts
* @param objId - ID des Objektes
* @return Array(
*               0=>Left / X -Wert
*               1=>Top  / Y -Wert
*               2=>Width
*               3=>Height
*               )
*         oder false;
*/

function getGeometryById(objId) {
	if (document.getElementById) {
		var obj=document.getElementById(objId);
	} else {
		var obj=document.all[objId];
	}
	if (!obj) {
			return false;			
	}
	return new Array(calcPosX(obj),calcPosY(obj),getWidth(obj),getHeight(obj));	 
}




/**
* calcPosX -- errechnet den absoluten x (left) Wert eines Objektes/Tags
*/
function calcPosX(obj)
  {
    var curleft = 0;
    if(obj.offsetParent)
        while(1) 
        {
          curleft += obj.offsetLeft;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.x)
        curleft += obj.x;
    return curleft;
}
/**
* calcPosX -- errechnet den absoluten x (left) Wert eines Objektes/Tags
*/
  function calcPosY(obj)
  {
    var curtop = 0;
    if(obj.offsetParent)
        while(1)
        {
          curtop += obj.offsetTop;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.y)
        curtop += obj.y;
    return curtop;
  }
  
function getWidth(obj) {
	return (obj.offsetWidth)?obj.offsetWidth:10;
}
function getHeight(obj) {
	return ( obj.offsetHeight) ?obj.offsetHeight:10;
}


// setAttribute ist vom IE nicht komplett unterstuetzt. Probleme insbesondere bei setAttribute('style'...
// Daher dieser Workaround
 function rzCC(s){
   for(var exp=/-([a-z])/; 
       exp.test(s); 
       s=s.replace(exp,RegExp.$1.toUpperCase()));
   return s;
 }

 function _setStyle(element, declaration) {
   if (declaration.charAt(declaration.length-1)==';')
     declaration = declaration.slice(0, -1);
   var k, v;
   var splitted = declaration.split(';');
   for (var i=0, len=splitted.length; i<len; i++) {
      k = rzCC(splitted[i].split(':')[0]);
      v = splitted[i].split(':')[1];
      eval("element.style."+k+"='"+v+"'");

   }
 }
 
 

