/*
 * 	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')) {

	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');
		}

		
	if(firstElement) {
		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!

	/* rein optischer Ein und ausklappeffekt via mootools */
	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 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 + '\');">' + 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]')
			
			listings.each(function(item, index)
				{	
					
					var clipFrame = 	new Element('div', {
											'class': 'clipboard-frame'
										});
					clipFrame.injectAfter(lsitingsOl[index]);
					
					new Element('a', {
									'events': {
										'click': function(e){
											e = new Event(e).stop();
											copy(listings[index].getProperty('value'));
											this.addClass('success');
										}
									},
									'href':	'#',
									'class': 'clipboard',
									'styles': { 'color':'#666'}
								}).setText('Quelltext in die Zwischenablage kopieren').injectInside(clipFrame);
					
				});

	}
	
function copy(inElement) {
  
  if (inElement.createTextRange) {
    var range = inElement.createTextRange();
    if (range && BodyLoaded==1)
      range.execCommand('Copy');
  } else {
    var flashcopier = 'flashcopier';
    if(!document.getElementById(flashcopier)) {
      var divholder = document.createElement('div');
      divholder.id = flashcopier;
      document.body.appendChild(divholder);
    }
    document.getElementById(flashcopier).innerHTML = '';
    var divinfo = '<embed src="http://it-republik.de/it/graf/_clipboard.swf" FlashVars="clipboard='+encodeURIComponent(inElement)+'" width="0" height="0" type="application/x-shockwave-flash"></embed>';
    document.getElementById(flashcopier).innerHTML = divinfo;
  }
  return false;
}


/*
 *	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('domready', function() {
	

	// Navigation erzeugen, wenn ID existiert
	if($('navmenu')) {

                elmHover = $$('#navmenu li');
                elmHover.addEvent('mouseover', function() {
                    if($(this.className)) {
                        $(this.className).setStyle('display', 'block');
                        $(this.className).addEvent('mouseleave', function() {
                            this.setStyle('display', 'none');
                            this.removeEvents('mouseleave');
                        });
                    }
		});


	}

	
	// Mediapool Scrollbar machen !DEFEKT!
	// makeScrollbar( $('media-bilder'), $('scrollbar2'), $('handle2'), true );
	

	// 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			
	});
});



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


                                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																		//
//////////////////////////////////////////////////////////////////////////////////////////////





