/***************************************************************************************************************
Alerta(idCampo, NomeCampo, exibeAlert) 			--> Muda a classe do campo, e exibe um alerta caso necessário.
formatar(src, mask, event) 						--> Formata um campo com a máscara desejada.
isTipo(obj)										--> Válida campo conforme o tipo, usa expressão regular.
Limpa(campo)									--> Limpa o campo...
/***************************************************************************************************************/

function Alerta(idCampo, NomeCampo, exibeAlert){
	if(idCampo.type.lastIndexOf('select') != -1){
		idCampo.onclick = function() { voltaClass(this); };
	}else{
		idCampo.onkeydown = function() { voltaClass(this); };
	}
	idCampo.className = idCampo.className + ' verificarCampo';
	if (exibeAlert){ alert("Preencha corretamente o campo "+ NomeCampo ); }
	idCampo.focus();
}

function formatar(src, mask, event){
	var i = src.value.length;
	var saida = mask.substring(0,1);
	var texto = mask.substring(i)
	if( (event.keyCode !== 8) ){
		if (texto.substring(0,1) != saida){
			src.value += texto.substring(0,1);
		}
	}
}

function isTipo(obj){
	//http://www.mhavila.com.br/topicos/web/valform.html
	var reTipo = obj.getAttribute("tipo");
	var regExp = "";
	
	if (reTipo != ""){
		switch (reTipo) {
		   case "numerico" :  	regExp = /^\d+$/; break;
		   case "decimal_PT" :	regExp = /^[+-]?((\d+|\d{1,3}(\.\d{3})+)(\,\d*)?|\,\d+)$/; break;
		   case "decimal_EN" :  regExp = /^[+-]?((\d+|\d{1,3}(\,\d{3})+)(\.\d*)?|\.\d+)$/; break;
		   case "moeda" :		regExp = /^\d{1,3}(\.\d{3})*\,\d{2}$/; break;
		   case "data" :		regExp = /^((0?[1-9]|[12]\d)\/(0?[1-9]|1[0-2])|30\/(0?[13-9]|1[0-2])|31\/(0?[13578]|1[02]))\/(19|20)?\d{2}$/; break;
		   case "hora" :		regExp = /^([0-1]\d|2[0-3]):[0-5]\d$/;  break;
		   case "email" :		regExp = /^[\w-]+(\.[\w-]+)*@(([\w-]{2,63}\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/; break;
		   case "cep" :			regExp = /^((^\d{5}$)|(^\d{8}$))|(^\d{5}-\d{3}$)/; break;
		   case "telefone" :	regExp = /^((^\d{4}$)|(^\d{8}$))|(^\d{4}-\d{4}$)/; break;
		   case "CPF" :			return isCpf(obj.value); break;
		   case "CNPJ" :		return isCnpj(obj.value); break;
		   case "CpfCnpj" :		return isCpfCnpj(obj.value); break;
		}
	}
	if(regExp != ""){ return regExp.test(obj.value); }
}

function Limpa(campo){
	campo.value=''
}

function MascaraCpfCnpj(obj){
	if( isCpf(obj.value) ){
		obj.value=formatCpfCnpj(obj.value, true, false);
	}
	else{
		if( isCnpj(obj.value) ){
			obj.value=formatCpfCnpj(obj.value, true, true);	}
	}
}

function mudaFoco(tCampo,CampoAtual, pCampo){
	var campo  = document.getElementById(CampoAtual);
	var pCampo = document.getElementById(pCampo);
	if(campo.value.length >= tCampo){
		pCampo.focus();
	}
}

function Verifica(idCampo, NomeCampo, exibeAlert){
	voltaClass(idCampo);
	if( idCampo.value.length < 1 || isTipo(idCampo)==false ){
		Alerta(idCampo, NomeCampo, exibeAlert);
		return false;
	}else{
		return true;
	}
}

function voltaClass(obj){
	obj.className = obj.className.replace('verificarCampo', '');
}
