Prototype.Browser.IE7 = Prototype.Browser.IE && parseInt( navigator.userAgent.substring( navigator.userAgent.indexOf( "MSIE" ) + 5 ) ) == 7;
Prototype.Browser.IE8 = Prototype.Browser.IE && !Prototype.Browser.IE6 && !Prototype.Browser.IE7;

function checkSearchInput( searchfield )
{
	if ( searchfield.value != '' ) {
		return true;
	}
	else {
		searchfield.className = 'error';
		return false;
	}
}

function addAjaxParam( url ) {
	if ( !url ) return;
	var ajax_type = PAGE.AJAX_TYPE || 2, glue = url.indexOf( '?' ) > -1 ? '&' : '?';
	if ( url.indexOf( '#' ) > -1 )
	{
		var url_parts = url.split( '#' );
		url = url_parts[0];
	}
	return url + glue + "type=" + ajax_type;
}

// arrangeHalfColouredBoxes bringt nebeneinanderstehende boxen mit css "csc-frame-half-coloured" und "csc-frame-half-coloured half-right" auf die gleiche hï¿½he
function arrangeHalfColouredBoxes() {
	var myBlueFrames = $$( ".csc-frame-half" );
	myBlueFrames.each( function( myBlueFrame, counter )
			{
				var myBlueFrameHeight = myBlueFrame.getHeight();
				var myOtherBlueFrame, myOtherBlueFrameHeight;
				if ( myBlueFrame.hasClassName( "half-right" ) )
				{
					if ( $( myBlueFrames[counter - 1] ) )
					{
						myOtherBlueFrame = myBlueFrames[counter - 1];
						myOtherBlueFrameHeight = myOtherBlueFrame.getHeight();
					}
				}
				else
				{
					if ( $( myBlueFrames[counter + 1] ) )
					{
						myOtherBlueFrame = myBlueFrames[counter + 1];
						myOtherBlueFrameHeight = myOtherBlueFrame.getHeight();
					}
				}
				maxHeight = ( myBlueFrameHeight > myOtherBlueFrameHeight ) ? myBlueFrameHeight : myOtherBlueFrameHeight;
				if ( myBlueFrame ) myBlueFrame.setStyle( {
							height	: maxHeight + 'px'
						} );
				if ( myOtherBlueFrame ) myOtherBlueFrame.setStyle( {
							height	: maxHeight + 'px'
						} );
			} );
}

function quicklinks() {
	var id = $( 'quicklinks' );
	// quicklinks only on homepage
	if ( !id ) return;

	id.select( 'ul li' ).each( function( li )
			{
				li.observe( 'mouseover', function()
						{
							li.addClassName( "hover" );
						} );
				li.observe( 'mouseout', function()
						{
							li.removeClassName( "hover" );
						} );
			} );
}

function rawurldecode( str ) {
	// Decodes URL-encodes string
	var hash_map = {}, ret = str.toString(), unicodeStr = '', hexEscStr = '';

	var replacer = function( search, replace, str )
	{
		var tmp_arr = [];
		tmp_arr = str.split( search );
		return tmp_arr.join( replace );
	};

	// The hash_map is identical to the one in urlencode.
	hash_map["'"] = '%27';
	hash_map['('] = '%28';
	hash_map[')'] = '%29';
	hash_map['*'] = '%2A';
	hash_map['~'] = '%7E';
	hash_map['!'] = '%21';

	for ( unicodeStr in hash_map )
	{
		hexEscStr = hash_map[unicodeStr]; // Switch order when decoding
		ret = replacer( hexEscStr, unicodeStr, ret ); // Custom replace. No regexing
	}

	// End with decodeURIComponent, which most resembles PHP's encoding functions
	ret = ret.replace( /%([a-fA-F][0-9a-fA-F])/g, function( all, hex )
			{
				return String.fromCharCode( '0x' + hex );
			} ); // These Latin-B have the same values in Unicode, so we can convert them like this
	ret = decodeURIComponent( ret );

	return ret;
}

function startsWith( string, pattern ) {
	return string.indexOf( pattern ) === 0;
}

function endsWith( string, pattern ) {
	var d = string.length - pattern.length;
	return d >= 0 && string.lastIndexOf( pattern ) === d;
}

