    var appMajor = parseInt(navigator.appVersion);
    var appMinor = parseFloat(navigator.appVersion);

	var IE55 	=	(IE5 && navigator.appVersion.indexOf("5.5") >= 0) ? 1 : 0;

	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;
	var IE55 	=	(IE5 && navigator.appVersion.indexOf("5.5") >= 0) ? 1 : 0;

	var OPERA = window.opera;
	var isDOM = document.getElementById?true:false;
	var isDOMIE=false;
	var isDOMNN=false;
	if (!OPERA && document.all)
	    isDOMIE = true;
	if (OPERA && appMajor >=5)
		isDOM = 1;
	var	starttag='<layer visibility="hide" name';
	var	endtag='</layer>';
	if	(!NS4){	starttag="<div id";	endtag="</div>";}
	if (isDOM && !OPERA) {
		if (IE4) {isDOM=false;isDOMIE=true;	}
	}
	var debug = 0;
	if (debug) {
	var st = "";
	if (NS4)
		st="NS4 detected";
	else if (NS6)
		st="NS6 detected";
	else if (IE55)
		st=("IE55 detected");
	else if (IE4)
		st=("IE4 detected");
	else if (isDOMIE)
		st=("DOM IE detected");
	else if (OPERA)
		st=("Opera detected");
	else
		st="Unknown";
	if (isDOM)
		st+="\nDOM supported";
	alert(st);
	}

/* A version of stringToNumber that returns 0 if there is NaN returned, or number is part of a string, like 100px... */
function stringToNumber(s)
{
        return parseInt(('0' + s), 10)
}
// CSS1 Functions
var ieTargetStyleSheetID = "tssxyz";
var pFontSize = new Array();
	pFontSize.normal="8pt"; 
	pFontSize.small="8px";
	pFontSize.large="9pt";

if (screen.width<700)		
{ 
	pFontSize.normal="8pt"; 
	pFontSize.small="8px";
	pFontSize.large="9pt";
} 
else if (screen.width<900){ 
	pFontSize.normal="9pt"; 
	pFontSize.small="10px";
	pFontSize.large="10pt";
} 
else if (screen.width<1100){ 
	pFontSize.normal="10pt"; 
	pFontSize.small="12px";
	pFontSize.large="11pt";
} 
else { 
	pFontSize.small="9pt";
	pFontSize.normal="9pt"; 
	pFontSize.large="22px";
} 
function mapPropNameToNav4 (propName)
{  if (propName == "border-width") return "borderWidths";
   else if (propName == "margin")  return "margins";
   else if (propName == "padding") return "paddings";
   else {
      var hyphenPos = propName.indexOf("-");
      while (hyphenPos != -1) 
      { propName = propName.substr(0,hyphenPos) + 
                   propName.substr(hyphenPos+1,1).toUpperCase() +
                   propName.substr(hyphenPos+2);
        hyphenPos = propName.indexOf("-");
      }
      return propName;
   }
}     
function mapSelectorToNav4 (singleSelector)
{   if (singleSelector.substr(0,1) == ".")
        return "document.classes." + singleSelector.substr(1) + ".all";
    else if (singleSelector.substr(0,1) == "#")
        return "document.ids." + singleSelector.substr(1);
    else if (singleSelector.indexOf(".") == -1)
        return "document.tags." + singleSelector;
    else { 
        var selectorArray = singleSelector.split(".");
        return "document.classes." + selectorArray[1] + "." + selectorArray[0];
    }
}
function nav4SelectorString (selector)
{   var result;
    var selectorArray = selector.split(" ");
    if (selectorArray.length == 1) result = mapSelectorToNav4 (selectorArray[0]);
    else {  // handle contextual (multiple) selector
        result = "document.contextual("
        for (var i=0; i<selectorArray.length; i++)
        {   result += mapSelectorToNav4 (selectorArray[i]);
            if (i < selectorArray.length-1) result += ", ";
        }
        result += ")"
    }
    return result;
}
function createNav4Rule (selector, propName, value, isVariable)
{   var opener = "=";  var closer = "";
    if (propName=="border-width" || propName=="margin" ||
        propName=="padding")
    {  opener = "("; closer = ")"  }
    return nav4SelectorString(selector) + "." + mapPropNameToNav4(propName) +
           opener + ((isVariable)?"":"\"") + value + ((isVariable)?"":"\"") + 
           closer + ";";
}

