// --- Globale Variabeln -----------------------------------------------------------------------------------------------------------------
var DHTML = false;
var DOM = false;
var IE = false;
var NC = false;
var OP = false;
var SAFARI = false;
var init = false;		// Initialisierung abgeschlossen
var hr = null;		// HttpRequest
var ani = false;		// Animations-Status
var aniH = 900;
var aniS = 100;
var aniT = 50;


// --- DHTML -----------------------------------------------------------------------------------------------------------------------------

// Element (DHTML-abhängig zurückliefern)
// - p: HTML-ID des Elements
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);
}

// Event zu Objekt hinzufügen
function addEvent(obj,event,func)
{
   if (IE || OP)  // ältere Operaversionen kennen addEventListener noch nicht!
   {
      if (obj == window) {eval("obj.on" + event + " = document.on" + event + " = func;");}
      else {eval("obj.on" + event + " = func;");}
   }
   else if (DOM)
   {
      if (event == 'mousewheel')
      {
         var e = (/Firefox/i.test(navigator.userAgent) ? "DOMMouseScroll" : "mousewheel");
         if (obj.attachEvent) {obj.attachEvent('on'+e,func);}
         else if (obj.addEventListener) {obj.addEventListener(e,func,false);}
      }
      else {obj.addEventListener(event, func, true);}
   }
   if (NC)
   {
      eval("obj.captureEvents(Event." + event.toUpperCase() + ");");
      eval("obj.on" + event + " = func;");
   }
}


// --- AJAX ------------------------------------------------------------------------------------------------------------------------------

// AJAX-Aufruf
// - p : Navi-Parameter für Übergabe an PHP-Script
function ajx(p1,p2)
{
   if (init && !hr && !ani) {hr = hrGet(p1,p2);}
   return false;
}

// HTTP-Request
// - p :Navi-Parameter für Übergabe an PHP-Script
function hrGet(p1,p2)
{
   h = null;
   try {h = new ActiveXObject("MSXML2.XMLHTTP");}
   catch (err_MSXML2)
   {
      try {h = new ActiveXObject("Microsoft.XMLHTTP");}
      catch (err_Microsoft)
      {
         if (typeof XMLHttpRequest != 'undefined') {h = new XMLHttpRequest;}
      }
   }
   if (h)
   {
      // JS-Funktion
      eval('h.onreadystatechange = function() {hrAjx();};');

      // PHP-Script
      h.open('GET','ajx.php?nav='+p1+'&dir='+p2,true);
      h.send(null);
   }
   return h;
}

// JS-Funktion (AJAX-Auswertung)
function hrAjx()
{
   if (hr && hr.readyState == 4 && hr.status == 200)
   {
      ani = true;

      // HTML mit AJAX einlesen (typ,blkPth,blkDpg,blkNam,blkTyp,aTxt1,aTxt2)
      if (hr.responseText.substr(0,7) === 'var v =') {try {eval(hr.responseText);} catch (err) {}}
      hr.abort();
      hr = null;

      // Schlaufe durch Inhaltsblöcke
      if (typeof v != 'undefined')
      {
         for (var i=0; i<v.length; i++)
         {
            switch(v[i][0].substr(0,3))
            {
               case 'lmt':
                  getE('lmt').innerHTML = v[i][1];
                  break;
               case 'cnt':
                  getE('cnt').innerHTML = v[i][1];
                  break;
            }
         }
      }

      ani = false;
   }

   // HTTP-Fehler abfangen (Fortsetzung von JS ermöglichen)
   else if (hr && hr.readyState == 4)
   {
      hr.abort();
      hr = null;
   }
}


// --- Scroll-Position -------------------------------------------------------------------------------------------------------------------

// x-Scroll-Position zurückliefern
function getScx()
{
   if (self.pageXOffset) {return self.pageXOffset;}
   else if (window.pageXOffset) {return window.pageXOffset;}
   else if (document.documentElement && document.documentElement.scrollLeft) {return document.documentElement.scrollLeft;}
   else if (document.body && document.body.scrollLeft) {return document.body.scrollLeft;}
   else {return 0;}
}

// y-Scroll-Position zurückliefern
function getScy()
{
   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;}
}

// Scrollposition für Reload anhand aktueller Scrollposition berechnen
function setScl(l)
{
   if (l.href != null) {l.href = l.href+(l.href.indexOf('?') == -1 ? '?' : '&')+'scx='+Math.max(0,(getScx()))+'&scy='+Math.max(0,(getScy()));}
   else if (l.action != null) {l.action = l.action+(l.action.indexOf('?') == -1 ? '?' : '&')+'scx='+Math.max(0,(getScx()))+'&scy='+Math.max(0,(getScy()));}
}


// --- Initialisierung -------------------------------------------------------------------------------------------------------------------

// Initialisierung
function initJS(scrX,scrY)
{
   // DHTML starten
   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;}
   if (navigator.appVersion.search(/Safari/) != - 1) {SAFARI = true;}
   init = true;

   // Scroll setzen
   window.scrollTo(scrX,scrY);
}
