var hasOpener = false;
var test_id = 'pt_de_en';
var test_language = 'de';
var ui_language ='en';

// Ende
function ExitTest() {
	var check = confirm('Are you sure to quit the test?');
	if(check == true){
		doOnUnload();
		top.close();
	}
}

var useSCORM = false;
var bInitDone = false;

// Test initialisieren
function doInit() {
	startTimer(); // hier nur Timer starten (kein SCORM)
}

// OnUnload Funktionen
var doneUnload = 0;
function doOnUnload(){
	if(!doneUnload) {
		// computeTime();
		doneUnload = 1;
	}
}

var quizPageCounter = 0;
var quizOverallResult = 0;

function resetQuiz(){
	quizPageCounter = 0;
	quizOverallResult = 0;
}

function quizUpdateResult(percentage,weight){
	quizPageCounter += weight;
	quizOverallResult = quizOverallResult + (percentage * weight);
}

// Sprachniveau
var mylanglevel = "a_1";
var levelreached = 1;

// Einzel-Level
var lpoints_1 = 0;
var lpoints_2 = 0;
var lpoints_3 = 0;
var lpoints_all = 0;

// Skill Levels
var g_skill = 0;
var v_skill = 0;
var l_skill = 0;
var r_skill = 0;

// Einzelne Fertigkeiten
var oSkills = new Object();
oSkills.Grammar = new Object();
oSkills.Grammar.q_all = 0;
oSkills.Grammar.q_ok = 0;
oSkills.Voca = new Object();
oSkills.Voca.q_all = 0;
oSkills.Voca.q_ok = 0;
oSkills.Read = new Object();
oSkills.Read.q_all = 0;
oSkills.Read.q_ok = 0;
oSkills.Listen = new Object();
oSkills.Listen.q_all = 0;
oSkills.Listen.q_ok = 0;

