/*******************************************************
/   Created by 21TORR Agency GmbH
*******************************************************/

/*******************************************************
/ BugReport:
/
/ - NS-Problem gefixt, dass Bilder mit gleichen Positionen in Layers nicht korrekt gehilitet werden
/ - Mozilla-Korrekturen
*******************************************************/

<!--
  imgArray = new Array();                               // enthaelt die Bilder im Dokument
  bilder_Anzahl = 0;                                    // enthaelt die Anzahl aller Bilder im Dokument
  dontTurnOff = [];
  base2 = "";
  oldHeadlineSrc = "";

  // Variablen nur wichtig fuer Debugging...
  debug = false;                                         // debugging einschalten?
  anzahl_der_Durchlaeufe = 0;                           // Anzahl der Durchlaeufe der Updatefunktion
  rekursion_erlauben = true;                            // neuer Aufruf der Updatefunktion erlauben?
  debug_Text = "";                                      // Initialisierung der Text-Variablen
  preLoad_done = false;                                 // enthaelt "true" wenn der PreLoad abgeschlossen ist
  var menuPic = "";

  // Funktion cancelPreLoad()
  //
  // Funktion: Bricht die Updatefunktion ab (nur wichtig fuer Debugging)
  // Parameter: keine
  // Rueckgabe: keine
  function cancelPreLoad() {
      rekursion_erlauben = false;
  }
  
  // Funktion entry()
  //
  // Funktion: erstellt ein neues Objekt, das zwei Bildobjekte enthaelt; eines fuer den Normalzustand
  //            und eins fuer den Hilitezustand, die durch dir Funktion imgOn / imgOff je nach mouse
  //            event ausgetauscht werden.
  // Parameter: layer (string): Name der Layer, in der sich das Bild befindet
  //            name (string): Name des Bildes; muss mit dem Namen aus dem HTML-Dokument uebereinstimmen
  //            src1 (string): Quelle des Bildes im Normalzustand
  //            src2 (string): Quelle des Bildes im Hilitezustand
  // Rueckgabe: (Objekt): ein Objekt mit zwei Imageobjekten und der passenden Layerangabe
  function entry(layer, name, src1, src2, x, y) {
      this.layer = layer;           // Name der Layer speichern
      this.name = name;
      this.normal = new Image();     // neues Bildobjekt fuer den Normalzustand erzeugen
      this.normal.src = src1;       // die Quelle eintragen
      this.hilite = new Image();    // neues Bildobjekt fuer den Hilitezustand erzeugen
      this.hilite.src = src2;       // und noch die zweite Quelle eintragen
      this.x = x;
      this.y = y;
      return (this);
  }
  
  // Funktion isValidImage()
  //
  // Funktion: ueberprueft, ob es sich bei einem angegebenen Dateinamen eines Bildes um ein Bild handelt,
  //            das auch gehilitet werden kann.
  // Parameter: name (string): Name des zu ueberpruefenden Bildes
  // Rueckgabe: (boolean): wahr oder falsch ;)
  function isValidImage(src)
    {
      var ok = src.indexOf("_off.") > 0;
      return(ok);
  }
  
  // Funktion convertToHilite()
  //
  // Funktion: Konvertiert eine Quelle eines Bildes im Normalzustand in die Quelle fuer das gleiche
  //            Bild im Hilitezustand. Dabei wird die Namensvergebung verwendet wie sie bei 21TORR
  //            ueblich ist.
  // Parameter: src (string): Quelle des Bildes im Normalzustand
  // Rueckgabe: (string): Quelle des Bildes im Hilitezustand
    function convertToHilite(src)
    {
      var fileType = src.substring(src.lastIndexOf("."), src.length); // Dateiendung speichern
      var endOfPath = src.lastIndexOf("/") + 1;                       // letzten Slash suchen
      var path = src.substring(0, endOfPath);                         // Pfad extrahieren
      var fileName = src.substring(endOfPath, src.length);            // Dateinamen extrahieren
      var fileName2 = fileName;
      var endOfFileName = fileName.lastIndexOf("_");                  // Dateinamen aufsplitten
      fileName = fileName.substring(0, endOfFileName);                // "richtiger" Dateiname
      fileName = path + fileName + "_on" + fileType;                  // "_on" und Dateiendung anhaengen
      return (fileName);
  }
  
  // Funktion searchImages()
  //
  // Funktion: sucht alle Bilder aus dem HTML-Dokument und erstellt fuer jedes ein newImage-Objekt fuer
  //            den RollOver-Effekt. Dabei werden auch die Layers im Netscape (auch in der Version 6)
  //            beruecksichtigt.
  // Parameter: keine
  // Rueckgabe: keine
  function searchImages()
    {
      var anzahl_der_Bilder = document.images.length;
      if (debug) debug_Text += "<table width = '100%' border = '1'>\n<tr><td>pos</td><td>Layer</td><td>Name</td><td>low Quelle</td><td>hi Quelle</td><td colspan = '2'>preLoaded</td></tr>\n";
      for (var img = 0; img < anzahl_der_Bilder; img++)
        {//alert(img);
          var name = document.images[img].name;             // Name des Bildes speichern
          var nsrc = document.images[img].src;              // Quelle des Bildes speichern
          var hsrc = convertToHilite(nsrc);                 // Quelle des Hilite-Bildes speichern
          if (is_nav) { var x = document.images[img].x; var y = document.images[img].y; }
          else { var x = document.images[img].sourceIndex; var y = 0; }
          if (name == "") name = img;         // falls das Bild keinen Namen haben sollte, einfach einen erstellen :=)
          if (isValidImage(nsrc))
            {
              imgArray[bilder_Anzahl] = new entry("", name, nsrc, hsrc, x, y);  // das gefundene Bild in das Array eintragen
              if (debug) if (name != "") debug_Text += "<tr><td align = 'center' bgColor = '#22ff22'>" + bilder_Anzahl + ". </td><td align = 'center' bgColor = '#22ff22'>&nbsp;</td><td bgColor = '#22ff22'>" + name + "</td><td bgColor = '#22ff22'>" + nsrc + "</td><td bgColor = '#22ff22'>" + hsrc + "</td><td bgColor = '#22ff22'><input type = 'Text' value = 'no' size = '3' name = '" + imgArray[bilder_Anzahl].name + "l' /></td><td bgColor = '#22ff22'><input type = 'Text' size = '3' value = 'no' name = '" + imgArray[bilder_Anzahl].name + "h' /></tr>\n";
              bilder_Anzahl++;
          }
          else
            {
              if (debug) debug_Text += "<tr><td colspan = '7'>Not valid: name = " + name + ", src = " + nsrc + "</td></tr>";
          }
      }
      if ((is_nav) && (!is_dom)) searchImagesInLayers();
      if (debug) debug_Text += "<tr><td colspan = '7'>Anzahl der gefundenen Bilder: " + bilder_Anzahl + "</td></tr>\n</table>\n";
  }
  
  // Funktion searchImagesInLayers()
  // 
  // Funktion: sucht alle Bilder aus dem HTML-Dokument in Layers und erstellt fuer jedes ein newImage-Objekt fuer
  //            den RollOver-Effekt.
  // Parameter: keine
  // Rueckgabe: keine
  function searchImagesInLayers()
    {
      var layers = document.layers;
      for (var l = 0; l < layers.length; l++)
        {
          doc2 = layers[l].document;
          if (debug) debug_Text += "<tr><td bgColor = '#ffff00' colspan = '7'>Suche in Layer " + layers[l].name + " (max. " + doc2.images.length + " Bilder)</td></tr>\n";
          for (var d = 0; d < doc2.images.length; d++)
            {
              var name = doc2.images[d].name;
              var nsrc = doc2.images[d].src;
              var hsrc = convertToHilite(nsrc);
              if (is_nav) { x = doc2.images[d].x; y = doc2.images[d].y; }
              if (isValidImage(nsrc))
                {
                  imgArray[bilder_Anzahl] = new entry(layers[l].name, name, nsrc, hsrc, x, y);
                  if (debug) if (name != "") debug_Text += "<tr><td align = 'center' bgColor = '#22ff22'>" + bilder_Anzahl + ". </td><td align = 'center' bgColor = '#ffff22'>" + layers[l].name + "</td><td bgColor = '#22ff22'>" + name + "</td><td bgColor = '#22ff22'>" + nsrc + "</td><td bgColor = '#22ff22'>" + hsrc + "</td><td bgColor = '#22ff22'><input type = 'Text' value = 'no' size = '3' name = '" + imgArray[bilder_Anzahl].name + "l' /></td><td bgColor = '#22ff22'><input type = 'Text' size = '3' value = 'no' name = '" + imgArray[bilder_Anzahl].name + "h' /></tr>\n";
                  bilder_Anzahl++;
              }
          }
      }
  }

  // Funktion getPos()
  //
  // Funktion: Ermittelt die Position eines Bildes im imgArray anhand des Namens und liefert dessen Position zurueck.
  //            Wird das Bild nicht gefunden, liefert die Funktion -1 zurueck.
  // Parameter: name (string): Name des zu suchenden Bildes.
  // Rueckgabe: (int): Position des Bildes.
  function getPos(name)
    {
      var retValue = -1;
      for (var p = 0; p < imgArray.length; p++)
        {
          if (imgArray[p].name == name) retValue = p;
      }
      return (retValue);
  }

  function imgIsOn(name)
    {
      retValue = false;
      var nr = getPos(name);
      if (nr != -1)
        {
          var bild = imgArray[nr];
          if ((is_nav) && (bild.layer != "")) retValue = (document.layers[bild.layer].document.images[name].src.indexOf('_on') != -1);
            else retvalue = (document.images[name].src = bild.hilite.src.indexOf('_on') != -1);
      }
      alert(retValue);
      return(retValue);
  }

  // Funktion imgOn()
  //
  // Funktion: schaltet ein bestimmtes Bild in den Hi-Zustand. Wird ein ungueltiger Name angegeben, so erscheint
  //            keine Fehlermeldung.
  // Parameter: name (string): der Name des zu hilitenden Bildes
  // Rueckgabe: keine
  function imgOn(name, nrec)
    {
      var nr = getPos(name);
      if ((nr != -1))
        {
          if ((menuPic != '') && (name != menuPic)) {
            imgOff (menuPic, 1);
          }
          var bild = imgArray[nr];
          if ((is_nav) && (bild.layer != ""))
            document.layers[bild.layer].document.images[name].src = bild.hilite.src;
          else
            document.images[name].src = bild.hilite.src;
      }
  }

  // Funktion imgOff()
  //
  // Funktion: schaltet ein bestimmtes Bild in den Lo-Zustand. Wird ein ungueltiger Name angegeben, so erscheint
  //            keine Fehlermeldung.
  // Parameter: name (string): der Name des zu normalisierenden Bildes
  // Rueckgabe: keine
  function imgOff(name, force)
  {
          if (force) {
            menuPic = '';
          }
          var nr = getPos(name);
          if ((nr != -1) && (name != menuPic))
          {
              var bild = imgArray[nr];
              if ((is_nav) && (bild.layer != ""))
                document.layers[bild.layer].document.images[name].src = bild.normal.src;
              else
                document.images[name].src = bild.normal.src;
          }
  }
  
  function registerMouseEvents()
    {
      if ((is_nav) && (!is_dom))
        {
          document.captureEvents(Event.MOUSEOVER | Event.MOUSEOUT);
      }
      document.onmouseover = checkForHilite;
      document.onmouseout = checkForHilite;
  }
  
  function isIn(arr, el)
    {
      var retValue = false;
      for (var e in arr) if (arr[e] == el) retValue = true;
      return (retValue);
  }

  function NS_is_visible(divName)
    {
      retValue = false;
      if (divName == '') return(true);
      if ((document.layers) && (document.layers[divName]) && (document.layers[divName].visibility == 'show')) retValue = true;
      return(retValue);
  }

  function getImageFromLink(obj)
    {
      retValue = -1;
      if (is_nav)
        {
          if (((obj.x) || (obj.x == 0)) && ((obj.y) || (obj.y == 0)))
            for (var pic in imgArray)
              if ((obj.x == imgArray[pic].x) && (obj.y == imgArray[pic].y) && (NS_is_visible(imgArray[pic].layer))) return(imgArray[pic]);
      }
      else
        if (obj.sourceIndex)
          for (var pic in imgArray)
            if (obj.sourceIndex == imgArray[pic].x) retValue = imgArray[pic];
      return (retValue);
  }

  function showProps(obj, to_window)  {
    if (typeof obj != 'object')
      alert(obj);
    else {
		alert('ok');
        text = '';
        if (to_window)  {
            text = '<pre>';
            for (i in obj) {
              text += '[' + i + '] =&gt; ' + obj[i] + '<br />';
            }
            text += '</pre>';
            doc = window.open('', '', '');
            doc = doc.document;
            doc.open();
            doc.write(text);
            doc.close();
        }
        else  {
            c = 0;
            for (i in obj)
              {
                c++;
                text += i + ' = ' + obj[i] + '\r\n';
                if (c == 15) 
                  {
                    alert(text);
                    c = 0;
                    text = '';
                }
            }
            alert(text);
        }
    }
  }
  
  function checkForHilite(e)
    {
      if (is_nav) { event = e; }

      quelle = -1;
      if ((is_nav) && (is_dom))
        if (event.target.localName == 'IMG')
          quelle = event.target.id;
      
      if ((is_nav) && (!is_dom))
        if ((event.target.src) || (event.target.href))
          {
            quelle = getImageFromLink(event.target);
            /*if (quelle == -1) */routeEvent(event);
        }
      if (is_ie)
        if (event.srcElement.src)
          {
            var img = event.srcElement;
            quelle = getImageFromLink(event.srcElement);
        }
      if (quelle != -1) 
        {
          action = (event.type.indexOf("ver") != -1) ? "over" : "out";
          if (quelle.name) quelle = quelle.name;
          if (action == "over") imgOn(quelle)
          else imgOff(quelle);
      }
  }        
  
  // Funktion waitForPreload()
  //
  // Funktion: mit dieser Funktion kann ueberwacht werden, ob der PreLoad abgeschlossen ist.
  //            enthaelt die Variable preLoad_done den Wert "true", sind die mouseOver- und mouseOut-Bilder
  //            vorgeladen.
  //            VORSICHT: Bei Netscape kommt es manchmal vor, dass manche Bilder trotz Anweisung NICHT
  //                      vorgeladen werden!!
  //            Die Funktion benutzt die Timer-Funktion
  // Parameter: keine
  // Rueckgabe: keine
  function waitForPreLoad()
    {
      var per = 0;
      var count = 2 * bilder_Anzahl;
      var interleave = 100;
      anzahl_der_Durchlaeufe++;
      for (var b = 0; b < bilder_Anzahl; b++)
        {
          if (imgArray[b].normal.complete) 
            {
              per++;
              if (debug) debug_win.document.Display.elements[imgArray[b].name + "l"].value = "yes";
          }
          if (imgArray[b].hilite.complete)
            {
              per++;
              if (debug) debug_win.document.Display.elements[imgArray[b].name + "h"].value = "yes";
          }
      }
      if (debug)
        {
          debug_win.document.Display.D.value = Math.floor(100 * per / count) + " % preloaded (" + anzahl_der_Durchlaeufe * interleave + " msec)";
          debug_win.focus();
      }
      if ((per < count) && (rekursion_erlauben)) window.setTimeout("waitForPreLoad();", interleave);
      if (per == count) preLoad_done = true;
  }

  // Funktion mystic()   (Hauptfunktion)
  //
  // Funktion: Diese Funktion muss im body-Tag mit dem onLoad-Event aufgerufen werden. Sie veranlasst, dass das
  //            Dokument nach Bildern durchsucht wird, die fuer einen RollOver-Effekt verwendet werden. Die Funktion
  //            erkennt diese Bilder daran, dass ihre Quelle den Substring "_off." enthaelt. Aus der Quelle wird dann
  //            nach der Namenskonvention fuer Bilder dei 21TORR die Quelle fuer das Hilite-Bild errechnet und das
  //            dann ebenfalls vorausgeladen. Mithilfe der Variablen preLoad_done kann festgestellt werden, wann der
  //            Preload fuer die erkannten Bilder abgeschlossen ist.
  //            Die gefundenen Bilder koennen dann ueber die Funktionen imgOn() und imgOff() in die verschiedenen
  //            Zustaende versetzt werden, wobei nur noch der Name des Bildes uebergeben werden muss. Layers in
  //            Netscape werden selbst erkannt und muessen somit nicht angegeben werden.
  // Parameter: keine
  // Rueckgabe: keine
  function mystic()
    {
      if (debug)
        {
          debug_win = window.open("", "", "width=900,height=600,scrollbars=1,resizable=1");
          debug_win.document.open();
          debug_Text += "<html><head><title>Debugger-Fenster f&uuml;r mystic</title></head><body><form name = 'Display'><input type = 'Text' name = 'D' size = '30'/><input type = 'Button' value = 'preLoad abbrechen' onClick = 'window.opener.cancelPreLoad();' /><br />Vor dem Laden:<br />";
      }

      searchImages();
    
      if (debug)
        {
          debug_Text += "</form></body></html>";
          debug_win.document.write(debug_Text);
          debug_win.document.close();
      }
//      waitForPreLoad();
      registerMouseEvents(); 
    
    }
  
  function help_me()
    {
      var text = "";
      for (var i in dontTurnOff)
        text += "; " + dontTurnOff[i];
      window.status = text;
      window.setTimeout("help_me();", 200);
  }
  
