/*
 * Link:    cms/tools/cms_flash.js
 * Version: 1.0
 * Datum:   15.11.2010
 * Autor:   Jörg Ahrens
 * Bezug:   -
 * ToDo:    Mehr Kindknoten durchsuchen
 */

var cms_bild = {

  change : function (NR,OB)
  {
    /*
     * Durchsucht wird nur die erste Kindelement-Ebene und
     * auch hier nur die zwei ersten Elemente.
     * Kommentare und Leerzeilen sollten also vermieden
     * werden.
     */
    var NodeType = 1;
    var SRC = NR;

    /*
     * Falls eine Grafik angesprochen wird, die außerhalb des
     * Links liegt. Dazu muss der betreffenden Grafik ein id
     * zugeordnet werden.
     */
    if (!SRC.src)
    {
      NodeType = 2;
      SRC = SRC.firstChild;
    }

    /*
     * Der Knoten hat ein Textelement. Dabei handelt es sich
     * wohl um ein Leerzeichen und/oder einen Zeilenumbruch.
     */
    if (!SRC.src)
    {
      NodeType = 3;
      SRC = SRC.nextSibling;
    }

    /*
     * Falls das img-Element auch als zweites Element nicht
     * erkannt wird wird eine Warnung ausgegeben und
     * abgebrochen.
     */
    if (!SRC.src)
    {
      NodeType = 0;
      alert('Pic ('+NR+'): Kein image!');
      return false;
    }

    /*
     * Falls OB selbst mit einer Quelle (einem neuen Image)
     * gesetzt wurde
     */
    if (OB !== 1 && OB !== 0)
    {
      SRC = OB;
    }

    /*
     * Falls eine vorhandene Quelle bearbeitet werden soll
     * (OB === 1 || OB === 0). Die Quelle wird definiert durch
     * this (eine Grafik innerhalb des Links) oder ein
     * getElementById (ansprechen einer Grafik außerhalb des
     * Links).
     */
    else
    {
      /*
       * In der Regel wird in der SRC der absolute Link
       * gespeichert. Allerdings kann es auch vorkommen, dass
       * relative Links übergeben wurden (etwa durch
       * flash.js). Daher muss beim zusammenfügen eine
       * Schleife genutzt werden.
       * Dazu wurde auch die "hov"-Datei-Erweiterung
       * angepasst (von _hov. zu .hov.).
       */
      var Temp = SRC.src.split('.');

      SRC = '';

      var Zaehler = 0;
      var Laenge  = Temp.length;

      while (Zaehler < Temp.length)
      {
        /*
         * Eine bestehende 'hov'-Dateierweiterung wird
         * gelöscht
         */
        if (Temp[Zaehler] === 'hov')
        {
          Zaehler++;
          continue;
        }

        /*
         * Wenn notwendig wird eine 'hov'-Dateierweiterung
         * hinzugefügt
         */
        if (OB === 1 && Zaehler === Laenge - 1)
        {
          Temp[Zaehler] = 'hov.'+Temp[Zaehler];
        }

        /*
         * Zusammenfügen der neuen Quelle
         */
        if (SRC === '')
        {
          SRC = Temp[Zaehler];
        }
        else
        {
          SRC = SRC + '.' + Temp[Zaehler];
        }

        Zaehler++;
      }
    }

    /*
     * Schreiben der neuen src
     */
    if (NodeType === 1)
    {
      NR.src = SRC;
      return true;
    }

    if (NodeType === 2)
    {
      NR.firstChild.src = SRC;
      return true;
    }

    /*
     * Die neue SRC setzen
     */
    NR.firstChild.nextSibling.src = SRC;
    return true;
  }
};