tqs=new Array();
tqs[1]=new Array();
tqs[1][0]=new Array();
tqs[1][0][0]=3;tqs[1][0][1]=4;tqs[1][0][2]=5;tqs[1][0][3]=6;tqs[1][0][4]=7;tqs[1][0][5]=15;tqs[1][0][6]=17;tqs[1][0][7]=18;tqs[1][0][8]=19;tqs[1][0][9]=20;
tqs[1][1]=new Array();
tqs[1][1][0]=1;tqs[1][1][1]=2;tqs[1][1][2]=8;tqs[1][1][3]=9;tqs[1][1][4]=10;tqs[1][1][5]=11;tqs[1][1][6]=12;tqs[1][1][7]=13;tqs[1][1][8]=14;tqs[1][1][9]=16;
tqs[2]=new Array();
tqs[2][0]=new Array();
tqs[2][0][0]=21;tqs[2][0][1]=22;tqs[2][0][2]=23;tqs[2][0][3]=34;tqs[2][0][4]=35;tqs[2][0][5]=36;tqs[2][0][6]=37;tqs[2][0][7]=38;tqs[2][0][8]=39;tqs[2][0][9]=40;
tqs[2][1]=new Array();
tqs[2][1][0]=24;tqs[2][1][1]=25;tqs[2][1][2]=26;tqs[2][1][3]=27;tqs[2][1][4]=28;tqs[2][1][5]=29;tqs[2][1][6]=30;tqs[2][1][7]=31;tqs[2][1][8]=32;tqs[2][1][9]=33;
tqs[3]=new Array();
tqs[3][0]=new Array();
tqs[3][0][0]=42;tqs[3][0][1]=43;tqs[3][0][2]=44;tqs[3][0][3]=45;tqs[3][0][4]=46;tqs[3][0][5]=47;tqs[3][0][6]=48;tqs[3][0][7]=49;tqs[3][0][8]=50;tqs[3][0][9]=51;
tqs[3][1]=new Array();
tqs[3][1][0]=41;tqs[3][1][1]=52;tqs[3][1][2]=53;tqs[3][1][3]=54;tqs[3][1][4]=55;tqs[3][1][5]=56;tqs[3][1][6]=57;tqs[3][1][7]=58;tqs[3][1][8]=59;tqs[3][1][9]=60;
tqs[4]=new Array();
tqs[4][0]=new Array();
tqs[4][0][0]=63;tqs[4][0][1]=64;tqs[4][0][2]=65;tqs[4][0][3]=66;tqs[4][0][4]=67;tqs[4][0][5]=68;tqs[4][0][6]=69;tqs[4][0][7]=70;tqs[4][0][8]=79;tqs[4][0][9]=80;
tqs[4][1]=new Array();
tqs[4][1][0]=61;tqs[4][1][1]=62;tqs[4][1][2]=71;tqs[4][1][3]=72;tqs[4][1][4]=73;tqs[4][1][5]=74;tqs[4][1][6]=75;tqs[4][1][7]=76;tqs[4][1][8]=77;tqs[4][1][9]=78;
tqs[5]=new Array();
tqs[5][0]=new Array();
tqs[5][0][0]=81;tqs[5][0][1]=82;tqs[5][0][2]=83;tqs[5][0][3]=84;tqs[5][0][4]=85;tqs[5][0][5]=86;tqs[5][0][6]=87;tqs[5][0][7]=88;tqs[5][0][8]=99;tqs[5][0][9]=100;
tqs[5][1]=new Array();
tqs[5][1][0]=89;tqs[5][1][1]=90;tqs[5][1][2]=91;tqs[5][1][3]=92;tqs[5][1][4]=93;tqs[5][1][5]=94;tqs[5][1][6]=95;tqs[5][1][7]=96;tqs[5][1][8]=97;tqs[5][1][9]=98;
tqs[6]=new Array();
tqs[6][0]=new Array();
tqs[6][0][0]=102;tqs[6][0][1]=103;tqs[6][0][2]=104;tqs[6][0][3]=105;tqs[6][0][4]=106;tqs[6][0][5]=107;tqs[6][0][6]=108;tqs[6][0][7]=118;tqs[6][0][8]=119;tqs[6][0][9]=120;
tqs[6][1]=new Array();
tqs[6][1][0]=101;tqs[6][1][1]=109;tqs[6][1][2]=110;tqs[6][1][3]=111;tqs[6][1][4]=112;tqs[6][1][5]=113;tqs[6][1][6]=114;tqs[6][1][7]=115;tqs[6][1][8]=116;tqs[6][1][9]=117;
tqs[7]=new Array();
tqs[7][0]=new Array();
tqs[7][0][0]=123;tqs[7][0][1]=124;tqs[7][0][2]=125;tqs[7][0][3]=126;tqs[7][0][4]=127;tqs[7][0][5]=128;tqs[7][0][6]=137;tqs[7][0][7]=138;tqs[7][0][8]=139;tqs[7][0][9]=140;
tqs[7][1]=new Array();
tqs[7][1][0]=121;tqs[7][1][1]=122;tqs[7][1][2]=129;tqs[7][1][3]=130;tqs[7][1][4]=131;tqs[7][1][5]=132;tqs[7][1][6]=133;tqs[7][1][7]=134;tqs[7][1][8]=135;tqs[7][1][9]=136;
tqs[8]=new Array();
tqs[8][0]=new Array();
tqs[8][0][0]=141;tqs[8][0][1]=142;tqs[8][0][2]=143;tqs[8][0][3]=144;tqs[8][0][4]=145;tqs[8][0][5]=146;tqs[8][0][6]=147;tqs[8][0][7]=148;tqs[8][0][8]=149;tqs[8][0][9]=160;
tqs[8][1]=new Array();
tqs[8][1][0]=150;tqs[8][1][1]=151;tqs[8][1][2]=152;tqs[8][1][3]=153;tqs[8][1][4]=154;tqs[8][1][5]=155;tqs[8][1][6]=156;tqs[8][1][7]=157;tqs[8][1][8]=158;tqs[8][1][9]=159;
tqs[9]=new Array();
tqs[9][0]=new Array();
tqs[9][0][0]=161;tqs[9][0][1]=162;tqs[9][0][2]=163;tqs[9][0][3]=164;tqs[9][0][4]=165;tqs[9][0][5]=166;tqs[9][0][6]=167;tqs[9][0][7]=168;tqs[9][0][8]=179;tqs[9][0][9]=180;
tqs[9][1]=new Array();
tqs[9][1][0]=169;tqs[9][1][1]=170;tqs[9][1][2]=171;tqs[9][1][3]=172;tqs[9][1][4]=173;tqs[9][1][5]=174;tqs[9][1][6]=175;tqs[9][1][7]=176;tqs[9][1][8]=177;tqs[9][1][9]=178;
tqs[10]=new Array();
tqs[10][0]=new Array();
tqs[10][0][0]=181;tqs[10][0][1]=182;tqs[10][0][2]=183;tqs[10][0][3]=184;tqs[10][0][4]=185;tqs[10][0][5]=186;tqs[10][0][6]=187;tqs[10][0][7]=188;tqs[10][0][8]=199;tqs[10][0][9]=200;
tqs[10][1]=new Array();
tqs[10][1][0]=189;tqs[10][1][1]=190;tqs[10][1][2]=191;tqs[10][1][3]=192;tqs[10][1][4]=193;tqs[10][1][5]=194;tqs[10][1][6]=195;tqs[10][1][7]=196;tqs[10][1][8]=197;tqs[10][1][9]=198;

