/*
 *         IT JS-Bibliothek
 *
 *        Contains:                » dump
 *                                        » paper
 *                                        » slideItems
 *                                        » addBookmark
 *                                        » AJAX Calendar
 *                                        » controlVersion für Flash
 *                                        » createClipboard
 *                                        » createITEvents
 *                                        » createCurrentMags
 *                                        » Base64 E-Mail-Codierung
 *                                        » makeScrollbar
 *                                        » Popup-Script
 *
 *                                        ##DOM READY##
 *                                        » ITRHover
 *                                        » Tooltips
 *                                        » Mediapool Scroll erzeugen
 */


/*
 * DUMP: Anzeigen von Arrays wie print_r
 */

function dump(arr,level) {
        var dumped_text = "";
        if(!level) level = 0;

        //The padding given at the beginning of the line.
        var level_padding = "";
        for(var j=0;j<level+1;j++) level_padding += "    ";

        if(typeof(arr) == 'object') { //Array/Hashes/Objects
         for(var item in arr) {
          var value = arr[item];

          if(typeof(value) == 'object') { //If it is an array,
           dumped_text += level_padding + "'" + item + "' ...\n";
           dumped_text += dump(value,level+1);
          } else {
           dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
          }
         }
        } else { //Stings/Chars/Numbers etc.
         dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
        }
        return dumped_text;
}


/*
 *        SCROLL WHITEPAPER: Whitepaper durchscrollen lassen
 */

function paper() {

        if ($('scroll-whitepaper-active')) {

        container        =        $('Whitepaper');
        contElems        =        $('Whitepaper').getElements('div[class=item]');
        conHeight        =        $('Whitepaper').getStyle('height').toInt();
        firstElement=        $('Whitepaper').getElement('div[class=item]');


        // Höhe setzen
        container.setStyle('height','250px');

        /**         ausrechnen wie weit denn eigtl nach unten gescrollt werden kann
        *
        *                 Gesamthöhe Content ist "conHeight"
        *                 Höhe des Viewports ist "250 px"
        *
        **/


        var        steps                =        (conHeight/250).round(0);
                stepHeight        =        (conHeight/steps);
                step                =        0;


            control        =        $('sidebar').getElement('div[class=scroll-whiterpaper]');

                if(control.getElements('a')[0]) {
                        forward        =        control.getElements('a')[0];
                       back        =        control.getElements('a')[1];
                }

                // Wenn nur ein Step, Pfeile ausblenden
                if(steps == 1) {
                        control.setStyle('display', 'none');
                }


        var        effectScroll        =        firstElement.effect('margin-top', {duration: 500, transition: Fx.Transitions.Quad.easeInOut});


                activeScroll        =        false;

                back.addEvent('click', function(){
                        if ( step < steps-1 && activeScroll == false) {
                                activeScrol        =        true;
                                effectScroll.start((-stepHeight*step),(-stepHeight*(step+1))).chain(function(){
                                        activeScrol        =        false;
                                });


                                step++;
                        }        else if (activeScroll == false){
                                        activeScrol        =        true;
                                effectScroll.start((-stepHeight*step),0).chain(function(){
                                        activeScrol        =        false;
                                });
                                step = 0;
                        }
                });


                forward.addEvent('click', function(){
                        if ( step > 0) {

                                effectScroll.start((-stepHeight*step),(-stepHeight*(step-1)));
                                step = step - 1;
                        }        else {
                                effectScroll.start(0,(-stepHeight*(steps-1)));
                                step = steps-1;
                        }
                });
        }
}

/*
 *        SLIDEITEMS: Items in Whitepaperkasten durchschalten
 */

