/********************** Validação de campos **********************/
function vData(objDisp) {
	var strData = objDisp.value;
	if(strData == "") { objDisp.value = ""; return true; }
	if(!vDataValida(strData)) { alert('Data invalida!'); return false; }
	return true;
}
function IsBissexto(ano) { 
	if((ano % 4 == 0 && ano % 100 != 0) || ano % 400 == 0) { return true; }
	return false;
}
function vDataValida(data) {
	var arrData = new Array(); var arrMeses = new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
	arrData = data.split("/");
	
	if(arrData.length != 3) return false;
	if(arrData[0] < 1 || arrData[1] < 1 || arrData[2] < 1) return false;
	if(arrData[1] > 12) return false;
	if(IsBissexto(arrData[2])) arrMeses[2] = 29;
	if(Number(arrData[0]) > arrMeses[Number(arrData[1])]) return false;
	if(arrData[2].length != 4) return false;
	if(arrData[2] < 1900) return false;
	return true;
}

function vCPF(objeto) {
	CPF = objeto.value;
	var intSoma = 0, intResultado1 = 0, intResultado2 = 0;
    var arrDigito = new Array(); 
    var strCPF = CPF;
	
	//if (strCPF == "") {	alert("Preencha o número do CPF."); return false; }
	
    while(strCPF.indexOf(".") != -1) strCPF = strCPF.replace(".","");

    strCPF = strCPF.replace("-","");
    if (strCPF.length != 11) { alert("O numero do CPF deve ter 11 digitos."); return false; }
    else if(strCPF == "00000000000") { alert("Numero de CPF invalido!"); return false; }
	else { arrDigito[0] = parseInt(strCPF.substr(0, 1));
		arrDigito[1] = parseInt(strCPF.substr(1, 1));
        arrDigito[2] = parseInt(strCPF.substr(2, 1));
        arrDigito[3] = parseInt(strCPF.substr(3, 1));
        arrDigito[4] = parseInt(strCPF.substr(4, 1));
        arrDigito[5] = parseInt(strCPF.substr(5, 1));
        arrDigito[6] = parseInt(strCPF.substr(6, 1));
        arrDigito[7] = parseInt(strCPF.substr(7, 1));
        arrDigito[8] = parseInt(strCPF.substr(8, 1));
        arrDigito[9] = parseInt(strCPF.substr(9, 1));
        arrDigito[10] = parseInt(strCPF.substr(10, 1));
    
        intSoma = 10 * arrDigito[0] + 9 * arrDigito[1] + 8 * arrDigito[2] + 7 * arrDigito[3] + 6 * arrDigito[4] + 5 * arrDigito[5] + 4 * arrDigito[6] + 3 * arrDigito[7] + 2 * arrDigito[8];
        intSoma -= (11 * parseInt(intSoma / 11));
        if ((intSoma == 0) || (intSoma == 1)) intResultado1 = 0;     
        else intResultado1 = 11 - intSoma;

        if (intResultado1 == arrDigito[9]) {
            intSoma = arrDigito[0] * 11 + arrDigito[1] * 10 + arrDigito[2] * 9 + arrDigito[3] * 8 + arrDigito[4] * 7 + arrDigito[5] * 6 + arrDigito[6] * 5 + arrDigito[7] * 4 + arrDigito[8] * 3 + arrDigito[9] * 2;
            intSoma -= (11 * parseInt(intSoma / 11));

            if ((intSoma == 0) || (intSoma == 1)) intResultado2 = 0;
            else intResultado2 = 11 - intSoma;

            if (intResultado2 != arrDigito[10]) { alert("CPF invalido!"); return false; }
		}
        else { alert("CPF invalido!"); return false; }
	}
    return true;
}

