	var globalCampo;
	
	function addLoadEvent(func) {
	  var oldonload = window.onload;
	  if (typeof window.onload != 'function') {
		window.onload = func;
	  } else {
		window.onload = function() {
		  if (oldonload) {
			oldonload();
		  }
		  func();
		}
	  }
	}

	
	//Função de atualização de campos de diálogo repetidores
	function muda(obj,num,quant) {
		var i,s;

		for(i=1;i<=quant;i++) {
			if (i<=num) {
				s = 'block' 
			}else {
				s = 'none'
			}
			//alert (i + s);
			document.getElementById (obj + i).style.display = s;
		}
	}


	//Função básica de filtro de entrada em campos Valor e Numérico
	function trata(obj,tipo,objAux) {
		var i, s = '', nvir = 0;

		//Valor
		if (tipo == 'V') {
			if (obj.value.length > 0) {
				var strValidChars = "0123456789";
				for (i = 0; i < obj.value.length; i++) {
					if ((obj.value.charAt(i) == ',' || obj.value.charAt(i) == '.') && nvir == 0) {
						s += ',';
						nvir = i;
					} else {
						if (strValidChars.indexOf(obj.value.charAt(i)) != -1){
							if (nvir == 0 || nvir > i - 3) {s += obj.value.charAt(i);}
						}
					}
				}
				obj.value = s
			}
		}

		//Numérico
		if (tipo == 'N') {
			if (obj.value.length > 0) {
				var strValidChars = "0123456789";
				for (i = 0; i < obj.value.length; i++) {
					if (strValidChars.indexOf(obj.value.charAt(i)) != -1){
						s += obj.value.charAt(i);
					}
				}
				obj.value = s
			}
		}

		//Segunda senha - compara 'on-the-fly' com a primeira
		if (tipo=='P' || tipo=='P2') {
			if (!objAux) {
				return true
			}

			if (objAux.value == '' && tipo=='P') {
				return true
			}

			if (tipo=='P2' && (obj.value.length==0 || objAux.value.length==0)) {
				alert ("Preencher os dois campos da senha!");
				obj.focus();
				return false;
			}

			if (obj.value.length == objAux.value.length) {
				if (obj.value != objAux.value) {
					alert ("As senhas digitadas não são iguais!");
					obj.value = '';
					objAux.value = '';
					objAux.focus();
					return false;
				}
			} else {
				if (tipo == 'P2') {
					alert ("As senhas digitadas não são iguais!");
					obj.value = '';
					objAux.value = '';
					objAux.focus();
					return false;
				}
			}


			return true;

		}
	}

	//Função específica para tratamento de campo data
	function trataData(obj,tipo) {
		var i, s = '';
		//Tipo = 0 é keyup
		//Tipo = 1 é blur


		if (obj.value.length > 0) {

			var strValidChars = "0123456789";
			for (i = 0; i < obj.value.length; i++) {
				if (strValidChars.indexOf(obj.value.charAt(i)) != -1){
					s += obj.value.charAt(i);
				}
			}
			if ((s.length) == 8) {
				s = s.substring(0,2) + "/" + s.substring(2,4) + "/" + s.substring(4,8) ;

				if (!isDate (s)) {
					alert ("Verifique a data!");
					s = obj.value;
					return false;
				}
			}
			obj.value = s
			if (tipo == 1 && s.length != 10) {
				alert ("Verifique a data!");
				obj.focus();
				return false;
			}
			return true;
		}
		return false;

	}


	//Função de tratamento de CEP, com chamada para autocompletar
	function trataCep (obj,ant,prox,logr,num,bairro,cidade,uf,frm) {
		var i, s
		var strValidChars = "0123456789";

		//Realiza a limpeza: Só números
		s = '';
		if (obj.value.length > 0) {
			for (i = 0; i < obj.value.length; i++) {
				if (strValidChars.indexOf(obj.value.charAt(i)) != -1){
					s = s + obj.value.charAt(i);
				}
			}
			obj.value = s
		}


		//Verifica a necessidade de mudar de campo ou realizar a busca

		if (ant == null) {
			if (obj.value.length == 5) {
				prox.focus();
			}
		} else {
			if (obj.value.length == 3 && ant.value.length==5) {
				logr.style.background = "silver";
				bairro.style.background = "silver";
				cidade.style.background = "silver";
				uf.style.background = "silver";

				logr.disabled = true;
				bairro.disabled = true;
				cidade.disabled = true;
				uf.disabled = true;

				document.getElementById('Posts').src='gen/fnCep.asp?cep=' + ant.value + obj.value + '&logr=' + logr.name + '&num=' + num.name + '&bairro=' + bairro.name + '&cidade=' + cidade.name + '&uf=' + uf.name + '&frm=' + frm.name + '&cor=white';
			}
		}
	}


	//Rotina de tratamento de valores numéricos, como inserção de casas decimais
	function formataValor (obj,tipo,inout) {
		var i,j,s1,s2, s='';
		//inout = 0: entrada
		//inout = 1: saída
		//tipo = 0: numérico
		//tipo = 1: valor

		//Rotinas de entrada
		if (inout == '0') {
			for (i=0; i<obj.value.length; i++) {
				if (obj.value.charAt(i) != '.') {
					s += obj.value.charAt(i);
				}
			}
			obj.value = s
		}

		//Rotinas da saída
		if (inout == '1') {
			if (tipo == 1) {
				//Ajuste da posição da vírgula
				if (obj.value == '') {
					obj.value = '0,00';
				}
				if (obj.value.indexOf(',') == 0) {
					obj.value = '0' + obj.value;
				}
				if (obj.value.indexOf(',') == obj.value.length - 2 && obj.value.indexOf(',') > 0) {
					obj.value += '0';
				}
				if (obj.value.indexOf(',') == obj.value.length - 1) {
					obj.value += '00';
				}
				if (obj.value.indexOf(',') < 0) {
					obj.value += ',00';
				}
			}

			//Neste momento, o valor já está com as casas decimais.
			//Ajuste agora os pontos separadores dos milhares.
			if (tipo == 1) {
				s1 = obj.value.substring(0,obj.value.indexOf(","));
				s2 = obj.value.substring(obj.value.indexOf(","),obj.value.length);
			} else {
				s1 = obj.value;
				s2 = '';
			}
			for (i=s1.length-1,j=1;i>=0;i--,j++) {
				s = s1.charAt(i) + s;
				if (j == 3 && i > 0) {
					j = 0;
					s = '.' + s;
				}
			}
			obj.value = s + s2;
		}
	}


