// --------------------
//
// mannheimer-ag functions
//
// --------------------

function sendAnfahrtForm(anfahrtForm){
    var keys = new Array("SPLZ", "SHauptort", "SStrasse", "ZFirma", "ZPLZ", "ZHauptort","ZTeilort","ZStrasse", "ZHausnr", "ZVWTel", "ZTel", "ZVWFax", "ZFax", "ZEmail", "ZZusatz1", "ZZusatz2", "CSS");
    var query = "?";
    for(var i=0;i < keys.length;i++){
        var key = keys[i];
        query += key + "=" + escape(anfahrtForm[key].value) + "&";
    }
    openPopup("http://www.yellowmap.de/Partner/Mannheimer/RouteRequest.asp" + query, "anfahrt", 500, 590, true);
    return false;
}

function sendPLZForm(plzForm){
    if(plzForm.plz.value != ""){
        //var url = "/kontakt/betreuer/popup/?what=" + plzForm.what.value + "&plz=" + plzForm.plz.value + "&ad_homepage=ja";
        var url = "/kontakt/betreuer/popup/?what=" + plzForm.what.value + "&plz=" + plzForm.plz.value;
        if(plzForm.spezialist){
            url += "&spezialist=" + plzForm.spezialist.value;
        }
        openPopup(url, "betreuer", defaultWidth, 450, true);
    }
    return false;
}

function clearPLZinput(plzField) {
    if (plzField.value == "<PLZ>") {
        plzField.value = "";
    }
}

function checkSearch(){
    var searchText = document.forms[0].suche.value;
    if(searchText.length < 3){
        alert("Geben Sie bitte einen Suchbegriff\nmit mehr als 2 Zeichen ein.");
        return false;
    }
    return true;
}

function openPdfWin(url){
    window.open(url);
    self.close();
    return false;
}

function openExternWin(url){
    openPrint(url, "extern", largeWidth, largeHeight, true);
    return false;
}

function openPrintWin(url){
    openPrint(url, "print", defaultPrintWidth, defaultPrintHeight, true);
    return false;
}

function openPopupWin(url){
    openPopup(url, "popup", defaultWidth, defaultHeight, true);
    return false;
}

function openRouteWin(url){
    openPopup(url, "route", 780, 600, true);
    return false;
}

function openRechnerWin(url){
    openPopup(url, "rechner", 626, 540, true);
    return false;
}

function sslPopup(url){
    //if ( window.location.protocol.slice(0,6) == "https:" ) {
        openPopup(url, "ssl", defaultWidth, defaultHeight, true);
        return false;
    //}
}

function glossarPopup(url){
    openPopup(url, "glossar", defaultWidth, 570, true);
    return false;
}

function resizeWin(width, height){
    self.resizeTo(width, height);
}

// --------------------
//
// opus 5 dhtml javascript library
// contact@opus5.de (jl)
//
// --------------------

var cD = new clientDetection();
var separator = "x";
var timeoutId = 0;
var timeoutLength = 200;
var overFlag = 0;
var defaultHeight = 350;
var defaultWidth = 500;
var largeHeight = 500;
var largeWidth = 800;
var defaultPrintHeight = largeHeight;
var defaultPrintWidth = largeWidth;
var defaultNarrowWidth = 250;
var transgif = "/img_mv/leer.gif";

if(cD.nav){
    reloadOnResize();
}

function initPage(){
}

function enterItem(){
    if(!overFlag){
        overFlag = 1;
        window.clearTimeout(timeoutId);
        var myMenuName = this.id;
        var overIndex = parseInt(myMenuName.substring(myMenuName.lastIndexOf(separator) + 1, myMenuName.length));
        var areaIndex = myMenuName.substring(1,myMenuName.length);
        var myArea = getArea(areaIndex);
        for(var i=0;i < myArea.menuItems.length;i++){
            if(overIndex == i){
                if(!myArea.menuItems[i].showbullet && myArea.menuItems[i].bullet.src != imgBulletOn.src){
                    myArea.menuItems[i].bullet.src = imgBulletOn.src;
                }
                if(cD.nav4){
                    myArea.menuItems[i].itemElt.bgColor = myArea.menuItems[i].bgOver;
                }
                else{
                    myArea.menuItems[i].itemElt.style.backgroundColor = myArea.menuItems[i].bgOver;
                }
            }
            else{
                if(!myArea.menuItems[i].showbullet && myArea.menuItems[i].bullet.src != imgBulletOff.src){
                    myArea.menuItems[i].bullet.src = imgBulletOff.src;
                }
                if(cD.nav4){
                    myArea.menuItems[i].itemElt.bgColor = myArea.menuItems[i].bgOut;
                }
                else{
                    myArea.menuItems[i].itemElt.style.backgroundColor = myArea.menuItems[i].bgOut;
                }
            }
        }
        showMenuAreas(myArea, areaIndex, overIndex);
    }
    else{
        overFlag = 0;
    }
}

