//verifica se una data è corretta o meno
function isDate(dateStr) {
    var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
    var matchArray = dateStr.match(datePat); // is the format ok?
    if (matchArray == null) {
        return false;
    }
    month = matchArray[3];
    day = matchArray[1];
    year = matchArray[5];
    if (month < 1 || month > 12) {
        return false;
    }
    if (day < 1 || day > 31) {
        return false;
    }
    if ((month==4 || month==6 || month==9 || month==11) && day==31) {
        return false;
    }
    if (month == 2) {
        var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
        if (day > 29 || (day==29 && !isleap)) {
            return false;
        }
    }
    return true;
}



function emailCheck (emailStr) {

/* The following variable tells the rest of the function whether or not
to verify that the address ends in a two-letter country or well-known
TLD.  1 means check it, 0 means don't. */

var checkTLD=1;

/* The following is the list of known TLDs that an e-mail address must end with. */

var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;

/* The following pattern is used to check if the entered e-mail address
fits the user@domain format.  It also is used to separate the username
from the domain. */

var emailPat=/^(.+)@(.+)$/;

/* The following string represents the pattern for matching all special
characters.  We don't want to allow special characters in the address. 
These characters include ( ) < > @ , ; : \ " . [ ] */

var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";

/* The following string represents the range of characters allowed in a 
username or domainname.  It really states which chars aren't allowed.*/

var validChars="\[^\\s" + specialChars + "\]";

/* The following pattern applies if the "user" is a quoted string (in
which case, there are no rules about which characters are allowed
and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com
is a legal e-mail address. */

var quotedUser="(\"[^\"]*\")";

/* The following pattern applies for domains that are IP addresses,
rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal
e-mail address. NOTE: The square brackets are required. */

var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;

/* The following string represents an atom (basically a series of non-special characters.) */

var atom=validChars + '+';

/* The following string represents one word in the typical username.
For example, in john.doe@somewhere.com, john and doe are words.
Basically, a word is either an atom or quoted string. */

var word="(" + atom + "|" + quotedUser + ")";

// The following pattern describes the structure of the user

var userPat=new RegExp("^" + word + "(\\." + word + ")*$");

/* The following pattern describes the structure of a normal symbolic
domain, as opposed to ipDomainPat, shown above. */

var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");

/* Finally, let's start trying to figure out if the supplied address is valid. */

/* Begin with the coarse pattern to simply break up user@domain into
different pieces that are easy to analyze. */

var matchArray=emailStr.match(emailPat);

if (matchArray==null) {

/* Too many/few @'s or something; basically, this address doesn't
even fit the general mould of a valid e-mail address. */

return false;
}
var user=matchArray[1];
var domain=matchArray[2];

// Start by checking that only basic ASCII characters are in the strings (0-127).

for (i=0; i<user.length; i++) {
if (user.charCodeAt(i)>127) {
return false;
   }
}
for (i=0; i<domain.length; i++) {
if (domain.charCodeAt(i)>127) {
return false;
   }
}

// See if "user" is valid 

if (user.match(userPat)==null) {

// user is not valid

return false;
}

/* if the e-mail address is at an IP address (as opposed to a symbolic
host name) make sure the IP address is valid. */

var IPArray=domain.match(ipDomainPat);
if (IPArray!=null) {

// this is an IP address

for (var i=1;i<=4;i++) {
if (IPArray[i]>255) {
return false;
   }
}
return true;
}

// Domain is symbolic name.  Check if it's valid.
 
var atomPat=new RegExp("^" + atom + "$");
var domArr=domain.split(".");
var len=domArr.length;
for (i=0;i<len;i++) {
if (domArr[i].search(atomPat)==-1) {
return false;
   }
}

/* domain name seems valid, but now make sure that it ends in a
known top-level domain (like com, edu, gov) or a two-letter word,
representing country (uk, nl), and that there's a hostname preceding 
the domain or country. */

if (checkTLD && domArr[domArr.length-1].length!=2 && 
domArr[domArr.length-1].search(knownDomsPat)==-1) {
return false;
}

// Make sure there's a host name preceding the domain.

if (len<2) {
return false;
}

// If we've gotten this far, everything's valid!
return true;
}


