var ControlPagina = Class.create()

ControlPagina.prototype = {
    validador: null,
    idForm: 'formulari',

    initialize: function() {
        Object.extend(window, this);

        window.validador = new Validation(this.idForm);
        Event.observe($('submitForm'), 'click', window.submitForm);
    },

    submitForm: function(evt) {
        var customResult = customValidator();
        if (window.validador.validate()) {
            switch (customResult) {
                case 0:
                    $('formulari').submit();
                    return false;
                case 1:
                    normalitzar = new Normalitzar();
                    normalitzar.run($("formulari"), $("adreca"), $("adreca_num"), $("cp"), $("poblacio"), $("tipoviaNorm"), $("indica"), $("indfia"));
                    break;
                case -1:
                    return false;
                    break;
            }
        }
        return false;
    },

    normalizeCallBack: function() {
        setTimeout("$('formulari').submit()", 200);
    }
}

Event.observe(window,"load",function(){ new ControlPagina(); });

function customValidator() {
    var premsaForm = $("formulari");
    var emailOK = false;
    var addressOK = false;
    if (premsaForm) {

        
        var email = $("e_mail").getValue();
        if (email.length > 0) {

            var re = new RegExp(/\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/);
            var emailMatch = email.match(re);
            emailOK = (emailMatch == null) ? false : emailMatch.length > 0;
            //console.log("tracing email: " + email + " | does match regex? " + emailOK);
            if (!emailOK) {
                $("advice-validate-email-e_mail").show();
            } else {
//                console.log("email ok, proceed");
                $("advice-validate-email-e_mail").hide();
            }

        } else {
            emailOK = false;
            $("advice-validate-email-e_mail").show();
        }

        var adreca = $("adreca").getValue();
        if ((adreca.length > 0)) {
            //console.log("not using email, checking postal address");
            var adreca_num = $("adreca_num").getValue();
            var cp = $("cp").getValue();
            var fax = $("fax").getValue();
            var poblacio = $("poblacio").getValue();

            if (adreca.length == 0) {
                $("advice-required-adreca").show();
                addressOK = false;
            } else {
                addressOK = true;
                $("advice-required-adreca").hide();
            }

            if (cp.length != 5) {
                $("advice-required-cp").show();
                addressOK = false;
            } else {
                addressOK = true;
                $("advice-required-cp").hide();
            }

            if (fax.length == 0) {
                $("advice-required-fax").show();
                addressOK = false;
            } else {
                addressOK = true;
                $("advice-required-fax").hide();
            }

            if (poblacio.length == 0) {
                $("advice-required-poblacio").show();
                addressOK = false;
            } else {
                addressOK = true;
                $("advice-required-poblacio").hide();
            }
        } else {
            $("advice-required-adreca").show();
            $("advice-required-cp").show();
            $("advice-required-fax").show();
            $("advice-required-poblacio").show();
        }

        if (addressOK || emailOK) {
            $("advice-validate-email-e_mail").hide();
            $("advice-required-adreca").hide();
            $("advice-required-cp").hide();
            $("advice-required-fax").hide();
            $("advice-required-poblacio").hide();
        }
        /* else {
            console.log("not using either one, alert everyone!");
            $("advice-validate-email-e_mail").show();
            $("advice-required-adreca").show();
            $("advice-required-cp").show();
            $("advice-required-fax").show();
            $("advice-required-poblacio").show();
        }
        */
    }

    if (emailOK) return 0;
    if (addressOK) return 1;
    return -1;
}
