var uagent = navigator.userAgent.toLowerCase();
var isGecko = uagent.match('gecko');
var isIE = uagent.match('msie') && !uagent.match('opera');

function createRequestObject() {
	var ro;
	
	try {
		var ro = new XMLHttpRequest();
	}
	catch (error) {
		try {
			var ro = new ActiveXObject('Microsoft.XMLHTTP');
		}
		catch (error) {
			try {
				var ro = new ActiveXObject('Msxml2.XMLHTTP');
			}
			catch(error) {
				return false;
			}
		}
	}
	return ro;
}

var http = createRequestObject();

function getSotM() {
	http.open('get', '/modules/bestof/bestof_rand.php');
	http.onreadystatechange = handleBestOf;
	http.send(null);
	document.getElementById('sotmbody').style.display = 'none';
	document.getElementById('sotmsearch').style.display = 'block';
}

function handleBestOf() {
	if(http.readyState == 4){
		setTimeout("document.getElementById('sotmsearch').style.display = 'none'",500);
		setTimeout("document.getElementById('sotmbody').innerHTML = http.responseText",500);
		setTimeout("document.getElementById('sotmbody').style.display = 'block'",550);
	}
}

//Funktion für PopUp
function NeuesFenster(url, width, height) {
	var Win = window.open(url,'displayWindow','width=' + width + ',height=' + height + ',resizable=1,scrollbars=yes,menubar=yes,status=yes' );
}

function lightbox(url, title, width, height) {
	var arrayPageScroll = getPageScroll();
	
	newheight = getLBHeight(height);
	setTimeout("document.getElementById('overlay').style.height = getLBHeight("+height+")+'px';", 500);

	document.getElementById('overlay').style.height = newheight+'px';
	document.getElementById('overlay').style.display = 'block';
	
	document.getElementById('lightbox').style.margin = arrayPageScroll[1]+100+'px auto 10px auto';
	document.getElementById('lightbox').style.display = 'block';
	
	document.getElementById('image').innerHTML = '<img src="'+url+'" style="border:0px;" width="'+width+'" height="'+height+'" />';
	text = title.replace(/\+/g, ' ');
	document.getElementById('title').innerHTML = '<strong>'+text+'</strong>';
	
	if (width > 200) document.getElementById('lightbox').style.width = width+'px';
	else  document.getElementById('lightbox').style.width = '200px';
	
}

function getLBHeight(height) {
	var arrayPageScroll = getPageScroll();
	var arrayPageSize = getPageSize();
	
	newheight = arrayPageScroll[1]+parseInt(height)+100;
	if (newheight < arrayPageSize[1]) newheight = arrayPageSize[1];

	return newheight;
}

function hidelightbox() {
	document.getElementById('overlay').style.display = 'none';
	document.getElementById('lightbox').style.display = 'none';
}

function getPageScroll() {
	var xScroll, yScroll;

	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
		xScroll = self.pageXOffset;
	}
	else if (document.documentElement && document.documentElement.scrollTop) {
		yScroll = document.documentElement.scrollTop;
		xScroll = document.documentElement.scrollLeft;
	}
	else if (document.body) {
		yScroll = document.body.scrollTop;
		xScroll = document.body.scrollLeft;	
	}

	arrayPageScroll = new Array(xScroll,yScroll) 
	return arrayPageScroll;
}

