﻿function WT_RegistrazioneFormSubmit( frm, UrlOk ){
    var ok = true;
    var el1, el2, v1, v2;
    
    WT_HideErrors(frm);
    
    if (frm.find('input[name="username"]').length == 1) {
        //utente -----------------------------------------------------------------------------------------------------------
        if (!WT_ValidateRequired(frm.find('input[name="username"]'))) ok=false;

        el1 = frm.find('input[name="password"]');
        if (!WT_ValidateRequired(el1)){ ok=false; } else {
            el2 = frm.find('input[name="confirmpassword"]');
            if (el1.val() != el2.val()) {
                WT_ShowError(el1, "le 2 pasword non sono uguali");
                WT_ShowError(el2, "le 2 pasword non sono uguali");
                ok = false;
            }
        }

        el1 = frm.find('input[name="email"]');
        if (!WT_ValidateRequired(el1)){ ok=false; } else {
            if (!WT_ValidateEmail(el1)) ok=false;
        }
    }


    //persona -----------------------------------------------------------------------------------------------------------
    var Persona = frm.find('input[name="persona"]').val();
    
    switch (Persona) {
        case "G":
            el1 = frm.find('input[name="gi_piva"]');
            if (!WT_ValidateRequired(el1)) ok=false;
            if (ok){
                if (!SYS_VerificaPIVA(el1.val())) {
                    WT_ShowError(el1, "partita iva non valida");
                    ok = false;
                }
            }
            
            el1 = frm.find('input[name="gi_codfisc"]');
            if (!WT_ValidateRequired(el1)) ok=false;
            if (ok){
                if (!SYS_VerificaCfPiva(el1.val())) {
                    WT_ShowError(el1, "codice fiscale non valido");
                    ok = false;
                }
            }

            if (!WT_ValidateRequired(frm.find('input[name="gi_ragsoc"]'))) ok=false;

            if (!WT_ValidateRequired(frm.find('input[name="gi_lrnome"]'))) ok=false;
            if (!WT_ValidateRequired(frm.find('input[name="gi_lrcognome"]'))) ok=false;

            if (!WT_ValidateRequired(frm.find('input[name="gi_indirizzo"]'))) ok=false;
            if (!WT_ValidateRequired(frm.find('input[name="gi_localita"]'))) ok=false;
            if (!WT_ValidateRequired(frm.find('input[name="gi_cap"]'))) ok=false;
            if (!WT_ValidateRequired(frm.find('input[name="gi_provincia"]'))) ok=false;
            break;
            
        case "F":
            if (!WT_ValidateRequired(frm.find('input[name="fi_nome"]'))) ok=false;
            if (!WT_ValidateRequired(frm.find('input[name="fi_cognome"]'))) ok=false;

            el1 = frm.find('input[name="fi_codfisc"]');
            if (!WT_ValidateRequired(el1)) ok=false;
            v1 = el1.val();
            if (ok && v1.length>0) {
                if (!SYS_VerificaCodFisc(v1)) {
                    WT_ShowError(el1, "codice fiscale non valido");
                    ok = false;
                }
            }

            if (!WT_ValidateRequired(frm.find('input[name="fi_indirizzo"]'))) ok=false;
            if (!WT_ValidateRequired(frm.find('input[name="fi_localita"]'))) ok=false;
            if (!WT_ValidateRequired(frm.find('input[name="fi_cap"]'))) ok=false;
            if (!WT_ValidateRequired(frm.find('input[name="fi_provincia"]'))) ok=false;
            break;
            
        default:
            ok = false;
            break;
    }


    // recapiti -----------------------------------------------------------------------------------------------------------
    el1 = frm.find('input[name="rec1_dato"]');
    el2 = frm.find('input[name="rec2_dato"]');
    v1 = el1.val();
    v2 = el2.val();
    if ((v1 == '') && (v2 == '')) {
        WT_ShowError(el1, "specificare almeno un numero");
        WT_ShowError(el2, "specificare almeno un numero");
        ok = false;
    }


    // privacy -----------------------------------------------------------------------------------------------------------
    el1 = frm.find('input[name="privacy1"]');
    if (!el1.attr('checked')) {
        WT_ShowError(el1, "l'accettazione è richiesta");
        ok = false;
    }

    if (ok) {
        Wt_ShowBlanker(true);
        $.ajax({
            type: 'POST',
            url: frm.attr('action'),
            data: frm.serialize(),
            dataType: "text",
            cache: false,
            success: function(data, textStatus) {
                if (data) data = eval("(" + data + ")");
                if (data.esito && ! data.rc) {
                    window.location = UrlOk;
                } else {
                    Wt_HideBlanker();
                    WT_RegistrazioneFormShowServerErrors(frm, data.rc);
                }
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                Wt_HideBlanker();
                WT_ShowHttpErrBox(XMLHttpRequest, textStatus, errorThrown)
            }
        });
    } else {
        WT_EnsureVisibleFirstError(frm);
    }
}

