/*******************************************************************
 *                                                                 *
 *   funcoesxmlbrasil.js  -  Funções Básicas em JavaScript 	       *
 *                           para uso Geral                        *
 *                  V1.5  -  Jun/2004                              *
 *                                                                 *
 *******************************************************************/


// Expressões regulares para validação.
var dominio_valido	= /^([\w\-_]{1,})\.([\w\-_\.]{1,})$/;
var email_valido	= /^([\w\.\-_]{1,})@([\w\-_]{1,})\.[^\.]([\w\.]{1,})$/;
var senha_valida	= /^(\w{3,6})$/;
var url_valida		= /^(\w{3,})$/;
var data_valida		= /^((0?[1-9]|[12]\d)\/(0?[1-9]|1[0-2])|30\/(0?[13-9]|1[0-2])|31\/(0?[13578]|1[02]))\/(19|20)?\d{2}$/;

var arVersion = navigator.appVersion.split("MSIE")
var version = parseFloat(arVersion[1])

function imagens_png() {
	if ((version >= 5.5) && (document.body.filters)) {
		for (var i=0; i<document.images.length; i++) {
			var img = document.images[i];
			var imgName = img.src.toUpperCase();
			if (imgName.substring(imgName.length-3, imgName.length) == "PNG") {
				var imgID = (img.id) ? "id='" + img.id + "' " : "";
				var imgClass = (img.className) ? "class='" + img.className + "' " : "";
				var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' ";
				var imgStyle = "display:inline-block;" + img.style.cssText;
				if (img.align == "left") imgStyle = "float:left;" + imgStyle;
				if (img.align == "right") imgStyle = "float:right;" + imgStyle;
				if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle;
				var strNewHTML = "<span " + imgID + imgClass + imgTitle
					+ " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
					+ "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
					+ "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>";
				img.outerHTML = strNewHTML;
				i = i-1;
			}
		}
	}
}

// Consultar CEP no site dos correios
// Data: 20/06/2004
// Autor: Luís Henrique T. S. Quinteiro
// Copyright: XMLBRASIL Tecnologia LTDA
function consultarCepCorreios() {
	var urlCorreiosCep = "http://www.correios.com.br/servicos/cep/default.cfm";
	window.open(urlCorreiosCep, 'consultarCepCorreios', 'toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes,menubar=yes,width=795,height=570');
}


// Marcar/Desmarcar todos os checkbox da tela, deve ser chamado no onClick do checkBoxSelecionaTudo
// Data: 20/06/2004
// Autor: Luís Henrique T. S. Quinteiro
// Copyright: XMLBRASIL Tecnologia LTDA
function marcarTodos(formulario) {
	if(formulario.checkBoxSelecionaTudo.checked) {
		for (var i=0; i < formulario.elements.length; i++) {
			var e = formulario.elements[i];
			if (e.type == 'checkbox') {
				if (e.name != 'checkBoxSelecionaTudo') {
					if (e.checked) {
						e.checked = false;
					}
					e.checked = !e.checked;
				}
			}
		}
	} else {
		for (var i=0; i < formulario.elements.length; i++) {
			var e = formulario.elements[i];
			if (e.type == 'checkbox') {
				if (e.name != 'checkBoxSelecionaTudo') {
					if (!e.checked) {
						e.checked = false;
					}
					e.checked = !e.checked;
				}
			}
		}
	}
}

// Desmarcar o checkBoxSelecionaTudo, deve ser chamado no onClick dos checks menos no checkBoxSelecionaTudo
// Data: 20/06/2004
// Autor: Luís Henrique T. S. Quinteiro
// Copyright: XMLBRASIL Tecnologia LTDA
function desmarcarTodos(formulario) {
	if (formulario.checkBoxSelecionaTudo.checked) {
		formulario.checkBoxSelecionaTudo.checked = false;
	}
}

// Validar campos obrigatorios somente input text e textArea
// Autor: Anderson dos Santos
// Data: 14/10/2003
function validaGeral(formulario,restricoes) {
	retorno = "";
	for (x=0; x < formulario.length; x++) {
		for (y=0; y < restricoes.length; y++) {
			if (formulario.elements[x].name == restricoes[y]) {
				if (formulario.elements[x].value == "") {
					retorno = "Campos obrigatórios não informados!";
					formulario.elements[x].focus();
					return retorno;
				}
			}
		}
	}
	return retorno;
}

//Retirar pontos de casas de milhares
// Data: 20/06/2004
// Autor: Luís Henrique T. S. Quinteiro
// Copyright: XMLBRASIL Tecnologia LTDA
function retiraFormatoMonetario(caixadetexto) {
	var texto = caixadetexto.value;
	var i = 0;
	while ((i = texto.indexOf('.')) != -1) {
		texto = texto.substring(0,i)+texto.substring(i+1);
	}
	caixadetexto.value = texto;
}

