var onfocus = 0;
function validaGlobal(dados)
{
	var erro = 0
	var funcoes
	onfocus = 0;
	
	if(dados.indexOf('/') != -1)	
	{
		funcoes = dados.split('/')
		for(g=0;g<funcoes.length;g++)
		{	//alert(funcoes[g] + '\ng:'+ g + '\nf:' + funcoes.length)
			if(  !eval(funcoes[g])  )
				erro++
		} 
		
		if(erro > 0)
			return false
		else
			return true
	}
	else
		if(  !eval(dados)  )
			return false
		else
			return true
}

function validaObriga(dados) //Função que joga validaDadps como forma obrigatoria
{
	if(  !validaDados(dados,true)  )
		return false
	else
		return true
}

function validaCampo(dados) // Função que joga na validaDados como forma não obrigatoria
{
	if(  !validaDados(dados,false) )
		return false
	else
		return true	
}

function objetoErro(objeto,objeto_refe)
{
	objeto_refe.style.color = '#af2726'
	objeto_refe.style.fontWeight = 'bold'
	objeto.style.border = '1px solid #af2726'
	if(onfocus == 0)
	{
		objeto.focus()
		onfocus++
	}
}

function objetoValido(objeto,objeto_refe)
{
	objeto_refe.style.color = '#000'
	objeto_refe.style.fontWeight = 'normal'
	objeto.style.borderColor = '#000'
}