function validaWizardStep1(fullId, mid)
{
    
    var prefix = fullId.replace(mid,"")

    var errore = false;
    var msg = "Sono presenti degli errori nel modulo: ";
    var fld;
    var val;
     
    fld = document.getElementById(prefix + "ddlProdotto");
    if(fld){
        val=fld.selectedIndex;
        if(val <=0){
            errore = true;
            msg = msg + "\n - non hai selezionato alcun prodotto";
        }
    }
    
    fld = document.getElementById(prefix + "ddlProfessioni");
    if(fld){
        val=fld.selectedIndex;

        if(val<=0){
            errore = true;
            msg = msg + "\n - non hai selezionato alcuna professione";
        }
    }
    if(errore){
        alert(msg);
        return false;
    }else{
        return true;
    }         
}

function validaWizardStep2(fullId, mid)
{
    var prefix = fullId.replace(mid,"")

    var errore = false;
    var msg = "Sono presenti degli errori nel modulo: ";
    var fld;
    var val;
     
    fld = document.getElementById(prefix + "ddlEta");
    if(fld){
        val=fld.selectedIndex;
        if(val <=0){
            errore = true;
            msg = msg + "\n - non hai indicato i tuoi anni";
        }
    }
    
    fld = document.getElementById(prefix + "ddlDenaro");
    if(fld){
        val=fld.selectedIndex;

        if(val<=0){
            errore = true;
            msg = msg + "\n - non hai indicato quanto denaro vuoi inviare all'estero";
        }
    }
    
    
    fld = document.getElementById(prefix + "ddlRedditoMensile");
    if(fld){
        val=fld.selectedIndex;

        if(val<=0){
            errore = true;
            msg = msg + "\n - non hai indicato il tuo reddito mensile";
        }
    }
        
    fld = document.getElementById(prefix + "ddlAnniLavoro");
    if(fld){
        val=fld.selectedIndex;

        if(val<=0){
            errore = true;
            msg = msg + "\n - non hai indicato da quanti anni lavori";
        }
    }
    
    fld = document.getElementById(prefix + "ddlImportoRichiesto");
    if(fld){
        val=fld.selectedIndex;

        if(val<=0){
            errore = true;
            msg = msg + "\n - non hai indicato quale importo richiedi";
        }
    }
    

    fld = document.getElementById(prefix + "ddlUtilizzoMutuo");
    if(fld){
        val=fld.selectedIndex;

        if(val<=0){
            errore = true;
            msg = msg + "\n - non hai indicato come intenti utilizzare il mutuo";
        }
    }

    fld = document.getElementById(prefix + "ddlNumeroRate");
    if(fld){
        val=fld.selectedIndex;

        if(val<=0){
            errore = true;
            msg = msg + "\n - non hai indicato in quante rate vuoi rimborsare il prestito";
        }
    }
    
    
        
    fld = document.getElementById(prefix + "txtImportoServe");
    if(fld){
        val=fld.value;

        if(isNaN (val)){
            errore = true;
            msg = msg + "\n - hai inserito un importo non corretto";
        }
    }
    
    fld = document.getElementById(prefix + "ddlTassoMutuo");
    if(fld){
        val=fld.selectedIndex;

        if(val<=0){
            errore = true;
            msg = msg + "\n - non hai indicato alcun tasso";
        }
    }

    fld = document.getElementById(prefix + "ddlNumeroAnni");
    if(fld){
        val=fld.selectedIndex;

        if(val<=0){
            errore = true;
            msg = msg + "\n - non hai indicato la durata del mutuo";
        }
    }
    
    
    //vari messaggi piccoli
       var c_errore = false;         
    fld = document.getElementById(prefix + "ddlAcquistiInternet");
    if(fld){
        val=fld.selectedIndex;
        if(val <=0){
            c_errore = true;
        }
    }
    

    fld = document.getElementById(prefix + "ddlPiccolaSomma");
    if(fld){
        val=fld.selectedIndex;
        if(val <=0){
            c_errore = true;
        }
    }

    fld = document.getElementById(prefix + "ddlPiccoleRate");
    if(fld){
        val=fld.selectedIndex;
        if(val <=0){
            c_errore = true;
        }
    }
    
    if(c_errore){
            errore = true;
            msg = msg + "\n - per favore assicurati di aver risposto ad ogni domanda";
    }

    

    if(errore){
        alert(msg);
        return false;
    }else{
        return true;
    }         

    
}