function hideRootMenuArea(){
    showMenuAreas(rootMenuArea, "", -1);
    for(var i=0;i<rootMenuArea.menuItems.length;i++){
        if(!rootMenuArea.menuItems[i].showbullet && rootMenuArea.menuItems[i].bullet.src != imgBulletOff.src){
            rootMenuArea.menuItems[i].bullet.src = imgBulletOff.src;
        }
        if(cD.nav4){
            rootMenuArea.menuItems[i].itemElt.bgColor = rootMenuArea.menuItems[i].bgOut;
        }
        else{
            rootMenuArea.menuItems[i].itemElt.style.backgroundColor = rootMenuArea.menuItems[i].bgOut;
        }
    }
}

function showMenuAreas(a, m, o){
    for(var j=0;j < a.menuItems.length;j++){
        if(a.menuItems[j].childArea){
            if(a.menuItems[j].childArea.visible && j != o){
                hideChildArea(a.menuItems[j].childArea);
            }
        }
    }
    var indexArr = m.split(separator);
    var theArea = rootMenuArea;
    for(var i=0;i<indexArr.length;i++){
        if(theArea.menuItems[indexArr[i]]){
            if(theArea.menuItems[indexArr[i]].childArea){
                theArea = theArea.menuItems[indexArr[i]].childArea;
                showChildArea(theArea);
                theArea.visible = true;
            }
        }
    }
}

function getArea(m){
    var indexArr = m.split(separator);
    if(indexArr.length < 2){
        return rootMenuArea;
    }
    var theArea = rootMenuArea;
    for(var i=0;i<indexArr.length - 1;i++){
        theArea = theArea.menuItems[indexArr[i]].childArea;
    }
    return theArea;
}

function hideChildArea(a){
    if(a){
        setEltVisibility(a.areaElt, 'hidden');
        for(var i=0;i<a.menuItems.length;i++){
            if(!a.menuItems[i].showbullet && a.menuItems[i].bullet.src != imgBulletOff.src){
                a.menuItems[i].bullet.src = imgBulletOff.src;
            }
            if(!cD.nav6){
                setEltVisibility(a.menuItems[i].itemElt, 'hidden');
            }
            if(cD.nav4){
                a.menuItems[i].itemElt.bgColor = a.menuItems[i].bgOut;
            }
            else{
                a.menuItems[i].itemElt.style.backgroundColor = a.menuItems[i].bgOut;
            }
        }
        a.visible = false;
        for(var i=0;i<a.menuItems.length;i++){
            if(a.menuItems[i].childArea){
                if(a.menuItems[i].childArea.visible){
                    hideChildArea(a.menuItems[i].childArea);
                }
            }
        }
    }
}

function showChildArea(a){
    if(a){
        setEltVisibility(a.areaElt, 'visible');
        if(!cD.nav6){
            for(var i=0;i<a.menuItems.length;i++){
                setEltVisibility(a.menuItems[i].itemElt, 'visible');
            }
        }
    }
}

function exitItem(){
    overFlag = 0;
    timeoutId = window.setTimeout("hideRootMenuArea()", timeoutLength);
}

function getItem(m){
    var indexArr = m.split(separator);
    var theArea = rootMenuArea;
    var theItem;
    for(var i=0;i<indexArr.length;i++){
        theItem = theArea.menuItems[indexArr[i]];
        theArea = theArea.menuItems[indexArr[i]].childArea;
    }
    return theItem;
}

function getItemHref(m){
    var myItem = getItem(m);
    return myItem.href;
}

function menuItem(id, text, href, bgOut, bgOver, target, childArea){
    var pre = "";
    if(cD.gecko){
        pre = "#";
    }
    this.id = id;
    this.text = text;
    this.href = href;
    this.bgOut = pre + bgOut;
    this.bgOver = pre + bgOver;
    this.target = "";
    if(target != "0"){
        this.target = target;
    }
    this.childArea = childArea;
    this.itemElt = null;
    this.bullet = null;
    this.showbullet = 0;
}

function menuArea(id, menuItems){
    this.id = id;
    this.menuItems = menuItems;
    this.visible = false;
    this.areaElt = null;
}

function buildSidebar(){
    for(var i=0;i < sidebarCounter;i++){
    document.writeln("<div id=\"sidebar"+i+"\"><table border=\"0\" width=\"11\" cellpadding=\"0\" cellspacing=\"0\"><tr><td valign=\"top\" align=\"left\"><img src=\""+transgif+"\" border=\"0\" width=\"5\" height=\"1\" /></td></tr></table></div>");
    }
}

