/* Copyright(C) 2005 Salvatore Sanfilippo <antirez@gmail.com>
 * All Rights Reserved. */

var req = false;

function securityCodeCheckHandler() {
    if (req.readyState == 4 && req.status == 200) {
        var res = req.responseText;
        if (res.indexOf("OK") != -1) {
            document.f.submit();
        } else {
            alert("Codice di sicurezza errato!");
            warnField("seccode");
        }
    }
}

function generalAjaxHandler(field,message,onErrorFunction,onSuccessFunction) {
    if (req.readyState == 4 && req.status == 200) {
        var res = req.responseText;
        if (res.indexOf("OK") != -1) {
            onSuccessFunction();
        } else {
            if (onErrorFunction == null) {
                alert(message);
                warnField(field);
            } else {
                onErrorFunction();
            }
        }
    }
}

function submitForm() {
    document.f.submit();
}

function checkSecurityCode() {
    var myfunc = function() {
        generalAjaxHandler("seccode","Codice di sicurezza errato!", null, submitForm);
    }
    req = CreateXmlHttpReq(myfunc);
    req.open("GET", "/ajax/scode.php?seccode="+document.f.seccode.value+"&rand="+escape(Math.random()));
    req.send(null);
}

function checkUsername() {
    var myfunc = function() {
        generalAjaxHandler("username","Il nick da te scelto e' gia' in uso.", null,checkEmail);
    }
    req = CreateXmlHttpReq(myfunc);
    req.open("GET", "/ajax/checkusername.php?username="+document.f.username.value+"&rand="+escape(Math.random()));
    req.send(null);
}

function showForgotAccount() {
    div = document.getElementById("forgotaccount");
    div.style.visibility = 'visible';
    div.style.display = 'block';
    warnField("email");
}

function checkEmail() {
    var myfunc = function() {
        generalAjaxHandler("","",showForgotAccount,checkSecurityCode);
    }
    req = CreateXmlHttpReq(myfunc);
    req.open("GET", "/ajax/checkemail.php?email="+document.f.email.value+"&rand="+escape(Math.random()));
    req.send(null);
}

function checkForm() {
    clearFields(new Array("email","username","pass","repass"), new Array("forgotaccount"));
    if (!validate(document.f.username.value, "^[A-z0-9]+$", "Il nick non puo' contenere caratteri speciali o essere vuoto","username")) return false;
    if (!validate(document.f.pass.value, "^[A-z0-9_.,\\-!;:?=]{5,}$", "La password non puo' contenere caretteri speciali oltre a lettere, numeri e caratteri di punteggiatura, essere vuota o piu' corta di 5 caratteri","pass")) return false;
    if (document.f.pass.value != document.f.repass.value) {
        alert("I due campi password non coincidono");
        warnField("pass");
        warnField("repass");
        return false;
    }
    if (!isValidEmail(document.f.email.value)) {
        alert("Email non valida!");
        warnField("email");
        return false;
    }
    if (!document.f.accettocondizione[0].checked) {
        alert("Devi accettare le condizioni del contratto per continuare");
        return false;
    }
    if (!document.f.cvessatorie[0].checked) {
        alert("Devi accettare esplicitamente le clausole vessatorie per continuare");
        return false;
    }
    if (!document.f.informativa.checked) {
        alert("Devi selezionare la casella di presa visione dell'informativa per continuare");
        return false;
    }
    checkUsername();
    return false;
}

focusTarget = "document.f.email";
