/**
 * @author patrick
 */


/************************************************************************************************
 *
 * CSS Klassenwechsel für Multimedia Reiter auf Artikelseiten
 *
 */
function showDiv(divID) {

  for (i=1; i < 5; i++) {
    if (i == divID)
      document.getElementById('mm'+i).style.display='block';
    else
      document.getElementById('mm'+i).style.display='none';
  }
}

function setClassOn(aID) {

  for (i=1; i < 5; i++) {
    if (i == aID)
      document.getElementById('navi'+i).className='on';
    else
      document.getElementById('navi'+i).className='';
  }
}

/************************************************************************************************
 *
 * indexpage show description
 *
 */

function showIndexpageDescription()
{
    if (document.getElementById('ip_what_is_content').style.display == "none")
      { 
          document.getElementById('ip_what_is_content').style.display = "block";
		  document.getElementById('ipsn_what_is').className='indexpage_subnavi_on';	
		  return false;
      } 
     else 
      { 
        document.getElementById('ip_what_is_content').style.display = "none";
        document.getElementById('ipsn_what_is').className='indexpage_subnavi';
        return true;
      } 
} 


/************************************************************************************************
 *
 * Flash Videoplayer
 *
 */
var FlashPlayer = new Class({

  // EINSTELLUNGEN
  options: {
    elements: {
      button: {         // Einstellungen für den Button, über den das Flash aktiviert wird
        "id":         "togglePlayer",
        'cssClass':       "togglePlayer"
      },

      loader: {         // Einstellungen für die Ladeanimation
        "id":         "loader",
        "img":          "/extension/p24_design/design/p24_v2/images/clipthumb.jpg",
        "text":         "lade...",
        "style": {
          position:       "fixed",
          top:        100,
          left:       300,
          opacity:      1
        }
      },

      flash: {          // Einstellungen für das Div, in das der Flash-Film geladen wird
        "id":         "flashOverlay",
        "style": {
          width:        720, //"100%",
          height:       630, //"100%",
          visibility:     "hidden",
          position:     "relative",
          //left:         0,
          top:        10,
          margin:       "0px auto"
        }
      },

      overlay: {          // Einstellungen für das Overlay, das abgedunkelt wird
        "id":         "flashOverlayContainer",
        "fx": {         // Abdunkel-Effekt: Entweder per transparentem png oder mit bgColor und opacity
          "image":      "/extension/p24_design/design/p24_v2/images/bg_trans_01.png",
          "color":		"transparent",	/* war "#000000", */
          "opacity":	1 /* war 0.7 */
        },
        "style": {
          width:        "100%",
          height:       "100%",
          visibility:     "hidden",
          position:     "fixed",
          left:         0,
          top:        0
        }
      }
    },

    flash: {            // Einstellungen für das SWFObject
      "id":           "flvplayer",
      "file":           "/extension/p24_design/design/p24_v2/assets/mediaplayer/player.swf",
      "width":          "100%",
      "height":         "100%",
      "version":          "9.0.115",
      "expressInstall":     "/extension/p24_design/design/p24_v2/javascript/swfobject/expressInstall.swf",
      "bgColor":          "#3F3F3F",

      "vars": {         // Flash-Vars für SWFObject
        "clipID":         "",
        "xmlPath":        "/layout/set/videoplayer-xml2"
      },
      "params": {         // Params für SWFObject
        "scale":        "noScale",
        "allowScriptAccess":  "always",
        "allowFullScreen":    "true"
        //"wmode":        "transparent"
      }
    }
  },



  // QUELLTEXT
  elements: {                 // Verwendete Elemente
    flash:                    null,
    overlay:                  null,
    loader:                   null,
    button:                   null
  },

  // FlashPlayer initialisieren
  initialize: function(options) {
    // Benutzerdefinierte Optionen laden
    this.options = $merge(this.options, options);

    // Button zum Abspielen aktivieren
    //this.elements.button    = $(this.options.elements.button.id);
    //this.elements.button.addEvent( 'click', this.show.bind(this));
    this.elements.button    = $$('.' + this.options.elements.button.cssClass);
    this.elements.button.each( function( el ){
      el.addEvent( 'click', this.show.bind(this));
    }.bind(this));


    // Overlay-Div für das Abdunkeln aktivieren
    this.elements.overlay     = this.createDiv(this.options.elements.overlay.id, this.options.elements.overlay.style);

    // Fix für IE für korrekte Positionierung
    if (Browser.Engine.name.toLowerCase() == "trident") {
      this.elements.overlay.setStyle("position", "absolute");
			this.elements.overlay.setStyle("height", $("siteHolder").getHeight() + "px");
    }

    // Flash-Div erstellen
    this.elements.flash     = this.createDiv(this.options.elements.flash.id, this.options.elements.flash.style, this.elements.overlay);

    // Fix für IE 6 für korrekte Positionierung des Flash-Divs
    /*if (Browser.Engine.name.toLowerCase() == "trident" && Browser.Engine.version < 5) {
      this.elements.flash.setStyle("height", "750px");
    }*/
  },

  // FlashPlayer zerstören
  destroy: function() {
    this.elements.button.removeEvents('click');
  },

  // Flash-Film laden
  displayFlash: function() {
    // Variante SWFObject neu
    //this.elements.flash.adopt (new Element("div", {id: "flashTest"}));
    /*this.so = swfobject.embedSWF(
      this.options.flash.file,
      "flashTest",
      this.options.flash.width,
      this.options.flash.height,
      this.options.flash.version,
      this.options.flash.expressInstall);*/


    // Variante SWFObject alt

    // SWFObject mit Einstellungen erzeugen
    this.so = new SWFObject( this.options.flash.file, this.options.flash.id, this.options.flash.width, this.options.flash.height, this.options.flash.version, this.options.flash.bgColor);

    // Parameter hinzufügen
    // -- Platz zum Nachdenken für den IE 6 --
    $each(this.options.flash.params, function(value, param) { this.so.addParam(param, value); }, this);

    // Flash-Vars hinzufügen
    // -- Platz zum Nachdenken für den IE 6 --
    $each(this.options.flash.vars, function(value, param) { this.so.addVariable(param, value); }, this);

    // Evtl. expressInstall konfigurieren
    if (this.options.flash.expressInstall !== false) {
      this.so.useExpressInstall(this.options.flash.expressInstall);
    }

    // Flash-Output schreiben
    this.so.write(this.options.elements.flash.id);

    // Variante MooTools Swiff
    /*
    var swiffOptions = {
      id: this.options.flash.id,
      height: this.options.flash.height,
      width: this.options.flash.width,
      container: this.elements.flash.id,
      properties: {},
      params: {
        quality: 'high',
        scale: "noScale",
        allowScriptAccess: 'always',
        //wMode: 'transparent',
        swLiveConnect: true
      },
      events: {},
      vars: this.options.flash.vars
    }
    this.so = new Swiff( this.options.flash.file, swiffOptions );
    */
  },

  // FlashPlayer anzeigen
  show: function(event) {
    // Abdunkeln aktivieren
    if (this.useCssOpacity()) {
      this.elements.overlay.setOpacity(this.options.elements.overlay.fx.opacity).setStyle("backgroundColor", this.options.elements.overlay.fx.color);
    } else {
      this.elements.overlay.setStyle("background", "url(" + this.options.elements.overlay.fx.image + ") repeat");
    }

    // Divs anzeigen
    this.elements.flash.setStyle( 'visibility', 'visible');
    this.elements.overlay.setStyle( 'visibility', 'visible');

    // Flash-Var für Player-Größe setzen
    if (event.target.className.match(/player-size-small/)) {
      this.options.flash.vars.videoSize = "480";
    } else {
      this.options.flash.vars.videoSize = "720";
    }
    
	// Flash-Var für Player-sprache setzen
    if (event.target.className.match(/language-en/)) {
      this.options.flash.vars.lang = "en";
    }
	
    // Flash anzeigen
    this.displayFlash();

    // Loader anzeigen
    this.showLoader();

    // Alternative Abbruch-Methode für Opera
    if (Browser.Engine.name.toLowerCase() == "presto" && Browser.Engine.version < 950) {
      this.hideLoader();
      this.elements.overlay.addEvent( 'mousedown', this.hide.bind(this));
    }

    // TEST zum beenden
    /*document.body.addEvent( 'mousedown', this.hide.bind(this));
    document.body.addEvent( 'mouseup', this.hideLoader.bind(this));*/
  },

  //FlashPlayer ENGLISH anzeigen
  showEN: function(event) {
    // Abdunkeln aktivieren
    if (this.useCssOpacity()) {
      this.elements.overlay.setOpacity(this.options.elements.overlay.fx.opacity).setStyle("backgroundColor", this.options.elements.overlay.fx.color);
    } else {
      this.elements.overlay.setStyle("background", "url(" + this.options.elements.overlay.fx.image + ") repeat");
    }

    // Divs anzeigen
    this.elements.flash.setStyle( 'visibility', 'visible');
    this.elements.overlay.setStyle( 'visibility', 'visible');

    // Flash-Var für Player-Größe setzen
    this.options.flash.vars.videoSize = "720";
    this.options.flash.vars.lang = "en";
    	
    // Flash anzeigen
    this.displayFlash();

    // Loader anzeigen
    this.showLoader();

    // Alternative Abbruch-Methode für Opera
    if (Browser.Engine.name.toLowerCase() == "presto" && Browser.Engine.version < 950) {
      this.hideLoader();
      this.elements.overlay.addEvent( 'mousedown', this.hide.bind(this));
    }

    // TEST zum beenden
    /*document.body.addEvent( 'mousedown', this.hide.bind(this));
    document.body.addEvent( 'mouseup', this.hideLoader.bind(this));*/
  },
  
  // FlashPlayer verstecken
  hide: function() {
    // SWFObject zurücksetzen
    this.so = null;

    // Divs verstecken
    this.elements.flash.setStyle( 'visibility', 'hidden');
    this.elements.overlay.setStyle( 'visibility', 'hidden');

    // Flash-Film aus DOM entfernen
    this.elements.flash.removeChild($('flvplayer'));
    this.elements.flash.innerHTML = "";

    // MooTools-Code:
    /*__flash_unloadHandler = __flash_savedUnloadHandler = $empty;
    Array.each(document.getElementsByTagName('object'), function(obj){
        obj.style.display = 'none';
        for (var p in obj){
          if (typeof obj[p] == 'function') {
            obj[p] = $empty;
          }
        }
    });*/
    //this.elements.flash.innerHTML = "";
  },

  // Loader-Div mit Bild und Text anzeigen
  showLoader: function() {
    /*this.elements.loader = new Element("div", {
      "id": this.options.elements.loader.id
    }).inject(document.body)
    .setStyles(this.options.elements.loader.style)
    .appendText(this.options.elements.loader.text);

    this.elements.loader.appendChild(new Element("img", {
          "src":  this.options.elements.loader.img
    }));*/
  },

  // Entfernt die Lade-Animation
  hideLoader: function() {
    //document.body.removeChild(this.elements.loader);
  },

  // Unterstützt der verwendete Browser Abdunkeln per CSS gescheit? (nicht der Fall bei Opera (8) und Mac)
  useCssOpacity: function() {
    return (Browser.Engine.name.toLowerCase() == "gecko" ||
        Browser.Engine.name.toLowerCase() == "presto" ||
        Browser.Engine.name.toLowerCase() == "webkit") ? false : true;
  },

  // Erzeugt im Body ein neues Div mit benötigten CSS-Eigenschaften und Attributen
  createDiv: function(id, style, parent) {
    parent = $defined(parent) ? parent : document.body;

    // Div erzeugen
    var div = new Element("div", {
      "id": id
    }).setStyles(style).inject(parent);

    return div;
  }
});

