var sKey
var bShift

//---------------------------------------------------------------------------------------------------------------
//Descricao: Função responsavel em realizar a marcara do campo, basta informar o tipo de
//			 mascara e o campo a ser realizada a operação
//Parametro <src> = Campo que sera efetuada a operação
//		    <mask> = Mascara a ser apliacada no campo
//Exemplo   CEP - OnKeyPress="formatar(this, '#####-###')"
//			CPF - OnKeyPress="formatar(this, '###.###.###-##')"
//			DATA - OnKeyPress="formatar(this, '##/##/####')"

function formatar(src, mask, keyPress)
{
	if(!validaPressDel(keyPress)){
		if(validaApenasNum(keyPress)){
			var i = src.value.length;
			var saida = mask.substring(0,1);
			var texto = mask.substring(i)
			if (texto.substring(0,1) != saida)
			{
				src.value += texto.substring(0,1);
			}
		}
	}
}


/*-----------------------------------------------------------------------------------------------------------------------
Objetivo: Filtrar o valor a ser inserido no campo texto, com este só é permitido inserir valor numerico.
		  Diferente da função validaNum que aceita caracteres como "-", ",", "." etc...
Parametro: obj = Campo a ser filtrado.
Retorno:
*/
function validaApenasNum(keyPress){
	var sKey
	var bShift

	if(keyPress.which){
		sKey = keyPress.which;
		bShift = keyPress.shiftKey;
	}
	else{
		sKey = keyPress.keyCode;
		bShift = keyPress.shiftKey
	}

	if ((((sKey >= 48) && (sKey <= 57)) || (sKey==8) || (sKey==9)) && (!bShift))
	{
		return true;
	}
	else
	{
		if(keyPress.preventDefault) {
		    keyPress.preventDefault();
		} else {
		    keyPress.returnValue = false;
		}
		return false;
	}
}

function validaPressDel(keyPress){

	if(keyPress.which){
		sKey = keyPress.which;
		bShift = keyPress.shiftKey;
	}
	else{
		sKey = keyPress.keyCode;
		bShift = keyPress.shiftKey;
	}
	if(sKey == 8){
		return true;
	}
	else{
		return false;
	}
}

function isCPF(CPF) {

    dig_1 = 0;
    dig_2 = 0;
    controle_1 = 10;
    controle_2 = 11;
    lsucesso = 1;

    if ((CPF.length != 14) || (CPF.substring(11, 12) != "-"))
        return false;
    else {
        CPF = CPF.substring(0, 3) + CPF.substring(4, 7) + CPF.substring(8, 14);
        for (i = 0; i < 9; i++) {
            dig_1 = dig_1 + parseInt(CPF.substring(i, i + 1) * controle_1);
            controle_1 = controle_1 - 1;
        }

        resto = dig_1 % 11;
        dig_1 = 11 - resto;

        if ((resto == 0) || (resto == 1)) dig_1 = 0;
        for (i = 0; i < 9; i++) {
            dig_2 = dig_2 + parseInt(CPF.substring(i, i + 1) * controle_2);
            controle_2 = controle_2 - 1;
        }
        dig_2 = dig_2 + 2 * dig_1;
        resto = dig_2 % 11;
        dig_2 = 11 - resto;

        if ((resto == 0) || (resto == 1)) dig_2 = 0;
        dig_ver = (dig_1 * 10) + dig_2;

        if (dig_ver != parseFloat(CPF.substring(CPF.length - 2, CPF.length)))
            return false;
    }
    return true;
}

function isEmail(str) {

    // are regular expressions supported?
    var supported = 0;
    if (window.RegExp) {
        var tempStr = str;
        var tempReg = new RegExp(tempStr);
        if (tempReg.test(tempStr)) supported = 1;
    }
    
    if (!supported)
        return (str.indexOf(".") > 1) && (str.indexOf("@") > 0);
        
    var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
    var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
    
    return (!r1.test(str) && r2.test(str));
}