function slideItems() {

        container        =        $('featurebox');
        contElems        =        $('Whitepaper').getElements('div[class=item]');
        conHeight        =        $('Whitepaper').getStyle('height').toInt();
        firstElement=        $('Whitepaper').getElement('div[class=item]');

        // Höhe setzen
        container.setStyle('height','250px');

        /**         ausrechnen wie weit denn eigtl nach unten gescrollt werden kann
         *
         *                 Gesamthöhe Content ist "conHeight"
         *                 Höhe des Viewports ist "250 px"
         *
        **/


        var        steps                =        (conHeight/250).round(0);
                stepHeight        =        (conHeight/steps);
                step                =        0;

            control        =        $('sidebar').getElement('div[class=scroll-whiterpaper]');

        forward        =        control.getElements('a')[0];
               back        =        control.getElements('a')[1];

        var        effectScroll        =        firstElement.effect('margin-top', {duration: 500, transition: Fx.Transitions.Quad.easeInOut});

                activeScroll        =        false;
                back.addEvent('click', function(){
                        if ( step < steps-1 && activeScroll == false) {
                                activeScrol        =        true;
                                effectScroll.start((-stepHeight*step),(-stepHeight*(step+1))).chain(function(){
                                        activeScrol        =        false;
                                });


                                step++;
                        }        else if (activeScroll == false){
                                        activeScrol        =        true;
                                effectScroll.start((-stepHeight*step),0).chain(function(){
                                        activeScrol        =        false;
                                });
                                step = 0;
                        }
                });


                forward.addEvent('click', function(){
                        if ( step > 0) {

                                effectScroll.start((-stepHeight*step),(-stepHeight*(step-1)));
                                step = step - 1;
                        }        else {
                                effectScroll.start(0,(-stepHeight*(steps-1)));
                                step = steps-1;
                        }
                });

}

/*
 * ADDBOOKMARK: Browserübergreifendes JS-Bookmarking
 */

function addBookmark(title,url) {
    if( document.all ) {
        window.external.AddFavorite( url, title);
    }
    else if (window.sidebar) {
        window.sidebar.addPanel(title, url,"");
    }
    else if( window.opera && window.print ) {
        return true;
    }
}


/*
 * AJAX Calendar: Bietet die Funktionalitäten für den AJAX Kalender auf unseren Portalen(Kalenderansicht)
 */

var xmlHttp = false;
var sDate;
var plsheight = 110; // pro Event wird um soviel Pixel weiter nach unten geklappt!


function toggleEventbox(events) {

        var cntEvent = events;

        if (document.getElementById('eventbox').style.height == "") {
        eventbox_height = 24 + (events * plsheight);
           $('eventbox').effect('height', {duration: 700, transition:Fx.Transitions.Quart.easeInOut}).start(0,eventbox_height);
        } else {
           $('eventbox').effect('height', {duration: 200, transition:Fx.Transitions.Quart.easeOut}).start(eventbox_height,0);
        setTimeout("outEventbox(" + events + ")", 200);
        }

}

function outEventbox(events) {
        eventbox_height = 24 + (events * plsheight);
$('eventbox').effect('height', {duration: 700, transition:Fx.Transitions.Quart.easeInOut}).start(0,eventbox_height);
}

function createCalendar()
{
   var sHTML;
   var i;

   // Tabellen-Code zusammenstellen
   sHTML = '<div id="calendar">'
   sHTML += ' <div id="caltitle" class="title">&nbsp;</div>'
   sHTML += ' <div id="calprev">&nbsp;</div>'
   sHTML += ' <div id="calnext">&nbsp;</div>'
   sHTML += ' <div class="line">&nbsp;</div>'
   sHTML += ' <div>'
   /*
   sHTML += '  <div class="wd">Mo</div>'
   sHTML += '  <div class="wd">Di</div>'
   sHTML += '  <div class="wd">Mi</div>'
   sHTML += '  <div class="wd">Do</div>'
   sHTML += '  <div class="wd">Fr</div>'
   sHTML += '  <div class="wd">Sa</div>'
   sHTML += '  <div class="wd">So</div>'
        */
   // Tabelle mit 6 Zeilen und 7 Spalten erstellen
   for(i = 1; i <= 42; i++) {
          sHTML += '<div class="d" id="calCell' + i + '">&nbsp;</div>'
   }
   sHTML += '';
   sHTML += ' </div>'
   sHTML += '</div>'

        // Kalender ausgeben
        document.write(sHTML);
}

 function getData(val, server, topics) {
                            var url = 'http://' + server + '/it/ext_scripts/events/cal.php?d=' + val + '&topics=' + topics;
                            new Ajax(url, {
                                        method: 'get',
                                        update: $('eventbox')
                                        }
                                    ).request();
                            return false;
}

