var dodebug = 0; 
var user_id = 0;
var tmp_userid = 0;
var company_id = 0;
var request_url = '../request/request.php';
var is_group_user = 0; // neu wegen zweiter Usertabelle

/* Falls Selbstregistrierung fuer einzelne Einstufungstests gelten soll */
var user_registered_course = 'all';

// GET-Parameter auf UserID uberpruefen 
function checkUrlGetUserID() {
	tmp_userid = GetUrlParam('uid');
	if( tmp_userid && !isNaN(tmp_userid) ) {
		ajaxValidateUserId(tmp_userid);
	} else {
		frames.frmWBT_inhalt.showRegistrationStart(); // Anmeldung anzeigen
	}
}
/***** Ueberpruefe, ob es einen User mit der angegebenen ID gibt *****/
// Ajax request
function ajaxValidateUserId(uid) {
	var params = {};
	params.postBody = 'action=validate_uid&uid='+uid;
	params.onComplete = ajaxValidateUserIdReturn;
	params.onError = ajaxValidateUserIdOnError;
	var myajax = new ajax (request_url, params);
}
// Ajax return
function ajaxValidateUserIdReturn(request){
	if(dodebug) {
		var msg = "Ajax response on \"ajaxValidateUserId()\": " + request.responseText;
		alert(msg);
	}
	
	// OK? UserID setzen und Test starten
	if(request.responseText == 'OK') {
		user_id = tmp_userid; // UserID setzen und Test starten
		frames.frmWBT_inhalt.loadTestStart();
	} else {
		frames.frmWBT_inhalt.showRegistrationStart(); // Anmeldung anzeigen
	}
	
}
// Ajax error
function ajaxValidateUserIdOnError(request) {
	
	if(dodebug) {
		var msg = "ERROR: ajax communication on \"ajaxValidateUserId()\" failed!";
		msg += "\nStatus: " + request.status;
		msg += "\nStatus Text: " + request.statusText;
		alert(msg);
	}
	
	frames.frmWBT_inhalt.showRegistrationStart(); // Anmeldung anzeigen
}

/***** Login-Daten ueberpruefen *****/
function ajaxValidateLogin(logintype, formFields) {
	if(logintype && (typeof formFields == 'object') ) {
		var params = {};
		params.postBody = 'action=validate'+logintype+'&test_id='+test_id;
		// POST-Parameter zusammenstellen
		for (var prop in formFields) {
			params.postBody += '&'+prop+'='+formFields[prop].fieldval;
		}
		
		// Callback und Error je nach Login-Typ
		if(logintype == 'Login_user') {
			params.onComplete = ajaxValidateLoginUser;
			params.onError = ajaxValidateLoginUserOnError;
		} else if(logintype == 'Login_company') {
			params.onComplete = ajaxValidateLoginCompany;
			params.onError = ajaxValidateLoginCompanyOnError;
		} else {
			alert('Die Anmeldung kann nicht durchgeführt werden. \nUnbekannter Login-Typ.');
			return;
		}
		
		var myajax = new ajax (request_url, params);
	}
}
// Ajax return Login Kursteilnehmer
function ajaxValidateLoginUser(request){
	if(dodebug) {
		var msg = "Ajax response on \"ajaxValidateLoginUser()\": " + request.responseText;
		alert(msg);
	}
	
	// OK? UserID setzen und Test starten
	if(request.responseText.indexOf('OK_') != -1) {
		var tmp = request.responseText.split('_');
		is_group_user = (tmp[1] == "GROUP") ? 1 : 0; // NEU: Unterscheidung welche Usertabelle zu benutzen ist
		user_id = tmp[2]; // UserID setzen und Test starten
		frames.frmWBT_inhalt.loadTestStart();
	} else {
		var msg = frames.frmWBT_inhalt.formMsg['login_failed_user'];
		frames.frmWBT_inhalt.displayErrorMessage(msg, null); // Login-Fehler anzeigen
	}
	
}
// Ajax Login Kursteilnehmer Fehler
function ajaxValidateLoginUserOnError(request) {
	
	if(dodebug) {
		var msg = "ERROR: ajax communication on \"ajaxValidateLoginUser()\" failed!";
		msg += "\nStatus: " + request.status;
		msg += "\nStatus Text: " + request.statusText;
		alert(msg);
	}
	
	var msg = frames.frmWBT_inhalt.formMsg['system_error']+' Error in function ajaxValidateLoginUser().';
	frames.frmWBT_inhalt.displayErrorMessage(msg, null); // Fehler anzeigen
}