function validaDados(dados,obriga) // Função que valida os campos
{
	var campos = dados.split(',')
	var erro = 0
	var objeto
	var objeto_refe
	var objeto2
	var objeto_refe2
	
	for(x=0;x<campos.length;x++)
	{
		//alert(campos[x] + '\n' + campos[x].substr(4,campos[x].length) + '\n'+ x)
		if(	campos[x].indexOf('.') != -1 )
		{	
			objeto = document.getElementById(   campos[x].substr( 0,campos[x].indexOf('.') )    )
			
			var obj = campos[x].substr(4,campos[x].length)
			objeto_refe = document.getElementById(  obj.substr( 0,obj.indexOf('.') )  )
		}
		else
		{
			objeto = document.getElementById(campos[x])
			objeto_refe = document.getElementById(  campos[x].substr(4,campos[x].length)  )
		}
		
		objeto.value = objeto.value.trim()
		
		switch( campos[x].substr(0,7) )
		{	
			case "txt_ema": //-- Email
				if(objeto.value.length != 0 || obriga == true)
					if( !validaEmail(objeto.value) )
					{
						erro++
						objetoErro(objeto,objeto_refe)
					}
					else
						objetoValido(objeto,objeto_refe)
				else
					objetoValido(objeto,objeto_refe)
			break;
			case "txt_tel": //-- Telefone
				if( ( obriga == true && objeto.value.length < 12 ) ||							//condiçao continua
					( obriga != true && objeto.value.length > 0 && objeto.value.length < 12 ) ) //fim da condição
				{
					erro++
						objetoErro(objeto,objeto_refe)
				}
				else
					objetoValido(objeto,objeto_refe)
			break;
			case "txt_cep": //-- Cep
				if( ( obriga == true && objeto.value.length < 9 ) ||							//condiçao continua
					( obriga != true && objeto.value.length > 0 && objeto.value.length < 9 ) ) //fim da condição
				{erro++
						objetoErro(objeto,objeto_refe)
				}
				else
					objetoValido(objeto,objeto_refe)
			break;
			case "txt_cpf": //-- CPF
				if(objeto.value.length != 0 || obriga == true)
				{
					if( !validaCpf(objeto.value) )
					{erro++
						objetoErro(objeto,objeto_refe)
					}
					else
						objetoValido(objeto,objeto_refe)
				}
				else
					objetoValido(objeto,objeto_refe)	
			break;	
			case "txt_nas": //-- Nascimento
				if( objeto.value.length != 0 || obriga == true )
					if(  !validaNascimento(objeto.value) )
					{
						erro++
						objetoErro(objeto,objeto_refe)
					}
					else
						objetoValido(objeto,objeto_refe)
				else
					objetoValido(objeto,objeto_refe)
			break;
			case "txt_sen": //-- Senha e Confirmação se existir...
				
			//-- Senha
				if( document.getElementById('txt_login') )
					objeto2 = document.getElementById('txt_login')
					
				if( objeto.value.length < 4 || ( objeto.value.length < 0 && objeto.value == objeto2.value ) ) //fim da condição
				{
					erro++
					objetoErro(objeto,objeto_refe)
					document.getElementById("txt_erro_sen").innerHTML="Minímo 4 caracteres";
				}
				else
					objetoValido(objeto,objeto_refe)
					
			//-- Confirmação
				if( document.getElementById('txt_conf_senha') )
				{
					objeto2 = document.getElementById('txt_conf_senha')
					objeto_refe2 = document.getElementById('conf_senha')
					
					if( objeto2.value.length < 4 ) //fim da condição
					{
						objetoErro(objeto2,objeto_refe2)
						erro++
					}
					else
						objetoValido(objeto2,objeto_refe2)
					
					//-- Verifiação se sao iguais
					if( objeto.value != objeto2.value )
					{
							erro++
							objeto_refe.style.color = '#af2726'
							objeto_refe2.style.color = '#af2726'
							objeto_refe2.style.fontWeight = 'bold'
							
							document.getElementById("txt_erro_conf_sen").innerHTML="As senhas não são iguais";
							if( onfocus == 0 )
							{
								objeto.focus()
								onfocus++
							}
					}
						
				}
			break;
			case "txt_log": //-- Login
				if( objeto.value.length < 4 ) //fim da condição
				{
					erro++
					objetoErro(objeto,objeto_refe)
					document.getElementById("txt_erro_log").innerHTML="Minímo 4 caracteres";
				}
				else
					objetoValido(objeto,objeto_refe)
			break;
			case "txt_cnp": //-- CNPJ
				if(objeto.value.length != 0 || obriga == true)
				{
					if( !validaCnpj(objeto.value) )
					{erro++
						objetoErro(objeto,objeto_refe)
					}
					else
						objetoValido(objeto,objeto_refe)
				}
				else
					objetoValido(objeto,objeto_refe)	
			break;
			case "txt_dat": //-- Data
				if( objeto.value.length != 0 || obriga == true )
					if(  !validaData(objeto.value) )
					{erro++
						objetoErro(objeto,objeto_refe)
					}
					else
						objetoValido(objeto,objeto_refe)
				else
					objetoValido(objeto,objeto_refe)		
			break;
			/*case "txt_ie":  //-- Inscriçao Estadual
				//alert('ie, pesquisar mais!\n Lembra  o Daniel por favor, as vezes ele esquece ¬¬')
			break;*/
			default:		//-- Para os que ele não acha no swicth, verifica só se a algo na variavel
				switch( objeto.type )
				{
					case 'select-one':
						if( objeto.selectedIndex == 0)
						{
								erro++
								objetoErro(objeto,objeto_refe)
						}
						else
							objetoValido(objeto,objeto_refe)
					break;
					case 'radio':
						var form = campos[x].substr(campos[x].indexOf('.')+1,campos[x].length)
						var tamanho = 'document.'+ form +'.'+objeto.id+'.length'
						var ok = 0
						var id
						
						for(y=0;y<eval(tamanho);y++)
						{
							id = 'document.'+ form +'.'+ objeto.id +'['+ y +'].checked'
							//alert('form:'+form+'\ntamanha:'+tamanho+'\nid:'+id+'\ncampo:'+campos[x])
							if( eval(id) == true )
								ok++
						}
						
						if(ok > 0)
						{
							objeto_refe.style.color = '#000'
							objeto_refe.style.fontWeight = 'normal'
						}
						else
						{
							objeto_refe.style.color = '#af2726' 
							erro++
							objeto_refe.style.fontWeight = 'bold'
						}
						
					break;
					default:
						if( objeto.value.length == 0  )
						{
								erro++
								objetoErro(objeto,objeto_refe)
						}
						else
							objetoValido(objeto,objeto_refe)
				}
		}
	}
	
	if(erro == 0)
		return true
	else
		return false
}