function createIE4Rule (selector, propName, value, isVariable, ssName)
{  var theRule;
   if (isVariable) theRule = "document.styleSheets[\"" + ssName + "\"].addRule (\""
               + selector + "\", \"" + propName  + ":\" + " 
               + value + ");";
   else theRule = "document.styleSheets[\"" + ssName + "\"].addRule (\""
               + selector + "\", \"" + propName  + ":" 
               + value + "\");";
   return (theRule);        
}
function createNav6Rule(selector,propName,value,isVariable,ssName) {
	if(!isVariable) { 
		rule = ( selector + " { " + propName + ": " + value + " }");
		code = "document.getElementById('" + ssName + "').sheet.insertRule('" + rule + "', " + "document.getElementById('" + ssName + "').sheet" + ".cssRules.length )"
		return code;
	} else {
		rule = ( selector + " { " + propName + ": \' + " + value + " + \' }");
		code = "document.getElementById('" + ssName + "').sheet.insertRule('" + rule + "', " + "document.getElementById('" + ssName + "').sheet" + ".cssRules.length )"
		return code;
	}
}
function css1FromJS (forNav, selector, propName, value, isVariable, ssName, nav6)
{   if (forNav) return (createNav4Rule (selector, propName, value, isVariable));
    else if(!nav6 && !forNav) {
       var targetSheetID = (css1FromJS.arguments.length < 6)? ieTargetStyleSheetID: ssName;
       var tmpRule = createIE4Rule (selector, propName, value, isVariable, targetSheetID);
       return (tmpRule);
    } else if(nav6) return (createNav6Rule(selector, propName, value, isVariable, ssName));
}

function getElem(p1,p2,p3) 
{
 var Elem;
 if(isDOM) {
   if(p1.toLowerCase()=="id") {
     if (typeof document.getElementById(p2) == "object")
     Elem = document.getElementById(p2);
     else Elem = void(0);
     return(Elem);
   }
   else if(p1.toLowerCase()=="name") {
     if (typeof document.getElementsByName(p2) == "object")
     Elem = document.getElementsByName(p2)[p3];
     else Elem = void(0);
     return(Elem);
   }
   else if(p1.toLowerCase()=="tagname") {
     if (typeof document.getElementsByTagName(p2) == "object" || (OP && typeof document.getElementsByTagName(p2) == "function"))
     Elem = document.getElementsByTagName(p2)[p3];
     else Elem = void(0);
     return(Elem);
   }
   else return void(0);
 }
 else if(isDOMIE) {
   if(p1.toLowerCase()=="id") {
     if (typeof document.all[p2] == "object")
     Elem = document.all[p2];
     else Elem = void(0);
     return(Elem);
   }
   else if(p1.toLowerCase()=="tagname") {
     if (typeof document.all.tags(p2) == "object")
     Elem = document.all.tags(p2)[p3];
     else Elem = void(0);
     return(Elem);
   }
   else if(p1.toLowerCase()=="name") {
     if (typeof document[p2] == "object")
     Elem = document[p2];
     else Elem = void(0);
     return(Elem);
   }
   else return void(0);
 }
 else if(isDOMNN) {
   if(p1.toLowerCase()=="id" || p1.toLowerCase()=="name") {
   if (typeof document[p2] == "object")
     Elem = document[p2];
     else Elem = void(0);
     return(Elem);
   }
   else if(p1.toLowerCase()=="index") {
    if (typeof document.layers[p2] == "object")
     Elem = document.layers[p2];
    else Elem = void(0);
     return(Elem);
   }
   else return void(0);
 }
}

function getObject(p1) 
{
 var Elem;
 if(isDOM) {
   if(p1.toLowerCase()=="id") {
     if (typeof document.getElementById(p2) == "object")
     Elem = document.getElementById(p2);
     else Elem = void(0);
     return(Elem);
   }
   else if(p1.toLowerCase()=="name") {
     if (typeof document.getElementsByName(p2) == "object")
     Elem = document.getElementsByName(p2)[p3];
     else Elem = void(0);
     return(Elem);
   }
   else if(p1.toLowerCase()=="tagname") {
     if (typeof document.getElementsByTagName(p2) == "object" || (OP && typeof document.getElementsByTagName(p2) == "function"))
     Elem = document.getElementsByTagName(p2)[p3];
     else Elem = void(0);
     return(Elem);
   }
   else return void(0);
 }
 else if(isDOMIE) {
   if(p1.toLowerCase()=="id") {
     if (typeof document.all[p2] == "object")
     Elem = document.all[p2];
     else Elem = void(0);
     return(Elem);
   }
   else if(p1.toLowerCase()=="tagname") {
     if (typeof document.all.tags(p2) == "object")
     Elem = document.all.tags(p2)[p3];
     else Elem = void(0);
     return(Elem);
   }
   else if(p1.toLowerCase()=="name") {
     if (typeof document[p2] == "object")
     Elem = document[p2];
     else Elem = void(0);
     return(Elem);
   }
   else return void(0);
 }
 else if(isDOMNN) {
   if(p1.toLowerCase()=="id" || p1.toLowerCase()=="name") {
   if (typeof document[p2] == "object")
     Elem = document[p2];
     else Elem = void(0);
     return(Elem);
   }
   else if(p1.toLowerCase()=="index") {
    if (typeof document.layers[p2] == "object")
     Elem = document.layers[p2];
    else Elem = void(0);
     return(Elem);
   }
   else return void(0);
 }
}