function getCalendar(serverN, iMonth, iYear, topics)
{

   // aktuelles Datum in Variable speichern
   sDate = new Date();

   // wenn Parameter leer, dann aktuellen Monat verwenden
   if (iMonth == null) {
   iMonth = sDate.getMonth();
   iYear = sDate.getFullYear(); }

   // Mozilla und Co.
   if (window.XMLHttpRequest) {
          xmlHttp = new XMLHttpRequest(); }
   // IE
   else if (window.ActiveXObject) {
          xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); }
   else {
          // Falls nicht unterstützt
          xmlHttp = false; }

   // URL zusammenstellen und Inhalt über GET asynchron holen
   var sXMLUrl = 'http://'+serverN+'/it/ext_scripts/events/calendarcontent.php?m=' + (iMonth + 1) + '&y=' + iYear + '&top=' + topics;
   xmlHttp.open("GET", sXMLUrl, true);
   xmlHttp.onreadystatechange = function() {
          // Objekt meldet "loaded"
          if (xmlHttp.readyState == 4) {
                 // Objekt meldet "OK"

                 if (xmlHttp.status == 200) {
                        // Funktion zum Füllen der Tabelle ausführen

                        fillCalendar(serverN, iMonth, iYear, topics);

                 }

          }
   }

   xmlHttp.send(null);
}


function fillCalendar(serverN, iMonth, iYear, topics)
{

        //neu mit empty-classes füllen
        for(i = 1; i <= 42; i++) {
          hItem = document.getElementById("calCell" + i);
          hItem.className = 'empty';
        }

        // Monats-Array bilden
        var aMonths = new Array(
          'Januar', 'Februar', 'März', 'April',
          'Mai', 'Juni', 'Juli', 'August',
          'September', 'Oktober', 'November', 'Dezember');

   // Monate ermitteln
   var iThisMonth = new Date(iYear, iMonth, 1);
   var iPrevMonth = new Date(iYear, iMonth - 1, 1);
   var iNextMonth = new Date(iYear, iMonth + 1, 1);

   // Erster Wochentag und Anzahl Tage/Monat ermitteln
   var iFirstWeekday = iThisMonth.getDay();
   if (iFirstWeekday == 0) iFirstWeekday = 7;
   var iDaysInMonth = Math.floor((iNextMonth.getTime()
          - iThisMonth.getTime()) / (1000 * 60 * 60 * 24));

   // Link zu vorherigem Monat
   var sPrev = '<a href="javascript: getCalendar(\'' + serverN + '\',' + iPrevMonth.getMonth() + ',' + iPrevMonth.getFullYear() + ',\'' + topics + '\')">&laquo;</a>';
   hItem = document.getElementById("calprev");

   hItem.innerHTML = sPrev;


   // Überschrift aus Monats-Array
   hItem = document.getElementById("caltitle")
   hItem.innerHTML = aMonths[iMonth] + ' ' + iYear;

   // Link zu nächstem Monat
   var sNext = '<a href="javascript: getCalendar(\'' + serverN + '\','
          + iNextMonth.getMonth() + ','
          + iNextMonth.getFullYear() + ',\'' + topics +'\')">&raquo;</a>';
   hItem = document.getElementById("calnext")
   hItem.innerHTML = sNext;

   // Leere Tage am Anfang auffüllen
   for(iCellId=1; iCellId < iFirstWeekday; iCellId++) {
          hItem = document.getElementById("calCell" + iCellId);
          hItem.innerHTML = '&nbsp;'; }

   // XML-Objekt initialisieren
   var xmlDok = xmlHttp.responseXML;
   // Variable initialieren
   var iCellDay=1;

   // Schleife über alle Tage des Monats
   var filled = false;
   for(iCellId = iFirstWeekday; iCellDay <= iDaysInMonth; iCellId++) {

          // Anzahl Beiträge aus XML ermitteln
          iItemCount = xmlDok.getElementsByTagName("day")[iCellDay - 1].firstChild.nodeValue;

          // Zellinhalt bestimmen (Link auf Beiträge oder nicht)
          if (iItemCount == 0) {
                 sDayHTML = iCellDay;
                 filled = false;
          } else {
                        var sDayString = iCellDay + "." + (iMonth + 1) + "." + iYear;
                        sDayHTML = '<a class="selected" onclick="getData(\'' + sDayString + '\', \'' + serverN + '\', \'' + topics + '\');">' + iCellDay + '</a>';
                        filled = true;
          }

          // Zellinhalt zuweisen
          hItem = document.getElementById("calCell" + iCellId);
          hItem.innerHTML = sDayHTML;

          // Zelle mit CSS-Klasse versehen (anders, wenn Tag=heute)
          var sDateString = iCellDay + '.' + iMonth + '.' + iYear
          var sDateToday =
                 sDate.getDate() + '.' +
                 sDate.getMonth() + '.' +
                 sDate.getFullYear();

          if (sDateString == sDateToday) {
                 hItem.className = "d td";
          }
          else if(filled) {
                 hItem.className = "filled";
          }
          else {
                hItem.className = "notfilled";
          }

          iCellDay++;
        }

   // Leere Tage am Ende auffüllen
   for(iCellId; iCellId <= 42; iCellId++) {
   hItem = document.getElementById("calCell" + iCellId)
   hItem.innerHTML = '&nbsp;'; }
}


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// v1.7
// Flash Player Version Detection
// Detect Client Browser type
// Copyright 2005-2007 Adobe Systems Incorporated.  All rights reserved.

