//	--------------------------------------------------------------------------------
//	Layer anzeigen / ausblenden
//	--------------------------------------------------------------------------------

	function	mdl_showLayer(layer)			// Layer anzeigen
	{
		if	(IE4 || NS6)
		{
			layer.style.visibility	=	"visible";
		}
		if	(NS4)
		{
			layer.visibility		=	"show";
		}
	}

	function	mdl_hideLayer(layer)			// Layer ausblenden
	{
		if	(IE4 || NS6)
		{
			layer.style.visibility	=	"hidden";
		}
		if	(NS4)
		{
			layer.visibility		=	"hide";
		}
	}

	function	mdl_inheritLayer(layer)			// Eigenschaft des übergeordneten Layer übernehmen
	{
		if	(IE4 || NS6)
		{
			layer.style.visibility	=	"inherit";
		}
		if	(NS4)
		{
			layer.visibility		=	"inherit";
		}
	}

	function	mdl_getVisibility(layer)			//	Ist der Layer sichtbar?
	{
		if	(IE4 || NS6)
		{
			return	layer.style.visibility;
		}
		if	(NS4)
		{
			if	(layer.visibility=="show")
				return	"visible";
			if	(layer.visibility=="hide")
				return	"hidden";
		}
	}	

//	--------------------------------------------------------------------------------
//	Layer Positionen
//	--------------------------------------------------------------------------------

	function	mdl_moveLayerTo(layer,x,y)		// Layer absolut positionieren
	{
		if	(IE4)
		{
			layer.style.left	=	x;
			layer.style.top		=	y;
		}
		if	(NS6)
		{
			layer.style.left	=	x+"px";
			layer.style.top		=	y+"px";
			return	false;
		}
		if	(NS4)
		{
			layer.moveTo(x,y);
		}
	}

	function	mdl_moveLayerBy(layer,x,y)		// Layer absolut positionieren
	{
		if	(IE4)
		{
			layer.style.pixelLeft	+=	x;
			layer.style.pixelTop	+=	y;
		}
		if	(NS4)
		{
			layer.moveBy(x,y);
		}
		if	(NS6)
		{
			layer.style.left		=	(mdl_getLayerLeft(layer)+x)+"px"
			layer.style.top			=	(mdl_getLayerTop(layer)+y)+"px"
		}
	}

	function	mdl_getLayerLeft(layer)			// Linke Seite des Layers
	{
		if	(NS6 || IE5)
			return	parseInt(layer.style.left);
		if	(IE4)
			return	layer.style.pixelLeft;
		if	(NS4)
			return	layer.left;
	}

	function	mdl_getLayerRight(layer)			// Linke Seite des Layers
	{
		return	mdl_getLayerLeft(layer) + mdl_getLayerWidth(layer);
	}

	function	mdl_getLayerTop(layer)			// Oberkante des Layers
	{
		if	(NS6 || IE5)
			return	parseInt(layer.style.top);
		if	(IE4)
			return	layer.style.pixelTop;
		if	(NS4)
			return	layer.top;
	}

	function	mdl_getLayerBottom(layer)			// Linke Seite des Layers
	{
		return	mdl_getLayerTop(layer) + mdl_getLayerHeight(layer);
	}

//	--------------------------------------------------------------------------------
//	Funktionen für Breite und Höhe
//	--------------------------------------------------------------------------------

	function	mdl_getLayerWidth(layer)
	{
		if	(NS6)
			if	(layer.style.width)
				return	parseInt(layer.style.width);
			else
				return	parseInt(layer.offsetWidth);
		if	(IE4)
			if	(layer.style.pixelWidth)
				return layer.style.pixelWidth;
			else
				return layer.clientWidth;
		if	(NS4)
			if	(layer.document.width)
				return	layer.document.width;
			else
				return	layer.clip.right-layer.clip.left;
	}

	function	mdl_getLayerHeight(layer)
	{
		if	(NS6)
			if	(layer.style.height)
				return	parseInt(layer.style.height);
			else
				return	parseInt(layer.offsetHeight);
		if	(IE4)
			if	(layer.style.pixelHeight)
				return layer.style.pixelHeight;
			else
				return layer.clientHeight;
		if	(NS4)
			if	(layer.document.height)
				return	layer.document.height;
			else
				return	layer.clip.bottom-layer.clip.top;
	}

