
// Interne Variablen

var debug=false;       //debugFehlermeldungen ausgeben?
var operaWarning=false;//Warnung für Opera ausgeben

var delay=20;   //Zeit zwischen Animationsschritten (z.B. moveTo)
var enableToolTips=false; //Tooltips ermöglichen mit toolTip(text) ->benötigt layer 'tooltip' !!!
   //wie soll die Tabelle aussehen?

var ie4=ie5=ie6=ns4=ns6=opera=mac=false;
var isHelp=false; //ob gerade Tooltip aktiv
var helpo;
var aList;
var followObj=false;
var followObjLyr='';
var followObjXo=followObjYo=0;
var maxZIndex=5
var sdox=sdoy=0;
// Interne Funktionen

function initDevices() {

  o_navi1=new MObject('navi1','o_navi1'); //neue Objekte anlegen

  o_navi1.changeStat=function(status) {
  var txt='<table border="0" cellspacing="1" cellpadding="1"  width="100%" class="menu">';
      var k = 0;
      for (i in nav){
      if (i == status){k = 0;}else{k = i;}
      txt+='<tr><td class="e0"><a class="e0"';
      txt+='href="';
      if (nav[i][1]){
      txt+='javascript:o_navi1.changeStat('+k+')">';
      }
      else{
      txt+=base_url;
      txt+=nav[i][0].split('|')[1]+'">';
      }
      txt+=nav[i][0].split('|')[0];
      txt+='</a></td></tr>';
      if (i == status){
        for (j in nav[i]){
           if (j > 0){
          txt+='<tr><td  class="e1"><a class="e1" href="'+base_url+nav[i][j].split('|')[1]+'&p_menu_status='+i+'">'
          txt+=nav[i][j].split('|')[0];
          txt+='</a></td></tr>';
          }
          }
        }
      }
      txt+='</table>';
      this.write(txt);
      }
      }

//Moveable Object
//= sehr komfortabel verwaltbarer Layer
function MObject(name,objn) {
  //interne änderbare Variablen definieren
  this.scrolling=false;   //soll bei setPosition Bildschirmscrollen einberechnet werden?
  this.info=new Array;    //für zusätzliche Infos
  this.moveable=false;    //verschiebbar
  this.updzi=true;        //zIndex beim verschieben erhöhen

  //interne Variablen definieren, welche nicht von ausen verändert werden sollten
  this.xc=this.yc=0;      //X,Y Koordinaten
  this.objn=objn;         //Name des Objects
  this.active=false;      //bin ich aktiv
  this.name=name;         //Name des Layers
  this.zIndex=1;          //zIndex des Objektes
  this.mma=false;         //activity Status für mouseMove
  this.width=this.height=0 //höhe und breite des Objektes


  if (!existLayer(name))
  {alert('SDO.MObject('+objn+'): Layer \''+name+'\' existiert nicht.')}
  else {if (!ns4){this.content=layerRead(name);this.write(this.content);}}
}


//internal object functions

MObject.prototype.moveTo=function(x1,y1,s){moveit(this.name,this.xc,this.yc,x1,y1,s,0)}
MObject.prototype.saveLayer=function(){this.content=layerRead(this.name)}
MObject.prototype.restoreLayer=function(){layerWrite(this.name,this.content)}
MObject.prototype.setZIndex=function(num){this.zIndex=num;setStylee(this.name,'zIndex',num)}
MObject.prototype.setStyle=function(style,val){setStylee(this.name,style,val)}
MObject.prototype.isActive=function(){return this.active}
MObject.prototype.add=function(txt){this.write(this.content+txt)}
MObject.prototype.write=function(txt){this.content=txt;layerWrite(this.name,'<span onMouseOver="'+this.objn+'.active=true" onMouseOut="'+this.objn+'.active=false" onMouseDown="'+this.objn+'.startFollow()" onMouseUp="'+this.objn+'.stopFollow()">'+txt+'</span>');}
MObject.prototype.activeStart=function(){}
MObject.prototype.activeEnd=function(){}
MObject.prototype.show=function(){this.setStyle('visibility','visible');}
MObject.prototype.hide=function(){this.setStyle('visibility','hidden');}

MObject.prototype.resizeTo=function(w,h){
  if(!isNaN(w)){this.width=w;this.setStyle('width',w)}
  if(!isNaN(h)){this.height=h;this.setStyle('height',h)}
}

