/*
layers.js -> 010101->031006 -> vb
für die dhtml-layers wie beispielsweise & vor allem die klappen(navigation)

$Log: layers.js,v $
Revision 1.4  2003/10/23 18:21:09  srm
jetzt tuts auch im mozilla (der clippt nicht & deswegen hat er ein mit
jeder klappe wachsendes scrolling & deswegen eine falsche positionierung),
dafür isses im ie ein bisserl hässlicher, weil mozilla (der is ja echt
noch beta, oder?) ein <img src="../x.gif" width="1" height="3"><br> mit
abständen oben und unten versieht. wie dem auch sei: tut für ie, op, mz

Revision 1.3  2003/10/07 12:20:02  srm
tut jetzt auch im nächsten verblödeten browser-versuch von netscape

Revision 1.2  2003/10/06 15:09:55  srm
tut im mozilla nicht
*/


/* debug */
//window.onscroll = alertOnce;
//window.onresize = alertOnce;
function DOMBaum( objStr ) {
  obj = eval( objStr );
  tempStr = objStr + ": " + eval( obj ) + "\n\n";
  for (i in obj) {
    tempEval = eval( objStr + "." + i );
    if (typeof( tempEval ) == "function") {
      tempEval = "[highly complex function]";
    }
    tempStr += i + "\t" + tempEval + "\n";
  }
  return tempStr;
}  // function DOMBaum
var alertedOnce = false;
function alertOnce() {
  if (!alertedOnce) alert( "Fritz!" );
  alertedOnce = true;
}
function debugBrowser() {
  alert( DOMBaum( "browser" ) );
  //alert( klappenDiv );
  alert( klappenTimer );
  alert(
    "schrottBrowser: " + schrottBrowser +
    "\nalterBrowser: " + alterBrowser +
    "\nsuperBrowser: " + superBrowser +
    "\nneuerBrowser: " + neuerBrowser +
    "\nkeinBrowser: " + keinBrowser
  );
}
/* /debug */

function browserTest() {
  /* für erweiterungen & anregungen: http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html */
  this.co = 0;
  var klient = navigator.userAgent.toLowerCase();
  var version = parseInt( navigator.appVersion );
  var ver = parseFloat( navigator.appVersion );
  this.ie = 0;
  if ((klient.indexOf( "msie" ) != -1) && (klient.indexOf( "opera" ) == -1)) {
    this.ie = 1;
    if (document.all) this.ie = 4;
    if (document.getElementById) this.ie = 5; }
  this.ns = 0;
  if ((klient.indexOf( "mozilla" ) != -1) && (klient.indexOf( "spoofer" ) == -1) && (klient.indexOf( "compatible" ) == -1) && (klient.indexOf( "opera" ) == -1) && (klient.indexOf( "webtv" ) == -1) && (klient.indexOf( "hotjava" ) == -1)) {
    this.ns = 1;
    if (document.layers) this.ns = 4;
    if (document.getElementById) this.ns = 6; }
  this.op = 0;
  if (klient.indexOf( "opera" ) != -1) {
    this.op = 1;
    if (document.getElementById) this.op = 5; }
  if (klient.indexOf( "aol" ) != -1) {
    this.aol = 1; }
}
/* diese var browser sollte die da unten ersetzen: */
var browser = new browserTest();

/* bist du ein netscape der 4ten generation? */
schrottBrowser = document.layers ? true:false;
/* bist du ein microsoftprodukt der 4ten generation? */
alterBrowser = (document.all && !document.getElementById) ? true:false;
/* bist du ein netscape der 6ten oder ein microsoftprodukt der 5ten generation? */
superBrowser = document.getElementById ? true:false;
/* bist du ein weiterer netscape-versuch? */
neuerBrowser = (!document.all && document.getElementById) ? true:false;
/* bist du ein netscape der 3ten oder ein anderer unfaehiger (opera)? */
keinBrowser = !(schrottBrowser || alterBrowser || superBrowser);

function divStyle( divID ) {
  if (document.layers) {
    return document.layers[ divID ];
  }
  if (document.all) {
    return document.all[ divID ].style;
  }
  if (document.getElementById( divID )) {
    return document.getElementById( divID ).style;
	}
}