/***************/
function wbtGoQuestionPage(page){
	frames.frmWBT_inhalt.location.replace('q_'+page+'.htm');
}

function wbtFinishTest(){
	var avglevel = (curpoints * 3) / 24;
	
	lpoints_3 = avglevel;
	lpoints_3 += stage_minlevel;
	lpoints_3--;
	
	// Durchschnitt aus 3 Durchgaengen
	lpoints_all = (lpoints_1 + lpoints_2 + lpoints_3) / 3;
	lpoints_all = lpoints_all * 10;
	lpoints_all = Math.round(lpoints_all);
	
	avglevel = Math.round(avglevel);
	avglevel += stage_minlevel;
	avglevel--;
	if(avglevel<1) {
		avglevel = 1;
	}

	levelreached = lpoints_all / 10;
	var tmp_levelreached = levelreached;
	if(levelreached < 1.5) {
		levelreached = Math.round(levelreached);
	}
	
	avglevel = avglevel * 10;
	avglevel = Math.round(avglevel);
	
	mylanglevel = getLangLevel(lpoints_all);

	// Grammar
	if(oSkills.Grammar.q_all>0) {
		g_skill = Math.round( (oSkills.Grammar.q_ok / oSkills.Grammar.q_all) * 100 );
	}
	// Vocabluary
	if(oSkills.Voca.q_all>0) {
		v_skill = Math.round( (oSkills.Voca.q_ok / oSkills.Voca.q_all) * 100 );
	}
	// Reading
	if(oSkills.Read.q_all>0) {
		r_skill = Math.round( (oSkills.Read.q_ok / oSkills.Read.q_all) * 100 );
	}
	// Listening
	if(oSkills.Listen.q_all>0) {
		l_skill = Math.round( (oSkills.Listen.q_ok / oSkills.Listen.q_all) * 100 );
	}

	// Auswertung anzeigen
	frames.frmWBT_inhalt.location.replace('test_exit01.htm');

	// Daten speichern
	var savedata = new Object();
	savedata['test_language'] = test_language;
	savedata['ui_language'] = ui_language;
	
	savedata['is_group_user'] = is_group_user;
	savedata['user_id'] = user_id;
	savedata['test_id'] = test_id;
	
	savedata['test_date'] = '';
	savedata['test_duration'] = getElapsedTime();
	savedata['test_finished'] = 1;
	
	savedata['result_points'] = tmp_levelreached;
	savedata['result_level'] = getLangLevelShort(mylanglevel);
	savedata['result_grammar'] = g_skill;
	savedata['result_voca'] = v_skill;
	savedata['result_read'] = r_skill;
	savedata['result_listen'] = l_skill;
	
	ajaxSaveTestResult(savedata);

}