function WT_RegistrazioneFormShowServerErrors(frm, returncodes){

    var Persona = frm.find('input[name="persona"]').val().toLowerCase();
    var Spedizione = frm.find('input[name="spedizione"]').val().toLowerCase();

    var str;
    var errdescr = '';
    if ( returncodes ){
        for (i=0; i<returncodes.length; i++) {
            str = returncodes[i].toLowerCase();
            switch (str) {
                case 'usernamemancante': WT_ShowError(frm.find('input[name="username"]'), 'campo richiesto'); break;
                case 'usernamenonvalido': WT_ShowError(frm.find('input[name="username"]'), 'username non valido'); break;
                case 'usernamenondisponibile': WT_ShowError(frm.find('input[name="username"]'), 'username non disponibile'); break;
                
                case 'passwordmancante': WT_ShowError(frm.find('input[name="password"]'), 'campo richiesto'); break;
                case 'passwordnonvalida': WT_ShowError(frm.find('input[name="password"]'), 'password non valida'); break;
                case 'passwordconfermamancante': WT_ShowError(frm.find('input[name="confirmpassword"]'), 'campo richiesto'); break;
                case 'passwordconfermanoncorrisponde': 
                    WT_ShowError(frm.find('input[name="password"]'), 'campi non uguali'); 
                    WT_ShowError(frm.find('input[name="confirmpassword"]'), 'campi non uguali'); 
                    break;
                
                case 'emailmancante': WT_ShowError(frm.find('input[name="email"]'), 'campo richiesto'); break;
                case 'emailnonvalida': WT_ShowError(frm.find('input[name="email"]'), 'email non valida'); break;
                case 'emailgiapresente': WT_ShowError(frm.find('input[name="email"]'), 'email già presente.<br /> Se ti sei già registrato clicca <a href="#WT_login" onclick="WT_LoginPopup();" >qui</a>'); break;
                
                case 'ragionesocialemancante': WT_ShowError(frm.find('input[name="'+Persona+'i_ragsoc"]'), 'campo richiesto'); break;
                case 'partitaivamancante': WT_ShowError(frm.find('input[name="'+Persona+'i_piva"]'), 'campo richiesto'); break;
                case 'partitaivagiapresente': WT_ShowError(frm.find('input[name="'+Persona+'i_piva"]'), 'partita iva già presente.<br /> Se ti sei già registrato clicca <a href="#WT_login" onclick="WT_LoginPopup();" >qui</a>'); break;
                case 'codicefiscalemancante': WT_ShowError(frm.find('input[name="'+Persona+'i_codfisc"]'), 'campo richiesto'); break;
                case 'codicefiscalegiapresente': WT_ShowError(frm.find('input[name="'+Persona+'i_codfisc"]'), 'codice fiscale già presente.<br /> Se ti sei già registrato clicca <a href="#WT_login" onclick="WT_LoginPopup();" >qui</a>'); break;
                
                case 'primonomemancante': WT_ShowError(frm.find('input[name="'+Persona+'i_nome"]'), 'campo richiesto'); break;
                case 'cognomemancante': WT_ShowError(frm.find('input[name="'+Persona+'i_cognome"]'), 'campo richiesto'); break;

                case 'indirizzofatturazionenazionemancante': WT_ShowError(frm.find('input[name="'+Persona+'i_nazione"]'), 'campo richiesto'); break;
                case 'indirizzofatturazioneindirizzomancante': WT_ShowError(frm.find('input[name="'+Persona+'i_indirizzo"]'), 'campo richiesto'); break;          
                case 'indirizzofatturazionecapmancante': WT_ShowError(frm.find('input[name="'+Persona+'i_cap"]'), 'campo richiesto'); break;
                case 'indirizzofatturazioneprovinciamancante': WT_ShowError(frm.find('input[name="'+Persona+'i_provincia"]'), 'campo richiesto'); break;
                case 'indirizzofatturazionelocalitamancante': WT_ShowError(frm.find('input[name="'+Persona+'i_localita"]'), 'campo richiesto'); break;
                
                case 'indirizzospedizionenazionemancante': WT_ShowError(frm.find('input[name="s'+Spedizione+'_nazione"]'), 'campo richiesto'); break;
                case 'indirizzospedizioneindirizzomancante': WT_ShowError(frm.find('input[name="s'+Spedizione+'_indirizzo"]'), 'campo richiesto'); break;
                case 'indirizzospedizionecapmancante': WT_ShowError(frm.find('input[name="s'+Spedizione+'_cap"]'), 'campo richiesto'); break;
                case 'indirizzospedizioneprovinciamancante': WT_ShowError(frm.find('input[name="s'+Spedizione+'_provincia"]'), 'campo richiesto'); break;            
                case 'indirizzospedizionelocalitamancante': WT_ShowError(frm.find('input[name="s'+Spedizione+'_localita"]'), 'campo richiesto'); break;
                
                case 'recapitomancante': 
                    WT_ShowError(frm.find('input[name="rec1_dato"]'), 'specificare almeno un numero');
                    WT_ShowError(frm.find('input[name="rec2_dato"]'), 'specificare almeno un numero');
                    break;
                    
                case "unknowerror": errdescr=errdescr+'<br />'+ "Errore sconosciuto"; break;
                
                case "violazioneregole": errdescr=errdescr+'<br />'+ "Non si dispone dei diritti per effettuare l'operazione richiesta"; break;
                
                case "modelloutentemancante": errdescr=errdescr+'<br />'+ "Modello utente mancante"; break;
                
                case "workflowmancante": errdescr=errdescr+'<br />'+ "Workflow mancante"; break;
                
                case "personamancante": errdescr=errdescr+'<br />'+ "Persona mancante"; break;
                
                case "nazionemancante": errdescr=errdescr+'<br />'+ "Nazione mancante"; break;
                
                case "indirizzofatturazionenazionemancante": errdescr=errdescr+'<br />'+ "Indirizzo fatturazione nazione mancante"; break;
                
                case "spedizionemancante": errdescr=errdescr+'<br />'+ "'Spedizione mancante"; break;
                
                case "recapitotipomancante": errdescr=errdescr+'<br />'+ "Tipo Recapito mancante"; break;
                                
                default:
                    errdescr=errdescr+'<br />'+ "'"+ str+ "'";
            }
        }
    } else {
        errdescr=errdescr+'<br />'+ "Errore di sistema senza codici di ritorno";
    }
    WT_EnsureVisibleFirstError(frm);
    if (errdescr!='') WT_ShowErrBox('Errore',errdescr);
}