function divShow() {
  /* erster parameter ist deine div (dh, der name im <div id="NAME">) */
  if (divShow.arguments.length >= 1) {
    divID = divShow.arguments[ 0 ];
  }
  
  sichtbarkeit = (document.layers) ? "show" : "visible";
  if (divShow.arguments.length >= 2) {
    /* mehr als ein parameter da: dann willst du das unsichbar machen */
    sichtbarkeit = (document.layers) ? "hide" : "hidden";
  }
  divStyle( divID ).visibility = sichtbarkeit;
}

function divShowVerlauf() {
  var relDiv;

  /* erster parameter ist deine div (dh, der name im <div id="NAME">) */
  if (divShowVerlauf.arguments.length >= 1) {
    divID = divShowVerlauf.arguments[ 0 ];
  }

  /* mehr als ein parameter da: dann willst du das unsichbar machen */  
  sichtbarkeit = (document.layers) ? "show" : "visible";
  
  /* zweiter parameter ist die umgebende div, irgendwie muss das in den allgemeinen fall eingebaut werden... */
  if (divShowVerlauf.arguments.length >= 1) {
    relID = divShowVerlauf.arguments[ 1 ];
    
    if ((relID == "tagebuchRelDiv") && document.layers) {
      document.layers[relID].document.layers[divID].visibility = sichtbarkeit;  
    } else {
      divStyle( divID ).visibility = sichtbarkeit;
    }
  } 
}

function divHideVerlauf() {
  var relDiv;

  /* erster parameter ist deine div (dh, der name im <div id="NAME">) */
  if (divHideVerlauf.arguments.length >= 1) {
    divID = divHideVerlauf.arguments[ 0 ];
  }

  /* mehr als ein parameter da: dann willst du das unsichbar machen */  
  sichtbarkeit = (document.layers) ? "hide" : "hidden";
  
  /* zweiter parameter ist die umgebende div, irgendwie muss das in den allgemeinen fall eingebaut werden... */
  if (divHideVerlauf.arguments.length >= 1) {
    relID = divHideVerlauf.arguments[ 1 ];
    
    if ((relID == "tagebuchRelDiv") && document.layers) {
      document.layers[relID].document.layers[divID].visibility = sichtbarkeit;  
    } else {
      divStyle( divID ).visibility = sichtbarkeit;
    }
  } 
}


/* allgemeines */
var klappenDiv;
var klappenTimer;
var positioniereTimer;
var homeTimer = 0;
var resizeTimer = 0;

/* legacy... */
function showDiv( id, layer ) {
  divShow( id, layer );
}
function hideDiv( id, layer ) {
  //alert( "vb: 031023: hideDiv shouldnt be called!" );
  divShow( id, false );
}
function sorryForDhtml() {
  //alert( "sorryForDhtml..." );
  if (browser.ns == 4) {
    location.reload();
  }
  if (browser.ns >= 4) {
    if (window.innerWidth < 750) { window.resizeTo( 805, 600 ); }
  }
  if (browser.ie >= 4) {
    if (document.all[ "alles" ].offsetWidth < 750) {
      clearInterval( resizeTimer );
      resizeTimer = window.setTimeout( "window.resizeTo( 805, 600 )", 600 );
    }
  }
}
/* /allgemeines */

/* klappen */
klappe_button_u = new Image();
klappe_button_o = new Image();
klappe_button_u.src = "http://www.woodart-online.de/usg/images/klappe_button_u.gif";
klappe_button_o.src = "http://www.woodart-online.de/usg/images/klappe_button_o.gif";

