function setClasse(objeto, classe){ 					 
		obj = (typeof(objeto)=="object") ? objeto : document.getElementById(objeto);
		obj.setAttribute('class', classe);
		obj.setAttribute('className', classe);
}

function remClasse(objeto, classe){ 					 
		obj = (typeof(objeto)=="object") ? objeto : document.getElementById(objeto);
		obj.removeAttribute('class', classe);
		obj.removeAttribute('className', classe);
}
	
function isEmpty(varParametro){
	
	var varRetorno = "false";             //variavel para teste de espacos em branco
	var varTamanho = varParametro.length;
	
	// Se o tamanho do parametro for Diferente de 0
	if (varTamanho != 0){   
	    // Verifica num loop os caracteres digitados
		for (i = 0; i < varTamanho; i++){
			// Se os caracteres for diferente de vazio então
			if (varParametro.charAt(i) != " "){
				/*existe caracter diferente de branco*/
				varRetorno = "true";
			}
		// Fecha o paremetro FOR
		}
		// Se os caracteres for diferente de vazio então
		if (varRetorno == "false"){//todos os caracteres digitados são brancos
			return false;
		} 
		// Se o paremetro for diferente de Zero e estiver tudo ok retorna true
		else{
			return true;
		}
	}
	// Se o paremetro for diferente de Zero e estiver algo errado retorna False
	else{
		 return false;
	}
		
}

// ########################################################################
//-----------------------------------------------------
// Funcao: validaEmail(email)
// Sinopse: Função para validar o e-mail
// Parametro: email
// Retorno: Booleano
//-----------------------------------------------------

function validaEmail(email) 
{
	var pos;
	var aux;
	var pos2;
	var dominio;
	var carac;
	var i;
	
	email = email.toLowerCase();

	if (email.indexOf("@",0) == -1 || email.length <= 10) return false
	
	pos = email.indexOf("@",0) //no ASP 8, JS 7
	aux = email.substring(pos+1) //pop.com.br

	if (aux.indexOf(".",0) < 2) return false

	pos2 = aux.indexOf(".",0)
	dominio = aux.substr(0,pos2)//pop

	if (dominio.length < 2) return false

	carac = new Array("!","#","$","%","&","*","(",")","+","=","/","\\","|","?","'","\"","{","}","[","]","ª","º",":",",",";","§","°","<",">")
	for(i=0; i<carac.length; i++) if (email.indexOf(carac[i],0) != -1) return false

	return true
}