// Formatar casas de milhares nos campos, checar se há mais de uma vírgula e se há um excesso de casas de centavos
// Data: 20/06/2004
// Autor: Luís Henrique T. S. Quinteiro
// Copyright: XMLBRASIL Tecnologia LTDA
function formataValorMonetario(caixadetexto) {
	var texto = caixadetexto.value;
	var i = 0;
	var posvirgula = texto.indexOf(',');
	var posini = texto.length;
	if(texto.length > 0) {
		//testa a existência de várias vírgulas
		var cont = 0;
		for (i = 0; i < texto.length; i++) {
			if (texto.charAt(i) == ',') {
				cont++;
			}
			if (cont > 1) {
				window.alert("Excesso de vírgulas");
				caixadetexto.value = "";
				return;
			}
		}
		//testa o número de casas após a vírgula
		if (texto.length - posvirgula > 3 && posvirgula != -1) {
			window.alert("Muitos dígitos na casa dos centavos");
			caixadetexto.value = "";
			return;
		//configura o ponto a partir do qual terá início a colocação de zeros
		} else if (posvirgula != -1) {
			posini = posvirgula;
			//preenche com zeros após a vírgula, se não houver números suficientes
			var tamanhotexto = texto.length;
			for (i = posvirgula; i > tamanhotexto - 3; i--) {
				texto = texto + "0";
			}
		} else {
			texto = texto + ",00";
		}
		//coloca os pontos
		for (i = posini; i > 0; i--) {
			if ( (posini - i) % 3 == 0 && i != posini) {
				texto = texto.substring(0,i)+'.'+texto.substring(i);
			}
		}
		if (texto.length > caixadetexto.maxLength) {
			alert("Valor informado maior do que o permitido!");
			caixadetexto.value = "";
		} else caixadetexto.value = texto;
	}
}

/**
 *Mascara para campos
 *	"#" -> Numeros
 *	"A" -> Letras UpperCase
 *	"a" -> Letras LowerCase
 *	"Z" -> Letras
 *	"*" -> Qualquer Caracter
 *	"/", ".", "-", " ", ":" -> Caracteres Fixos
 * 
 * @parametro objeto Objeto
 * @parametro evt Evento
 * @parametro mask String
 * Ex.: onkeydown="Mascara(this, event,'##/##/####')"
 */
function Mascara(objeto, evt, mask) {
	var LetrasU = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
	var LetrasL = 'abcdefghijklmnopqrstuvwxyz';
	var Letras  = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
	var Numeros = '0123456789';
	var Fixos   = '().-:/ ';
	var Charset = " !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_/`abcdefghijklmnopqrstuvwxyz{|}~";
	var Charset2 = "0123456789"; //para o teclado numérico
	var value   = objeto.value;
	evt = (evt) ? evt : ((window.event) ? window.event : "");
	var ntecla = (evt.which) ? evt.which : evt.keyCode;
	if (evt) {
		var ntecla = (evt.which) ? evt.which : evt.keyCode;
		var tecla;
		if (ntecla > 95 && ntecla < 106) tecla = Charset2.substr(ntecla - 96, 1);
		else tecla = Charset.substr(ntecla - 32, 1);
		if (ntecla < 32) return true;
		var tamanho = value.length;
		if (tamanho >= mask.length) return false;
		var pos = mask.substr(tamanho,1);
		while (Fixos.indexOf(pos) != -1) {
			value += pos;
			tamanho = value.length;
			if (tamanho >= mask.length) return false;
			pos = mask.substr(tamanho,1);
		}
		switch (pos) {
			case '#' :
				if (Numeros.indexOf(tecla) == -1) return false;
			break;
			case 'A' :
				if (LetrasU.indexOf(tecla) == -1) return false;
			break;
			case 'a' :
				if (LetrasL.indexOf(tecla) == -1) return false;
			break;
			case 'Z' :
				if (Letras.indexOf(tecla) == -1) return false;
			break;
			case '*' :
				objeto.value = value; return true;
			break;
			default :
				return false;
			break;
		}
	}
	objeto.value = value;
	return true;
}

/**
 * Valida data
 * @param obj Objeto
 */
function validData(obj) {
	var data = obj.value;
	if (data.length == 0) return false;
	if (data.indexOf('/') == -1) {
		obj.value = ""
		return false;
	}
	if (data.length < 10) {
		obj.value = "";
		alert("Data inválida")
		return false;
	}
	var dd = Number(data.substring(0,2));
	var mm = Number(data.substring(3,5));
	var aa = Number(data.substring(6,10));
	if (dd > 31 || dd < 1) {
		obj.value = "";
		alert("Data inválida");
		return false;
	}
	if (mm > 12 || mm < 1) {
		obj.value = "";
		alert("Data inválida")
		return false;
	}
	if (mm == 2) {
		if (((aa % 4) == 0) && (dd == 29)) {
			if (((aa % 100) == 0) && ((aa % 400) != 0)) {
				obj.value = "";
				alert("Data inválida")
				return false;
			}
		} else if(dd > 28) {
			obj.value = ""
			alert("Data inválida")
			return false;
		}
	}
	if (mm == 1 || mm == 3 || mm == 5 || mm == 7 || mm == 8 || mm == 10 || mm == 12) {
		if (dd > 31) {
			obj.value = ""
			alert("Data inválida")
			return false;
		}
	}
	if (mm == 4 || mm == 6 || mm == 9 || mm == 11) {
		if (dd > 30) {
			obj.value = ""
			alert("Data inválida")
			return false;
		}
	}
	// verificar se não possui caracteres diferentes que números ou "/" na data
	var caracteresPossiveis = "0123456789/";
	for (var n = 0; n < data.length; n++) {
		var achou = false;
		for (var m = 0; m < caracteresPossiveis.length; m++) {
			if (data.charAt(n) == caracteresPossiveis.charAt(m)) {
				achou  = true;
				break;
			}
		}
		if (!achou) {
			obj.value = "";
			alert("Data inválida")
			return false;
		}
	}
	return true;
}

/**
 * Exclui pontos [.] do valor de um campo
 * @parametro campoTxt Objeto
 */
function excluirPontuacaoCampo(campoTxt) {
	var texto  = campoTxt.value;
	var re     = /[\.]/g;
	texto = texto.replace(re, '');
	campoTxt.value = texto;
}

/**
 * Formata campo inserindo pontos separando cada milhar
 * @parametro campoTxt Objeto
 */