function validaWizardStep3(fullId, mid)
{
    var prefix = fullId.replace(mid,"")

    var errore = false;
    var msg = "Sono presenti degli errori nel modulo: ";
    var fld;
    var val;
     
    fld = document.getElementById(prefix + "ddlEta");
    if(fld){
        val=fld.selectedIndex;
        if(val <=0){
            errore = true;
            msg = msg + "\n - non hai indicato i tuoi anni";
        }
    }
    
    fld = document.getElementById(prefix + "ddlDenaro");
    if(fld){
        val=fld.selectedIndex;

        if(val<=0){
            errore = true;
            msg = msg + "\n - non hai indicato quanto denaro vuoi inviare all'estero";
        }
    }
    
    
    fld = document.getElementById(prefix + "ddlRedditoMensile");
    if(fld){
        val=fld.selectedIndex;

        if(val<=0){
            errore = true;
            msg = msg + "\n - non hai indicato il tuo reddito mensile";
        }
    }
        
    fld = document.getElementById(prefix + "ddlAnniLavoro");
    if(fld){
        val=fld.selectedIndex;

        if(val<=0){
            errore = true;
            msg = msg + "\n - non hai indicato da quanti anni lavori";
        }
    }
    
    fld = document.getElementById(prefix + "ddlImportoRichiesto");
    if(fld){
        val=fld.selectedIndex;

        if(val<=0){
            errore = true;
            msg = msg + "\n - non hai indicato quale importo richiedi";
        }
    }
    

    fld = document.getElementById(prefix + "ddlUtilizzoMutuo");
    if(fld){
        val=fld.selectedIndex;

        if(val<=0){
            errore = true;
            msg = msg + "\n - non hai indicato come intenti utilizzare il mutuo";
        }
    }

    fld = document.getElementById(prefix + "ddlNumeroRate");
    if(fld){
        val=fld.selectedIndex;

        if(val<=0){
            errore = true;
            msg = msg + "\n - non hai indicato in quante rate vuoi rimborsare il prestito";
        }
    }
    
    
        
    fld = document.getElementById(prefix + "txtImportoServe");
    if(fld){
        val=fld.value;

        if(isNaN (val)){
            errore = true;
            msg = msg + "\n - hai inserito un importo non corretto";
        }
    }
    
    fld = document.getElementById(prefix + "ddlTassoMutuo");
    if(fld){
        val=fld.selectedIndex;

        if(val<=0){
            errore = true;
            msg = msg + "\n - non hai indicato alcun tasso";
        }
    }

    fld = document.getElementById(prefix + "ddlNumeroAnni");
    if(fld){
        val=fld.selectedIndex;

        if(val<=0){
            errore = true;
            msg = msg + "\n - non hai indicato la durata del mutuo";
        }
    }
    
    
    //vari messaggi piccoli
       var c_errore = false;         
    fld = document.getElementById(prefix + "ddlAcquistiInternet");
    if(fld){
        val=fld.selectedIndex;
        if(val <=0){
            c_errore = true;
        }
    }
    

    fld = document.getElementById(prefix + "ddlPiccolaSomma");
    if(fld){
        val=fld.selectedIndex;
        if(val <=0){
            c_errore = true;
        }
    }

    fld = document.getElementById(prefix + "ddlPiccoleRate");
    if(fld){
        val=fld.selectedIndex;
        if(val <=0){
            c_errore = true;
        }
    }
    
    if(c_errore){
            errore = true;
            msg = msg + "\n - per favore assicurati di aver risposto ad ogni domanda";
    }

    

    if(errore){
        alert(msg);
        return false;
    }else{
        return true;
    }         

    
}