function WT_RegistrazioneFormSetPersona(el, v){
    var frm = $(el).closest('form');
    
    WT_HideErrors(frm);

    frm.find('input[name="persona"]').val(v);

    if( v == 'G' ){
        frm.find('a.WT_PERSONAG').removeClass('optionoff').addClass('optionon');
        frm.find('a.WT_PERSONAF').removeClass('optionon').addClass('optionoff');
    
        frm.find('div.WT_PERSONAG').css('display', '');
        frm.find('div.WT_PERSONAF').css('display', 'none');
    } else if( v == 'F' ){
        frm.find('a.WT_PERSONAG').removeClass('optionon').addClass('optionoff');
        frm.find('a.WT_PERSONAF').removeClass('optionoff').addClass('optionon');

        frm.find('div.WT_PERSONAG').css('display', 'none');
        frm.find('div.WT_PERSONAF').css('display', '');
    }
}

function WT_RegistrazioneFormSetSpedizione(el, v){
    var frm = $(el).closest('form');
    
    WT_HideErrors(frm);

    frm.find('input[name="spedizione"]').val(v);

    if (v=='E') {
        frm.find('a.WT_SPEDE').removeClass('optionoff').addClass('optionon');
        frm.find('a.WT_SPEDI').removeClass('optionon').addClass('optionoff');
    
        frm.find('div.WT_SPEDE').css('display', '');
        frm.find('div.WT_SPEDI').css('display', 'none');
    } else if( v == 'I' ){
        frm.find('a.WT_SPEDE').removeClass('optionon').addClass('optionoff');
        frm.find('a.WT_SPEDI').removeClass('optionoff').addClass('optionon');

        frm.find('div.WT_SPEDE').css('display', 'none');
        frm.find('div.WT_SPEDI').css('display', '');
    }
}

