// PHP equivalent
function str_replace(search, replace, subject, count) {
	// str_replace(['str1','str2'],['rpl1','rpl2'],text)
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Gabriel Paderni
    // +   improved by: Philip Peterson
    // +   improved by: Simon Willison (http://simonwillison.net)
    // +    revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +   bugfixed by: Anton Ongson
    // +      input by: Onno Marsman
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +    tweaked by: Onno Marsman
    // +      input by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   input by: Oleg Eremeev
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Oleg Eremeev
    // %          note 1: The count parameter must be passed as a string in order
    // %          note 1:  to find a global variable in which the result will be given
    // *     example 1: str_replace(' ', '.', 'Kevin van Zonneveld');
    // *     returns 1: 'Kevin.van.Zonneveld'
    // *     example 2: str_replace(['{name}', 'l'], ['hello', 'm'], '{name}, lars');
    // *     returns 2: 'hemmo, mars'
 
    var i = 0, j = 0, temp = '', repl = '', sl = 0, fl = 0,
            f = [].concat(search),
            r = [].concat(replace),
            s = subject,
            ra = r instanceof Array, sa = s instanceof Array;
    s = [].concat(s);
    if (count) {
        this.window[count] = 0;
    }
 
    for (i=0, sl=s.length; i < sl; i++) {
        if (s[i] === '') {
            continue;
        }
        for (j=0, fl=f.length; j < fl; j++) {
            temp = s[i]+'';
            repl = ra ? (r[j] !== undefined ? r[j] : '') : r[0];
            s[i] = (temp).split(f[j]).join(repl);
            if (count && s[i] !== temp) {
                this.window[count] += (temp.length-s[i].length)/f[j].length;}
        }
    }
    return sa ? s : s[0];
}

// Flash Animation auf der Startseite
var soBridgeAnimation;

function startBridgeAnimation(){
	window.addEvent('domready',
		function(){
			soBridgeAnimation = new SWFObject("./files/logo.swf", "bridge02", "228", "223", "8", "#550000");
			soBridgeAnimation.addParam("wmode", "transparent");
			soBridgeAnimation.addParam("loop", "false");
			soBridgeAnimation.addParam("swLiveConnect", "true");
			soBridgeAnimation.addParam("allowScriptAccess", "always");
			soBridgeAnimation.write("logo");
		}
	);
}

function preloadSingleImage(){
	var anchor = this;
	var img = anchor.get('rel');
	if($('imagePreloader')){
		$('imagePreloader').setStyle('background-image', 'url(\''+img+'\')');
	}
}

function preloadImages(images){
	var arrayImages = images.split('|');
	var objImage;
	var num_images = arrayImages.length;
	for(var i=0; i<num_images; i++){
		objImage = new Image();
		objImage.src = 'files/' + arrayImages[i];
	}
}

var homeBackgroundAnimation;
var homeBackgroundIndex = 1;
var homeBackgroundWidth = 1056;
var homeBackgroundHeight = 805;

function changeBackgroundHome(){
	var backgroundLayer = $('wrapper');
	if($('homeBackground')){
		// $('homeBackground').dispose();
		var backgroundDiv = $('homeBackground');
		backgroundDiv.setStyles(
			{
				'opacity': 0,
				'background-image': 'url(\'' + homeBackgroundImages[homeBackgroundIndex] + '\')'
			}
		);
	}else{
		var backgroundDiv = new Element('div',
			{
				'id': 'homeBackground',
				'styles': 
					{
						'position': 'absolute',
						'z-index': 0,
						'width': homeBackgroundWidth+'px',
						'height': homeBackgroundHeight+'px',
						'overflow': 'hidden',
						'visibility': 'hidden',
						'background-image': 'url(\'' + homeBackgroundImages[homeBackgroundIndex] + '\')',
						'background-repeat': 'no-repeat',
						'top': '15px',
						'left': 0
					}
			}
		);
	}
	backgroundDiv.inject(backgroundLayer);
	$('homeBackground').get('morph').start( { 'opacity': [0,1] } ).chain(
		function(){
			backgroundLayer.style.backgroundImage = 'url(\''+homeBackgroundImages[homeBackgroundIndex]+'\')';
			homeBackgroundIndex++;
			var num_homeBackgroundImages = homeBackgroundImages.length;
			if(homeBackgroundIndex >= num_homeBackgroundImages){
				homeBackgroundIndex = 0;
			}
			$('imagePreloader').setStyle('background-image', 'url(\'' + homeBackgroundImages[homeBackgroundIndex] + '\')');
		}
	);
	window.setTimeout('changeBackgroundHome()',5000);
}