//  window.setTimeout("help_me();", 100);
var MenueUnten = false;

function toggle(name) {
  if (MenueUnten) {
    hide('berater');
  }
  else {
    show('berater');
  }
  MenueUnten = !MenueUnten;
}

function toggle2(name) {
  if (MenueUnten) {
    hide('netzwerkpartner');
  }
  else {
    show('netzwerkpartner');
  }
  MenueUnten = !MenueUnten;
}

function toggleHome() {
    hide('DIVHome1');
    hide('DIVHome1_1');
    show('DIVHome2');
    show('DIVHome2_2');
} 

function toggleBack() {
    show('DIVHome1');
    show('DIVHome1_1');
    hide('DIVHome2');
    hide('DIVHome2_2');
}  

//positionierung des navi-layer in den seiten:
function layerPos1() {
  if (is_nav6) {
  leftBorder = ((window.innerWidth)- 780)/2;
  leftBorder = (leftBorder < 0) ? 9 : leftBorder;
  document.getElementById('berater').style.left = (leftBorder) + 10;
  }
  
  else if (is_nav) {
    document.layers["berater"].left = leftBorder = document.images["firstPic"].x + 11;
  }
  else { 
    obj = document.all["berater"].style;
    leftBorder = ((document.body.clientWidth - 780) / 2) + 1;
    leftBorder = (leftBorder < 0) ? 0 : leftBorder;
    document.all["berater"].style.left = (leftBorder + 10) + "px";
  }
}

