function loginError() {
	alert('Fehler: Username und Passwort stimmen nicht überein.');
}

function rateQ(element, memo) {
	xajax_rateQuiz(memo);
}

function changeDisplay(divName, disp) {
	var allElems = document.getElementsByTagName('*');
	for (var i = 0; i < allElems.length; i++) {
		var thisElem = allElems[i];
		if (thisElem.className && thisElem.className == divName)
				thisElem.style.display = disp;
	}
}

function sumPoints(divName) {
	if(document.getElementById('type2').checked == true) {
		var compMax = 0;
		var compMin;
		var sumMin = 0;
		var sumMax = 0;
		var thisElem;
		var allElems = document.getElementsByTagName('*');
		for (var i = 0; i < allElems.length; i++) {
			var thisElem = allElems[i];
			if (thisElem.className && thisElem.className == 'questSort') {
				compMax = 0;
				if (thisElem.value != '') {
					for (var j = 1; j <= 5; j++) {
						elem = document.getElementById(divName + '_' + thisElem.value + '_' + j).value;
						if (elem != '') {
							if (j == 1)
								compMin = parseInt(elem);
							if(parseInt(elem) > compMax)
								compMax = parseInt(elem);
							if(parseInt(elem) < compMin)
								compMin = parseInt(elem);
						}
					}
				}
				if (isNaN(compMin) == false)
					sumMin = sumMin + compMin;
				if (isNaN(compMax) == false)
					sumMax = sumMax + compMax;
			}
		}
		document.getElementById('ratingMaxPoints').innerHTML = sumMax;
		document.getElementById('ratingMinPoints').innerHTML = sumMin;
// 		document.getElementById('upperLimit_1').value = sumMax;
	}
}

function sumVisibleDivs(divName, offset) {
	if(document.getElementById('type1').checked == true) {
		var sum = 0;
		var allElems = document.getElementsByTagName('*');
		for (var i = 0; i < allElems.length; i++) {
			var thisElem = allElems[i];
			if (thisElem.className && thisElem.className == divName && thisElem.style.display!='none') {
				sum = sum + 1;
			}
		}
		document.getElementById('ratingMaxPoints').innerHTML = sum + offset;
	}
}

function unsetPoints(divName) {
	document.getElementById('ratingMaxPoints').innerHTML = '0';
}

function unsetField(divName) {
	document.getElementById(divName).value = '';
}

function checkNumeric(id, val) {
	if (isNaN(val) == true) {
		document.getElementById(id).style.backgroundColor='#FF0000';
		alert('Fehler: Bitte die rot markierten Punktzahl-Felder korrigieren!');
	}
	else
		document.getElementById(id).style.backgroundColor='#FFFFFF';
}

function unsetValues(id) {
	for (var j = 0; j < 20 ; j++) {
		if (document.getElementById(id).getElementsByTagName('input')[j].type == 'text')
			document.getElementById(id).getElementsByTagName('input')[j].value = '';
		}
	document.getElementById(id).getElementsByTagName('textarea')[0].value = '';
}

function nextRating(nr, orgId, nextId, operator) {
	var nextNr = parseInt(nr) + 1;
	if (document.getElementById('rating[' + nextNr + ']').style.display!='none') {
		if (operator == 'plus')
			document.getElementById(nextId).value = parseInt(document.getElementById(orgId).value) + 1;
		else if (operator == 'minus')
			document.getElementById(nextId).value = parseInt(document.getElementById(orgId).value) - 1;
	}
}

function countLi(ulid) {
var ul = document.getElementById(ulid);
var i=0;
var x;
var y;
while(x = ul.getElementsByTagName('li')[i++]) {
	y = x.getAttribute('id');
	document.getElementById('questNr_' + y).innerHTML = 'Frage '+ i;
	document.getElementById('question_' + y +'_sort').value = i;
	}
alert('done');
}

function renameQuest() {
	var allElems = document.getElementsByTagName('*');
	var k = 1;
	for (var i = 0; i < allElems.length; i++) {
		var thisElem = allElems[i];
		if (thisElem.className && thisElem.className == 'questNr') {
			thisElem.innerHTML = k + '. Frage';
		}
		else if (thisElem.className && thisElem.className == 'questSort') {
			thisElem.value = k;
			k++;
		}
	}
}

function renameRatings() {
	var allElems = document.getElementsByTagName('*');
	var k = 1;
	for (var i = 0; i < allElems.length; i++) {
		var thisElem = allElems[i];
		if (thisElem.className && thisElem.className == 'ratingNr') {
				thisElem.innerHTML = 'Bewertung Nr. ' + k;
			k++;
		}
	}
}