function formataCampoNumerico(campoTxt) {
	var texto  = campoTxt.value;
	var posini = texto.length;
	//insere pontos
	for (i = posini; i > 0; i--) {
		if ( ((posini - i) % 3) == 0 && i != posini ) {
			texto = texto.substring(0,i)+'.'+texto.substring(i);
		}
	}
	//substitui o valor formatado no campo
	campoTxt.value = texto;
}

/**
 * Aceita somente numeros
 * Criada para permitir sair do campo com tabulação
 * pois a função anterior não reconhecia a tecla.
 * @parametro e [evento]
 */
function validaCampoNum(e) {
	var Digit   = null;
	var isDigit = null;
	try {
		Digit = e.which;
	} catch(er) {
		//Internet Explorer
		Digit = e.keyCode;
	}
	//se a tecla precionada for TAB
	if (Digit == 9) return true;
	isDigit = ((Digit >= 48 && Digit <= 57) || (Digit == 0 || Digit == 8));
	return isDigit; 
}

//Aceita somente numeros
// Data: 20/06/2004
// Autor: Luís Henrique T. S. Quinteiro
// Copyright: XMLBRASIL Tecnologia LTDA
function validarCampoNumerico(evnt) {
	var Digit = eval(((QualNavegador() == "NE")?"evnt.which":"event.keyCode"))	
	//((QualNavegador() == "NE")?"evnt.which":"event.keyCode"))	
	var isDigit; 
	var ss = ((QualNavegador() == "NE")?evnt:event);	
    if (ss.ctrlKey) return Digit; //GLT: senão não dava nem CTRL+F na página!!!
	isDigit = ((Digit >= 48 && Digit <= 57) || (Digit == 0 || Digit == 8));
	return isDigit; 
}

//Aceita numeros e virgula (,)
// Data: 20/06/2004
// Autor: Luís Henrique T. S. Quinteiro
// Copyright: XMLBRASIL Tecnologia LTDA
function validarCampoMoeda(evnt) { 
	//alert(evnt);
	var Digit = eval(((QualNavegador() == "NE")?"evnt.which":"event.keyCode"))	
	var isDigit; 
	isDigit = ((Digit >= 48 && Digit <= 57) || (Digit == 0 || Digit == 8 || Digit == 44));
	return isDigit;  
} 

//Aceita somente letras
// Data: 20/06/2004
// Autor: Luís Henrique T. S. Quinteiro
// Copyright: XMLBRASIL Tecnologia LTDA
function validarCampoLetra(evnt) { 
	var Digit = eval(((QualNavegador() == "NE")?"evnt.which":"event.keyCode"));	
	var isDigit;
	isDigit = !(Digit >= 48 && Digit <= 57);
	return isDigit; 
}

//Verifica se o campo tem mais de uma virgula
// Data: 20/06/2004
// Autor: Luís Henrique T. S. Quinteiro
// Copyright: XMLBRASIL Tecnologia LTDA
function validarVirgula(vlr) {
	var cont = 0;	
	var str = vlr.value;
	for (i=0; i < str.length; i++) {
		if (str.charAt(i, i) == ",")  {
			cont++;
			if (cont > 1) {
				alert("Existe muitas vírgulas no campo!");
				vlr.value = "";
				return false;
			}
		}
	}
}

// Verificar qual navegador
// Data: 20/06/2004
// Autor: Luís Henrique T. S. Quinteiro
// Copyright: XMLBRASIL Tecnologia LTDA
function QualNavegador() {
	var browser = navigator.appName;
	if ( browser == "Microsoft Internet Explorer" ) {
		return "IE";
	} else if ( browser == "Opera" ) {
		return "OP";
	} else {
		return "NE";
	}
}

// Verifica se o numero do CPF e valido
// Data: 20/06/2004
// Autor: Luís Henrique T. S. Quinteiro
// Copyright: XMLBRASIL Tecnologia LTDA
function validar_cpf(strCPF) {
	//Verifica se existe conteúdo
	if (strCPF.value.length == 0) return true;
	//Inclui zeros a esquerda
	var conteudoCpf = "";
 	if (strCPF.value.length != 11) {
 		cont = 11 - strCPF.value.length;
 		for (var i = 0; i < cont; i++) {
 			conteudoCpf = conteudoCpf + "0";
 		}
 		conteudoCpf = conteudoCpf + strCPF.value;
 		strCPF.value = conteudoCpf;
 	}
	//Verifica se os numeros nao sao todos iguais
	if (strCPF.value.length != 11 || strCPF.value == "00000000000" || strCPF.value == "11111111111" ||
		strCPF.value == "22222222222" || strCPF.value == "33333333333" || strCPF.value == "44444444444" ||
		strCPF.value == "55555555555" || strCPF.value == "66666666666" || strCPF.value == "77777777777" ||
		strCPF.value == "88888888888" || strCPF.value == "99999999999")
	{
		return false;
	}
	x = 0;
	soma = 0;
	dig1 = 0;
	dig2 = 0;
	texto = "";
	strCPF1 = "";
	len = strCPF.value.length;
	x = len -1;
	for(var i=0; i <= len - 3; i++) {
		y = strCPF.value.substring(i,i+1);
		soma = soma + ( y * x);
		x = x - 1;
		texto = texto + y;
	}
	dig1 = 11 - (soma % 11);
	if (dig1 == 10) dig1=0;
	if (dig1 == 11) dig1=0;
	strCPF1 = strCPF.value.substring(0,len - 2) + dig1 ;
	x = 11; soma=0;
	for (var i=0; i <= len - 2; i++) {
		soma = soma + (strCPF1.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) == strCPF.value.substring(len,len-2)) return true;
	return false;
}