function verificaFormIscrizione_(nc)
{
    var prefix = nc + "_";
    var errore = false;
    var msg = "Sono presenti degli errori nel modulo: ";
    var fld;
    var val;
     
    fld = document.getElementById(prefix + "txtragionesoc");
    if(fld){
        val=fld.value;
        if(val == ""){
            errore = true;
            msg = msg + "\n - non hai inserito il campo RAGIONE SOCIALE";
        }
    }
    
    fld = document.getElementById(prefix + "txtreferente");
    if(fld){
        val=fld.value;
        if(val == ""){
            errore = true;
            msg = msg + "\n - non hai inserito il campo REFERENTE";
        }
    }

    fld = document.getElementById(prefix + "txtindirizzo");
    if(fld){
        val=fld.value;
        if(val == ""){
            errore = true;
            msg = msg + "\n - non hai inserito il campo INDIRIZZO";
        }
    }

    fld = document.getElementById(prefix + "ddlProvincia");
    if(fld){
        val=fld.selectedIndex;
        if(val <= 0){
            errore = true;
            msg = msg + "\n - non hai selezionato alcuna PROVINCIA";
        }else{
            var fld2 = document.getElementById(prefix + "ddlComuni");
            if(fld2){
                var val2=fld2.selectedIndex;
                if(val2 <= 0){
                    errore = true;
                    msg = msg + "\n - non hai selezionato alcun COMUNE";
                }
            }
        
        }
    }
    
    fld = document.getElementById(prefix + "txttelefono");
    if(fld){
        val=fld.value;
        if(val == ""){
            errore = true;
            msg = msg + "\n - non hai inserito il campo TELEFONO";
        }
    }

    fld = document.getElementById(prefix + "txtemail");
    if(fld){
        val=fld.value;
        if(!emailCheck(val)){
            errore = true;
            msg = msg + "\n - hai inserito un indirizzo EMAIL non corretto";
        }
    }
    
    fld = document.getElementById(prefix + "chkPrivacy");
    if(!fld.checked){
            errore = true;
            msg = msg + "\n - per l'invio del modulo devi prestare il consenso alla politica sul trattamento dei dati personali adottata dalla nostra azienda";
    }
    

    if(errore){
        alert(msg);
        return false;
    }else{
        return true;
    }         
}


function verificaFormIscrizione(nc)
{
    var prefix = nc + "_";
    var errore = false;
    var msg = "Sono presenti degli errori nel modulo: ";
    var fld;
    var val;
     
    fld = document.getElementById(prefix + "txtragionesoc");
    if(fld){
        val=fld.value;
        if(val == ""){
            errore = true;
            msg = msg + "\n - non hai inserito il campo RAGIONE SOCIALE";
        }
    }
    
    fld = document.getElementById(prefix + "txtreferente");
    if(fld){
        val=fld.value;
        if(val == ""){
            errore = true;
            msg = msg + "\n - non hai inserito il campo REFERENTE";
        }
    }

    fld = document.getElementById(prefix + "txtindirizzo");
    if(fld){
        val=fld.value;
        if(val == ""){
            errore = true;
            msg = msg + "\n - non hai inserito il campo INDIRIZZO";
        }
    }

    fld = document.getElementById(prefix + "ddlProvincia");
    if(fld){
        val=fld.selectedIndex;
        if(val <= 0){
            errore = true;
            msg = msg + "\n - non hai selezionato alcuna PROVINCIA";
        }else{
            var fld2 = document.getElementById(prefix + "ddlComuni");
            if(fld2){
                var val2=fld2.selectedIndex;
                if(val2 <= 0){
                    errore = true;
                    msg = msg + "\n - non hai selezionato alcun COMUNE";
                }
            }
        
        }
    }
    
    fld = document.getElementById(prefix + "txttelefono");
    if(fld){
        val=fld.value;
        if(val == ""){
            errore = true;
            msg = msg + "\n - non hai inserito il campo TELEFONO";
        }
    }

    fld = document.getElementById(prefix + "txtemail");
    if(fld){
        val=fld.value;
        if(!emailCheck(val)){
            errore = true;
            msg = msg + "\n - hai inserito un indirizzo EMAIL non corretto";
        }
    }
    
    fld = document.getElementById(prefix + "chkPrivacy");
    if(!fld.checked){
            errore = true;
            msg = msg + "\n - per l'invio del modulo devi prestare il consenso alla politica sul trattamento dei dati personali adottata dalla nostra azienda";
    }
    

    if(errore){
        alert(msg);
        return false;
    }else{
        return true;
    }         
}