function buildMenuArea(ma, base){
    if(cD.nav6 || cD.gecko){
        document.writeln("<div id=\""+ma.id+"\"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\""+areaWidth+"\" bgcolor=\"#"+areaBGColor+"\"><tr><td><table border=\"0\" cellpadding=\"0\" cellspacing=\"1\" width=\""+areaWidth+"\">");
    }
    else{
        document.writeln("<div id=\""+ma.id+"\"><table border=\"0\" width=\""+areaWidth+"\" cellpadding=\"0\" cellspacing=\"0\"><tr><td valign=\"top\" align=\"left\"><img src=\""+transgif+"\" border=\"0\" width=\"5\" height=\"1\" /></td></tr></table></div>");
    }
    var myElt = getElt(ma.id);
    ma.areaElt = myElt;
    for(var i=0;i < ma.menuItems.length;i++){
        var mi = ma.menuItems[i];
        var fillImg = imgBulletOff.src;
        var spaceWidth = 2;
        var pathDepth = 0;
        var shiftWidth = 11;
        if(base){
            if(depthArray[i] > -1){
                mi.showbullet = 1;
                fillImg = imgBulletPath.src;
                pathDepth = depthArray[i];
            }
        }
        shiftWidth = shiftWidth * pathDepth;
        var contentWidth = tableWidth - bulletWidth - spaceWidth - shiftWidth;
        if(cD.nav6 || cD.gecko){
            if(depthArray[i] < 1 || !base){
                document.writeln("<tr><td>");
            }
        }
        var border = 0;
        document.writeln("<div id=\""+mi.id+"\"><table border=\""+border+"\" width=\""+tableWidth+"\" cellpadding=\"2\" cellspacing=\"0\"><tr><td width=\""+(spaceWidth + shiftWidth)+"\" valign=\"top\" align=\"left\"><img src=\""+transgif+"\" border=\""+border+"\" width=\""+(spaceWidth + shiftWidth)+"\" height=\"1\" /></td><td width=\""+bulletWidth+"\" valign=\"top\" align=\"left\"><img src=\""+fillImg+"\" border=\""+border+"\" width=\""+bulletWidth+"\" height=\""+bulletHeight+"\" name=\"img"+mi.id+"\" /></td><td width=\""+contentWidth+"\">");
        if(mi.href != "-"){
            document.writeln("<a href=\""+mi.href+"\" class=\"nav\" target=\"" + mi.target + "\">");
        }
        else{
            document.writeln("<b class=\"navtitel\">");
        }
        document.writeln(mi.text);
        if(mi.href != "-"){
            document.writeln("</a>");
        }
        else{
            document.writeln("</b>");
        }
        document.writeln("</td></tr></table></div>");
        if(cD.nav6 || cD.gecko){
            if(depthArray[i + 1] && base){
                if(depthArray[i + 1] < 0){
                    document.writeln("</td></tr>");
                }
            }
            else{
                document.writeln("</td></tr>");
            }
        }
        myElt = getElt(mi.id);
        if(mi.href != "-"){
            addEltEventListener(myElt, "MOUSEOVER", "enterItem");
            addEltEventListener(myElt, "MOUSEOUT", "exitItem");
        }
        mi.itemElt = myElt;
        mi.bullet = getImg("img" + mi.id);
    }
    if(cD.nav6 || cD.gecko){
        document.writeln("</table></td></tr></table></div>");
    }
    for(var i=0;i < ma.menuItems.length;i++){
        var mi = ma.menuItems[i];
        if(mi.childArea){
            buildMenuArea(mi.childArea, 0);
        }
    }
}

function initMenu(){
    buildMenuArea(rootMenuArea, 1);
    if(sidebarCounter){
        buildSidebar();
    }
}            

function bCss(p1, p2, p3, p4, p5) {
    var vis = "hidden";
    if(p1 == separator + "b"){
        vis = "visible";
    }
    document.writeln("#"+p1+"{position:absolute;top:"+p2+"px;left:"+p3+"px;background-color:#"+p4+";layer-background-color:#"+p4+";visibility:"+vis+";z-index:1;height:"+p5+"px;width:"+aWidth+"px;}");
}

function mCss(p1, p2, p3, p4, p5, p6){
    var position = (cD.nav6)?"relative":"absolute";
    if(p1.indexOf("sidebar") >= 0){
        position = "absolute";
    }
    var topleft = (cD.nav6)?"":"top:"+p2+"px;left:"+p3+"px;";
    var vis = "";
    if(!cD.nav6){
        if(p1.lastIndexOf(separator) == 0){
            vis = "visibility:visible;";
        }
        else{
            vis = "visibility:hidden;";
        }
    }
    document.writeln("#"+p1+"{position:"+position+";"+topleft+"background-color:#"+p4+";layer-background-color:#"+p4+";"+vis+"z-index:2;height:"+p5+"px;width:"+p6+"px;}");
}

function sCss(p1, p2, p3, p4, p5, p6){
    document.writeln("#"+p1+"{position:absolute;top:"+p2+"px;left:0px;background-color:#"+p3+";layer-background-color:#"+p3+";visibility:visible;z-index:"+p4+";height:"+p5+"px;width:"+p6+"px;}");
}

// --------------------
// Funktion zur Anzeige der BrowserInfos
//
// function whoAmI
//
// Die BrowserInfos (und das Betriebsystem) werden in das Dokument geschrieben
//

function whoAmI(){
	var browserInfo = "<ul>";
	for(var i in cD){
		browserInfo += "<li>client." + i + " = " + cD[i] + "</li>";
	}
	browserInfo += "</ul>";
	document.write(browserInfo);
}


// --------------------
// Funktion zur Anzeige einer Objektstruktur in einem alert
// nuetzlich zum debuggen :-)
//
// function showObjTree
// param obj : Objekt, dessen Struktur angezeigt werden soll
// param objName : Name des Objekts (beliebiger String - nicht unbedingt notwendig)
//