function reloadPage(){window.location.reload();}

function	cl_showLayer(layer)
{
	if	(IE4 || NS6 || OPERA){
		layer.style.visibility	=	"visible";
	}
	if(NS4){
		layer.visibility="show";
	}
}
function	cl_hideLayer(layer)			// Layer ausblenden
{
	if	(isDOM || IE4)
		layer.style.visibility	=	"hidden";
	if	(NS4)
		layer.visibility		=	"hide";
}

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

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

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

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

	function	cl_clipLayer(layer,left,top,right,bottom)						// Layer clippen
	{
		if	(NS6 || IE4 || IE5 || OPERA)
		{
			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	cl_getLayerClipLeft(layer)
	{
		if	(NS6 || IE4 || IE5)
		{
			var	clipstring	=	layer.style.clip;
			if	(clipstring)
			{
				cliparray	=	cl_parseClipping(clipstring);
				return	cliparray[3];
			}
			else
				return	0;
		}
		if	(NS4)
		{
			return	layer.clip.left;
		}
	}

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

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

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


	function	cl_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 um den Inhalt auszutauschen
//	--------------------------------------------------------------------------------

function	cl_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||isDOM)
		{
			layer.innerHTML	=	content;
		}
		if	(NS4)
		{
			layer.document.open();
			layer.document.write(content);
			layer.document.close();
		}
}

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

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

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

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

	function	cl_getLayer(layername)
	{
		if (isDOM || isDOMIE)
			return getElem("id", layername, null);
		else if	(IE4)
			return	eval('document.all.'+layername);
		else if	(NS4)
			return	cl_findLayer(layername,document);
	}

	function	cl_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	al		=	ds.layers[i];
			if	(al.name	== layername)				// Ist der aktuelle Layer der gesuchte?
				return	al;

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


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

	function	cl_getImage(name)
	{
		if	(NS6 || isDOM)
		{
			var	images	=	document.getElementsByTagName("img")
			for	(var i=0;i<images.length;i++)
			{
				if(images[i].getAttribute("name")==name)
					return	images[i];
			}
			//return null;
		}
		else if	(NS4)
		{
			return cl_findImage(name,document);
		}
		else if	(IE4)	 {
			return eval('document.all.' + name);
		}
		else
			alert("Unknown browser Image not found: "+name);
		return null;
	}

	function	cl_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 = cl_findImage(name, doc.layers[i].document)) != null)
			{
				img.container = doc.layers[i];
				return img;
			}
		}
		return null;
}

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

	function	cl_getImageX(img)
	{
		var x, obj;
		if	(NS4)
		{
			if (img.container != null)
				return img.container.pageX + img.x;
			else
				return img.x;
		}
		if	(IE4 || isDOM)
		{
			x = 0;
			obj = img;
			while (obj.offsetParent != null)
			{
				x += obj.offsetLeft;
				obj = obj.offsetParent;
			}
			x += obj.offsetLeft;
			return x;
		}
	alert("Image not found!");
	return -1;
	}


	function	cl_getImageY(img)
	{
		var y, x, obj;
		y = 0;
		if	(NS4)
		{
			if (img.container != null)
				y= img.container.pageY + img.y;
			else
				y= img.y;
			return y;
		}
		if	(IE4 || NS6 || isDOM)
		{
			x = 0;
			obj = img;
			while (img.offsetParent != null)
			{
				x += img.offsetTop;
				img = img.offsetParent;
			}
			x += img.offsetTop;
			return x;
		}
	alert("Image not found!");
	return -1;
	}
