/*******************************************************
/
/   Created by 21TORR AGENCY GmbH
/
*******************************************************/

/*******************************************************
/
/ My comment:
/
/ - thanx for using this script, its great !!
/
*******************************************************/



  imgArray = new Array();
  bilder_Anzahl = 0;
  dontTurnOff = [];
  base2 = "";
  oldHeadlineSrc = "";


  debug = false;
  anzahl_der_Durchlaeufe = 0;
  rekursion_erlauben = true;
  debug_Text = "";
  preLoad_done = false;


  function cancelPreLoad()
    {
      rekursion_erlauben = false;
  }
  

  function entry(layer, name, src1, src2, x, y)
    {
      this.layer = layer;
      this.name = name;
      this.normal = new Image();
      this.normal.src = src1;
      this.hilite = new Image();
      this.hilite.src = src2;
      this.x = x;
      this.y = y;
      return (this);
  }
  

  function isValidImage(src)
    {
      var ok = src.indexOf("_off.") > 0;
      return(ok);
  }
  
 
    function convertToHilite(src)
    {
      var fileType = src.substring(src.lastIndexOf("."), src.length);
      var endOfPath = src.lastIndexOf("/") + 1;
      var path = src.substring(0, endOfPath);
      var fileName = src.substring(endOfPath, src.length);
      var fileName2 = fileName;
      var endOfFileName = fileName.lastIndexOf("_");
      fileName = fileName.substring(0, endOfFileName);
      fileName = path + fileName + "_on" + fileType;
      return (fileName);
  }
  

  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;
          var nsrc = document.images[img].src;
          var hsrc = convertToHilite(nsrc);
          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;
          if (isValidImage(nsrc))
            {
              imgArray[bilder_Anzahl] = new entry("", name, nsrc, hsrc, x, y);
              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";
  }
  
 
  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++;
                }
            
          }
      }
  }

 
  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);
      }
      return(retValue);
  }

  function imgOn(name)
    {
      var nr = getPos(name);
      if (nr != -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;
      }
  }

  function imgOff(name)
    {
      var nr = getPos(name);
      if (nr != -1)
        {
          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)
        {
          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)
    {
      var count = 0;
      var Text = "";
      for (var i in obj)
        {
          Text += i  + " = " + obj[i] + "\n";
          count++; 
          if (count == 25)
            {
              alert(Text);
              count = 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);
      }
  }
        

  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;
  }

  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 bgcolor = '#ffffff'><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(); 
  }
  