function changeBackgroundHomeIE6(){
	var backgroundLayer = $('wrapper');
	$('homeBackgroundIE6').get('morph').start( { 'height': [0,0] } ).chain(
		function(){
			$('homeBackgroundIE6').style.backgroundImage = 'url(\'' + homeBackgroundImages[homeBackgroundIndex] + '\')';
		}
	);
	$('homeBackgroundIE6').get('morph').start( { 'height': [homeBackgroundHeight,homeBackgroundHeight] } ).chain(
		function(){
			backgroundLayer.style.backgroundImage = 'url(\''+homeBackgroundImages[homeBackgroundIndex]+'\')';
			homeBackgroundIndex++;
			var num_homeBackgroundImages = homeBackgroundImages.length;
			if(homeBackgroundIndex >= num_homeBackgroundImages){
				homeBackgroundIndex = 0;
			}
		}
	);
}

function setBackgroundHome(){
	var browser = navigator.userAgent.toLowerCase();
	if(browser.indexOf('msie 6') > -1){
		homeBackgroundAnimation = window.setInterval('changeBackgroundHomeIE6()',5000);
	}else{
		// homeBackgroundAnimation = window.setInterval('changeBackgroundHome()',5000);
		homeBackgroundAnimation = window.setTimeout('changeBackgroundHome()',5000);		
	}
}

function changeBackground(){
	var backgroundLayer = $('wrapper');
	var image = this.rel;
	// Wenn das neue Bild der angeklickten Kategorie dem alten entspricht, dann führe keine Animation aus
	if(backgroundLayer.style.backgroundImage.indexOf(image) > -1) {
		return true;
	}else{
		var url = this.href;
		var backgroundDiv = new Element('div',
			{
				'id': 'tempBackground',
				'styles': 
					{
						'position': 'absolute',
						'z-index': 0,
						'width': '1056px',
						'height': '805px',
						'overflow': 'hidden',
						'visibility': 'hidden',
						'background-image': 'url(\'' + image + '\')',
						'background-repeat': 'no-repeat',
						'top': '15px',
						'left': 0
					}
			}
		);
		backgroundDiv.inject(backgroundLayer);
		var browser = navigator.userAgent.toLowerCase();
		if(browser.indexOf('msie 6') > -1){
			window.location.href = url;
		}else{
			$('tempBackground').get('morph').start( { 'opacity': [0,1] } ).chain(
				function(){
					window.location.href = url;
				}
			);
		}
	}
	return false;
}

function setBackgroundFading(id){
	var layer = $(id);
	var list = layer.getChildren('ul')[0];
	var listElements = list.getChildren('li');
	var num_listElements = listElements.length;
	var listEntry;
	var anchor;
	for(var i=0; i<num_listElements; i++){
		listEntry = listElements[i];
		if(listEntry.className != 'slash'){
			anchor = listEntry.getChildren('a')[0];
			if(anchor.rel != ''){
				anchor.addEvent('click', changeBackground.bind(anchor));
				anchor.addEvent('mouseover', preloadSingleImage.bind(anchor));
			}
		}
	}
}

var titleText = '';
var sidebarContent = '';
var sidebarReset;

