
//*********************************************************
// Proposta: Baseado no tipo do documento, podemos estipular o remetente sendo
//			 um órgão interno(do tipo interno) ou um campo aberto (do tipo externo).
//
//  Entrada:	
//	   intTipo:	Valor do codTipo vindo da tabela tipo  
//	 strPagina:	String contendo o nome da página que chamou a função
//			
//      Saída:	Um redirecionamento para a página de cadastro, indicando se o tipo do 
//				documento é interno (I) ou externo (E)
//
//*********************************************************
//function alteraTipo(strPagina, intTipo)
//{	
//	if (intTipo != "0")
//	{	
//		location.href=strPagina+"?Tipo="+intTipo;
//  	}
//  	return;
//}

//*********************************************************
// Proposta: Pega 2 parâmetros: a string da página e o valor selecionado pelo colaborador
//			 e redireciona para página com a variável e o valor pré-selecionado
//  Entrada:	
//	 strPagina:	String contendo o nome da página que chamou a função
//strParametro:	Nome do parâmetro
//	  intValor:	Valor do parâmetro
//	
//    Saída:	Um redirecionamento para a página juntamente com o(s) parâmetro(s) e valor(es)
//
//*********************************************************

function Refresh(strPagina, strParametro1, intValor1, strParametro2, intValor2)
{	

	//Somente o primeiro parâmetro foi passado
	if ((intValor1 != '0') && (intValor2 == 'undefined'))
	{	
		location.href=strPagina+"?"+strParametro1+"="+intValor1;
  	}
  	//O primeiro e o segundo parâmetros foram passados
	if (intValor1 != "0" && intValor2 != 'undefined')
	{	
		location.href=strPagina+"?"+strParametro1+"="+intValor1+"&"+strParametro2+"="+intValor2;
  	}
  	
  	return;
}


//*********************************************************
// Proposta: Baseado no tipo do documento, podemos estipular o remetente sendo
//			 um órgão interno(do tipo interno) ou um campo aberto (do tipo externo).
//			Também sabemos a classificação inicial do documento
//
//  Entrada:	
//			intTipo:Valor do codTipo vindo da tabela tipo  
//		  strPagina:String contendo o nome da página que chamou a função
//intClassificacao1:Valor represendando a primeira classificacao contendo o código 
//			
//      Saída:	Um redirecionamento para a página de cadastro, indicando se o tipo do 
//				documento é interno (I) ou externo (E) e a classificacao do documento
//
//*********************************************************
//function alteraClassificacao1(strPagina, intTipo, intClassificacao1)
//{	
//	if (intClassificacao1 != '' && intTipo != "0" && intClassificacao1 !="0")
//	{	
//			location.href=strPagina+"?Tipo="+intTipo+"&Classificacao1="+intClassificacao1;
//	}
//  	return;
//}

//*********************************************************
// Proposta: Baseado no tipo do documento, podemos estipular o remetente sendo
//			 um órgão interno(do tipo interno) ou um campo aberto (do tipo externo).
//			Também sabemos a classificação inicial do documento e secundária
//
//  Entrada:	
//			intTipo:Valor do codTipo vindo da tabela tipo  
//		  strPagina:String contendo o nome da página que chamou a função
//intClassificacao1:Valor represendando a primeira classificacao contendo o código 
//intClassificacao2:Valor represendando a primeira classificacao contendo o código 
//			
//      Saída:	Um redirecionamento para a página de cadastro, indicando se o tipo do 
//				documento é interno (I) ou externo (E) e a classificacao 1 e 2  do documento
//
//*********************************************************
//function alteraClassificacao2(strPagina, intTipo, intClassificacao1, intClassificacao2)
//{	
//	if (intClassificacao2 != '' && intTipo != "0" && intClassificacao1 !="0" && intClassificacao2 !="0")
//	{	
//		location.href=strPagina+"?Tipo="+intTipo+"&Classificacao1="+intClassificacao1+"&Classificacao2="+intClassificacao2;
//  	}
//  	return;
//}


//*********************************************************
// Proposta: Passa os ítens de um <SELECT> para um outrocumento e secundária
//
//  Entrada:	
//			 Origem:Valor do campo onde vai ser pego o(s) campo(s) selecionado(s)
//			Destino:Valor do campo para onde vai ser movido o(s) item(ns) selecionado(s) no primeiro <SELECT>
//			  Todos:Boleano que indica se é para mover todos os ítens ou não
//			
//      Saída:	Os ítnes são movidos para o segundo <SELECT>lassificacao 1 e 2  do documento
//
//*********************************************************

