// Globale Variabeln
var init = false;
var DHTML = false;
var DOM = false;
var IE = false;
var NC = false;
var OP = false;
var mask = null;     // Zugriff auf Transparenz-Maske
var hr = null;       // HttpRequest
var nAlsCls = 0;     // schliessender Bereich
var nAlsFix = 0;     // fixierter Bereich; darf nicht geöffnet/geschlossen werden
var nInf = 0;        // geöffneter ToolTip

// Initialisierung
function initJS(pup)
{
   // DHTML initialisieren
   if (window.opera) {OP = true;}
   if (document.getElementById) {DHTML = true; DOM = true;}
   if (document.all && !OP) {DHTML = true; IE = true;}
   if (window.netscape && window.screen && !DOM && !OP) {DHTML = true; NC = true;}

   // Tranparenz-Maske initialisieren
   if ((mask = getE('mask')))
   {
      // Maske für MAC IE5 mit Raster darstellen
      var ua = navigator.userAgent.toLowerCase();
      if (IE && ua.indexOf('mac',0) != -1) 
      {
         mask.style.backgroundColor = 'transparent';
         mask.style.backgroundImage = 'url(img/trans.gif)';
      }

      // Höhe für Transparenz-Maske setzen
      setH();
   }

   // Initialisierung abgeschlossen
   init = true;

   //
   if (pup)
   {
      var pupl = getE('pupl');
      pupl.style.top = Math.max(pupTop,(getScrollY()+50))+'px';
   }
}


// --- DHTML-Basics --------------------------------------------------------------------------------------

// Element (DHTML-abhängig zurückliefern)
function getE(p)
{
   if (DOM) {if (typeof document.getElementById(p) == "object") {return document.getElementById(p);} else {return void(0);}}
   else if (IE) {if (typeof document.all[p] == "object") {return document.all[p];} else {return void(0);}}
   else if (NC) {if (typeof document[p] == "object") {return document[p];} else {return void(0);}}
   else return void(0);
}


// --- Tooltips --------------------------------------------------------------------------------------

function infShow(e,id)
{
   if (init)
   {
      if (nInf) {infHide(e,id);}
      nInf = id;
//alert(e.clientY+' '+e.layerY+' '+e.offsetY+' '+e.pageY+' '+e.screenY+' '+e.y);
      var b = getE('cntr');
      var i = getE('i'+id);
      if (i)
      {
         var x = e.clientX-b.offsetLeft;
         if (x + 422 > 974) {x = e.clientX-b.offsetLeft-422;}
         var y = e.clientY+getScrollY()-21;
         var i2 = i.cloneNode(true);
         b.appendChild(i2);
         i2.style.left = x+'px';
         i2.style.top = y+'px';
         i2.style.display = 'block';

         if (y + i2.offsetHeight > b.offsetHeight) {i2.style.top = Math.max(160,y-i2.offsetHeight)+'px';}
      }
   }
}

function infHide(e,id)
{
   var b = getE('cntr');
   var i2 = b.lastChild;
   b.removeChild(i2);
   nInf = 0;
}


// --- Transparenz-Maske ---------------------------------------------------------------------------------

// Höhe für Transparenz-Maske setzen
function setH()
{
   if (mask)
   {
      if (!OP && document.documentElement && document.documentElement.clientHeight)
      {
         if (document.body.scrollHeight && document.body.scrollHeight > document.documentElement.clientHeight) {hWin = document.body.scrollHeight;}
         else {hWin = document.documentElement.clientHeight;}
      }
      else if (document.body && document.body.clientHeight) {hWin = document.body.clientHeight;}
      else if (document.body && document.body.offsetHeight) {hWin = document.body.offsetHeight;}
      else {hWin = 0;}
      var cntr = getE('cntr');
      var pupl = getE('pupl');
      mask.style.height = Math.max(cntr.offsetHeight+cntr.offsetTop,Math.max(hWin,pupl.offsetHeight+pupl.offsetTop))+'px';
   }
}


// --- Scroll --------------------------------------------------------------------------------------------

// y-Scroll-Position zurückliefern
function getScrollY()
{
   if (self.pageYOffset) {return self.pageYOffset;}
   else if (window.pageYOffset) {return window.pageYOffset;}
   else if (document.documentElement && document.documentElement.scrollTop) {return document.documentElement.scrollTop;}
   else if (document.body && document.body.scrollTop) {return document.body.scrollTop;}
   else {return 0;}
}