MObject.prototype.setPosition=function(x,y) {
  xOff=getOffsetX();yOff=getOffsetY();
  if (this.scrolling == true) {layerPosition(this.name,x+xOff,y+yOff);if(!isNaN(x))this.xc=x+xOff;if(!isNaN(y))this.yc=y+yOff;}
  else {layerPosition(this.name,x,y);if(!isNaN(x))this.xc=x;if(!isNaN(y))this.yc=y}
}

MObject.prototype.startFollow=function() {
  if (this.moveable) {
    if(debug)status='started moving window.'
    followObjLyr=this.name;
    if (this.updzi) {this.setZIndex(maxZIndex);maxZIndex++}
    followObjXo=sdox-this.xc;followObjYo=sdoy-this.yc;followObj=true;
  }
}

MObject.prototype.stopFollow=function() {
  if(debug)status='stopped moving window.'
  if (followObj) {this.xc=newX;this.yc=newY;followObj=false}
}


// Object Ende
//////////////


//Listener Object
function Container() {
  this.list=new Array();

}

Container.prototype.remove=function(remString){
  this.removePersonal(remString);
  myLength=this.list.length;var snum=null;
  for (i=0;i<myLength;i++){if(this.list[i]==remString) {snum=i;break}}
  if (snum) {this.list[snum]=this.list[myLength-1];this.list.length=this.list.length-1;}
}
Container.prototype.add=function(s){
  myLength=this.list.length;var snum=null;
  for (i=0;i<myLength;i++){if(this.list[i]==s) {snum=i;break}}
  if (!snum) {this.list[this.list.length]=s}
  this.addPersonal(s)
}
Container.prototype.addPersonal=function(s){}
Container.prototype.removePersonal=function(s){}

// Object Ende
//////////////

// jaja ist vom Macromedia Dreamweaver geklaut.
function MM_reloadPage(init) {  //lädt das Fenster neu, wenn Netscape 4 maximiert/ minimiert wird
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW||innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);

function screenWidth() {
  if (opera||ns4||ns6) {return window.innerWidth}
  else if (ie4||ie5||ie6) {return document.body.offsetWidth}
}

function screenHeight() {
  if (opera||ns4||ns6) {return window.innerHeight}
  else if (ie4||ie5||ie6) {return document.body.offsetHeight}
}

function getOffsetX() {
  if (ns4||ns6) {return window.pageXOffset}
  else if (ie4||ie5||ie6) {return document.body.scrollLeft}
}

function getOffsetY() {
  if (ns4||ns6) {return window.pageYOffset}
  else if (ie4||ie5||ie6) {return document.body.scrollTop}
}

function moveit(was,x1,y1,x2,y2,s,w){
  if(w) {setTimeout('moveit("'+was+'",'+x1+','+y1+','+x2+','+y2+','+s+','+(w-1)+')', delay)}
  else {
    layerPosition(was,x1,y1);x1+=(x2-x1)/s;y1+=(y2-y1)/s;
    if(s>0) {setTimeout('moveit("'+was+'",'+x1+','+y1+','+x2+','+y2+','+(s-1)+')', delay)}
  }
}

function existLayer(layer) {
  if (ns4) {return (document.layers[layer])? true:false}
  else if (ie4||ie5) {return (document.all[layer])? true:false}
  else if (ie6||ns6||opera) {return (document.getElementById(layer))? true:false}
}

function setStylee(layer,style,val) {
  if (ie4||ie5) {
    if (document.all[layer]) {
      eval('document.all.'+layer+'.style.setAttribute("'+style+'","'+val+'","false");');
    } else {if (debug){alert('SDO.setStylee: Layer \''+layer+'\' existiert nicht.')}}
  } else if (ie6||ns6||opera) {
    if (document.getElementById(layer)) {
      eval('document.getElementById(\"'+layer+'\").style.'+style+'="'+val+'"');
    } else {if (debug){alert('SDO.setStylee: Layer \''+layer+'\' existiert nicht.')}}
  }
}


function layerPosition(layer,x,y) {
  x=parseFloat(x);y=parseFloat(y);
  if (ns4) {
    if (! document.layers[layer]) {if (debug){alert('SDO.layerPosition: Layer \''+layer+'\' existiert nicht.')}}
    if (!isNaN(x))document.layers[layer].left=x;
    if (!isNaN(y))document.layers[layer].top=y;
  }  else if (ie4||ie5||ie6||ns6||opera) {
    if (!isNaN(x))setStylee(layer,'left',x);
    if (!isNaN(y))setStylee(layer,'top',y);
  }
}