function PassaItems(Origem, Destino, Todos)
{
	var i;
	var o = Origem.options;

	for(i = 0; i < o.length;)
	{
		if(Todos || o(i).selected)
		{
			PassaItem(Origem, Destino, i);
		}
		else
		{
			i++;
		}
	}
}

function PassaItem(Origem, Destino, Indice)
{
	var novoOption = new Option();
	var antigoOption = Origem.options(Indice);

	novoOption.text = antigoOption.text;
	novoOption.value = antigoOption.value;
	Destino.options.add(novoOption);
	
	Origem.options.remove(Indice);
}


///////////////////////////////////////////////////
//	Valida os campos genéricos durante o preenchimento
///////////////////////////////////////////////////
function ValidaCampoPreenchimento(campo, proximo, tipo, maximo) {

	//	Verificando o preenchimento
	switch(tipo) {
		//	Campos moeda
		case 1:
			FormataMoeda(campo);
			break;
		//	Campos data
		case 2:
			FormataData(campo);
			break;
	}
	//	Pulando para o próximo campo do formulário
	if(campo.value.length == maximo)
		proximo.focus();
}



//////////////////////////////////////////////////////////////////////////////////////////////////////
// Formata campos data dinamicamente
//////////////////////////////////////////////////////////////////////////////////////////////////////
function FormataData(intCampo) {
	//	Valor original
	var valorOriginal = Filtra(intCampo.value);

	//	Valor formatado
	var valorFormatado = "";

	//	Posição no string
	var posicao = 0;
	
	//adicionei sinal de comentário, retirar depois
	//verificaValores (valorOriginal,intCampo)
	
	//	Formatando o valor
	for(posicao = 0; posicao < valorOriginal.length; posicao ++) {
		//	Barra
		if((posicao % 2) == 0 && posicao > 0 && posicao < 5)
			valorFormatado = valorFormatado + "/";
		//	Resultado final
		valorFormatado = valorFormatado + valorOriginal.substring(posicao, posicao + 1);
	}

	//	Atualizando o valor do campo
	intCampo.value = valorFormatado;
}



//////////////////////////////////////////////////////////////////////////////////
//	Proposta:	Verifica os valores de dia, mês e ano para ver se são válidos
//   Entrada: 
//    valorOriginal: O valor do campo
//			  campo: O Nome que foi dado ao campo
//
//    Saida:
//		True ou False, representando se valor é correto ou não
//////////////////////////////////////////////////////////////////////////////////

function verificaValores(valorOriginal,intCampo)
{

//	Campo dia entre 1 e 31
	if (valorOriginal.length >= 2)
	{
		var dia = parseInt(valorOriginal.substring(0,2))
		if(dia < 1 || dia > 31) 
		{
			alert("Dia incorreto");
			intCampo.focus;
			return false;
		}
	}	
	//	Campo mês entre 1 e 12
	if (valorOriginal.length >= 4)
	{
		var mes = parseInt(valorOriginal.substring(2,4))
		if(mes < 1 || mes > 12) 
		{
			alert("Mês incorreto");
			intCampo.focus;
			return false;
		}
	}	
	
	//	Campo ano entre 1900 e atual
	if (valorOriginal.length == 8)
	{
		var ano = parseInt(valorOriginal.substring(4,10))
		var today = new Date();
		if(ano < 1970 || ano > today.getFullYear()) 
		{
			alert("Ano incorreto");
			intCampo.focus;
			return false;
		}
	}	

}


//////////////////////////////////////////////////////////////////////////////////////////////////////
//	Filtra caracteres não numéricos
//////////////////////////////////////////////////////////////////////////////////////////////////////

function Filtra(valor) {
	//	Valor formatado
	var valorFormatado = "";

	//	Posicao no string
	var posicao = 0;
	
	//	Varrendo o string
	for(posicao = 0; posicao < valor.length; posicao ++) {
		if(!isNaN(valor.substring(posicao, posicao + 1)))
			valorFormatado = valorFormatado + valor.substring(posicao, posicao + 1);
	}

	//	Retornando o valor filtrado e invertido
	return valorFormatado;
}


/*
//////////////////////////////////////////////////////////////////////////////////////////////////////
//	Filtra caracteres não numéricos e inverte o string
//////////////////////////////////////////////////////////////////////////////////////////////////////
function FiltraInverte(valor) {
	//	Valor formatado
	var valorFormatado = "";

	//	Posicao no string
	var posicao = 0;
	
	//	Varrendo o string
	for(posicao = 0; posicao < valor.length; posicao ++) {
		if(EhNumero(valor.substring(posicao, posicao + 1)))
			valorFormatado = valor.substring(posicao, posicao + 1) + valorFormatado;
	}

	//	Retornando o valor filtrado e invertido
	return valorFormatado;
}

//////////////////////////////////////////////////////////////////////////////////////////////////////
//	Pesquisa um determinado valor num array
//////////////////////////////////////////////////////////////////////////////////////////////////////
function PesquisaArray(array, valor) {
	//	Posicao no array
	var posicao = 0;
	
	for(posicao = 0; posicao < array.length; posicao ++)
		if(array[posicao] == valor)
			return true;
	return false;
}

*/


