/**
 * $Log: script.js,v $
 * Revision 1.1  2008-07-30 11:44:32  b_cremer
 * Initialcommit
 *
 * Revision 1.7  2007/11/28 11:26:48  stefan
 * Implementation der "Filebase".
 * Erweiterung an entsprechenden Stellen des Texteditors (nur TinyMCE) und Erzeugung PlugIn.
 * Erweiterungen get_file.php5 für Filebase
 *
 * Revision 1.6  2005/01/18 09:53:06  stefan
 * Keine Umlaute in Kommentaren!
 *
 * Revision 1.5  2004/09/02 11:38:18  chr
 * Highlight von Komponenten fertiggestellt.
 *
 * Revision 1.4  2004/05/17 09:27:29  stefan
 * cssdebug sollte default auf false stehen
 *
 * Revision 1.3  2004/05/12 16:00:47  chr
 * Neue JS-Configvariablen geckocss (eigener CSS für Gecko laden) und cssdebug (Zeige Information über geladene CSS)
 *
 *
 * $Header: /var/files/repositories/cvs/htcmsphp5/js/script.js,v 1.1 2008-07-30 11:44:32 b_cremer Exp $
 *
 * Javascript Site-Toolbox
 * (C) 2002-2003 by 1komma6 GmbH (www.1komma6.com)
 * all rights reserved. Use of this code free, but only with full and intact comments.
 * enhancements to this code must be send to contact@1komma6.com.
 *
 * Authors:
 *  Michael Hoffmann (m.hoffmann@1komma6.com)
 *  Christian Rütgers (chr@1komma6.com)
 */

// General Init Code +++++++++++++++++++++++++++++++++++++++++++++++++++++++

// bekommt der Gecko eigene Stylesheets? (_gecko.css)
var geckocss = true;
var cssdebug = false; // Information ueber erkannte Browser und geladene CSS

// Variable fuer Menuezustand
var menuoffen = 0;

var picdirprefix = '';
// Voraussetzung ist, das die Bezeichnung der aktivierten Images (img name=) identisch mit den
// Dateinamen der Bilder ist.
// Name der zu erst aktivierten Bildes
var my_sperrname = '';
// Verzeichniss der passiven Bildvariante
var p_picdir = 'pic/nav/';
var p_ext = '_p.gif';
// Verzeichniss der Mouseover Bildvariante
var m_picdir = 'pic/nav/';
var m_ext = '_a.gif';
// Verzeichniss der aktiven Bildvariante
var apicdir = 'pic/nav/';
var a_picdir = 'pic/nav/';
var a_ext = '_a.gif';

var mylocation = '';

// Image Preloader +++++++++++++++++++++++++++++++++++++++++++++++++++++++
// intern benoetigte Parameter
var load_next = 500; // Zeit in ms zwischen zwei Ladevorgaengen
var pos_array = 0;

// Standardwert der Variable do_reload fuer die Funktion k6_fensterreload setzen.
// do_reload=1: k6_fensterreload wird ausgefuehrt
// do_reload=0: k6_fensterreload wird nicht ausgefuehrt
var do_reload = 1;
//alert("do_reload vor Funktionsaufruf:----"+do_reload+"----");

/*
   DynAPI Distribution
   Browser Class

   The DynAPI Distribution is distributed under the terms of the GNU LGPL license.
*/
function Browser() {
   var b=navigator.appName;
   if (b.indexOf('Netscape')!=-1) this.b="ns";
   else if ((b=="Opera") || (navigator.userAgent.indexOf("Opera")>0)) this.b = "opera";
   else if (b=="Microsoft Internet Explorer") this.b="ie";
   this.version=navigator.appVersion;
   this.v=parseInt(this.version);
   this.ns=(this.b=="ns" && this.v>=4);
   this.ns4=(this.b=="ns" && this.v==4);
   this.ns6=(this.b=="ns" && this.v==5);
   this.ie=(this.b=="ie" && this.v>=4);
   this.ie4=(this.version.indexOf('MSIE 4')>0);
   this.ie5=(this.version.indexOf('MSIE 5')>0);
   this.ie55=(this.version.indexOf('MSIE 5.5')>0);
   this.ie6=(this.version.indexOf('MSIE 6.0')>0);
   this.opera=(this.b=="opera");
   this.gecko=(navigator.product == "Gecko");
   this.dom=(document.createElement && document.appendChild && document.getElementsByTagName)?true:false;
   this.def=(this.ie||this.dom); // most used browsers, for faster if loops
   var ua=navigator.userAgent.toLowerCase();
   if (ua.indexOf("win")>-1) this.platform="win32";
   else if (ua.indexOf("mac")>-1) this.platform="mac";
   else this.platform="other";
}
is=new Browser();