function insertQuestion(mother, id) {

	var nextId = parseInt(id)+1;

	while(document.getElementById('questionList_' + nextId))
		nextId++;

	if(!document.getElementById('questionList_' + nextId)) {
		if(document.getElementById('type2').checked == true) {
			var type1 = 'none';
			var type2 = 'block';
		}
		else if(document.getElementById('type1').checked == true) {
			var type2 = 'none';
			var type1 = 'block';
		}
		var divElement = new Element('li', {
			'id'   : 'questionList_' + nextId,
			'class': 'sortQuestionsList',
			'style.position': 'relative'
		}).update('<div class=\u0022questionDiv\u0022 id=\u0022question_' + nextId +'\u0022 style=\u0022display:none;\u0022><table style=\u0022padding: 3px;\u0022><tbody><tr><td><span id=\u0022questNr_1\u0022 class=\u0022questNr\u0022><strong>'+ nextId +'. Frage</strong></span></td><td colspan=\u00222\u0022><textarea rows=\u00225\u0022 cols=\u002230\u0022 name=\u0022question[' + nextId +'][question]\u0022></textarea><input type=\u0022hidden\u0022 value=\u0022' + nextId +'\u0022 id=\u0022question_' + nextId +'_sort\u0022 class=\u0022questSort\u0022 name=\u0022question[' + nextId +'][sort]\u0022 /></td></tr><tr><td>1. Option</td><td><input type=\u0022text\u0022 name=\u0022option[' + nextId +'][1]\u0022 /></td><td><div style=\u0022display: ' + type1 + ';\u0022 class=\u0022type1\u0022><input type=\u0022radio\u0022 checked=\u0022checked\u0022 value=\u00221\u0022 name=\u0022correct_' + nextId +'\u0022 /> Option korrekt</div><div style=\u0022display: ' + type2 + ';\u0022 class=\u0022type2\u0022><input type=\u0022text\u0022 onblur=\u0022sumPoints(\u0027points\u0027); checkNumeric(\u0027points_' + nextId +'_1\u0027, $(\u0027points_' + nextId +'_1\u0027).value);\u0022 size=\u00222\u0022 id=\u0022points_' + nextId +'_1\u0022 name=\u0022points[' + nextId +'][1]\u0022 class=\u0022pointClass2\u0022/> Punkte</div></td></tr><tr><td>2. Option</td><td><input type=\u0022text\u0022 name=\u0022option[' + nextId +'][2]\u0022/></td><td><div style=\u0022display: ' + type1 + ';\u0022 class=\u0022type1\u0022><input type=\u0022radio\u0022 value=\u00222\u0022 name=\u0022correct_' + nextId +'\u0022/> Option korrekt</div><div style=\u0022display: ' + type2 + ';\u0022 class=\u0022type2\u0022><input type=\u0022text\u0022 onblur=\u0022sumPoints(\u0027points\u0027); checkNumeric(\u0027points_' + nextId +'_2\u0027, $(\u0027points[' + nextId +'][2]\u0027).value);\u0022 size=\u00222\u0022 id=\u0022points_' + nextId +'_2\u0022 name=\u0022points[' + nextId +'][2]\u0022 class=\u0022pointClass2\u0022/> Punkte</div></td></tr><tr><td>3. Option</td><td><input type=\u0022text\u0022 name=\u0022option[' + nextId +'][3]\u0022/></td><td><div style=\u0022display: ' + type1 + ';\u0022 class=\u0022type1\u0022><input type=\u0022radio\u0022 value=\u00223\u0022 name=\u0022correct_' + nextId +'\u0022/> Option korrekt</div><div style=\u0022display: ' + type2 + ';\u0022 class=\u0022type2\u0022><input type=\u0022text\u0022 onblur=\u0022sumPoints(\u0027points\u0027); checkNumeric(\u0027points_' + nextId +'_3\u0027, $(\u0027points_' + nextId +'_3\u0027).value);\u0022 size=\u00222\u0022 id=\u0022points_' + nextId +'_3\u0022 name=\u0022points[' + nextId +'][3]\u0022 class=\u0022pointClass2\u0022/> Punkte</div></td></tr><tr><td>4. Option</td><td><input type=\u0022text\u0022 name=\u0022option[' + nextId +'][4]\u0022/></td><td><div style=\u0022display: ' + type1 + ';\u0022 class=\u0022type1\u0022><input type=\u0022radio\u0022 value=\u00224\u0022 name=\u0022correct_' + nextId +'\u0022/> Option korrekt</div><div style=\u0022display: ' + type2 + ';\u0022 class=\u0022type2\u0022><input type=\u0022text\u0022 onblur=\u0022sumPoints(\u0027points\u0027); checkNumeric(\u0027points_' + nextId +'_4\u0027, $(\u0027points_' + nextId +'_4\u0027).value);\u0022 size=\u00222\u0022 id=\u0022points_' + nextId +'_4\u0022 name=\u0022points[' + nextId +'][4]\u0022 class=\u0022pointClass2\u0022/> Punkte</div></td></tr><tr><td>5. Option</td><td><input type=\u0022text\u0022 name=\u0022option[' + nextId +'][5]\u0022/></td><td><div style=\u0022display: ' + type1 + ';\u0022 class=\u0022type1\u0022><input type=\u0022radio\u0022 value=\u00225\u0022 name=\u0022correct_' + nextId +'\u0022/> Option korrekt</div><div style=\u0022display: ' + type2 + ';\u0022 class=\u0022type2\u0022><input type=\u0022text\u0022 onblur=\u0022sumPoints(\u0027points\u0027); checkNumeric(\u0027points_' + nextId +'_5\u0027, $(\u0027points_' + nextId +'_5\u0027).value);\u0022 size=\u00222\u0022 id=\u0022points_' + nextId +'_5\u0022 name=\u0022points[' + nextId +'][5]\u0022 class=\u0022pointClass2\u0022/> Punkte</div></td></tr></tbody></table><span id=\u0022linkDelete_1\u0022><img alt=\u0022Frage löschen\u0022 src=\u0022http://www.quizly.de/images/icons/pencil_delete.png\u0022/> <a onclick=\u0022Effect.BlindUp(\u0027question_' + nextId + '\u0027); $(\u0027questionList_' + nextId + '\u0027).remove(); renameQuest(); sumVisibleDivs(\u0027questionDiv\u0027, 0); sumPoints(\u0027points\u0027); return false;\u0022 href=\u0022#\u0022>Diese Frage löschen</a></span><br/><span id=\u0022linkAdd_1\u0022><img alt=\u0022Frage hinzufügen\u0022 src=\u0022http://www.quizly.de/images/icons/pencil_add.png\u0022/> <a onclick=\u0022insertQuestion(\u0027questionList_'+ nextId +'\u0027, \u0027' + nextId +'\u0027); sumVisibleDivs(\u0027questionDiv\u0027, 1); return false;\u0022 href=\u0022#\u0022>Eine weitere Frage nach dieser hinzufügen</a></span><br/></div>');
	
		var contentElement = $(mother);
		Element.insert(contentElement, {'after': divElement});
		Effect.BlindDown('question_' + nextId);
	
		renameQuest();
	}
}