//	--------------------------------------------------------------------------------
//	Bildpsoitionen holen
//	--------------------------------------------------------------------------------

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


	function	cl_getLayerY(img)
	{
		var x, obj;

		if	(NS4)
			return img.pageY;
		if	(IE4 || NS6)
		{
			x = 0;
			obj = img;
			while (obj.offsetParent != null)
			{
				x += obj.offsetTop;
				obj = obj.offsetParent;
			}
			x += obj.offsetLeft;
			return x;
		}
	return -1;
	}
	function	cl_getFormular(name)
	{
		if	(NS6)
		{
			var	images	=	document.getElementsByTagName("form")
			for	(var i=0;i<images.length;i++)
			{
				if(images[i].getAttribute("name")==name)
					return	images[i];
			}
			return null;
		}
		if	(NS4)
		{
			return cl_findFormular(name,document);
		}
		if	(IE4)
			return eval('document.all.' + name);
		return null;
	}

	function	cl_findFormular(name,doc)
	{
		var i, form;

		for (i=0; i< doc.forms.length; i++)
			if (doc.forms[i].name==name)
				return doc.forms[i];
		for (i=0; i<doc.layers.length; i++)
		{
			if ((form = cl_findFormular(name, doc.layers[i].document)) != null)
			{
				form.container = doc.layers[i];
				return form;
			}
		}
		return null;
}

// find link by name
function	cl_getLink(name)
{
var obj=document.links;
var lo=null;

	for (var i in obj)
	{
		for (var j in obj[i])
		{
			lo=null;
			if (!NS4)
			{
				if (j == "innerText")
					lo = obj[i][j];
			}
			else
			{
				if (j == "text")
					lo = obj[i][j];
			}
			if (lo != null)
			{
				if (lo == name)
					return obj[i];
			}
		}
	}
	return null;
}

function Show(nam)
{
	var	cb=cl_getLayer(nam);
	if (cb != "not_found")
		cl_showLayer(cb);
	return cb;
}
function Hide(nam)
{
	var	cb=cl_getLayer(nam);
	if (cb != "not_found")
		cl_hideLayer(cb);
	return cb;
}


function RegisterRollover(iname, ion, ioff, help)
{
	if(typeof(document.rollover)=="undefined")
		document.rollover = new Array();
	if(typeof(document.rollover[iname])=="undefined")
		document.rollover[iname] = new Array();
	if(typeof(document.rollover[iname].on)=="undefined")
		document.rollover[iname].on = new Image();
	if(typeof(document.rollover[iname].off)=="undefined")
		document.rollover[iname].off = new Image();
	document.rollover[iname].on.src = "images/"+ion+".gif";
	document.rollover[iname].off.src = "images/"+ioff+".gif";
}


function RollOver(iname, ion, ioff, help, width, height)
{
	if(typeof(document.rollover)=="undefined")
		document.rollover = new Array();
	if(typeof(document.rollover[iname])=="undefined")
		document.rollover[iname] = new Array();
	if(typeof(document.rollover[iname].on)=="undefined")
		document.rollover[iname].on = new Image();
	if(typeof(document.rollover[iname].off)=="undefined")
		document.rollover[iname].off = new Image();
	if(typeof(document.rollover[iname].help)=="undefined")
		document.rollover[iname].help = help;

	document.rollover[iname].on.src = "images/"+ion+".gif";
	document.rollover[iname].off.src = "images/"+ioff+".gif";

	str = "<img name='"+iname+"' src='images/"+ioff+".gif' border=0 onmouseover='javascript:switchTo(\""+iname+"\", 1);' onmouseout='javascript:switchTo(\""+iname+"\", 0);' title='"+help+"' alt='"+help+"'";
	if(typeof(width)!="undefined")
		str += " width='"+width+"' ";
	if(typeof(height)!="undefined")
		str += "height='"+height+"' ";
	str+=">";
	str = "<img WIDTH='"+width+"' HEIGHT='"+height+"' src='images/"+ioff+".gif' border='1'>\n";
	document.write(str);
	alert(str);
}

function switchTo(iname, ison)
{
	im = cl_getImage("m"+iname);
	if(im && typeof(im)!="undefined")
	{
		if(ison){
			if(typeof(document.rollover[iname].help)!="undefined"){
				window.setTimeout('window.status="' +  document.rollover[iname].help  + '"', 10);
			}
			im.src = document.rollover[iname].on.src;
		}
		else{
			window.setTimeout('window.status="' +  ''  + '"', 10);

	 		window.status="";
			im.src = document.rollover[iname].off.src;
		}
	}
}

function switchHelp(iname, ison)
{
	if(ison){
		if(typeof(document.rollover[iname].help)!="undefined")
			window.status=document.rollover[iname].help;
	}
	else
	 	window.status="";
}


function uploadInProgress(mode)
{
	var opt = "height=150,width=350,location=no,scrollbars=no,menubars=no,toolbars=no,resizable=yes,left=400,top=200";
	if(mode == "on")
		statusWin=window.open("pwin.php",'',opt);
	else{
		if (typeof(statusWin) != "undefined") {
			statusWin.close();
			statusWin = void(0);
		}
	}
}		

function encodePath(pt)
{
	var rt = pt.replace(/\//,"|");
	return rt;
}

