/*
PARA QUE ESTA FUNÇÃO FUNCIONE CORRETAMENTE, O CAMPO A SER VALIDADO PRECISA TER NO SEU 
LABEL A PROPRIEDADE 'ID' IGUAL À PROPRIEDADE 'NAME' DO CAMPO E ESTE CAMPO PRECISA POSSUIR 
UMA PROPRIEDADE 'ID' QUE REPRESENTARÁ O TIPO DE VALIDAÇÃO QUE DEVE SER REALIZADA.
O FORMULÁRIO DEVERÁ POSSUIR NA PROPRIEDADE 'ID' UM VALOR VÁLIDO
A PÁGINA TERÁ QUE POSSUIR UMA TAG 'SPAN' COM A PROPRIEDADE 'ID' IGUAL A 'msg'
*/
function validaForm(oForm,cor_validado,cor_erro){
	var erro = false;
	var tipo = Array();
	var msg = '';
	var nGuiaMsg = '';
	for(var i=0; i<oForm.elements.length; i++) {		
		if(oForm.elements[i].lang != undefined) {
			if(oForm.elements[i].accept != undefined && oForm.elements[i].accept != "")
				nGuiaMsg = oForm.elements[i].accept;
			
			//oLinha = recuperaLinhaCampo(oForm.elements[i]);
			//if(oLinha.style.display != "none" && oLinha.style.visibility != "hidden") {
			
				switch(oForm.elements[i].lang) {
					case 'vazio':
						if(!validaVazio(oForm.elements[i])) {						
							if(window.document.getElementById(oForm.elements[i].name).tagName == "INPUT")
								window.document.getElementById(oForm.elements[i].name).style.backgroundColor = "#FFD8CC";
							else
								window.document.getElementById(oForm.elements[i].name).style.color = cor_erro;
								
							erro = erro || true;
							aux = tipo.toString();
							if(aux.indexOf('vazio') == -1)
								tipo.push('vazio');
						}
						else {
							if(window.document.getElementById(oForm.elements[i].name).tagName == "INPUT")
								window.document.getElementById(oForm.elements[i].name).style.backgroundColor = "#FFFFFF";
							else
								window.document.getElementById(oForm.elements[i].name).style.color = cor_validado;
							
							erro = erro || false;
						}
					break;
					case 'vazioRadio':
						if(!validaVazioRadio(oForm.elements[i])) {
							if(window.document.getElementById(oForm.elements[i].name).tagName == "INPUT")
								window.document.getElementById(oForm.elements[i].name).style.backgroundColor = "#FFD8CC";
							else
								window.document.getElementById(oForm.elements[i].name).style.color = cor_erro;
							
							erro = erro || true;
							aux = tipo.toString();
							if(aux.indexOf('vazioRadio') == -1)
								tipo.push('vazioRadio');
						}
						else {
							if(window.document.getElementById(oForm.elements[i].name).tagName == "INPUT")
								window.document.getElementById(oForm.elements[i].name).style.backgroundColor = "#FFFFFF";
							else
								window.document.getElementById(oForm.elements[i].name).style.color = cor_validado;
							
							erro = erro || false;
						}
					break;
					
					case 'vazioCheck':
						if(!validaVazioCheck(oForm.elements[i])) {
							if(window.document.getElementById(oForm.elements[i].name).tagName == "INPUT")
								window.document.getElementById(oForm.elements[i].name).style.backgroundColor = "#FFD8CC";
							else
								window.document.getElementById(oForm.elements[i].name).style.color = cor_erro;
							
							erro = erro || true;
							aux = tipo.toString();
							if(aux.indexOf('vazioCheck') == -1)
								tipo.push('vazioCheck');
						}
						else {
							if(window.document.getElementById(oForm.elements[i].name).tagName == "INPUT")
								window.document.getElementById(oForm.elements[i].name).style.backgroundColor = "#FFFFFF";
							else
								window.document.getElementById(oForm.elements[i].name).style.color = cor_validado;
							
							erro = erro || false;
						}
					break;
					
					case 'email':
						if(!validaEmail(oForm.elements[i])) {
							if(window.document.getElementById(oForm.elements[i].name).tagName == "INPUT")
								window.document.getElementById(oForm.elements[i].name).style.backgroundColor = "#FFD8CC";
							else
								window.document.getElementById(oForm.elements[i].name).style.color = cor_erro;
							
							erro = erro || true;
							aux = tipo.toString();
							if(aux.indexOf('email') == -1)
								tipo.push('email');
						}
						else {
							if(window.document.getElementById(oForm.elements[i].name).tagName == "INPUT")
								window.document.getElementById(oForm.elements[i].name).style.backgroundColor = "#FFFFFF";
							else
								window.document.getElementById(oForm.elements[i].name).style.color = cor_validado;
							
							erro = erro || false;
						}
					break;
					case 'CEP':
						if(!validaCEP(oForm.elements[i])) {
							if(window.document.getElementById(oForm.elements[i].name).tagName == "INPUT")
								window.document.getElementById(oForm.elements[i].name).style.backgroundColor = "#FFD8CC";
							else
								window.document.getElementById(oForm.elements[i].name).style.color = cor_erro;
							
							erro = erro || true;
							aux = tipo.toString();
							if(aux.indexOf('CEP') == -1)
								tipo.push('CEP');
						}
						else {
							if(window.document.getElementById(oForm.elements[i].name).tagName == "INPUT")
								window.document.getElementById(oForm.elements[i].name).style.backgroundColor = "#FFFFFF";
							else
								window.document.getElementById(oForm.elements[i].name).style.color = cor_validado;
							
							erro = erro || false;
						}
					break;
					case 'data':
						if(!validaData(oForm.elements[i])) {
							if(window.document.getElementById(oForm.elements[i].name).tagName == "INPUT")
								window.document.getElementById(oForm.elements[i].name).style.backgroundColor = "#FFD8CC";
							else
								window.document.getElementById(oForm.elements[i].name).style.color = cor_erro;
							
							erro = erro || true;
							aux = tipo.toString();
							if(aux.indexOf('data') == -1)
								tipo.push('data');
						}
						else {
							if(window.document.getElementById(oForm.elements[i].name).tagName == "INPUT")
								window.document.getElementById(oForm.elements[i].name).style.backgroundColor = "#FFD8CC";
							else
								window.document.getElementById(oForm.elements[i].name).style.color = cor_validado;
							
							erro = erro || false;
						}
					break;
					case 'CPF':
						if(!validaCPF(oForm.elements[i])) {
							if(window.document.getElementById(oForm.elements[i].name).tagName == "INPUT")
								window.document.getElementById(oForm.elements[i].name).style.backgroundColor = "#FFD8CC";
							else
								window.document.getElementById(oForm.elements[i].name).style.color = cor_erro;
							
							erro = erro || true;
							aux = tipo.toString();
							if(aux.indexOf('CPF') == -1)
								tipo.push('CPF');
						}
						else {
							if(window.document.getElementById(oForm.elements[i].name).tagName == "INPUT")
								window.document.getElementById(oForm.elements[i].name).style.backgroundColor = "#FFD8CC";
							else
								window.document.getElementById(oForm.elements[i].name).style.color = cor_validado;
							
							erro = erro || false;
						}
					break;
					case 'CNPJ':
						if(!validaCPF(oForm.elements[i]) || oForm.elements[i].value.length != 14) {
							if(window.document.getElementById(oForm.elements[i].name).tagName == "INPUT")
								window.document.getElementById(oForm.elements[i].name).style.backgroundColor = "#FFD8CC";
							else
								window.document.getElementById(oForm.elements[i].name).style.color = cor_erro;
							
							erro = erro || true;
							aux = tipo.toString();
							if(aux.indexOf('CNPJ') == -1)
								tipo.push('CNPJ');
						}
						else {
							if(window.document.getElementById(oForm.elements[i].name).tagName == "INPUT")
								window.document.getElementById(oForm.elements[i].name).style.backgroundColor = "#FFD8CC";
							else
								window.document.getElementById(oForm.elements[i].name).style.color = cor_validado;
					
							erro = erro || false;
						}
					break;
					case 'numerico':
						if(!validaNumerico(oForm.elements[i])) {
							if(window.document.getElementById(oForm.elements[i].name).tagName == "INPUT")
								window.document.getElementById(oForm.elements[i].name).style.backgroundColor = "#FFD8CC";
							else
								window.document.getElementById(oForm.elements[i].name).style.color = cor_erro;
							
							erro = erro || true;
							aux = tipo.toString();
							if(aux.indexOf('numerico') == -1)
								tipo.push('numerico');
						}
						else {
							if(window.document.getElementById(oForm.elements[i].name).tagName == "INPUT")
								window.document.getElementById(oForm.elements[i].name).style.backgroundColor = "#FFD8CC";
							else
								window.document.getElementById(oForm.elements[i].name).style.color = cor_validado;
							
							erro = erro || false;
						}
					break;
				}
				switch(oForm.elements[i].id) {
					case 'igual':
						var objetoAuxiliar = window.document.getElementById(oForm.elements[i].lang);
						if(objetoAuxiliar.value != oForm.elements[i].value) {
							window.document.getElementById(oForm.elements[i].name).style.color = cor_erro;
							erro = erro || true;
							aux = tipo.toString();
							if(aux.indexOf('igual') == -1)
								tipo.push('igual');
						}
						else {
							window.document.getElementById(window.document.getElementById(oForm.elements[i].id).name).style.color = cor_validado;
							window.document.getElementById(oForm.elements[i].name).style.color = cor_validado;
							erro = erro || false;
						}
					break;
				}
			//}
		}
	}
	if(erro) {
		for(var i = 0; i < tipo.length; i++) {
			switch(tipo[i]) {
				case 'vazio':	
					msg += 'Os campos em destaque são obrigatórios<br>';
				break;
				case 'vazioRadio':	
					msg += 'Selecione a opção mais adequada para prosseguir<br>';
				break;

				case 'vazioCheck':	
					msg += 'Selecione a opção mais adequada para prosseguir<br>';
				break;

				case 'email':	
					msg += 'O E-mail informado é inválido<br>';
				break;
				case 'CEP':	
					msg += 'O CEP informado é inválido<br>';
				break;
				case 'data':	
					msg += 'A Data informada é inválida<br>';
				break;
				case 'CPF':	
					msg += 'O CPF/CNPJ informado é inválido<br>';
				break;
				case 'CNPJ':	
					msg += 'O CNPJ informado é inválido<br>';
				break;
				case 'numerico':	
					msg += 'O valor informado não é um numérico válido!<br>';
				break;
				case 'igual':	
					msg += 'A confirmação não coincide!<br>';
				break;
			}
		}

		window.document.getElementById('msg'+nGuiaMsg).style.display = 'block';
		window.document.getElementById('msg'+nGuiaMsg).innerHTML = msg;

		return false;
	}
	return true;
}