// Formata data de dd/mm/aaaa para ddmmaaaa
// Data: 20/06/2004
// Autor: Luís Henrique T. S. Quinteiro
// Copyright: XMLBRASIL Tecnologia LTDA
function formatarData(data) {
	//(formato -> DD/MM/AAAA)
	while (data.value.indexOf('/') > -1) data.value = data.value.replace('/','');
	data.maxLength = 8;
}

// Formata data de mm/aaaa para mmaaaa
function formatarDataMesAno(data) {
	//(formato -> MM/AAAA)
	while(data.value.indexOf('/') > -1) data.value = data.value.replace('/','');
	data.maxLength = 6;
	data.select();
}

// Verifica se a data e valida e Formata data de ddmmaaaa para dd/mm/aaaa
// Data: 20/06/2004
// Autor: Luís Henrique T. S. Quinteiro
// Copyright: XMLBRASIL Tecnologia LTDA
function validarData(data, obj) {
	data = data.value;
	//(formato -> DD/MM/AAAA)
	if (data.length == 0) return false;
	dd = data.substring(0, 2);
	mm = data.substring(2, 4);
	aa = data.substring(4, 8);
	obj.maxLength = 12;
	data = obj.value = dd + "/" + mm + "/" + aa;
	if (data.indexOf('/', 0) == -1) {
		obj.value = ""		
		return false;
	}
	if (data.length < 10) {
		obj.value = "";
		alert("Data inválida")
		return false;
	}
	var dd = Number(data.substring(0,2));
	var mm = Number(data.substring(3,5));
	var aa = Number(data.substring(6,10));
	if (dd > 31 || dd < 1) {
		obj.value = "";
		alert("Data inválida");
		return false;
	}
	if (mm > 12 || mm < 1) {
		obj.value = "";
		alert("Data inválida")
		return false;
	}
	if (mm == 2) {
		if (((aa % 4) == 0) && (dd == 29)) {
			if (((aa % 100) == 0) && ((aa % 400) != 0)) {
				obj.value = "";
				alert("Data inválida")
				return false;
			}
		} else if(dd > 28) {
			obj.value = ""
			alert("Data inválida")
			return false;
		}
	}
	if (mm == 1 || mm == 3 || mm == 5 || mm == 7 || mm == 8 || mm == 10 || mm == 12) {
		if (dd > 31) {
			obj.value = ""
			alert("Data inválida")
			return false;
		}
	}
	if (mm == 4 || mm == 6 || mm == 9 || mm == 11) {
		if (dd > 30) {
			obj.value = ""
			alert("Data inválida")
			return false;
		}
	}
	// verificar se não possui caracteres diferentes que números ou "/" na data
	var caracteresPossiveis = "0123456789/";
	for (var n = 0; n < data.length; n++) {
		var achou = false;
		for (var m = 0; m < caracteresPossiveis.length; m++) {
			if (data.charAt(n) == caracteresPossiveis.charAt(m)) {
				achou  = true;
				break;
			}
		}
		if (!achou) {
			obj.value = "";
			alert("Data inválida")
			return false;
		}
	}
	return true;
}

// Verifica se a data e valida e Formata data de mmaaaa para mm/aaaa
function validarDataMesAno(data, obj) {
	data = data.value;
	//(formato -> MM/AAAA)
	if (data.length == 0) return false;
	mm = data.substr(0, 2);
	aa = data.substr(2, 4);
	obj.maxLength = 7;
	data = obj.value = mm + "/" + aa;
	if (data.indexOf('/', 0) == -1) {
		obj.value = ""		
		return false;
	}
	if (data.length < 7) {
		obj.value = "";
		alert("Data inválida")
		return false;
	}
	var mm = Number(data.substr(0,2));
	var aa = Number(data.substr(3,4));
	if (mm > 12 || mm < 1) {
		obj.value = "";
		alert("Data inválida")
		return false;
	}
	if (aa < 1900 || aa > 2007) {
		obj.value = "";
		alert("Data inválida")
		return false;
	}	
	// verificar se não possui caracteres diferentes que números ou "/" na data
	var caracteresPossiveis = "0123456789/";
	for (var n = 0; n < data.length; n++) {
		var achou = false;
		for (var m = 0; m < caracteresPossiveis.length; m++) {
			if (data.charAt(n) == caracteresPossiveis.charAt(m)) {
				achou  = true;
				break;
			}
		}
		if (!achou) {
			obj.value = "";
			alert("Data inválida")
			return false;
		}
	}
	return true;
}

// Valida se a data strDataFinal e menor que a data strDataInicial
// Data: 20/06/2004
// Autor: Luís Henrique T. S. Quinteiro
// Copyright: XMLBRASIL Tecnologia LTDA
function validarPeriodo(dtInicio, dtFinal) {
	var strDataInicio = dtInicio.value;
	var strDataFinal = dtFinal.value;
	//Formato -> DD/MM/AAAA	
	if (strDataInicio.length < 10) {
		dtInicio.value = "";
		return false;
	}
	if (strDataFinal.length < 10) {
		dtFinal.value = "";	
		return false;
	}
	var diaInicio = strDataInicio.substring(0,2);
	var mesInicio = strDataInicio.substring(3,5);
	var anoInicio = strDataInicio.substring(6);
	var diaFinal = strDataFinal.substring(0,2);
	var mesFinal = strDataFinal.substring(3,5);
	var anoFinal = strDataFinal.substring(6);
	var dataInicio = Number(anoInicio + "" + mesInicio + "" + diaInicio);
	var dataFinal = Number(anoFinal + "" + mesFinal + "" + diaFinal);
	if (dataFinal < dataInicio) {
		alert("Período inicial não pode ser maior que período final!");	
		dtFinal.value = "";
		return false;
	} else return true;
}