function teclaEnter(event)
{  
	if ( (window.event && window.event.keyCode==13) || (event && event.which == 13)  )
		return true
 	else
		return false
}

//------------------------------------------------------------- Funções de validação chamadas no switch...
function validaEmail(email)
{
    var reg = new RegExp(/^[A-Za-z0-9_\-\.]+@[A-Za-z0-9_\-\.]{2,}\.[A-Za-z0-9]{2,}(\.[A-Za-z0-9])?/);
	if(  reg.test(email) && email != "" )
		return true;
	else
		return false;
}

function validaCpf(cpf)
{
	cpf = cpf.replace(".","").replace("-","").replace(".","")

	if( cpf == "00000000000" || cpf == "11111111111" || cpf == "22222222222" || cpf == "33333333333" || cpf == "44444444444" || cpf == "55555555555" || cpf == "66666666666" || cpf == "77777777777" || cpf == "88888888888" || cpf == "99999999999" || cpf.length != 11 || cpf == "12345678909" )
		return false
	else
	{
		var x = 0;
		var y;
		var soma = 0;
		var dig1 = 0;
		var dig2 = 0;
		var texto = "";
		var numcpf1="";
		var len = cpf.length; 
		
		x = len -1;
		for(i=0; i <= len - 3; i++)
		{
			y = cpf.substring(i,i+1);
			soma = soma + ( y * x);
			x = x - 1;
			texto += y;
		}
		
		dig1 = 11 - (soma % 11);
		
		if (dig1 == 10)
			dig1=0
		
		if (dig1 == 11)
			dig1=0
			
		numcpf1 = cpf.substring(0,len - 2) + dig1;
		
		x = 11; 
		soma=0;
		
		for (i=0; i <= len - 2; i++)
		{
			soma = soma + (numcpf1.substring(i,i+1) * x);
			x = x - 1;
		}
		
		dig2= 11 - (soma % 11);
		
		if (dig2 == 10) 
			dig2=0;
			
		if (dig2 == 11) 
			dig2=0;
			
		if ( (dig1 + "" + dig2) == cpf.substring(len,len-2) ) 
			return true;
		else
			return false;
	}	
}

function validaNascimento(data)
{
	if(!validaData(data))
		return false
	else
		var data_completa = new Date();
		data = new Date(data)
		if( data.getFullYear() > data_completa.getFullYear() )
			return false
		else
			return true				
}

function validaData(data)
{
	if( data.length > 10 )
		return false
		
	var dia = data.substring(0,2);
	var mes = data.substring(3,5);
	var ano = data.substring(6,10);
	
	if(dia <= 0 || mes <= 0 || mes > 12 || ano < 1900 || dia > 31)
		return false
	else
		if( ( mes==1 || mes==3 || mes==5|| mes==7 || mes==8 || mes==10 || mes==12 ) && dia > 31 )
			return false
		else
			if( (mes==4 || mes==6 || mes==9 || mes==11) && dia > 30 )
				return false
			else
				if( ano%4 != 0 && mes == 2 && dia > 28)
					return false
				else
					if( ano%4 == 0 && mes == 2 && dia>29)
						return false
					else
						return true
}