function trackDownload( type, url ) {
	switch ( type ) {
		case 'trackDownloads' :
			// google
			urchinTracker( url );
			// wiredminds
			if ( typeof wiredminds != 'undefined' ) {
				if ( endsWith( url, '/' ) ) url = url.substr( 0, url.length - 1 );
	//			wm_page_name = url;
	//			wm_group_name = 'Documents';
	//			wm_milestone = 'Document_Download';
	//			wiredminds.count();
				wiredminds.push(['count', url]);
			}
			break;
		case '.external' :
			// google
			urchinTracker( '/' + type + url );
			// wiredminds
			if ( typeof wiredminds != 'undefined' ) {
	//			wiredminds.trackEvent( 'External_Links' + url );
				wiredminds.push(['trackEvent', 'External_Links' + url]);
			}
			break;
		default :
			return
	}
}

function randomString() {
	var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
	var string_length = 8;
	var randomstring = '';
	for ( var i = 0; i < string_length; i++ )
	{
		var rnum = Math.floor( Math.random() * chars.length );
		randomstring += chars.substring( rnum, rnum + 1 );
	}
	return randomstring;
}

// if spam doesn't stop, try encrpytion: http://www.vincentcheung.ca/jsencryption/instructions.html
function avoidSpam() {
	var my_forms = $$( ".contactform" );
	my_forms.each( function( my_form )
			{
				var the_string = 'HE5hDGuK' + randomString();
				// var the_string = '';
				var hidden = document.createElement( 'input' );
				hidden.setAttribute( 'type', 'hidden' );
				hidden.setAttribute( 'name', 'tx_pilmailform_pi1[text][spam]' );
				hidden.setAttribute( 'value', the_string );
				my_form.appendChild( hidden );
			} );
}

Element.addMethods( {
	ajax			: function( element, url, options )
	{
		if ( !( element = $( element ) ) ) return;
		// new Effect.Opacity(element, { from: 1.0, to: 0.2, duration: 0.3 });
		element.update( '<!-- // -->' );
		element.addClassName( 'loading' );
		options = options || {
			method		: 'get',
			evalScripts : true,
			onComplete	: function()
			{
				element.removeClassName( 'loading' );
				// new Effect.Opacity(element, { from: 0.2, to: 1.0, duration: 0.3 });
			}
		};
		new Ajax.Updater( element, url, options );
		return element;
	}
} );


function News_QuickLinks() {
	var ql = $('home-ql');
	var news = $('home-news');
	if (ql && news) {
		var carousel = new Array(ql,news);
		carousel.each(function(item) {
			item.onclick = function(){
				if (item.hasClassName('teaser-closed')) {
					carousel.each(function(i){
						i.toggleClassName('teaser-closed');
						i.toggleClassName('teaser-open');
					});
				}
			}
		});
	}
}

function RandomTeaser() {
	var home = $('home');
	if ( home ) {
		var randomEls = $$('#home .tx-rbflashobject-pi1-swf_altcontent .csc-default .csc-default');
		if (randomEls.length > 0) {
			function randomFromTo(from, to){
				return Math.floor(Math.random() * (to - from + 1) + from);
			}
			var rand = randomFromTo(0,2);
			
			randomEls.each(function(item, index) {
				if ( index == rand ) {
					item.addClassName('active');
				}
				else {
					item.addClassName('inactive');
				}
			});
		}
	}
}


function ieshadow() {
	var mnav = $$('.main-navigation li ul');
	mnav.each(function(item, index) {
		var size = item.getDimensions();
		item.insert({
  			after: "<div class='shadow' style='width: "+ size.width + "px; height:" + size.height + "px;'></div>"
		});
	});
}

function init() {
	News_QuickLinks();
	RandomTeaser();
	avoidSpam();
	//quicklinks();
	arrangeHalfColouredBoxes();
	if ( Prototype.Browser.IE8 || Prototype.Browser.IE7 )  {
		ieshadow();
	}
}