////////////////////////////////////////////////////////////////////////////////////////
//	Verifica se o string tem algum dígito que não seja número
////////////////////////////////////////////////////////////////////////////////////////
function SoNumero (Valor,Campo) 
{
	var Numeros="1234567890";
	for (Cont=0; Cont < Valor.length; Cont++) 
	{
		TempChar = Valor.substring(Cont,Cont+1);
		if	(Numeros.indexOf(TempChar,0) == -1)	
		{
			Campo.value = "";
			Campo.focus();
			alert("Campo Numérico");
			return (false);
		}
		
	}
	return (true);
}
////////////////////////////////////////////////////////////////////////////////////
//Função que valida CNPJ/CPF														  //
////////////////////////////////////////////////////////////////////////////////////

function CNPJ(obj,nome,nivel)
{
	
	var str
	
	var det = document.all(nome)
 	
 	str = obj.value;

	if (str.length != 0 ){    
	   var MaskNumber = "";
	   for (var i = 0; i < str.length; i++)
	   {
	      var chr = str.substring(i, i + 1);
	      if (chr != "." && chr != "/" && chr != "-")
	      {
	         MaskNumber += chr;
	      }
	   }

	   str = MaskNumber;



	  if (str.length == 14)
	  {
		 var MaskNumber = "";
	     var Lpad = "00000000000000";     
	     
	     for (var i = 0; i < str.length; i++)
	     {
	        var chr = str.substring(i, i + 1);
	        if (chr >= "0" && chr <= "9")
	        {
	           MaskNumber += chr;
	        }
	     }
	        MaskNumber = Lpad.substring(0, 14 - MaskNumber.length) + MaskNumber;
	        MaskNumber = MaskNumber.substring((MaskNumber.length - 14), MaskNumber.length);
	        SumBlock1 = 0,
	        RemBlock1 = 0;
	        SumBlock2 = 0;
	        RemBlock2 = 0;
	     for (var i = 0; i < (MaskNumber.length - 2); i++)
	     {
	        var chr = MaskNumber.substring(i, i + 1);
	        if (i <= 3)
	        {
	           SumBlock1 += eval(chr * (5 - i));
	        }
	        else
	        {
	           SumBlock1 += eval(chr * (13 - i));
	        }
	     }
	        RemBlock1 = eval(SumBlock1 - (parseInt(SumBlock1 / 11) * 11));
	        if (RemBlock1 <= 1)
	        {
	           RemBlock1 = 0;
	        }
	        else
	        {
	           RemBlock1 = eval(11 - RemBlock1);
	        }
	     
	     for (var i = 0; i < (MaskNumber.length - 2); i++)
	     {
	        var chr = MaskNumber.substring(i, i + 1);
	        if (i <= 4)
	        {
	           SumBlock2 += eval(chr * (6 - i));
	        }
	        else
	        {
	           SumBlock2 += eval(chr * (14 - i));
	        }
	     }
	        SumBlock2 += eval(2 * RemBlock1);
	        RemBlock2 = eval(SumBlock2 - (parseInt(SumBlock2 / 11) * 11));
	        if (RemBlock2 <= 1)
	        {
	           RemBlock2 = 0;
	        }
	        else
	        {
	           RemBlock2 = eval(11 - RemBlock2);
	        }
	     
	     var result = "";
		 
		 if ((RemBlock1 == MaskNumber.substring(12,13)) && (RemBlock2 == MaskNumber.substring(13,14)))
	     {
				if(MaskNumber!='00000000000' && MaskNumber!='11111111111' && MaskNumber!='22222222222' && MaskNumber!='33333333333' && MaskNumber!='44444444444' && MaskNumber!='55555555555' && MaskNumber!='66666666666' && MaskNumber!='77777777777' && MaskNumber!='88888888888' && MaskNumber!='99999999999') 
				{
					if (str.length<18)
					{
						obj.value=''
						for(var i=0;i<=str.length;i++)
						{
							obj.value = obj.value + str.substr(i,1)
							
							//formatando o CNPJ = ##.###.###/####-## 
							if(i==1 || i==4) 	
								obj.value = obj.value + '.'
							if(i==7)
								obj.value = obj.value + '/'
							if(i==11)
								obj.value = obj.value + '-'
						}	
					}
					return true;
				}  
				else
				{alert("os digitos verificadores são: "+RemBlock1+RemBlock2)
					alert("CNPJ Inválido!")
					//'obj.value = "";
					obj.focus();
					return false;
				}
			}
			else
				{
					alert("CNPJ Inválido!")
					//obj.value = "";
					obj.focus();
					return false;
				}
	  }
	else if (str.length == 11 && str.length != 0)
	{

		   var MaskNumber = "";
		   var Lpad = "00000000000";
		   for (var i = 0; i < str.length; i++)
		   {
		      var chr = str.substring(i, i + 1);
		      if (chr >= "0" && chr <= "9")
		      {
		         MaskNumber += chr;
		      }
		   }
	     
		   MaskNumber = Lpad.substring(0, 11 - MaskNumber.length) + MaskNumber;
		   MaskNumber = MaskNumber.substring((MaskNumber.length - 11), MaskNumber.length);
		   SumBlock1 = 0,
		   RemBlock1 = 0;
		   SumBlock2 = 0;
		   RemBlock2 = 0;

	      	        
		   for (var i = 0; i < (MaskNumber.length - 2); i++)
		   {
		      var chr = MaskNumber.substring(i, i + 1);
		      SumBlock1 += eval(chr * (10 - i));
		   }
	 	   RemBlock1 = eval(SumBlock1 - (parseInt(SumBlock1 / 11) * 11));
		   if (RemBlock1 <= 1)
		   {
		      RemBlock1 = 0;
		   }
		   else
		   {
		      RemBlock1 = eval(11 - RemBlock1);
		   }
		   for (var i = 0; i < (MaskNumber.length - 2); i++)
		   {
		      var chr = MaskNumber.substring(i, i + 1);
		      if (i <= 9)
		      {
		         SumBlock2 += eval(chr * (11 - i));
		      }
		   }
		   SumBlock2 += eval(2 * RemBlock1);
		   RemBlock2 = eval(SumBlock2 - (parseInt(SumBlock2 / 11) * 11));
		   if (RemBlock2 <= 1)
		   {
		      RemBlock2 = 0;
		   }
		   else
		   {
		      RemBlock2 = eval(11 - RemBlock2);
		   }
		   var result = "";	
		   
		   var strChrAux=''
		       
			if ((RemBlock1 == MaskNumber.substring(09,10)) && (RemBlock2 == MaskNumber.substring(10,11)))
			{		
				if(MaskNumber!='00000000000' && MaskNumber!='11111111111' && MaskNumber!='22222222222' && MaskNumber!='33333333333' && MaskNumber!='44444444444' && MaskNumber!='55555555555' && MaskNumber!='66666666666' && MaskNumber!='77777777777' && MaskNumber!='88888888888' && MaskNumber!='99999999999') 
				{
					if (str.length<14)
					{
						obj.value=''
						for (var i = 0; i < str.length; i++)
						{
							obj.value = obj.value + str.substr(i,1)
							
							//Formando o CPF '###.###.###-##'
							if(i==2 || i==5) 	
								obj.value = obj.value + '.'
							if(i==8)
								obj.value = obj.value + '-'
						}	
					}
					return true;
				}  
				else
				{
					alert("CPF Inválido!")
					//obj.value = "";
					obj.focus();
					return false;
				}
			} 
			else
				{alert("os  verificadores são: "+RemBlock1+RemBlock2)
					alert("CPF Inválido!")
					//obj.value = "";
					obj.focus();
					return false;
				}
		}
	 else
				{
					alert("CPF/CNPJ Inválido!")
					//obj.value = "";
					obj.focus();
					return false;
				}
	}
}
////////////////////////////////////////////////////////////////////////////////////////
//	so permite a entrada de números
////////////////////////////////////////////////////////////////////////////////////////
function SoEntraNumero (Campo) 
{
	var Valor = Campo.value;
	var Numeros="1234567890";
	var NumeroValidado="";	
	for (Cont=0; Cont < Valor.length; Cont++) 
	{
		TempChar = Valor.substring(Cont,Cont+1);		
		if	(Numeros.indexOf(TempChar,0) == -1)
		{			
			alert("Campo Numérico");			
		}
		else
		{
			NumeroValidado = NumeroValidado + TempChar;
		}
		
	}
	Campo.value = NumeroValidado;
}