function schrittchen( bereichsID, richtung ) {
  tempStr = "";
  if (richtung == "raus") {
    klappenPositionY[ bereichsID ] = klappenPositionY[ bereichsID ] - schrittWeite;
    klappenHoehe[ bereichsID ] = klappenHoehe[ bereichsID ] + schrittWeite;
    /* vb: tut nicht:
    if (browser.ie >= 4) {
      if (klappenPositionY[ bereichsID ] < (document.all[ "alles" ].offsetHeight - klappenHoeheMax[ bereichsID ])) {
        klappenPositionY[ bereichsID ] = (document.all[ "alles" ].offsetHeight - klappenHoeheMax[ bereichsID ]);
      }
    }
    */
  }
  if (richtung == "rein") {
    klappenPositionY[ bereichsID ] = klappenPositionY[ bereichsID ] + schrittWeite;
    klappenHoehe[ bereichsID ] = klappenHoehe[ bereichsID ] - schrittWeite;
  }
  klappenDiv[ bereichsID ].top = klappenPositionY[ bereichsID ] + "px";
  //klappenDiv[ bereichsID ].height = klappenHoehe[ bereichsID ] + "px";
  klappenDiv[ bereichsID ].height = klappenHoehe[ bereichsID ];
  if (browser.ns == 4) {
    klappenDiv[ bereichsID ].clip.bottom = klappenHoehe[ bereichsID ];
    tempStr += "; " + klappenDiv[ bereichsID ].clip.bottom;
  } else {
    klappenDiv[ bereichsID ].clip = "rect(0px 192px " + klappenHoehe[ bereichsID ] + "px 0px)";
    tempStr += "; " + klappenDiv[ bereichsID ].clip;
  }
  tempStr += "; " + navigator.userAgent;
  if (((richtung == "raus") && (klappenHoehe[ bereichsID ] < klappenHoeheMax[ bereichsID ])) ||
    ((richtung == "rein") && (klappenHoehe[ bereichsID ] >= (klappenHoeheMin[ bereichsID ] + schrittWeite)))) {
    klappenTimer[ bereichsID ] = window.setTimeout( "schrittchen( " + bereichsID + ", \"" + richtung + "\" )", 1 );
  }
  //window.status = tempStr;
  //document.title = tempStr;
}  // function schrittchen

function schiesse( bereich, richtung ) {
  /* der timer, der an die klappen geht, muss warten */
  if (document.layers) {
    clearInterval( positioniereTimer );
  }
  bereichsID = eval( bereich + "ID" );
  klappeAktiv[ bereichsID ] = (richtung == "raus");
  if (richtung == "raus" ) {
    klappenHoehe[ bereichsID ] = klappenHoeheMax[ bereichsID ] - schrittWeite;
    /* icon umdrehen & zack: y-koordinate gesetzt */
    if (browser.ns == 4) {
      klappenPositionY[ bereichsID ] = window.innerHeight - klappenHoehe[ bereichsID ] + window.pageYOffset;
    } else {
      if (browser.ie >= 4) {
        klappenPositionY[ bereichsID ] = document.all[ "alles" ].offsetHeight - klappenHoehe[ bereichsID ] + document.body.scrollTop - 4;
      	document[ "button" + bereich ].src = klappe_button_o.src;
      } else {
        klappenPositionY[ bereichsID ] = Math.round( window.innerHeight - klappenHoehe[ bereichsID ] + window.scrollY );
      	document.images[ "button" + bereich ].src = klappe_button_o.src;
      }
    }  // if ns
    schrittchen( bereichsID, richtung );
  } else {
    alert( "Reinschie\ßen sollte eigentlich nicht vorkommen." );
  }  // if raus
  /* der timer, der an die klappen geht, darf starten */
  positioniereTimer = setTimeout( "positioniere()", 500 );
}  // function schiesse