//wechselbilder seminarseite
image1 = new Image();
image1.src = "/service/pict/training1.jpg";
image2 = new Image();
image2.src = "/service/pict/training2.jpg";
image3 = new Image();
image3.src = "/service/pict/training3.jpg";
image4 = new Image();
image4.src = "/service/pict/training4.jpg";
image5 = new Image();
image5.src = "/service/pict/training5.jpg";
image6 = new Image();
image6.src = "/service/pict/training6.jpg";
image7 = new Image();
image7.src = "/service/pict/training7.jpg";
image8 = new Image();
image8.src = "/service/pict/training8.jpg";
	
function picture1() {
  window.document.bild.src=image1.src;
  window.setTimeout('picture2()',3500);
}

function picture2() {
  window.document.bild.src=image2.src;
  window.setTimeout('picture3()',3500);
}

function picture3() {
  window.document.bild.src=image3.src;
  window.setTimeout('picture4()',3500);
}

function picture4() {
  window.document.bild.src=image4.src;
  window.setTimeout('picture5()',3500);
}

function picture5() {
  window.document.bild.src=image5.src;
  window.setTimeout('picture6()',3500);
}

function picture6() {
  window.document.bild.src=image6.src;
  window.setTimeout('picture7()',3500);
}

function picture7() {
  window.document.bild.src=image7.src;
  window.setTimeout('picture8()',3500);
}