function showGlossaryDescription(){
	clearTimeout(sidebarReset);
	var entry = this;
	if(!$('glossary')){
		sidebarContent = $('sidebar').innerHTML;
	}
	$('sidebar').empty();
	var glossaryPosition = entry.getCoordinates($('article')).top - 6;
	var articleHeight = $('article').getSize().y;
	var glossary = new Element('div',
		{
			'id': 'glossary',
			'styles': 
				{
					'position': 'relative',
					'float': 'left',
					'margin-top': 0,
					'z-index': 10,
					'width': '154px'
				}
		}
	);
	var glossaryContent = new Element('div',
	{
		'id': 'glossaryContent',
		'styles': 
			{
				'position': 'relative',
				'float': 'left',
				'width': '154px'
			}
	}
	);
	var contentText = entry.title;
	var showEntry = str_replace([' ','&'],['_','_'],entry.get('html'));
	var lang = 0;
	if(moreText == 'more'){
		lang = 1;
	}
	if(contentText.length > 240){
		contentText = contentText.substr(0,240);
		contentText = contentText.substr(0, contentText.lastIndexOf('. ')) + '... <a href="23-'+lang+'-Glossar.html?filter='+entry.get('html').substr(0,1)+'&showEntry='+showEntry+'#'+showEntry+'">'+moreText+'...</a>';
	}
	glossaryContent.set('html','<strong>'+entry.get('html')+'</strong>', (contentText.indexOf('</p>') > 0 ? contentText : '<p>'+contentText+'</p>'));
	glossaryContent.inject(glossary);
	glossary.inject($('sidebar'));
	var glossaryHeight = $('glossary').getSize().y;
	if( (glossaryHeight + glossaryPosition) > articleHeight){
		var newGlossaryPosition = articleHeight - glossaryHeight;
		var lines = Math.floor(newGlossaryPosition/16);
		newGlossaryPosition = (lines * 16) - 14;
		if(lines < 5){
			newGlossaryPosition = glossaryPosition;
		}
		$('glossary').style.marginTop = newGlossaryPosition+'px';
	}else{
		$('glossary').style.marginTop = glossaryPosition+'px';
	}
	titleText = entry.title;
	entry.title = '';
}

function hideGlossaryDescription(){
	var entry = this;
	entry.title = titleText;
	var fx = function(){
		$('sidebar').innerHTML = sidebarContent;
	}
	sidebarReset = fx.delay(2000);
}

function setGlossaryWords(){
	var glossaryEntries = $$('.abbr');
	var num_glossaryEntries = glossaryEntries.length;
	var entry;
	for(var i=0;i<num_glossaryEntries;i++){
		entry = glossaryEntries[i];
		entry.addEvent('mouseenter', showGlossaryDescription.bind(entry));
		entry.addEvent('mouseleave', hideGlossaryDescription.bind(entry));
	}
}

var imageTitleText = '';

function showTeamMemberData(){
	var member = this;
	$('sidebar').empty();
	var dataPosition = member.getCoordinates($('article')).top - 6;
	var memberData = new Element('div',
		{
			'id': 'memberData',
			'styles': 
				{
					'position': 'relative',
					'float': 'left',
					'margin-top': dataPosition,
					'z-index': 10,
					'width': '154px'
				}
		}
	);
	var memberDataContent = new Element('div',
	{
		'id': 'memberDataContent',
		'styles': 
			{
				'position': 'relative',
				'float': 'left',
				'width': '154px'
			}
	}
	);
	var image = member.getChildren('img')[0];
	var imageData = image.name.split('|');
	memberDataContent.set('html','<p><strong>'+imageData[0]+'</strong></p>','<p>'+imageData[1]+'</p>');
	memberDataContent.inject(memberData);
	memberData.inject($('sidebar'));
	imageTitleText = image.title;
	image.title = '';
}

function hideTeamMemberData(){
	var member = this;
	var image = member.getChildren('img')[0];
	image.title = imageTitleText;
}

function setTeamMembers(){
	if($('teamMembers')){
		var members = $('teamMembers').getChildren('div');
		var num_members = members.length;
		var member;
		for(var i=0;i<num_members;i++){
			member = members[i];
			member.addEvent('mouseenter', showTeamMemberData.bind(member));
			member.addEvent('mouseleave', hideTeamMemberData.bind(member));
		}
	}
}

var myAccordion;
var accordionAnchor = '';

function showAccordionEntry(headline){
	var anchors = $$('.glossaryAnchor');
	var num_anchors = anchors.length;
	for(var i=0;i<num_anchors;i++){
		anchor = anchors[i];
		if(anchor.name == headline){
			myAccordion.display(i);
		}
	}
}

