// copy residenza address as destination address
function cp_address(f) {
    if(f) {
        if(f.residenza_via.value) {
            f.destin_via.value=f.residenza_via.value;
        }
        if(f.residenza_via_n.value) {
            f.destin_via_n.value=f.residenza_via_n.value;
        }
        if(f.residenza_cap.value) {
            f.destin_cap.value=f.residenza_cap.value;
        }
        if(f.residenza_citta.value) {
            f.destin_citta.value=f.residenza_citta.value;
        }
        f.destin_prov.options[f.residenza_prov.selectedIndex].selected=true;
    }
}

// mega fields-check for the form
function check(f) {
    if(f) {
        var str = '';
        var min = 3;
        var max = 255;

        /* check products */
        if(f.step.value == 2) {
            var out = '';
            var checked=false;
            for(var i=0;i<f.length;i++) {
                if(f.elements[i].name.indexOf('_c_') != -1) {
                    if(f.elements[i].checked) {
                        checked=true;
                    }
                    if((((f.elements[i].name.indexOf('P_c') != -1) &&
                         (f.elements[i + 1].name.indexOf('P_q') != -1)) || 
                        ((f.elements[i].name.indexOf('A_c') != -1) &&
                         (f.elements[i + 1].name.indexOf('A_q') != -1))) &&
                       (f.elements[i].checked) &&
                       (isNaN(new Number(f.elements[i + 1].value)) ||
                        (new Number(f.elements[i + 1].value) <= 0))) {
                        alert("' "+f.elements[i + 1].value+" ' non č un numbero valido. Grazie.")
                        f.elements[i + 1].focus();
                        return false;
                    }
                }
            }
            if(!checked) {
                alert("Selezionare almeno un prodotto da aquistare. Grazie");
                return false;
            }


            /* check nome */
            if(f.nome) {
                str = f.nome.value;
                if((str.length < min) || (str.length > max)) {
                    alert("La lunghezza del campo 'Nome' deve essere almeno di "+min+" caratteri. Grazie");
                    f.nome.focus();
                    return false;
                }
            }
            /* check cognome */
            if(f.cognome) {
                str = f.cognome.value;
                if((str.length < min) || (str.length > max)) {
                    alert("La lunghezza del campo 'Cognome' deve essere almeno di "+min+" caratteri. Grazie");
                    f.cognome.focus();
                    return false;
                }
            }
            /* check data di nascita */
            if(f.data_nascita_day && f.data_nascita_month && f.data_nascita_year) {
                var tmp_d=f.data_nascita_day;
                var tmp_m=f.data_nascita_month;
                /* trenta giorni a settembre, con april, giugno e novembre... */
                if(((tmp_m.options[tmp_m.selectedIndex].value==4) || 
                   (tmp_m.options[tmp_m.selectedIndex].value==6) ||
                   (tmp_m.options[tmp_m.selectedIndex].value==9) ||
                   (tmp_m.options[tmp_m.selectedIndex].value==11)) && 
                   (tmp_d.options[tmp_d.selectedIndex].value > 30)){
                    alert("Il mese selezionato per la data di nascita non ha "+
                        tmp_d.options[tmp_d.selectedIndex].value+" giorni. Grazie.");
                    tmp_d.focus();
                    return false;
                }
                /* ...di ventotto ce n'e` uno */
                if((tmp_m.options[tmp_m.selectedIndex].value==2) && 
                   (tmp_d.options[tmp_d.selectedIndex].value>29)){
                    alert("Il mese selezionato per la data di nascita non ha "+
                        tmp_d.options[tmp_d.selectedIndex].value+" giorni. Grazie.");
                    tmp_d.focus();
                    return false;
                }
            }
            /* check luogo_nascita */
            if(f.luogo_nascita) {
                str = f.luogo_nascita.value;
                if((str.length < min) || (str.length > max)) {
                    alert("La lunghezza del campo 'Luogo di nascita' deve essere almeno di "+min+" caratteri. Grazie");
                    f.luogo_nascita.focus();
                    return false;
                }
            }
            /* check email */
            if(f.email) {
                str = f.email.value;
                min = 5;
                if((str.length < min) || (str.length > max)) {
                    alert("La lunghezza del campo 'E-mail' deve essere almeno di "+min+" caratteri. Grazie");
                    f.email.focus();
                    return false;
                }
                if((str.indexOf('@') == -1) || (str.indexOf('.') == -1)) {
                    alert("Compilare il campo 'E-mail' nel formato:\n\n user@host.com\n\n Grazie");
                    f.email.focus();
                    return false;
                }

            }
            /* check n_tel_casa */
            if(f.n_tel_casa) {
                str = f.n_tel_casa.value;
                if((str.length < min) || (str.length > max)) {
                    alert("La lunghezza del campo 'Tel. Casa' deve essere almeno di "+min+" caratteri. Grazie");
                    f.n_tel_casa.focus();
                    return false;
                }
            }
            /* check residenza_via */
            if(f.residenza_via) {
                min=3;max=255;
                str = f.residenza_via.value;
                if((str.length < min) || (str.length > max)) {
                    alert("La lunghezza del campo 'Residenza via' deve essere almeno di "+min+" caratteri. Grazie");
                    f.residenza_via.focus();
                    return false;
                }
            }
            /* check residenza_via_n */
            if(f.residenza_via_n) {
                str = f.residenza_via_n.value;
                min = 1; max = 20;
                if((str.length < min) || (str.length > max)) {
                    alert("La lunghezza del campo 'Residenza via n.' deve essere almeno di "+min+" caratteri. Grazie");
                    f.residenza_via_n.focus();
                    return false;
                }
            }
            /* check residenza_cap */
            if(f.residenza_cap) {
                str = f.residenza_cap.value;
                min = 5; max = 10;
                if((str.length < min) || (str.length > max)) {
                    alert("La lunghezza del campo 'Residenza C.A.P.' deve essere almeno di "+min+" caratteri. Grazie");
                    f.residenza_cap.focus();
                    return false;
                }
                if(isNaN(new Number(str))) {
                    alert("Il campo 'Residenza C.A.P.' non č in formato corretto. Grazie");
                    f.residenza_cap.focus();
                    return false;
                }
            }
            /* check residenza_citta */
            if(f.residenza_citta) {
                str = f.residenza_citta.value;
                min = 3; max = 255;
                if((str.length < min) || (str.length > max)) {
                    alert("La lunghezza del campo 'Residenza cittā' deve essere almeno di "+min+" caratteri. Grazie");
                    f.residenza_citta.focus();
                    return false;
                }
            }

            /* check destin_via */
            if(f.destin_via) {
                min=3;max=255;
                str = f.destin_via.value;
                if((str.length < min) || (str.length > max)) {
                    alert("La lunghezza del campo 'Destinazione via' deve essere almeno di "+min+" caratteri. Grazie");
                    f.destin_via.focus();
                    return false;
                }
            }
            /* check destin_via_n */
            if(f.destin_via_n) {
                str = f.destin_via_n.value;
                min = 1; max = 20;
                if((str.length < min) || (str.length > max)) {
                    alert("La lunghezza del campo 'Destinazione via n.' deve essere almeno di "+min+" caratteri. Grazie");
                    f.destin_via_n.focus();
                    return false;
                }
            }
            /* check destin_cap */
            if(f.destin_cap) {
                str = f.destin_cap.value;
                min = 5; max = 10;
                if((str.length < min) || (str.length > max)) {
                    alert("La lunghezza del campo 'Destinazione C.A.P.' deve essere almeno di "+min+" caratteri. Grazie");
                    f.destin_cap.focus();
                    return false;
                }
                if(isNaN(new Number(str))) {
                    alert("Il campo 'Destinazione C.A.P.' non č in formato corretto. Grazie");
                    f.destin_cap.focus();
                    return false;
                }
            }
            /* check destin_citta */
            if(f.destin_citta) {
                str = f.destin_citta.value;
                min = 3; max = 255;
                if((str.length < min) || (str.length > max)) {
                    alert("La lunghezza del campo 'Destinazione cittā' deve essere almeno di "+min+" caratteri. Grazie");
                    f.destin_citta.focus();
                    return false;
                }
            }

            /* check accept */
            if(f.accept) {
                if(f.accept[1].checked) {
                    alert("Per procedere con l'ordininazione č necessario selezionare 'Accetto'. Grazie");
                    f.accept[0].focus();
                    return false;
                }
            }

        }
        // here all required fields should be all right.
        return true;
    }
    return false;
}