function insertRating(mother, id) {

	var nextId = parseInt(id)+1;

	while(document.getElementById('rating_' + nextId))
		nextId++;

	if(!document.getElementById('rating_' + nextId)) {
		var divElement = new Element('div', {
			'id'   : 'rating_' + nextId,
			'class': 'ratingBox',
			'style.position': 'relative'
		}).update('<span class=\u0022ratingNr\u0022>Bewertung Nr. '+ nextId +'</span>: <input type=\u0022text\u0022 value=\u0022\u0022 id=\u0022ratingText_'+ nextId +'\u0022 name=\u0022rating['+ nextId +'][ratingText]\u0022/> von minimal <input type=\u0022text\u0022 id=\u0022lowerLimit_'+ nextId +'\u0022 name=\u0022rating['+ nextId +'][lowerLimit]\u0022 value=\u0022\u0022 size=\u00222\u0022/> bis maximal <input type=\u0022text\u0022 id=\u0022upperLimit_'+ nextId +'\u0022 name=\u0022rating['+ nextId +'][upperLimit]\u0022 value=\u0022\u0022 size=\u00222\u0022/> Punkten<br/><img src=\u0022http://www.quizly.de/images/icons/comment_delete.png\u0022 alt=\u0022Bewertung löschen\u0022/> <a href=\u0022#\u0022 onclick=\u0022Effect.BlindUp(\u0027rating_'+ nextId +'\u0027); $(\u0027rating_'+ nextId +'\u0027).remove(); renameRatings(); return false;\u0022>Diese Bewertung löschen</a><br/><img src=\u0022http://www.quizly.de/images/icons/comment_add.png\u0022 alt=\u0022Bewertung hinzufügen\u0022/> <a href=\u0022#\u0022 onclick=\u0022insertRating(\u0027rating_'+ nextId +'\u0027, \u0027'+ nextId +'\u0027); return false;\u0022>Eine weitere Bewertung nach dieser hinzufügen</a><br/>');
	
		var contentElement = $(mother);
		Element.insert(contentElement, {'after': divElement});
		Effect.BlindDown('rating_' + nextId + '');

		renameRatings();
	}
}