function layerWrite(layer,txt) {
  if (ns4) {var lyr=document.layers[layer].document;lyr.open();lyr.write(txt);lyr.close();}
  else if (ie4||ie5) {document.all[layer].innerHTML=txt;}
  else if (ns6||ie6) {document.getElementById(layer).innerHTML=txt;}
}

function layerRead(layer) {
  if (ie4||ie5) {return document.all[layer].innerHTML}
  else if (ns6||ie6) {return document.getElementById(layer).innerHTML}
}

//Mausfunktionen erfassen
function mouseMove(e) {
  var xOff=getOffsetX();var yOff=getOffsetY();
  if (ns4||ns6) {sdox=e.pageX; sdoy=e.pageY;}
  if (ie4) {sdox=event.x; sdoy=event.y;}
  if (ie5||ie6) {sdox=event.x+xOff; sdoy=event.y+yOff;}
  //sdox und sdoy enthalten nun absolute Positionen im Dokument
  if (isHelp && enableToolTips) {helpo.setPosition(sdox-4,sdoy+20)}
  if (debug)status=(sdox+','+sdoy)
  for (i=0;i<aList.list.length;i++) {
    as=eval(aList.list[i]+'.isActive()');
    if (as != eval(aList.list[i]+'.mma')) {
      if (as) {eval(aList.list[i]+'.mma=true;');eval(aList.list[i]+'.activeStart()')}
      else {eval(aList.list[i]+'.mma=false;');eval(aList.list[i]+'.activeEnd()')}
    }
  }
  if (followObj) {
    newX=sdox-followObjXo;
    newY=sdoy-followObjYo;
    layerPosition(followObjLyr,newX,newY);
  }
}

// wenn text == '' wird toolTip gelöscht
// ansonsten wird er angezeigt
function toolTip(text) {
  if (text != '') {
    var txt='';
    txt+='<table border=0 cellspacing=0 cellpadding=0 bgcolor=#FDD593 style="background-color:#FDD593;filter:alpha(opacity=70);-moz-opacity:0.7;border:1px solid #000099;">';
    txt+='<tr valign=top>';
    txt+='<td><span style="font-family:Arial,Verdana;font-size:10px;color:#000000">&nbsp;'+text+'&nbsp;</span></td>';
    txt+='</tr></table>';
    helpo.write(txt);
    isHelp=true;
  } else {
    helpo.write('');
    isHelp=false;
  }
}

function checkBrowser() {
  // Browsercheck
  ns4=(document.layers)? true:false;
  ns6=((navigator.userAgent.indexOf('Mozilla')>=0) && (navigator.appVersion.substring(0,1) >= "5"))? true:false;
  ie4=(document.all)? true:false;
  ie5=(ie4)? ((navigator.userAgent.indexOf('MSIE 5')>0)? true:false):false;
  ie6=(ie4)? ((navigator.userAgent.indexOf('MSIE 6')>0)? true:false):false;
  if (ie6 == true) {ie4=false;}
  opera=(navigator.userAgent.indexOf('Opera')>=0)? true:false;
  mac = navigator.platform == "Mac"
}

//SDO für nicht browserkritsche Funktionen initieren
function initSDO_soft() {
  checkBrowser();
}

//SDO mit dynamischen Elementen initieren
function initSDO(menuStat) {
  checkBrowser();
  if (opera) {
    if(operaWarning) alert('Hallo Operabenutzer,\ndiese Webseite benutzt die SDO-Bibliothek für dynamische Webseiten. Falls es zu Problemen mit der Anzeige kommt oder Elemente nicht erscheinen, benutzen Sie bitte einen Netscape oder Internet-Explorer ab Version 4.\n\nDanke');
  } else if (! ((ns4)||(ns6)||(ie4)||(ie5)||(ie6))) { //wenn keiner der neueren Browser...
    alert('Sie verwenden leider einen älteren Browser.\nDamit können diese Seiten leider nicht korrekt dargestellt werden.\n\nWenn möglich verwenden Sie einen Netscape oder Internet-Explorer ab Version 4.\n\nDanke');
  }
  //Mausbewegungen erfassen
  document.onmousemove=mouseMove;
  if (ns4) document.captureEvents(Event.MOUSEMOVE);

  //Tooltip und activityList erzeugen
  aList=new Container();

 if (enableToolTips) {helpo=new MObject('tooltip','helpo');}
 
 initDevices();
 o_navi1.changeStat('+menuStat+');
 
 //setTimeout('initDevices()',5);
 setTimeout('o_navi1.changeStat('+menuStat+')',10);
}