function showObjTree(obj, objName){
	var count = 0;
	var result = ""
	for(var i in obj){
		result += objName + "." + i + " = " + obj[i] + "\n";
		count++;
	}
	alert( result );
	return result
}


// --------------------
// Funktion zur Anzeige einer Objektstruktur im document
//
// function showObjTree
// param obj : Objekt, dessen Struktur angezeigt werden soll
// param objName : Name des Objekts (beliebiger String)
//

function showObjTreeInDoc(obj, objName){
	var count = 0;
	var result = ""
	for(var i in obj){
		result += objName + "." + i + " = " + obj[i] + "<br>";
		count++;
	}
	document.write(result);
}


// --------------------
// Funktion zur Erkennung des Browsers
// die informationen sind im objekt cD verfuegbar
//
// function clientDetection
//

function clientDetection(){
	var agt = navigator.userAgent.toLowerCase();
	
	this.platform = navigator.platform.toLowerCase();
	this.name = agt;
	
	this.major = parseInt(navigator.appVersion);
	this.minor = parseFloat(navigator.appVersion);
	
	this.nav  = ((agt.indexOf('mozilla')!=-1) && ((agt.indexOf('spoofer')==-1) && (agt.indexOf('compatible') == -1)));
	this.nav2 = (this.nav && (this.major == 2));
	this.nav3 = (this.nav && (this.major == 3));
	this.nav4 = (this.nav && (this.major == 4));
	this.nav6 = (this.nav && (this.major == 5));
    this.gecko = (agt.indexOf('gecko') != -1);
	
	this.ie   = (agt.indexOf("msie") != -1);
	this.ie3  = (this.ie && (this.major == 2));
	this.ie4  = (this.ie && (this.major == 4));
	
	this.opera = (agt.indexOf("opera") != -1);
	
	this.nav6up = this.nav && (this.major >= 5);
	this.ie4up  = this.ie  && (this.major >= 4);
}


// --------------------
// Funktion zum Finden eines Objekts/Layers
//
// function getElt
// param id : Id des gesuchten Objekts
// param doc : document-Objekt, in dem (bei Netscape 4.x) begonnen werden soll, nach dem objekt/layer zu suchen
//
// return : das Objekt mit der Id id
//

function getElt(id, doc){
	if(cD.nav4){
		var currentLayer;
		var currentDoc;
		if(!doc){
			currentDoc = document;
		}
		else{
			currentDoc = doc;
		}
		currentLayer = currentDoc.layers[id];
		for(var i=0;!currentLayer && i < currentDoc.layers.length;i++){
			currentLayer = getElt(id, currentDoc.layers[i].document);
		}
		return currentLayer;
	}
	else if(cD.ie4up) {
		var elt = eval('document.all.' + id);
		return(elt);
	}
	else if(cD.nav6up || cD.opera){
		var elt = document.getElementById(id);
		return(elt);
	}
}



// --------------------
// Funktion zur Festlegung der Sichtbarkeit eines Objekts/Layers
//
// function setEltVisibility
// param elt : Objekt, dessen Sichtbarkeit geändert wird
// param value : Sichtbarkeit des Objekts -> 'visible','hidden'
//

function setEltVisibility(elt, value){
	if(cD.nav4) elt.visibility = value;
	else if(cD.ie4up || cD.nav6up || cD.opera) elt.style.visibility = value;
}

// --------------------
// Funktion zur Abfrage der Sichtbarkeit eines Objekts/Layers
//
// function getEltVisibility
// param elt : Objekt, dessen Zustand abgefragt wird
//
// return : Zustand der Sichtbarkeit des Objekts/Layers -> 'visible','hidden'
//

function getEltVisibility(elt){
	if(cD.nav4){
		var value = elt.visibility;
		if(value == "show") return "visible";
		else if(value == "hide") return "hidden";
		else return value;
	}
	else if(cD.ie4up || cD.nav6up || cD.opera) return elt.style.visibility;
}

// --------------------
// Funktion zur Abfrage der ABSOLUTEN vertikalen Position eines Objekts/Layers
// bei getEltTop gab es Probleme im IE
//
// function getEltPosTop
// param elt : Objekt, dessen vertikale Position abgefragt wird
//
// return : vertikale ABSOLUTE Position des Objekts/Layers ab Dokumentoberkante
//
 
function getEltPosTop(elt){
    if(cD.nav4) return (elt.pageY);
    else if(cD.ie4up){
        return (elt.offsetParent) ? elt.offsetTop+getEltPosTop(elt.offsetParent) : elt.offsetTop;
    }
    else if(cD.nav6up || cD.opera) return (elt.offsetTop);
}
 
// --------------------
// Funktion zur Abfrage der ABSOLUTEN horizontalen Position eines Objekts/Layers//
// bei getEltLeft gab es Probleme im IE
// function getEltPosLeft
// param elt : Objekt, dessen vertikale Position abgefragt wird
//
// return : horizontale ABSOLUTE Position des Objekts/Layers ab Dokumentoberkante
//
 