function vCNPJ(objeto) {
	strCNPJ = objeto.value;
	var intSoma = 0, intResultado1 = 0, intResultado2 = 0, arrDigito = new Array(14);

	while(strCNPJ.indexOf(".") != -1) { strCNPJ = strCNPJ.replace(".",""); }
	strCNPJ = strCNPJ.replace("-","");
	strCNPJ = strCNPJ.replace("/","");
	
	var contCNPJ = strCNPJ.substring(1, 8);
	if ((strCNPJ.length > 0) && (strCNPJ.length < 14)) { strRetorno = "O número do CNPJ deve ter 14 dígitos"; return false; }
	else if (strCNPJ == "00000000000000") { strRetorno = "CNPJ inválido"; return false; }
	else if ((strCNPJ.length > 0) && (strCNPJ%11111111111111 == 0)) { strRetorno = "CNPJ inválido"; return false; }
	else if ((strCNPJ.length > 0) && (contCNPJ%11111111 == 0)) { strRetorno = "CNPJ inválido"; return false; }
	else if (strCNPJ.length == 14) {
		arrDigito[0] = parseInt(strCNPJ.substr(0, 1));
		arrDigito[1] = parseInt(strCNPJ.substr(1, 1));
		arrDigito[2] = parseInt(strCNPJ.substr(2, 1));
		arrDigito[3] = parseInt(strCNPJ.substr(3, 1));
		arrDigito[4] = parseInt(strCNPJ.substr(4, 1));
		arrDigito[5] = parseInt(strCNPJ.substr(5, 1));
		arrDigito[6] = parseInt(strCNPJ.substr(6, 1));
		arrDigito[7] = parseInt(strCNPJ.substr(7, 1));
		arrDigito[8] = parseInt(strCNPJ.substr(8, 1));
		arrDigito[9] = parseInt(strCNPJ.substr(9, 1));
		arrDigito[10] = parseInt(strCNPJ.substr(10, 1));
		arrDigito[11] = parseInt(strCNPJ.substr(11, 1));
		arrDigito[12] = parseInt(strCNPJ.substr(12, 1));
		arrDigito[13] = parseInt(strCNPJ.substr(13, 1));

		intSoma = arrDigito[0] * 5 + arrDigito[1] * 4 + arrDigito[2] * 3 + arrDigito[3] * 2 + arrDigito[4] * 9 + arrDigito[5] * 8 + arrDigito[6] * 7 + arrDigito[7] * 6 + arrDigito[8] * 5 + arrDigito[9] * 4 + arrDigito[10] * 3 + arrDigito[11] * 2;
		intSoma -= (11 * parseInt(intSoma / 11));

		if ((intSoma == 0) || (intSoma == 1)) { resultado1 = 0; }
		else { intResultado1 = 11 - intSoma; }
		
		if (intResultado1 == arrDigito[12]) {
			intSoma = arrDigito[0] * 6 + arrDigito[1] * 5 + arrDigito[2] * 4 + arrDigito[3] * 3 + arrDigito[4] * 2 + arrDigito[5] * 9 + arrDigito[6] * 8 + arrDigito[7] * 7 + arrDigito[8] * 6 + arrDigito[9] * 5 + arrDigito[10] * 4 + arrDigito[11] * 3 + arrDigito[12] * 2;
			intSoma -= (11 * parseInt(intSoma / 11));

			if ((intSoma == 0) || (intSoma == 1)) { intResultado2 = 0; }
			else { intResultado2 = 11 - intSoma; }

			if (intResultado2 != arrDigito[13]) { alert("CNPJ inválido!"); return false; }
		}
		else { alert("CNPJ inválido!"); 	
			   return false; 			   
			  }
	}
	return true;
}


function ValidarEmail(email)
{
	if(email.length < 6) {
		return false;
	}
	var x = 0;
	for (var c=0;c<email.length;c++) {
		if (email.substring(c,c+1) == '@') {
			x = c;
		}
	}
	var y = 0;
	if (x > 0) {
		for (c=x;c<email.length;c++) {
			if (email.substring(c,c+1)=='.') {
				y = c;
				var valida = 1;
			}
		}
		if (y > 0) {
			var dominio = '';
			for (c=x;c<y;c++) {
				dominio = dominio + email.substring(1,c);
			}
		}
	}
	else {
		return false;
	}					
	if (y <= x+2){
		return false;
	}				
	if (valida == 1){
		return true;
	}
}

