$(document).ready(function() {

    load_provincia();
    $('#registro_pais_id').change(function(){
        load_provincia();
    })

    var muestraTop = false;
    // validate signup form on keyup and submit
    $("#formulario_val").validate({
        rules: {
            'registro[nombre]': {
                required: true,
                maxlength: 255
            },
            'registro[apellido]': {
                required: true,
                maxlength: 255
            },
            'registro[edad]': {
                range: [18,65]
            },
            'registro[email]': {
                required: true,
                email: true
            },
            'registro[pais_id]': {
                required: true
            },
            'registro[provincia_id]': {
                provincia: true
            },
            'registro[provincia_ext]': {
                provinciaExt: true
            },
            'registro[tel]': {
                required: true,
                phoneEs: true
            }
        },
        messages: {
            'registro[nombre]': {
                required: "El campo \"Nombre\" es obligatorio.",
                maxlength: "Error en el nombre. M\u00e1ximo 255 caracteres."
            },
            'registro[apellido]': {
                required: "El campo \"Apellido\" es obligatorio.",
                maxlength: "Error en el apellido. M\u00e1ximo 255 caracteres."
            },
            'registro[edad]': {
                range: "Debes tener entre 18 y 65 a\xf1os."
            },
            'registro[email]': {
                required: "El campo \"Email\" es obligatorio.",
                email: "Email inv\u00e1lido."
            },
            'registro[tel]': {
                required: "El campo \"Tel\xe9fono\" es obligatorio.",
                maxlength: "Error en el tel\xe9fono. M\u00e1ximo 255 caracteres."
            },
            'registro[pais_id]': {
                required: "El campo \"Pa\xeds\" es obligatorio."
            },
            'registro[provincia_ext]': {

            },
            'registro[provincia_id]': {

        }
        },
        showErrors: function(errors) {
            for ( var i = 0; this.errorList[i]; i++ ) {
                var error = this.errorList[i];
                this.settings.highlight && this.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );
                this.showLabel( error.element, error.message );
            }
            if( this.errorList.length ) {
                this.toShow = this.toShow.add( this.containers );
            }
            if (this.settings.success) {
                for ( var i = 0; this.successList[i]; i++ ) {
                    this.showLabel( this.successList[i] );
                }
            }
            if (this.settings.unhighlight) {
                for ( var i = 0, elements = this.validElements(); elements[i]; i++ ) {
                    this.settings.unhighlight.call( this, elements[i], this.settings.errorClass, this.settings.validClass );
                }
            }
            this.toHide = this.toHide.not( this.toShow );
            //this.hideErrors();
            if(muestraTop){
                this.addWrapper( this.toShow ).show();
            }
            muestraTop = false;
        },
        onfocusout: false,
		
        invalidHandler: function(e, validator) {
            muestraTop = true;
            validator.hideErrors();
        },
        errorLabelContainer: $("div.errores_form"),
        errorElement: 'li',
        meta: "validate",
        highlight: function( element, errorClass, validClass ) {
            $(element).prev().css('color','#cc0000');
            $(element).css({
                'border-color':'#ff0000',
                'background-color':'#ffeeee'
            });
        },
        unhighlight: function( element, errorClass, validClass ) {
            $(element).prev().removeAttr('style');
            $(element).removeAttr('style');
        }
    });
});

jQuery.validator.addMethod(
    "phoneEs",
    function(value, element) {

        value = value.replace(/-/g,'');
        value = value.replace(/ /g,'');

        regexp = /^([9|6|8])[0-9]{8}$/;
        
        if (regexp.constructor != RegExp)
        {
            regexp = new RegExp(regexp);
        }
        else if (regexp.global)
        {
            regexp.lastIndex = 0;
        }

        if(this.optional(element) || regexp.test(value))
        {
            var sub = value.substring(1);
            var _char = value.charAt(0);

            for(i=1; i<8; i++)
            {
                if(_char != sub.charAt(i))
                {
                    return true;
                }
                _char = sub.charAt(i);
            }
        }
        return false;
    },
    ""
    );


function isEmpty( inputStr ) {
    if ( null == inputStr || "" == inputStr ) {
        return true;
    }
    return false;
}

function load_provincia(){
    var pais=$('#registro_pais_id').attr('value');
    if(pais != '1')
    {
        $('#registro_provincia_id').hide();
        $('#registro_provincia_id').removeAttr("enabled");
        $('#registro_provincia_id').attr("disabled","disabled");
        $('#registro_provincia_id').addClass("select_disabled");

        $('#registro_provincia_ext').show();
        $('#registro_provincia_ext').removeAttr("disabled");
        $('#registro_provincia_ext').attr("enabled","enabled");
        $('#registro_provincia_ext').removeClass("select_disabled");
    }
    else
    {
        $('#registro_provincia_ext').hide();
        $('#registro_provincia_ext').removeAttr("enabled");
        $('#registro_provincia_ext').attr("disabled","disabled");
        $('#registro_provincia_ext').addClass("select_disabled");

        $('#registro_provincia_id').show();
        $('#registro_provincia_id').removeAttr("disabled");
        $('#registro_provincia_id').attr("enabled","enabled");
        $('#registro_provincia_id').removeClass("select_disabled");

    }
}

jQuery.validator.addMethod(
    "provinciaExt",
    function(value, element)
    {
        var pais = $('#registro_pais_id').val();
        if(pais != '1')
        {
            if(isEmpty(value) || value == '0' )
            {
                return false;
            }
        }
        return true;
    },
    "El campo \"Provincia\" es obligatorio."
    );

jQuery.validator.addMethod(
    "provincia",
    function(value, element)
    {
        var pais = $('#registro_pais_id').val();
        if(pais == '1')
        {
            if(isEmpty(value) || value == '0' )
            {
                return false;
            }
        }
        return true;
    },
    "El campo \"Provincia\" es obligatorio."
    );