function getEltPosLeft(elt){
    if(cD.nav4) return (elt.pageX);
    else if(cD.ie4up){
        return (elt.offsetParent) ? elt.offsetLeft+getEltPosLeft(elt.offsetParent) : elt.offsetLeft;
    }
    else if(cD.nav6up || cD.opera) return (elt.offsetLeft);
}

// --------------------
// Funktion zur Festlegung der vertikalen Position eines Objekts/Layers
//
// function setEltTop
// param elt : Objekt, dessen vertikale Position festgelegt wird
// param y : vertikale Position des Objekts/Layers ab Dokumentoberkante
//

function setEltTop(elt, y){
	if(cD.nav4) elt.top=y;
	else if(cD.ie4up) elt.style.pixelTop=y;
	else if(cD.nav6up) elt.style.top=y+"px";
	else if(cD.opera) elt.style.top=y;
}

// --------------------
// Funktion zur Abfrage der vertikalen Position eines Objekts/Layers
//
// function getEltTop
// param elt : Objekt, dessen vertikale Position abgefragt wird
//
// return : vertikale Position des Objekts/Layers ab Dokumentoberkante
//

function getEltTop(elt){
	if(cD.nav4) return (elt.top);
	else if(cD.ie4up) return (elt.style.pixelTop);
	else if(cD.nav6up || cD.opera) return (parseInt(elt.style.top));
}


// --------------------
// Funktion zur Festlegung der horizontalen Position eines Objekts/Layers
//
// function setEltLeft
// param elt : Objekt, dessen horizontale Position festgelegt wird
// param x : horizontale Position des Objekts/Layers ab Dokumentoberkante
//

function setEltLeft(elt, x){
	if(cD.nav4) elt.left=x;
	else if(cD.ie4up) elt.style.pixelLeft=x;
	else if(cD.nav6up) elt.style.left=x + "px";
	else if(cD.opera) elt.style.left=x;
}


// --------------------
// Funktion zur Abfrage der horizontalen Position eines Objekts/Layers
//
// function getEltLeft
// param elt : Objekt, dessen vertikale Position abgefragt wird
//
// return : horizontale Position des Objekts/Layers ab Dokumentoberkante
//

function getEltLeft(elt){
	if(cD.nav4) return (elt.left);
	else if(cD.ie4up) return (elt.style.pixelLeft);
	else if(cD.nav6up || cD.opera) return (parsseInt(elt.style.left));
}


// --------------------
// Funktion zur Festlegung der absoluten Position eines Objekts/Layers
//
// function moveEltTo
// param elt : Objekt, dessen absolute Position festgelegt wird
// param x : horizontale Position des Objekts/Layers ab Dokumentoberkante
// param y : vertikale Position des Objekts/Layers ab Dokumentoberkante
//

function moveEltTo(elt, x, y){
	if(cD.nav4) elt.moveTo(x, y);
	else if(cD.ie4up){
		elt.style.pixelLeft = x;
		elt.style.pixelTop = y;
	}
	else if(cD.nav6up){
		elt.style.left = x + "px";
		elt.style.top = y + "px";
	}
	else if(cD.opera){
		elt.style.left = x;
		elt.style.top = y;
	}
}


// --------------------
// Funktion zur Festlegung der relativen Position eines Objekts/Layers
//
// function moveEltBy
// param elt : Objekt, dessen relative Position festgelegt wird
// param x : horizontale Bewegung des Objekts/Layers
// param y : vertikale Bewegung des Objekts/Layers
//

function moveEltBy(elt, x, y){
	if(cD.nav4) elt.moveBy(x, y);
	else if(cD.ie4up || cD.opera){
		elt.style.pixelLeft += x;
		elt.style.pixelTop  += y;
	}
	else if(cD.nav6up){
		moveEltTo(elt, parseInt(elt.style.left) + x, parseInt(elt.style.top) + y);
	}
}


// --------------------
// Funktion zur Abfrage der Breite eines Objekts/Layers
//
// function getEltWidth
// param elt : Objekt, dessen Breite abgefragt wird
//
// return : Breite des Objekts/Layers in Pixel
//

function getEltWidth(elt){
	if(cD.nav4) return(elt.width);
	else if(cD.ie4up || cD.opera) return(elt.style.pixelWidth);
	else if(cD.nav6up) return(elt.style.width);
}


// --------------------
// Funktion zur Abfrage der Höhe eines Objekts/Layers
//
// function getEltHeight
// param elt : Objekt, dessen Höhe abgefragt wird
//
// return : Höhe des Objekts/Layers in Pixel
//

function getEltHeight(elt){
	if(cD.nav4) return (elt.height);
	else if(cD.ie4up || cD.opera) return (elt.style.pixelHeight);
	else if(cD.nav6up) return (elt.style.height);
}


// --------------------
// Funktion zur Abfrage der Breite des Inhalts des Browserfensters
//
// function getClientWidth
//
// return : Breite des Browserfensters in Pixel
//

function getClientWidth(){
	if(cD.nav4) return(window.innerWidth);
	else if(cD.ie4up) return(document.body.clientWidth);
	else if(cD.nav6up || cD.opera) return(window.innerWidth);
}