function WT_ModificaAnagraficaFormSubmit( frm, UrlOk ) {
    var ok = true;
    
    WT_HideErrors(frm);
    
    switch (frm.find('input[name="tipo"]').val()) {
    case "1":
        if (!WT_ValidateRequired(frm.find('input[name="primonome"]'))) ok=false;
        if (!WT_ValidateRequired(frm.find('input[name="cognome"]'))) ok=false;

        var el1 = frm.find('input[name="codicefiscale"]');

        if (!WT_ValidateRequired(el1)) ok=false;

        if (!SYS_VerificaCodFisc(el1.val())) {
            WT_ShowError(el1, 'codice fiscale non valido');
            ok = false;
        }    
    
        break;
        
    case "2":
        var el1 = frm.find('input[name="partitaiva"]');
        if (!WT_ValidateRequired(el1)) ok=false;
        if (ok){
            if (!SYS_VerificaPIVA(el1.val())) {
                WT_ShowError(el1, "partita iva non valida");
                ok = false;
            }
        }
        
        el1 = frm.find('input[name="codicefiscale"]');
        if (!WT_ValidateRequired(el1)) ok=false;
        if (ok){
            if (!SYS_VerificaPIVA(el1.val())) {
                WT_ShowError(el1, "codice fiscale non valido");
                ok = false;
            }
        }

        if (!WT_ValidateRequired(frm.find('input[name="ragionesociale"]'))) ok=false;
    
        break;
        
    }

    if (ok) {
        Wt_ShowBlanker(true);
        $.ajax({
            type: 'POST',
            url: frm.attr('action'),
            data: frm.serialize(),
            dataType: "text",
            cache: false,
            success: function(data, textStatus) {
                if (data) data = eval("(" + data + ")");
                if (data.esito && ! data.rc) {
                    window.location = UrlOk;
                } else {
                    Wt_HideBlanker();
                    var errdescr = '';
                    if ( data.rc ){
                        for (i=0; i<data.rc.length; i++) {
                            switch (data.rc[i]) {                               
                                case 101: WT_ShowError(frm.find('input[name="partitaiva"]'), 'partita iva già presente'); break;
                                case 102: WT_ShowError(frm.find('input[name="codicefiscale"]'), 'codice fiscale già presente'); break;
                                default: errdescr=errdescr+'<br />'+ "Errore #" + data.rc[i];
                            }
                        }
                    } else {
                        errdescr=errdescr+'<br />'+ "Errore di sistema senza codici di ritorno";
                    }
                    WT_EnsureVisibleFirstError(frm);
                    if (errdescr!='') WT_ShowErrBox('Errore',errdescr);
                }
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                Wt_HideBlanker();
                WT_ShowHttpErrBox(XMLHttpRequest, textStatus, errorThrown)
            }
        });
    } else {
        WT_EnsureVisibleFirstError(frm);
    }
}



function WT_IndirizzoFormSubmit( frm, UrlOk ) {
    var ok = true;
    
    WT_HideErrors(frm);

    if ( frm.find('input[name="nazione"]').val()=='it' ){

        if (!WT_ValidateRequired(frm.find('input[name="indirizzo"]'))) ok=false;
        if (!WT_ValidateRequired(frm.find('input[name="localita"]'))) ok=false;
        if (!WT_ValidateRequired(frm.find('input[name="postalcode"]'))) ok=false;
        if (!WT_ValidateRequired(frm.find('input[name="provincia"]'))) ok=false;

    } else {

        if (!WT_ValidateRequired(frm.find('input[name="nazione"]'))) ok=false;
        if (!WT_ValidateRequired(frm.find('input[name="indirizzo"]'))) ok=false;

    }  

    if (ok) WT_Ajax({ form: frm, callback: function(data) { window.location=UrlOk;} });
    else WT_EnsureVisibleFirstError(frm);
}


