function filtraCampo(pCampo, pEvento, pTipo)
{
	pEvento = key(pEvento);

	if (isActionKey(pEvento))
		return true;
	switch(pTipo)
	{
		case "numero":
			return ((pEvento >= 48)&&(pEvento <= 57));
		case "texto":
			if ((pEvento >= 65)&&(pEvento <= 90)) return true;
			if ((pEvento >= 97)&&(pEvento <= 122)) return true;
			return isValidSpecialChar(pEvento);
		case "telefone":
			if ((pEvento < 48)||(pEvento > 57)) return false;
			if (pCampo.value.length == 2) pCampo.value=pCampo.value + "-";
			if (pCampo.value.length == 7) pCampo.value=pCampo.value + "-";
			return true;
		case "tel":
			if ((pEvento < 48)||(pEvento > 57)) return false;
			if (pCampo.value.length == 4) pCampo.value=pCampo.value + "-";
			return true;
		case "CPF":
			if ((pEvento < 48)||(pEvento > 57)) return false;
			if (pCampo.value.length == 3) pCampo.value=pCampo.value + ".";
			if (pCampo.value.length == 7) pCampo.value=pCampo.value + ".";
			if (pCampo.value.length == 11) pCampo.value=pCampo.value + "-";
			return true;
		case "CNPJ":
			if ((pEvento < 48)||(pEvento > 57)) return false;
			if (pCampo.value.length == 2) pCampo.value=pCampo.value + ".";
			if (pCampo.value.length == 6) pCampo.value=pCampo.value + ".";
			if (pCampo.value.length == 10) pCampo.value=pCampo.value + "/";
			if (pCampo.value.length == 15) pCampo.value=pCampo.value + "-";
			return true;
		case "data":
			if ((pEvento < 48)||(pEvento > 57)) return false;
			if (pCampo.value.length == 2) pCampo.value=pCampo.value + "/";
			if (pCampo.value.length == 5) pCampo.value=pCampo.value + "/";
			return true;
		case "CEP":
			if ((pEvento < 48)||(pEvento > 57)) return false;
			if (pCampo.value.length == 5) pCampo.value=pCampo.value + "-";
			return true;
		case "monetario":
			if((pEvento >= 48)&&(pEvento <= 57)) return true;
			if(pEvento == 44) return true;
			return false;
	}
}