////////////////////////////////////////////////////////////////////////////////////////
//	so permite a entrada de números sem alert
////////////////////////////////////////////////////////////////////////////////////////
function removerCaracteres(Campo) 
{
	var Valor = Campo.value;
	var Numeros="1234567890";
	var NumeroValidado="";	
	for (Cont=0; Cont < Valor.length; Cont++) 
	{
		TempChar = Valor.substring(Cont,Cont+1);		
		if	(Numeros.indexOf(TempChar,0) != -1)
		{			
			NumeroValidado = NumeroValidado + TempChar;
		}

		
	}
	Campo.value = NumeroValidado;
}



var newformat = {date:{m:0,d:1,y:2},time:{h:0,m:1}};

String.prototype.getDateStr = function (dateformat) {
 re = {d:"\\d(\\d|)",m:"([\\d]|)\\d",y:"\\d\\d([\\d]|)([\\d]|)" };
 tempobj = {};
 for(var i=0; i<3; i++)
  for(var j in dateformat)
   if(dateformat[j]==i) {
    dateformat[i]=j;
    break;
   }
 var re_str = "\\b" + re[dateformat[0]] + "([\\.]|[\\/])" + re[dateformat[1]] + "([\.]|[\/])" + re[dateformat[2]] + "\\b";
 var date = this.match(new RegExp(re_str,"gmi"));
 return  (date==null ? null : date[0].indexOf(".")!=-1 && date[0].indexOf("/")!=-1? null : date[0]);
}