function WT_RecapitoFormSubmit( frm, UrlOk ) {
    var ok = true;
    
    WT_HideErrors(frm);
    
    if (!WT_ValidateRequired(frm.find('select[name="tipo"]'))) ok=false;
    if (!WT_ValidateRequired(frm.find('input[name="dato"]'))) ok=false;
            
    if (ok) WT_Ajax({ form: frm, callback: function(data) { window.location=UrlOk;} });
    else WT_EnsureVisibleFirstError(frm);
}

function WT_RichiestaNewletterFormSubmit( frm ) {
    var ok = true;
    
    WT_HideErrors(frm);
    
    var emailed = frm.find('input[name="email"]'); 

    if (!WT_ValidateRequired(emailed)){ ok=false; } else {
        if (!WT_ValidateEmail(emailed)) ok=false;
    }
    
    if (ok) {
        Wt_ShowBlanker(true);
        $.ajax({
            type: 'POST',
            url: frm.attr('action'),
            data: frm.serialize(),
            dataType: "text",
            cache: false,
            success: function(data, textStatus) {
                if (data) data = eval("(" + data + ")");
                if (data.esito && ! data.rc) {
                    emailed.val('');
                    WtMsgBox('Newsletter', "Richiesta effettuata, riceverai all'indirizzo indicato una e-mail con le istruzioni per proseguire.");
                    Wt_HideBlanker();
                } else {
                    Wt_HideBlanker(); 
                    var errdescr = '';
                    if ( data.rc ){
                        for (i=0; i<data.rc.length; i++) {
                            switch (data.rc[i]) {
                                case 1: WT_ShowError(frm.find('input[name="email"]'), "campo richiesto"); break;
                                case 2: WT_ShowError(frm.find('input[name="email"]'), "e-mail non valida"); break;
                                case 3: WT_ShowError(frm.find('input[name="nlide"]'), 'campo richiesto'); break;
                                case 4: WT_ShowError(frm.find('input[name="nlide"]'), 'newsletter non valida'); break;
                                case 5: WT_ShowError(frm.find('input[name="email"]'), 'e-mail già iscritta'); break;
                                case 6: WT_ShowError(frm.find('input[name="email"]'), 'e-mail non iscritta'); break;                                               
                                default: errdescr=errdescr+'<br />'+ "Errore #" + data.rc[i];
                            }
                        }
                    } else {
                        errdescr=errdescr+'<br />'+ "Errore di sistema senza codici di ritorno";
                    }
                    WT_EnsureVisibleFirstError(frm);
                    if (errdescr!='') WT_ShowErrBox('Errore',errdescr);
                }
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                Wt_HideBlanker();
                WT_ShowHttpErrBox(XMLHttpRequest, textStatus, errorThrown)
            }
        });
    } else {
        WT_EnsureVisibleFirstError(frm);
    }
}

function WT_ConfermaNewletterFormSubmit( frm, UrlOk ){
    var ok = true;
    
    WT_HideErrors(frm);
    
    var ticketed = frm.find('input[name="ticket"]'); 
    if (!WT_ValidateRequired(ticketed)) ok=false;
    
    if (ok) {
        Wt_ShowBlanker(true);
        $.ajax({
            type: 'POST',
            url: frm.attr('action'),
            data: frm.serialize(),
            dataType: "text",
            cache: false,
            success: function(data, textStatus) {
                if (data) data = eval("(" + data + ")");
                if (data.esito && ! data.rc) {
                    Wt_HideBlanker();
                    WtPopInfo({ width: 300, heigth: 160, title: 'Newsletter', html: '<div class="MessageBox">Operazione conclusa con successo, grazie.</div>', onclose: function(){ Wt_ShowBlanker(true); window.location = UrlOk; } });
                } else {
                    Wt_HideBlanker();
                    var errdescr = '';
                    if ( data.rc ){
                        for (i=0; i<data.rc.length; i++) {
                            switch (data.rc[i]) {
                                case 5: errdescr=errdescr+'<br />'+ "Iscrizione già effettuata in precedenza."; break;
                                case 6: errdescr=errdescr+'<br />'+ "Non risulta alcuna iscrizione da cancellare."; break;                                                                               
                                case 9: WT_ShowError(frm.find('input[name="ticket"]'), 'campo richiesto'); break;
                                case 10: WT_ShowError(frm.find('input[name="ticket"]'), 'codice sblocco non valido o scaduto'); break;
                                default: errdescr=errdescr+'<br />'+ "Errore #" + data.rc[i];
                            }
                        }
                    } else {
                        errdescr=errdescr+'<br />'+ "Errore di sistema senza codici di ritorno";
                    }
                    WT_EnsureVisibleFirstError(frm);
                    if (errdescr!='') WT_ShowErrBox('Errore',errdescr);
                }
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                Wt_HideBlanker();
                WT_ShowHttpErrBox(XMLHttpRequest, textStatus, errorThrown)
            }
        });
    } else {
        WT_EnsureVisibleFirstError(frm);
    }
}