function verificaFormLavoro(nc)
{
    var prefix = nc + "_";
    var errore = false;
    var msg = "Sono presenti degli errori nel modulo: ";
    var fld;
    var val;
     
    fld = document.getElementById(prefix + "txtnome");
    if(fld){
        val=fld.value;
        if(val == ""){
            errore = true;
            msg = msg + "\n - non hai inserito il campo NOME";
        }
    }
    
    fld = document.getElementById(prefix + "txtcognome");
    if(fld){
        val=fld.value;
        if(val == ""){
            errore = true;
            msg = msg + "\n - non hai inserito il campo COGNOME";
        }
    }
    
    
    fld = document.getElementById(prefix + "txtdatanascita");
    if(fld){
        val=fld.value;
        if(!isDate(val)){
            errore = true;
            msg = msg + "\n - hai inserito una DATA DI NASCITA non corretta";
        }
    }

    fld = document.getElementById(prefix + "txtcomunenascita");
    if(fld){
        val=fld.value;
        if(val == ""){
            errore = true;
            msg = msg + "\n - non hai inserito il campo COMUNE DI NASCITA";
        }
    }

    fld = document.getElementById(prefix + "txtresidenza");
    if(fld){
        val=fld.value;
        if(val == ""){
            errore = true;
            msg = msg + "\n - non hai inserito il campo RESIDENZA";
        }
    }
    
    fld = document.getElementById(prefix + "txtcellulare");
    if(fld){
        val=fld.value;
        if(val == ""){
            errore = true;
            msg = msg + "\n - non hai inserito il campo CELLULARE";
        }
    }
    

    
    fld = document.getElementById(prefix + "txtdiploma");
    if(fld){
        val=fld.value;
        if(val == ""){
            errore = true;
            msg = msg + "\n - non hai inserito il campo DIPLOMA";
        }
    }

    fld = document.getElementById(prefix + "txtemail");
    if(fld){
        val=fld.value;
        if(!emailCheck(val)){
            errore = true;
            msg = msg + "\n - hai inserito un indirizzo EMAIL non corretto";
        }
    }
    
    
        fld = document.getElementById(prefix + "ddlprofilo");
    if(fld){
        val=fld.selectedIndex;
        if(val <= 0){
            errore = true;
            msg = msg + "\n - non hai selezionato alcuna POSIZIONE";        
        }
    }

    
    fld = document.getElementById(prefix + "chkPrivacy");
    if(!fld.checked){
            errore = true;
            msg = msg + "\n - per l'invio del modulo devi prestare il consenso alla politica sul trattamento dei dati personali adottata dalla nostra azienda";
    }
    

    if(errore){
        alert(msg);
        return false;
    }else{
        return true;
    }         
}


function verificaFormContatti(nc)
{
    var prefix = nc + "_";
    var errore = false;
    var msg = "Sono presenti degli errori nel modulo: ";
    var fld;
    var val;
     
    fld = document.getElementById(prefix + "nome");
    if(fld){
        val=fld.value;
        if(val == ""){
            errore = true;
            msg = msg + "\n - non hai inserito il campo NOME e COGNOME";
        }
    }
    
    
    

    fld = document.getElementById(prefix + "user_email");
    if(fld){
        val=fld.value;
        if(!emailCheck(val)){
            errore = true;
            msg = msg + "\n - hai inserito un indirizzo EMAIL non corretto";
        }
    }
    
    fld = document.getElementById(prefix + "question");
    if(fld){
        val=fld.value;
        if(val == ""){
            errore = true;
            msg = msg + "\n - non hai inserito il campo MESSAGGIO";
        }
    }
    
    fld = document.getElementById(prefix + "chkPrivacy");
    if(!fld.checked){
            errore = true;
            msg = msg + "\n - per l'invio del modulo devi prestare il consenso alla politica sul trattamento dei dati personali adottata dalla nostra azienda";
    }
    

    if(errore){
        alert(msg);
        return false;
    }else{
        return true;
    }         
}