function picture8() {
  window.document.bild.src=image8.src;
  window.setTimeout('picture1()',3500);
}

// für MoBa Treff
function webcam() {
  window.open("webcam.html","ModellbahntreffWebcam","width=352,height=370,scrollbars=0");
}

function chImg(file) { 
  var changeimg = new Image();
  changeimg.src = "http://moba.maerklin.de/gallery09/" + file;
  document.bigimage.src = changeimg.src;
}

function detailed() {
  if(document.bigimage.width>document.bigimage.height) { 
    window.open("detailed.html?picture=" + document.bigimage.src + "&width=480&height=695","","scrollbars=0");
  }
  else {
    window.open("detailed.html?picture=" + document.bigimage.src + "&width=640&height=535","","scrollbars=0");
  }
}

// Wechselbilder für Servicebereich
aTexte = ["<span class='bold'>Wallpaper</span><br />Monatlich wechselnde Hintergrundbilder mit eingebautem Kalenda-<br />rium für den Windows-<br />Desktop zum Download.",
          "<span class='bold'>Downloads</span><br />Hier gibt es kostenlose Downloads von Demos, Tools, Updates und vielem mehr rund um Märklin.",
          "<span class='bold'>Filme & Videoa</span><br />Videofilme über Messen, Modelle und Technik im Flash-, Quicktime-, ASF- und WMV-Format.",
          "<span class='bold'>Grußkarten</span><br />Märklin Grußkarten mit modernen und histo-<br />rischen Katalogtiteln, Versand per E-mail an Freunde und Bekannte.",
          "<span class='bold'>Buttons</span><br />Sie möchten auf Ihrer eigenen Website einen Link zur Märklin-Home-<br />page einsetzen? Hier finden Sie passende Buttons und Infos dazu!",
          "<span class='bold'>3D-Modelle</span><br />Drehen, bewegen, zoomen: Interaktive 3D-Animationen und Rotationen des \"Big Boy\" und der \"Franco Crosti\"."];

//-->