function initJS() {

   // alert("ie:"+is.ie+"   ns:"+is.ns+"   opera:"+is.opera+"   version:"+is.v+"   dom:"+is.dom+"   def:"+is.def);
   if(window.picebene) {
      for(a=0;a < picebene; a++)
         picdirprefix += '../';
   }

   p_picdir = picdirprefix + p_picdir;
   m_picdir = picdirprefix + m_picdir;
   a_picdir = picdirprefix + a_picdir;

   preload_start();
}

// Welcher Stylesheet? ++++++++++++++++++++++++++++++++++++++++++++++
function k6_getStyleName(path,name) {
   var k6style = '';

   if(cssdebug)
     alert("ie:"+is.ie+"   ns:"+is.ns+"   opera:"+is.opera+"   version:"+is.v+"  platform:"+is.platform+"   dom:"+is.dom+"   gecko:"+is.gecko+"  def:"+is.def+"  Vers:--"+is.version+"--");

   if(geckocss && is.gecko) {
      k6style = path+name+'_gecko.css';
   } else if((is.ie && is.v >= 4) || (is.ns && is.v >= 5))
      k6style = path+name+'_ie.css';
   else if (is.opera)
      k6style = path+name+'_opera.css';
   else
      k6style = path+name+'_ns.css';

   if(cssdebug)
    alert('Lade CSS:__'+k6style+'__');

   return(k6style);
}


// mouseover Funktionen +++++++++++++++++++++++++++++++++++++++++++++++++++++++

function ChangeImage(sName, picdir, picname) {
   document.images[sName].src = picdir+picname;
}

function moPathImage(sName, pic) {
   document.images[sName].src = pic;
}
function pasPathImage(sName, pic) {
   document.images[sName].src = pic;
}

function pasImage2(sName,picdir) {
   if(picdir)
      loc_picdir=picdir;
   else
      loc_picdir=p_picdir;
   if(sName != my_sperrname)
     document.images[sName].src = loc_picdir+sName+p_ext;
}

function moImage2(sName,picdir) {
   //alert(picdir+sName+m_ext);

   if(picdir)
      loc_picdir=picdir;
   else
      loc_picdir=m_picdir;
   if(sName != my_sperrname)
     document.images[sName].src = loc_picdir+sName+m_ext;

}


function pasImageJpg(sName,picdir) {
   if(picdir)
      loc_picdir=picdir;
   else
      loc_picdir=p_picdir;
   if(sName != my_sperrname)
     document.images[sName].src = loc_picdir+sName+"_p.jpg";
}

function moImageJpg(sName,picdir) {
   if(picdir)
      loc_picdir=picdir;
   else
      loc_picdir=m_picdir;
   if(sName != my_sperrname)
     document.images[sName].src = loc_picdir+sName+"_a.jpg";
}

function clickImage(sName)
{
   // deactiveate last checked
   if(my_sperrname && my_sperrname != sName)
      document.images[my_sperrname].src = p_picdir+my_sperrname+p_ext;
   document.images[sName].src = a_picdir+sName+a_ext;
   my_sperrname=sName;
}


function showLarge(sName) {
   if(sName != my_sperrname)
     document.images[sName].src = 'pic/'+sName+'_a.jpg';
     document.images["large"].src = 'pic/'+sName+'_bg.jpg';
}

// Image Preloader +++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Ladefunktion
function preload()
{
  // Naechstes Bild laden
  var new_image = new Image()
  new_image.src = preload_images[pos_array]
   // alert("Load--"+new_image.src+"--");
  // Noch Bilder zu laden?
  pos_array++
  if(pos_array < preload_images.length)
    setTimeout('preload()', load_next);
}
// Start der Vorladefunktion
function preload_start()
{
  // Bilder vorhanden?
  if(!window.preload_images || preload_images.length == 0)
    return
  // Pruefroutine starten
  setTimeout('preload()', load_next)
}

function showorhide1(x, f){
   if(f){visi="visible";}
   else{visi="hidden";}
   if(document.layers){
      document.layers[x].visibility=visi;
   }
   if(document.all){
      document.all[x].style.visibility=visi;
   }
   if(document.getElementById){
      document.getElementById(x).style.visibility=visi;
   }
}

