function validate() {
    var allLabels = $('popupContainer').getElementsByTagName('label');
    for (var i = 0; i < allLabels.length; i++) {
        removeClass(allLabels[i], 'error');
    }
    var errorMsg = $('errorMsg');
    errorMsg.innerHTML = "Attenzione! Sono stati rilevati alcuni errori:<br/>";
    var err = 0;
    if ($('email').value == '') {
        $('email').parentNode.getElementsByTagName('label')[0].className += ' error';
        errorMsg.innerHTML += "- Compilare il campo 'e-mail'.<br/>";
        err++;
    } else if (!($('email').value.match(/\b(^(\S+@).+((\.com)|(\.it)|(\.net)|(\.edu)|(\.mil)|(\.gov)|(\.org)|(\..{2,2}))$)\b/gi))) {
            $('email').parentNode.getElementsByTagName('label')[0].className += ' error';
            errorMsg.innerHTML += "- L'email inserita non &egrave; valida.<br/>";
    }

    if ($('psw').value == '' && $('psw2').value == '') {
        $('psw').parentNode.getElementsByTagName('label')[0].className += ' error';
        $('psw2').parentNode.getElementsByTagName('label')[0].className += ' error';
        errorMsg.innerHTML += "- Compilare i campi password.<br/>";
        err++;
    } else if ($('psw').value != $('psw2').value) {
        $('psw').parentNode.getElementsByTagName('label')[0].className += ' error';
        $('psw2').parentNode.getElementsByTagName('label')[0].className += ' error';
        errorMsg.innerHTML += "- Conferma password non &egrave; corretto.<br/>";
        err++;
    } 
    if ($('psw').value.length < 6) {
        $('psw').parentNode.getElementsByTagName('label')[0].className += ' error';
        errorMsg.innerHTML += "- Password troppo corta. Almeno 6 caratteri.<br/>";
        err++;        
    }
    if ($('psw').value.length > 12) {
        $('psw').parentNode.getElementsByTagName('label')[0].className += ' error';
        errorMsg.innerHTML += "- Password troppo lunga. Massimo 12 caratteri.<br/>";
        err++;        
    }
        
    if ($('name').value == '') {
        $('name').parentNode.getElementsByTagName('label')[0].className += ' error';
        errorMsg.innerHTML += "- Compilare il campo 'Nome'.<br/>";
        err++;
    }
    
    if ($('surname').value == '') {
        $('surname').parentNode.getElementsByTagName('label')[0].className += ' error';
        errorMsg.innerHTML += "- Compilare il campo 'Cognome'.<br/>";
        err++;
    }
    
    if (!document.getElementById("inp_tutela").checked){
        errorMsg.innerHTML += "- Accettare i termini di utilizzo.<br/>";
        err++;
    }
    
    if (err > 0) {
        $('errors').style.display = 'inline';
    } else {
        new Ajax.Request("/account/ajaxRegister",
            {
                parameters: $('register_form').serialize(true),
                method:'post',
                onLoading: function(){
                    $('contForm').style.display = 'none';
                    $('loading').style.display = 'inline';
                    $('loadingFlash').style.visibility = 'visible';
                },
                onSuccess: function(transport) {
                    var resp = transport.responseText;
                    //alert("responso: "+resp);

                    if (resp == 1) {
                        $('loadingFlash').style.visibility = 'hidden';
                        $('loading').style.display = 'none';
                        $('success').style.display = 'inline';
                    }
                    if (resp == -3) {
                        //input non valido
                        $('contForm').style.display = 'inline';
                        $('contForm').style.visibility = 'visible';
                        $('loading').style.display = 'none';
                        $('loadingFlash').style.visibility = 'hidden';
                        errorMsg.innerHTML += "- La registrazione non &grave; stata effettuata, riprovare.<br/>";
                        $('errors').style.display = 'inline';                        
                    }
                    if (resp == -2) {
                        $('contForm').style.display = 'inline';
                        $('contForm').style.visibility = 'visible';
                        $('loading').style.display = 'none';
                        $('loadingFlash').style.visibility = 'hidden';
                        errorMsg.innerHTML += "- Username non disponibile.<br/>";
                        $('errors').style.display = 'inline';                        
                    }
                    if (resp == -1) {
                        $('contForm').style.display = 'inline';
                        $('contForm').style.visibility = 'visible';
                        $('loading').style.display = 'none';
                        $('loadingFlash').style.visibility = 'hidden';
                        errorMsg.innerHTML += "- I tuoi dati sono stati registrati. Sarai contattato al pi&ugrave; presto per diventare betatester.<br/>";
                        $('errors').style.display = 'inline';
                    } 
                },
                onFailure: function(){
                    $('contForm').style.display = 'inline';
                    $('contForm').style.visibility = 'visible';
                    $('loading').style.display = 'none';
                    $('loadingFlash').style.visibility = 'hidden';
                    errorMsg.innerHTML += "- Server Occupato. Registrazione non effettuata, ti preghiamo di riprovare in seguito.<br/>";
                    $('errors').style.display = 'inline';                  
                }
            });
    }
}