String.prototype.getTimeStr = function (timeformat) {
 var time = this.match(/\b(\d|)\d\:\d\d\b/);
 return (time==null ? null : time[0]);
}


String.prototype.toDateTime = function (format) {
 typeof(format)=="undefined"? format = {date:{y:2,m:1,d:0},time:{h:0,m:1}} : null;
 with(this) {
  var d_ = getDateStr(format.date);
  var d = d_!= null? d_.split(d_.match(/\D/)) : [1,1,1970];
  d[format.date.m]--;
  new String(d[format.date.y]).length==2? d[format.date.y]=parseInt("19" + d[format.date.y]) : null;
  var t_ = getTimeStr(format.time);
  t = t_!=null? t_.split(t_.match(/\D/)) : [0,0];
 }

 with(format) {
  var td = new Date (d[date.y],d[date.m],d[date.d],t[time.h],t[time.m]);
  return (td.getFullYear()==d[date.y] && td.getMonth()==d[date.m] && 
         td.getDate()==d[date.d] && td.getHours()==t[time.h] && 
         td.getMinutes()==t[time.m]? td : null);
 }
}

function update(thisEl) {
 var text = thisEl.options[thisEl.selectedIndex].innerHTML;
 var items = document.getElementsByTagName("SELECT");
 for(var i=0; i<items.length; i++) {
  try {
  if(items[i]==thisEl) {continue;}
  if(items[i].selectedIndex!=-1 && items[i].options[items[i].selectedIndex].innerHTML==text)
    items[i].selectedIndex=-1;
  } catch(exc) {}
 }
}

function PassaItem(Origem, Destino, Indice)
{
	var novoOption = new Option();
	var antigoOption = Origem.options(Indice);

	novoOption.text = antigoOption.text;
	novoOption.value = antigoOption.value;
	Destino.options.add(novoOption);
	
	Origem.options.remove(Indice);
}



function PassaItens(Origem, Destino, Todos)
{
	var i;
	var o = Origem.options;

	for(i = 0; i < o.length;)
	{
		if(Todos || o(i).selected)
		{
			PassaItem(Origem, Destino, i);
		}
		else
		{
			i++;
		}
	}
}




// Retorna um xmldom a partir de uma URL
function xmlFromServer(strURL)
{
	window.status = 'Carregando dados';
	var xml = new ActiveXObject("Microsoft.XMLDOM")
	xml.async = false
	xml.load(strURL)
	window.status = '';
	
	return xml;
}
	
// Faz uma validação de formulário no servidor à partir de uma URL
function validateOnServer(strURL)
{
	var xml = xmlFromServer(strURL);
	return(xml.documentElement.nodeTypedValue == "true");
}

// Faz uma validação de formulário no servidor à partir de uma URL
function returnFromServer(strURL)
{
	var xml = xmlFromServer(strURL);
	return(xml.documentElement.nodeTypedValue);
}

