//
//	entire code written by Jan Jost
//	e-mail:		jan@freakworks.de
//	homepage:	www.freakworks.de
// 
//
//	©2001 by freakworks
//
window.onerror=ErrorFunction;
window.onError=ErrorFunction;

function ErrorFunction(msg, url, line)
{
  return true;
}

function getBrowser()
{
	var a = navigator.userAgent; 
	browser="ns";
	if(a.lastIndexOf("MSIE") > -1 ) 									{browser="ie6";}	
	if(a.lastIndexOf("MSIE 5") > -1 ) 									{browser="ie";}	
	if(a.lastIndexOf("Opera") > -1)  									{browser="op";}
	if(a.lastIndexOf("Gecko") > -1 ) 									{browser="ge";}
	return(browser);
}
//	-	Globale Variablen fuer browser und Windowgroesse	-	START
var b = getBrowser();
var winVars=true;
//	-	Globale Variablen fuer browser und Windowgroesse	-	END
//	-	initWindowVars liefert fuer alle Browser eine korrekte ANgabe der aktuellen FensterGroesse	-	START
function initWindowVars()
{	
	frameWidth =window.innerWidth?window.innerWidth:document.all.myBody.offsetWidth;
	frameHeight=window.innerHeight?window.innerHeight:document.all.myBody.offsetHeight;
	if(b=="ie6"){
		frameHeight=document.documentElement.clientHeight;
		frameWidth=document.documentElement.clientWidth;
	}
	if(b=="ns"){frameHeight=frameHeight+4;frameWidth=frameWidth+4;}
}
//	-	initWindowVars liefert fuer alle Browser eine korrekte ANgabe der aktuellen FensterGroesse	-	END

//	-	JJLayer --------	HAUPTKLASSE	---------	-	START	<----------------------------------
function JJLayer(id)
{
	if(winVars){initWindowVars();winVars=false;}	
//	-	BrowserUebergreifende Layerdefinition	-	START
	var obj;d=document;
	if(d.all && (obj=d.all[id]) || d.layers && (obj=eval("document."+id)) || d.getElementById && (obj=d.getElementById(id))){;}
	else if(d.layers)for(var i=0;i<d.layers.length;i++) if((obj = JJLayer(id,d.layers[i].document))) break;
//	-	BrowserUebergreifende Layerdefinition	-	END

	this.layer=obj;		//	Referenz auf den Layer - hiermit wird manipuliert
	this.images=new Array();//	spacer fuer setImage und changeImage
		
	this.offsetX=-1;		//	fuer Horizontales 	Align
	this.offsetY=-2;		//	fuer Vertikales 	Align
	
	this.mouseEventParent	=	0;
	
	
	this.getHeight		=	JJLayer_getHeight	//	SubFunktion - gibt die Hoehe  des Layers zurueck
	this.getWidth		=	JJLayer_getWidth	//	SubFunktion - gibt die Breite des Layers zurueck
	this.getX		=	JJLayer_getX		//	SubFunktion - gibt die Horizontale Position des Layers zurueck
	this.getY		=	JJLayer_getY		//	SubFunktion - gibt die Vertikale   Position des Layers zurueck
	this.getZ		=	JJLayer_getZ		//	SubFunktion - gibt die Tiefe		    des Layers zurueck
	
	this.setX		=	JJLayer_setX		//	SubFunktion - setzt die Horizontale Position des Layers - erwartet einen INT
	this.setY		=	JJLayer_setY		//	SubFunktion - setzt die Vertikale   Position des Layers - erwartet einen INT
	this.setZ		=	JJLayer_setZ		//	SubFunktion - setzt die Tiefe 		     des Layers - erwartet einen INT
	this.moveRelative	=	JJLayer_moveRelative	//	SubFunktion - bewegt den Layer relativ			- erwartet einen INT
	this.alignX		=	JJLayer_alignX		//	SubFunktion - Horizontaler Align des Layers	- 0=Links|1=Zentriert|2=Rechts
	this.alignY		=	JJLayer_alignY		//	SubFunktion - Vertikaler   Align des Layers	- 0=Oben |1=Zentriert|2=Unten
	
	this.setImage		=	JJsetImage		//	SubFunktion - Initialisiert ein Image fuer den Layer - erwartet einen string (name of Image)
	this.changeImage	=	JJchangeImage		//	SubFunktion - aendert den src des mit JJsetImage initialisierten Image - erwartet einen string (position des Bildes)
}
function JJLayer_getHeight()	{ if( ((b=="ie"||b=="ge"||b=="ie6"		) 	&& (h=this.layer.style.height	  		)	)||
				      ((b=="op"			 		)	&& (h=this.layer.style.pixelHeight		)	)||
				      ((b=="ns"			 		) 	&& (h=this.layer.document.height		)	)){;}
				      										return parseInt(h); }