function recuperaLinhaCampo(oElemento) {
	while(oElemento != null && oElemento.tagName != 'TR')
		oElemento = oElemento.parentNode;
	
	if(oElemento == null) {
		return;
	}
	return oElemento;
}

function validaVazio(campo) {
	var regExp = /[_a-zA-Z0-9-]+/;
	if(!regExp.test(campo.value)) {
		return false;
	}
	return true;
}

function validaVazioRadio(campo) {
	var radio = document.getElementsByName(campo.name);
	for(var i = 0; i < radio.length; i++)
		if(radio[i].checked)
			return true;

	return false;
}

function validaVazioCheck(campo) {
	var checkbox = document.getElementsByName(campo.name);
	for(var i = 0; i < checkbox.length; i++)
		if(checkbox[i].checked)
			return true;

	return false;
}

function validaEmail(campo) {
	var regExp = /^([_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[_a-z0-9-]+)+)$/;
	if(!regExp.test(campo.value)) {
		return false;
	}
	return true;
}

function validaCEP(campo) {
var regExp = /^[0-9]{8}$/;
	if(!regExp.test(campo.value)) {
		return false;
	}
	return true;
}

function validaData(campo){
	var vData = Array;
	var regExp = /^[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4}$/;
	
	if (!regExp.test(campo.value)) {	
		return false;
	}
	vData = campo.value.split('/');
	
	nDia = vData[0];
	nMes = vData[1];
	nAno = vData[2];
	
	if((nDia < 1) || (nDia > 31) || ((nDia == 31) && (nMes == 4 || nMes == 6 || nMes == 9 || nMes == 11 )))
		return false;
	
	if(nMes < 1 || nMes > 12)
		return false;
	
	if((nMes == 2 && nDia > 29) || (nMes == 2 && nDia == 29 && (parseInt(nAno/4) != nAno/4)))
		return false;
		
	return true;
}