// Retorna vários campos de um XML vindo do servidor em um vetor
function returnMultiFieldXML(strURL)
{
	var xml = xmlFromServer(strURL);

	var nodeList = xml.documentElement.childNodes;
	var values = new Array(nodeList.length);
	alert(nodeList.length)
	for (var i = 0; i < nodeList.length; i++) 
	{		
		if (nodeList.item(i).nodeTypedValue>0){	values[i] = nodeList.item(i).nodeTypedValue;}
	}
	return(values);
}
////////////////////////////////////////////////////////////////////////////////////////
//	verifica se o XML gerado por um RS é EOF
////////////////////////////////////////////////////////////////////////////////////////
function ValidaRsEof(xml) 
{	
    var doc = xml.documentElement;	
    var EOF = true;		
    if(doc.hasChildNodes())                  
            for(var i=0; i<doc.childNodes.length; i++)
            {
				if (doc.childNodes(i).tagName == 'rs:data')	
				{						
					if (doc.childNodes(i).hasChildNodes())
					EOF = false;					
				}
				
			}  
      
    return(EOF);
}

// Alterada em 04/02/2005 por genival para atender a necessidade dos colaboradores
//onchange=""FillListBox(this.FormMovimentacao.SelectPessoas, '/SICAP/SQLXML.asp?orgaoDestino=' + this.value ,'0','<< Selecione o Destino >>')""
////////////////////////////////////////////////////////////////////////////////////////
//	gera selects a partir de um XML/XSL
////////////////////////////////////////////////////////////////////////////////////////
function FillListBox(select, xmlurl, emptyOption, textEmptyOption, xslurl, xslopcao)
{  
	var aux;
	var indice;
	var ArqXls = "";
	var xsl;
	var xml;	
	var strSelect;
	
	indice = xmlurl.indexOf("-");
	
	if (indice != -1){
		aux = xmlurl.substring(0, xmlurl.indexOf("-"))
	} else {
		aux = xmlurl;
	}

	// Load XML
	xml = xmlFromServer(aux);
	
	//if (xslurl == "/SICAP/XSL.asp?acao=NUMERA") {	

	if (xslurl != '' ) {
		if (xslurl == "NUMERA") {
			ArqXls = "/SICAP/XSL.asp?acao=NUMERA";
		} else {

			if (xslurl == "COLABORADOR") {                    	
				ArqXls = "/SICAP/XSL.asp?acao=COLABORADOR";   	
			}												  	
			else {											  	
				ArqXls = xslurl;						  	  	
			}           						              	
		}
	}
	else {
		ArqXls = "/SICAP/XSL.asp";	
	}
	
	if (xslurl == 'XSL_Arquivamento.asp'){
		ArqXls = "/SICAP/XSL_Arquivamento.asp"
	}

	if (xslopcao != '' && xslopcao != undefined){
		ArqXls = xslurl
	}	
	
	xsl = xmlFromServer(ArqXls);
	
	// Transform
	strSelect = select.outerHTML;

	//--- Debug
	//window.open(xmlurl)
	//window.open(xslurl)
	//select.outerHTML = strSelect.substring(0, strSelect.indexOf(">", 6) + 1) + (emptyOption ? '<OPTION VALUE=' + emptyOption + '>' + textEmptyOption + '</OPTION>' : '') + xml.transformNode(xsl) + '</SELECT>';
    if (textEmptyOption != "") {   						  				
    	select.outerHTML = strSelect.substring(0, strSelect.indexOf(">", 6) + 1) + (emptyOption ? "<OPTION VALUE=" + emptyOption + ">" + textEmptyOption + "</OPTION>" : "") + xml.transformNode(xsl) + "</SELECT>";   	
    } else {                                                 					
    	select.outerHTML = strSelect.substring(0, strSelect.indexOf(">", 6) + 1) + xml.transformNode(xsl) + "</SELECT>";   	
    }                                                        					

}



////////////////////////////////////////////////////////////////////////////////////////
//	gera selects a partir de um XML/XSL
////////////////////////////////////////////////////////////////////////////////////////
function FillListBox_Original(select, xmlurl, emptyOption, textEmptyOption, xslurl, xslopcao)
{

	var aux;
	var indice;
	
	indice = xmlurl.indexOf("-");
	
	if (indice != -1){
		aux = xmlurl.substring(0, xmlurl.indexOf("-"))
	} else {
		aux = xmlurl;
	}

	// Load XML
	var xml = xmlFromServer(aux);

	var ArqXls = "";
	
	if (xslurl != '' ) {
		if (xslurl == "NUMERA") {
			ArqXls = "/SICAP/XSL.asp?acao=NUMERA";
		} else {
			ArqXls = xslurl;
		}
	}
	else {
		ArqXls = "/SICAP/XSL.asp";	
	}
	
	// Load XSL codigo original
	//var ArqXls = "/SICAP/XSL.asp";

	if (xslurl == 'XSL_Arquivamento.asp'){
		var ArqXls = "/SICAP/XSL_Arquivamento.asp"
	}

	if (xslopcao != '' && xslopcao != undefined){
		var ArqXls = xslurl
	}	
	
	var xsl = xmlFromServer(ArqXls);
	
	// Transform
	var strSelect = select.outerHTML;

	//--- Debug
	//window.open(xmlurl)
	//window.open(xslurl)
	select.outerHTML = strSelect.substring(0, strSelect.indexOf(">", 6) + 1) + (emptyOption ? '<OPTION VALUE=' + emptyOption + '>' + textEmptyOption + '</OPTION>' : '') + xml.transformNode(xsl) + '</SELECT>';

}