function checkField(field, errorMessage) {
	if($(field).value=='') {
		alert(errorMessage);
		return false;
	}
	else
		return true;
}

function checkRadio(field, errorMessage) {
	var chk=0;
	for(var i = 0; i < document.getElementsByName(field).length; i++) {
		if(document.getElementsByName(field)[i].checked == true)
			chk=1;
	}
	if(chk==1)
		return true;
	else {
		alert(errorMessage);
		return false;
	}
}

function delDiv(id) {
	var sp = document.getElementById(id);
	sp.parentNode.removeChild(sp);
}

function confirmDel(tableName, fieldName, id) {
	var answer = confirm("Sind Sie sicher, dass dieses Quiz wirklich gelöscht werden soll?");
	if (answer) {
		xajax_delElement(tableName, fieldName, id);
		delDiv(id);
	}
	else
		return false;
}

//--------------------------------------------------------
// Simple Mouseover Script
//--------------------------------------------------------
// this script's globals
var simpleMOverOutFlag = 1;
var zoomMOverOutFlag = 1;
var compareWidth;
//mouse over => move and show div
function stdMOver(e, data, img, showHead, xOffset)
{
	// xOffset : unused!!	------------------^
	var overdiv;
	if (!e)
	  e = window.event;

	//compose stringdata
	if (simpleMOverOutFlag==1)
	{
		fadeIn("stdToolTip");
		innerStr = composeHTML(data, img, showHead);
		simpleMOverOutFlag = 0;
	}
	if (document.getElementById)
	{
		overdiv = document.getElementById("stdToolTip");
		overdiv.innerHTML = innerStr;
	}

	stdShowElement ("stdToolTip", e);
}

//show a dom element by id & set best position to mouse coords
function stdShowElement (elementId, e)
{
	var x, y;
	var xOffset = 10;
	var yOffset = 20;
	var boxWidth, boxHeight;

	if (document.getElementById)
	{
		var element = document.getElementById(elementId);

		if (self.innerHeight) // all except Explorer
		{
			x = self.innerWidth;
			y = self.innerHeight;
		}
		else if (document.documentElement && document.documentElement.clientHeight) // Explorer 6 Strict Mode
		{
			x = document.documentElement.clientWidth;
			y = document.documentElement.clientHeight;
		}
		var tfw=false, tfh=false;
		boxWidth = element.offsetWidth; // get width of incoming box
		if (e.clientX + boxWidth + xOffset < x)
		{
			element.style.left = document.documentElement.scrollLeft + e.clientX + xOffset + 'px';
			tfw = true;
		}
		else
		{
			element.style.left = document.documentElement.scrollLeft + e.clientX - boxWidth + 'px' ;
		}

		boxHeight = element.offsetHeight; // get height of incoming box
		if (e.clientY + boxHeight + yOffset < y)
		{
			element.style.top = document.documentElement.scrollTop + e.clientY + yOffset + 'px';
			tfh = true;
		}
		else
		{
			element.style.top = document.documentElement.scrollTop + e.clientY - boxHeight + 'px' ;
		}

		//showDebugInfo ("element.style.left: " + element.style.left + "px<br />element.style.top: " + element.style.top + "px<br />	e.clientX("+e.clientX+") + boxWidth("+boxWidth+") + xOffset("+xOffset+") < x("+x+") <strong>"+ tfw +"</strong><br />e.clientY("+e.clientY+") + boxHeight("+boxHeight+") + yOffset("+yOffset+") < y("+y+") <strong>"+ tfh +"</strong><br />");

		element.style.visibility = "visible";
	}
}

//hide a dom element by id
function stdHideElement (elementId)
{
	var element;
	if (document.getElementById)
	{
		element = document.getElementById(elementId);
		if (elementId=="stdToolTip" || elementId=="subMenuToolTip") fadeOut(elementId);
		else element.style.visibility = "hidden";
	}
}

//fade in a div // v0.1 beta
var fadeCurrentValue=0;
var fadeCurrentMode;
function fadeIn (elem_id)
{
	fadeCurrentMode = "in";
	fade(elem_id, "in");
}

function fadeOut (elem_id)
{
	fadeCurrentMode = "out";
	fade(elem_id, "out");
}