//	--------------------------------------------------------------------------------
//	Funktionen für z-index
//	--------------------------------------------------------------------------------

	function	mdl_setZIndex(layer,z)
	{
		if	(NS6 || IE4 || IE5)
			layer.style.zIndex	=	z;
		if	(NS4)
			layer.zIndex		=	z;
	}

	function	mdl_getZIndex(layer)
	{
		if	(NS6 || IE4 || IE5)
			return layer.style.zIndex;
		if	(NS4)
			return	layer.zIndex;
	}

//	--------------------------------------------------------------------------------
//	Funktionen für Clipping
//	--------------------------------------------------------------------------------

	function	mdl_clipLayer(layer,left,top,right,bottom)						// Layer clippen
	{
		if	(NS6 || IE4 || IE5)
		{
			layer.style.clip	=	'rect('+top+' '+right+' '+bottom+' '+left+')';
		}
		if	(NS4)
		{
			layer.clip.top		=	top;
			layer.clip.left		=	left;
			layer.clip.bottom	=	bottom;
			layer.clip.right	=	right;
		}
	}

// Clip Positionen holen, wird z.B. fuer Sctrolling benoetigt

	function	mdl_getLayerClipLeft(layer)
	{
		if	(NS6 || IE4 || IE5)
		{
			var	clipstring	=	layer.style.clip;
			if	(clipstring)
			{
				cliparray	=	mdl_parseClipping(clipstring);
				return	cliparray[3];
			}
			else
				return	0;
		}
		if	(NS4)
		{
			return	layer.clip.left;
		}
	}

	function	mdl_getLayerClipTop(layer)
	{
		if	(NS6 || IE4 || IE5)
		{
			var	clipstring	=	layer.style.clip;
			if	(clipstring)
			{
				cliparray	=	mdl_parseClipping(clipstring);
				return	cliparray[0];
			}
			else
				return	0;
		}
		if	(NS4)
		{
			return	layer.clip.top;
		}
	}

	function	mdl_getLayerClipRight(layer)
	{
		if	(NS6 || IE4 || IE5)
		{
			var	clipstring	=	layer.style.clip;
			if	(clipstring)
			{
				cliparray	=	mdl_parseClipping(clipstring);
				return	cliparray[1];
			}
			else
				return	layer.style.pixelWidth;
		}
		if	(NS4)
		{
			return	layer.clip.right;
		}
	}

	function	mdl_getLayerClipBottom(layer)
	{
		if	(NS6 || IE4 || IE5)
		{
			var	clipstring	=	layer.style.clip;
			if	(clipstring)
			{
				cliparray	=	mdl_parseClipping(clipstring);
				return	cliparray[2];
			}
			else
				return	layer.style.pixelHeight;
		}
		if	(NS4)
		{
			return	layer.clip.bottom;
		}
	}


	function	mdl_parseClipping(clipstring)			// den Clipping String des IE parsen
{
  var cliparray = new Array();
  var i;

  i = clipstring.indexOf("(");
  cliparray[0] = parseInt(clipstring.substring(i + 1, clipstring.length));
  i = clipstring.indexOf(" ", i + 1);
  cliparray[1] = parseInt(clipstring.substring(i + 1, clipstring.length));
  i = clipstring.indexOf(" ", i + 1);
  cliparray[2] = parseInt(clipstring.substring(i + 1, clipstring.length));
  i = clipstring.indexOf(" ", i + 1);
  cliparray[3] = parseInt(clipstring.substring(i + 1, clipstring.length));
  return cliparray;
}