var _kalenderflag; // jog
function toggle( bereich ) {
  /* der timer, der an die klappen geht, muss warten */
  if (document.layers) {
    clearInterval( positioniereTimer );
  }
  bereichsID = eval( bereich + "ID" );
  if (klappeAktiv[ bereichsID ]) {
    richtung = "rein";
    buttonrichtung = "u";
    if (bereich == 'ylt') _kalenderflag = "rein";
  } else {
    richtung = "raus";
    buttonrichtung = "o";
    if (bereich == 'ylt') _kalenderflag = "raus";    
  }
  /* icon umdrehen */
  if (browser.ns == 4) {
    document.layers[ "menu" + bereich ].document[ "button" + bereich ].src = eval( "klappe_button_" + buttonrichtung + ".src" );
  }
  if (browser.ie == 4) {
  	document[ "button" + bereich ].src = eval( "klappe_button_" + buttonrichtung + ".src" );
  }
  if ((browser.ns > 4) || (browser.ie >= 5) || (browser.op >= 4)) {
  	document.images[ "button" + bereich ].src = eval( "klappe_button_" + buttonrichtung + ".src" );
  }
  klappeAktiv[ bereichsID ] = !klappeAktiv[ bereichsID ];
  schrittchen( bereichsID, richtung );
  /* der timer, der an die klappen geht, darf starten */
  positioniereTimer = setTimeout( "positioniere()", 2000 );
}
function mouseOverAutoToggle( bereich ) {
  bereichsID = eval( bereich + "ID" );
  if (! klappeAktiv[ bereichsID ]) {
    toggle( bereich)
  }
}
function positioniere() {
  /* klappenkoordinaten errechnen */
  //window.status = "positioniere...";
  tempStr = "";
  scrollYClipSafe = window.scrollY;
  for (i = 0; i < 4; i++) {
    //clearInterval( klappenTimer[ i ] );
    if (klappeAktiv[ i ]) {
      klappenHoehe[ i ] = klappenHoeheMax[ i ];
    } else {
      klappenHoehe[ i ] = klappenHoeheMin[ i ];
    }
    if ((browser.ns == 4) || (browser.op >= 5))
      klappenPositionY[ i ] = window.innerHeight - klappenHoeheMin[ i ] + window.pageYOffset;
    else
      if (browser.ie >= 4)
        klappenPositionY[ i ] = document.all[ "alles" ].offsetHeight - klappenHoeheMin[ i ] + document.body.scrollTop - 4;
      else
        if ((browser.ns > 4)) {
          //alert( i + "\n" + window.innerHeight + "\n" + window.scrollY + "\n" + scrollYClipSafe );
          //klappenPositionY[ i ] = Math.round( window.innerHeight + window.scrollY - 26 );
          klappenPositionY[ i ] = Math.round( window.innerHeight + scrollYClipSafe - 26 );
        } else alertOnce( "vb: 031023: what shall i do with a drunken browser?" );
    if (klappeAktiv[ i ]) {
      klappenPositionY[ i ] = klappenPositionY[ i ] - klappenHoeheMax[ i ] + klappenHoeheMin[ i ];
    }
    /* klappenkoordinaten setzen */
    //klappenDiv[ i ].top = klappenPositionY[ i ];
    klappenDiv[ i ].top = klappenPositionY[ i ] + "px";
    tempStr = tempStr + i + ": " + klappenPositionX[ i ] + "x" + klappenPositionY[ i ] + "=>" + klappenDiv[ i ].top + ",  ";
    klappenDiv[ i ].height = klappenHoehe[ i ];
    if (browser.ns == 4)
      klappenDiv[ i ].clip.bottom = klappenHoehe[ i ];
    else
      klappenDiv[ i ].clip = "rect(0,192," + klappenHoehe[ i ] + ",0)";
  }
  //window.status = tempStr;
  /* vb: 031023: fixme: onScroll & onResize, überall wos geht, aber alle anderen mit timer: besser als nix!
  if (browser.ns >= 4) {
    positioniereTimer = setTimeout( "positioniere()", 300 );
  }
  */
}
function initKlappen() {
  //alert( "initKlappen..." );
  if (keinBrowser) {
    alert( "Sehr geehrter Besucher,\n\nleider haben wir unsere Site nicht f\ür " + navigator.userAgent + " ausgelegt.\nEs kommt nicht nur wahrscheinlich zu Anzeigefehlern.\n\nWir bitten um Ihr Verst\ändnis.\nIhr USG Team!" );
  } else {
    agentID = 0;
    yltID = 1;
    communityID = 2;
    srmID = 3;
    /* vb: 031023: heutzutage gäbs da ein array über eine klappenClass: */
    klappeAktiv = new Array( false, false, false, false );
    klappenPositionX = new Array( 10, 200, 390, 580 );
    //alert( klappenPositionX );
    klappenPositionY = new Array( 500, 500, 500, 500 );
    klappenHoehe = new Array( 26, 26, 26, 26 );
    klappenHoeheMin = new Array( 26, 26, 26, 26 );
    klappenHoeheMax = new Array( 258, 182, 182, 182 );
    klappenTimer = new Array( 0, 0, 0, 0 );
    schrittWeite = 6;
		klappenName = new Array( "menuagent", "menuylt", "menucommunity", "menusrm" );
		klappenDiv = new Array( divStyle( "menuagent" ), divStyle( "menuylt" ), divStyle( "menucommunity" ), divStyle( "menusrm" ) );
  }
  //alert( "initiale positionierung..." );
  positioniere();
  //alert( "initial positioniert..." );
  for (i = 0; i < initKlappen.arguments.length; i++) {
    schiesse( initKlappen.arguments[ i ], "raus" );
  }
  for (anotheri = 0; anotheri < 4; anotheri++) {
    divShow( klappenName[ anotheri ] );
  }
  //debugBrowser();
}
/* /klappen */