/**
 * Esta função carrega os options de um select a partir de um xml de um rs Save
 * 
 *
 * @version					1.0
 * @author					Cleofas
 *
 * @param select			Objeto select que vai ser carregado.
 * @param urlXML			url com o XML com os Option que vão ser carregados.
 * @param campoValor		Campo do xml que vai ser o valor do option
 * @param campoDescricao	Campo do xml que vai ser a descrição do option
 * @param emptyOption		value do option vazio.  
 * @param textEmptyOption	texto do option vazio.
 *						
 * @return				Select carregado
 * Ex.					LoadSelectRsUrl(this.form.OrgaosDestino, '/SICAP/SQLXML.asp?MOTIVO=' + this.value ,  '@CodOrgao', '@SiglaOrgao','0','<< Selecione o Destino >>')
 */

function LoadSelectRsUrl(select, urlXML, campoValor, campoDescricao, emptyOption, textEmptyOption)
{


	
	// Load XML
	XML = xmlFromServer(urlXML);
	XML.loadXML((XML.selectSingleNode('//rs:data'))?XML.selectSingleNode('//rs:data').xml:'<rs:data></rs:data>');
	

	var strSelect = select.outerHTML;	
	var strXSL ;	
	strXSL = '	<?xml version="1.0" encoding="ISO-8859-1" ?>';
	strXSL += '		<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">';
	strXSL += '		<xsl:template match="/">';
	strXSL += '			<xsl:for-each select="*/node()">';	
	strXSL += '				<xsl:element name="option">';
	strXSL += '					<xsl:attribute name="value">'
	var conector = '';
	var vtCampoValor = campoValor.split(',');
	for(i=0; i< vtCampoValor.length;i++)
	{
		strXSL += conector + '<xsl:value-of select="'+ vtCampoValor[i] +'"/>';
		conector = ' - ';
	}
	strXSL += '</xsl:attribute>';
	var vtCampoDescricao = campoDescricao.split(',');
	conector = '';
	for(i=0; i< vtCampoDescricao.length;i++)
	{
		strXSL += conector + '<xsl:value-of select="'+ vtCampoDescricao[i] +'"/>' ;
		conector = ' - ';
		
	}	
	strXSL += '				</xsl:element>	';
	strXSL += '			</xsl:for-each>	';	
	strXSL += '		</xsl:template>	';
	strXSL += '	</xsl:stylesheet>';
	
	var xsl = new ActiveXObject("Microsoft.XMLDOM");
	
	xsl.loadXML(strXSL);	
	//alert(xsl.xml)
	//alert(XML.xml)
	//alert(XML.transformNode(xsl.documentElement))
	
	try
	{
		select.outerHTML = strSelect.substring(0, strSelect.indexOf('>', 6) + 1) + (emptyOption ? '<OPTION VALUE=' + emptyOption + ' selected>' + textEmptyOption + '</OPTION>' : '')+ XML.transformNode(xsl.documentElement) +'</SELECT>';
					
	}catch(e){
	
		alert(e.description);		
	}		

		
}