var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;

function ControlVersion()
{
        var version;
        var axo;
        var e;

        // NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry

        try {
                // version will be set for 7.X or greater players
                axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
                version = axo.GetVariable("$version");
        } catch (e) {
        }

        if (!version)
        {
                try {
                        // version will be set for 6.X players only
                        axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");

                        // installed player is some revision of 6.0
                        // GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
                        // so we have to be careful.

                        // default to the first public version
                        version = "WIN 6,0,21,0";

                        // throws if AllowScripAccess does not exist (introduced in 6.0r47)
                        axo.AllowScriptAccess = "always";

                        // safe to call for 6.0r47 or greater
                        version = axo.GetVariable("$version");

                } catch (e) {
                }
        }

        if (!version)
        {
                try {
                        // version will be set for 4.X or 5.X player
                        axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
                        version = axo.GetVariable("$version");
                } catch (e) {
                }
        }

        if (!version)
        {
                try {
                        // version will be set for 3.X player
                        axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
                        version = "WIN 3,0,18,0";
                } catch (e) {
                }
        }

        if (!version)
        {
                try {
                        // version will be set for 2.X player
                        axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
                        version = "WIN 2,0,0,11";
                } catch (e) {
                        version = -1;
                }
        }

        return version;
}

// JavaScript helper required to detect Flash Player PlugIn version information
function GetSwfVer(){
        // NS/Opera version >= 3 check for Flash plugin in plugin array
        var flashVer = -1;

        if (navigator.plugins != null && navigator.plugins.length > 0) {
                if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
                        var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
                        var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
                        var descArray = flashDescription.split(" ");
                        var tempArrayMajor = descArray[2].split(".");
                        var versionMajor = tempArrayMajor[0];
                        var versionMinor = tempArrayMajor[1];
                        var versionRevision = descArray[3];
                        if (versionRevision == "") {
                                versionRevision = descArray[4];
                        }
                        if (versionRevision[0] == "d") {
                                versionRevision = versionRevision.substring(1);
                        } else if (versionRevision[0] == "r") {
                                versionRevision = versionRevision.substring(1);
                                if (versionRevision.indexOf("d") > 0) {
                                        versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
                                }
                        }
                        var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
                }
        }
        // MSN/WebTV 2.6 supports Flash 4
        else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
        // WebTV 2.5 supports Flash 3
        else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
        // older WebTV supports Flash 2
        else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
        else if ( isIE && isWin && !isOpera ) {
                flashVer = ControlVersion();
        }
        return flashVer;
}

// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
{
        versionStr = GetSwfVer();
        if (versionStr == -1 ) {
                return false;
        } else if (versionStr != 0) {
                if(isIE && isWin && !isOpera) {
                        // Given "WIN 2,0,0,11"
                        tempArray         = versionStr.split(" ");         // ["WIN", "2,0,0,11"]
                        tempString        = tempArray[1];                        // "2,0,0,11"
                        versionArray      = tempString.split(",");        // ['2', '0', '0', '11']
                } else {
                        versionArray      = versionStr.split(".");
                }
                var versionMajor      = versionArray[0];
                var versionMinor      = versionArray[1];
                var versionRevision   = versionArray[2];

                // is the major.revision >= requested major.revision AND the minor version >= requested minor
                if (versionMajor > parseFloat(reqMajorVer)) {
                        return true;
                } else if (versionMajor == parseFloat(reqMajorVer)) {
                        if (versionMinor > parseFloat(reqMinorVer))
                                return true;
                        else if (versionMinor == parseFloat(reqMinorVer)) {
                                if (versionRevision >= parseFloat(reqRevision))
                                        return true;
                        }
                }
                return false;
        }
}

function AC_AddExtension(src, ext)
{
  if (src.indexOf('?') != -1)
    return src.replace(/\?/, ext+'?');
  else
    return src + ext;
}

function AC_Generateobj(objAttrs, params, embedAttrs)
{
  var str = '';
  if (isIE && isWin && !isOpera)
  {
    str += '<object ';
    for (var i in objAttrs)
    {
      str += i + '="' + objAttrs[i] + '" ';
    }
    str += '>';
    for (var i in params)
    {
      str += '<param name="' + i + '" value="' + params[i] + '" /> ';
    }
    str += '</object>';
  }
  else
  {
    str += '<embed ';
    for (var i in embedAttrs)
    {
      str += i + '="' + embedAttrs[i] + '" ';
    }
    str += '> </embed>';
  }

  document.write(str);
}