// Data: 20/06/2004
// Autor: Luís Henrique T. S. Quinteiro
// Copyright: XMLBRASIL Tecnologia LTDA
function validarPeriodoComMensagemEspecifica(dtInicio, dtFinal, mensagem, limparCampo) {
	var strDataInicio = dtInicio.value;
	var strDataFinal = dtFinal.value;
	//Formato -> DD/MM/AAAA	
	if (strDataInicio.length < 10) {
		dtInicio.value = "";
		return false;
	}
	if (strDataFinal.length < 10) {
		dtFinal.value = "";	
		return false;
	}
	var diaInicio = strDataInicio.substring(0,2);
	var mesInicio = strDataInicio.substring(3,5);
	var anoInicio = strDataInicio.substring(6);
	var diaFinal = strDataFinal.substring(0,2);
	var mesFinal = strDataFinal.substring(3,5);
	var anoFinal = strDataFinal.substring(6);
	var dataInicio = Number(anoInicio + "" + mesInicio + "" + diaInicio);
	var dataFinal = Number(anoFinal + "" + mesFinal + "" + diaFinal);
	if (dataFinal < dataInicio) {
		
		if (limparCampo) dtFinal.value = "";
		return false;
	} else return true;
}

// Verifica se a data digitada strData e maior ou igual a data atual
// Data: 20/06/2004
// Autor: Luís Henrique T. S. Quinteiro
// Copyright: XMLBRASIL Tecnologia LTDA
function validarDataFutura(strData, strDataAtual) {
	strData = strData.value;
	strDataAtual = strDataAtual.value;
	//Formato -> DD/MM/AAAA
	if (strData.length < 10) return false;
	if (strDataAtual.length < 10) return false;
	var diaData = strData.substring(0,2);
	var mesData = strData.substring(3,5);
	var anoData = strData.substring(6);
	var diaAtual = strDataAtual.substring(0,2);
	var mesAtual = strDataAtual.substring(3,5);
	var anoAtual = strDataAtual.substring(6);
	var dataData = Number(anoData + "" + mesData + "" + diaData);
	var dataAtual = Number(anoAtual + "" + mesAtual + "" + diaAtual);
	if (dataData >= dataAtual) return false;
	else return true;
}

// Valida se a data digitada strData e menor ou igual a data atual
// Data: 20/06/2004
// Autor: Luís Henrique T. S. Quinteiro
// Copyright: XMLBRASIL Tecnologia LTDA
function validarDataPassada(strData, strDataAtual) {
	strData = strData.value;
	strDataAtual = strDataAtual.value;
	//Formato -> DD/MM/AAAA
	if (strData.length < 10) return false;
	if (strDataAtual.length < 10) return false;
	var diaData = strData.substring(0,2);
	var mesData = strData.substring(3,5);
	var anoData = strData.substring(6);
	var diaAtual = strDataAtual.substring(0,2);
	var mesAtual = strDataAtual.substring(3,5);
	var anoAtual = strDataAtual.substring(6);
	var dataData = Number(anoData + "" + mesData + "" + diaData);
	var dataAtual = Number(anoAtual + "" + mesAtual + "" + diaAtual);
	if (dataData <= dataAtual) return false;
	else return true;
}

// Validar e-mail
// Data: 20/06/2004
// Autor: Luís Henrique T. S. Quinteiro
// Copyright: XMLBRASIL Tecnologia LTDA
function validaEmail(email) { 
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; 
	if (!filter.test(email)) { 
	  //alert('Endereço de e-mail inválido'); 
	  return false; 
	} 
	return true; 
}

// Validar CNPJ
// Data: 20/06/2004
// Autor: Luís Henrique T. S. Quinteiro
// Copyright: XMLBRASIL Tecnologia LTDA
function validar_cnpj(StrCGC) {
	//Verifica se existe conteúdo
	if (StrCGC.value.length == 0) return true;
	//Inclui zeros a esquerda
	var conteudoCnpj = "";
 	if (StrCGC.value.length != 14) {
 		cont = 14 - StrCGC.value.length;
 		for (var i = 0; i < cont; i++) conteudoCnpj = conteudoCnpj + "0";
 		conteudoCnpj = conteudoCnpj + StrCGC.value;
 		StrCGC.value = conteudoCnpj;
 	}
	var varFirstChr = StrCGC.value.charAt(0);
	var vlMult,vlControle,s1, s2 = "";
	var i,j,vlDgito,vlSoma = 0;
	if (StrCGC.value.length != 14 || StrCGC.value == "00000000000000" || StrCGC.value == "11111111111111" ||
		StrCGC.value== "22222222222222" || StrCGC.value == "33333333333333" || StrCGC.value == "44444444444444" ||
		StrCGC.value== "55555555555555" || StrCGC.value == "66666666666666" || StrCGC.value == "77777777777777" ||
		StrCGC.value== "88888888888888" || StrCGC.value == "99999999999999")
	{
		return false;
	}
	for ( var i=0; i<=13; i++ ) {
		var c = StrCGC.value.charAt(i);
		if ( ! (c>="0")&&(c<="9") ) return false;
		if ( c!=varFirstChr ) vaCharCGC = true;
	}
	if ( ! vaCharCGC ) return false ;
	s1 = StrCGC.value.substring(0,12);
	s2 = StrCGC.value.substring(12,15);
	vlMult = "543298765432";
	vlControle = "";
	for ( j=1; j<3; j++ ) {
		vlSoma = 0;
		for ( i=0; i<12; i++ ) vlSoma += eval( s1.charAt(i) )* eval( vlMult.charAt(i) );
		if ( j == 2 ) vlSoma += (2 * vlDgito);
		vlDgito = ((vlSoma*10) % 11);
		if ( vlDgito == 10 ) vlDgito = 0;
		vlControle = vlControle + vlDgito;
		vlMult = "654329876543";
	}
	if ( vlControle != s2 ) return false;
	else return true;
}