function validaNumerico(campo) {
	var regExp = /^[0-9]+(\.[0-9]{3})*(\,[0-9]+)?$/;

	if(!regExp.test(campo.value))
		return false;
	return true;
}

function validaNumericoObrigatorio(campo) {
var regExp = /^[0-9]+(\.[0-9]{3})*(\,[0-9]+)?$/;

	if(!regExp.test(campo.value))
		return false;
	return true;
}

function validaNumericoObrigatorioInteiro(campo) {
var regExp = /^[1-9]*([0-9]+(\,[0]*))?([1-9]+)[0-9]*(\.[0-9]{3})*(\,[0-9]+)?$/;

	if(!regExp.test(campo.value))
		return false;
	return true;
}


function validaCPF(campo){
	if(campo.value == ""){
		return false;
	
	} else {
		var z = campo.value;
		if(z.length != 11 && z.length != 14){
			return false;
		
		} else {
			if (z.length == 11){
				var cpf2 = campo.value;
				var j = 10;
				x = 0;
				for(var i = 0; i <= 8; i = i+1){
					x += cpf2.charAt(i) * j;
					j--;
				}
				var resto = x % 11;
				if(resto == 0 || resto == 1) {
					dv1 = 0;
				
				} else {
					dv1 = 11-resto;
				}
				if(dv1 != cpf2.charAt(9)){
					return false;
				
				} else {
					var j = 11;
					var x2 = 0;
					for(i = 0; i <= 8; i++){
						x2 += cpf2.charAt(i)*j;
						j--;
					}
					x2 += dv1*2;
					resto2 = x2 % 11;
					if(resto2 == 0 || resto2 == 1) {
						dv2 = 0;
					
					} else {
						dv2 = 11-resto2;
					}
					if(dv2 != cpf2.charAt(10)){
						return false;
					}
					return true;
				}
			}
			else{
				var j = 5;
				var x = 0;
				var cpf2 = campo.value;
				for(i = 0; i <= 3; i++){
					x += cpf2.charAt(i)*j;
					j--;
				}
				j = 9;
				for (i = 4; i <= 11; i++){
					x += cpf2.charAt(i)*j;
					j--;
				}
				resto = x % 11;
				if(resto == 0 || resto == 1) {
					dv1 = 0;
				
				} else {
					dv1 = 11-resto;
				}
				if(dv1 != cpf2.charAt(12)){
					return false;
				
				} else {
					var j = 6;
					var x = 0;
					for( i = 0; i <= 4; i++){
						x += cpf2.charAt(i)*j;
						j--;
					}
					var j = 9;
					for ( i = 5; i <= 11; i++){
						x += cpf2.charAt(i)*j;
						j--;
					}
					x += dv1*2;
					resto = x % 11;
					if(resto == 1 || resto == 0){
						dv2 = 0;
					
					} else {
						dv2 = 11 - resto;
					}
					if(dv2 != cpf2.charAt(13)){
						return false;
					
					} else {
						return true;
					}
				}
			}
		}
	}
}

function verificaNumerico(campo) {
	if (isNaN(parseInt(campo.value)) || (campo.value < 0)) {	
		return false;
	} 
	return true;
}

function destacaLinha(linha,cor){
	linha.className = cor;
}

function confirmaExclusao(sCaminho,sElementoExcluido){

	if(sElementoExcluido != '')
		sTextoConfirm = 'Confirma a exclusão d'+sElementoExcluido+' ?';
		
	if(confirm(sTextoConfirm))
		window.location = sCaminho;
	return;
}


