/**
 * Array to check, if everything is filled out properly
 */ 
var completeArray = new Array("0","0","0","0","0","0","0","0");

/**
 * If checkAll was activated
 */
var checkAll_on = 0;

function checkForename(username) {
	if(checkAll_on == 1) {
		setHTMLElement("allstatus","","");
		checkAll_on = 0;
	}
	if(username.length==0) {
		setCompleteArray("status_forename", "0");
		setError("status_forename", "Name ungültig");
		return false;
	}
	else {		
		setCompleteArray("status_forename", "1");
		setSuccess("status_forename");
		return true;
	}
	
}

function checkSurname(username) {
	if(checkAll_on == 1) {
		setHTMLElement("allstatus","","");
		checkAll_on = 0;
	}
	if(username.length==0) {
		setCompleteArray("status_surname", "0");
		setError("status_surname", "Name ungültig");
		return false;
	}
	else {		
		setCompleteArray("status_surname", "1");
		setSuccess("status_surname");
		return true;
	}
}

function checkBirthday(username) {
//'/^\d{1,2}\.\d{1,2}\.\d{4}$/'
	var reg = /^(((0?[1-9]|[1-2][0-9]|3[0-1])\.((0?[1-9]|1[0-2])\.| ?[A-Za-z][a-zä][a-z]+\.? ?)(20)?[0-9]{2})|(20[0-9]{2}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1]))|([a-zA-Z][a-z]{2,} ([1-9]|1[0-2]), ?(20)?[0-9]{2}))$/;
	
	if(checkAll_on == 1) {
		setHTMLElement("allstatus","","");
		checkAll_on = 0;
	}
	
	if(reg.test(username)){
		setCompleteArray("status_birthday", "1");
		setSuccess("status_birthday");
		return true;
	}
	else {
		setCompleteArray("status_birthday", "0");
		setError("status_birthday", "Datum ist nicht gültig");
		return false;
	}
}

/**
 * checkUser() checks if typed username is valid and unique
 * @param {Object} username typed Username
 */
function checkUser(username) {	
	
	username = trim(username);
	
	if(checkAll_on == 1) {
		setHTMLElement("allstatus","","");
		checkAll_on = 0;
	}
	
	if(username.length==0) {
		setCompleteArray("status_username", "0");
		setError("status_username", "Name ungültig");
		return false;
	}
	else{
		if(username.length<3){
			setCompleteArray("status_username", "0");
			setError("status_username", "Minimum 3 Zeichen");
			return false;
		}		
	}
	
	var _data = "username="+encodeURIComponent(username);	
	httpRequest("POST","./checkUsername.php",true,handleUserResponse,_data);
}

/**
 * checkPass() checks if typed Password is valid
 * @param {Object} pass typed Password
 */
function checkPass(pass) {
	
	pass = trim(pass);
	
	if(checkAll_on == 1) {
		setHTMLElement("allstatus","","");
		checkAll_on = 0;
	}
	
	if(pass.length==0) {
		setCompleteArray("status_pass", "0");
		setError("status_pass", "Passwort ungültig");
		return false;
	}
	else{
		if(pass.length<5){
			setCompleteArray("status_pass", "0");
			setError("status_pass", "Minimum 5 Zeichen");
			return false;
		}
		else {
			setCompleteArray("status_pass", "1");
			setSuccess("status_pass");
			return true;
		}
	}	
}

/**
 * checkPass2() checks if typed password is valid and matches the first password 
 * @param {Object} pass typed Password
 */
function checkPass2(pass) {
	
	pass = trim(pass);
	
	if(checkAll_on == 1) {
		setHTMLElement("allstatus","","");
		checkAll_on = 0;
	}
	
	//first Password
	var passID = document.getElementById("passID").value;
	checkPass(passID);
	if(pass.length==0) {
		setCompleteArray("status_pass2", "0");
		setError("status_pass2", "Passwort ungültig");
		return false;
	}
	else{
		if(pass.length<5){
			setCompleteArray("status_pass2", "0");
			setError("status_pass2", "Minimum 5 Zeichen");
			return false;
		}
	}
	if(pass == passID){
		setCompleteArray("status_pass", "1");
		setCompleteArray("status_pass2", "1");
		setSuccess("status_pass");
		setSuccess("status_pass2");
		return true;
	}
	else {
		setCompleteArray("status_pass2", "0");
		setError("status_pass2", "Passwörter stimmen nicht überein");
		return false;
	}	
}

/**
 * checkEmail() checks if typed E-Mail is a valid one
 * @param {Object} mail E-Mail-Address
 */
function checkEmail(mail) {
	
	//RegularExpression for correct E-Mail-Address
	var reg = new RegExp('^([a-zA-Z0-9\\-\\.\\_]+)'+
                   '(\\@)([a-zA-Z0-9\\-\\.]+)'+
                   '(\\.)([a-zA-Z]{2,4})$');
				   
	if(checkAll_on == 1) {
		setHTMLElement("allstatus","","");
		checkAll_on = 0;
	}
				   
	if(reg.test(mail)){
		setCompleteArray("status_email", "1");
		setSuccess("status_email");
		return true;
	}
	else {
		setCompleteArray("status_email", "0");
		setError("status_email", "E-Mail-Adresse ist nicht gültig");
		return false;
	}
}

function checkAGB() {
	
	if(checkAll_on == 1) {
		setHTMLElement("allstatus","","");
		checkAll_on = 0;
	}
	
	if(document.getElementById("agb").value == 1){
		setCompleteArray("status_agb", "1");
		return true;
	}	
	else {
		setCompleteArray("status_agb", "0");
		return false;
	}
}

/**
 * checkAll checks if everything is filled out correctly
 */
function checkAll() {
	
	//checkAll activated
	checkAll_on=1
	
	for(var i = 0; i<completeArray.length; i++) {		
		if(completeArray[i] != "1") {						
			setError("allstatus", "Du hast das Formular nicht richtig ausgefüllt");			
			return false;
		} 
	}
	return true;
}

/**
 * setCompleteArray() sets completeArray to indicate if everything is filled out correct
 * @param {Object} idname name of filled form-element
 * @param {Object} error val Value (0 = Error, 1 = Correct)
 */
function setCompleteArray(idname, val) {
	switch(idname) {
		case "status_username": completeArray[0] = val; break;
		case "status_pass": completeArray[1] = val; break;
		case "status_pass2": completeArray[2] = val; break;
		case "status_email": completeArray[3] = val; break;
		case "status_forename": completeArray[4] = val; break;
		case "status_surname": completeArray[5] = val; break;
		case "status_birthday": completeArray[6] = val; break;
		case "status_agb": completeArray[7] = val; break;
	}
}	

/**
 * speaks for itself
 */ 
function handleUserResponse() {
	//alert("ageag");
	if(request.readyState == 4) {
    	if(request.status == 200) {			
			//alert("slfjf");
			var response = request.responseXML;				
			var responseValue = response.getElementsByTagName("isuser")[0].firstChild.data;
			//alert(responseValue);
			if(responseValue == "0") {
				setCompleteArray("status_username", "1");
				setSuccess("status_username");
			}
			else {
				setCompleteArray("status_username", "0");
				setError("status_username", "Benutzername existiert bereits");
			}									
		} 
	}	
}