//	--------------------------------------------------------------------------------
//	Funktionen für Scrolling
//	--------------------------------------------------------------------------------

	function	mdl_ScrollLayerBy(layer,dx,dy)
	{
		var	clipLeft	=	mdl_getLayerClipLeft(layer);
		var	clipTop		=	mdl_getLayerClipTop(layer);
		var	clipRight	=	mdl_getLayerClipRight(layer);
		var	clipBottom	=	mdl_getLayerClipBottom(layer);

		mdl_moveLayerBy(layer,dx,dy);
		mdl_clipLayer(layer,clipLeft-dx,clipTop-dy,clipRight-dx,clipBottom-dy);
	}

//	--------------------------------------------------------------------------------
//	Funktionen um den Inhalt auszutauschen
//	--------------------------------------------------------------------------------

	function	mdl_changeLayerContent(layer,content)
{
		if	(NS6)
		{
			var rng		=	document.createRange();
			rng.setStartBefore(layer);
			newContent	=	rng.createContextualFragment(content);

			while( layer.hasChildNodes() )
				layer.removeChild( layer.lastChild );

			layer.appendChild(newContent);
		}
		if	(IE4||IE5)
		{
			layer.innerHTML	=	content;
		}
		if	(NS4)
		{
			layer.document.open();
			layer.document.write(content);
			layer.document.close();
		}
}

//	--------------------------------------------------------------------------------
//	Funktionen für Hintergrund
//	--------------------------------------------------------------------------------

	function	mdl_setBgColor(layer,col)
	{
		if	(IE4 || IE5 || NS6)
			layer.style.backgroundColor	=	col;
		if	(NS4)
			layer.bgColor				=	col;
	}

	function	mdl_setBgImage(layer,image)
	{
		if	(IE4 || IE5 || NS6)
			layer.style.backgroundImage	=	'url('+image+')';
		if	(NS4)
			layer.background.src		=	image;
	}


//	--------------------------------------------------------------------------------
//	Fenstergroesse
//	--------------------------------------------------------------------------------

	function	mdl_getWindowHeight()
	{
		if	(NS4 || NS6)
			return	window.innerHeight;
		if	(IE4)
			return	document.body.clientHeight;
		return	false;
	}

	function	mdl_getWindowWidth()
	{
		if	(NS4 || NS6)
			return	window.innerWidth;
		if	(IE4)
			return	document.body.clientWidth;
		return	false;
	}

//	--------------------------------------------------------------------------------
//	Seitengrösse
//	--------------------------------------------------------------------------------

	function	mdl_getPageWidth()
	{
		if	(NS4 || NS6)
			return document.width;
		if	(IE4)
			return document.body.scrollWidth;
		return false;
	}

	function	mdl_getPageHeight()
	{
		if	(NS4 || NS6)
			return document.height;
		if	(IE4)
			return document.body.scrollHeight;
		return	false;
	}
	
//	--------------------------------------------------------------------------------
//	Scrollpositionen
//	--------------------------------------------------------------------------------

	function mdl_getPageScrollY()
	{
		if (NS4 || NS6)
			return window.pageYOffset;
		if (IE4)
			return document.body.scrollTop;
		return -1;
	}

	function mdl_getPageScrollX()
	{
		if (NS4 || NS6)
			return window.pageXOffset;
		if (IE4)
			return document.body.scrollLeft;
		return -1;
	}

//	--------------------------------------------------------------------------------
//	Neuen Layer in ein Dokument einfügen
//	--------------------------------------------------------------------------------

	function	mdl_addLayer(name,width)
	{
		if	(NS6)
		{
			var	newLayer	=	document.createElement("div");
			newLayer.setAttribute("ID",name);
			newLayer.setAttribute("STYLE","position:absolute; top:000px; left:000px;");
			document.lastChild.appendChild(newLayer);
		}
		if	(IE4)
		{
			var	oldX	=	mdl_getPageScrollX();
			var	oldY	=	mdl_getPageScrollY();
			window.scrollTo(mdl_getPageWidth(),mdl_getPageHeight());

			document.body.insertAdjacentHTML("beforeEnd",'<div id="'+name+'" style="position:absolute; visibility:hidden;"></div>');
			window.scrollTo(oldX,oldY);
			return	mdl_getLayer(name);
		}
		if	(NS4)
		{
			var	layer	=	new	Layer(width);
			return	layer;
		}
	}