var maxq = 64;
var curq = -1;
var qnum = 0;
var curstageq = 0;
var curstage = 1;

var stage_minlevel = 1;
var stage_maxlevel = 10;

var curpoints = 0;

var qarray = new Array();

function initTest() {
	doInit();
	maxq = 64;
	curq = -1;
	curstageq = 0;
	curstage = 1;
	curpoints = 0;
	
	stage_minlevel = 1;
	stage_maxlevel = 10;
	
	var tmpcount = 0;
	qarray = new Array();
	
	// Array mit den Aufgaben mischen
	for(i=stage_minlevel; i<=stage_maxlevel; i++) {
		tqs[i][0].shuffle();
		tqs[i][1].shuffle();
		
		// Aus jedem Level 2 Aufgaben (1 grammar, 1 voca)
		qarray[tmpcount] = tqs[i][0].shift();
		tmpcount++;
		qarray[tmpcount] = tqs[i][1].shift();
		tmpcount++;
		
	}
	
	// Aufgaben fuer Stage 1 mischen
	qarray.shuffle();
	
	// 1. Aufgabe anzeigen
	curq++;
	qnum++;
	wbtGoQuestionPage(qarray[curq]);
	
}

function doneQuestion(au, skill) {
	var donext = true;

	// Einzelne Fertigkeiten!
	switch (skill) {
	case "1":
		oSkills.Grammar.q_all++;
		oSkills.Read.q_all++;
		break;
	case "2":
		oSkills.Grammar.q_all++;
		oSkills.Listen.q_all++;
		break;
	case "3":
		oSkills.Voca.q_all++;
		oSkills.Read.q_all++;
		break;
	case "4":
		oSkills.Voca.q_all++;
		oSkills.Listen.q_all++;
		break;
	}
	
	if(au == 1) {
		curpoints++;

		// Einzelne Fertigkeiten!
		switch (skill) {
		case "1":
			oSkills.Grammar.q_ok++;
			oSkills.Read.q_ok++;
			break;
		case "2":
			oSkills.Grammar.q_ok++;
			oSkills.Listen.q_ok++;
			break;
		case "3":
			oSkills.Voca.q_ok++;
			oSkills.Read.q_ok++;
			break;
		case "4":
			oSkills.Voca.q_ok++;
			oSkills.Listen.q_ok++;
			break;
		}
		
	}
	
	if(curstage==1) {
		if( (curq+1)>=20 ) {
			initLevel2();
			donext = false;
			return;
		}
	} else if (curstage==2) {
		if( (curq+1)>=20 ) {
			initLevel3();
			donext = false;
			return;
		}
	} else if (curstage==3) {
		if( (curq+1)>=24 ) {
			wbtFinishTest();
			donext = false;
			return;
		}
	}
	
	// Naechste Seite
	if(donext) {
		curq++;
		qnum++;
		wbtGoQuestionPage(qarray[curq]);
	}
	
}

function initLevel2() {
	var midlevel = 0;
	var avglevel = (curpoints * 10) / 20;
	lpoints_1 = avglevel;
	avglevel = Math.round(avglevel);
	if(avglevel<1) {
		avglevel = 1;
	}
	
	curq = -1;
	curstageq = 0;
	curstage = 2;
	curpoints = 0;
	
	if(avglevel<3) {
		midlevel = 3;
	} else if (avglevel>8) {
		midlevel = 8;
	} else {
		midlevel = avglevel;
	}
	
	stage_minlevel = midlevel-2;
	if(! stage_minlevel ) {
		stage_minlevel = 1;
	}
	stage_maxlevel = midlevel+2;
	if(stage_maxlevel>10) {
		stage_maxlevel = 10;
	}

	var tmpcount = 0;
	qarray = new Array();
	
	// Array mit den Aufgaben mischen
	for(i=stage_minlevel; i<=stage_maxlevel; i++) {
		tqs[i][0].shuffle();
		tqs[i][1].shuffle();
		
		// Aus jedem Level 4 Aufgaben (2 grammar, 2 voca)
		qarray[tmpcount] = tqs[i][0].shift();
		tmpcount++;
		qarray[tmpcount] = tqs[i][1].shift();
		tmpcount++;
		qarray[tmpcount] = tqs[i][0].shift();
		tmpcount++;
		qarray[tmpcount] = tqs[i][1].shift();
		tmpcount++;
		
	}
	
	// Aufgaben fuer Stage 2 mischen
	qarray.shuffle();
	
	// 1. Aufgabe anzeigen
	curq++;
	qnum++;
	wbtGoQuestionPage(qarray[curq]);
}