// Centraliza e altera o tamanho do pop up
// Data: 20/06/2004
// Autor: Luís Henrique T. S. Quinteiro
// Copyright: XMLBRASIL Tecnologia LTDA
function centralizaPopup(x, y) {
	<!--
	lenx = x; leny = y;
	x = (screen.width/2) - lenx/2;
	y = (screen.height/2) - leny/2;
	self.resizeTo(lenx,leny);
	self.moveTo(x,y);
	//-->
}

// Data: 20/06/2004
// Autor: Luís Henrique T. S. Quinteiro
// Copyright: XMLBRASIL Tecnologia LTDA
String.prototype.trim = trimString;	
function trimString (str) {
	str = this != window? this : str;
	return str.replace(/^\s+/g, '').replace(/\s+$/g, '');
}

// Formata hora de hh:mm para hhmm
// Data: 20/06/2004
// Autor: Luís Henrique T. S. Quinteiro
// Copyright: XMLBRASIL Tecnologia LTDA
function formatarHora(hora) {
	//(formato -> HH:MM)
	hh = hora.value.substring(0,2);
	mm = hora.value.substring(3,5);
	hora.value = hh + "" + mm;
	hora.maxLength = 4;
}

// Verifica se a hora e valida e Formata hora de hhmm para hh:mm
// Data: 20/06/2004
// Autor: Luís Henrique T. S. Quinteiro
// Copyright: XMLBRASIL Tecnologia LTDA
function validarHora(hora, obj) {
	hora = hora.value;
	//(formato -> HH:MM:SS)
	if (hora.length == 0) return false;
	hh = hora.substring(0, 2);
	mm = hora.substring(2, 4);
	obj.maxLength = 5;
	hora = obj.value = hh + ":" + mm;
	if (hora.indexOf(':', 0) == -1) {
		obj.value = ""		
		return false;
	}
	if (hora.length < 5) {
		obj.value = "";
		alert("Tempo inválido")
		return false;
	}
	var hh = Number(hora.substring(0,2));
	var mm = Number(hora.substring(3,5));
	if (hh > 23 || hh < 0 ) {
		obj.value = "";
		alert("Tempo inválido");
		return false;
	}
	if (mm > 59 || mm < 0) {
		obj.value = "";
		alert("Tempo inválido")
		return false;
	}
	return true;
}

// Formata hora de hh:mm para hhmm
// Data: 20/06/2004
// Autor: Luís Henrique T. S. Quinteiro
// Copyright: XMLBRASIL Tecnologia LTDA
function formatarTempo(hora) {
	//(formato -> HH:MM:SS)
	hh = hora.value.substring(0,2);
	mm = hora.value.substring(3,5);
	ss = hora.value.substring(6);
	hora.value = hh + "" + mm + "" + ss;
	hora.maxLength = 6;
}

// Verifica se a hora e valida e Formata hora de hhmm para hh:mm
// Data: 20/06/2004
// Autor: Luís Henrique T. S. Quinteiro
// Copyright: XMLBRASIL Tecnologia LTDA
function validarTempo(hora, obj) {
	hora = hora.value;
	//(formato -> HH:MM:SS)
	if (hora.length == 0) return false;
	hh = hora.substring(0, 2);
	mm = hora.substring(2, 4);
	ss = hora.substring(4);
	obj.maxLength = 8;
	hora = obj.value = hh + ":" + mm + ":" + ss;
	if (hora.indexOf(':', 0) == -1) {
		obj.value = ""		
		return false;
	}
	if (hora.length < 8) {
		obj.value = "";
		alert("Tempo inválido")
		return false;
	}
	var hh = Number(hora.substring(0,2));
	var mm = Number(hora.substring(3,5));
	var ss = Number(hora.substring(6));
	if (hh > 23 || hh < 0 ) {
		obj.value = "";
		alert("Tempo inválido");
		return false;
	}
	if (mm > 59 || mm < 0) {
		obj.value = "";
		alert("Tempo inválido")
		return false;
	}
	if (ss > 59 || ss < 0) {
		obj.value = "";
		alert("Tempo inválido")
		return false;
	}
	return true;
}

// Validar campos obrigatorios somente input text e textArea
// Data: 20/06/2004
// Autor: Luís Henrique T. S. Quinteiro
// Copyright: XMLBRASIL Tecnologia LTDA
function validaGeralSyspub(formulario,restricoes, campo) {
	retorno = "";
	for (x=0; x < formulario.length; x++) {
		for (y=0; y < restricoes.length; y++) {
			if (formulario.elements[x].name == restricoes[y]) {
				if (formulario.elements[x].value == "") {
					retorno = campo[y]+" é um campo obrigatório!";
					formulario.elements[x].focus();
					return retorno;
				}
			}
		}
	}
	return retorno;
}