// --- AJAX: XMLHttpRequest ------------------------------------------------------------------------------

function hrGet(fnc,f,n)
{
   hr = null;
   try {hr = new ActiveXObject("MSXML2.XMLHTTP");}
   catch (err_MSXML2)
   {
      try {hr = new ActiveXObject("Microsoft.XMLHTTP");}
      catch (err_Microsoft)
      {
         if (typeof XMLHttpRequest != 'undefined') {hr = new XMLHttpRequest;}
      }
   }
   if (hr)
   {
      eval('hr.onreadystatechange = function() {'+fnc+'(\''+n[0]+'\','+n[1]+');};');
      hr.open('GET',f+'?num='+n[0],true);
      hr.send(null);
   }
   return hr;
}


// --- Popup und Transparenzmaske (tw. Inhalte mit AJAX nachladen) ---------------------------------------

// Popup öffnen (mit AJAX Inhalt nachladen) und Maske einblenden
// - n: INTEGER: ID des Popup
// - f: STRING: PHP-Datei für Nachladen
// - a: BOOL: Animation ein-/ausschalten
function pupOpn(n,f,a)
{
   var lnk = getE('pup'+n)
   if (lnk) {lnk.style.cursor = 'wait';}
   hr = hrGet('hrOpn',f,new Array(n,a));
   return !hr;
}

// Popup schliessen und Maske ausblenden
function pupCls(a)
{
   // Popup ausblenden
   l = getE('pupl');
   l.style.visibility = 'hidden';
   l.style.height = '0px';
   getE('pupr').innerHTML = '';

   // Maske ausblenden
   if (a) {setTimeout(function () {pupClsA(mskAlpha);},mskWait);}
   else
   {
      mask.style.visibility = 'hidden';
      mask.style.filter = 'alpha(opacity:0)';
      mask.style.KHTMLOpacity = .0;
      mask.style.MozOpacity = .0;
      mask.style.opacity = .0;
      setH();
   }

   return false;
}

// Maske animiert einblenden
function pupOpnA(v)
{
   if (v < mskAlpha)
   {
      v = Math.min(mskAlpha,v+mskScr);
      v2 = v/100;
      mask.style.filter = 'alpha(opacity:'+v+')';
      mask.style.KHTMLOpacity = v2;
      mask.style.MozOpacity = v2;
      mask.style.opacity = v2;
      setTimeout(function () {pupOpnA(v);},mskTim);
   }
   else {setTimeout(function () {pupOpnEnd();},mskWait);}
}

// Popup-Einblenden abschliessen
function pupOpnEnd()
{
   // Popup einblenden
   if (init)
   {
      var pupl = getE('pupl');
      pupl.style.top = Math.max(pupTop,(getScrollY()+50))+'px';
      pupl.style.visibility = 'visible';
      pupl.style.height = 'auto';
   }
   setH();
}

// Maske animiert ausblenden
function pupClsA(v)
{
   if (v > 0)
   {
      v = Math.max(0,v-mskScr);
      var v2 = v/100;
      mask.style.filter = 'alpha(opacity:'+v+')';
      mask.style.KHTMLOpacity = v2;
      mask.style.MozOpacity = v2;
      mask.style.opacity = v2;
      setTimeout(function () {pupClsA(v);},mskTim);
   }
   else {mask.style.visibility = 'hidden'; setH();}
}

// Popup, Inhalt einfügen (mit AJAX nachladen)
function hrOpn(n,a)
{
   if (hr.readyState == 4 && hr.status == 200)
   {
      // Text nachladen
      hrTxt();

      // Maske einblenden
      if (a)
      {
         if (init)
         {
            getE('pupl').style.height = '0px';
            mask.style.visibility = 'visible';
            pupOpnA(0);
         }
      }
      else
      {
         var v2 = mskAlpha/100;
         mask.style.filter = 'alpha(opacity:'+mskAlpha+')';
         mask.style.KHTMLOpacity = v2;
         mask.style.MozOpacity = v2;
         mask.style.opacity = v2;
         mask.style.visibility = 'visible';
         pupOpnEnd();
      }

      var lnk = getE('pup'+n);
      if (lnk) {lnk.style.cursor = 'pointer';}
   }
}

// Popup, Text einfügen (mit AJAX nachgeladen)
function hrTxt()
{
   eval(hr.responseText);
   if (init) {getE('pupr').innerHTML = v;}
   hr.abort();
   hr = null;
}
