/*-------------------------------------------------
FORMATA LETRAS
-------------------------------------------------*/
function formata(tipo,campo)
{
	switch(tipo)
	{
		case 1: //CAIXA BAIXA - EVENTO: onBlur
		{
			campo.value = campo.value.toLowerCase();
			break;
		}
		case 2://CAIXA ALTA - EVENTO: onBlur
		{
			campo.value = campo.value.toUpperCase();
			break;
		}
	}
}

/*	-------------------------------------------------
DATA
-------------------------------------------------*/
function mascara_data(obj, e){
	
	if(window.ActiveXObject){
		e = event;
		characterCode = e.keyCode; //character code is contained in IE's keyCode property
	}else{
		characterCode = e.which;
		if(characterCode == 8 || characterCode == 0){ // Trata DELETE, BACKSPACE, DEL e SETAS
			return true;
		}
	}
	
	nomeObj = obj.name;
	valor = obj.value;
	tam = valor.length;

	//Testa se não foram digitados números
	if (characterCode < 48 || characterCode > 58)
	{
		return false;
		//characterCode = 127;
		//obj.focus();
	}
	else
	{
		if(tam==2)
		{
			obj.value = valor.substr(0,tam) + '/';
		}
		if(tam==5)
		{
			obj.value = valor.substr(0,tam) + '/';
		}
	}
}

/*	-------------------------------------------------
DDD
-------------------------------------------------*/
function mascara_ddd(obj,tecla)
{
	nomeObj = obj.name;
	valor = tecla.srcElement.value;
	tam = valor.length;
	//Testa se não foram digitados números
	 if (tecla.keyCode < '48' || tecla.keyCode > '58')
	{
		alert('Por favor,\ndigite apenas números!'); 
		tecla.keyCode = '127';
		obj.focus();
	}
}

/*	-------------------------------------------------
TELEFONE
-------------------------------------------------*/
function mascara_tel(obj,e)
{
	if(window.ActiveXObject){
		e = event;
		characterCode = e.keyCode; //character code is contained in IE's keyCode property
	}else{
		characterCode = e.which;
		if(characterCode == 8 || characterCode == 0){ // Trata DELETE, BACKSPACE, DEL e SETAS
			return true;
		}
	}
	
	nomeObj = obj.name;
	valor = obj.value;
	tam = valor.length;
	
	if (characterCode < 48 || characterCode > 58)
	{
		return false;
		//tecla.keyCode = '127';
		//obj.focus();
	}
	else
	{
		if(tam==4)
		{
		  obj.value = valor.substr(0,tam) + '-';
		}
	}
}


function trocaVirgula(qqNum)
{
	if (qqNum.indexOf(",") != -1)
	{
		var numEsq = qqNum.substr(0,qqNum.indexOf(","));
		var numDir = qqNum.substr(qqNum.indexOf(",")+1);
		return numEsq + "." + numDir;
	}
	else
	{
		return qqNum
	}

}

function retiraPonto(qqNum)
{
	if (qqNum.indexOf(".") != -1){
		var numEsq = qqNum.substr(0,qqNum.indexOf("."));
		var numDir = qqNum.substr(qqNum.indexOf(".")+1);
		qqNum = numEsq + numDir;
	}

	return trocaVirgula(qqNum);
}