// --------------------
// Funktion zur Abfrage der Höhe des Browserfensters
//
// function getClientHeight
//
// return : Breite des Browserfensters in Pixel
//

function getClientHeight(){
	if(cD.nav4) return(window.innerHeight);
	else if(cD.ie4up) return(document.body.clientHeight);
	else if(cD.nav6up || cD.opera) return(window.innerHeight);
}


// --------------------
// Funktion zum erzeugen eines Layers 
//
// function createLayer
// param name : id des Layers
// param html : der Inhalt des Layers
// param css  : die css-Klasse des Layers
//

function createLayer(name, html, css){
    with(document){
        write("<div id='"+name+"' class='"+css+"'>"+html+"</div>");
    }
} 

// --------------------
// Funktion zum neufuellen eines Layers 
//
// function writeIntoLayer
// param elt : Objekt, dessen Inhalt neu gefuellt wird
// param text : HTML-Text, der in den Layer geschrieben werden soll
//
// Netscape4 und Netscape6 sind darauf angewiesen, dass der Layer in den geschrieben wird
// absolut positioniert ist. Soll er dennoch an einer bestimmten Stelle des Dokumentes
// angezeigt werden, muss er in einen zweiten Layer eingebettet werden, der wiederum relativ
// positioniert ist. Fein!
// Beispiel:
// <style type="text/css">
// #hilf_mir {position:relative}
// #beschreib_mich {position:absolute}
// </style>
// <table><tr><td>
//     <div id="hilf_mir"><div id="beschreib_mich"></div></div>
// </td></tr></table>
//
// Opera 6.0 Pre interpretiert diese Funktion nicht! Der Opera-Spec ist nichts zu entnehmen, was Aufschluss
// darüber gibt ob das in Zukunft anders werden wird.

function writeIntoLayer(elt, text)
{
if(elt)
{
if(cD.nav4)
{
with(elt.document)
{
open();
write(text);
close();
}
}
if(cD.ie4up || cD.nav6up)
{
elt.innerHTML = text;
}
if (cD.opera){
return false;
}
}
}

// --------------------
// Funktion zur Festlegung des z-index eines Objekts/Layers
//
// function setEltZIndex
// param elt : Objekt, dessen z-index festgelegt wird
// param z : z-index
//

function setEltZIndex(elt, z){
	if(cD.nav4) elt.zIndex = z;
	else if(cD.ie4up) elt.style.zIndex = z;
	else if(cD.opera) elt.style.zIndex = z;
	else if(cD.nav6up) elt.style.zIndex = z;
}


// --------------------
// Funktion zur Abfrage des z-index eines Objekts/Layers
//
// function getEltZIndex
// param elt : Objekt, dessen z-index abgefragt wird
//
// return : der z-index des Objekts/Layers
//

function getEltZIndex(elt){
	if(cD.nav4) return(elt.zIndex);
	else if(cD.ie4up) return (elt.style.zIndex);
	else if(cD.nav6up) return (elt.style.zIndex);
	else if(cD.opera) return (elt.style.zIndex);
}


//Die folgenden Funktionen sind noch nicht Opera-Kompatibel

// --------------------
// Funktion zum Erzeugen eines EventListeners
//
// function addEltEventListener
// param elt : Element, das mit dem Handler belegt wird
// param event : Das Event (MOUSEUP | MOUSEDOWN | MOUSEMOVE)
// param func : Die Funktion, die aufgerufen werden soll
//

function addEltEventListener(myElt, myEvent, myFunc){
	if(cD.nav4 || cD.ie4up){
		var isThis = "";
		if(cD.nav4){
			isThis = "this.";
		}
		eval("myElt.on" + myEvent.toLowerCase() + "=" + isThis + myFunc);
	}
	else if(cD.nav6up){
		eval("myElt.addEventListener('" + myEvent.toLowerCase() + "', " + myFunc + ", false)");
	}
}


// --------------------
// Funktion zum Erzeugen eines EventListeners
//
// function addEltEventListener2
// param elt : Element, das mit dem Handler belegt wird
// param event : Das Event (MOUSEUP | MOUSEDOWN | MOUSEMOVE)
// param func : Die Funktion, die aufgerufen werden soll
//

function addEltEventListener2(myElt, myEvent, myFunc){
	if(cD.nav4 || cD.ie4up){
		if(cD.nav4){
			eval("myElt.captureEvents(Event." + myEvent + ")");
		}
		eval("myElt.on" + myEvent.toLowerCase() + "=" + myFunc);
	}
	else if(cD.nav6up){
		eval("myElt.addEventListener('" + myEvent.toLowerCase() + "', " + myFunc + ", false)");
	}
}

// --------------------
// Funktion zum Erzeugen eines EventListeners für das Fenster
//
// function addWinEventListener
// param event : Das Event (MOUSEUP | MOUSEDOWN | MOUSEMOVE)
// param func : Die Funktion, die aufgerufen werden soll
//