// Normales Extrafenster +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
function NeuFenster(myurl,mywidth,myheight,title,scroll,resize) {
   if(!mywidth)
      mywidth=300
   if(!myheight)
      myheight=180
   if(!title)
      title='Fenster'
   if(!scroll)
      scroll='no'
  // resize sollte als standard-wert 1 enthalten
   if(!resize && resize != 0)
      resize=1


   par = '"toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=' + scroll + ',resizable=yes,copyhistory=0,width=' + mywidth + ',height=' + myheight + '"'
   newWin = window.open(myurl,title,par);
//   newWin.moveTo(100,200);
   if (resize)
     newWin.resizeTo(parseInt(mywidth), parseInt(myheight)+10);
   newWin.focus();
}

// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/*
   Die Funktion bringt ein Fenster auf die notwendige Breite/Hoehe um den Inhalt komplett darstellen zu koennen
   Sie erfordert ein <div id="hcheck"></div> zwischen <body> und </body>!
   Die Funktion wird am Ende des Codes direkt vor dem </body> aufgerufen. Erst dort ist die Seite komplett geladen
*/

function k6_winSize(setH, setW, minH, minW) {
   if(is.dom && document.getElementById('hcheck')) {
      diffH = 0;
      if(setH) {
         maxH = (screen.height)? screen.height : screen.availHeight;
         maxH -= 100;
         isH = (window.innerHeight)? window.innerHeight : document.body.offsetHeight
         shouldH = document.getElementById('hcheck').offsetHeight + 12;

     if(minH && minH > shouldH)
       shouldH = minH;

         shouldH += 12;

         if(shouldH > maxH)
            shouldH = maxH;

         diffH = shouldH - isH;
      }

      diffW = 0;
      if(setW) {
      // Die Netscapes koennen die Breite nicht erkennen
         maxW = (screen.width)? screen.width : screen.availWidth;
         maxW -= 60;
         isW = (window.innerWidth)? window.innerWidth : document.body.offsetWidth

    if(is.ie)
      // Der eigentliche Trick ist das Lesen der Breite des Elements, korrekt leider nur mit IE
        shouldW = document.getElementById('hcheck').offsetWidth;
    else
      shouldW = isW;

     if(minW && minW > shouldW)
       shouldW = minW;

         if(is.ie)
           shouldW += 20;

         if(shouldW > maxW)
            shouldW = maxW;

         diffW = shouldW - isW;
      }

      //alert("Hoehe ist:"+isH+"   braucht:"+shouldH+"  diff:"+diffH);
      //alert("Breite ist:"+isW+"   braucht:"+shouldW+"  diff:"+diffW);
      window.resizeBy(diffW, diffH);
   }
}

// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/*
  Nur DOM-Browser!
  Layer einblenden / ausblenden.
  lay1 = LayerID von Layer1
  lay2 = LayerID von Layer2
  f = true,false (zeigen, nicht-zeigen)
  Wenn c=true, layer1 zentrieren
*/
function k6_toggle_layer(lay1, lay2, f, c){
  if(is.dom && document.getElementById(lay1) && document.getElementById(lay2)) {
    if(f) {
         visi1 = "visible";
      visi2 = "hidden";
      if(c) {
        isH = (window.innerHeight)? window.innerHeight : document.body.offsetHeight
        isW = (window.innerWidth)? window.innerWidth : document.body.offsetWidth
        boxW = document.getElementById(lay1).offsetWidth;
        boxH = document.getElementById(lay1).offsetHeight;

        document.getElementById(lay1).style.top = (isH / 2) - (boxH / 2);
        document.getElementById(lay1).style.left = (isW / 2) - (boxW / 2);
        // alert(" isH:--"+isH+"--\nboxH:--"+boxH+"--\n isW:--"+isW+"--\nboxW:--"+boxW+"--\n");
      }
    } else {
      visi1 = "hidden";
         visi2 = "visible";
    }

    document.getElementById(lay1).style.visibility = visi1;
    document.getElementById(lay2).style.visibility = visi2 ;
   }

}

// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/*
  Nur DOM-Browser!
  Layer einblenden / ausblenden.
  lay1 = LayerID von Layer1
  f = true,false (zeigen, nicht-zeigen)
  Wenn c=true, layer zentrieren
*/
function k6_layer(lay, f, c) {
  if(is.dom && document.getElementById(lay)) {
    if(f) {
         visi = "visible";
      if(c) {
        isH = (window.innerHeight)? window.innerHeight : document.body.offsetHeight
        isW = (window.innerWidth)? window.innerWidth : document.body.offsetWidth
        boxW = document.getElementById(lay).offsetWidth;
        boxH = document.getElementById(lay).offsetHeight;

        document.getElementById(lay).style.top = (isH / 2) - (boxH / 2);
        document.getElementById(lay).style.left = (isW / 2) - (boxW / 2);
        // alert(" isH:--"+isH+"--\nboxH:--"+boxH+"--\n isW:--"+isW+"--\nboxW:--"+boxW+"--\n");

        document.getElementById(lay).style.display = 'block';
      }
    } else {
      visi = "hidden";
    }

    document.getElementById(lay).style.visibility = visi;
   }

}

// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/*
  Nur DOM-Browser!
  Layer einblenden / ausblenden.
*/
function k6_switch_layer(lay, imgid, imgbase) {
  if(is.dom && document.getElementById(lay)) {
    if(document.getElementById(lay).style.visibility == 'hidden') {
         visi = "visible";
      document.getElementById(lay).style.display = 'block';
      document.getElementById(imgid).src = imgbase+'_p.gif';
    } else {
      visi = "hidden";
      document.getElementById(lay).style.display = 'none';
      document.getElementById(imgid).src = imgbase+'_a.gif';
    }

    document.getElementById(lay).style.visibility = visi;
   }

}

function k6_switch_layer2(lay) {
  if(is.dom && document.getElementById(lay)) {
    if(document.getElementById(lay).style.visibility == 'hidden') {
         visi = "visible";
      document.getElementById(lay).style.display = 'block';
    } else {
      visi = "hidden";
      document.getElementById(lay).style.display = 'none';
    }

    document.getElementById(lay).style.visibility = visi;
   }

}

// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/*
  Nur DOM-Browser!
  CSS-Klasse fuer ein Element aendern. Das Element muss per ID benannt sein.
  Wenn das Element nicht im aktuellen Fenster gefunden wird, wird es in
  in einem moeglichen oeffnenden Fenster gesucht.
*/
function k6_switch_style(elem_id, class_name) {

//if(self.opener && self.opener.document)
//	alert('self openener ist da'+typeof(self.opener));
//else
//	alert('kein self opener');

//if(class_name)
//alert('HAI light__'+elem_id+'__');

  if(document.getElementById(elem_id)) {
    document.getElementById(elem_id).className = class_name;
//	} else if (self.opener.document.getElementById(elem_id)) {
//		self.opener.document.getElementById(elem_id).className = class_name;
  }
}

// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/*
  Reload des aufrufenden Fensters bei Schließen oder Ändern eines Extrafensters
  zur Aktualisierung der Ursprungsansicht.

  close_url:
    Das Ursprungsfenster wird mit dieser URL geladen

  killmode: (nur wenn keine close_url angegeben!)
    1: von der URL des Ursprungsfensters wird der Teil nach dem Fragezeichen entfernt
    0: Die URL des Ursprungsfensters bleibt unberuehrt

  Sonderfall:
    Wenn im Ursprungsfenster eine Variable "reload_base" einen Wert enthaelt, wird dieser
    als URL fuer den Reload des Ursprungsfenster verwendet. close_url und killmode
    werden in dem Fall ignoriert!

  Vorgehensweise bei mehreren Extrafenstern:
    Sollte der Fall eintreten, dass aus dem Basisfenster (BF) ein Extrafenster (EF1) geoeffnet wird und aus diesem
    ein weiteres Extrafenster (EF2), soll im Regelfall beim schließen des EF2 nur das EF1 neu geladen werden, nicht
    jedoch das BF. In diesem Fall muß in den <body>-Tag von EF2 onUnload="opener.do_reload=0;" eingefuegt werden.

    Diese Variablendefinition bewirkt, dass dadurch das EF2 geschlossen wird und EF1 neu geladen wird. In EF1 ist jetzt
    do_reload=0, also wird kein reload des opener-Dokuments von EF1 (also BF) durchgefuehrt.
*/
function k6_fensterreload (killmode, close_url, do_reload) {

  //alert("do_reload:----"+do_reload+"----");
  if (do_reload) {
    if(opener.reload_base) {
      // alert("opener reload_base:--"+opener.reload_base+"--");
      opener.location.href = opener.reload_base;
    } else if(close_url) {
      //alert("CLOSE_url:--"+close_url+"--");
      opener.location.href = close_url;
    } else {
      if (!killmode) {
        // alert("Kein Killmode");
        opener.location.reload();
      } else {
        tmp_url = opener.location.href;
        // alert("Killmode from url:--"+tmp_url+"--");
        new_url = tmp_url.split("?");
        // alert("Killmode to url_1:--"+new_url[0]+"--");
        opener.location.href = new_url[0];
      }
    }
  } else if (do_reload==0) {
  }
}