// Verifica se a hora1 no formato HH:MM:SS é maior que a hora2 HH:MM:SS
//Retorno true se a hora é diferente ou false se a hora é igual ou hora2 inferior a hora1
// Data: 20/06/2004
// Autor: Luís Henrique T. S. Quinteiro
// Copyright: XMLBRASIL Tecnologia LTDA
function verificaHoras(hora1, hora2) {
	//(formato -> HH:MM:SS)
	hh1 = hora1.substring(1, 3);
	mm1 = hora1.substring(4, 6);
	ss1 = hora1.substring(7,9);
	hh2 = hora2.substring(1, 3);
	mm2 = hora2.substring(4, 6);
	ss2 = hora2.substring(7,9);
	if (hh2 < hh1) {
		alert ("Intervalo de Horas inválido!");
		return false;
	} else{
		if (hh2 > hh1) return true;
		else {
			if (hh2 == hh1) {
				if (mm2 > mm1) return true;
				else {
					if (mm2 < mm1) {
						alert ("Intervalo de Horas inválido!");
						return false;					
					} else {
						if (mm2 == mm1) {
							if (ss2 > ss1) return true;
							else {
								if (ss2 < ss1) {
									alert ("Intervalo de Horas inválido!");
									return false;								
								} else {
									if (ss2 == ss1) {
										alert ("Intervalo de Horas inválido!");
										return false;																		
									}
								}
							}
						}
					}
				}
			}
		}
	}
}

// Verifica se a hora1 no formato HH:MM é maior que a hora2 HH:MM
//Retorno true se a hora é diferente ou false se a hora é igual ou hora2 inferior a hora1
// Data: 20/06/2004
// Autor: Luís Henrique T. S. Quinteiro
// Copyright: XMLBRASIL Tecnologia LTDA
function verificaHorasMinutos(hora1, hora2) {
	//(formato -> HH:MM)
	hh1 = hora1.substring(0, 2);
	mm1 = hora1.substring(3, 5);
	hh2 = hora2.substring(0, 2);
	mm2 = hora2.substring(3, 5);
	if (hh2 < hh1) {
		alert ("Intervalo de Horas inválido!");
		return false;
	} else {
		if (hh2 > hh1) {		
			return true;
		} else {
			if (hh2 == hh1) {
				if (mm2 > mm1) return true;
				else {
					if (mm2 < mm1) {
						alert ("Intervalo de Horas inválido!");
						return false;					
					}
				}
			}
		}
	}
}

// Tira espaços em brancos excessivos entre as palavras
// Data: 20/06/2004
// Autor: Luís Henrique T. S. Quinteiro
// Copyright: XMLBRASIL Tecnologia LTDA
function tira_espacos(field) {
	var DataField = field;
	var DataValue = "";
	var DataTemp = "";
	var i;
	var anterior = " ";
	while (''+DataField.value.charAt(DataField.value.length-1)==' ') DataField.value=DataField.value.substring(0,DataField.value.length-1);
	DataValue = DataField.value;
	for (i = 0; i < DataValue.length; i++) {
		if (!(anterior == " " && DataValue.substr(i,1) == " ")) DataTemp += DataValue.substr(i,1);
		anterior = DataValue.substr(i,1);
	}
	DataField.value = DataTemp;
}

// Avisa se a string indicada possuí abreviação. Isso é usado principalmente em verificação de nome de pessoa física 
// Data: 20/06/2004
// Autor: Luís Henrique T. S. Quinteiro
// Copyright: XMLBRASIL Tecnologia LTDA
function verificar_abreviacao(field) {
	var msg = "Verifique se o campo não possui abreviação";
	var msgNum = "Verifique se o campo não possui números";
	var nomePess = field.value;
	var regExp = new RegExp("\\s[^aeiou]\\s","gi");
	var regExpNum = new RegExp("[0-9]","gi");
	var regExpNumEspaco = new RegExp("\\s[0-9]\\s","gi");
	while (nomePess.indexOf('.') > -1) nomePess = nomePess.replace(".","");
	field.value = nomePess;
	/*procurando numeros dentro de uma palavra*/
	if (nomePess.search(regExpNum) != -1) window.alert(msgNum);
	/*Verificando se o nome possuí mais de 3 caracteres*/
	else if (nomePess.length <= 5 && nomePess.length > 0) window.alert(msg);
	/*procurando consoantes isoladas dentro de uma palavra*/
	else if (nomePess.search(regExp) != -1) window.alert(msg);
	/*procurando se a palavra possuí uma consoanto sozinha no final da palavra*/
	else if ( nomePess.charAt(nomePess.length -1) !='a' && nomePess.charAt(nomePess.length -1) !='e' && nomePess.charAt(nomePess.length - 1 ) !='i' &&nomePess.charAt(nomePess.length - 1) !='o' && nomePess.charAt(nomePess.length - 1) !='u' && nomePess.charAt(nomePess.length - 2) == ' ') window.alert(msg);
	/*procurando se a palavra possuí uma consoanto sozinha no começa da palavra*/
	else if ( nomePess.charAt(0) !='a' && nomePess.charAt(0) !='e' && nomePess.charAt(0) !='i' &&nomePess.charAt(0) !='o' && nomePess.charAt(0) !='u' && nomePess.charAt(1) == ' ') window.alert(msg);
}

// Tira pontos das palavras
// Data: 20/06/2004
// Autor: Luís Henrique T. S. Quinteiro
// Copyright: XMLBRASIL Tecnologia LTDA
function retirar_ponto(field) {
	var nomePess = field.value;
	while (nomePess.indexOf('.') > -1) nomePess = nomePess.replace(".","");
	field.value = nomePess;
}

// Valida se o ano final é maior que o ano inicial
// Data: 20/06/2004
// Autor: Luís Henrique T. S. Quinteiro
// Copyright: XMLBRASIL Tecnologia LTDA
function validarPeriodoAno(anoInicio, anoFinal) {
	if (anoFinal < anoInicio) {
		alert("Ano Final não pode ser maior que ano inicial!");	
		return false;
	} else return true;
}