function initVideos(){
	$$('.video').each(
		function(video){
			var filename = video.getElement('.filename').get('value');
			var preview_image = video.getElement('.preview_image').get('value');
			var width = video.getElement('.width').get('value');
			var height = video.getElement('.height').get('value');
			var element_id = video.get('id');
			var so = new SWFObject('player.swf', 'player_'+element_id, width, height, '9');
			so.addParam('allowfullscreen','true');
			so.addParam('allowscriptaccess','always');
			so.addVariable('file', filename);
			so.addVariable('image',preview_image);
			so.write(element_id);
		}
	);
}

function moveTicker(){
	var ticker = this;
	var current_element = ticker.getElement('ul');
	var current_position = current_element.getStyle('margin-left').toInt();
	if(current_position < (-1 * (ticker.getSize().x-1))){
		current_position = 0;
		current_element.inject(ticker.getElement('.ticker_wrapper'));
		current_element.setStyle('margin-left', 0);
	}
	var current_element = ticker.getElement('ul');
	current_element.setStyle('margin-left', (current_position-1));
}

function moveTicker_v2(){
	var ticker = this;
	var current_element = ticker.getElement('ul');
	current_element.setStyle('margin-left', 0);
	current_element.set('morph',
		{
			duration: 1000
		}
	)
	current_element.get('morph').start({'margin-left': -170}).chain(
		function(){
			current_element.inject(ticker.getElement('.ticker_wrapper'));
			current_element.setStyle('margin-left', 0);
		}
	);
}

function initTicker(){
	$$('.ticker').each(
		function(ticker){
			var width = ticker.getSize().x;
			if(ticker.hasClass('ticker_v2')){
				moveTicker_v2.bind(ticker).periodical(3000);
			}else{
				moveTicker.bind(ticker).periodical(50);
			}
		}
	);
}

function setPrintButton(el){
	$$('.print_frame').dispose();
	var active_element = el.link;
	var wrapper = active_element.getParent('.newsletter_archiv_item');
	if(wrapper){
		var pdf = wrapper.getElement('.pdf');
		if(pdf.get('value') != ''){
			var anchor = new Element('a',
				{
					'href': pdf.get('value'),
					'html': 'drucken',
					'class': 'print_frame'
				}
			);
			anchor.inject($('sb-info-inner'));
		}
	}
}

window.addEvent('domready',
	function(){
	//	if(navigator.appName.indexOf("Explorer") > -1){
	//	}else{
			setBackgroundFading('navLevel1');
			if($('navLevel2') && $('navLevel2').getChildren('ul')[0]){
				setBackgroundFading('navLevel2');
			}
			setBackgroundFading('systemNav');
			setBackgroundFading('quickNav');
	//	}
		setGlossaryWords();
		myAccordion = new Accordion($('accordion'), 'h2.toggler', 'div.element', {
			opacity: false,
			onActive: function(toggler, element){
				// toggler.setStyle('color', '#891313');
				toggler.setStyle('font-weight', 'bold');
			},
			onBackground: function(toggler, element){
				// toggler.setStyle('color', '#7C7B6F');
				toggler.setStyle('font-weight', 'bold');
			}
		});
		if(accordionAnchor != ''){
			showAccordionEntry(accordionAnchor);
		}
		setTeamMembers();
		if($$('.articleid_1').length > 0) {
			$('imagePreloader').setStyle('background-image', 'url(\'' + homeBackgroundImages[homeBackgroundIndex] + '\')');
		}
		initVideos();
		Shadowbox.init(
			{
				onFinish: setPrintButton
			}
		);
		$$('.newsletter_archiv_link').addEvent('click',
			function(){
				var anchor = this;
				$$('.newsletter_archiv_link').removeClass('active');
				anchor.addClass('active');
			}
		);
		initTicker();
	}
);

var hyphenatorSettings = {
	onhyphenationdonecallback : function () {
		$('article').setStyle('visibility', 'visible');
	}
}
Hyphenator.config(hyphenatorSettings);
Hyphenator.run();
Cufon.replace('h1');