////////////////////////////////////////////////////////////////////////////////////////
//	valida os números a serem associados
////////////////////////////////////////////////////////////////////////////////////////
function ValidaAssociado(select, input)
{
	// Load XML
	var xmlurl = "/SICAP/SQLXML_Associado.asp?ASSOCIADO=" + input.value;
	var xml = xmlFromServer(xmlurl);
	if (input.value.length!=12 && input.value.length!=15)	
	{
		alert('Nº Documento/Processo tem 12 ou 15 dígitos.');
	}	
	else if (ValidaRsEof(xml)) 
	{
		alert( 'NÚMERO DE DOCUMENTO/PROCESSO NÃO ENCONTRADO.');
	}
	else 
	{
		// Load XSL
		var ArqXls = "/SICAP/XSL_Associado.asp"	
		var xsl = xmlFromServer(ArqXls);		
	
		//guarda os números já validados.
		var Associado_value = '';
		var vtAssociado_value = '';	
		var Associado_text = '';
		var vtAssociado_text = '';	
	
		for (var i=0; i < select.length; i++) 
		{	
			//verifica se não existe um número já associado
			var valorComp = select.options[i].text;			
			valorComp = valorComp.substring(0, valorComp.indexOf(" - ", 11) + 1);
			if (parseInt(valorComp,10) != parseInt(input.value,10))
			{
				//cria vetor com valores já validados
				Associado_value = Associado_value + (Associado_value==''? select.options[i].value :','+  select.options[i].value);
				Associado_text = Associado_text + (Associado_text==''? select.options[i].text :','+  select.options[i].text);
			}
		}

		vtAssociado_value = Associado_value.split(",");
		vtAssociado_text = Associado_text.split(",");
	
		// Transform
		var strSelect = select.outerHTML;
		strSelect =  strSelect.substring(0, strSelect.indexOf(">", 6) + 1) ;
		//inclui os campos já validados
		for (var i=0; i <vtAssociado_value.length ; i++) 
		{
		  if (vtAssociado_value[i].length > 0 )	strSelect  = strSelect + '<OPTION VALUE=' + vtAssociado_value[i] +' >' + vtAssociado_text[i] + '</OPTION>';
		}
		//caso o numero exita no sicap ele vai ser incluido
		strSelect  = strSelect + xml.transformNode(xsl) + '</SELECT>';	
		select.outerHTML = strSelect 
	}
	
	input.value = "";	
	input.focus();
	

}
////////////////////////////////////////////////////////////////////////////////////////
//	Selecionando várias opções ao mesmo tempo
////////////////////////////////////////////////////////////////////////////////////////
function MarcaLista(campo) {
	
	var tamanho = campo.options.length;
	var valores = '' 
	
	for (var i=0; i < tamanho; i++)
	{	
		campo.options[i].selected = true;
		
		valores	 +=(valores)?'#':'';		
		valores  += campo.options[i].value;			
		valores  += ';';		
		valores  += campo.options[i].text;	
		
	}	

	var vtselect;	
	if (opener != undefined)
	{		
		vtselect = opener.document.all('vtselect');
	}
	else
	{		
		vtselect = document.all('vtselect');
	}
	
	if(vtselect!=null)
	{
		vtselect.value = valores;
	}	
}
////////////////////////////////////////////////////////////////////////////////////////
//	Apagando a opção em branco do select quando uma opção é removida
////////////////////////////////////////////////////////////////////////////////////////
function BumpUp(box) { 
	for(var i=0; i<box.options.length; i++) { 
		if(box.options[i].value == "") { 
			for(var j=i; j<box.options.length-1; j++) { 
				box.options[j].value = box.options[j+1].value; 
				box.options[j].text = box.options[j+1].text; 
			} 
			var ln = i; 
			break; 
		} 
	} 
	if(ln < box.options.length) { 
		box.options.length -= 1; 
		BumpUp(box); 
	} 
} 
////////////////////////////////////////////////////////////////////////////////////////
//	Removendo os valores do Select
////////////////////////////////////////////////////////////////////////////////////////
function remove(box) {
	for(var i=0; i<box.options.length; i++) {
		if(box.options[i].selected && box.options[i] != "") {
			box.options[i].value = "";
			box.options[i].text = "";
		}
	}
	BumpUp(box);
}





function ReplaceCompleto(valor, velho, novo) {
	temp = "" + valor; // temporary holder

	while (temp.indexOf(velho)>-1) {
		pos = temp.indexOf(velho);
		temp = "" + (temp.substring(0, pos) + novo + temp.substring((pos + velho.length), temp.length));
	}
	return (temp);
}


var args = '';

function AbreIdsFechaArgs(Ids){

var vtArgs;


	if ((args != null) && (args !=''))
	{
		vtArgs = args.split(',')		
		for(var i = 0; i < vtArgs.length; i++)
		{	
			if(document.all(vtArgs[i]))	
			document.all(vtArgs[i]).style.display = "none";
		
		}
	}

	for(var i = 0; i < arguments.length; i++)
	{			
		if(document.all(arguments[i]))
		{
			document.all(arguments[i]).style.display = "block";
			args += ((args)? ','+arguments[i]:arguments[i]);
		}	
	}
	
	
	
}


function AbreIdsFechaArgsVsb(Ids){

var vtArgs;


	if ((args != null) && (args !=''))
	{
		vtArgs = args.split(',')		
		for(var i = 0; i < vtArgs.length; i++)
		{		
			document.all(vtArgs[i]).style.visibility = "hidden";
		}
	}

	for(var i = 0; i < arguments.length; i++)
	{			
		document.all(arguments[i]).style.visibility = "visible";
		
		args += ((args)? ','+arguments[i]:arguments[i]);
	}
	
	
	
}