function WT_RichiestaPasswordFormSubmit( frm ) {
    var ok = true;
    
    WT_HideErrors(frm);

    var emailed = frm.find('input[name="email"]'); 

    if (!WT_ValidateRequired(emailed)){ ok=false; } else {
        if (!WT_ValidateEmail(emailed)) ok=false;
    }
    
    if (ok) {
        Wt_ShowBlanker(true);
        $.ajax({
            type: 'POST',
            url: frm.attr('action'),
            data: frm.serialize(),
            dataType: "text",
            cache: false,
            success: function(data, textStatus) {
                if (data) data = eval("(" + data + ")");
                if (data.esito && ! data.rc) {
                    emailed.val('');
                    WtMsgBox('Recupero dati di accesso', "Richiesta effettuata, riceverai all'indirizzo indicato una e-mail con le istruzioni per proseguire.");
                    Wt_HideBlanker();
                } else {
                    Wt_HideBlanker();                                        
                    var errdescr = '';
                    if ( data.rc ){
                        for (i=0; i<data.rc.length; i++) {
                            switch (data.rc[i]) {
                                case 1: WT_ShowError(frm.find('input[name="email"]'), "campo richiesto"); break;
                                case 2: WT_ShowError(frm.find('input[name="email"]'), "e-mail non valida"); break;
                                case 3: WT_ShowError(frm.find('input[name="email"]'), 'e-mail non risulta iscritta'); break;
                                case 4: WT_ShowError(frm.find('input[name="email"]'), 'e-mail condivisa fra più utenti'); break;
                                case 7: WT_ShowError(frm.find('input[name="emide"]'), 'campo richiesto'); break;
                                case 8: WT_ShowError(frm.find('input[name="emide"]'), 'modelloemail non valido'); break;                                               
                                default: errdescr=errdescr+'<br />'+ "Errore #" + data.rc[i];
                            }
                        }
                    } else {
                        errdescr=errdescr+'<br />'+ "Errore di sistema senza codici di ritorno";
                    }
                    WT_EnsureVisibleFirstError(frm);
                    if (errdescr!='') WT_ShowErrBox('Errore',errdescr);
                }
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                Wt_HideBlanker();
                WT_ShowHttpErrBox(XMLHttpRequest, textStatus, errorThrown)
            }
        });
    } else {
        WT_EnsureVisibleFirstError(frm);
    }
}

