// Check for the stupid browser
var ieVersion = 0;
var isIE = false;
var isIE6 = false;
if (navigator.appName == "Microsoft Internet Explorer") {
    var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(navigator.userAgent) != null) ieVersion = parseFloat(RegExp.$1);
	isIE = true;
	if (ieVersion < 7) isIE6 = true;
}

// Load JS
var req = 'scriptaculous/scriptaculous,swfobject,logofader';
req.split(',').each(function(file) {document.write('<script type="text/javascript" src="/assets/js/'+file+'.js" charset="utf-8"></script>');});


function toggleCont(i) {
	var objArrow = $('c_arr_' + i);
	if (objArrow.src.match(/c_title_arrow_closed/)) {
		objArrow.src = '/assets/templates/iwwit/img/c_title_arrow_open.gif';
	} else {
		objArrow.src = '/assets/templates/iwwit/img/c_title_arrow_closed.gif';
	}
	Effect.toggle('cont_' + i, 'slide');
	return false;
}

function toggleFaqs(i) {
	if (!$('c_arr_' + i)) return true;
	var objArrow = $('c_arr_' + i);
	var objDiv2 = $('faq_' + i);

	if (objArrow.src.match(/text_arrow_2_right/)) {
		objDiv2.style.display = 'block';
		objArrow.src = '/assets/templates/iwwit/img/text_arrow_2_down.gif';
	} else {
		objDiv2.style.display = 'none';
		objArrow.src = '/assets/templates/iwwit/img/text_arrow_2_right.gif';
	}
	return false;
}


function toggleDiv(i) {
	var objArrow = $('c_arr_' + i);
	//var objDiv = $(i);
	if (objArrow.src.match(/text_arrow_2_right/)) {
		//objDiv.style.display = 'block';
		objArrow.src = '/assets/templates/iwwit/img/text_arrow_2_down.gif';
	} else {
		//objDiv.style.display = 'none';
		objArrow.src = '/assets/templates/iwwit/img/text_arrow_2_right.gif';
	}
	new Effect.toggle(i, 'slide');
	return false;
}

function toggleDivNoArr(i) {
	//var objDiv = $(i);	
	new Effect.toggle(i, 'slide');
	//new Effect.SlideDown(i, '{scaleMode:contents}');
	return false;
}

function showDiv(i) {
	var objDiv = $(i);	
	if (objDiv.style.display == 'none') objDiv.style.display = 'block';
	else objDiv.style.display = 'none';
	return false;		
}

/* checkbox bei download-disclaimer*/
function checkNzb(check) {
	if ($('dl_bereich')) {
		if (check) $('dl_bereich').style.display = 'block';
		else $('dl_bereich').style.display = 'none';
	}
}
document.observe("dom:loaded", function() {
	if ($('dl_bereich')) {
		if (!$('nzb').checked) $('dl_bereich').hide();
		else $('dl_bereich').show();
	}
});

function loadRoundabout(intro) {
	if ($('roundabout_cont')) {
		var so = new SWFObject('/assets/flash/roundabout2/iwwit_carousel.swf', 'dah_carousel', '976', '219', '9', '#000000');
		so.addParam('scale', 'noscale');
		so.addParam('wmode', 'transparent');
		so.addParam('menu', 'false');
		so.addParam('play', 'true');
		so.addParam('loop', 'true');
		
		so.addParam('allowScriptAccess', 'sameDomain');
		so.addParam('allowFullScreen', 'false');

		so.addVariable('introtext', 'TEST: HERZLICH WILLKOMMEN!#DIE ERSTE ONLINE-PLATTFORM DER DEUTSCHEN AIDS-HILFE#FÜR MÄNNER, DIE SEX MIT MÄNNERN HABEN.');
		so.addVariable('xmlPath', '/assets/flash/roundabout2/xml/iwwit.xml');
		so.addVariable('cssPath', '/assets/flash/roundabout2/css/styles.css');
		
		if (intro) so.addVariable('showIntro', 'true');
		else so.addVariable('showIntro', intro ? 'true' : 'false');

		so.addVariable('base', 'http://' + window.location.hostname + '/');

		so.write('roundabout_cont');
	}
}

var testimonialStat = false;
var testimonialPrev = null;