function JJLayer_getWidth()	{ if( ((b=="ie"||b=="ge"||b=="ie6"		) 	&& (w=this.layer.style.width	 		)	)||
				      ((b=="op"			 		)	&& (w=this.layer.style.pixelWidth		)	)||
				      ((b=="ns"			 		) 	&& (w=this.layer.document.width)		)	){;}
				      										return parseInt(w); }
function JJLayer_getX()		{ if( ((b=="ie"||b=="ge"||b=="op"||b=="ie6"	) 	&& (x=this.layer.style.left			)	)||
				      ((b=="ns"			 		) 	&& (x=this.layer.left				)	)){;}
														return parseInt(x); }
function JJLayer_getY()		{ if( ((b=="ie"||b=="ge"||b=="op"||b=="ie6"	) 	&& (y=this.layer.style.top			)	)||
				      ((b=="ns"			 		) 	&& (y=this.layer.top				)	)){;}
														return parseInt(y); }
function JJLayer_getZ()		{ if( ((b=="ie"||b=="ge"||b=="op"||b=="ie6"	) 	&& (z=this.layer.style.zIndex			)	)||
				      ((b=="ns"			 		) 	&& (z=this.layer.zIndex				)	)){;}
														return parseInt(z); }
													
function JJLayer_setX(x)	{ if( ((b=="ie"||b=="ge"||b=="op"||b=="ie6"	) 	&& (this.layer.style.left=x+this.offsetX+"px"	)	)||
				      ((b=="ns"			 		) 	&& (this.layer.left=(x+this.offsetX)		)	)){;}}	
function JJLayer_setY(y)	{ if( ((b=="ie"||b=="ge"||b=="op"||b=="ie6"	) 	&& (this.layer.style.top=y+this.offsetY+"px"	)	)||
				      ((b=="ns"			 		) 	&& (this.layer.top=y+this.offsetY		)	)){;}}
function JJLayer_setZ(z)	{ if( ((b=="ie"||b=="ge"||b=="op"||b=="ie6"	) 	&& (this.layer.style.zIndex=z			) 	)||
				      ((b=="ns"			 		) 	&& (this.layer.zIndex=z				)	)){;}}
function JJLayer_alignX(a)	{ this.getWidth();
				  if( ((a==0) 	&& (this.offsetX=0))
				    ||((a==1) 	&& (this.offsetX=Math.round((frameWidth/2)-(parseInt(this.getWidth())/2))))
				    ||((a==2)	&& (this.offsetX=Math.round(frameWidth-parseInt(this.getWidth()))))){;}
				  this.setX(0);}
function JJLayer_alignY(a)	{ this.getHeight();
				  if( ((a==0) 	&& (this.offsetY=0))
				    ||((a==1) 	&& (this.offsetY=Math.round((frameHeight/2)-(parseInt(this.getHeight())/2))))
				    ||((a==2)	&& (this.offsetY=Math.round(frameHeight-parseInt(this.getHeight()))))){;}
				  this.setY(0);}
function JJLayer_moveRelative (byX,byY){
	if(b=="ns"){
			this.layer.left=this.layer.left	+ byX;
			this.layer.top =this.layer.top 	+ byY;
	}
	if(b=="ie"||b=="op"||b=="ge"||b=="ie6")	{	this.layer.style.left=parseInt(this.layer.style.left)	+ byX+"px";
							this.layer.style.top =parseInt(this.layer.style.top) 	+ byY+"px";}}
function JJchangeImage(name,myImage)
{
	for(i=0;i<this.images.length;i++)
	{
		if(this.images[i]["name"]==name)
		{
			this.images[i]["image"].src=myImage;
		}
	}
}
function JJsetImage(name,myImage)
{
	this.images[this.images.length]=new Array();
	this.images[this.images.length-1]["name"]=name;
	this.images[this.images.length-1]["image"]=(jjFindImage(myImage));
}					      
//	-	JJLayer --------	HAUPTKLASSE	---------	-	END	<----------------------------------