// Ajax return Login Firmenkunde
function ajaxValidateLoginCompany(request){
	if(dodebug) {
		var msg = "Ajax response on \"ajaxValidateLoginCompany()\": " + request.responseText;
		alert(msg);
	}
	
	// OK? UserID und CompanyID setzen und Test starten
	if(request.responseText.indexOf('OK_') != -1) {
		var tmp = request.responseText.split('_');
		user_id = tmp[1]; // UserID setzen
		company_id = tmp[2]; // CompanyID setzen
		frames.frmWBT_inhalt.loadTestStart();
	} else {
		var msg = frames.frmWBT_inhalt.formMsg['login_failed_company'];
		frames.frmWBT_inhalt.displayErrorMessage(msg, null); // Login-Fehler anzeigen
	}
	
}
// Ajax Login Firmenkunde Fehler
function ajaxValidateLoginCompanyOnError(request) {
	
	if(dodebug) {
		var msg = "ERROR: ajax communication on \"ajaxValidateLoginCompany()\" failed!";
		msg += "\nStatus: " + request.status;
		msg += "\nStatus Text: " + request.statusText;
		alert(msg);
	}
	
	var msg = frames.frmWBT_inhalt.formMsg['system_error']+' Error in function ajaxValidateLoginCompany().';
	frames.frmWBT_inhalt.displayErrorMessage(msg, null); // Fehler anzeigen
}

/***** Ajax Registrierung *****/
function ajaxDoRegistration(formFields, ulang) {
	if(typeof formFields == 'object') {
		var params = {};
		params.postBody = 'action=do_registration&userlang='+ulang;
		// POST-Parameter zusammenstellen
		for (var prop in formFields) {
			params.postBody += '&'+prop+'='+formFields[prop].fieldval;
		}

		params.onComplete = ajaxDoRegistrationReturn;
		params.onError = ajaxDoRegistrationOnError;
		
		var myajax = new ajax (request_url, params);
	}
}
// Selbstregistrierung Return
function ajaxDoRegistrationReturn(request) {

	var msg = '';
	var msgelem = null;
	if(dodebug) {
		msg = "Ajax response on \"ajaxDoRegistration()\": " + request.responseText;
		alert(msg);
	}
	
	// OK? -> Bestaetigung anzeigen
	if(request.responseText == 'OK') {
		frames.frmWBT_inhalt.doShowRegisterOK();
	} else {
		switch(request.responseText) {
		case 'ERROR_DUPLICATE_LOGIN':
			try {
				msgelem = frames.frmWBT_inhalt.getElementById('inpGroup_login');
			} catch (e) {}
			msg = frames.frmWBT_inhalt.formMsg['login_duplicate_entry'];
			break;
		case 'ERROR_WRONG_CODE':
			msg = frames.frmWBT_inhalt.formMsg['login_wrong_code'];
			break;
		case 'ERROR_REGISTRATION_SAVE_FAILED':
			msg = frames.frmWBT_inhalt.formMsg['system_error']+' Error in function ajaxDoRegistration(): failed to save registration data.';
			break;
		default:
			msg = frames.frmWBT_inhalt.formMsg['system_error']+' Error in function ajaxDoRegistration(): unknown return value.';
		}
		frames.frmWBT_inhalt.displayErrorMessage(msg, msgelem); // Login-Fehler anzeigen
	}
	
}
function ajaxDoRegistrationOnError(request) {
	var msg = frames.frmWBT_inhalt.formMsg['system_error']+' Error in function ajaxDoRegistration().';
	frames.frmWBT_inhalt.displayErrorMessage(msg, null); // Fehler anzeigen
}

/***** Testergebnisse speichern *****/
function ajaxSaveTestResult(savedata) {
	if( (typeof savedata == 'object') ) {
		var params = {};
		params.postBody = 'action=save_testdata';
		
		// POST-Parameter zusammenstellen
		for (var prop in savedata) {
			params.postBody += '&'+prop+'='+savedata[prop];
		}

		params.onComplete = ajaxSaveTestResultReturn;
		params.onError = ajaxSaveTestResultOnError;
		var myajax = new ajax (request_url, params);

	}
}
// Testergebnisse speichern: AJAX Rueckgabewert
function ajaxSaveTestResultReturn(request){
	if(dodebug) {
		var msg = "Ajax response on \"ajaxSaveTestResult()\": " + request.responseText;
		alert(msg);
	}
}
// Testergebnisse speichern: AJAX Fehler
function ajaxSaveTestResultOnError(request) {
	
	if(dodebug) {
		var msg = "ERROR: ajax communication on \"ajaxSaveTestResult()\" failed!";
		msg += "\nStatus: " + request.status;
		msg += "\nStatus Text: " + request.statusText;
		alert(msg);
	}
}