// Valida se o mês final é maior que o mês inicial
// Data: 20/06/2004
// Autor: Luís Henrique T. S. Quinteiro
// Copyright: XMLBRASIL Tecnologia LTDA
function validarPeriodoMes(mesInicio, mesFinal) {
	if (mesFinal < mesInicio) {
		alert("Mês Final não pode ser maior que mês inicial!");	
		return false;
	} else return true;
}

// Valida campo com máscara
// Data: 02/04/2005
// Autor: João Cândido de Souza Neto
// Copyright: XMLBRASIL Tecnologia LTDA
function ValidarMascara(evnt,Objeto, Mascara) {
	var Digit = eval(((QualNavegador() == "NE")?"evnt.which":"event.keyCode"))	
	var isDigit
	var posicao=Objeto.value.length;
	if (Mascara.substr(0,1)=="@") {
	    tipo_mascara=Mascara.substr(1,1);
	    Mascara="";
	    for (i=0;i<=Objeto.value.length;i++) Mascara+=tipo_mascara;
	}
	isDigit=true;
	if (Mascara.substr(posicao,1)=="9") isDigit = ((Digit >= 48 && Digit <= 57) || (Digit == 0 || Digit == 8));
	if (Mascara.substr(posicao,1)=="A") isDigit = ((Digit >= 65 && Digit <= 90) || (Digit == 0 || Digit == 8));
	if (Mascara.substr(posicao,1)=="a") isDigit = ((Digit >= 97 && Digit <= 122) || (Digit == 0 || Digit == 8));
	if (Mascara.substr(posicao,1)=="!") isDigit = ((Digit >= 48 && Digit <= 57) || (Digit >= 65 && Digit <= 90) || (Digit >= 97 && Digit <= 122) || (Digit == 0 || Digit == 8));
	return isDigit; 
}

// Coloca a máscara no campo
// Data: 02/04/2005
// Autor: João Cândido de Souza Neto
// Copyright: XMLBRASIL Tecnologia LTDA
function PoeMascara(evnt,Objeto, Mascara) {
	var Digit = eval(((QualNavegador() == "NE")?"evnt.which":"event.keyCode"))
	var posicao=Objeto.value.length;
	if (Mascara.substr(0,1)=="@") {
	    tipo_mascara=Mascara.substr(1,1);
	    Mascara="";
	    for (i=0;i<=Objeto.value.length;i++) Mascara+=tipo_mascara;
	}
	if (Digit==8 || Digit==37) {
	    if ((Mascara.substr((posicao),1)!="9" && Mascara.substr((posicao),1)!="A" && Mascara.substr((posicao),1)!="a" && Mascara.substr((posicao),1)!="!") || Digit==37) {
			if (Mascara.substr((posicao-1),1)!="9" && Mascara.substr((posicao-1),1)!="A" && Mascara.substr((posicao-1),1)!="a" && Mascara.substr((posicao-1),1)!="!" && Digit==37) {
				Objeto.value=Objeto.value.substr(0,(Objeto.value.length-1));
			}
			Objeto.value=Objeto.value.substr(0,(Objeto.value.length-1));
	    }
	} else {
	    if (Mascara.substr(posicao,1)!="9" && Mascara.substr(posicao,1)!="A" && Mascara.substr(posicao,1)!="a" && Mascara.substr(posicao,1)!="!") {
			Objeto.value += Mascara.substr(posicao,1);
	    }
	}
}

// Retira aspas dos campos texto
// Data: 27/04/2006
// Autor: João Cândido de Souza Neto
// Copyright: XMLBRASIL Tecnologia LTDA
function tira_aspas(obj) {
	for (i=0; i < obj.elements.length; i++) {
		if (obj.elements[i].type=="text") {
			while (obj.elements[i].value.indexOf("\"") > -1) obj.elements[i].value=obj.elements[i].value.replace("\"","");
			while (obj.elements[i].value.indexOf("'") > -1) obj.elements[i].value=obj.elements[i].value.replace("'","");
		}
	}
}
function currencyFormat(fld, milSep, decSep, e) {
  var sep = 0;
  var key = '';
  var i = j = 0;
  var len = len2 = 0;
  var strCheck = '0123456789';
  var aux = aux2 = '';
  var whichCode = (window.Event) ? e.which : e.keyCode;

  if (whichCode == 13) return true;  // Enter
  if (whichCode == 8) return true;  // Delete
  key = String.fromCharCode(whichCode);  // Get key value from key code
  if (strCheck.indexOf(key) == -1) return false;  // Not a valid key
  len = fld.value.length;
  for(i = 0; i < len; i++)
  if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break;
  aux = '';
  for(; i < len; i++)
  if (strCheck.indexOf(fld.value.charAt(i))!=-1) aux += fld.value.charAt(i);
  aux += key;
  len = aux.length;
  if (len == 0) fld.value = '';
  if (len == 1) fld.value = '0'+ decSep + '0' + aux;
  if (len == 2) fld.value = '0'+ decSep + aux;
  if (len > 2) {
    aux2 = '';
    for (j = 0, i = len - 3; i >= 0; i--) {
      if (j == 3) {
        aux2 += milSep;
        j = 0;
      }
      aux2 += aux.charAt(i);
      j++;
    }
    fld.value = '';
    len2 = aux2.length;
    for (i = len2 - 1; i >= 0; i--)
    fld.value += aux2.charAt(i);
    fld.value += decSep + aux.substr(len - 2, len);
  }
  return false;
}