function ValidaTamanho(maximo)
{
	var objeto = window.event.srcElement; //textarea
	
	if (objeto.innerText.length > (maximo - 1))
	{
		alert('O campo atingiu o limite de caracteres permitidos!');
		return false;
	}
	return true;
}

//Valida data
function vData(objDisp) {
	var strData = objDisp.value;
	if(strData == "") { objDisp.value = ""; return true; }
	if(!vDataValida(strData)) { alert('Data invalida!'); return false; }
	return true;
}
function IsBissexto(ano) { 
	if((ano % 4 == 0 && ano % 100 != 0) || ano % 400 == 0) { return true; }
	return false;
}
function vDataValida(data) {
	var arrData = new Array(); var arrMeses = new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
	arrData = data.split("/");
	
	if(arrData.length != 3) return false;
	if(arrData[0] < 1 || arrData[1] < 1 || arrData[2] < 1) return false;
	if(arrData[1] > 12) return false;
	if(IsBissexto(arrData[2])) arrMeses[2] = 29;
	if(Number(arrData[0]) > arrMeses[Number(arrData[1])]) return false;
	if(arrData[2].length != 4) return false;
	if(arrData[2] < 1900) return false;
	if(arrData[2] > 2000) return false;
	return true;
}


// Descrição: Validação e formatação de campo monetário
// Data: 15/02/2005
function Monetario(fld, e)
{
	var milSep = '.';
	var decSep = ',';
	var sep = 0;
	var key = '';
	var i = j = 0;
	var len = len2 = 0;
	var strCheck = '0123456789';
	var aux = aux2 = '';
	var whichCode = (window.Event) ? e.which : e.keyCode;

	if (fld.value.length == fld.maxLength)
		return false;

	if (whichCode == 13)
		return true;  // Enter

	key = String.fromCharCode(whichCode);

	if (strCheck.indexOf(key) == -1)
		return false;

	len = fld.value.length;
	for (i = 0; i < len; i++)
	{
		if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep))
			break;
	}

	aux = '';
	for (; i < len; i++)
	{
		if (strCheck.indexOf(fld.value.charAt(i))!=-1)
			aux += fld.value.charAt(i);
	}

	aux += key;
	len = aux.length;
	if (len == 0)
		fld.value = '';

	if (len == 1)
		fld.value = '0'+ decSep + '0' + aux;

	if (len == 2)
		fld.value = '0'+ decSep + aux;

	if (len > 2)
	{
		aux2 = '';
		for (j = 0, i = len - 3; i >= 0; i--)
		{
			if (j == 3)
			{
				aux2 += milSep;
				j = 0;
			}
			aux2 += aux.charAt(i);
			j++;
		}

		fld.value = '';
		len2 = aux2.length;
		for (i = len2 - 1; i >= 0; i--)
		{
			fld.value += aux2.charAt(i);
		}

		fld.value += decSep + aux.substr(len - 2, len);
	}
	return false;
}


function ValidaEmail(objeto) {
	if(!ValidaEmail(objeto.value)) { 
		alert('Email inválido!'); return false; }
	return true;	
}

//Função para retornar se o e-mail está em um formato válido
//Autor: Renata
function vEmail(email){
var regExp = /^[A-Za-z]([\w\.]*)@([A-Za-z0-9\.]*)\.(([A-Za-z]{3}\.[A-Za-z]{2}$)|([A-Za-z]{3}$)|([a-z]{2}$))/i; 
return regExp.test(email);
}  


/********************** Máscaras de campos **********************/
function validaNumero()
{
	var chrDigito = String.fromCharCode(event.keyCode);
	
	if (isNaN(chrDigito))
		return false;
	else
		return true;
}