/* This script and many more are available free online at
   The JavaScript Source!! http://javascript.internet.com */

	function trataEmail(obj) {

		globalCampo = obj;

		var emailPat=/^(.+)@(.+)$/
		var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
		var validChars="\[^\\s" + specialChars + "\]"
		var quotedUser="(\"[^\"]*\")"
		var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
		var atom=validChars + '+'
		var word="(" + atom + "|" + quotedUser + ")"
		var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
		var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")

		var emailStr = obj.value;

		if (emailStr == '') {return true;}

		var matchArray=emailStr.match(emailPat)
		if (matchArray==null) {
			alert("Digite um endereço de email válido! (1)")
			setTimeout("globalCampo.focus()",100); //Gambi FF
			return false;
		}

		var user=matchArray[1]
		var domain=matchArray[2]
		if (user.match(userPat)==null) {
			// user is not valid
			alert("Digite um endereço de email válido! (2)")
			setTimeout("globalCampo.focus()",100);
			return false;
		}

		var IPArray=domain.match(ipDomainPat)
		if (IPArray!=null) {
			  for (var i=1;i<=4;i++) {
				if (IPArray[i]>255) {
					alert("Digite um endereço de email válido! (3)")
					setTimeout("globalCampo.focus()",100);
					return false;
				}
			}
		return true;
		}

		var domainArray=domain.match(domainPat)
		if (domainArray==null) {
			alert("Digite um endereço de email válido! (4)")
			setTimeout("globalCampo.focus()",100);
			return false
		}

		var atomPat=new RegExp(atom,"g")
		var domArr=domain.match(atomPat)
		var len=domArr.length
		if (domArr[domArr.length-1].length<2 || 
			domArr[domArr.length-1].length>3) {
			alert("Digite um endereço de email válido! (5)")
			setTimeout("globalCampo.focus()",100);
			return false
		}

		if (len<2) {
			alert("Digite um endereço de email válido! (6)")
			setTimeout("globalCampo.focus()",100);
			return false
		}

		return true;
	}

	//Rotina de CHAMADA à inserção de extenso em Valores e Números
	function insereExtenso (num,obj,tipo) {
		var i, valor = '';
		//tipo = 0: numérico
		//tipo = 1: valor

		if (num.value != '' && num.value != '0,00' && num.value != '0,00') {

			//Remove os pontos separadores de milhar antes de realizar o extenso
			for (i=0; i<num.value.length; i++) {
				
				if (num.value.charAt(i) != '.') {
					valor += num.value.charAt(i);
				}
			}
			//obj.value = EXTENSO(num.value);
			obj.value = EXTENSO(valor,tipo);
		} else {
			obj.value = '';
		}
	}


	//Envia o foco para o próximo controle
	function proxControl(obj) {
		var index = -1, i = 0;

		for (i = 0; i < obj.form.length; i++) {
			 if (obj.name == obj.form[i].name) {
				index = i;
			 }
		}

		if (index > -1) {
			obj.form[(index+1)].focus();
		}
	}

	//Função para alteração dinâmica de conteúdo de um select
	function mudaSelect(origem,destino,arrayDin) {
		//TEMPORARIAMENTE DESABILITADO
		return false;

		var i, s;
		//a variável arrayDinamicoX[], onde X é o número passado em arrayDin
		//armazena os nomes dos selects que preencherão o campo passado

		//Monta o nome da variável
		s = "arrayDinamico" + arrayDin+"[" + origem.selectedIndex + "]";
		//Avalia a variável para descobrir o nome do array
		//que contém as pções que irão popular o select
		s = eval(s);

		//Avalia novamente para que s passe a armazenar o
		//array de opções que irão popular o select
		s = eval(s)

		//Agora, popula o select passado através da variável destino
		destino.options.length = 0;

		for (i=0;i < s.length;i++) {
			destino.options[i] = new Option(s[i],s[i]);
		}
	}


	//Rotina de montagem de um valor por extenso a partir de entrada numérica
	function EXTENSO(c,tipo)
		{
		if(c == "" || c < 0 || c >=10000000)
			{
			return(-1);
			}
		else
			{
			if(c == 0)
				{
				return(" zero ");
				}
			else
				{
				aUnid = new Array();
				aDezena = new Array();
				aCentena = new Array();
				aGrupo = new Array();
				aTexto = new Array();
				
				aUnid[1]  = "um ";
				aUnid[2]  = "dois ";
				aUnid[3]  = "tres ";
				aUnid[4]  = "quatro ";
				aUnid[5]  = "cinco ";
				aUnid[6]  = "seis ";
				aUnid[7]  = "sete ";
				aUnid[8]  = "oito ";
				aUnid[9]  = "nove ";
				aUnid[10] = "dez ";
				aUnid[11] = "onze ";
				aUnid[12] = "doze ";
				aUnid[13] = "treze ";
				aUnid[14] = "quatorze ";
				aUnid[15] = "quinze ";
				aUnid[16] = "dezesseis ";
				aUnid[17] = "dezesete ";
				aUnid[18] = "dezoito ";
				aUnid[19] = "dezenove ";

				aDezena[1] = "dez ";
				aDezena[2] = "vinte ";
				aDezena[3] = "trinta ";
				aDezena[4] = "quarenta ";
				aDezena[5] = "cinquenta ";
				aDezena[6] = "sessenta ";
				aDezena[7] = "setenta ";
				aDezena[8] = "oitenta ";
				aDezena[9] = "noventa ";

				aCentena[1] = "cento ";
				aCentena[2] = "duzentos ";
				aCentena[3] = "trezentos ";
				aCentena[4] = "quatrocentos ";
				aCentena[5] = "quinhentos ";
				aCentena[6] = "seiscentos ";
				aCentena[7] = "setecentos ";
				aCentena[8] = "oitocentos ";
				aCentena[9] = "novecentos ";

				if(c.indexOf(".") != -1)
					{
					aGrupo[4] = c.substring(c.indexOf(".")+1,c.length);
					aGrupo[4] = aGrupo[4].substring(0,2);
					ct = c.substring(0,c.indexOf("."));
					}
				else
					{
					if(c.indexOf(",") != -1)
						{
						aGrupo[4] = c.substring(c.indexOf(",")+1,c.length);
						aGrupo[4] = aGrupo[4].substring(0,2);
						ct = c.substring(0,c.indexOf(","));
						}
					else
						{
						aGrupo[4] = "00";
						ct = c;
						}
					tt = "";
					for(f=0;f<(10-ct.length);f++)
						{
						tt += "0";
						}
					tt += ct;
					}
				aGrupo[1] = tt.substring(1,4);
				aGrupo[2] = tt.substring(4,7);
				aGrupo[3] = tt.substring(7,10);
				aGrupo[4] = "0"+aGrupo[4];

				for(f=1;f<5;f++)
					{
					cParte = aGrupo[f];
					if(parseFloat(cParte) < 10)
						{
						nTamanho = 1;
						}
					else
						{
						if(parseFloat(cParte) < 100)
							{
							nTamanho = 2;
							}
						else
							{
							if(parseFloat(cParte) < 1000)
								{
								nTamanho = 3;
								}
							else
								{
								nTamanho = 0;
								}
							}
						}
					aTexto[f] = "";
					if(nTamanho == 3)
						{
						if(cParte.substring(1,3) != "00")
							{
							aTexto[f] += aCentena[cParte.substring(0,1)] + "e ";
							nTamanho = 2;
							}
						else
							{
							if(cParte.substring(0,1) == "1")
								{
								aTexto[f] += "cem ";
								}
							else
								{
								aTexto[f] += aCentena[cParte.substring(0,1)];
								}
							}
						}
					if(nTamanho == 2)
						{
						if(parseFloat(cParte.substring(1,3)) < 10)
							{
							aTexto[f] += aUnid[cParte.substring(2,3)];
							}
						else
							{
							if(parseFloat(cParte.substring(1,3)) < 20)
								{
								aTexto[f] += aUnid[cParte.substring(1,3)];
								}
							else
								{
								aTexto[f] += aDezena[cParte.substring(1,2)];
								if(cParte.substring(2,3) != "0")
									{
									aTexto[f] += "e ";
									nTamanho = 1;
									}
								}
							}
						}
					if(nTamanho == 1)
						{
						aTexto[f] += aUnid[cParte.substring(2,3)];
						}
					}
				if(parseFloat(aGrupo[1] + aGrupo[2] + aGrupo[3]) == 0 && parseFloat(aGrupo[4]) != 0)
					{
					cFinal = aTexto[4];
					if(parseFloat(aGrupo[4]) == 1)
						{
						cFinal +=  "centavo";
						}
					else
						{
						cFinal +=  "centavos";
						}
					}
				else
					{
					if(parseFloat(aGrupo[1]) != 0)
						{
						cFinal = aTexto[1];
						if(parseFloat(aGrupo[1]) > 1)
							{
							cFinal += "milhoes ";
							}
						else
							{
							cFinal += "milhao ";
							}
						if(parseFloat(aGrupo[2] + aGrupo[3]) == 0)
							{
							cFinal += "de ";
							}
						else
							{
							cFinal += "e ";
							}
						}
					else
						{
						cFinal = "";
						}
					if(parseFloat(aGrupo[2]) != 0)
						{
						cFinal += aTexto[2] + "mil ";
						if(parseFloat(aGrupo[3]) != 0)
							{
							cFinal += "e ";
							}
						}
					if(parseFloat(aGrupo[3]) != 0)
						{
						cFinal += aTexto[3];
						}

					//If adicionado para permitir extenso de campos
					//que sejam apenas numéricos
					if (tipo == 1) {
						if(parseFloat(aGrupo[1] + aGrupo[2] + aGrupo[3]) == 1)
							{
							cFinal += "real";
							}
						else
							{
							cFinal += "reais";
							}
						if(parseFloat(aGrupo[4]) != 0)
							{
							cFinal += " e "+aTexto[4];
							if(parseFloat(aGrupo[4])==1)
								{
								cFinal += "centavo";
								}
							else
								{
								cFinal += "centavos";
								}
							}
						}
					}
					return(cFinal);
				}
			}
		}