function mascara_moeda(obj,qqNum)
{
	if ((qqNum==",") || (qqNum=="."))
	{
		alert('Preencha o valor corretamente!');
		eval('document.forms[0].'+obj+'.value=""');
		eval('document.forms[0].'+obj+'.focus()');
	}
	else
	{
		qqNum= eval(retiraPonto(qqNum));
		num=Math.abs((Math.round(qqNum*100)/100));
		strNum = ""+num;
		
		//#1 Coloca vírgula, caso não exista
		if (strNum.indexOf(".")==-1)
		{
			strNum+=",00"; 
		}
		else
		{	
			strNum = strNum.substr(0,strNum.indexOf("."))+","+strNum.substr(strNum.indexOf(".")+1);
		}
		//fim #1

		//strNum = qqNum
		strD=strNum.substr(0,strNum.indexOf(","));
		numD=strD-0; //Convertendo para número novamente
		strE=strNum.substr(strNum.indexOf(","));

		//#2 Coloca zeros até completar duas casas decimais{
		while (strE.length<3)
			strE+="0";
		//fim #2

		//#3 Adiciona pontos
		if (numD>=1000)
		{
			tamD=strD.length
			strD=parseInt(""+(numD/1000))+"."+strD.substring(tamD-3,tamD)
		}
		
		if (numD>=1000000)
		{
			tamD=strD.length
			strD=parseInt(""+(numD/1000000))+"."+strD.substring(tamD-7,tamD)
		}
		//fim #3

		strValor = strD + strE //Junta as duas strings
		
		//#4 Coloca o número em vermelho caso seja negativo{
		if (qqNum<0) 
			strValor="("+strValor+")";
		//fim #4

		//Atribui ao input novamente
		eval('document.forms[0].'+obj+'.value="'+strValor+'"')
	}
}

//-------------------//------------------------//

function adiciona_campo_email (Parent, Field){
	Parent.innerHTML += '<input type="text" name="'+ Field +'"  onChange="valida_campo(3,this);"  onBlur="formata(1,this);" size="25"/>\n';
}


/*	-------------------------------------------------
VALIDACAO RADIO
-------------------------------------------------*/
function validaRadio(radio)
{
	var obj, ok
	obj = eval(radio)
	ok = false
	for(i=0;i < eval(radio + '.length');i++)
	{
		if(obj[i].checked)
		{
			ok = true;
			break;
		}
	}
	if(!ok)
	{
		return false;
	}
	return ok;
}

/*	-------------------------------------------------
VALIDACAO DATA
-------------------------------------------------*/
function validaData(dateStr)
{
	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/; // requires 4 digit year
	var matchArray = dateStr.match(datePat); // is the format ok?
	if (matchArray == null)
	{
		alert("Preencha a data corretamente (dd/mm/aaaa)")
		return false;
	}
	month = matchArray[3]; // parse date into variables
	day = matchArray[1];
	year = matchArray[4];
	if (month < 1 || month > 12)
	{ // check month range
		alert("Preencha a data corretamente (dd/mm/aaaa)");
		return false;
	}
	if (day < 1 || day > 31)
	{
		alert("Preencha a data corretamente (dd/mm/aaaa)");
		return false;
	}
	if ((month==4 || month==6 || month==9 || month==11) && day==31)
	{
		alert(month + " não tem 31 dias!")
		return false;
	}
	if (month == 2)
	{ // check for february 29th
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day>29 || (day==29 && !isleap))
		{
			alert("Fevereiro de " + year + " não tem " + day + " dias!");
			return false;
		}
	}
		return true;
}

/*	-------------------------------------------------
VALIDACAO EMAIL
-------------------------------------------------*/
function isEmail(str)
{
	var supported = 0;
	if (window.RegExp)
	{
		var tempStr = "a";
		var tempReg = new RegExp(tempStr);
		if (tempReg.test(tempStr)) supported = 1;
	}
	if (!supported) 
	return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
	var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)|( )|(\\.@)");
	var r2 = new RegExp("^.[a-zA-Z0-9\\-\\.\\_]+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
	return (!r1.test(str) && r2.test(str));
}

/*	-------------------------------------------------
NULO
-------------------------------------------------*/
function checaNulo(campo,descr, flgAlert){
	if(eval(campo + ".value") == ""){
		if(flgAlert){
			alert("Por favor preencha o campo " + descr);
			eval(campo + ".focus()");
		}
		return false;
	}
	return true;
}

/*	-------------------------------------------------
NUMERO
-------------------------------------------------*/
function checaNumero(numero)
{
	if (numero.length == 0) return false;
	for (var n = 0; n < numero.length; n++)
		if (numero.substring(n, n+1) < "0" || numero.substring(n, n+1) > "9")
			return false;

	return true;
}