function socialMedia() {

	// facebook
	var $fb_box = $('fb-box'),
		$fb_iframe,
		fb_wide = $$('.main-content_wide').length > 0;
		fb_url = ['http://www.facebook.com/plugins/fan.php' +
				'?connections=', 
				fb_wide ? '14' : '8', 
				'&height=',
				fb_wide ? '590' : '550',
				'&id=',
				$fb_box.readAttribute('data-href'), 
				'&locale=',
				PAGE.PAGE_LANGUAGE == '1' ? 'de_DE' : 'en_GB', 
				'&sdk=joey&stream=true&width=',
				fb_wide ? '402' : '270',
				'&css=_http://former03.de/fileadmin/_temp_/fb.css' 
				].join('');
				
	$fb_iframe = new Element('iframe', {
		scrolling : 'no',
		frameborder : '0',
		allowTransparency : true,
		'class' : 'fb_ltr',
		src : fb_url
	}).setStyle({
		border : 'none',
		overflow : 'hidden',
		width: fb_wide ? '402px' : '270px',
		height: fb_wide ? '590px' : '550px'
	});
	$fb_box.appendChild( $fb_iframe );
	
	// twitter
	var $twitter_box = $('twitterbox'),
		$twitter_tweets = $('twitter_tweets'),
		$socialentry, $socialentry_time_src,
		twitter_url = ['http://twitter.com/statuses/user_timeline/', $twitter_box.readAttribute('data-href'),'.json'].join('');
	
	new Ajax.JSONRequest( twitter_url, {
		callbackParamName	: "callback",
		parameters			: {
			count	: '2'
		},
		onCreate			: function( response ) {
		},
		onSuccess			: function( response ) {
		},
		onFailure			: function( response ) {
		},
		onComplete			: function( response ) {
			response.responseJSON.each(function(item) {
				var status = item.text.replace(/((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g, function(url) 
					{
						return ['<a target="_blank" href="', url, '">', url, '</a>'].join('');
					});
					var relativeTime = function( time_value ) 
					{
						var values = time_value.split(" ");
						time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
						var parsed_date = Date.parse(time_value);
						var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
						var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
						delta = delta + (relative_to.getTimezoneOffset() * 60);
						
						if (delta < 60) {
							return PAGE.PAGE_LANGUAGE == '1' ? 'vor weniger als einer Minute' : 'less then a minute ago';
						} else if(delta < 120) {
							return PAGE.PAGE_LANGUAGE == '1' ? 'vor ungefähr einer Minute' : 'about one minute ago';
						} else if(delta < (60*60)) {
							return PAGE.PAGE_LANGUAGE == '1' ? ('vor ' + parseInt(delta / 60)).toString() + ' Minuten' : (parseInt(delta / 60)).toString() + ' minutes ago';
						} else if(delta < (120*60)) {
							return PAGE.PAGE_LANGUAGE == '1' ? 'vor ungefähr einer Stunde' : 'about one hour ago';
						} else if(delta < (24*60*60)) {
							return PAGE.PAGE_LANGUAGE == '1' ? 'vor ungefähr ' + (parseInt(delta / 3600)).toString() + ' Stunden' : 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago';
						} else if(delta < (48*60*60)) {
							return PAGE.PAGE_LANGUAGE == '1' ? 'vor einem Tag' : 'yesterday';
						} else {
							return PAGE.PAGE_LANGUAGE == '1' ? ('vor ' + parseInt(delta / 86400)).toString() + ' Tagen' : + (parseInt(delta / 86400)).toString() + ' days ago';
						}
					}
					var time = relativeTime( item.created_at );
					
					$socialentry = new Element('div', { 'class': 'socialentry' }).update( status );
					$socialentry_time_src = new Element('div', { 'class': 'socialentry_time_src' }).update( time  + ' via ' + item.source );
					
					$twitter_tweets.appendChild($socialentry);
					$twitter_tweets.appendChild($socialentry_time_src);
			});
		}
	} );

	// youtube
	var $youtubebox = $('youtubebox'),
		$youtubevideos = $('youtubevideos'),
		$youtubewrapper, $youtubelink, $youtubeimg, $youtubeh3
		youtube_url = ['http://gdata.youtube.com/feeds/api/users/', $youtubebox.readAttribute('data-href'), '/uploads'].join('');
		
	new Ajax.JSONRequest( youtube_url, {
		callbackParamName	: "callback",
		parameters			: {
			v	: '2',
			alt	: 'jsonc',
			'max-results'	: '3',
			orderby	: 'published'
		},
		onComplete			: function( response ) {
			response.responseJSON.data.items.each(function(item) {
				$youtubewrapper = new Element('div', { 'class': 'wrapper' });
				$youtubeimg = new Element('img', { 'src' : item.thumbnail.sqDefault } );
				$youtubelink = new Element('a', {
					href : 'http://www.youtube.com/watch?v=' + item.id,
					target : '_blank',
					title : item.description
				}).update( $youtubeimg );
				$youtubeh3 = new Element('h3').update( item.title.substr(0, 40) );
				
				$youtubewrapper.appendChild( $youtubelink ).appendChild( $youtubeh3 );
				$youtubevideos.appendChild( $youtubewrapper );
			});
		}
	} );	
		
}





document.observe( 'dom:loaded', init );