function fade (elem_id, mode)
{
	//--- settings ----------------
	var inTimeout = 25;
	var outTimeout = 14;
	var inEndValue = 10; // 0..10
	var outEndValue = 0; // 0..10
	var calculationFactor = 10; // 10 @ 0..10
	var step = 1;
	//-----------------------------

	var setTimeoutFlag = 1;
	var timeout, elem, value;

	value = fadeCurrentValue;

	elem = document.getElementById(elem_id);
	elem.style.opacity = value/calculationFactor;
	elem.style.filter = 'alpha(opacity=' + value*(100/calculationFactor) + ')';
	if (mode=="in")
	{
		if (value < inEndValue)
		{
			value = value + step;
			timeout = inTimeout;
		}
		else setTimeoutFlag = 0;
	}
	if (mode=="out")
	{
		if (value > outEndValue)
		{
			value = value - step;
			timeout = outTimeout;
		}
		else
		{
			setTimeoutFlag = 0;
			elem.style.visibility = "hidden";
		}
	}
	if (setTimeoutFlag && mode==fadeCurrentMode)
	{
		window.setTimeout("fade('" + elem_id + "', '" + mode + "')", timeout);
	}
	fadeCurrentValue = value;
}

//mouse over => show help
function helpMOver(e, data, strHead, icon, opt_TTClass)
{
	if (!e)
	  e = window.event;
		if (e.target) targ = e.target;
	else if (e.srcElement) targ = e.srcElement;
	if (targ.nodeType == 3) targ = targ.parentNode; // defeat Safari bug
	if (simpleMOverOutFlag==1 && icon=='help') changeCursor(targ, 'help');
	if (!opt_TTClass) opt_TTClass = 'helpTT';
	var img = '/images/icons/' + icon +'.png';
	data = '<div class="' + opt_TTClass + '">' + data + '</div>';
	var showHead = '<span class="nowrap">' + strHead + '</span>';
	stdMOver(e, data, img, showHead);
}

function changeCursor(e, c)
{
	if (e!="") e.style.cursor = c;
	document.getElementsByTagName("body")[0].style.cursor = c;
}


function showDebugInfo(str)
{
	var debugInfo = "";
	var debugDiv = document.getElementById("debugInfo");
	debugDiv.style.display = "block";
	if (debugDiv.innerHTML=="") clearDebugInfo();

	debugDiv.innerHTML = debugInfo + debugDiv.innerHTML + str + '<br />';
	debugDiv.style.top = document.documentElement.scrollTop + 10 + 'px';
}
function clearDebugInfo()
{
	document.getElementById("debugInfo").innerHTML = '<span class="strong">DebugInfo:</span> <img class="vatb cursorPointer" src="/grafik/icons/delete.png" alt="leeren" onclick="clearDebugInfo()" /><br /><br />';
}

//mouse over => show help
function allstarsMOver(e, data, strHead, opt_TTClass)
{
	if (!e)
	  e = window.event;
	if (!opt_TTClass) opt_TTClass = 'helpTT';
	var img = '';
	data = '<div class="' + opt_TTClass + '">' + data + '</div>';
	var showHead = '<span class="nowrap">' + strHead + '</span>';
	stdMOver(e, data, img, showHead);
}

// compose innerHTML
function composeHTML (data, img, showHead)
{
	var str = '';
	var divStyle = 'padding: 2px; overflow: hidden;';
	var divDataClass;
	var imgStyle;
	var imgFloat;
	if (showHead!=0 && showHead) str = '<div class="helpHeader">' + showHead + '</div>';
	if (data=='')
	{
		imgFloat = '';
		imgStyle = 'padding: 0; margin: 0; float: left; overflow:hidden;';
		divStyle = 'padding: 0;';
	}
	else
	{
		if (data!='' && img!='') divDataClass = ' class="flleft"';
		else divDataClass = '';
		imgFloat = ' class="flleft"';
		imgStyle = 'padding:0px 4px 0px 0px;';
	}
	// catch <table> content. no padding for data beginning with <table>
	if (data.substr(0, 6)!="<table") divStyle = ' style="' + divStyle + '"';
	else divStyle = "";
	str = str + '<div' + divStyle + '>';
	if (img!="" && img!=0) str = str + '<div' + imgFloat + '><img style="' + imgStyle + '" class="vatb" src="' + img + '" /></div>';
	if (data!='') str = str + '<div' + divDataClass + '>' + data + '</div>';
	str = str + '</div>';
	return str;
}

//mouse out => hide div, set flag
function stdMOut()
{
	stdHideElement ("stdToolTip");
	changeCursor("", 'auto')
	simpleMOverOutFlag = 1;
}