function validaCnpj(cnpj)
{
     var numeros
	 var digitos
	 var soma
	 var i
	 var resultado
	 var pos
	 var tamanho
	 var digitos_iguais = 1
	 cnpj = cnpj.replace("/","").replace(".","").replace("-","").replace(".","")
	 
	 if ( cnpj == "00000000000000" ||  cnpj == "11111111111111" ||  cnpj == "22222222222222" ||
		  cnpj == "33333333333333" ||  cnpj == "44444444444444" ||  cnpj == "55555555555555" ||  
		  cnpj == "66666666666666" ||  cnpj == "77777777777777" ||  cnpj == "88888888888888" ||  
		  cnpj == "99999999999999" ||  cnpj.length > 14)
                 return false;

     for (i = 0; i < cnpj.length - 1; i++)
	 {
           if (cnpj.charAt(i) != cnpj.charAt(i + 1))
           {
				digitos_iguais = 0;
				break;
           }
	 }
	 
     if (!digitos_iguais)
     {
		tamanho = cnpj.length - 2
		numeros = cnpj.substring(0,tamanho);
		digitos = cnpj.substring(tamanho);
		soma = 0;
		pos = tamanho - 7;
		for (i = tamanho; i >= 1; i--)
		{
			 soma += numeros.charAt(tamanho - i) * pos--;
			 if (pos < 2)
				   pos = 9;
		}
		
		resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
		
		if (resultado != digitos.charAt(0))
			 return false;
		
		tamanho = tamanho + 1;
		numeros = cnpj.substring(0,tamanho);
		soma = 0;
		pos = tamanho - 7;
		
		for (i = tamanho; i >= 1; i--)
		{
			 soma += numeros.charAt(tamanho - i) * pos--;
			 if (pos < 2)
				   pos = 9;
		}
		
		resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
		
		if (resultado != digitos.charAt(1))
			 return false;
		else 
			return true;
     }
     else
           return false;
}

function validaIE(ie)
{
	if (((ie.substring(0,1)).toUpperCase()) == 'P')
	{
		s = ie.substring(1, 9);
		
		var nro = new Array(12);
		
		for (var i = 0; i <= 7; i++)
			nro = CharToInt(s);
		
		soma = (nro[0] * 1) + (nro[1] * 3) + (nro[2] * 4) + (nro[3] * 5) +
			   (nro[4] * 6) + (nro[5] * 7) + (nro[6] * 8) + (nro[7] * 10);
		dig = soma % 11;
		
		if (dig >= 10)
			dig = 0;
		
		resultado = (dig == nro[8]);
		
		if (!resultado)
			return false
		else
			return true
	}
	else
	{
		if (ie.length < 12)
			return false;
		
		var nro = new Array(12);
		
		for (var i = 0; i <= 11; i++)
			nro = CharToInt(ie.charAt(i));
			
		soma = (nro[0] * 1) + (nro[1] * 3) + (nro[2] * 4) + (nro[3] * 5) + 
	 	(nro[4] * 6) + (nro[5] * 7) + (nro[6] * 8) + (nro[7] * 10);
		
		dig = soma % 11;
		
		if (dig >= 10)
			dig = 0;
		
		resultado = (dig == nro[8]);
		
		if (!resultado)
			return false;
		
		soma = (nro[0] * 3) + (nro[1] * 2) + (nro[2] * 10) + (nro[3] * 9) +
			   (nro[4] * 8) + (nro[5] * 7) + (nro[6] * 6)  + (nro[7] * 5) +
			   (nro[8] * 4) + (nro[9] * 3) + (nro[10] * 2);
		
		dig = soma % 11;
		
		if (dig >= 10)
			dig = 0;
		
		return true//(dig == nro[11]);
	}
}

function validaDataMaior(data1,data2)
{
	if( !validaData(data1) && !validaData(data2) )
		return false
	if( new Date(data1) < new Date(data2) )
		return true
	else
		return false
}
//------------------------------------------------------------- Fim

//------------------------------------------------------------- Funções de bloqueio e mascara chamadas no onkeypress..
function formataMascara(o,f)
{
    v_obj=o
    v_fun=f
    setTimeout("execMascara()",1)
}

function execMascara()
{
	v_obj.value=v_fun(v_obj.value);
}

function formataCpf(v)
{
	v=v.replace(/\D/g,"")                    
    v=v.replace(/(\d{3})(\d)/,"$1.$2")       
    v=v.replace(/(\d{3})(\d)/,"$1.$2") 
    v=v.replace(/(\d{3})(\d{1,2})$/,"$1-$2")
    return v
}

function formataTel(v)
{
    v=v.replace(/\D/g,"")
    v=v.replace(/^(\d\d)(\d)/g,"($1) $2")
    v=v.replace(/(\d{4})(\d)/,"$1-$2")
    return v
}

function formataCep(v)
{
    v=v.replace(/\D/g,"")
    v=v.replace(/^(\d{5})(\d)/,"$1-$2")
    return v
}