/************************************************************************************************
 *
 * hover
 * @author Jakob Franke <jf@erhardt10.de>
 * @copyright 2008 by Jakob Franke
 */


// Hover-Effekt fü alle Elemente mit CSS-Selektor gemäß options.container
// Die neue Bild-Url ist in den Divs mit dem Selektor options.hover
var Hover = new Class({
  // Optionen
  options: {
    "container":      ".clipContainer", // Elemente, deren Bilder ausgetauscht werden sollen
    "hover":        ".clipPicOver"    // Divs, die die neue URL enthalten
  },

  // Gespeicherte Kombinationen
  map: {},


  initialize: function(options) {
    this.options = $merge(this.options, options);

    // Events setzen
    $$(this.options.container).each(this.set.bind(this));
  },

  // Hover-Events für einzelne Elemente festlegen
  set: function(el) {
    var over = $$("#" + el.id + " " + this.options.hover)[0].innerHTML;
    if (over !== "" && over.length > 1) { // Ist ein Hover-Bild definiert?
      var img = $$("#" + el.id + " img")[0];

      // Zuordnung ID -> altes Bild / neues Bild festhalten
      this.map[this.getId(el, 5)] = {
        el:   img,
        out:  img.src,
        over: over
      };

      // Preloading
      new Asset.image(img.src);
      new Asset.image(over);

      // Events setzen
      el.addEvent("mouseover", this.over.bind(this));
      el.addEvent("mouseout", this.out.bind(this));
    }
  },

  // Aktionen bei mouseover
  over: function(event) {
    // Hover-Bild zuweisen
    var img = this.map[this.getId(event.target, 10)];
    if ($defined(img)) {
      img.el.src = img.over;
    }
  },

  // Aktionen bei mouseout
  out: function(event) {
    // Normales Bild zuweisen
    var img = this.map[this.getId(event.target, 10)];
    if ($defined(img)) {
      img.el.src = img.out;
    }
  },

  // Bestimmt rekursiv die nächste gesetzte ID bis zu depth Ebenen oberhalb von el
  getId: function(el, depth) {
    if (depth <= 1) { // Zu tief verschachtelt? Dann mit false abbrechen
      return false;
    }
    if (el.id === "") { // Keine ID gesetzt? Dann eine Ebene höher suchen
      return this.getId(el.parentNode, depth - 1);
    }
    return el.id.replace(/\D+/,'');
  }
});