function initLevel3() {
	var midlevel = 0;
	var avglevel = (curpoints * 5) / 20;
	
	lpoints_2 = avglevel;
	lpoints_2 += stage_minlevel;
	lpoints_2--;
	
	avglevel = Math.round(avglevel);
	avglevel += stage_minlevel;
	avglevel--;
	
	if(avglevel<1) {
		avglevel = 1;
	}

	curq = -1;
	curstageq = 0;
	curstage = 3;
	curpoints = 0;
	
	if(avglevel<2) {
		midlevel = 2;
	} else if (avglevel>9) {
		midlevel = 9;
	} else {
		midlevel = avglevel;
	}
	
	stage_minlevel = midlevel-1;
	if(! stage_minlevel ) {
		stage_minlevel = 1;
	}
	stage_maxlevel = midlevel+1;
	if(stage_maxlevel>10) {
		stage_maxlevel = 10;
	}
	

	var tmpcount = 0;
	qarray = new Array();
	
	// Array mit den Aufgaben mischen
	for(i=stage_minlevel; i<=stage_maxlevel; i++) {
		tqs[i][0].shuffle();
		tqs[i][1].shuffle();
		
		// Aus jedem Level 8 Aufgaben (2 grammar, 2 voca)
		qarray[tmpcount] = tqs[i][0].shift();
		tmpcount++;
		qarray[tmpcount] = tqs[i][1].shift();
		tmpcount++;
		qarray[tmpcount] = tqs[i][0].shift();
		tmpcount++;
		qarray[tmpcount] = tqs[i][1].shift();
		tmpcount++;
		qarray[tmpcount] = tqs[i][0].shift();
		tmpcount++;
		qarray[tmpcount] = tqs[i][1].shift();
		tmpcount++;
		qarray[tmpcount] = tqs[i][0].shift();
		tmpcount++;
		qarray[tmpcount] = tqs[i][1].shift();
		tmpcount++;
	
	}
	
	// Aufgaben fuer Stage 3 mischen
	qarray.shuffle();
	
	// 1. Aufgabe anzeigen
	curq++;
	qnum++;
	wbtGoQuestionPage(qarray[curq]);
}

// Sprachlevel anhand der erreichten Prozentzahl / 10
function getLangLevel(percentage) {
	var langlevel = "a_1";
	
	if(percentage > 98) {
		percentage = 11;
	} else {
		percentage = Math.round(percentage / 10)
	}
	
	switch (percentage) {
	case 3:
		langlevel = "a_2";
		break;	
	case 4:
		langlevel = "b_1";
		break;	
	case 5:
		langlevel = "b_1";
		break;	
	case 6:
		langlevel = "b_2";
		break;	
	case 7:
		langlevel = "b_2";
		break;	
	case 8:
		langlevel = "b_2";
		break;	
	case 9:
		langlevel = "c_1";
		break;	
	case 10:
		langlevel = "c_1";
		break;	
	case 11:
		langlevel = "c_2";
		break;	
	}
	
	return langlevel;
}

// Kurzbezeichnung Sprachlevel
function getLangLevelShort(langlevel) {
	var myLLShort = "A1";
	switch (langlevel) {
	case "a_1":
		myLLShort = "A1";
		break;
	case "a_2":
		myLLShort = "A2";
		break;
	case "b_1":
		myLLShort = "B1";
		break;
	case "b_2":
		myLLShort = "B2";
		break;
	case "c_1":
		myLLShort = "C1";
		break;
	case "c_2":
		myLLShort = "C2";
		break;
	}	
	
	return myLLShort;
}