// ########################################################################
// FUNÇÃO VERIFICAR O EMAIL ###############################################
function Valida_Data(dia,mes,ano)
	{	//Funcionalidade:	Valida a Data retornando True se for uma Data 
		//					válida e False se não for.
		//					Antes de se usar esta função deve-se garantir que os parâmetros
		//					passados sejam numéricos e inteiros.
		// PARÂMETROS: 
		//		Dia = Dia da Data(caracteres numericos), 
		//		Mes = Mes da Data(caracteres numericos), 
		//		Ano = Ano da Data(caracteres numericos)
		
		var v_dia;
		var v_mes;
		var v_ano;
		
		if (!valida_inteiro(dia))
		{
			return (false);		
		}
		if (!valida_inteiro(mes))
		{
			return (false);		
		}
		if (!valida_inteiro(ano))
		{
			return (false);		
		}
				
		v_dia = dia;
		v_mes = mes;
		v_ano = ano;
		
		if (v_dia.length < 2)
		{
			return(false);
		}
		
		if (v_mes.length < 2)
		{
			return(false);
		}
		
		if (v_ano.length < 4)
		{
			return(false);
		}
			
		if (((v_ano < 1900) || (v_ano > 2079)) && (v_ano.length != 0))
		{
			return(false);
		}

		if (v_dia > 31 || v_dia < 1)
		{
			return(false);
		}
		
		if (v_mes > 12 || v_mes < 1)
		{
			return(false);
		}
		
		if (v_dia == "31") 
		{
			if ((v_mes == "04") || (v_mes == "06") || (v_mes == "09") || (v_mes == "11"))
			{
				return(false);
			}
		}
	
		//Validação de Ano Bissexto
		if (v_mes == "02")
		{
			if (!(v_ano%4)) 
			{
				if (v_dia > 29)
				{
					return(false);
				}
			}
			else if (v_dia > 28)
			{
				return(false);
			}
		}
		
		//o -if- abaixo testa se algum campo foi preenchido e outro deixado em branco deixando a data incompleta

		if (((v_dia != "") || (v_mes != "") || (v_ano != "")) && ((v_dia == "") || (v_mes == "") || (v_ano == "")))
		{
			return(false);
		}
		
		return(true);
	}
	
	function addOpt(obj, cod, txt){ 						 
		if (typeof obj == 'string') obj = document.getElementById(obj);		
		var opt = new Option(txt, cod);
		obj.options[obj.length] = opt;
	}
	
	function ajaxLoad(URL, fncLoad, fncProcessXML, fncErro){ //Função AJAX usada para carregar arquivos XML
		var ajax;
		
		//verifica se o browser tem suporte a ajax
		try {
			ajax = new ActiveXObject("Microsoft.XMLHTTP");
		} catch(e) {
			try {
				ajax = new ActiveXObject("Msxml2.XMLHTTP");
			} catch(ex) {
				try {
					ajax = new XMLHttpRequest();
				} catch(exc) {
					alert("Esse browser não tem recursos para uso do Ajax");
					ajax = null;
				}
			}
		}
		
		//se tiver suporte ajax
		if(ajax) {
			var rndNumber = Math.floor(Math.random()*1000);
			var fileName = URL.substring(URL.lastIndexOf('/')+1, URL.length);
			var paramentroRandomico = (fileName.indexOf('?')<0) ? '?'+rndNumber : '&'+rndNumber;
			URL += paramentroRandomico;
			
			ajax.open("GET", URL, true);
			ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=ISO-8859-1");
			ajax.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
			ajax.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
			ajax.setRequestHeader("Pragma", "no-cache");				 
						
			ajax.onreadystatechange = function() {
				//enquanto estiver processando...exibe a msg de carregando
				if(ajax.readyState == 1 && fncLoad!="") {
					eval(fncLoad); //Chama a função que exibe a mensagem de "Carregando..."
				}
				
				//após ser processado - chama função processXML que vai varrer os dados
				if(ajax.readyState == 4 ) {
					if(ajax.responseXML) {
						fncProcessXML = fncProcessXML.substring(0,fncProcessXML.length-1)+"ajax.responseXML);";
						eval(fncProcessXML);
					} else {
						//caso o retorno não seja um arquivo XML válido, exibe a mensagem abaixo
						fncErro = fncErro.substring(0,fncErro.length-1)+"'ERRO: ajax.responseXML = "+ajax.responseXML+"');";
						eval(fncErro);
					}
				}
			}			
			ajax.send(null);
		}
	}
	
	function autotab(original,destination){ 				 
		if(original.getAttribute&&original.value.length==original.getAttribute("maxlength"))destination.focus() 
	}
	
	function check(){										 
		for (var i = 0; i < arguments.length; i++) {
			var element = arguments[i];
			if (typeof element == 'string') element = document.getElementById(element);
			element.checked = true;
		}
	}
	
	function desabilita(){		 							 
		for (var i = 0; i < arguments.length; i++) {
			var element = arguments[i];
			if (typeof element == 'string') element = document.getElementById(element);
			element.disabled = true;
		}
	}
	
	function extensaoInvalida(Arquivo, ExtensoesValidas){	 
	//Para chamar a função use: if(ExtensaoInvalida(Nome_do_Form.Nome_do_Campo.value, "jpg,gif,png"))return false;
	//Onde o segundo parâmetro é uma string contendo todas as extensões permitidas separadas por vírgula
		ExtensoesValidas = ExtensoesValidas.toLowerCase(); //Certificando-se de que as extensões estarão minúsculas
		arrExtensoesValidas = ExtensoesValidas.split(","); //Criando o array de extensões
		
		// Se a string referente ao arquivo for menor do que 4 caracteres ou se 
		// esta mesma string não possuir o caracter "\" deve retornar o erro
		if(Arquivo.lenght < 8  ||  Arquivo.indexOf(":\\") == -1){
			alert("Informe um arquivo válido para envio.");
			return true;
		}
		
		ExtensaoDoArquivoEnviado = Arquivo.slice(Arquivo.lastIndexOf(".")+1).toLowerCase();		
		
		ExtensaoOk = false;
		for (var i = 0; i < arrExtensoesValidas.length; i++) {
			if (arrExtensoesValidas[i] == ExtensaoDoArquivoEnviado) { ExtensaoOk = true; break; }
		}
		
		if(ExtensaoOk)return false;
		else {
			if(arrExtensoesValidas.length > 1)
				msg = ExtensoesValidas.slice(0, ExtensoesValidas.lastIndexOf(",")) + " ou " + ExtensoesValidas.slice(ExtensoesValidas.lastIndexOf(",")+1);
			else
				msg = ExtensoesValidas
			alert("Extensão inválida.\nA extensão do arquivo tem que ser: "+msg);
			return true;
		}
	}
	
	function formataData(Data){								 
		/*--------------  Função de formatação de data  ---------------
		Esta função Recebe como parâmetros uma data. Esta data pode ser 
		passada de duas maneiras. Quando passada no formato AAAAMMDD, a 
		função a converte para DD/MM/AAAA. Já na outra situação, onde a 
		função recebe a data no formato DD/MM/AAAA, a data é convertida
		para o formato AAAAMMDD.									 */
		(Data.indexOf("/")!=-1)?
			Data = Data.slice(6,10) + Data.slice(3,5) + Data.slice(0,2) : 
			Data = Data.slice(6,8) + "/" + Data.slice(4,6) + "/" + Data.slice(0,4);
		return Data;
	}
	
	function formObserver(									 Form, boxType, boxSubmit, boxSubmitiIcn, boxSubmitTxt, boxStatus){
		this.form = Form;
		this.boxMsg_Type = boxType;
		this.boxMsg_Submit = boxSubmit;
		this.boxMsg_SubmitIcn = boxSubmitiIcn;
		this.boxMsg_SubmitTxt = boxSubmitTxt;
		this.boxMsg_Status = boxStatus;
		this.arrElements = '';
		this.validaSendForm = true;
		
	}formObserver.prototype = {	
		addFormElement	: function (element) {
			this.arrElements.length++;
			this.arrElements[this.arrElements.length-1] = (typeof element == 'string') ? document.getElementById(element) : element;
		},
		delFormElement	: function (idElement) {
			var i, j = 0;
			var newArray = new Array(0);
			for (i = 0; i < this.arrElements.length; i++) {
				if(this.arrElements[i].id != idElement){
					newArray.length++;
					newArray[j] = this.arrElements[i];
					j++;
				}
			}
			this.arrElements = newArray;
		},
		resetForm 		: function () {							 
			for (var i = 0; i < this.arrElements.length; i++) {
				setClass('', this.arrElements[i]);
				setValor ('', this.arrElements[i]);
			}
		},
		sendForm		: function(){								 
			//Pode OU NÃO receber como parâmetro funções a serem executadas antes do envio do formulário
			if (this.validaSendForm) {				
				for (i=0; i<arguments.length; i++) eval(arguments[i]); //Executando as funções passadas como parâmetro
				document.getElementById(this.form).submit();
			} else this.validaSendForm = true;
		},
		setErro			: function (msgErro, elements) {
			if(this.validaSendForm){
				for (var i = 0; i < this.arrElements.length; i++) setClass('', this.arrElements[i]);
				
				for (var i = 1; i < arguments.length; i++) {
					var element = arguments[i];
					if (typeof element == 'string') element = document.getElementById(element);
					setHTML(msgErro, this.boxMsg_SubmitTxt);
					setClass('Input_Erro', element);
				}
				show(this.boxMsg_Submit);
				this.validaSendForm = false;
			}
		},
		setFormElements	: function () {						 
			this.arrElements = arguments;	
			for (var i = 0; i < arguments.length; i++) {
				var element = arguments[i];
				if (typeof element == 'string') element = document.getElementById(element);
				this.arrElements[i] = element;
			}
		},
		setFocusMsg 	: function (element, msg, anotherTargetElementDisplay) {
			var focusBoxMsg = (arguments.length == 3) ? anotherTargetElementDisplay : this.boxMsg_Status;
			Event.observe(element, "focus", function(e){setHTML(msg, focusBoxMsg)});
			Event.observe(element, "blur" , function(e){setHTML('',  focusBoxMsg)});
		},
		valida 			: function (element, vlrIndevido, msgErro, fncOpcional) {	 
			if(this.validaSendForm){
				for (var i = 0; i < this.arrElements.length; i++) setClass('', this.arrElements[i]);
				if (typeof element == 'string') element = document.getElementById(element);
				if(element.value == vlrIndevido){
					setHTML(msgErro, this.boxMsg_SubmitTxt);
					setClass('Input_Erro', element);
					show(this.boxMsg_Submit);
					setFocus(element);
					
					if(arguments.length>3)eval(fncOpcional);
					
					this.validaSendForm = false;
				}else{
					hide(this.boxMsg_Submit);
					this.validaSendForm = true;
				}
			}
		},
		validaCondicao	: function (booleanResult, element, msgErro, fncOpcional) {	 
			if(this.validaSendForm){
				for (var i = 0; i < this.arrElements.length; i++) setClass('', this.arrElements[i]);
				if (typeof element == 'string') element = document.getElementById(element);
				if(booleanResult){ //se o resultado da condição passada por parâmetro for verdadeiro
					setHTML(msgErro, this.boxMsg_SubmitTxt);
					setClass('Input_Erro', element);
					show(this.boxMsg_Submit);
					setFocus(element);
					
					if(arguments.length>3)eval(fncOpcional);
					
					this.validaSendForm = false;
				}else{
					hide(this.boxMsg_Submit);
					this.validaSendForm = true;
				}
			}
		},
		validaEmail		: function (element){
			if(this.validaSendForm){
				var msgDeErro;
				var email = getValor(element);
				/* Testa um email no formato teste@testando. + com.br (3.2) ou + .com (3) ou + .br (2) -----------
				-- NÃO podem comecar com numeros. Antes da @ podem contar numeros letras, pontos e undescore -----
				-- O Dominio pode conter caracteres e numeros porem os seus sufixos apenas caracteres ----------*/
				var objRegExp  = /^[A-Za-z]([\w\.]*)@([A-Za-z0-9\.]*)\.(([A-Za-z]{3}\.[A-Za-z]{2}$)|([A-Za-z]{3}$)|([a-z]{2}$))/i ;
				
				msgDeErro = ( objRegExp.test(email) ) ? 'SemErros' : 'Email incorreto! Informe um email válido' ;
				
				if(msgDeErro == 'SemErros'){
					hide(this.boxMsg_Submit);
					this.validaSendForm = true;
				}else{
					setHTML(msgDeErro, this.boxMsg_SubmitTxt);
					setClass('Input_Erro', element);
					show(this.boxMsg_Submit);
					setFocus(element);
					this.validaSendForm = false;
				}
			}
		},
		validaExtensao 	: function(element, extensoesValidas){
			if(this.validaSendForm){
				var msgDeErro = 'SemErros';
				for (var i = 0; i < this.arrElements.length; i++) setClass('', this.arrElements[i]);
				if (typeof element == 'string') element = document.getElementById(element);
				
				//Para chamar a função use: if(ExtensaoInvalida(Nome_do_Form.Nome_do_Campo.value, "jpg,gif,png"))return false;
				//Onde o segundo parâmetro é uma string contendo todas as extensões permitidas separadas por vírgula
				extensoesValidas = extensoesValidas.toLowerCase(); //Certificando-se de que as extensões estarão minúsculas
				arrExtensoesValidas = extensoesValidas.split(","); //Criando o array de extensões
				
				// Se a string referente ao arquivo for menor do que 4 caracteres ou se 
				// esta mesma string não possuir o caracter "\" deve retornar o erro
				if(getLen(element) < 8  ||  element.value.indexOf(":\\") == -1){
					msgDeErro = 'Informe um arquivo válido para envio.';
				}
				
				ExtensaoDoArquivoEnviado = element.value.slice(element.value.lastIndexOf(".")+1).toLowerCase();	
				
				ExtensaoOk = false;
				for (var i = 0; i < arrExtensoesValidas.length; i++) {
					if (arrExtensoesValidas[i] == ExtensaoDoArquivoEnviado) { ExtensaoOk = true; break; }
				}
				
				if(ExtensaoOk == false) {
					if(arrExtensoesValidas.length > 1)
						msg = extensoesValidas.slice(0, extensoesValidas.lastIndexOf(",")) + " ou " + extensoesValidas.slice(extensoesValidas.lastIndexOf(",")+1);
					else {
						msg = extensoesValidas
					}
					msgDeErro = 'Extensão inválida. A extensão do arquivo tem que ser: ' + msg;
				}
				
				if(msgDeErro == 'SemErros'){
					hide(this.boxMsg_Submit);
					this.validaSendForm = true;
				}else{
					setHTML(msgDeErro, this.boxMsg_SubmitTxt);
					setClass('Input_Erro', element);
					show(this.boxMsg_Submit);
					setFocus(element);
					this.validaSendForm = false;
				}
			}
		},
		validaHora 		: function(element){						 
			if(this.validaSendForm){
				var msgDeErro = '"' + getValor(element) + '" NÃO é um horário/tempo válido. Você deve informar no seguinte formato: HH:MM';
				
				//var reTime1 = /^\d{2}:\d{2}$/;				//Horário HH:MM simples — aceita dois pares de dois dígitos separados por dois-pontos (:); pode ser usado para hora:minutos ou ainda para minutos:segundos, porém não valida as faixas de valor válidos para os dígitos, aceitando assim qualquer valor entre 00 e 99.
				var reTime2 = /^([0-1]\d|2[0-3]):[0-5]\d$/;		//Horário HH:MM 24h — aceita horas na faixa 00-23 e minutos 00-59, separados por dois-pontos.
				//var reTime3 = /^(0[1-9]|1[0-2]):[0-5]\d$/;	//Horário HH:MM 12h — aceita horas na faixa 01-12 e minutos 00-59, separados por dois-pontos.
				//var reTime4 = /^\d+:[0-5]\d:[0-5]\d$/;		//Tempo horas:MM:SS — aceita qualquer quantidade de horas (0 ou mais, um ou mais dígitos), minutos 00-59 e segundos 00-59, todos separados por dois-pontos.
				//var reTime5 = /^\d+:[0-5]\d:[0-5]\.\d{3}\d$/;	//Tempo horas:MM:SS.mili — similar ao anterior, porém inclui 3 dígitos finais para milisegundos 000-999, separados dos anteriores por ponto (.).
		
				eval("reTime = reTime" + 2);
				if (reTime.test(getValor(element)))msgDeErro = 'SemErros';
				
				if(msgDeErro == 'SemErros'){
					hide(this.boxMsg_Submit);
					this.validaSendForm = true;
				}else{
					setHTML(msgDeErro, this.boxMsg_SubmitTxt);
					setClass('Input_Erro', element);
					show(this.boxMsg_Submit);
					setFocus(element);
					this.validaSendForm = false;
				}		
			}
		},
		validaData 		: function(element, fncOpcional){						 
			if (typeof element == 'string') element = document.getElementById(element);
			if(element.value=="")return true;
			var expReg = /^(([0-2]\d|[3][0-1])\/([0]\d|[1][0-2])\/[1-2][0-9]\d{2})$/;
			var msgErro = 'Formato inválido de data. Utilize "DD/MM/AAAA".';
			if ((element.value.match(expReg)) && (element.value!='')){
				var dia = element.value.substring(0,2);
				var mes = element.value.substring(3,5);
				var ano = element.value.substring(6,10);
				if(  (mes==4 || mes==6 || mes==9 || mes==11)   &&   (dia > 30)  ){
					msgErro = "Dia incorreto ! O mês especificado contém no máximo 30 dias.";
				} else {
					if(ano%4!=0 && mes==2 && dia>28){
						msgErro = "Data incorreta! O mês especificado contém no máximo 28 dias."
					} else {
						if(ano%4==0 && mes==2 && dia>29){
							msgErro = "Data incorreta! O mês especificado contém no máximo 29 dias."
						} else {
							msgErro = 'SemErros';
						}
					}
				}
			} 
			if(msgErro == 'SemErros'){
				hide(this.boxMsg_Submit);
				this.validaSendForm = true;
			}else{
				setHTML(msgErro, this.boxMsg_SubmitTxt);
				setClass('Input_Erro', element);
				show(this.boxMsg_Submit);
				setFocus(element);
				
				if(arguments.length>1)eval(fncOpcional);
				
				this.validaSendForm = false;
			}
		}
	}
	
	function getAltura(element){							 
		if (typeof element == 'string') element = document.getElementById(element);
		return Element.getHeight(element);
	}
	
	function getAlturaDoc(){								 
		return document.body.offsetHeight;
	}
	
	function getAlturaTela(){								 
		return document.body.clientHeight;
	}
	
	function getElement(id){ 								 //Retorna o objeto especificado pelo ID passado como parâmetro
		return document.getElementById(id);		
	}
	
	function getLarguraDoc(){								 
		return document.body.offsetWidth;
	}
	
	function getLarguraTela(){								 
		return document.body.clientWidth;
	}
	
	function getLen(element){								 //Retorna o tamanho da string
		if (typeof element == 'string') element = document.getElementById(element);
		return element.value.length;
	}
	
	function getOptLen(element){							 
		if (typeof element == 'string') element = document.getElementById(element);
		return element.options.length;
	}
	
	function getOptT(element, indice){						 
		obj = (typeof element == 'string') ? document.getElementById(element) : element;
		return (typeof(indice)=="number") ? obj.options[indice].text : obj.options[obj.selectedIndex].text;
	}
	
	function getOptV(id, indice){							 
		obj = document.getElementById(id);
		return (typeof(indice)=="number") ? obj.options[indice].value : obj.options[obj.selectedIndex].value;
	}
	
	function getScrollTop(){								 
		return document.body.scrollTop;
	}
	
	function getScrollLeft(){								 
		return document.body.scrollLeft;
	}
	
	function getValor(id){ 									 
		return document.getElementById(id).value;
	}
	
	function getXMLvalue(objXML, elemento, indice){ 		 
		(isNaN(indice))? i=0 : i=indice;
		elemento = objXML.getElementsByTagName(elemento);
		(elemento[i].hasChildNodes()) ? valor=elemento[i].firstChild.nodeValue : valor="";
		return valor;
	}
	
	function getX(element){									 
		if (typeof element == 'string') element = document.getElementById(element);
		return element.offsetLeft;
	}
	
	function getY(element){									 
		if (typeof element == 'string') element = document.getElementById(element);
		return element.offsetTop;
	}
	
	function habilita(){		 							 
		for (var i = 0; i < arguments.length; i++) {
			var element = arguments[i];
			if (typeof element == 'string') element = document.getElementById(element);
			element.disabled = false;
		}
	}

	function hide(){									 	 
		for (var i = 0; i < arguments.length; i++) {
			var element = arguments[i];
			if (typeof element == 'string') element = document.getElementById(element);
			element.style.display = "none";
		}
	}
	
	function listboxTolistbox(boxOrigem, boxDestino){		 
		//<input type="button" id="Grupos"    value="Incluir &raquo;" onClick="move('Grupos', 'GruposSel');">
		//<input type="button" id="GruposSel" value="&laquo; Retirar" onClick="move('GruposSel', 'Grupos');">
		
		if (typeof boxOrigem == 'string') boxOrigem = document.getElementById(boxOrigem);
		if (typeof boxDestino == 'string') boxDestino = document.getElementById(boxDestino);
		
		var arrboxOrigem = new Array();
		var arrboxDestino = new Array();
		var arrLookup = new Array();
		var i;
		for (i = 0; i < boxDestino.options.length; i++) {
			arrLookup[boxDestino.options[i].text] = boxDestino.options[i].value;
			arrboxDestino[i] = boxDestino.options[i].text;
		}
		var fLength = 0;
		var tLength = arrboxDestino.length;
		for(i = 0; i < boxOrigem.options.length; i++) {
			arrLookup[boxOrigem.options[i].text] = boxOrigem.options[i].value;
			if (boxOrigem.options[i].selected && boxOrigem.options[i].value != "") {
				arrboxDestino[tLength] = boxOrigem.options[i].text;
				tLength++;
			} else {
				arrboxOrigem[fLength] = boxOrigem.options[i].text;
				fLength++;
		   }
		}
		arrboxOrigem.sort();
		arrboxDestino.sort();
		boxOrigem.length = 0;
		boxDestino.length = 0;
		var c;
		for(c = 0; c < arrboxOrigem.length; c++) {
			var no = new Option();
			no.value = arrLookup[arrboxOrigem[c]];
			no.text = arrboxOrigem[c];
			boxOrigem[c] = no;
		}
		for(c = 0; c < arrboxDestino.length; c++) {
			var no = new Option();
			no.value = arrLookup[arrboxDestino[c]];
			no.text = arrboxDestino[c];
			boxDestino[c] = no;
		}
	}
	
	function numRnd(qtd_rnd){						 	 	 
		qtd_rnd = (isNaN(qtd_rnd)) ? 10000 : qtd_rnd;
		return Math.floor(Math.random()*qtd_rnd);
	}
	
	function replaceBreakLine(str){							 
		var re = /<br>/g;
		return(str.replace(re, String.fromCharCode(13))); 
	}
	
	function request(varBuscada){							 
		//Iniciando a variável com o valor de retorno. Se não achar a variável procurada retorna ""
		var vlrBuscado = "";

		//Pegando a URL
		var url = document.URL;

		//Separando o endereço da página de seus argumentos (tudo o que vem depois da "?")
		url = url.substring(url.indexOf('?')+1,url.length);
		
		//Retirando o "jogo da velha" caso exista
		if(url.indexOf('#')!=-1)url=url.slice(0,url.indexOf('#'));
			
		//Criando um array com todos as duplas variável=valor passados na url
		var arrParams=url.split("&");
		
		//Procurando a variável solicitada
		for (i=0; i<arrParams.length; i++){
			varArray_Nome = arrParams[i].substring(0,arrParams[i].indexOf('='));
			varArray_Vlr  = arrParams[i].substring(arrParams[i].indexOf('=')+1,arrParams[i].length);
			if (varBuscada == varArray_Nome){
				vlrBuscado = varArray_Vlr;
				i = arrParams.length;
			}
		}
		return vlrBuscado;
	}
	
	function selAllItens(){									 
        for (var i = 0; i < arguments.length; i++) {
            var selectBox = getElement(arguments[i]);
            for(var j = 0; j < selectBox.options.length; j++) {
                selectBox.options[i].selected = 'true';
            }
        }
    }
	
	function setClass(classe, elements){ 					 
		for (var i = 1; i < arguments.length; i++) {
			var element = arguments[i];
			if (typeof element == 'string') element = document.getElementById(element);
			element.setAttribute('class', classe);
			element.setAttribute('className', classe);
		}
	}
	
	function setDisplay(vlr, elements){						 /*
		vlr pode receber 3 valores distintos:
		true     » Seta a propriedade css "display" do elemento como ""
		false    » Seta a propriedade css "display" do elemento como "none"
		'trocar' » Troca a propriedade css "display" do elemento			*/
		
		var displayValue;
		
		if(vlr.toLowerCase() == 'trocar'){
			for (var i = 0; i < arguments.length; i++) {
				var element = arguments[i];
				if (typeof element == 'string') element = document.getElementById(element);			
	
				displayValue = element.style.display;
				displayValue = (displayValue == "none")? "" : "none";
			}
		}else{
			displayValue = (vlr) ? '' : 'none';
			for (var i = 0; i < arguments.length; i++) {
				var element = arguments[i];
				if (typeof element == 'string') element = document.getElementById(element);
				element.style.display = displayValue;
			}
		}
	}
		
	function setFocus(element){ 							 
		if (typeof element == 'string') element = document.getElementById(element);
		element.focus();
	}
	
	function setFocusMsg(element, div, msg){				 
		//Para que esta função funcione é preciso que além desta biblioteca também seja referenciada _Prototype.js
		Event.observe(element, "focus", function(e){show(div);setHTML(msg,div)});
		Event.observe(element, "blur" , function(e){hide(div)});
	}
	
	function setHTML(){			 							 
		// O primeiro parâmetro sempre deve ser o HTML e os demais 
		// os elementos onde esse html deve ser escrito
		html = arguments[0]; 
		for (var i = 1; i < arguments.length; i++) {
			var element = arguments[i];
			if (typeof element == 'string') element = document.getElementById(element);
			element.innerHTML = html;
		}
	}
	
	function setOptV(id, indice, valor){					 
		document.getElementById(id).options[indice].value = valor;
	}
	
	function setOptT(id, indice, texto){					 
		document.getElementById(id).options[indice].text = texto;
	}
	
	function setSrc(element, caminho){						 
		if (typeof element == 'string') element = document.getElementById(element);
		element.src = caminho;
	}
	
	function setStyle(style, value, elements){				 /*
		 - Como Usar:
			* elements = todos os elementos passados por parâmetro. Podem ser at´248.
			* style = o estilo a ser mudado.
			* value = o valor a ser atribuido ao estilo defindo acima.
		 - Exemplos
			* onclick="setStyle('visibility','visible','orange')"
			* onmouseover="setStyle('color','red', this)"
			* onmouseout="setStyle('color','#00f', this)"
			* onclick="setStyle('visibility','hidden', 'orange')"*/ 
		for (var i = 2; i < arguments.length; i++) {
			var element = arguments[i];
			if (typeof element == 'string') element = document.getElementById(element);
			element.style[style] = value;
		}
	}
	
	function setValor(){ 							 		 
		valor = arguments[0]; //O primeiro parâmetro sempre deve ser o valor
		for (var i = 1; i < arguments.length; i++) {
			var element = arguments[i];
			if (typeof element == 'string') element = document.getElementById(element);
			element.value = valor;
		}
	}
	
	function setVisib(){									 
		visibilidade = (arguments[0]) ? 'visible' : 'hidden';
		for (var i = 1; i < arguments.length; i++) {
			var element = arguments[i];
			if (typeof element == 'string') element = document.getElementById(element);			
			element.style.visibility = visibilidade;
		}
	}
	
	function setX(posicao, elements){						 
		for (var i = 1; i < arguments.length; i++) {
			var element = arguments[i];
			if (typeof element == 'string') element = document.getElementById(element);
			element.style.left = posicao;
		}
	}
	
	function setY(posicao, elements){						 
		for (var i = 1; i < arguments.length; i++) {
			var element = arguments[i];
			if (typeof element == 'string') element = document.getElementById(element);
			element.style.top = posicao;
		}
	}
	
	function show(){									 	 
		for (var i = 0; i < arguments.length; i++) {
			var element = arguments[i];
			if (typeof element == 'string') element = document.getElementById(element);
			element.style.display = "";
		}
	}
	
	function showHide(){								 	 
		for (var i = 0; i < arguments.length; i++) {
			var element = arguments[i];
			if (typeof element == 'string') element = document.getElementById(element);	
			element.style.display = (element.style.display == "none")? "" : "none";
		}
	}
	
	function soNum(e){										 
		/*-- Como usar:
		<input type="text" onkeypress="return soNum(event);">
		--------------------------------------------------------------*/
		var key = captEvent(e)
			
		if (key!=8 || key < 48 || key > 57) return (((key > 47) && (key < 58)) || (key==8));{
		    return true;
		}
	}
	
	function trOverOut(TR, action){							 
		attribute = (navigator.appName=="Microsoft Internet Explorer") ? "className" : "class";		
		if(action == "over"){
			ClasseTR = TR.getAttribute(attribute);
			TR.setAttribute(attribute, 'TD_LinhaAtiva');
		}else{
			if(ClasseTR != 'TD_LinhaClara'){
				TR.removeAttribute(attribute, 'TD_LinhaAtiva');
			}else{
				TR.setAttribute(attribute, 'TD_LinhaClara');
			}
		}
	}
	
	function unCheck(){										 
		for (var i = 0; i < arguments.length; i++) {		 
			var element = arguments[i];
			if (typeof element == 'string') element = document.getElementById(element);
			element.checked = false;
		}
	}
	
	function valida_Data(campo, alertar){					 
		if(campo.value=="")return true;
		var expReg = /^(([0-2]\d|[3][0-1])\/([0]\d|[1][0-2])\/[1-2][0-9]\d{2})$/;
		var msgErro = 'Formato inválido de data.';
		if ((campo.value.match(expReg)) && (campo.value!='')){
			var dia = campo.value.substring(0,2);
			var mes = campo.value.substring(3,5);
			var ano = campo.value.substring(6,10);
			if(  (mes==4 || mes==6 || mes==9 || mes==11)   &&   (dia > 30)  ){
				msgErro = "Dia incorreto ! O mês especificado contém no máximo 30 dias.";
				if(alertar==1){
					alert(msgErro);
					campo.focus();
					return false;
				}else return msgErro;
			} else {
				if(ano%4!=0 && mes==2 && dia>28){
					msgErro = "Data incorreta! O mês especificado contém no máximo 28 dias."
					if(alertar==1){
						alert(msgErro);
						campo.focus();
						return false;
					}else return msgErro;
				} else {
					if(ano%4==0 && mes==2 && dia>29){
						msgErro = "Data incorreta! O mês especificado contém no máximo 29 dias."
						if(alertar==1){
							alert(msgErro);
							campo.focus();
							return false;
						}else return msgErro;
					} else {
						//alert ("Data correta!");
						return (alertar==1) ? true : "Ok";
					}
				}
			}
		} else {
			if(alertar==1){
				alert(msgErro);
				campo.focus();
				return false;
			}else return msgErro;
		}
	}
	
	function valida_Email(email){							 
		/* Testa um email no formato teste@testando. + com.br (3.2) ou + .com (3) ou + .br (2) -----------
		-- NÃO podem comecar com numeros. Antes da @ podem contar numeros letras, pontos e undescore -----
		-- O Dominio pode conter caracteres e numeros porem os seus sufixos apenas caracteres ----------*/
		var objRegExp  = /^[A-Za-z]([\w\.]*)@([A-Za-z0-9\.]*)\.(([A-Za-z]{3}\.[A-Za-z]{2}$)|([A-Za-z]{3}$)|([a-z]{2}$))/i ;
		return objRegExp.test(email);
		
		/* Como usar:
			if(!valida_Email(form.value)) {
				alert("Email Inválido!\nInforme um email válido e tente novamente.");
				form.focus();
				return true;
			}else{
				return false;
			}
		*/
	}
	
	function valida_Hora(hora){								 
		//var reTime1 = /^\d{2}:\d{2}$/;				//Horário HH:MM simples — aceita dois pares de dois dígitos separados por dois-pontos (:); pode ser usado para hora:minutos ou ainda para minutos:segundos, porém não valida as faixas de valor válidos para os dígitos, aceitando assim qualquer valor entre 00 e 99.
		var reTime = /^([0-1]\d|2[0-3]):[0-5]\d$/;		//Horário HH:MM 24h — aceita horas na faixa 00-23 e minutos 00-59, separados por dois-pontos.
		//var reTime3 = /^(0[1-9]|1[0-2]):[0-5]\d$/;	//Horário HH:MM 12h — aceita horas na faixa 01-12 e minutos 00-59, separados por dois-pontos.
		//var reTime4 = /^\d+:[0-5]\d:[0-5]\d$/;		//Tempo horas:MM:SS — aceita qualquer quantidade de horas (0 ou mais, um ou mais dígitos), minutos 00-59 e segundos 00-59, todos separados por dois-pontos.
		//var reTime5 = /^\d+:[0-5]\d:[0-5]\.\d{3}\d$/;	//Tempo horas:MM:SS.mili — similar ao anterior, porém inclui 3 dígitos finais para milisegundos 000-999, separados dos anteriores por ponto (.).

		eval("reTime = reTime" + pFmt);
		if (reTime.test(hora)) {
			Msg = hora + " é um horário/tempo válido.";
		} else if (pStr != null && pStr != "") {
			Msg = hora + " NÃO é um horário/tempo válido.";
		}
		
		return Msg;
	 }
	 
	
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
------------------------------------------------------------------------
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/


	//###################################################################################################################
	//---- Funções indiretas -> Aquelas que somente são chamadas por outras funções mas nunca por uma página em si ------
	function captEvent(e){
		var key;
		if(window.event) { key = e.keyCode; } 	// for IE, e.keyCode or window.event.keyCode can be used
		else if(e.which) { key = e.which;   }	// netscape
		return key;
	}
	
	function valida_Data_Msk(objForm, strField, evtKeyPress) {
		
		var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, sMask, nTecla;
		sMask = '99/99/9999';
	
		if(document.all) { // Internet Explorer
			nTecla = evtKeyPress.keyCode;
		} else if(document.layers) { // Nestcape
			nTecla = evtKeyPress.which;
		} else {
			nTecla = evtKeyPress.which;
			if (nTecla == 8) {
				return true;
			}
		}
	
		sValue = objForm[strField].value;
		// Limpa todos os caracteres de formatação que
		// já estiverem no campo.
		sValue = sValue.toString().replace( "-", "" );
		sValue = sValue.toString().replace( "-", "" );
		sValue = sValue.toString().replace( ".", "" );
		sValue = sValue.toString().replace( ".", "" );
		sValue = sValue.toString().replace( "/", "" );
		sValue = sValue.toString().replace( "/", "" );
		sValue = sValue.toString().replace( "(", "" );
		sValue = sValue.toString().replace( "(", "" );
		sValue = sValue.toString().replace( ")", "" );
		sValue = sValue.toString().replace( ")", "" );
		sValue = sValue.toString().replace( " ", "" );
		sValue = sValue.toString().replace( " ", "" );
		fldLen = sValue.length;
		mskLen = sMask.length;
	
		i = 0;
		nCount = 0;
		sCod = "";
		mskLen = fldLen;
		
		while (i <= mskLen) {
			bolMask = ((sMask.charAt(i) == "-") || (sMask.charAt(i) == ":") || (sMask.charAt(i) == ".") || (sMask.charAt(i) == "/"))
			bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " "))
		
			if (bolMask) {
				sCod += sMask.charAt(i);
				mskLen++;
			} else {
				sCod += sValue.charAt(nCount);
				nCount++;
			}
			i++;
		}
		
		objForm[strField].value = sCod;
		if (nTecla != 8) { // backspace
			if (sMask.charAt(i-1) == "9") { // apenas números...
				return ((nTecla > 47) && (nTecla < 58)); } // números de 0 a 9
			else { // qualquer caracter...
				return true;
			}
		} else {
			return true;
		}
	}
	//...................................................................................................................
	//-------------------------------------------------------------------------------------------------------------------
	
	
	//###################################################################################################################
	//---- Funções do Dreamweaver que impedem que o IE bloqueie os arquivos .swf ----------------------------------------
	function AC_AddExtension(src, ext){
		if (src.indexOf('?') != -1) return src.replace(/\?/, ext+'?'); 
		else return src + ext;
	}
	
	function AC_Generateobj(objAttrs, params, embedAttrs){ 
		var str = '<object ';
		for (var i in objAttrs) str += i + '="' + objAttrs[i] + '" ';
		str += '>';
		for (var i in params) str += '<param name="' + i + '" value="' + params[i] + '" /> ';
		str += '<embed ';
		for (var i in embedAttrs)str += i + '="' + embedAttrs[i] + '" ';
		str += ' ></embed></object>';
		document.write(str);
	}
	
	function AC_FL_RunContent(){
		var ret = AC_GetArgs(arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000", "application/x-shockwave-flash");
		AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
	}
	
	function AC_SW_RunContent(){
		var ret = AC_GetArgs(arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000", null);
		AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
	}
	
	function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
		var ret = new Object();
		ret.embedAttrs = new Object();
		ret.params = new Object();
		ret.objAttrs = new Object();
		for (var i=0; i < args.length; i=i+2){
			var currArg = args[i].toLowerCase();    
			
			switch (currArg){
				case "classid":
					break;
				case "pluginspage":
					ret.embedAttrs[args[i]] = args[i+1];
					break;
				case "src":
				case "movie":
					args[i+1] = AC_AddExtension(args[i+1], ext);
					ret.embedAttrs["src"] = args[i+1];
					ret.params[srcParamName] = args[i+1];
					break;
				case "onafterupdate":
				case "onbeforeupdate":
				case "onblur":
				case "oncellchange":
				case "onclick":
				case "ondblClick":
				case "ondrag":
				case "ondragend":
				case "ondragenter":
				case "ondragleave":
				case "ondragover":
				case "ondrop":
				case "onfinish":
				case "onfocus":
				case "onhelp":
				case "onmousedown":
				case "onmouseup":
				case "onmouseover":
				case "onmousemove":
				case "onmouseout":
				case "onkeypress":
				case "onkeydown":
				case "onkeyup":
				case "onload":
				case "onlosecapture":
				case "onpropertychange":
				case "onreadystatechange":
				case "onrowsdelete":
				case "onrowenter":
				case "onrowexit":
				case "onrowsinserted":
				case "onstart":
				case "onscroll":
				case "onbeforeeditfocus":
				case "onactivate":
				case "onbeforedeactivate":
				case "ondeactivate":
				case "type":
				case "codebase":
					ret.objAttrs[args[i]] = args[i+1];
					break;
				case "width":
				case "height":
				case "align":
				case "vspace": 
				case "hspace":
				case "class":
				case "title":
				case "accesskey":
				case "name":
				case "id":
				case "tabindex":
					ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
					break;
				default:
					ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
			}
		}
		ret.objAttrs["classid"] = classid;
		if (mimeType) ret.embedAttrs["type"] = mimeType;
		return ret;
	}
	//...................................................................................................................
	//-------------------------------------------------------------------------------------------------------------------
	