function WT_ConfermaNuovaPasswordFormSubmit( frm, UrlOk ){
    var ok = true;
    
    WT_HideErrors(frm);
    
    if (!WT_ValidateRequired(frm.find('input[name="usr"]'))) ok=false;
    if (!WT_ValidateRequired(frm.find('input[name="ticket"]'))) ok=false;

    el1 = frm.find('input[name="psw"]');
    if (!WT_ValidateRequired(el1)){ ok=false; } else {
        el2 = frm.find('input[name="cpsw"]');
        if (el1.val() != el2.val()) {
            WT_ShowError(el1, "le 2 pasword non sono uguali");
            WT_ShowError(el2, "le 2 pasword non sono uguali");
            ok = false;
        }
    }

    if (ok) {
        Wt_ShowBlanker(true);
        $.ajax({
            type: 'POST',
            url: frm.attr('action'),
            data: frm.serialize(),
            dataType: "text",
            cache: false,
            success: function(data, textStatus) {
                if (data) data = eval("(" + data + ")");
                if (data.esito && ! data.rc) {
                    window.location = UrlOk;
                } else {
                    Wt_HideBlanker();
                    var errdescr = '';
                    if ( data.rc ){
                        for (i=0; i<data.rc.length; i++) {
                            switch (data.rc[i]) {
                                case 101: WT_ShowError(frm.find('input[name="usr"]'), "campo richiesto"); WT_ShowError(frm.find('input[name="psw"]'), "campo richiesto"); WT_ShowError(frm.find('input[name="cpsw"]'), "campo richiesto"); WT_ShowError(frm.find('input[name="ticket"]'), "campo richiesto"); break;
                                case 11:  WT_ShowError(frm.find('input[name="psw"]'), "Password non valida"); break;
                                case 24:  WT_ShowError(frm.find('input[name="psw"]'), "campi non uguali"); WT_ShowError(frm.find('input[name="cpsw"]'), "campi non uguali"); break;
                                case 103: WT_ShowError(frm.find('input[name="ticket"]'), "ticket inesistente o scaduto"); break;
                                case 104: WT_ShowError(frm.find('input[name="usr"]'), "ticket non valido per l'user specificato"); break;                           
                                default: errdescr=errdescr+'<br />'+ "Errore #" + data.rc[i];
                            }
                        }
                    } else {
                        errdescr=errdescr+'<br />'+ "Errore di sistema senza codici di ritorno";
                    }
                    WT_EnsureVisibleFirstError(frm);
                    if (errdescr!='') WT_ShowErrBox('Errore',errdescr);
                }
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                Wt_HideBlanker();
                WT_ShowHttpErrBox(XMLHttpRequest, textStatus, errorThrown)
            }
        });
    } else {
        WT_EnsureVisibleFirstError(frm);
    }
}

function WT_CambiaPasswordFormSubmit( frm, UrlOk ){
    var ok = true;
    
    WT_HideErrors(frm);

    el1 = frm.find('input[name="psw"]');
    if (!WT_ValidateRequired(el1)){ ok=false; } else {
        el2 = frm.find('input[name="cpsw"]');
        if (el1.val() != el2.val()) {
            WT_ShowError(el1, "le 2 pasword non sono uguali");
            WT_ShowError(el2, "le 2 pasword non sono uguali");
            ok = false;
        }
    }

    if (ok) {    
        Wt_ShowBlanker(true);
        $.ajax({
            type: 'POST',
            url: frm.attr('action'),
            data: frm.serialize(),
            dataType: "text",
            cache: false,
            success: function(data, textStatus) {
                if (data) data = eval("(" + data + ")");
                if (data.esito && ! data.rc) {
                    window.location = UrlOk;
                } else {
                    Wt_HideBlanker();
                    var errdescr = '';
                    if (data.rc) {
                        for (i=0; i<data.rc.length; i++) {
                            switch (data.rc[i]) {
                                case 11:  WT_ShowError(frm.find('input[name="psw"]'), "password non valida"); break;
                                case 24:  WT_ShowError(frm.find('input[name="psw"]'), "campi non uguali"); WT_ShowError(frm.find('input[name="cpsw"]'), "campi non uguali"); break;
                                case 23:  WT_ShowError(frm.find('input[name="psw"]'), "password già utilizzata"); break;
                                default: errdescr=errdescr+'<br />'+ "Errore #" + data.rc[i];
                            }
                        }
                    } else {
                        errdescr=errdescr+'<br />'+ "Errore di sistema senza codici di ritorno";
                    }
                    WT_EnsureVisibleFirstError(frm);
                    if (errdescr!='') WT_ShowErrBox('Errore',errdescr);
                }
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                Wt_HideBlanker();
                WT_ShowHttpErrBox(XMLHttpRequest, textStatus, errorThrown)
            }
        });
    } else {
        WT_EnsureVisibleFirstError(frm);
    }
}