function formataCnpj(v)
{
    v=v.replace(/\D/g,"")   
    v=v.replace(/^(\d{2})(\d)/,"$1.$2")
    v=v.replace(/^(\d{2})\.(\d{3})(\d)/,"$1.$2.$3")
    v=v.replace(/\.(\d{3})(\d)/,".$1/$2")
    v=v.replace(/(\d{4})(\d)/,"$1-$2")
    return v
}

function formataRg(v)
{
	v=v.replace(/[^Xx0-9]/g,"")
	return v
}

function formataData(v)
{
    v=v.replace(/\D/g,"")
    v=v.replace(/^(\d{2})(\d)/g,"$1/$2")
    v=v.replace(/(\d{2})(\d)/,"$1/$2")
    return v
}

function formataDataMes(v)
{
    v=v.replace(/\D/g,"")
    v=v.replace(/(\d{2})(\d)/,"$1/$2")
    return v
}

function formataAlfanum(v)
{
	v=v.replace(/[^A-Za-z0-9]/g,"")
	return v
}

function formataEmail(v)
{
	v=v.replace(/[^A-Za-z0-9_.\-\@]/g,"") 
	return v
}

function formataLogin(v)
{
	v=v.replace(/[^A-Za-z0-9_.\-]/g,"")
	return v
}

function contagemCarac(v)
{
    if(v.length > 255)
	{
		if( document.getElementById("contagem") )
			document.getElementById("contagem").innerHTML = 'caracteres: <font color=#ff0000>' + (v.length-1) + '/255</font>';
	}
	else
	{
		if( document.getElementById("contagem") )
			document.getElementById("contagem").innerHTML = 'caracteres: ' + v.length + '/255';
	}
	
	return v.substr(0,255);
}

function formataNum(v)
{
	v=v.replace(/[^0-9]/g,"")
	return v
}

/*function formataReal(v)
{
	r = v.indexOf("R$")
	if(r == -1)
		if(v == "R")
			v +="$"
		else
			v = "R$" + v
	
	v = v.replace(/[^0-9\sRUS$usr.,]/g,"")
	return v
}*/

function formataReal(v)
{
	if(v.indexOf(",") > -1)
		v = v.substr(0,v.indexOf(",")+3)
		
	if(v == ',')
		v = 0 + ','
	if(v.length == 8)
		v = v + ','
		
	v = v.replace(/[^[0-9\.]?/,"")
	//v = v.replace(/\,[0-9]{3,}?/,"")
	v = v.replace('..','.').replace('.,','.').replace(',.',',').replace(',,',',')
	return v
}

function pegaDataHora()
{
	var data = new Date()
	var dia,mes,ano,hora,minuto,segundo
	dia = data.getDate()
	mes = data.getMonth()+1
	hora = data.getHours()
	minuto = data.getMinutes()
	segundo = data.getSeconds()
	
	dia = dia.toString()
	mes = mes.toString()
	hora = hora.toString()
	minuto = minuto.toString()
	segundo = segundo.toString()
	
	if(dia.length == 1)
		dia = '0' + dia
	if(mes.length == 1)
		mes = '0' + mes
		
	if(hora.length == 1)
		hora = '0' + hora
	if(minuto.length == 1)
		minuto = '0' + minuto
	
	var dataMensagem = dia + '/' + mes + '/' + data.getFullYear()
       
	dataMensagem += '&nbsp;&nbsp;&nbsp;' + hora + ':' + minuto
    document.getElementById('div_dataHora').innerHTML = dataMensagem
}

//------------------------------------------------------------- Fim

String.prototype.trim = function()
{
	return this.replace(/^\s*/, "").replace(/\s*$/, "");
}

function enviaDados(event) // será chamaca quando o enter for apertado no form
{  
	if (window.event && window.event.keyCode==13)
		validaForm()
	
	if (event && event.which == 13)
		validaForm()
}

/*
function pegaId(dados)
{	
	if(dados.indexOf('/') > -1)
	{
		dados = dados.split('/')
		id = dados[0]
		valor = dados[1]
			if(valor.trim() != '')
				valor = '.' + valor
	}
	else
		id = dados
		
		return eval("document.getElementById('" + id + "')"+valor)
}*/