function validaCampo(pCampo, pTipo)
{

	switch(pTipo)
	{
		case "num":
		case 1:
			return !/\D/.test(pCampo.value);
		case "text":
		case 2:
			return !/[^a-z A-ZáÁàÀãÃéÉêÊíÍóÓôÔõÕúÚçÇ]/.test(pCampo.value);
		case "mail":
		case 3:
			var rexp = /^(("[^"]+")|([\w]+([-\.][\w]+)*))@((\[((\d|([01]?\d\d)|(2[0-4]\d)|(25[0-5]))\.){3}(\d|([01]?\d\d)|(2[0-4]\d)|(25[0-5]))\])|(([\w\-]+\.)+[a-zA-Z]{2,}))$/;
			return rexp.test(pCampo.value);
		case "CNPJ":
		case 4:
			if(!/^[\d]{2}\.[\d]{3}\.[\d]{3}\/[\d]{4}-[\d]{2}$/.test(pCampo.value)) return false;
		    var num, soma, resto;
		    num = pCampo.value.replace(/\./g,"").replace(/\//g,"").replace(/-/g,"");
			if (num.value == "00000000000000") return false;
			soma = 0;
		    for (i=0; i<4; i++)
				soma = soma + parseInt(num.charAt(i)) * (5 - i); 
			for (i=4; i<12; i++)
				soma = soma + parseInt(num.charAt(i)) * (13 - i); 
			resto = soma % 11;
		    if (resto < 2) resto = 11;
		    if (11-resto != parseInt(num.charAt(12))) return false;
			soma = 0;
			for (i=0; i<5; i++)
				soma = soma + parseInt(num.charAt(i)) * (6 - i); 
			for (i=5; i<13; i++)
				soma = soma + parseInt(num.charAt(i)) * (14 - i); 
			resto = soma % 11;
		    if (resto < 2) resto = 11;
		    if (11-resto != parseInt(num.charAt(13))) return false;
			return true;
		case "CPF":
		case 5:
			if(!/^[\d]{3}\.[\d]{3}\.[\d]{3}-[\d]{2}$/.test(pCampo.value)) return false;
		    var num, soma, resto;
		    num = pCampo.value.replace(/\./g,"").replace(/-/g,"");
			if (num == "00000000000" || num == "11111111111" || num == "22222222222" || num == "33333333333") return false;
			if (num == "44444444444" || num == "55555555555" || num == "66666666666" || num == "77777777777") return false;
			if (num == "88888888888" || num == "99999999999") return false;
			soma = 0;
		    for (i=0; i<9; i++)
				soma = soma + parseInt(num.charAt(i)) * (10 - i); 
			resto = (soma * 10) % 11;
		    if ((resto == 10) || (resto == 11)) resto = 0;
		    if (resto != parseInt(num.charAt(9))) return false;
			soma = 0;
		    for (i = 0; i < 10; i++)
		       soma = soma + parseInt(num.charAt(i)) * (11 - i);
		    resto = (soma * 10) % 11;
		    if ((resto == 10) || (resto == 11)) resto = 0;
		    if (resto != parseInt(num.charAt(10))) return false;
		    return true;
		case "telGeral":
		case 6:
			if(!/^[\d]{2}-[\d]{4}-[\d]{4}$/.test(pCampo.value)) return false;
			if(!inArray(pCampo.value.substring(0,2),arrCodArea)) return false;
			return true;
		case "telCurto":
		case 7:
			if(!/^[\d]{4}-[\d]{4}$/.test(pCampo.value)) return false;
			return true;
		case "tel":
		case 8:
			if(!/^[\d]{2}-[1-6][\d]{3}-[\d]{4}$/.test(pCampo.value)) return false;
			if(!inArray(pCampo.value.substring(0,2),arrCodArea)) return false;
			return true;
		case "cel":
		case 9:
			if(!/^[\d]{2}-[6789][\d]{3}-[\d]{4}$/.test(pCampo.value)) return false;
			if(!inArray(pCampo.value.substring(0,2),arrCodArea)) return false;
			return true;
		case "date":
		case 10:
			var splitContent;
			if (/^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/.test(pCampo.value))
			{
				var splitContent = pCampo.value.split("/");
			}
			else if (/^[0-9]{2}\-[0-9]{2}\-[0-9]{4}$/.test(pCampo.value))
			{
				var splitContent = pCampo.value.split("-");
			}
			else return false;
			var day = splitContent[0];
			var month = splitContent[1];
			var year = splitContent[2];
			if ((day == 0) || (day > 31)) return false;
			switch (month)
			{
				case "01":
				case "03":
				case "05":
				case "07":
				case "08":
				case "10":
				case "12":
					if (day <= 31) return true;
					else return false;
				case "04":
				case "06":
				case "09":
				case "11":
					if (day <= 30) return true;
					else return false;
				case "02":
					if (year % 400 == 0)
					{
						if (day <= 29) return true;
						else return false;
					}
					else if (year % 100 == 0)
					{
						if (day <= 28) return true;
						else return false;
					}
					else if (year % 4 == 0)
					{
						if (day <= 29) return true;
						else return false;
					}
					else
					{
						if (day <= 28) return true;
						else return false;
					}
				default:
					return false;
			}
		case "CEP":
		case 11:
			if(!/^[\d]{5}-[\d]{3}$/.test(pCampo.value)) return false;
			return true;
		case "DDD":
		case 12:
			return inArray(pCampo.value,arrCodArea);
		case "monetario":
		case 13:
			return !/\D/.test(pCampo.value.replace(/\.+/g,"").replace(",",""));//coxa
	}
}

function selectedRadio(pName)
{
	for(i=0;i<$N(pName).length;i++)
		if ($N(pName)[i].checked)
			return $N(pName)[i].id;
	return false;
}

function validaRadio(pName)
{
	for(i=0;i<$N(pName).length;i++)
		if ($N(pName)[i].checked)
			return true;
	return false;
}

function validaCombo(pID, pValue)
{
	if($(pID).options[$(pID).selectedIndex].value == pValue)
		return false;
	return true;
}

function selectByName(pSelect, pOption)
{
	pSelect = $(pSelect);
	var objOptions = pSelect.options;
	for(x=0;x<objOptions.length;x++)
		if(objOptions[x].text == pOption)
			pSelect.selectedIndex = x;
}