function verificaDigito()
{
	if ((event.keyCode < 47 || event.keyCode > 58 ) && event.keyCode != 44 )
		return false;
}

function vPaste()
{
	if(window.event.ctrlKey)
	{
		return false;
	}
}

function mNumero() {
	var chrDigito = String.fromCharCode(window.event.keyCode);
	if(isNaN(chrDigito) || 
		(chrDigito=='.' && window.event.srcElement.value.indexOf('.')>-1) || 
		chrDigito==' ') 
		{ return false; }
	return true;
}

function mData() {
	var objDisp = window.event.srcElement;
	var chrDigito = String.fromCharCode(window.event.keyCode);
	if(isNaN(chrDigito) || (chrDigito == ' ')) return false;
	
	switch(objDisp.value.length) {
		case 2: objDisp.value += "/"; break;
		case 5: objDisp.value += "/";
	}
}
function mHora() {
	var objDisp = window.event.srcElement;
	var chrDigito = String.fromCharCode(window.event.keyCode);
	if(isNaN(chrDigito) || (chrDigito == ' ')) return false
	
	switch(objDisp.value.length) {
		case 2: objDisp.value += ":"; 
	}
}
function mCPF() {
	var objDisp = window.event.srcElement;
	var chrDigito = String.fromCharCode(window.event.keyCode);
	if(isNaN(chrDigito) || (chrDigito == ' ')) return false
	
	switch(objDisp.value.length) {
		case 3: objDisp.value += "."; break;
		case 7: objDisp.value += "."; break;
		case 11: objDisp.value += "-"; 
	}
}
function mCNPJ() {
	var objDisp = window.event.srcElement;
	var chrDigito = String.fromCharCode(window.event.keyCode);
	if(isNaN(chrDigito) || (chrDigito == ' ')) return false
	
	switch(objDisp.value.length) {
		case 2: objDisp.value += "."; break;
		case 6: objDisp.value += "."; break;
		case 10: objDisp.value += "/"; break;
		case 15: objDisp.value += "-";
	}
}
function mCEP() {
	var objDisp = window.event.srcElement;
	var chrDigito = String.fromCharCode(window.event.keyCode);
	if(isNaN(chrDigito)) return false
	
	switch(objDisp.value.length) {
		case 5: { objDisp.value += "-"; }
	}
}

function mTelefone()
{
	try{
			var objDisp = window.event.srcElement;
			var strValor = objDisp.value;
			var chrDigito = String.fromCharCode(window.event.keyCode);
			if(isNaN(chrDigito)) return false;

			switch(strValor.length)
			{
				
				//(11)3171-0352
				case 0:
					objDisp.value += "(";
					break;		
				case 3:
					objDisp.value += ")";
					break;
				case 8:
					objDisp.value += "-";
					break;
				case 12:
					objDisp.value = objDisp.value.replace("-", "");
					objDisp.value = objDisp.value.substr(0,8) + "-" + objDisp.value.substr(8);
					break;
			}
		}
	catch(e) {
   	         } 	
}

function vTelefone()
{
	try{
			var objDisp = window.event.srcElement;
			var strValor = objDisp.value;

			if(! vTelefoneAux(strValor))
			{
				alert('Formato de Telefone inválido!');
				objDisp.focus();
				objDisp.select();
				return false;
			}
		}
	catch(e) {
   	         } 		
}

function vTelefoneAux(documento)
{ 
	try{
		if(documento.charAt(0) != "(") return false
		if(documento.charAt(3) != ")") return false
		if(documento.charAt(7) != "-" && documento.charAt(8) != "-") return false
		return true;
	   }
	catch(e) {
   	         }    
}


function vTextArea(objeto,maxlength)
{
	if(objeto.value.length > maxlength){
		alert("Digite apenas " + maxlength + " dígito(s)!"); 
		objeto.focus();
		objeto.select();
		return false;
	}
}

function popopen(a,b,c)
{
	window.open(a,b,c);
}

function formatar(src, mask)
{
	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);
	}
}