//	--------------------------------------------------------------------------------
//	Pfad auf einen Layer holen (wichtig für alle anderen Funktionen
//	--------------------------------------------------------------------------------

	function	mdl_getLayer(layername)
	{
		if	(IE4)
			return	eval('document.all.'+layername);
		if	(NS6)
			return	document.getElementById(layername);
		if	(NS4)
			return	mdl_findLayer(layername,document);
	}

	function	mdl_findLayer(layername,ds)				//	Routine, um den 'Pfad' zum Layer unter NS zu bestimmen
	{
		for	(var i=0;i<ds.layers.length;i++)			//	Die Layer des aktuellen 'document' Objekts durchsuchen
		{
			var	layer		=	ds.layers[i];
			if	(layer.name	== layername)				// Ist der aktuelle Layer der gesuchte?
				return	layer;

			if	(layer.document.layers.length>0)		// Wenn nicht, enthält er weitere Layer
			{
				var	layer	=	mdl_findLayer(layername,layer);	// Dann such dort, mit einem neuen document Objekt
				if	(layer!="not_found")
					return	layer;						// In tieferer Ebene gefunden
			}
		}
		return	"not_found";							//	Layer nicht gefunden ;-[
	}


//	--------------------------------------------------------------------------------
//	Pfad auf ein Image holen (wichtig für alle anderen Funktionen
//	--------------------------------------------------------------------------------

	function	mdl_getImage(name)
	{
		if	(NS6)
		{
			var	images	=	document.getElementsByTagName("img")
			for	(var i=0;i<images.length;i++)
			{
				if(images[i].getAttribute("name")==name)
					return	images[i];
			}
			return null;
		}
		if	(NS4)
		{
			return mdl_findImage(name,document);
		}
		if	(IE4)
			return eval('document.all.' + name);
		return null;
	}

	function	mdl_findImage(name,doc)
	{
		var i, img;

		for (i=0; i< doc.images.length; i++)
			if (doc.images[i].name==name)
				return doc.images[i];
		for (i=0; i<doc.layers.length; i++)
		{
			if ((img = mdl_findImage(name, doc.layers[i].document)) != null)
			{
				img.container = doc.layers[i];
				return img;
			}
		}
		return null;
}

//	--------------------------------------------------------------------------------
//	Bildpsoitionen holen
//	--------------------------------------------------------------------------------

	function	mdl_getImageX(img)
	{
		var x, obj;
		if	(NS4)
		{
			if (img.container != null)
				return img.container.pageX + img.x;
			else
				return img.x;
		}
		if	(IE4 || NS6)
		{
			x = 0;
			obj = img;
			while (obj.offsetParent != null)
			{
				x += obj.offsetLeft;
				obj = obj.offsetParent;
			}
			x += obj.offsetLeft;
			return x;
		}
	return -1;
	}


	function	mdl_getImageY(img)
	{
		var x, obj;

		if	(NS4)
		{
			if (img.container != null)
				return img.container.pageY + img.y;
			else
				return img.y;
		}
		if	(IE4 || NS6)
		{
			x = 0;
			obj = img;
			while (obj.offsetParent != null)
			{
				x += obj.offsetTop;
				obj = obj.offsetParent;
			}
			x += obj.offsetLeft;
			return x;
		}
	return -1;
	}

//	Browser überprüfen

	var	NS4	=	(navigator.appName.indexOf("Netscape") >= 0 && parseFloat(navigator.appVersion) >= 4) ? 1 : 0;
	var	NS6	=	(NS4 && document.getElementById) ? 1 : 0;
	if	(NS6)
		NS4	=	0;

	var IE4 =	(document.all) ? 1 : 0;
	var IE5 =	(IE4 && navigator.appVersion.indexOf("5.") >= 0) ? 1 : 0;

	if( NS4 | NS6 | IE4 | IE5 )
		var dhtmlCapable	=	true;