function WT_RichiestaRicercaFormSubmit( frm ) {
    var ok = true;
    
    WT_HideErrors(frm);

    var emailed = frm.find('input[name="HIDE_FROM"]'); 
    if (!WT_ValidateRequired(emailed)){ ok=false; } else {
        if (!WT_ValidateEmail(emailed)) ok=false;
    }

    if (!WT_ValidateRequired(frm.find('[name="richiesta"]'))) ok=false;
    
    if (ok) {
        Wt_ShowBlanker(true);
        $.ajax({
            type: 'POST',
            url: frm.attr('action'),
            data: frm.serialize(),
            dataType: "text",
            cache: false,
            success: function(data, textStatus) {
                if (data) data = eval("(" + data + ")");
                if (data.esito && ! data.rc) {
                    emailed.val('');
                    frm.find('[name="richiesta"]').val('');
                    WtMsgBox('Richiesta informazioni', "Richiesta effettuata, saremo lieti di risponderti nel più breve tempo possibile.");
                    Wt_HideBlanker();
                } else {
                    Wt_HideBlanker();                                        
                    var errdescr = '';
                    errdescr=errdescr+'<br />'+ "Errore di sistema senza codici di ritorno";
                    WT_EnsureVisibleFirstError(frm);
                    if (errdescr!='') WT_ShowErrBox('Errore',errdescr);
                }
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                Wt_HideBlanker();
                WT_ShowHttpErrBox(XMLHttpRequest, textStatus, errorThrown)
            }
        });
    } else {
        WT_EnsureVisibleFirstError(frm);
    }
}

function WT_RichiestaInformazioniProdottoFormSubmit( frm ) {
    var ok = true;
    
    WT_HideErrors(frm);

    var emailed = frm.find('input[name="email"]'); 
    if (!WT_ValidateRequired(emailed)){ ok=false; } else {
        if (!WT_ValidateEmail(emailed)) ok=false;
    }

    if (!WT_ValidateRequired(frm.find('[name="messaggio"]'))) ok=false;
    
    if (ok) {
        Wt_ShowBlanker(true);
        $.ajax({
            type: 'POST',
            url: frm.attr('action'),
            data: frm.serialize(),
            dataType: "text",
            cache: false,
            success: function(data, textStatus) {
                if (data) data = eval("(" + data + ")");
                if (data.esito && ! data.rc) {
                    WtMsgBox('Richiesta informazioni', "Richiesta effettuata, saremo lieti di risponderti nel più breve tempo possibile.");
                    Wt_HideBlanker();
                    CPT.popup.popupOf(frm).close();
                } else {
                    Wt_HideBlanker();                                        
                    var errdescr = '';
                    errdescr=errdescr+'<br />'+ "Errore di sistema senza codici di ritorno";
                    WT_EnsureVisibleFirstError(frm);
                    if (errdescr!='') WT_ShowErrBox('Errore',errdescr);
                }
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                Wt_HideBlanker();
                WT_ShowHttpErrBox(XMLHttpRequest, textStatus, errorThrown)
            }
        });
    } else {
        WT_EnsureVisibleFirstError(frm);
    }
}

function WT_SegnalaProdottoFormSubmit( frm ) {
    var ok = true;
    
    WT_HideErrors(frm);

    var emailed = frm.find('input[name="email"]'); 
    if (!WT_ValidateRequired(emailed)){ ok=false; } else {
        if (!WT_ValidateEmail(emailed)) ok=false;
    }

    emailed = frm.find('input[name="to"]'); 
    if (!WT_ValidateRequired(emailed)){ ok=false; } else {
        if (!WT_ValidateEmail(emailed)) ok=false;
    }

    if (!WT_ValidateRequired(frm.find('[name="messaggio"]'))) ok=false;
    
    if (ok) {
        Wt_ShowBlanker(true);
        $.ajax({
            type: 'POST',
            url: frm.attr('action'),
            data: frm.serialize(),
            dataType: "text",
            cache: false,
            success: function(data, textStatus) {
                if (data) data = eval("(" + data + ")");
                if (data.esito && ! data.rc) {
                    WtMsgBox('Segnala prodotto ad un amico', "La tua segnalazione è stata correttamente inviata.");
                    Wt_HideBlanker();
                    CPT.popup.popupOf(frm).close();
                } else {
                    Wt_HideBlanker();
                    var errdescr = '';
                    errdescr=errdescr+'<br />'+ "Errore di sistema senza codici di ritorno";
                    WT_EnsureVisibleFirstError(frm);
                    if (errdescr!='') WT_ShowErrBox('Errore',errdescr);
                }
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                Wt_HideBlanker();
                WT_ShowHttpErrBox(XMLHttpRequest, textStatus, errorThrown)
            }
        });
    } else {
        WT_EnsureVisibleFirstError(frm);
    }
}