function getPageSize() {
	
	var xScroll, yScroll;
	
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = window.innerWidth + window.scrollMaxX;
		yScroll = window.innerHeight + window.scrollMaxY;
	}
	else if (document.body.scrollHeight > document.body.offsetHeight) {
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	}
	else {
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	
	var windowWidth, windowHeight;


	if (self.innerHeight) {
		if(document.documentElement.clientWidth) {
			windowWidth = document.documentElement.clientWidth; 
		}
		else {
			windowWidth = self.innerWidth;
		}
		windowHeight = self.innerHeight;
	}
	else if (document.documentElement && document.documentElement.clientHeight) {
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	}
	else if (document.body) {
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	
	if(yScroll < windowHeight) {
		pageHeight = windowHeight;
	}
	else { 
		pageHeight = yScroll;
	}

	if(xScroll < windowWidth) {	
		pageWidth = xScroll;		
	} else {
		pageWidth = windowWidth;
	}

	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
	return arrayPageSize;
}

function getElementsByClassName(classname, node) {
	if (!node) node = document.getElementsByTagName('body')[0];
	var a = [];
	var re = new RegExp('\\b' + classname + '\\b');
	var els = node.getElementsByTagName('*');
	for(var i=0,j=els.length; i<j; i++) {
		if(re.test(els[i].className)) a.push(els[i]);
	}
	return a;
}


var cp_value;
var cp_id;

function getKey(evt) {
	var e = e || window.event;
	evt = (evt) ? evt : ((event) ? event : null);
	if (evt) {
		if (evt.keyCode == 13) { cpSave(); return false; };
	}
	//return false;
}

function showSave(id, value) {
	obj = document.getElementById(id);
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft;
		curtop = obj.offsetTop;
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		}
	}
	cp_value = value;
	cp_id = id;
	document.getElementById('cp_save').style.left = curleft-getElementsByClassName('site')[0].offsetLeft+162+'px';
	document.getElementById('cp_save').style.top = curtop+'px';
	document.getElementById('cp_save').style.display = 'block';
	
	document.getElementById('cp_cancel').style.left = curleft-getElementsByClassName('site')[0].offsetLeft+185+'px';
	document.getElementById('cp_cancel').style.top = curtop+'px';
	document.getElementById('cp_cancel').style.display = 'block';
}

function hideSave() {
	document.getElementById(cp_id).value = cp_value;
	document.getElementById('cp_save').style.display = 'none';
	document.getElementById('cp_cancel').style.display = 'none';
}

function cpSave() {
	user_id = document.getElementById('userid').value;
	value = encodeURIComponent(document.getElementById(cp_id).value);
	var params = 'user_id='+user_id+'&item='+cp_id+'&value='+value;
	http.open('POST', '/modules/user/cp_save.php');
	http.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
	http.setRequestHeader('Content-length', params.length);
	http.setRequestHeader('Connection', 'close');
	http.onreadystatechange = handlecpSave;
	http.send(params);
}

function handlecpSave() {
	if(http.readyState == 4){
		document.getElementById(cp_id).value = http.responseText;
		document.getElementById(cp_id).blur();
		document.getElementById('cp_save').style.display = 'none';
		document.getElementById('cp_cancel').style.display = 'none';
		cp_id = '';
		cp_value = '';
	}
}

function searchPage(page) {
	document.getElementById('s_page').value = page;
	document.forms.search.submit();
}

function searchSort(sort) {
	document.getElementById('s_sort').value = sort;
	document.forms.search.submit();
}

function resetSearch() {
	document.getElementById('s_page').value = '0';
	document.getElementById('s_sort').value = 'nick';
}

//Funktion für Textarea
function insert(aTag, eTag) {
	var input = document.getElementsByTagName('textarea')[0];
	input.focus();

	/* für Internet Explorer */
	if(typeof document.selection != 'undefined') {
		/* Einfügen des Formatierungscodes */
		var range = document.selection.createRange();
		var insText = range.text;
		range.text = aTag + insText + eTag;

		/* Anpassen der Cursorposition */
		range = document.selection.createRange();
		if (insText.length == 0) {
			range.move('character', -eTag.length);
		}
		else {
			range.moveStart('character', aTag.length + insText.length + eTag.length);
		}
		range.select();
	}
	
	/* für neuere auf Gecko basierende Browser */
	else if(typeof input.selectionStart != 'undefined') {
		/* Einfügen des Formatierungscodes */
		var start = input.selectionStart;
		var end = input.selectionEnd;
		var insText = input.value.substring(start, end);
		input.value = input.value.substr(0, start) + aTag + insText + eTag + input.value.substr(end);
		
		/* Anpassen der Cursorposition */
		var pos;
		if (insText.length == 0) {
			pos = start + aTag.length;
		}
		else {
			pos = start + aTag.length + insText.length + eTag.length;
		}
		input.selectionStart = pos;
		input.selectionEnd = pos;
	}
	
	/* für die übrigen Browser */
	else {
		/* Abfrage der Einfügeposition */
		var pos;
		var re = new RegExp('^[0-9]{0,3}$');
		while(!re.test(pos)) {
			pos = prompt('Einfügen an Position (0..' + input.value.length + '):', '0');
		}
		if(pos > input.value.length) {
			pos = input.value.length;
		}
		
		/* Einfügen des Formatierungscodes */
		var insText = prompt('Bitte geben Sie den zu formatierenden Text ein:');
		input.value = input.value.substr(0, pos) + aTag + insText + eTag + input.value.substr(pos);
	}
}

