﻿Ext.form.VTypes['cpfVal'] = /^[0-9]{3}.[0-9]{3}.[0-9]{3}-[0-9]{2}$/;
Ext.form.VTypes['cpfMask'] = /[0-9]/;
Ext.form.VTypes['cpfText'] = 'O campo <b>CPF</b> está incorreto, ex: 999.999.999-99';
Ext.form.VTypes['cpf'] = function(v) { 
    if (v == '00000000000' || v == '000.000.000-00') { 
        return true;
    } 
    
    if (Ext.form.VTypes['cpfVal'].test(v) && Ext.ux.isCPF(v)) { 
        return true; 
    } 
    else 
    { 
        return false; 
    } 
}

Ext.form.TextCPF = Ext.extend(Ext.form.TextField, {
    fieldLabel: 'CPF',
    vtype: 'cpf',
    plugins: [ new Ext.ux.InputTextMask('999.999.999-99', true) ],
    listeners: {
        'blur': {
            fn: function(a) {
                var v = a.getValue();

                if (v.length == 14) {
                    if (!Ext.ux.isCPF(v)) {
                        this.markInvalid('O campo <b>CPF</b> contém um CPF inválido');
                    }
                }
            }
        }
    },
    setValue: function(v) {
    	if (typeof(v) == 'string') {
    		v = v.trim();
    		if (v.length == 11) {
            	v = v.substring(0, 3) + '.' + v.substring(3, 6) + '.' + v.substring(6, 9) + '-' + v.substring(9, 11);
    		}
        }
        
        Ext.form.TextCPF.superclass.setValue.call(this, v);        
    }
});

Ext.reg('textcpf', Ext.form.TextCPF);