/* get browser info */
var ns4 = (document.layers)?1:0;
var ie4 = (document.all)?1:0;
var ns6 = (document.getElementById&&!document.all)?1:0;
if(ns4){
	alert('\n\n\nDieser Browsertyp wird nicht unterstützt.\n\n\n');
}

/* declare variables */
var _oResult = new Array();

/* core functions */
function resetAssessment(){
	var i,j;
	_oResult = new Array();	
	for(i=0;i<document.forms.length;i++){
		var f = document.forms[i];
		if(f.name != "*"){
			continue;
		}
		changeTextByID('id_'+f.frmQuestionID.value, '');
		for(j=0;j<f.elements.length;j++){
			var e = f.elements[j];
			var c = e.checked;
			var v = e.value;
			var t = e.type;
			if(t != "checkbox"){
				continue;
			}
			else{
				e.checked = false;
				e.disabled = false;
			}
		}
	}
	changeTextByID('_Result','');
	changeTextByID('_Desc','');		
}

function isAssessmentComplete(){
	return (_oResult.length > 0)?true:false;
}

function evaluateAssessment(ftext, ttext){
	
	if(isAssessmentComplete()){
		return true;
	}
	
	var i,j;
	for(i=0;i<document.forms.length;i++){
		var pres = true;
		var ncnt = 0;
		var ccnt = 0;
		var f = document.forms[i];
		var isans=new Array();

		if(f.name != "*"){
			continue;
		}
				
		for(j=0;j<f.elements.length;j++){
			var e = f.elements[j];
			var c = e.checked;
			var v = e.value;
			var t = e.type;
			var n = e.name;
	
			if(t != "checkbox"){
				continue;
			}
			else{
				ccnt++;
			}
			if(((c == true) && (v == 'N')) || ((c == false) && (v == 'Y')) ){
				ncnt--;
				pres = false;
			}
			if (v == 'Y') {
   			isans.push(n);
			}
			if(v == 'N'){
				ncnt++;
			}
			e.disabled = true;
		}
		pres = (ncnt == ccnt)?true:pres;
		setResult(f, pres, isans.join(', '));
	}
	setChapterResult(ftext, ttext);
}

function setResult(f, res, isans){
	var o = new Object();
	var olength = (_oResult.length)?_oResult.length:0;
	o.chapterid = f.frmChapterID.value;
	o.description = f.frmDescription.value;
	o.questionid = f.frmQuestionID.value;
	o.result = (res)?1:0;
	o.parsed = false;
	o.chresult = 0;
	o.last = false;
	_oResult[olength] = o;
	changeTextByID('id_'+o.questionid ,'Richtige Antworten: '+isans);
	return true;
}

function setChapterResult(ftext, ttext){
	
	var i,j;
	var fres = 0;
	var fresrel = 0;
	var str_desc = '';
	var str_res = '';
	
	for(i = 0; i < _oResult.length;i++){
		var row = _oResult[i];
		var cres = 0;
		var ccnt = 0;
		fres = (row.result == 1)?(fres+1):fres;
		if(ftext && ttext){
			var restext = (row.result)?ftext:ttext;
			changeTextByID('id_'+row.questionid, restext);
		}
		if(!row.parsed){
			for(j = i;j<_oResult.length;j++){
				if(_oResult[j].chapterid == row.chapterid){
					_oResult[j].parsed = true;
					cres = (_oResult[j].result == 1)?(cres+1):cres;
					ccnt++;
				}
			}
			
		var cresrel = (j > 0)?pround((cres/ccnt)*100):0;
		_oResult[i].last = true;
		_oResult[i].chresult = cresrel;
		str_desc = str_desc+'<p class="Chapter"><b>Ergebnis:</b><p>';
		str_res = str_res+'<p class="Chapter"><b>'+cresrel+' %</b><p>';
		}
		
	}
	
	/* No final result at all.
	fresrel = (i > 0)?pround((fres/i)*100):0;
	str_desc = str_desc+'<p class="FResult">Gesamtergebnis:</p>';
	str_res = str_res+'<p class="FResult">'+fresrel+' %</p>';*/
	changeTextByID('_Result',str_res);
	changeTextByID('_Desc',str_desc);	
}

function ExportDatas(f, cname, rname, crname){
	
	var cname = (cname)?cname:'CHAPTERS';
	var rname = (rname)?rname:'FRESULT';
	var crname = (crname)?crname:'COURSECODE';
	var i, row;
	var fcnt = 0;
	var fres = 0;
	for(i = 0; i < _oResult.length;i++){
		row = _oResult[i];
		if(row.last){
			setFormField(f, cname+'['+fcnt+'][DESCRIPTION]', row.description);
			setFormField(f, cname+'['+fcnt+'][RESULT]', row.chresult);
			fcnt++;
		}
		fres = (_oResult[i].result == 1)?(fres+1):fres;
	}
	
	fresrel = (i > 0)?pround((fres/i)*100):0;
	setFormField(f, rname, fresrel);
	setFormField(f, crname, _sCode);
}
function changeTextByID(id, text){
	if(document.getElementById(id)){
		document.getElementById(id).innerHTML = text;
	}
}

function pround(n){
	var s = String(n);
	var pchar = s.split("");
	for(var i=0;i<pchar.length;i++){
		if((pchar[i] == '.') && (pchar[i+1] >= 5)){
			return parseInt(n)+1;
		}
	}
	return parseInt(n);
}

function setFormField(f, name, value, type){
	
	var type = (type)?type:'HIDDEN';
	var eref = (f)?f:self;
	var input = document.createElement('INPUT');
	input.type = type;
	input.name = name;
	input.value = value;
	eref.appendChild(input);
}