function getURLInput() {
	var name = window.prompt('Link Text: ', '');
	var url = window.prompt('URL: ', 'http://');
	insert('[url='+url+']', name+'[/url]');
}

function animateVote (minWidth, maxWidth) {
	for (i = 0; i < arrayLi.length; i++) {
		curID = arrayLi[i];
		curEl = document.getElementById('percent'+curID);
		elWidth = curEl.style.width.replace('%', '');
		curWidth = maxWidth / 100 * elWidth + minWidth;
		steps = elWidth / 2;
		steps = 50;

		if (curWidth == minWidth) {
			document.getElementById('percent'+curID).style.width = '0%';
		}
		else {
			document.getElementById('percent'+curID).style.width = '100%';
		}

		changeElWidth(document.getElementById('center'+curID), 0, curWidth, steps, 50, 0.75); 
	}
}

function changeElWidth(elem, startWidth, endWidth, steps, intervals, powr) { 
	if (elem.widthChangeMemInt) window.clearInterval(elem.widthChangeMemInt);
	var actStep = 0;
	elem.widthChangeMemInt = window.setInterval(
		function() { 
			elem.currentWidth = easeInOut(startWidth, endWidth, steps, actStep, powr);
			elem.style.width = elem.currentWidth + 'px'; 
			actStep++;
			if (actStep > steps) window.clearInterval(elem.widthChangeMemInt);
		}
		,intervals);
}

function easeInOut(minValue, maxValue, totalSteps, actualStep, powr) { 
	var delta = maxValue - minValue; 
	var stepp = minValue + (Math.pow(((1 / totalSteps) * actualStep), powr) * delta); 
	return Math.ceil(stepp);
}

function HighlightVote(id) {
	document.getElementById(id).className = 'hover';
}

function unHighlightVote(id) {
	document.getElementById(id).className = 'none';
}

function activateChoice(id) {
	for (i = 0; i < arrayLi.length; i++) {
		if (document.getElementById('choice'+arrayLi[i])) {
			document.getElementById('choice'+arrayLi[i]).checked = '';
			document.getElementById('chk'+arrayLi[i]).src = '/images/chk_off.gif';
			document.getElementById('choice').value = 0;
		}
	}
	if (id != 0) {
		document.getElementById('choice'+id).checked = 'checked';
		document.getElementById('chk'+id).src = '/images/chk_on.gif';
		document.getElementById('choice').value = id;
	}
}

function Vote() {
	val = document.getElementById('choice').value;
	if (val != 0) {
		var params = 'vote_id='+vote_id+'&value='+val;
		http.open('POST', '/modules/vote/vote_save.php');
		http.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
		http.setRequestHeader('Content-length', params.length);
		http.setRequestHeader('Connection', 'close');
		http.onreadystatechange = handleVote;
		http.send(params);
	}
}

function handleVote() {
	if(http.readyState == 4){
		response = http.responseText.split("|||");
		if (response[0] == "OK") {
			document.getElementById('summary').innerHTML = response[1];
			choices = response[2].split('###');
			for (i = 0; i < choices.length-1; i++) {
				token = choices[i].split('+++');
				id = token[0];
				count = token[1];
				width = token[2];
				document.getElementById('percent'+id).style.width = width+'%';
				document.getElementById('right'+id).innerHTML = count;
			}
			toggleVote();
		}
	}
}

function toggleVote() {
	document.getElementById('choiceUL').innerHTML = '';
	document.getElementById('choiceUL').style.display = 'none';
	document.getElementById('voteUL').style.display = 'block';
	animateVote(minWidth, maxWidth);
}

function stripHTML(oldString) {
	var newString = '';
	var inTag = false;
	for(var i = 0; i < oldString.length; i++) {
		if(oldString.charAt(i) == '<') inTag = true;
		if(oldString.charAt(i) == '>') {
			if(oldString.charAt(i+1)=='<') {
				//dont do anything
			}
			else {
				inTag = false;
				i++;
			}
		}
		if(!inTag) newString += oldString.charAt(i);
	}
	return newString;
}