function AC_FL_RunContent(){
  var ret =
    AC_GetArgs
    (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "application/x-shockwave-flash"
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_SW_RunContent(){
  var ret =
    AC_GetArgs
    (  arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
     , null
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();

    switch (currArg){
      case "classid":
        break;
      case "pluginspage":
        ret.embedAttrs[args[i]] = args[i+1];
        break;
      case "src":
      case "movie":
        args[i+1] = AC_AddExtension(args[i+1], ext);
        ret.embedAttrs["src"] = args[i+1];
        ret.params[srcParamName] = args[i+1];
        break;
      case "onafterupdate":
      case "onbeforeupdate":
      case "onblur":
      case "oncellchange":
      case "onclick":
      case "ondblClick":
      case "ondrag":
      case "ondragend":
      case "ondragenter":
      case "ondragleave":
      case "ondragover":
      case "ondrop":
      case "onfinish":
      case "onfocus":
      case "onhelp":
      case "onmousedown":
      case "onmouseup":
      case "onmouseover":
      case "onmousemove":
      case "onmouseout":
      case "onkeypress":
      case "onkeydown":
      case "onkeyup":
      case "onload":
      case "onlosecapture":
      case "onpropertychange":
      case "onreadystatechange":
      case "onrowsdelete":
      case "onrowenter":
      case "onrowexit":
      case "onrowsinserted":
      case "onstart":
      case "onscroll":
      case "onbeforeeditfocus":
      case "onactivate":
      case "onbeforedeactivate":
      case "ondeactivate":
      case "type":
      case "codebase":
      case "id":
        ret.objAttrs[args[i]] = args[i+1];
        break;
      case "width":
      case "height":
      case "align":
      case "vspace":
      case "hspace":
      case "class":
      case "title":
      case "accesskey":
      case "name":
      case "tabindex":
        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
        break;
      default:
        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
    }
  }
  ret.objAttrs["classid"] = classid;
  if (mimeType) ret.embedAttrs["type"] = mimeType;
  return ret;
}

//
//        END FLASH GEDÖNS
///////////////////////////////////////////////////////////////////////////////////////////////////////////



/*
 * CREATECLIPBOARD: Kopiert Quelltextinhalte in die Zwischenablage
 */
function createClipboard()
        {
                        listings        =        $('corpus').getElements('input[id^=code_]');
                        lsitingsOl        =        $('corpus').getElements('ol[class=code]');
                        clipFrames        =        $('corpus').getElements('div[class=clipboard-frame]')
                        var clip = new Array();
                        listings.each(function(item, index)
                                {

                                        var clipFrame =         new Element('div', {
                                                                                        'class': 'clipboard-frame',
                                                                                });
                                        clipFrame.injectAfter(lsitingsOl[index]);


                                        new Element('a', {
                                                                        'href':        '#',
                                                                        'class': 'clipboard',
                                                                        'id' : 'clipboard_'+index,
                                                                        'styles': { 'color':'#666'}
                                                                }).setText('Quelltext in die Zwischenablage kopieren').injectInside(clipFrame);
                                                             clip[index] = new Object();
                                                             clip[index] = new ZeroClipboard.Client();
                                                             clip[index].setText('');
                                                             clip[index].glue('clipboard_'+index);
                                                             clip[index].addEventListener('mouseOver', function(client)
                                                                     {
                                                                             clip[index].setText(document.getElementById('code_'+index).value);
                                                                     }
                                                             );

                                });



        }



/*
 *        CREATEITEVENTS: Eventkästen Switchbereit machen
 */

function createITEvents(){
        if ($('it-events').getElement('a[class=listing]'))        {
                listViewLink        =        $('it-events').getElement('a[class=listing]');
                blockViewLink        =        $('it-events').getElement('a[class=calendar]');

                hoverLinks        =        new Array();
                hoverLinks.extend([listViewLink, blockViewLink]);
                hoverLinks.each(function(item, index){
                        item.addEvents({
                                'mouseenter': function(){
                                        this.setStyle('opacity','0.57');
                                },
                                'mouseleave': function(){
                                        this.setStyle('opacity','1');
                                }
                        });
                });


                listBox                =        $('listing');
                blockBox        =        $('calendar');
                calendarBoxes        =        new Array();
                calendarBoxes.extend([listBox        , blockBox]);
                calendarBoxes.each(function(item, index){
                        item.setStyle('display','none');
                });


                listViewLink.addEvent('click', function(){
                        listBox.setStyle('display','block');
                        blockBox.setStyle('display','none');
                });
                blockViewLink.addEvent('click', function(){
                        listBox.setStyle('display','none');
                        blockBox.setStyle('display','block');
                });


                listBox.setStyle('display','block');
        }
}

/*
 * CREATECURRENTMAGS: Erzeugt Sidebarelement mit neusten Magazinen
 */

function createCurrentMags() {
        containerMags        =         $('in-store');
        linksMags                =         containerMags.getElements('a');
        linksMagsCount        =         linksMags.length;
        containerMags.setStyles({        'position':'relative'
                                                        });
        linksMags.each(function(item, index){
                item.setStyles({        'position':'absolute',
                                                           'top':'20px',
                                                        'left':'30px',
                                                        'visibility':'hidden'
                                           });
        });
                        var show = function(el){
                                var div = $(el).setStyles({        display:'block',opacity: 0});
                                new Fx.Style(div, 'opacity', {duration: 1000} ).start(1);
                        };

                        var hide = function(el){
                                var div = $(el).setStyles({        display:'block',opacity: 1.0});
                                new Fx.Style(div, 'opacity', {duration: 1000} ).start(0.0);
                        };
        initTeaser();
        function initTeaser() {

                        show(linksMags[0]);
                        teaserNumber = 1;
                        if(linksMags.length > 1) {
                        timer                         =        control.periodical(4000);
                        }
        }
        function control() {
                                if (linksMagsCount != teaserNumber)
                                        {
                                                show(linksMags[teaserNumber]);
                                                hide(linksMags[teaserNumber-1]);
                                                teaserNumber        =        teaserNumber+1;
                                        }
                                else
                                        {
                                                show(linksMags[0]);
                                                hide(linksMags[linksMagsCount-1]);
                                                teaserNumber = 1;
                                        }
        }
}


/*
 * BASE64, E-Mail Codierung
 */

var Base64 = {

    // private property
    _keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",

    // public method for encoding
    encode : function (input) {
        var output = "";
        var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
        var i = 0;

        input = Base64._utf8_encode(input);

        while (i < input.length) {

            chr1 = input.charCodeAt(i++);
            chr2 = input.charCodeAt(i++);
            chr3 = input.charCodeAt(i++);

            enc1 = chr1 >> 2;
            enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
            enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
            enc4 = chr3 & 63;

            if (isNaN(chr2)) {
                enc3 = enc4 = 64;
            } else if (isNaN(chr3)) {
                enc4 = 64;
            }

            output = output +
            this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
            this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);

        }

        return output;
    },

    // public method for decoding
    decode : function (input) {
        var output = "";
        var chr1, chr2, chr3;
        var enc1, enc2, enc3, enc4;
        var i = 0;

        input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

        while (i < input.length) {

            enc1 = this._keyStr.indexOf(input.charAt(i++));
            enc2 = this._keyStr.indexOf(input.charAt(i++));
            enc3 = this._keyStr.indexOf(input.charAt(i++));
            enc4 = this._keyStr.indexOf(input.charAt(i++));

            chr1 = (enc1 << 2) | (enc2 >> 4);
            chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
            chr3 = ((enc3 & 3) << 6) | enc4;

            output = output + String.fromCharCode(chr1);

            if (enc3 != 64) {
                output = output + String.fromCharCode(chr2);
            }
            if (enc4 != 64) {
                output = output + String.fromCharCode(chr3);
            }

        }

        output = Base64._utf8_decode(output);

        return output;

    },

    // private method for UTF-8 encoding
    _utf8_encode : function (string) {
        string = string.replace(/\r\n/g,"\n");
        var utftext = "";

        for (var n = 0; n < string.length; n++) {

            var c = string.charCodeAt(n);

            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }

        }

        return utftext;
    },

    // private method for UTF-8 decoding
    _utf8_decode : function (utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;

        while ( i < utftext.length ) {

            c = utftext.charCodeAt(i);

            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else if((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i+1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i+1);
                c3 = utftext.charCodeAt(i+2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }

        }

        return string;
    }

}

/*
 *         POPUP: Erzeugt ein Popup mittels onclick-Angabe im Link
 */

        var pop = null;

        function popdown() {
          if (pop && !pop.closed) pop.close();
        }

        function popup(obj,w,h) {
          var url = (obj.getAttribute) ? obj.getAttribute('href') : obj.href;
          if (!url) return true;
          w = (w) ? w += 20 : 150;  // 150px*150px is the default size
          h = (h) ? h += 25 : 150;
          var args = 'width='+w+',height='+h+',resizable,'+'scrollbars=yes';
          popdown();
          pop = window.open(url,'',args);
          return (pop) ? false : true;
        }



/*
 *  MAKESCROLLBAR: Erzeugt den Mediapool
         !DEFEKT!

function makeScrollbar(content,scrollbar,handle,horizontal,ignoreMouse){

                                  var dir=1;
                                var steps = (horizontal?(content.getSize().scrollSize.x - content.getSize().size.x):(content.getSize().scrollSize.y - content.getSize().size.y))
                                 var fx = function() {
                                              var step = slider.step + dir;
                                         slider.set(step);

                                }
                                var slider = new Slider(scrollbar, handle, {
                                        steps: steps,
                                        mode: (horizontal?'horizontal':'vertical'),
                                        onChange: function(step){
                                        // Scrolls the content element in x or y direction.
                                        var x = (horizontal?step:0);
                                        var y = (horizontal?0:step);
                                        content.scrollTo(x,y);
                                        }
                                }).set(0);
                                if( !(ignoreMouse) ){
                                        // Scroll the content element when the mousewheel is used within the
                                        // content or the scrollbar element.
                                        $$(content, scrollbar).addEvent('mousewheel', function(e){
                                                e = new Event(e).stop();
                                                var step = slider.step - e.wheel * 30;
                                                slider.set(step);
                                        });
                                        $(content).addEvent('mouseenter', function(e){
                                                e = new Event(e).stop();
                                                 if(e.client.x>420) dir=(e.client.x-420)/6;
                                                 else{
                                                    if(e.client.x<165) dir = (e.client.x-165)/6;
                                                    else dir = 0;
                                                 }
                                                 fx();
                                                periodical = fx.periodical(10);
                                        });
                                        $(content).addEvent('mouseover', function(e){
                                                e = new Event(e).stop();
                                                 if(e.client.x>420) dir=(e.client.x-420)/6;
                                                 else{
                                                    if(e.client.x<165) dir = (e.client.x-165)/6;
                                                    else dir = 0;
                                                 }
                                        });
                                        $(content).addEvent('mouseleave', function(e){
                                               try{
                                                $clear(periodical);
                                               } catch(e){}
                                        });
                                }
}

*/

//////////////////////////////////////////////////////////////////////////////////////////////
// BEGIN DOM-READY PART                                                                                                                                        //
//////////////////////////////////////////////////////////////////////////////////////////////

window.addEvent('load', function() {

        // Navigation erzeugen, wenn ID existiert
        if($('navmenu')) {
                var lastNavElement = null;
                elmHover = $$('#navmenu li');
                elmHover.addEvent('mouseover', function() {

                    if(lastNavElement == null && $(this.className) != null) {
                        lastNavElement = this;
                    } else if($(this.className) != null) {
                        $(lastNavElement.className).setStyle('display', 'none');
                        lastNavElement = this;
                    }
                    if($(this.className)) {
                        $(this.className).setStyle('display', 'block');
                        $(this.className).addEvent('mouseleave', function() {
                            this.setStyle('display', 'none');
                            // this.removeEvents('mouseleave');
                        });
                    }
                });


        }

        // Ausgaben Index
        if (        $('ausgaben-index-php')        )
                {

                        sources        =        $('ausgaben-index').getElements('ul[class=issue-archive-source-content]');
                        heads        =        $('ausgaben-index').getElements('div[class=issue-archive-source-title]');

                        sources.each(function(item, index)
                                {
                                           item.setStyle('display','none');


                                        heads[index].setStyle('cursor','pointer');
                                        heads[index].setStyle('text-decoration','underline');

                                        heads[index].addEvent('click', function()
                                                {
                                                        sources[index].setStyle('display','block');
                                                });
                                });


                        }

        // Falls Quelltexte vorhanden sind, kopiermöglichkeit anhängen
        if($('corpus').getElement('input[id^=code_]'))
                        {
                                        createClipboard();
                        }



        // Sidebarelemente aktivieren, wenn entsprechende IDs vorhanden sind
        if($('Whitepaper')) {
                paper();
        } else {

                if($('scroll-whitepaper')) {
                control        =        $('sidebar').getElement('div[class=scroll-whiterpaper]');
                control.setStyle('display', 'none');
                }
        }

        if($('in-store')) {
                createCurrentMags();
        }
        if($('it-events')) {
                createITEvents();
        }


        // Tooltipps initialisieren
        var ttip = new Tips($$('.ttip'), {
                                initialize:function(){
                                        this.fx = new Fx.Style(this.toolTip, 'opacity', {duration: 500, wait: false}).set(0);
                                },
                                        onShow: function(toolTip) {
                                        this.fx.start(1);
                                },
                                        onHide: function(toolTip) {
                                        this.fx.start(0);
                                },
                                showDelay: 400
        });





                       var email_list=document.getElementsByTagName('a');
                       for (var i=0; i<email_list.length; i++) {
                                   var ref=email_list[i].getAttribute('href');
                                   if (!ref) { continue; }

                                           if (ref.indexOf('protect:')==0) {
                                            ajax_email(email_list[i],ref);
                                                                       } else {

                                                                                   if (ref.indexOf('protectvoll:')==0) {
                                                                                     ajax_email_voll(email_list[i],ref)
                                                                      }
                                                       }

                        }

                        function ajax_email(item,ref) {
                          new Ajax('/it/ext_scripts/mail_protect/emailDecode.php', {
                                 method: 'post',
                                 update: null,
                                 onComplete: function(response) {
                                 item.setAttribute('href','mailto:'+response);
                                  },
                                 data: { 'email' : ref.substr(8) }  ,
                                 evalScripts: true
                          }).request();

                        }

                        function ajax_email_voll(item,ref) {
                          new Ajax('/it/ext_scripts/mail_protect/emailDecode.php', {
                                 method: 'post',
                                 update: item,
                                 onComplete: function(response) {
                                 item.setAttribute('href','mailto:'+response);
                                  },
                                 data: { 'email' : ref.substr(12) }  ,
                                 evalScripts: true
                          }).request();

                        }

});

//////////////////////////////////////////////////////////////////////////////////////////////
//        END DOM-READY PART                                                                                                                                                //
//////////////////////////////////////////////////////////////////////////////////////////////