function openTestimonial(id) {
	var stat = 0;
	var quoteregex = /^'[a-z0-9-]+'$/i;
	if (quoteregex.test(id)) id = id.replace(/'/g, '');
	if (id == testimonialPrev && !testimonialStat) {
		new Effect.SlideDown('c_testimonial', {duration:1.5});
		testimonialStat = true;
	} else {
		new Ajax.Updater('temp', '/rollenmodelle/' + id + '/ajax.html', {
			method: 'get',
			onComplete: function() {
				//alert('Öffne "' + id + '"');
				if (stat == 200) {
					$('c_testimonial').innerHTML = $('temp').innerHTML;
					$('txt2').style.display = 'none';
					$('txt3').style.display = 'none';
					$('txt4').style.display = 'none';
					$('txt5').style.display = 'none';
					//if (!$('txt2')) alert('kein txt2');
					//else alert('txt2: ' + $('txt2').style.display);
					if (!testimonialStat) {
						new Effect.SlideDown('c_testimonial', {duration:1.5});
						testimonialStat = true;
					} else scrollTo(0, 0);
					testimonialPrev = id;
					track('/ajax/testimonial/' + id);
				} else {
					if (testimonialStat) closeTestimonial();
					alert('Rollenmodell ' + id + ' konnte nicht geladen werden.');
				
				}
			},
			onSuccess: function() {stat = 200;},
			on404: function() {stat = 404;}
		});
	}
}

function closeTestimonial() {
	if (testimonialStat) {
		new Effect.SlideUp('c_testimonial', {duration:1.5});
		testimonialStat = false;
	}
	return false;
}

function thisMovie(movieName) {
	if (navigator.appName.indexOf("Microsoft") != -1) return window[movieName];
	else return document[movieName];
}

function showOverview() {
	thisMovie('dah_carousel').showOverview();
}



/* Pagination Textimonialtexte */

function showTextimonial(id){
	$('txt1').style.display = 'none';
	$('txt2').style.display = 'none';
	$('txt3').style.display = 'none';
	$('txt4').style.display = 'none';
	$('txt5').style.display = 'none';
	$('lnk1').style.color = '#b5adb9';
	$('lnk2').style.color = '#b5adb9';
	$('lnk3').style.color = '#b5adb9';
	$('lnk4').style.color = '#b5adb9';
	$('lnk5').style.color = '#b5adb9';
	$('txt'+ id).style.display = 'block';
	$('lnk'+ id).style.color = '#fff';
	scrollTo(0, 0);
	return false;
}

/* Login-Formular */

function formLoginContent(field, focus, text, pw) {
	if (focus && field.value == text) {
		field.value = '';
		if (!isIE && pw) field.writeAttribute('type', 'password');
	}
	else if (!focus && field.value == '') {
		field.value = text;
		if (!isIE && pw) field.writeAttribute('type', 'text');
	}
}

function checkLoginForm(form) {
	if (form.username.value == '' || form.username.value == 'Benutzername') {
		alert('Bitte Benutzernamen und Passwort eingeben.');
		return false;
	} else return true;
}

function autoFillLoginForm() {
	formLoginContent($('wlpeLoginForm').wpleLoginUser, false, 'Benutzername', false);
	formLoginContent($('wlpeLoginForm').wpleLoginPw, false, 'Passwort', true);
}

function highlightMessage() {
	if ($('msg')) new Effect.Highlight('msg');
}

function setRecipient(username) {
	$('recipient').value = username;
}


/* Eventkalender */

function getElementsByClassName(oElm, strTagName, strClassName) {
	var arrElements = (strTagName == '*' && document.all) ? document.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	strClassName = strClassName.replace(/\-/g, "\\-");
	var oRegExp = new RegExp('(^|\\s)' + strClassName + '(\\s|$)');
	var oElement;
	for(var i=0; i<arrElements.length; i++) {
		oElement = arrElements[i];
		if (oRegExp.test(oElement.className)) arrReturnElements.push(oElement);
	}
	return (arrReturnElements);
}

function loadCal(mo, yr) {
	var stat = 0;
	new Ajax.Updater('minical', '/ajax/eventkalender.html?mo=' + mo + '&yr=' + yr, {
		method: 'get',
		onComplete: function() {
			if (stat == 200) initCalTooltips();
			else if (stat == 404) $('minical').innerHTML = '<p>Kalender konnte nicht geladen werden.</p>';
		},
		onSuccess: function() {stat = 200;},
		on404: function() {stat = 404;}
	});
	return false;
}

function initCalTooltips() {
	var list = getElementsByClassName(document, 'div', 'tooltip');
	if (list.length > 0) {
		for (var index = 0; index < list.length; ++index) {
			var name = list[index].id.replace(/tt/g, '');
			new Tooltip('d' + name, 'tt' + name);
		}
	}
}



/* Ajax-Loader */

var ajaxContStat = false;
var ajaxContContainer = 'c_ajax';
var checkViewer;
function ajaxOpen(page, altContainer) {
	if (altContainer) ajaxContContainer = altContainer;
	var stat = 0;
	new Ajax.Updater(ajaxContContainer, '/ajax/' + page, {
		method: 'get',
		onComplete: function() {
			if (stat == 200 && !ajaxContStat) {
				var regex = /^sachinfos/;
				if (regex.test(page)) new Effect.Appear(ajaxContContainer, {duration:1.0, from:0.0, to:1.0});
				else new Effect.SlideDown(ajaxContContainer, {duration:1.5});
				ajaxContStat = true;
			}
			else if (ajaxLoadStat == 404) alert('Inhalt nicht gefunden.');
		},
		onSuccess: function() {stat = 200;},
		on404: function() {stat = 404;}
	});
	track('/ajax/' + page);
	return false;
}

function ajaxClose() {
	if (ajaxContStat) new Effect.SlideUp(ajaxContContainer, {duration:1.5});
	ajaxContStat = false;
}

function sachinfoClose() {
	if (ajaxContStat) new Effect.Fade(ajaxContContainer, {duration:1.0, from:1.0, to:0.0});
	ajaxContStat = false;
}

function waitOverlay(msg) {
	if ($('overlay')) {
		var overlayBg = $('overlay');
		overlayBg.style.width = '100%';
		overlayBg.style.height = '100%';
		overlayBg.style.visibility = 'visible';
	}
	if ($('overlay_cont')) {
		var overlayCont = $('overlay_cont');
		overlayCont.innerHTML = '<h3>Bitte warten</h3><p>' + msg + '</p>';
		overlayCont.style.display = 'block';
		if (isIE && ieVersion < 7) window.location.hash = "#headerbar";
	}
	return true;
}

function friendList(id, action) {
	var row = 'friends_' + id;
	var stat = 0;
	new Ajax.Updater('temp', '/ajax/friendListAction?' + action + '=' + id, {
		method: 'get',
		onComplete: function() {
			if (stat == 200) {
				if ($('temp').innerHTML == '0') new Effect.DropOut(row);
				else alert($('temp').innerHTML);
			}
			else if (stat == 404) alert('Aktion konnte nicht ausgeführt werden.');
		},
		onSuccess: function() {stat = 200;},
		on404: function() {stat = 404;}
	});
	return false;
}

function audioPlayer(id) {
	var element = $(id);
	var links = element.getElementsByTagName('a');
	if (element && typeof(links) != 'undefined' && links.length) {
		var file = links[0].href;
		if (isIE) {
			var obj = '<object classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" width="200" height="16" codebase="http://www.apple.com/qtactivex/qtplugin.cab">' +
			'<param name="src" value="' + file + '" />' +
			'<param name="autoplay" value="false" />' +
			'<param name="controller" value="true" />' +
			'<a href="' + file + '">Audiodatei (MP3)</a>' +
			'</object>';
		} else {
			var obj = '<object type="audio/mpeg" width="200" height="16" data="' + file + '">' +
			'<param name="src" value="' + file + '" />' +
			'<param name="filename" value="' + file + '" />' +
			'<param name="type" value="audio/mpeg" />' +
			'<a href="' + file + '">Audiodatei (MP3)</a>' +
			'</object></p>';
		}
		element.innerHTML = obj;
	}
}

var mplCounter = 0; // For unique media player IDs

function videoplayer(container, video, image, width, height, link, autostart) {
	mplCounter++;
	var so = new SWFObject('/assets/flash/mediaplayer/player.swf', 'mpl' + mplCounter, width, height, '9');
	so.addParam('allowscriptaccess', 'always');
	so.addParam('allowfullscreen', 'true');
	so.addVariable('file', video);
	if (image != null) so.addVariable('image', image);
	so.addVariable('link', link);
	so.addVariable('type', 'mp4');
	so.addVariable('backcolor', 'ccaee2');
	so.addVariable('frontcolor', '2e4b73');
	so.addVariable('lightcolor', 'ffffff');
	so.addVariable('screencolor', '000000');
	so.addVariable('controlbar', 'over');
	so.addVariable('autostart', autostart);
	so.write(container);
}

function openOverlayVideoPlayer(headline, video, width, height, link) {
	openVideoOverlay(video, '', height, link, headline);
	return false;
}

function specialsVideoplayer(video, image, height, link) {
	videoplayer('videocontent', video, image, 480, height, link, false);
}

function swfAudioPlayer(id, width, autostart) {
	if (!width) var width = '240';
	if (!autostart) var autostart = 'true';
	var file = $(id).getElementsByTagName('a')[0].href;
	mplCounter++;
	var so = new SWFObject('/assets/flash/mediaplayer/mediaplayer.swf', 'mpl' + mplCounter, width, '20', '7');
	so.addParam('allowfullscreen','false');
	so.addParam('usefullscreen','false');
	so.addParam('allowscriptaccess','always');
	so.addVariable('file',file);
	so.addVariable('height','20');
	so.addVariable('width',width);
	so.addVariable('backcolor','0xccaee2');
	so.addVariable('frontcolor','0x2e4b73');
	so.addVariable('lightcolor','0xffffff');
	so.addVariable('wmode','transparent');
	so.addVariable('autostart',autostart);
	so.addVariable('showstop','true');
	so.addVariable('thumbsinplaylist','false');
	so.addVariable('shuffle','false');
	so.addVariable('type','mp3');
	so.write(id);
	audioPlayer(id);
}

function insertSWF(id, swf, width, height, version) {
	if (!version) var version = '7';
	var so = new SWFObject(swf, 'f', width, height, version);
	so.addParam('allowfullscreen','false');
	so.addParam('usefullscreen','false');
	so.addParam('allowscriptaccess','always');
	so.addParam('scale', 'noscale');
	so.addParam('wmode', 'window');
	so.addParam('menu', 'false');
	so.write(id);
}

function checkLinks() {
	var reg = new RegExp('^(http://' + location.hostname + '/|/|mailto:)');
	var regImg = /<img/i;
	var links = document.getElementsByTagName('a');
	var num = links.length;
	for (var i=0; i<num; i++) {
		var link = links[i];
		if (!reg.test(link)) {
			link.onclick = extLink;
			if (!regImg.test(link.innerHTML)) link.className = link.className + ' external';
		}
	}
}

function extLink(e) {
	if (typeof(this.href) == 'string') var u = this.href;
	else if (typeof(e.href) == 'string') var u = e.href;
	else return true;
	openWin(u);
	return false;
}

function openWin(url) {
	var nw = window.open(url, '', 'directories=yes,location=yes,resizable=yes,menubar=yes,toolbar=yes,scrollbars=yes,status=yes');
	nw.focus();
	return false;
}

function track(n) {
	if (typeof(pageTracker) != 'undefined') pageTracker._trackPageview(n);
}


/* Kontaktformular */
function sendKontaktform() {
	if (typeof(formkey) == 'undefined') return false;
	else {
		//alert('key ist: ' + formkey);
		$('key').value = formkey;
	}
}


/* Profile */

function selectAvatar(e) {
	if (typeof(e) == 'object') {
		var img = e.src;
		var regex = /\/assets\/avatar\//;
		if (regex.test(img)) {
			var newimg = img.replace(/_t/g, '');
			$('p_avatar').value = newimg;
		}
	} else {
		var newimg = e;
		$('p_avatar').value = '';
	}
	$('profileimg').src = newimg;
}

/* Werbemittel */
var werbemittel = {};

function showWebemittel(wm, version) {
	var url = 'http://www.iwwit.de';
	if (version.image) $(wm.div + '_image').innerHTML = '<img src="' + version.image + '" alt=""/>';
	else if (version.swf) insertSWF(wm.div + '_image', version.swf, version.width, version.height, '8');
	else $(wm.div + '_image').innerHTML = '';
	
	if (version.code) var code = version.code;
	else {
		// Default embedding codes
		if (version.image) var code = '&lt;a href="http://www.iwwit.de/"&gt;&lt;img src="http://www.iwwit.de__IMAGE__" width="__WIDTH__" height="__HEIGHT__" alt="ICH WEISS, WAS ICH TU"/&gt;&lt;/a&gt;';
		else if (version.swf) var code = '&lt;object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="__WIDTH__" height="__HEIGHT__"&gt;&lt;param name="movie" value="http://www.iwwit.de__SWF__"/&gt;&lt;embed src="http://www.iwwit.de__SWF__" width="__WIDTH__" height="__HEIGHT__"&gt;&lt;/embed&gt;&lt;/object&gt;';
		else var code = '';
	}
	code = code.replace(/__WIDTH__/g, version.width);
	code = code.replace(/__HEIGHT__/g, version.height);
	code = code.replace(/__IMAGE__/g, version.image);
	code = code.replace(/__SWF__/g, version.swf);
	$(wm.div + '_code').innerHTML = code;
}



/* Testwochen */

var testwochen = {
	init: function() {
		$('state_id').observe('change', this.updatelist.bind(this));
		$('town_id').observe('change', this.updatelist.bind(this));
		$('project_id').observe('change', this.updatelist.bind(this));
		$('week').observe('change', this.updatelist.bind(this));
		
		$('tw_resetFilter').observe('click', this.resetlist.bind(this));
	},
	
	resetlist: function() {
		$('state_id').value = '';
		$('town_id').value = '';
		$('project_id').value = '';
		$('week').value = '';
		
		this.updatelist();
	},	

	updatelist: function() {
		var stat = 0;
		var idform = 'testwochenform';
		var idlist = 'testwocheneventlist';
		var param = $(idform).serialize(true);

		/*
		var currentparamstring = $(idform).serialize(false);
		$(idform).reset();
		var emptyparamstring = $(idform).serialize(false);
		var empty = (currentparamstring == emptyparamstring);
		*/
		
		//if (!empty) {
			$(idlist).update('<div style="text-align:center; margin:2em 0;"><img src="/assets/templates/iwwit/img/wheel_infos_big.gif" width="32" height="32" alt="Bitte warten"/></div>');
			new Ajax.Updater(idlist, '/testwochen/termine/ajaxeventlist', {
				method: 'get',
				parameters: param,
				onComplete: function() {
					if (stat == 200) {
						//$(idform).reset();
						if ($(idlist).empty()) $(idlist).update('<p>Diese Suche ergab leider keine Treffer. Bitte versuche eine andere Auswahl.</p>');
					} else {
						$(idlist).update('<p>Sorry, bei der Suche ist ein Fehler aufgetreten. Bitte lade die Seite neu und versuche es nochmal.</p>');
						$(idform).fire('form:submit');
					}
				},
				onSuccess: function() {stat = 200;},
				on404: function() {stat = 404;}
			});
		//}
		
		//get JSON for dropdowns and populate them
		new Ajax.Request('/testwochen/termine/ajaxdropdowndata', {
			method: 'get',
			parameters: param,
			onSuccess: function(transport) {
				
				/*
				alert(transport.responseText);
				return;
				*/
				
				var dropdownData = eval('(' + transport.responseText + ')');
				// var dropdownData = {"town_id": [{"id":"12", "name":"Luxemburg"}, {"id":"34", "name":"Kopenhagen"}, {"id":"22", "name":"Herrsching"}, {"id":"14", "name":"Istanbul"}], "project_id": [{"id":"99", "name":"Ein tolles neues Projekt"}, {"id":"76", "name": "Noch ein tolles neues Projekt"}], "week": [{"id":"5", "name": "11.11.-12.11.2009 KW 1"}, {"id":"16", "name":"23.12.-31.12.2009 KW 54"}]};				
				// var dropdownData = {"town_id":[{"id":"1","state_id":"2","name":"München"}]};

				// var isResponseEmpty = (dropdownData.length == 0);

				for( dropdownId in dropdownData ) {
					populateDropdown(dropdownId, dropdownData[dropdownId]);
				}
				
				function populateDropdown(id, data) {
				
					// clear dropdown
					var elementsCountFilled = $(id).length;
					// remember the selected value, before clearing the dropdown
					var selectedValue = $(id).options[$(id).options.selectedIndex].value;

					// clear all entries except "label", by definition the entry with empty value
					for( i=elementsCountFilled-1; i>=0; i-- ) {
						if( $(id)[i].value != '' ) {
							$(id)[i] = null;
						}
					}
					
					// fill dropdown
					var dataCount = data.length;
					
					for( i=0; i<dataCount; i++ ) {
						// set that value selected, which we saved earlier before clearing
						var selected = (data[i].id == selectedValue);
						$(id)[$(id).length] = new Option( data[i].name, data[i].id, false, selected );
					}
					
				}		
				
			}
		});		
	}
}


document.observe('dom:loaded', function() {
	if ($('testwochenform') != undefined) testwochen.init();
});


/* :::::::::::::::::::::::::::::::::::::: */


//var ajaxContStat = false;
//var checkViewer;
function testwochenDetails(id) {
	var stat = 0;
	var ajaxContContainer = 'tw_overlay_cont';

	testwochenOverlay('');

	new Ajax.Updater(ajaxContContainer, '/ajax/testwochendetails?id=' + id, {
		method: 'get',
		onComplete: function() {
			if (stat == 200 && !ajaxContStat) {
				$('tw_overlay').style.background = '#000';
			}
			else if (stat == 404) alert('Inhalt nicht gefunden.');
		},
		onSuccess: function() {stat = 200;},
		on404: function() {stat = 404;}
	});
	track('/ajax/testwochendetails');
	return false;
}

function testwochenClose() {
	$('tw_overlay').style.visibility = 'hidden';
	$('tw_overlay_cont').style.display = 'none';
}

function testwochenOverlay() {
	if (!isIE6 && $('tw_overlay')) {
		var overlayBg = $('tw_overlay');
		overlayBg.style.background = '#000 url(/assets/templates/iwwit/img/wheel_dark.gif) no-repeat center center';
		overlayBg.style.width = '100%';
		overlayBg.style.height = '100%';
		overlayBg.style.visibility = 'visible';
	}
	if ($('tw_overlay_cont')) {
		var overlayCont = $('tw_overlay_cont');
		overlayCont.innerHTML = '';
		overlayCont.style.display = 'block';
		if (isIE6) window.location.hash = "#headerbar";
	}
	return true;
}


/* -------------------------------------------------------------------------- */

function downloadConfirmation(url) {
	openCommonOverlay('commonoverlayflex', {width: 650, getAjax: 'disclaimer', ajaxCallback: function () {continueToDownload(url);}});
	return false;
}

function continueToDownload(url) {
	$('disclaimercontinue').observe('click', function () {
		if ($('nzb').checked) {
			track(url);
			extLink(url);
			closeCommonOverlay('commonoverlayflex');
		} else {
			alert('Bitte Nutzungsbedingungen bestätigen oder schließen.');
		}
	});
}




/* OVERLAYS */
/* ------------------------------------------------------------------------------ */

function makeDOMOverlayReady() {
	var darknessId = "commonoverlay";
	var boxId = "commonoverlayflex";
	var boxClass = "commonlayer";
	var titleId = boxId + "_title";
	var contentId = boxId + "_content";

	//alert(typeof document.getElementById(boxId));
	if (document.getElementById(boxId)) return;
	var body = document.getElementsByTagName("body")[0];

	var darkness = document.createElement("div");
	darkness.setAttribute("id", darknessId);
	//alert('append');
	body.appendChild(darkness);

	var overlay = document.createElement("div");
	overlay.setAttribute("id", boxId);
	overlay.setAttribute("class", boxClass);
	overlay.innerHTML = '<div class="cont"><div class="title"><h4 id="' + titleId + '"></h4><div class="close" onclick="closeCommonOverlay(\'' + boxId + '\');" title="Schließen">Schließen</div></div><div id="' + contentId + '"></div></div>';
	body.appendChild(overlay);
}

function openTextOverlay(text, title) {
	$("commonoverlayflex_content").update(text);
	openCommonOverlay('commonoverlayflex', {width: 400}, title);
}

function openVideoOverlay(videoURL, previewImage, height, link, title, width) {
	if (!width) width = 480;
	$("commonoverlayflex_content").update('<div class="videoplayer"><div id="videocontent"></div></div>');
	videoplayer('videocontent', videoURL, previewImage, width, height, link, true);

	openCommonOverlay('commonoverlayflex', {}, title);
	// Set surrounding div to expected height that is normally 3px larger
	if (height) {
		$('videocontent').setStyle({"height": height + "px", "width": width + "px", "overflow-y": "hidden"});
		if (isIE) $$('#commonoverlayflex_content .videoplayer').each(function(element) {
			element.setStyle({"width": width + "px"});
		});
	}
}

function openImageOverlay(imageURL, title, caption, preload, imgWidth, imgHeight) {
	/* caption not implemented yet */
	// Delay until image is loaded
	if (typeof(preload) == 'undefined' || preload == true) {
		var img = new Image();
		img.onload = function () {openImageOverlay(imageURL, title, caption, false, img.width, img.height)};
		img.src = imageURL;
	} else {
		$("commonoverlayflex_content").update('<div class="imagecontent"><img src="' + imageURL + '" width="' + imgWidth + '" height="' + imgHeight + '" alt="" /></div>');
		if (isIE) openCommonOverlay('commonoverlayflex', {width: (imgWidth + 84)}, title);
		else openCommonOverlay('commonoverlayflex', {}, title);
	}
}

function openCommonOverlay(name, options, title) {
	if (!options) options = {};
	var element = $(name);
	var width = options.width ? options.width : 0;
	var url = options.getAjax ? options.getAjax : false;
	if (!title) title = '';

	if (isIE && ieVersion < 7) {
		resizeOverlayBg();
		window.onresize = function() {
			centerCommonOverlay(name);
			resizeOverlayBg();
		};
		window.onscroll = function() { centerCommonOverlay(name); };
	} else {
		window.onresize = function() {
			centerCommonOverlay(name);
		};
	}

	$("commonoverlayflex_title").update(title);

	$('commonoverlay').setStyle({display: 'block', opacity: 0});
	if (width > 0) element.setStyle({width: width + 'px'});
	else if (isIE) element.setStyle({width: '580px'}); // fuck fucking IE6
	else element.setStyle({width: ''});
	if (url) {
		url = '/ajax/' + url;
		new Ajax.Updater('commonoverlayflex_content', url, {
			method: 'get',
			onComplete: function() {
				if (stat == 200) {
					centerCommonOverlay(name);
					element.setStyle({display: 'block', opacity: 0});
					new Effect.Fade('commonoverlay', {duration: .4, from: 0, to: .88});
					new Effect.Fade(element, {duration: .6, from: 0, to: 1});
					if (typeof(options.ajaxCallback) == 'function') options.ajaxCallback();
					track(url);
				} else if (stat == 404) {
					alert('Inhalt konnte nicht geladen werden.');
				}

			},
			onSuccess: function() {stat = 200;},
			on404: function() {stat = 404;}
		});
	} else {
		centerCommonOverlay(name);
		element.setStyle({display: 'block', opacity: 0});
		new Effect.Fade('commonoverlay', {duration: .4, from: 0, to: .88});
		new Effect.Fade(element, {duration: .6, from: 0, to: 1});
		if (isIE) setTimeout("centerCommonOverlay('" + name + "');", 100);
		//track(name); ????????
	}
}

function closeCommonOverlay(name) {
	var element = $(name);
	element.fade({ duration: .4, afterFinish: function() { $("commonoverlayflex_content").update(""); } });
	$('commonoverlay').fade({duration: .6});
	window.onresize = function() {};
	if (isIE && ieVersion < 7) window.onscroll = function() {};
}

function resizeOverlayBg() {
	var height = $(document.body).getHeight(); // $.findElement...???
	$('commonoverlay').setStyle({height: height + 'px'});
}

function isIEQuirksMode() {
   if (document.compatMode == 'BackCompat') return true;
   else return false;
}

function centerCommonOverlay(name) {
	var e = $(name);
	var viewportWidth = (typeof(window.innerWidth) == 'number') ? window.innerWidth : $(document.body).getWidth();
	var x = (viewportWidth / 2) - (e.getWidth() / 2);
	var y = (document.documentElement.clientHeight / 2) - (e.getHeight() / 2);

	if (isIE && ieVersion < 7) {
		if (isIEQuirksMode()) {
			y = ($(document.body).getHeight() / 2) - (e.getHeight() / 2);
			var scrollX = document.body.scrollLeft;
			var scrollY = document.body.scrollTop;
			x += scrollX;
			y += scrollY;
			if (y < scrollY) y = scrollY;
			$('commonoverlay').setStyle({top: scrollY + 'px'});
		} else {
			y += document.documentElement.scrollTop;
		}
	} else if (isIE) {
		y = (document.documentElement.clientHeight / 2) - (e.getHeight() / 2);
	}
	if (x < 0) x = 0;
	if (y < 0) y = 0;
	e.setStyle({left: x + 'px', top: y + 'px'});
}


/* Statements (IWWIT, weil) */

var swfu;
var Statements = {
	ajaxIF: "/community/statements/submit",
	initialized: false,
	init: function(postURL) {
		if (this.initialized) return;
		this.initialized = true;
		this.ajaxIF = postURL;
		// Init form
		areaLength('statementtext', 'statementcharcount', 400);
		var textarea = $('statementtext');
		//textarea.focus();
		//if (textarea.setSelectionRange) textarea.setSelectionRange(400, 400); // Pos cursor to end
		Event.observe($('statementtext'), 'keyup', function() {areaLength('statementtext', 'statementcharcount', 400);});
		Event.observe($('statementtext'), 'keydown', function() {areaLength('statementtext', 'statementcharcount', 400);});
		Event.observe($('statementsubmit'), 'click', Statements.submit);

		var info = $("SWFUploadInfo").innerHTML;
		if (info) Statements.showMessage("SWFUploadInfo", info);

		// Init upload
		document.observe("dom:loaded", function() {
			swfu = new SWFUpload({
				upload_url : Statements.ajaxIF,
				flash_url : "/assets/js/swfupload/swfupload.swf",
				post_params: {"SNIWWIT": getCookie("SNIWWIT")},

				file_post_name : "attachment",
				file_types : "*.jpg;*.jpeg;*.png;*.aif;*.aiff;*.wav;*.mp3;*.mp2;*.m4a;*.m4v;*.mp4;*.mpg;*.mpeg;*.mov;*.wmv;*.wmf;*.avi",
				file_types_description: "Foto, Audio- oder Video-Datei",
				file_upload_limit : 0,
				file_queue_limit : 1,
				file_size_limit : "20 MB",

				button_image_url : "/assets/templates/iwwit/img/statements/button_upload.png",
				button_placeholder_id : "spanButtonPlaceHolder",
				button_width : 111,
				button_height : 26,

				// Event handler settings
				file_dialog_start_handler: Statements.fileDialogStart,
				file_queued_handler : Statements.fileQueued,
				file_dialog_complete_handler : Statements.fileDialogComplete,
				upload_progress_handler : Statements.uploadProgress,
				upload_error_handler : Statements.uploadError,
				upload_success_handler : Statements.uploadSuccess,

				custom_settings : {
					upload_target : "divFileProgressContainer"
				},
				debug: false
			});
		});
	},

	uploading: false,

	submit: function () {
		// Validate
		var statementtext = $F('statementtext');
		if (statementtext.length < 30 || statementtext.length > 400) {
			Statements.showError("validationmessage", "Bitte gib ein maximal 400 Zeichen langes Statement ein.");
			return;
		}
		if (Statements.uploading) {
			Statements.showError("validationmessage", "Bitte warte, bis die Datei vollständig hochgeladen ist und klicke dann erneut auf „weiter“.");
			return;
		}

		// Submit
		new Ajax.Request(Statements.ajaxIF, {
			method: 'post',
			parameters: {text: statementtext},
			onSuccess: function(transport) {
				var json = transport.responseText.evalJSON();
				if (json.success == 1) {
					// Success, redirect
					if (json.redirect) window.location = json.redirect;
				} else {
					// Error
					if (json.message) alert("Fehler beim Senden:\n\n" + transport.responseText);
					else alert("Fehler beim Senden:\n\n" + transport.responseText);
				}
			},
			onFailure: function() {alert('Leider ist beim Senden etwas schief gegangen.')}
		});
	},

	vote: function (id) {
		// Submit
		new Ajax.Request(Statements.ajaxIF, {
			method: 'post',
			parameters: {vote: id},
			onSuccess: function(transport) {
				var json = transport.responseText.evalJSON();
				if (json.success == 1) {
					// Success
					if (json.total) {
						$('votecount_' + id).update(json.total);
						Effect.Pulsate('votecount_' + id, {pulses: 4, duration: 1.5});
						setTimeout("openTextOverlay('Deine Stimme wurde gezählt.', 'Vielen Dank');", 1000);
					}
				} else {
					// Error
					openTextOverlay('Du hast bereits deine Stimme zu diesem Statement abgegeben.', '');
				}
			},
			onFailure: function() {alert('Bei der Stimmabgabe ist leider etwas Schief gelaufen.')}
		});
	},

	resetStatement: function () {
		new Ajax.Request(Statements.ajaxIF, {
			method: 'post',
			parameters: {"action": "reset"},
			onSuccess: function(transport) {
				var json = transport.responseText.evalJSON();
				if (json.success == 1) {
					$("statementtext").value = '';
					Statements.hideMessage("SWFUploadInfo");
					$('SWFUploadFilename').update("");
					$('SWFUploadPersentage').update("");
					openTextOverlay('Dein Text und ein eventuell hochgeladener Dateianhang wurden gelöscht.', 'Statement gelöscht');
				} else {
					openTextOverlay('Leider ist beim Löschen etwas schief gegangen.', 'Fehler');
				}
			}
		});
	},

	fileQueued: function (file) {
		var maxlength = 32;
		var taillength = 10;
		var prelength = maxlength - taillength - 2;

		var filename = file.name;
		if (filename.length > maxlength) {
			filename = filename.substr(0, prelength) + '…' + filename.substring(filename.length - taillength, filename.length);
		}

		if (file.size > 1048576) var filesize = (Math.round(file.size / 104857.6) / 10) + " MB";
		else var filesize = (Math.round(file.size / 102.4) / 10) + " KB";
		filesize = filesize.replace(".", ",");

		$('SWFUploadFilename').update(filename + " (" + filesize + ")");
		Statements.activateCancelButton(true);

		Statements.hideMessage("SWFUploadInfo");

		swfu.startUpload();
		Statements.uploading = true;
	},

	resetUpload: function (obj) {
		$('SWFUploadFilename').update("");
		$('SWFUploadPersentage').update("");
		$('SWFUploadBar').setStyle({'background-position' : '-290px -30px'});
		if (typeof(obj) != 'undefined') obj.cancelUpload();
		else swfu.cancelUpload();
	},

	uploadProgress: function (file, bytes_completed, total_bytes) {
		var persentage = Math.round((bytes_completed / total_bytes) * 100);
		$('SWFUploadPersentage').update(persentage + "%");

		var bar_pos = Math.round((bytes_completed / total_bytes) * 290) - 290;
		//$('SWFUploadBar').setStyle({'background-position' : bar_pos + 'px 2px'}); // Firefox doesn't do anything with this (any more)
		$('SWFUploadBar').style.backgroundPosition = bar_pos + 'px 2px';
	},

	showMessage: function (container_id, message, error) {
		if (typeof(error) == "undefined") error = false;
		var container = $(container_id);
		container.setStyle({'background-color' : ''}).removeClassName("message").removeClassName("error");
		if (message) {
			if (error) container.addClassName("error");
			else container.addClassName("message");
			container.update(message);
			new Effect.Appear(container_id, {duration:1.0, from:0.0, to:1.0});
			new Effect.Highlight(container_id);
		}else {
			container.hide();
		}
	},

	showError: function (container_id, message) {
		Statements.showMessage(container_id, message, true);
	},

	hideMessage: function (container_id) {
		Statements.showMessage(container_id, false, false);
	},

	uploadSuccess: function (file, serverData) {
		$('SWFUploadPersentage').update("hochgeladen.");
		$('SWFUploadBar').setStyle({'background-position' : '-290px -30px'});

		var json = serverData.evalJSON();
		if (json.success == 1) {
			Statements.showMessage("SWFUploadInfo", "<p>Die Datei „" + file.name + "“ wurde vollständig hochgeladen. Ein erneuter Upload ersetzt diese Datei. Falls kein Dateianhang gewünscht wird: <span class=\"jslink\" onclick=\"Statements.deleteFile();\">Datei&nbsp;löschen</span></p>");
		} else {
			var error;
			if (json.error) error = ' ' + json.error;
			else error = '';
			Statements.showError("SWFUploadInfo", "<p>Beim Hochladen der Datei „" + file.name + "“ ist etwas leider etwas schief gegangen." + error + "</p>");
		}
		Statements.activateCancelButton(false);
		this.cancelUpload();
		Statements.uploading = false;
	},

	uploadError: function(file) {
		Statements.showError("SWFUploadInfo", "<p>Beim Hochladen der Datei „" + file.name + "“ ist etwas leider etwas schief gegangen.</p>");
	},

	fileDialogStart: function () {
		Statements.resetUpload(this);
		Statements.activateCancelButton(false);
	},

	cancelUpload: function () {
		Statements.activateCancelButton(false);
		swfu.cancelUpload();
		setTimeout("Statements.resetUpload(); $('SWFUploadPersentage').update('Upload abgebrochen');", 1000);
		Statements.uploading = false;
	},

	activateCancelButton: function (activate) {
		if (activate) {
			$('SWFUploadCancelButton').show();
			$('SWFUploadCancelButton').observe('click', Statements.cancelUpload);
		} else {
			$('SWFUploadCancelButton').hide();
			$('SWFUploadCancelButton').stopObserving('click');
		}
	},

	deleteFile: function () {
		//log('Delete latest file upload...');
		new Ajax.Request(Statements.ajaxIF, {
			method: 'post',
			parameters: {'action': 'deletefile'},
			onSuccess: function(transport) {
				$('SWFUploadFilename').update("");
				$('SWFUploadPersentage').update("");
				var json = transport.responseText.evalJSON();
				if (json.success == 1) {
					// Success
					Statements.showMessage("SWFUploadInfo", "<p>Der Dateianhang wurde entfernt.</p>");
				} else {
					// Error
					Statements.showError("SWFUploadInfo", "<p>Der Dateianhang konnte nicht gelöscht werden. Möglicherweise wurde er bereits zuvor gelöscht.</p>");
				}
			},
			onFailure: function() {alert('Leider ist beim Löschen etwas schief gegangen.')}
		});

	}
}

/* function log(msg) { console.log(msg); } */

/**
 * Limit Textarea
 */
function areaLength(textareaID, charsID, maxlength) {
	var strlength = $F(textareaID).length;
	if (strlength > maxlength) {
		$(textareaID).value = $F(textareaID).substring(0, maxlength);
		strlength = maxlength;
	}
	var left = maxlength - strlength;
	$(charsID).update(left);
}

/**
 * Get Cookie Value
 */
function getCookie(cookie_name) {
	var results = document.cookie.match('(^|;) ?' + cookie_name + '=([^;]*)(;|$)');
	if (results) return (unescape(results[2]));
	else return null;
}