function addWinEventListener(myEvent, myFunc){
	if(cD.nav4 || cD.ie4up){
		if(cD.nav4){
			eval("captureEvents(Event." + myEvent + ")");
			eval("on" + myEvent.toLowerCase() + "=" + myFunc);
		}
		else{
			eval("document.on" + myEvent.toLowerCase() + "=" + myFunc);
		}
	}
	else if(cD.nav6up){
		eval("addEventListener('" + myEvent.toLowerCase() + "', " + myFunc + ", false)");
	}
}

//Jetzt sollte es auch der Opera wieder tun!

// --------------------
// Funktion zum Öffnen eines PopUp-Fensters
//
// function openPopup
// param url : URL, die im Fenster geöffnet werden soll
// param name : Name des Fensters
// param width : die Breite des Fensters
// param height : die Höhe des Fensters
// param scroll : Scrollbars an oder aus
//

function openPopup(url, name, width, height, scroll) {
    if(scroll == true){
        scroll = "1";
    }
    else{
        scroll = "0";
    }
    var description = "width=" + width + ",height=" + height + ",scrollbars=" + scroll + ",status=yes,menubar=no,locationbar=no,dependent=yes,resizable=yes,screenX=30,screenY=30";
	var w = open (url, name, description);
    w.focus();
	return w;
}

// --------------------
// Funktion zum Öffnen eines PopUp-Fensters mit DruckMenu
//
// function openPrint
// param url : URL, die im Fenster geöffnet werden soll
// param name : Name des Fensters
// param width : die Breite des Fensters
// param height : die Höhe des Fensters
// param scroll : Scrollbars an oder aus
//

function openPrint(url, name, width, height, scroll) {
    if(scroll == true){
        scroll = "1";
    }
    else{
        scroll = "0";
    }
    var description = "width=" + width + ",height=" + height + ",scrollbars=" + scroll + ",menubar=yes,locationbar=no,dependent=no,resizable=yes,screenX=30,screenY=30";
	var w = open (url, name, description);
    w.focus();
	return w;
}

// --------------------
// Funktion zum Öffnen eines zentrierten PopUp-Fensters
//
// function openWinCenter
// param url : URL, die im Fenster geöffnet werden soll
// param w : Breite des Fensters (width)
// param h : Höhe des Fensters (height)
// param winName : Name des Fensters
// param winDescr : Weitere Parameter, die an das neue Fenster übergeben werden sollen
//

function openWinCenter(url, w, h, winName, winDescr) {
	if(!winName){
		winName = '';
	}
	if(!winDescr){
		winDescr = '';
	}
	else{
		winDescr = ',' + winDescr;
	}
	var x = Math.round((screen.availWidth - w) / 2);
	var y = Math.round((screen.availHeight - h) / 2);
	winDescr = 'left=' + x + ',top=' + y + ',width=' + w + ',height=' + h + winDescr;
	var ww = open (url, winName, winDescr);
	return ww;
}


// --------------------
// Funktion zum neuladen des Fensters, wenn die fenstergroesse geaendert wird
// dies ist sinnvoll, wenn die groesse des fensters bei netscape veraendert wird, weil dann js-code und css zerschossen wird
//
// function reloadOnResize
//

function reloadOnResize() {
	addWinEventListener('RESIZE', 'reloadLocation');
}

// --------------------
// Funktion zum neuladen des fensters
//
// function reloadLocation
//

function reloadLocation() {
	location.reload();
}

// --------------------
// Funktion zum Öffnen einer seite aus einem Popup heraus
//
// function openFromPopup
// param url : URL, die im parent-Fenster geöffnet werden soll
// param closeMe : parameter, der bestimmt, ob popup weiter offen ist oder geschlossen wird (1 -> popup wird geschlossen, 0 -> popup bleibt im hintergrund bestehen)
//
 
function openFromPopup(url, closeIt) {
    if(opener){
        opener.location.href=url;
        opener.focus();
        if(closeIt){
            self.close();
        }
    }
}
                                                                                
// -------------------- 
// Funktion zum Herausfinden der aktuellen vertikalen Scrollposition
// 
// function getScrollTop 
// 
// return: die y-Scroll-Position 
//

function getScrollTop(){
    if(cD.nav4 || cD.nav6up || cD.opera){
        return window.pageYOffset;
    }
    if(cD.ie){
        return document.body.scrollTop;
    }
}

// -------------------- 
// Funktion zum Automatischen mitscrollen eines Elements
// 
// function scrollElement 
// 

function scrollElement() {
    var myElt = getElt(scrollElementName);
    var Dif = parseInt((getScrollTop()+topMenuPos-getEltTop(myElt))*fadeValue);
    if (isNaN(Dif)){
        Dif=0;
    }
    if(Math.abs(Dif) < 1 && (getScrollTop()+topMenuPos-getEltTop(myElt) != 0)){
        if(getScrollTop()+topMenuPos-getEltTop(myElt) > 0){
            Dif = 1;
        }
        else{
            Dif = -1;
        }
    }
    if(Math.abs(Dif) > 0){
        setEltTop(myElt, getEltTop(myElt) + Dif);
    }
}

// -------------------- 
// Funktion zum Initialisieren des Scrollelements
// 
// function loadScrollElement 
// 

