function emailCheck(str) {
     var a = false;
     var res = false;
     if(typeof(RegExp) == 'function') {
         var b = new RegExp('abc');
         if(b.test('abc') == true){a = true;}
     }
     if(a == true) {
         reg = new RegExp('^([a-zA-Z0-9\\-\\.\\_]+)'+
                           '(\\@)([a-zA-Z0-9\\-\\.]+)'+
                           '(\\.)([a-zA-Z]{2,4})$');
         res = (reg.test(str));
     } else {
        res = (str.search('@') >= 1 &&
             str.lastIndexOf('.') > str.search('@') &&
             str.lastIndexOf('.') >= str.length-5);
     }
     return(res);
 }


function resetErrorFields(){

    var spielername_input = document.getElementById("nick");
    var spielername_label = document.getElementById("nick_label");
    spielername_label.className = "";
    spielername_input.className = "";

    var passwort_input = document.getElementById("pass");
    var passwort_label = document.getElementById("pass_label");
    passwort_label.className = "";
    passwort_input.className = "";

    var passwort2_input = document.getElementById("pass_conf");
    var passwort2_label = document.getElementById("pass_conf_label");
    passwort2_label.className = "";
    passwort2_input.className = "";

    var email_input = document.getElementById("email");
    var email_label = document.getElementById("email_label");
    email_label.className = "";
    email_input.className = "";

    var sicherheitscode_input = document.getElementById("securecode");
    var sicherheitscode_label = document.getElementById("securecode_label");
    sicherheitscode_label.className = "";
    sicherheitscode_input.className = "";

    var agb_cb = document.getElementById("agb");
    sicherheitscode_input.className = "";

    document.getElementById("mistakes_output").style.display = "none";
    document.getElementById("mistakes_wrapper").style.display = "none";

    document.getElementById("error_nick").style.display = "none";
    document.getElementById("error_nick02").style.display = "none";
    document.getElementById("error_pass").style.display = "none";
    document.getElementById("error_pass02").style.display = "none";
    document.getElementById("error_pass_conf").style.display = "none";
    document.getElementById("error_email").style.display = "none";
    document.getElementById("error_securecode").style.display = "none";
    document.getElementById("error_agbCB").style.display = "none";
}



// The main validation function
function validateForm(){

    resetErrorFields();

    var valid = true;

    // To check a nickname
    var spielername_input = document.getElementById("nick");
    var spielername_label = document.getElementById("nick_label");

    if (spielername_input.value == null || spielername_input.value == ""){
        spielername_label.className = "ep_error";
        spielername_input.className = "ep_error_input";
        document.getElementById("error_nick").style.display = "block";
        valid = false;
    }
    else
    {
        var spielername = document.forms['fnRegister'].elements['nick'].value;
        var spielername_string = spielername.match(/[a-zA-Z0-9]+/);
        if ((spielername.length < 3 || spielername.length > 13) || (spielername != spielername_string))
         {
              spielername_label.className = "ep_error";
              spielername_input.className = "ep_error_input";
              document.getElementById("error_nick02").style.display = "block";
              valid = false;
          }

    }

    // To check a password
    var passwort_input = document.getElementById("pass");
    var passwort_label = document.getElementById("pass_label");
    if (passwort_input.value == null || passwort_input.value == "" ){
        passwort_label.className = "ep_error";
        passwort_input.className = "ep_error_input";
        document.getElementById("error_pass").style.display = "block";
	valid = false;
    } else
        {
           var passwort = document.forms['fnRegister'].elements['pass'].value;
           if (passwort.length > 0 && passwort.length < 6)
               {
                    passwort_label.className = "ep_error";
                    passwort_input.className = "ep_error_input";
                    document.getElementById("error_pass02").style.display = "block";
               }
        }

    // To check a password_confirmation
    var passwort2_input = document.getElementById("pass_conf");
    var passwort2_label = document.getElementById("pass_conf_label");
    if (passwort2_input.value == null || passwort2_input.value == "" || (passwort_input.value != passwort2_input.value))
    {
        passwort2_label.className = "ep_error";
        passwort2_input.className = "ep_error_input";
        document.getElementById("error_pass_conf").style.display = "block";
	valid = false;
    }


    // To check an email
    var email_input = document.getElementById("email");
    var email_label = document.getElementById("email_label");
    if (email_input.value == null || email_input.value == "" || !emailCheck(email_input.value)){
        email_label.className = "ep_error";
        email_input.className = "ep_error_input";
        document.getElementById("error_email").style.display = "block";
	valid = false;
    } else {
        email_label.className = "";
        email_input.className = "";
    }

    // To check a securecode
    var sicherheitscode_input = document.getElementById("securecode");
    var sicherheitscode_label = document.getElementById("securecode_label");
    if (sicherheitscode_input.value == null || sicherheitscode_input.value == ""){
        sicherheitscode_label.className = "ep_error";
        sicherheitscode_input.className = "ep_error_input";
        document.getElementById("error_securecode").style.display = "block";
	valid = false;
    }

    // To check the checkbox
    var agb_cb = document.getElementById("agb");
    if (agb_cb.checked == 0) {
        agb_cb.className = "ep_error_cb";
        document.getElementById("error_agbCB").style.display = "block";
     	valid = false;
    } else {
        agb_cb.className = "";
    }


    if(valid){
        return true;
    }
     else{
        document.getElementById("mistakes_output").style.display = "block";
        document.getElementById("mistakes_wrapper").style.display = "block";
	return valid;
     }
 }