/*	-------------------------------------------------
VALIDACAO NOME COM SOBRENOME
-------------------------------------------------*/
function validaNome(nmForm)
{
	var obj, spacePos, strLastName;
	obj = eval(nmForm);

	spacePos = obj.value.indexOf(" ");
	strLastName = obj.value.substring(spacePos+1);

	if (spacePos == 0)
	{
		obj.value = strLastName;
		spacePos = obj.value.indexOf(" ");
		strLastName = obj.value.substring(spacePos+1);
	}

	if(spacePos == -1)
	{
		alert("Digite o seu nome completo.");
		return false;
	}
	else 
	{
		if (strLastName.length >= 2)
		{
			return true;
		}
		else
		{
			alert("Digite o seu sobrenome.")
			return false;
		}
	}
}

/*	-------------------------------------------------
VALIDACAO CPF
-------------------------------------------------*/
function isCpf(valor)
{
	if (valor.length==11)
	{
		var aux = 0;
		for (var i=0; i<9; i++)
		{
			aux = aux + parseInt(valor.substr(i,1)) * parseInt(i+1);
		} 

		var resto = aux%11
		if (resto==10) resto=0;
		if(resto==valor.substr(9,1))
		{
			var aux = 0;
			for (var i=1; i<10; i++)
			{
				aux = aux + parseInt(valor.substr(i,1)) * parseInt(i);
			} 

			var resto = aux%11
			if (resto==10) resto=0;
			if(resto==valor.substr(10,1))
			{
				return true;
			}
			else
			{
				return false;
			}

		}
		else
		{
			return false;
		}
	}
}

/*	-------------------------------------------------
VALIDACAO DO CAMPOS DO FORMULARIO
-------------------------------------------------*/
function valida_campo(e, tipo, campo){
	if(window.ActiveXObject){
		e = event;
		characterCode = e.keyCode; //character code is contained in IE's keyCode property
	}else{
		characterCode = e.which;
		if(characterCode == 8 || characterCode == 0){ // Trata DELETE, BACKSPACE, DEL e SETAS
			return true;
		}
	}
		
	
	switch(tipo)
	{
		case 0: //RETIRA ASPAS SIMPLES E DUPLAS - EVENTO: onKeyPress
		{
			if(characterCode == 39 || characterCode == 34)
				return false;
			break;
		}
		case 1: //CAMPO ACEITA SOMENTE NUMERO - EVENTO: onKeyPress
		{
			if(characterCode <= 45 || characterCode > 57 || characterCode == 46 || characterCode == 47 || characterCode == 42 || characterCode == 39 || characterCode == 34)
				return false;
			break;
		}
		case 2: //CAMPO ACEITA SOMENTE TEXTO - EVENTO: onKeyPress
		{
			if (characterCode > 47 && characterCode < 58 || characterCode == 39 || characterCode == 34)
				return false;
			break;
		}
		case 3: //CAMPO ACEITA SOMENTE EMAIL - EVENTO: onChange
		{
			if (campo.value!=''){
				if(!isEmail(campo.value)){
					alert('Digite o seu E-MAIL corretamente');
					campo.focus();
					return false;
				}
			}
			break;		
		}
		case 4: //CAMPO ACEITA SOMENTE DATA - EVENTO: onChange
		{
			if (campo.value!=''){
				if(!validaData(campo.value)){
					campo.value = '';
					campo.focus();
					return false;
				}
			}
			break;		
		}
		case 5: //CAMPO ACEITA SOMENTE CPF - EVENTO: onChange
		{
			if (campo.value!=''){
				if(!isCpf(campo.value)){
					alert('Digite o seu CPF corretamente');
					campo.focus();
					return false;
				}
			}
			break;
		}
		case 6: //CAMPO ACEITA SOMENTE NUMERO(MOEDA) - EVENTO: onKeyPress
		{
			if(characterCode <= 43 || characterCode == 45 || characterCode > 57 || characterCode == 47 || characterCode == 42 || characterCode == 39 || characterCodecharacterCode == 34)
				return false;
			break;
		}
	}
}
