﻿var requestCompleted = false;
var valid = true;
var validNick = false;

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 = "s7conf_scode_label";
    sicherheitscode_input.className = "";

    var agb_cb = document.getElementById("agb");
    sicherheitscode_input.className = "";

    document.getElementById("mistakes_wrapper").style.display = "none";

    document.getElementById("error_nick").style.display = "none";
    document.getElementById("error_nick02").style.display = "none";
    document.getElementById("error_nick03").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";
}


function checkNick(){
    resetErrorFields();
	
    // 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 == ""){
        document.getElementById("mistakes_wrapper").style.display = "block";
        spielername_label.className = "ep_error";
        spielername_input.className = "ep_error_input";
        document.getElementById("error_nick").style.display = "list-item";
        valid &= false;
    } else if (!(/^[a-zA-Z0-9]{3,13}$/).test(spielername_input.value)) {
        var spielername = document.forms['fnRegister'].elements['nick'].value;
        document.getElementById("mistakes_wrapper").style.display = "block";
		spielername_label.className = "ep_error";
		spielername_input.className = "ep_error_input";
		document.getElementById("error_nick02").style.display = "list-item";
		valid &= false;
    } else {
		var url = DOTNETAPPFOLDER + "/CheckNick?xpf=gen&nick="+document.getElementById('nick').value+"&callback=displayNickInfo";
		
		if(document.getElementById('checkNick')) {
			document.getElementsByTagName('head')[0].removeChild(document.getElementById('checkNick'));
		}
		var script = document.createElement('script');
		script.setAttribute('src', url);
		script.setAttribute('id', 'checkNick');
		document.getElementsByTagName('head')[0].appendChild(script);
	}
}


// The main validation function
function validateForm(){
    
   resetErrorFields();
   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 == ""){
        document.getElementById("mistakes_wrapper").style.display = "block";
        spielername_label.className = "ep_error";
        spielername_input.className = "ep_error_input";
        document.getElementById("error_nick").style.display = "list-item";
		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)){
            document.getElementById("mistakes_wrapper").style.display = "block";
            spielername_label.className = "ep_error";
            spielername_input.className = "ep_error_input";
            document.getElementById("error_nick02").style.display = "list-item";
			valid &= false;
        } else {
			checkNick();
        }
    }
    
    // To check a password
    var passwort_input = document.getElementById("pass");
    var passwort_label = document.getElementById("pass_label");
	var passwort2_input = document.getElementById("pass_conf");
    var passwort2_label = document.getElementById("pass_conf_label");
	var passwort = document.forms['fnRegister'].elements['pass'].value;
    var passwort_string = passwort.match(/[a-zA-Z0-9]+/);
	
    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 = "list-item";
        valid &= false;
    } else if (passwort.length < 5 || (passwort != passwort_string)) {
		passwort_label.className = "ep_error";
		passwort_input.className = "ep_error_input";
		document.getElementById("error_pass02").style.display = "list-item";
		valid &= false;
	} else 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 = "list-item";
        valid &= false;
    } else {
		valid &= true;	
	}

    // 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 = "list-item";
        valid &= false;
    } else {
        email_label.className = "";
        email_input.className = "";
		valid &= true;
    }

    // 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_code";
        sicherheitscode_input.className = "ep_error_input";
        document.getElementById("error_securecode").style.display = "list-item";
        valid &= false;
    } else {
		valid &= true;	
	}

    // 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 = "list-item";
        valid &= false;
    } else {
        agb_cb.className = "";
		valid &= true;
    }

    if (valid && validNick){
		document.getElementById("mistakes_wrapper").style.display = "none";
        return true;
    } else {
        document.getElementById("mistakes_wrapper").style.display = "block";
        return false;
	}
}


function displayNickInfo(data) {
	requestCompleted = true;
    var alternativList03 = document.getElementById('error_nick03');
    var inputNick = document.getElementById("nick");
    var labelNick = document.getElementById("nick_label");
	
	var availableNick = data["isavailable"];
	if(availableNick == 0){
        var dataNicknames = data["alternates"];
        var dataLaenge = data["alternates"].length;
        document.getElementById("mistakes_wrapper").style.display = "block";
        var textMiddle = "";
       
        var nickAlternativ;
        for(var i=0; i < dataLaenge; i++){
            nickAlternativ = dataNicknames[i];
            textMiddle += '<span>&bull;<a class="s7_alternativ_nick" href=\"javascript:setAlternateNick(\'' + nickAlternativ + '\')\";>' + nickAlternativ + '</a></span>' +'<br />';
        }
        labelNick.className = "ep_error";
        inputNick.className = "ep_error_input";
        alternativList03.style.display = "list-item";
        document.getElementById('error_nick').style.display= 'none';
        document.getElementById('error_nick02').style.display= 'none';
        alternativList03.innerHTML =  textAnfang + '<br />'+ textMiddle ;
        validNick = false;
    } else {
        alternativList03.style.display = "none";
        labelNick.className = "";
        inputNick.className = "";
        validNick = true;
    }
}

function setAlternateNick(nickname){
    document.getElementById('nick').value = nickname;
    document.getElementById('error_nick03').style.display = 'none';
    document.getElementById('mistakes_wrapper').style.display = 'none';
    document.getElementById("nick").className = "";
    document.getElementById("nick_label").className = "";
    validNick = true;
}