function loadScrollElement() {
    if(cD.nav6up || cD.ie){
        setEltTop(getElt(scrollElementName), topMenuPos);
    }
    window.setInterval("scrollElement()",20)
}

// --------------------
// Dynamische Navigation
// start
//
 
// Variablendeklaration
// Flag ist gesetzt, wenn sich Mauszeiger über einem Menue befindet
var overFlag = 0;
var killAll = 0;
// Erster Teil des Bildnamens bei einem Rollover-Effekt
var imgName = '';
// Erster Teil des Bildnamens bei einem Rollover-Effekt
var imgMapName = '';
// Name des aktuell sichtbar gemachten Bildes (Rollover)
var imgNumber = -1;
// Array mit Bildern, die bei einem Rollover sichtbar werden sollen
var imgOnArr = new Array();
// Array mit Bildern, die bei einem Rollout sichtbar werden sollen
var imgOffArr = new Array();
// Array mit Bildern, die bei einem Rollover sichtbar werden sollen
var imgMapOnArr = new Array();
// Array mit Bildern, die bei einem Rollout sichtbar werden sollen
var imgMapOff;
// Anzahl Root Menuepunkte
var rootCount;
 
 
// --------------------
// Funktion für imgRollover
//
// function imgOver
// param n : Restname des Bildes (Zahl)
//
 
function itemImgOver(n){
    if(itemImgName.length > 0){
        var myImg = getImg(itemImgName + n);
        if(myImg){
            myImg.src = itemImgOn.src;
        }
    }
}
 
// --------------------
// Funktion für imgRollover
//
// function imgOut
// param n : Restname des Bildes (Zahl)
//
 
function itemImgOut(n){
    if(itemImgName.length > 0){
        var myImg = getImg(itemImgName + n);
        if(myImg){
            myImg.src = itemImgOff.src;
        }
    }
}

// --------------------
// Funktion für imgRollover
//
// function imgOver
// param n : Restname des Bildes (Zahl)
//

function imgOver(n){
    if(imgName.length > 0){
        var myImg = getImg(imgName + n);
        if(myImg){
            myImg.src = imgOnArr[n].src;
        }
    }
}


// --------------------
// Funktion für imgRollover
//
// function imgOut
// param n : Restname des Bildes (Zahl)
//

function imgOut(n){
    if(imgName.length > 0){
        var myImg = getImg(imgName + n);
        if(myImg){
            myImg.src = imgOffArr[n].src;
        }
    }
}


// --------------------
// Funktion für imgRollover
//
// function imgOver
// param n : Restname des Bildes (Zahl)
//

function imgMapOver(n){
    if(imgMapName.length > 0){
        var myImg = getImg(imgMapName);
        if(myImg){
            myImg.src = imgMapOnArr[n].src;
        }
    }
}


// --------------------
// Funktion für imgRollover
//
// function imgOver
// param n : Restname des Bildes (Zahl)
//

function imgOver(n){
    if(imgName.length > 0){
        var myImg = getImg(imgName + n);
        if(myImg){
            myImg.src = imgOnArr[n].src;
        }
    }
}


// --------------------
// Funktion für imgRollover
//
// function imgOut
// param n : Restname des Bildes (Zahl)
//

function imgOut(n){
    if(imgName.length > 0){
        var myImg = getImg(imgName + n);
        if(myImg){
            myImg.src = imgOffArr[n].src;
        }
    }
}


// --------------------
// Funktion für imgRollover
//
// function imgOver
// param n : Restname des Bildes (Zahl)
//

function imgMapOver(n){
    if(imgMapName.length > 0){
        var myImg = getImg(imgMapName);
        if(myImg){
            myImg.src = imgMapOnArr[n].src;
        }
    }
}

                                                  
// --------------------
// Funktion für imgRollover
//
// function imgOut
// param n : Restname des Bildes (Zahl)
//

function imgMapOut(){
    if(imgMapName.length > 0){
        var myImg = getImg(imgMapName);
        if(myImg){
            myImg.src = imgMapOff.src;
        }
    }
}

// --------------------
// Funktion zum Finden eines Bildes in einem Dokument
//
// function getImg
// param n : Name des Bildes
// param doc : document-Objekt, in dem (bei Netscape 4.x) begonnen werden soll, nach dem Bild zu suchen
//

function getImg(n, doc){
    if(!cD.nav4){
        return document.images[n];
    }
    else{
        var currentImage;
        var currentDoc;
        if(!doc){
            currentDoc = document;
        }
        else{
            currentDoc = doc;
        }
        currentImage = currentDoc.images[n];
        for(var i=0;!currentImage && i < currentDoc.layers.length;i++){
            currentImage = getImg(n, currentDoc.layers[i].document);
        }
        return currentImage;
    }
}



// --------------------
// Funktion zum Zurücksetzen der Bilder in den Ursprungszustand
//
// function setImgOriginal
//

function setImgOriginal(){
    if(imgName.length > 0){
        for(var i=0;i<rootCount;i++){
            var myImg = getImg(imgName + i);
            if(myImg){
                myImg.src = imgOffArr[i].src;
            }
        }
    }
}


