/* classe Solusoft */
Solusoft = {
    IsIE: navigator.appName.toLowerCase().indexOf('microsoft')!=-1,
    isOpera: navigator.userAgent.toLowerCase().indexOf("opera")!= -1,
    AZ: /[A-Z]/i,
    Num: /[0-9]/,
    TempCampos: new Array(), /* array bi-dimencional */
    btnCalendario: new String('../botao/btn_calendario.gif'), /* endereço do botão de calendario */
    enderecoImg: new String('../images'), /* endereço das imagens no servidor www */	
    enderecoBotao: new String('../botao'), /* endereço da pasta de botões no servidor */
    calendarioJs: new String('../calendario/biblio/calendar.js'), /* arquivo js do calendario */
    calendarioCss: new String('../calendario/biblio/calendar.css'), /* arquivo css do calendario */
    corFundoTabela: new String('#EAEAEA'), /* cor de fundo da tabela */
    corFundoTabelaSelec: new String('#F7F7F7'), /* cor de fundo da tabela quando está selecionada */ 
    parametro : {funcao: '', objeto: null},
    listObjtErro: null,
    /* Variaveis (classe) de controle, não apagar ou alterar sem consultar */
    folderAtual: 1, 
    qtdaFolder: 0, 
    folderControle: 1,
    dadosFilho1: null, /* variavel de relacionamento */
    dadosBuscaFilho1: null, /* variavel de relacionamento */
    dadosFilho2: null, /* variavel de relacionamento */
    dadosBuscaFilho2: null, /* variavel de relacionamento */
    dadosFilho3: null, /* variavel de relacionamento */
    dadosBuscaFilho3: null, /* variavel de relacionamento */
    dadosFilho4: null, /* variavel de relacionamento */
    dadosBuscaFilho4: null, /* variavel de relacionamento */
    dadosFilho5: null, /* variavel de relacionamento */
    dadosBuscaFilho5: null, /* variavel de relacionamento */
    dadosFilho6: null, /* variavel de relacionamento */
    dadosBuscaFilho6: null, /* variavel de relacionamento */
    dadosFilho7: null, /* variavel de relacionamento */
    dadosBuscaFilho7: null, /* variavel de relacionamento */
    dadosFilho8: null, /* variavel de relacionamento */
    dadosBuscaFilho8: null, /* variavel de relacionamento */
   
    //Função criada para contornar o problema encontrado na internacionalização
	excluirMsg: function (msg) {
        if (!confirm(msg))
	      return;
        if (window.excluindo)
            excluindo(registroAtual); /* "registroAtual" -> variavel definida na página */            
	},
    
    acao: function (form,acao,opcaoNavegacao) {			        
        
        if (acao.toLowerCase() == 'localiza'){
            if (window.antesLocaliza){ /* verifica se a função antesAlterar está definida */
                if (antesLocaliza())
                	acaoAUX = acao;
                else
                	acaoAUX = "";
             }else {
                if (window.localizando)
                	localizando();
                	
               	acaoAUX = "";
             }	
             this.mudaFolder(0,true);
        }else if (acao.toLowerCase() == 'alterar'){
            if (window.antesAlterar){ /* verifica se a função antesAlterar está definida */
                if (antesAlterar())
                	acaoAUX = acao;		
                else
                	acaoAUX = "";
             }else
             	acaoAUX = acao;	  			  
             this.mudaFolder(0,false);
        }else if (acao.toLowerCase() == 'incluir'){
            form.reset();
            if (window.antesIncluir){ /* verifica se a função antesIncluir está definida */
                if (antesIncluir())
                	acaoAUX = acao;
                else      
                    acaoAUX = "";
            }else
            	acaoAUX = acao;  
           	this.mudaFolder(0,false);          
        }else if (acao.toLowerCase() == 'desfazer'){
	        if (window.antesDesfazer){ /* verifica se a função antesDesfazer está definida */
                if (antesDesfazer()){
                	this.voltaTemp(form);
    	        	acaoAUX = 'navegacao';	
                }else
	    	        acaoAUX = "";
            }else {
	            this.voltaTemp(form);
    	        acaoAUX = 'navegacao';
    	    }
    	    this.mudaFolder(0,true);
        }else if (acao.toLowerCase() == 'gravar'){	
            if (window.antesValidaCampos){ /* verifica se existe alguma função antes de validar os dados*/  
                if (antesValidaCampos()){
                    if (this.validaDados(form)){
		                if (window.depoisValidaCampos) /* verifica se existe alguma função depois de validar os dados */  
		                    depoisValidaCampos();
		                if (window.gravando)
		                    gravando(form,this.retornaValorLink(form));			
		                acaoAUX = 'navegacao';    
		            }else
		            	acaoAUX = "";			
		            
                }else
                	acaoAUX = "";		
            }else{ 	
	            if (this.validaDados(form)){
	                if (window.depoisValidaCampos) /* verifica se existe alguma função depois de validar os dados */  
	                    depoisValidaCampos();
	                if (window.gravando)
	                    gravando(form,this.retornaValorLink(form));			
	                    
	                acaoAUX = 'navegacao';
	            }else			
	            	acaoAUX = "";
	        }    
	        this.mudaFolder(0,true);
        }else if (acao.toLowerCase() == 'excluir'){    
            // confirma a opção do excluir        
			Idioma.mensagemAviso("alerta.excluirRegistro",this.excluirMsg);
            acaoAUX = 'navegacao';
            this.mudaFolder(0,true);
        }else if (acao.toLowerCase() == 'navegacao'){           
            if (window.navegacao)
                navegacao(opcaoNavegacao,registroAtual);
            if ("primeiro,ultimo".indexOf(opcaoNavegacao) > -1)
                acaoAUX = opcaoNavegacao;
            else
                acaoAUX = acao;
            this.mudaFolder(0,true);    
        }else if (acao.toLowerCase() == 'paginar'){
        	if (window.paginar)
        	   paginar(opcaoNavegacao,registroInicial,registroFinal);
        	acaoAUX = "";
        	this.mudaFolder(0,true);
        }if (acao.toLowerCase() == 'visualizar'){
            if (window.antesVisualizar){ /* verifica se a função antesAlterar está definida */
                if (antesVisualizar())
                	acaoAUX = acao;
                else
                	acaoAUX = "";
             }else {
                if (window.visualizando){
                	visualizando();
                }
               	acaoAUX = "";
             }	
             this.mudaFolder(0,true);
        }
        
        if (acaoAUX != ""){
    	    if (window.depoisHabilitaBotoes)
    	        depoisHabilitaBotoes(acaoAUX);  
	        if (acao.toLowerCase() == 'localiza'){
	            if (window.depoisLocaliza) /* verifica se a função antesAlterar está definida */
	                depoisLocaliza();
	        }else if (acao.toLowerCase() == 'alterar'){
	            this.geraTemp(form);
	            if (window.depoisAlterar) /* verifica se a função maisAlterar está definida */
	                depoisAlterar();
	        }else if (acao.toLowerCase() == 'incluir'){
	            if (window.depoisIncluir) /* verifica se a função maisIncluir está definida */
	                depoisIncluir();
	        }else if (acao.toLowerCase() == 'desfazer'){
	            if (window.depoisDesfazer) /* verifica se a função maisDesfazer está definida */
	                depoisDesfazer();
	        }
	    }
    },
    
    validaDados: function(form){
        var Tags = ['input','textarea','select','radio'];
        if (typeof form == "undefined") form = document;
        for(var z=0;z<Tags.length;z++){
            Inputs=form.getElementsByTagName(Tags[z]);
            for(var i=0;i<Inputs.length;i++){
                if(('button,image,submit,reset').indexOf(Inputs[i].type.toLowerCase())==-1){
                    nomeCampo = Inputs[i].getAttribute('nomeCampo');	
                    obrigatorio = Inputs[i].getAttribute('obrigatorio');
                    campoChave = Inputs[i].getAttribute('campoChave');		
                    
                    if (obrigatorio != null){ /* na alteração habilita todos os campos menos os chaves */
                        if (obrigatorio.toLowerCase() == 'true'){
                            if (Inputs[i].type.toLowerCase() == 'radio'){
                                for (j=0;j<document.getElementsByName(Inputs[i].id).length;j++) 
                                    if (document.getElementsByName(Inputs[i].id)[j].checked)
                                        break;
                                valor = document.getElementsByName(Inputs[i].id)[j].value;
                            }else
                                valor = Inputs[i].value;
                            
                            if ((nomeCampo != null) && (valor == "")){
                                alert('O campo "' + nomeCampo + '" deve ser preenchido!');
                                Inputs[i].focus();
                                return false;
                            }else if (valor == ""){
                                alert('O campo "' + Inputs[i].id + '" deve ser preenchido!');
                                Inputs[i].focus();
                                return false;
                            }					       				
                        }
                    }
                }
            }
        }
        return true;
    },
    
    habilitaCampos: function(form,status) {
        var Tags = ['input','textarea','select','radio'];
        if (typeof form == "undefined") form = document;
        for(var z=0;z<Tags.length;z++){
            Inputs=form.getElementsByTagName(Tags[z]);
            for(var i=0;i<Inputs.length;i++){       
                if(('button,image,submit,reset').indexOf(Inputs[i].type.toLowerCase())==-1){
                    campoChave = Inputs[i].getAttribute('campoChave');			
                    	
                    if ((status.toLowerCase() == 'alterar') && (campoChave == null)){ /* na alteração habilita todos os campos menos os chaves */
                        if (Inputs[i].type.toLowerCase() == 'radio'){
                            for (j=0;j<document.getElementsByName(Inputs[i].id).length;j++) 
                                document.getElementsByName(Inputs[i].id)[j].disabled = false;						  						 					                                
                        }
                        else	
                            Inputs[i].readOnly = false;
                    }else if ((status.toLowerCase() == 'incluir') && (campoChave == null)){	
                        if (Inputs[i].type.toLowerCase() == 'radio'){
                            for (j=0;j<document.getElementsByName(Inputs[i].id).length;j++) 
                                document.getElementsByName(Inputs[i].id)[j].disabled = false;						  						 					
                        }
                        else
                            Inputs[i].readOnly = false;
                    }else if ((status.toLowerCase() == 'navegacao') || (status.toLowerCase() == 'ultimo') || (status.toLowerCase() == 'primeiro')){ /* na navegação desabilita todos o campos */                                                
                        if (Inputs[i].type.toLowerCase() == 'radio'){
                            for (j=0;j<document.getElementsByName(Inputs[i].id).length;j++) 
                                document.getElementsByName(Inputs[i].id)[j].disabled = true;		
                        }
                        else
       	   					Inputs[i].readOnly = true;
                    }
                }
            }
        }
        
        var Tags = ['tBody'];
        if (typeof form == "undefined") form = document;
        for(var z=0;z<Tags.length;z++){
            Inputs=form.getElementsByTagName(Tags[z]);
            for(var i=0;i<Inputs.length;i++){       
            	if ('dados'.indexOf(Inputs[i].id) == -1){            	   
            	    if ((status.toLowerCase() == 'incluir') || (status.toLowerCase() == 'alterar')){
            			eval('statusBrowse' + Inputs[i].id.replace('dados','') + ' = true;');
            		}else
            			eval('statusBrowse' + Inputs[i].id.replace('dados','') + ' = false;');
            	}            	 
            }
        }
    },
    
    /* controle dos botões */
    habilitaBotoes: function (form, status){		
        var Tags = ['img'];
        if (typeof form == "undefined") form = document;
        for(var z=0;z<Tags.length;z++){
            Inputs=form.getElementsByTagName(Tags[z]);
            for(var i=0;i<Inputs.length;i++){	
                if (Inputs[i].id.indexOf("bt") > -1){		
	                /* navegaçao -> botões de navegação */
	                if ((("btPrimeiro,btAnterior,btProximo,btUltimo,btLocalizar,btIncluir,btAlterar,btExcluir").indexOf(Inputs[i].id) > -1) && ((status.toLowerCase() == 'navegacao') || (status.toLowerCase() == 'ultimo') || (status.toLowerCase() == 'primeiro'))){
	                    if ((((Inputs[i].id == "btPrimeiro") || (Inputs[i].id == "btAnterior")) && (status.toLowerCase() == "primeiro"))
	                        || (((Inputs[i].id == "btUltimo") || (Inputs[i].id == "btProximo")) && (status.toLowerCase() == "ultimo"))){
	                        Inputs[i].className= 'botoesDisabled';
	                        Inputs[i].disabled= true;
	                    }else{                        
	                        Inputs[i].className= 'botoes';
	                        Inputs[i].disabled= false;
	                    }
	                    /* se não for navegação desabilita */   
	                }else if ((("btPrimeiro,btAnterior,btProximo,btUltimo,btLocalizar,btIncluir,btAlterar,btExcluir").indexOf(Inputs[i].id) > -1) && ((status.toLowerCase() == 'incluir') || (status.toLowerCase() == 'alterar'))){
	                    Inputs[i].className= 'botoesDisabled';
	                    Inputs[i].disabled= true;
	                    /* incluir ou gravar -> botões quando é chamado essa ação */   
	                }else if ((("btGravar,btDesfazer").indexOf(Inputs[i].id) > -1) && ((status.toLowerCase() == 'incluir') || (status.toLowerCase() == 'alterar'))){
	                    Inputs[i].className='botoes';
	                    Inputs[i].disabled= false;				
	                }else if ((("btGravar,btDesfazer").indexOf(Inputs[i].id) > -1) && ((status.toLowerCase() == 'navegacao') || (status.toLowerCase() == 'ultimo') || (status.toLowerCase() == 'primeiro'))){
	                    Inputs[i].className= 'botoesDisabled';
	                    Inputs[i].disabled= true;
	                }else if ((("btAnterior,btProximo,btGravar,btAlterar,btExcluir,btDesfazer").indexOf(Inputs[i].id) > -1) && (status.toLowerCase() == 'inicio')){		    
	                    Inputs[i].className= 'botoesDisabled';
	                    Inputs[i].disabled= true;
	                }
                }
            }
        }
    },
    
    geraTemp: function(form){
        var Tags = ['input','textarea','select','radio','checkbox'];
        var elementosTipoRadio = ""; /* para colocar só o valor selecionado */
        if (typeof form == "undefined") form = document;
        for(var z=0;z<Tags.length;z++){
            Inputs=form.getElementsByTagName(Tags[z]);
            for(var i=0;i<Inputs.length;i++)
                if(('button,image,submit,reset').indexOf(Inputs[i].type.toLowerCase())==-1){
                    if (Inputs[i].type.toLowerCase() == 'radio'){
                        for (j=0;j<document.getElementsByName(Inputs[i].id).length;j++) 
                            if (document.getElementsByName(Inputs[i].id)[j].checked)
                                break;
                        if (elementosTipoRadio.indexOf(Inputs[i].id.toLowerCase()) == -1){	   
                            elementosTipoRadio += Inputs[i].id.toLowerCase() + ",";
                            this.TempCampos.push(new Array(Inputs[i].id.toLowerCase(),document.getElementsByName(Inputs[i].id)[j].value));
                        }
                    }else if (Inputs[i].type.toLowerCase() == 'checkbox'){
                        if (Inputs[i].checked)
                            this.TempCampos.push(new Array(Inputs[i].id.toLowerCase(),Inputs[i].value));
                    }else
                        this.TempCampos.push(new Array(Inputs[i].id.toLowerCase(),Inputs[i].value));
                }
        }
    },
    
    voltaTemp: function(form){
        var Tags = ['input','textarea','select','radio','checkbox'];
        if (typeof form == "undefined") form = document;
        for(var z=0;z<Tags.length;z++){
            Inputs=form.getElementsByTagName(Tags[z]);
            for(var i=0;i<Inputs.length;i++)
                if(('button,image,submit,reset').indexOf(Inputs[i].type.toLowerCase())==-1) {
                    for(var j=0; j < this.TempCampos.length; j ++){
                        if (this.TempCampos[j][0] == Inputs[i].id.toLowerCase()){					   
                            if (Inputs[i].type.toLowerCase() == 'radio'){
                                for (h=0;h<document.getElementsByName(Inputs[i].id).length;h++) 
                                    if (document.getElementsByName(Inputs[i].id)[h].value == this.TempCampos[j][1])
                                        document.getElementsByName(Inputs[i].id)[h].checked = true;
                                    else
                                        document.getElementsByName(Inputs[i].id)[h].checked = false; 
                            }else if (Inputs[i].type.toLowerCase() == 'checkbox'){
                                if (Inputs[i].value == this.TempCampos[j][1])
                                    Inputs[i].checked = true;
                                else
                                    Inputs[i].checked = false;
                            }else		   
                                Inputs[i].value =  this.TempCampos[j][1]; 
                        }
                    }
                }
        }
        /* limpa o array */
        this.TempCampos.splice(0,this.TempCampos.length);
    },
    
    retornaValorLink: function (form) {
        var Tags = ['input','textarea','select','radio','checkbox'];
        var elementosTipoRadio = "";
        if (typeof form == "undefined") form = document;
        var valorLink = "";
        for(var z=0;z<Tags.length;z++){
            Inputs=form.getElementsByTagName(Tags[z]);
            for(var i=0;i<Inputs.length;i++)
                if(('button,image,submit,reset').indexOf(Inputs[i].type.toLowerCase())==-1) {
                        if (valorLink != "")
                            valorLink += '&';
                        if (Inputs[i].type.toLowerCase() == 'radio'){
                            for (j=0;j<document.getElementsByName(Inputs[i].id).length;j++) 
                                if (document.getElementsByName(Inputs[i].id)[j].checked)
                                    break;
                            if (elementosTipoRadio.indexOf(Inputs[i].id.toLowerCase()) == -1){	   
                                elementosTipoRadio += Inputs[i].id.toLowerCase() + ",";
                                valorLink +=  Inputs[i].id.toLowerCase() + '=' + encodeURIComponent(document.getElementsByName(Inputs[i].id)[j].value);		
                            }
                        }else if (Inputs[i].type.toLowerCase() == 'checkbox'){
                            if (Inputs[i].checked)
                                valorLink +=  Inputs[i].id.toLowerCase() + '=' + encodeURIComponent(Inputs[i].value);
                            else
                                valorLink +=  Inputs[i].id.toLowerCase() + '=';
                        }else
                            valorLink +=  Inputs[i].id.toLowerCase() + '=' + encodeURIComponent(Inputs[i].value);			   
                }
        }
        return valorLink;
    },
    
    //Função criada para contornar o problema encontrado na internacionalização
    alerta: function (msg) {
       alert(msg);
    },
    
    retornaJsonForm: function (form,nomeJSON){
        if (typeof form == "undefined"){ 
            Idioma.mensagemAviso("alerta.naoEncontrado",this.alerta);
            return "";
        }else{            
            var Tags = ['input','textarea','select','radio','checkbox'];              
            var JSON = "";
            for(var z=0;z<Tags.length;z++){
                Inputs=form.getElementsByTagName(Tags[z]);
                for(var i=0;i<Inputs.length;i++)
                    if(('button,image,submit,reset').indexOf(Inputs[i].type.toLowerCase())==-1) {
                            if (JSON != "")
                                JSON += ',';
                            
                            JSON += Inputs[i].id + ":null";                                                        
                    }
            }
            return nomeJSON + " = {" + JSON + "};";
        }
    },
    /********************************************** CONSTRUTOR *************************************************/	
    
    /* função executada no onload da página */
    carregar: function(parte){ /* percorre todos os campos da página, e a cada campo chama o aplicar */	     
        var Tags = ['input','textarea'];
        if (typeof parte == "undefined") parte = document;
        for(var z=0;z<Tags.length;z++){
            Inputs=parte.getElementsByTagName(Tags[z]);
            for(var i=0;i<Inputs.length;i++)
                if(('button,image,hidden,submit,reset').indexOf(Inputs[i].type.toLowerCase())==-1)
                    this.aplicar(Inputs[i]);
        }        
        this.inicia();
    },		
    
    inicia: function (){            
	    if ((window.DWRUtil) && (typeof useLoading == 'undefined'))	     
	    	this.useLoadingImage(this.enderecoImg + '/processando.gif');
	    		    	  
		if (window.limpa)
		    limpa();
	},
	
	useLoadingImage: function(imageSrc) {
	  var loadingImage;
	  if (imageSrc) loadingImage = imageSrc;
	  else loadingImage = this.enderecoImg + '/processando.gif';
	  dwr.engine.setPreHook(function() {
	    var disabledImageZone = $('disabledImageZone');
	    if (!disabledImageZone) {
	      disabledImageZone = document.createElement('div');
	      disabledImageZone.setAttribute('id', 'disabledImageZone');
	      disabledImageZone.style.position = "absolute";
	      disabledImageZone.style.zIndex = "1000";
	      disabledImageZone.style.left = "0px";
	      disabledImageZone.style.top = "0px";
	      disabledImageZone.style.width = "100%";
	      disabledImageZone.style.height = "100%";
	      var imageZone = document.createElement('img');
	      imageZone.setAttribute('id','imageZone');
	      imageZone.setAttribute('src',imageSrc);
	      imageZone.style.position = "absolute";
	      imageZone.style.top = "0px";
	      imageZone.style.right = "0px";
	      disabledImageZone.appendChild(imageZone);
	      document.body.appendChild(disabledImageZone);
	    }
	    else {
	      $('imageZone').src = imageSrc;
	      disabledImageZone.style.visibility = 'visible';
	    }
	  });
	  dwr.engine.setPostHook(function() {
	    $('disabledImageZone').style.visibility = 'hidden';
	  });
	},
	
    
    aplicar: function(campo){ /* aplica todas as classe nos campos */
        tipo = campo.getAttribute('tipo');
        if (!tipo || campo.type == "select-one") return;
        orientacao = campo.getAttribute('orientacao');
        mascara = campo.getAttribute('mascara'); 
        
        alinhaTexto = campo.getAttribute('alinhaTexto');
        
        /* alinhando o texto dentro do campo */
        if (alinhaTexto && alinhaTexto.toLowerCase() == "direita") 
            campo.style.textAlign = "right";
        else if (alinhaTexto && alinhaTexto.toLowerCase() == "esquerda")
            campo.style.textAling = "left";
        else if (alinhaTexto && alinhaTexto.toLowerCase() == "centro")
            campo.style.textAling = "center";
        
        /* se for um campo de data */
        if (tipo.toLowerCase() == "data"){
            limitaData = campo.getAttribute('limitaData');
            calendario = campo.getAttribute('calendario');
            if (limitaData == null)
                limitaData = false;				
            campo.onblur = function(e){return Solusoft.validaData(e?e:event, limitaData);};	
            campo.setAttribute("tipo", "numerico");	
            if ((!calendario) || (calendario == 'true'))
                this.montaBotaoData(campo);
        }
        
        /* se for um campo de decimal */
        if (tipo.toLowerCase() == "decimal"){
            orientacao = "esquerda";
            casasdecimais = campo.getAttribute('casasdecimais');
            tamanho = campo.getAttribute('maxLength');
            if (!tamanho || tamanho > 50)
                tamanho = 10;
            if (!casasdecimais)
                casasdecimais = 2;
            campo.setAttribute("mascara", this.geraMascaraDecimal(tamanho, casasdecimais));
            campo.setAttribute("tipo", "numerico");
            campo.setAttribute("orientacao", orientacao); /* alinhamento de digitação */
        }
        
        if (mascara) campo.setAttribute("maxLength", mascara.length);
        if (tipo){
            campo.onkeypress = function(e){ return Solusoft.onkeypress(e?e:event); };
            campo.onkeyup = function(e){ Solusoft.onkeyup(e?e:event, campo); };
        }
        campo.setAttribute("snegativo", ((campo.value).substr(0,1) == "-" ? "s" : "n"));                
    },
    
    /*****************************************************************************************************************/
    
    onkeypress: function(e){
        KeyCode = this.IsIE ? event.keyCode : e.which;
        campo =  this.IsIE ? event.srcElement : e.target;
        readonly = campo.getAttribute('readonly');
        if (readonly) return;
        maxlength = campo.getAttribute('maxlength');
        pt = campo.getAttribute('pt');
        selecao = this.selecao(campo);
        if (selecao.length > 0 && KeyCode != 0){
            campo.value = ""; return true;
        }
        if (KeyCode == 0) return true;
        Char = String.fromCharCode(KeyCode);
        valor = campo.value;
        mascara = campo.getAttribute('mascara');
        if (KeyCode != 8){
            tipo = campo.getAttribute('tipo').toLowerCase();
            negativo = campo.getAttribute('negativo');
            if(negativo && KeyCode == 45){
                snegativo = campo.getAttribute('snegativo');
                snegativo = (snegativo == "s" ? "n" : "s");
                campo.setAttribute("snegativo", snegativo);
            }else{
                valor += Char;
                if (tipo == "numerico" && Char.search(this.Num) == -1) return false;
                if (KeyCode != 32 && tipo == "caracter" && Char.search(this.AZ) == -1) return false;
            }
        }
        if (mascara){
            this.aplicarMascara(campo, valor);
            return false;
        }
        return true;
    },
    
    
    onkeyup: function(e, campo){
        KeyCode = this.IsIE ? event.keyCode : e.which;
        if (KeyCode != 9 && KeyCode != 16 && KeyCode != 109){
            valor = campo.value;
            if (KeyCode == 8 && !this.IsIE) valor = valor.substr(0,valor.length-1);
            this.aplicarMascara(campo, valor);
        }
    },
    
    
    aplicarMascara: function(campo, valor){
        mascara = campo.getAttribute('mascara');
        if (!mascara) return;
        negativo = campo.getAttribute('negativo');
        snegativo = campo.getAttribute('snegativo');
        if (negativo && valor.substr(0,1) == "-") 
            valor = valor.substr(1,valor.length-1);
        orientacao = campo.getAttribute('orientacao');
        var i = 0;
        for(i=0;i<mascara.length;i++){
            caracter = mascara.substr(i,1);
            if ((caracter != "#") || (caracter.search(/[dmy]/gi) == -1)) valor = valor.replace(caracter, "");
        }
        retorno = "";
        if (orientacao != "esquerda"){
            contador = 0;
            for(i=0;i<mascara.length;i++){
                caracter = mascara.substr(i,1);
                if ((caracter == "#") || (caracter.search(/[dmy]/gi) > -1)){ /* mascara padrão '#' ou da data 'dd/mm/yyyy' */
                    retorno += valor.substr(contador,1);
                    contador++;
                }else
                    retorno += caracter;
                if(contador >= valor.length) break;
            }
        }else{
            contador = valor.length-1;
            for(i=mascara.length-1;i>=0;i--){
                if(contador < 0) break;
                caracter = mascara.substr(i,1);
                if ((caracter == "#") || (caracter.search(/[dmy]/gi) > -1)){ /* mascara padrão '#' ou da data 'dd/mm/yyyy' */
                    retorno = valor.substr(contador,1) + retorno;
                    contador--;
                }else
                    retorno = caracter + retorno;
            }
        }
        if (negativo && snegativo == "s")
            retorno = "-" + retorno;
        campo.value = retorno;
    },
    
    
    geraMascaraDecimal: function(tam, decimais){
        var retorno = ""; var contador = 0; var i = 0;
        decimais = parseInt(decimais);
        for (i=0;i<(tam-(decimais+1));i++){
            retorno = "#" + retorno;
            contador++;
            if (contador == 3){
                retorno = "." + retorno;
                contador=0;
            }
        }
        retorno = retorno + ",";
        for (i=0;i<decimais;i++) retorno += "#";
        return retorno;
    },
    
    
    selecao: function(campo){
        if (this.IsIE)
            return document.selection.createRange().text;
        else
            return (campo.value).substr(campo.selectionStart, (campo.selectionEnd - campo.selectionStart));
    },
    
    
    formataValor: function (valor, decimais){
        valor = valor.split('.');
        if (valor.length == 1) valor[1] = "";
        for(var i=valor[1].length;i<decimais;i++)
            valor[1] += "0"; 
        valor[1] = valor[1].substr(0,2);
        return (valor[0] + "." + valor[1]);
    },
    
    montaBotaoData: function (campo){
        mascara = campo.getAttribute('mascara');
        
        var divBotao = document.createElement('div');        	
        divBotao.style.position = 'absolute';
        divBotao.border='0px';
        divBotao.style.border = '0px';
        divBotao.id = 'divCalendario' + campo.id ;
        divBotao.innerHTML = '<img id="btnCalendario' + campo.id + '" align="absmiddle" src="' + this.btnCalendario + '" style= "cursor:pointer" onclick="if (document.getElementById(\'' + campo.id + '\').disabled == false) {displayCalendar(document.getElementById(\'' + campo.id + '\'),\'' + mascara + '\',this);}">';
        
        /* adicionando o js do calendário */		
        var scriptTag = document.createElement("script");	
        scriptTag.setAttribute("type", "text/javascript");	
        scriptTag.setAttribute("src", this.calendarioJs);	
        
        document.getElementsByTagName("head")[0].appendChild(scriptTag);
        
        /* adicionando o css do calendário */
        var cssTag =  document.createElement('link');
        cssTag.setAttribute('rel','stylesheet');
        cssTag.setAttribute('media','screen');
        cssTag.setAttribute('href',this.calendarioCss);
        
        document.getElementsByTagName("head")[0].appendChild(cssTag);
        
        if (this.IsIE)
            campo.parentElement.appendChild(divBotao);
    },
    
    
    /********************************** VALIDAÇÔES ************************************/
    MsgDataInvalida: function(msg){
			alert(msg);
            campo.value = "";
            campo.focus();
            return false;    
    },
    
    validaData: function (e, limitaDataHoje){
        KeyCode = this.IsIE ? event.keyCode : e.which;
        campo =  this.IsIE ? event.srcElement : e.target;
        readonly = campo.getAttribute('readonly');
        mascara = campo.getAttribute('mascara');
        var valor = campo.value;	
        
        if ((readonly) || (valor.length == 0)) return; /* se o campos estiver inativo ou vaziu */					
        
        indice = -1;
        dia = "";
        while(mascara.toLowerCase().indexOf("d",indice + 1) > -1 ) {
            indice = mascara.toLowerCase().indexOf("d",indice + 1);
            dia  += valor.slice(indice,indice + 1);	
            if (dia == "0") /* para não iniciar com 0 */
                dia = "";
        }
        var dia1 = parseInt(dia);	
        if (isNaN(dia1))
            dia1 = 0;		   
        
        indice = -1;
        mes = "";
        while(mascara.toLowerCase().indexOf("m",indice + 1) > -1 ){
            indice = mascara.toLowerCase().indexOf("m",indice + 1);
            mes  += valor.slice(indice,indice + 1);
            if (mes == "0") /* para não iniciar com 0 */
                mes = "";
        }		
        var mes1 = parseInt(mes); 		
        if (isNaN(mes1))
            mes1 = 0;	
        
        indice = -1;
        ano = "";
        while(mascara.toLowerCase().indexOf("y",indice + 1) > -1 ){
            indice = mascara.toLowerCase().indexOf("y",indice + 1);
            ano  += valor.slice(indice,indice + 1);		
            if (ano == "0") /* para não iniciar com 0 */
                ano = "";
        }
        var ano1 = parseInt(ano);
        if (isNaN(ano1))
            ano1 = 0;
        
        /* verifica se foi preenchido */
        if ((dia1 == 0) && (mascara.toLowerCase().indexOf("d") > -1)) { /* se tiver dia na mascara */
        	Idioma.mensagemAviso("alerta.dataInvalida",this.MsgDataInvalida);
        } else if (dia1 == 0) /* se não estiver na mascara e estiver vaziu */
            dia1 = 1;
        
        if ((mes1 == 0) && (mascara.toLowerCase().indexOf("m") > -1)) { /* se tiver dia na mascara */
            Idioma.mensagemAviso("alerta.dataInvalida",this.MsgDataInvalida);
        } else if (mes1 == 0) /* se não estiver na mascara e estiver vaziu */
            mes1 = 1;  
        
        if ((ano1 == 0) && (mascara.toLowerCase().indexOf("y") > -1)) { /* se tiver dia na mascara */
            Idioma.mensagemAviso("alerta.dataInvalida",this.MsgDataInvalida);
        } else if (ano1 == 0){ /* se não estiver na mascara e estiver vaziu */
            data = new Date();
            ano1 = parseInt(data.getFullYear()); /* seta para o ano atual */  
        }
        
        var datadigitada= new Date(ano1,(mes1-1),dia1);
        var miliqq=datadigitada.getTime();
        
        var mydate= new Date()
        var mili=mydate.getTime();
        
        var diaqq=parseInt(datadigitada.getDate());
        var mesqq=parseInt(datadigitada.getMonth())+1;
        
        if((dia1!=diaqq) || (mes1!=mesqq)){
            Idioma.mensagemAviso("alerta.dataInvalida",this.MsgDataInvalida);
        }else if ((miliqq > mili) && (limitaDataHoje)){
            Idioma.mensagemAviso("alerta.dataMaior",this.MsgDataInvalida);
        }		
        
        /* se tiver algum atributo estipulado no onchange executa */
        onChange = campo.getAttribute('onChange');
        if (onChange)
            campo.onchange();
        
        return;
    },
    
    MsgValidaEmail: function(msg) {
      alert(msg);
      campo.value = "";
      return true;    
    
    },
    
    validaEmail : function (campo,nomeCampo){
        email = campo.value;
        if (email != ""){
            
            /* Verifica se o usuário separou por "," */
            if (email.search(/,/) != -1){
                do{
                    email = email.replace(",",";");	
                }while (email.search(/,/) != -1);
            }
            
            /* Verifica se na ultima posição da string tem ";" se tiver remove */
            if (email.lastIndexOf(";") == (email.length - 1)){
                email = email.substring(-1,(email.length - 1));
                campo.value = email;
            }
            
            /* Verifica quantos separadores tem na string */
            if (email.search(/;/) == -1){
                if(this.testaEmail(email)) {
                    return false;
                }else {
                	Idioma.mensagemAviso("alerta.mailInvalido",this.MsgValidaEmail);
                } 
            }else{ /* Se tiver mais que um separador */
                var emailErro = "";
                var emailValido = "";
                var principal = email.split(";");
                for (var i=0; i < principal.length;i++){
                    if(this.testaEmail(principal[i])) {
                        emailValido += principal[i];
                        if (i > 0 && i < principal.length && emailValido.length)
                            emailValido += ';';                        
                    }else 
                        emailErro += principal[i] + '\n';
                    
                }
            }
            
            if (emailErro.length){
                alert("O campo " + nomeCampo + " contém o(s) seguinte(s) e-email inválido(s): \n " + emailErro + " por isso foram removidos do campo!");
                campo.value = emailValido;
                return true;
            }else
                return false;                             
        }else
            return false;            
    },
    
    testaEmail: function (emailTeste) {
        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(emailTeste);
    },
    
    /******************************* CONTROLE DE TELA **************************/
    montaTelaErro: function(listObjtErro,largura, altura){
        
        if (typeof largura == 'undefined')
            largura = 510;
       
        if (typeof altura == 'undefined')
            altura = 470;
            
        this.listObjtErro = listObjtErro;       
        
        if (listObjtErro != null){
        	this.abreJanelaModal('../erro/erro.jsp',largura,altura);
        } else {
	       	this.abreJanelaModal('../erro/idioma.jsp',largura,altura);
        }
    },
       
	montaTelaTrocaIdioma: function(idioma){
		largura = 510;
		altura = 470;
		this.abreJanelaModal('../erro/trocaIdioma.jsp',largura,altura,idioma);
	},
       
    montaTelaFiltroRelatorio: function(){
        if (typeof nomeDoPrograma == "undefined")
            nomeDoPrograma = "";                           
    
        pagina =  '<table border="0" cellpadding="0" cellspacing="0" id="tabGeral" align="center">';
        pagina += '  <tr>';
        pagina += '    <td width="10" height="33"><img src="' + this.enderecoImg + '/Erro_r2_c2.gif" width="10" height="33" border="0"></td>';
        pagina += '    <td background="' + this.enderecoImg + '/Erro_r2_c6.gif" height="33"><table width="100%" height="100%"  border="0" cellpadding="0" cellspacing="0">';
        pagina += '      <tr>';
        pagina += '        <td>';
	    pagina += '           <table border="0" cellspacing="0" cellpadding="0">';
		pagina += '			  <tr>';
		pagina += ' 		    <td><img name="layoutLocalizar_r2_c3" src="' + this.enderecoImg + '/relatorio.gif" width="33" height="26" border="0" alt=""></td>';
		pagina += '			    <td background="' + this.enderecoImg + '/layout-Localizar_r2_c5.gif" height="26" class="titulo">' + nomeDoPrograma + '</td>';
		pagina += '			    <td><img name="layoutLocalizar_r2_c7" src="' + this.enderecoImg + '/layout-Localizar_r2_c7.gif" width="10" height="26" border="0" alt=""></td>';
		pagina += '			  </tr>';
		pagina += ' 		  </table>';
        pagina += '        </td>';
        pagina += '        <td width="22"><!-- <img src="' + this.enderecoBotao + '/fechar.gif" width="21" height="21" style="cursor:pointer" onClick="Solusoft.fechaJanelaModal();"> --></td>';
        pagina += '      </tr>';
        pagina += '    </table></td>';
        pagina += '    <td width="16" height="33"><img src="' + this.enderecoImg + '/Erro_r2_c7.gif" width="16" height="33" border="0"></td>';
        pagina += '  </tr>';
        pagina += '  <tr>';
        pagina += '    <td background="' + this.enderecoImg + '/Erro_r3_c2.gif" width="10"></td>';
        pagina += '    <td bgcolor="#EAEAEA" id="corpo"></td>';
        pagina += '    <td background="' + this.enderecoImg + '/Erro_r3_c7.gif" width="16"></td>';
        pagina += '  </tr>';
        pagina += '  <tr>';
        pagina += '    <td><img src="' + this.enderecoImg + '/Erro_r5_c2.gif" width="10" height="17" border="0"></td>';
        pagina += '    <td background="' + this.enderecoImg + '/Erro_r5_c3.gif" height="17"></td>';
        pagina += '    <td><img src="' + this.enderecoImg + '/Erro_r5_c7.gif" width="16" height="17" border="0"></td>';
        pagina += '  </tr>';
        pagina += '</table>';
        
        document.writeln(pagina); /* escreve no documento em questão */
        pagina = ''; // liberando espaço na memória
        
        document.getElementById("corpo").appendChild(document.getElementById("page"));
                
        /* colocando o layout como filho do formulário */
        document.forms[0].appendChild(document.getElementById("tabGeral"));  
        
        if (top.document.getElementById('janelaMeio'))
            this.parametro = top.document.getElementById('janelaMeio').contentWindow.Solusoft.parametro;
		else
	        if (window.opener.Solusoft.parametro)
	        	this.parametro = window.opener.Solusoft.parametro;
    },   
       
    montaTelaPesquisa: function(){
        
        if (typeof nomeDoPrograma == "undefined")
            nomeDoPrograma = "";
    
        pagina =  '<table  width="100%" height="100%" border="0" cellpadding="0" cellspacing="0" id="tabGeral" align="center">';
        pagina += '  <tr>';
        pagina += '    <td width="10" height="33"><img src="' + this.enderecoImg + '/Erro_r2_c2.gif" width="10" height="33" border="0"></td>';
        pagina += '    <td background="' + this.enderecoImg + '/Erro_r2_c6.gif" height="33"><table width="100%" height="100%"  border="0" cellpadding="0" cellspacing="0">';
        pagina += '      <tr>';
        pagina += '        <td>';
	    pagina += '           <table border="0" cellspacing="0" cellpadding="0">';
		pagina += '			  <tr>';
		pagina += ' 		    <td><img name="layoutLocalizar_r2_c3" src="' + this.enderecoImg + '/layout-Localizar_r2_c3.gif" width="33" height="26" border="0" alt=""></td>';
		pagina += '			    <td background="' + this.enderecoImg + '/layout-Localizar_r2_c5.gif" height="26" class="titulo">' + nomeDoPrograma + '</td>';
		pagina += '			    <td><img name="layoutLocalizar_r2_c7" src="' + this.enderecoImg + '/layout-Localizar_r2_c7.gif" width="10" height="26" border="0" alt=""></td>';
		pagina += '			  </tr>';
		pagina += ' 		  </table>';
        pagina += '        </td>';
        pagina += '        <td width="22"><img src="' + this.enderecoBotao + '/fechar.gif" width="21" height="21" style="cursor:pointer" onClick="Solusoft.fechaJanelaModal();"></td>';
        pagina += '      </tr>';
        pagina += '    </table></td>';
        pagina += '    <td width="16" height="33"><img src="' + this.enderecoImg + '/Erro_r2_c7.gif" width="16" height="33" border="0"></td>';
        pagina += '  </tr>';
        pagina += '  <tr>';
        pagina += '    <td background="' + this.enderecoImg + '/Erro_r3_c2.gif" width="10"></td>';
        pagina += '    <td bgcolor="#EAEAEA" id="corpo"></td>';
        pagina += '    <td background="' + this.enderecoImg + '/Erro_r3_c7.gif" width="16"></td>';
        pagina += '  </tr>';
        pagina += '  <tr>';
        pagina += '    <td><img src="' + this.enderecoImg + '/Erro_r5_c2.gif" width="10" height="17" border="0"></td>';
        pagina += '    <td background="' + this.enderecoImg + '/Erro_r5_c3.gif" height="17"></td>';
        pagina += '    <td><img src="' + this.enderecoImg + '/Erro_r5_c7.gif" width="16" height="17" border="0"></td>';
        pagina += '  </tr>';
        pagina += '</table>';
        
        document.writeln(pagina); /* escreve no documento em questão */
        pagina = ''; // liberando espaço na memória
        
        document.getElementById("corpo").appendChild(document.getElementById("page"));
                
        /* colocando o layout como filho do formulário */
        document.forms[0].appendChild(document.getElementById("tabGeral"));  
        
        if (top.document.getElementById('janelaMeio'))
            this.parametro = top.document.getElementById('janelaMeio').contentWindow.Solusoft.parametro;
		else
	        if (window.opener.Solusoft.parametro)
	        	this.parametro = window.opener.Solusoft.parametro;
    },
    
    montaTelaAba: function(botaoFechar,alinhamento,login){
        AbasAUX = Abas.split(','); /* quantidade de abas que o cliente deseja */
        this.qtdaFolder = AbasAUX.length; /* atualiza a quantidade de folder no cadastro */
                       
        if (typeof tamanhoFolder == 'undefined')
            tamanhoFolder = 300;           
            
        if (typeof botaoFechar == 'undefined')
            botaoFechar = false;
            
        if (typeof alinhamento == 'undefined'){
           alinhamento = '';
           tamanhoAlinhamento = '';
        }else{
           alinhamento = 'align="' + alinhamento + '"';        
           tamanhoAlinhamento = 'width="100%" height="80%"';
        }   
        
        tamanhoAlinhamento2 = '';
        if (typeof tamanhoFolder != 'undefined'){
        	if (tamanhoFolder == '850'){
        		tamanhoAlinhamento = 'width="100%"';
        		tamanhoAlinhamento2 = 'width="100%"';
        	}
        }
        
        
        if (typeof login == 'undefined')
            telaAtual = "";
        else
            telaAtual = "login"
        
        pagina =  '<table ' + tamanhoAlinhamento + ' border="0" cellspacing="0" cellpadding="0" id="tabGeral" >';
        pagina += ' <tr>';
        pagina += '	   <td>';
        pagina += '         <table ' + tamanhoAlinhamento2 + ' border="0" cellpadding="0" cellspacing="0" ' + alinhamento + '>';
        pagina += '			<tr>';				
                       
        if ((this.qtdaFolder == 1) && (AbasAUX[0] == "")){            
            /* se não tiver abas */
            pagina += '<td width="13" height="31"><img id="Folder1" src="' + this.enderecoImg + '/Folder1.gif" width="13" height="31" border="0" alt=""></td>';
            pagina += '<td colspan="3" width="70" height="31" background="' + this.enderecoImg + '/Inicial_r7_c17.gif">';
            
            if (botaoFechar)
               pagina += '<img id="fechar" src="' + this.enderecoBotao + '/fechar.gif" border="0" align="right" onClick="Solusoft.fechaJanelaModalInf();" style="cursor:pointer">';
            else
               pagina += '&nbsp;'; 
                  
            pagina += '</td>';
        } else {
            /* montando abas */
            for(var i=1; i <= this.qtdaFolder; i++){	

                if (i == 1){
                    pagina += '<td width="13" height="31"><img id="Folder1_' + i + '" src="' + this.enderecoImg + '/Folder_Primeiro_on.gif" width="13" height="31" border="0" alt=""></td>';
                    pagina += '<td width="70" height="31" background="' + this.enderecoImg + '/Folder_Fundo_on.gif" id="Folder' + i + '"><table width="100%" border="0" cellpadding="0" cellspacing="0">';				
                }else{				
                    pagina += '<td width="70" height="31" background="' + this.enderecoImg + '/Folder_Fundo_off.gif" id="Folder' + i + '"><table width="100%" border="0" cellpadding="0" cellspacing="0">';
                }

                pagina += '      <tr>';

                if ((i == 1) && (i == this.qtdaFolder))
                    pagina += '        <td height="20" class="tituloFolder"  id="FolderClick' + i + '" >' + AbasAUX[i - 1] + '</td>';
                else
                    pagina += '        <td height="20" class="tituloFolder" onClick="if (window.onclickFolder' + i + '){onclickFolder' + 1 + '();} Solusoft.mudaFolder(' + i + ');" id="FolderClick' + i + '" style="cursor:pointer">' + AbasAUX[i - 1] + '</td>';

                pagina += '      </tr>';
                pagina += '      <tr>';
                pagina += '        <td height="11"></td>';
                pagina += '      </tr>';
                pagina += '	  </table>';
                pagina += '</td>';
                
                

                if ((i == 1) && (i < this.qtdaFolder))
                    pagina += '<td width="15" height="31" ><img id="Folder' + i + '_' + (i + 1) + '" src="' + this.enderecoImg + '/Folder_Juncao_2_on.gif" width="15" height="31" border="0" alt=""></td>';
                else if ((i == 1) && (i == this.qtdaFolder))
                    pagina += '<td width="12" height="31" background="' + this.enderecoImg + '/Folder_Ultimo_on.gif"  width="17" height="31" border="0" alt=""></td>';
                else if (i == this.qtdaFolder) /* quer dizer que é a ultima aba */
                    pagina += '<td width="17" height="31"><img id="Folder' + i + '_' + (i + 1) + '" src="' + this.enderecoImg + '/Folder_Ultimo_off.gif" width="17" height="31" border="0" alt=""></td>';
                else 
                    pagina += '<td width="15" height="31"><img id="Folder' + i + '_' + (i + 1) + '" src="' + this.enderecoImg + '/Folder_Juncao_off.gif" width="15" height="31" border="0" alt=""></td>';

            }

            pagina += '		    <td width="' + tamanhoFolder  + '" height="31" background="' + this.enderecoImg + '/Inicial_r7_c17.gif">';
            
            if (botaoFechar)
               pagina += '<img id="fechar" src="' + this.enderecoBotao + '/fechar.gif" border="0" align="right" onClick="Solusoft.fechaJanelaModalInf();" style="cursor:pointer">';
            else
               pagina += '&nbsp;';   
               
            pagina += '</td>';
        }
        
        
        pagina += '		    <td width="20" height="31"><img id="Inicial_r7_c18" src="' + this.enderecoImg + '/Inicial_r7_c18.gif" width="20" height="31" border="0" alt=""></td>';
        pagina += '		</tr>';
        pagina += '		<tr>';
        pagina += '		    <td  background="' + this.enderecoImg + '/Inicial_r8_c5.gif" width="13">&nbsp;</td>';
        pagina += '		    <td colspan="' + ((AbasAUX.length * 2) + 1) + '" bgcolor="#E7E7E7" id="corpo">';
        pagina += '         </div></td>';
        pagina += '			<td background="' + this.enderecoImg + '/Inicial_r8_c18.gif" width="20">&nbsp;</td>';
        pagina += '		</tr>';
        pagina += '		<tr>';
        pagina += '		  <td width="13" height="18"><img id="Inicial_r10_c5" src="' + this.enderecoImg + '/Inicial_r10_c5.gif" width="13" height="18" border="0" alt=""></td>';
        pagina += '		  <td colspan="' + ((AbasAUX.length * 2) + 1) + '" background="' + this.enderecoImg + '/Inicial_r10_c6.gif" height="18">&nbsp;</td>';
        pagina += '		  <td width="20" height="18"><img id="Inicial_r10_c18" src="' + this.enderecoImg + '/Inicial_r10_c18.gif" width="20" height="18" border="0" alt=""></td>';
        pagina += '		</tr>';
        pagina += '	  </table>';
        pagina += '   </td>';
        pagina += '</tr>';
        
        if  (telaAtual != ''){
          pagina += '<tr>';
          pagina += '<td align="center">';
          pagina +=	'<table>';
          pagina += '<tr><td>&nbsp;';
          pagina += '</td></tr>';
          pagina += '<tr><td>&nbsp;';
          pagina += '</td></tr>';
	      pagina += '<tr>';
	      pagina += '<a href="http://www.bxbmaster.com.br" title="' + tituloBXB + '"><td style="cursor:pointer"  align="center" width="853" height="70" background="' + this.enderecoImg + '/BXBMASTER_PremioAssespro2008.gif"><font color="gray" face="arial" size="2px"><b>' + VencedorPremio + '</b></td></a>';
          pagina += '</tr>';
          pagina += '<tr><td><font size="0">&nbsp;';
          pagina += '</font></td></tr>';
          pagina += '<tr>';
		  pagina += '<td align="center" class="BXBMaster">' + tituloInicioA + '</td>';
		  pagina += '</tr>';
		  pagina += '<tr>';
		  pagina += '<td align="center" class="BXBMaster">' + tituloInicioB + '</td>';
		  pagina += '</tr>';
		  pagina += '<tr>';
		  pagina += '<td align="center" class="BXBMaster"><a href="http://www.bxbmaster.com.br/download/BXBmaster_AutoDemo.zip" title="' + tituloLinkAuto + '">' + textoLinkAuto + '</a>&nbsp;&nbsp;&nbsp;';
		  pagina += '<a href="mailto:vendas@bxbmaster.com.br?subject=BXBMASTER - Solicitacao de trial gratuito" title="' + tituloTrial + '">30 days trial</a>&nbsp;&nbsp;&nbsp;';
		  pagina += '<a href="http://www.bxbmaster.com.br" title="' + tituloBXB + '">www.bxbmaster.com.br</a></td>';
		  pagina += '</tr>';
		  pagina += '</table>';
          pagina += '</td>';
          pagina += '</tr>';
        }
        
        pagina += '</table>';
        
        document.writeln(pagina); /* escreve no documento em questão */
        
        pagina = ""; // liberando espaco na memoria		
        
        for(var i=1; i <= AbasAUX.length; i++){	
            document.getElementById("corpo").appendChild(document.getElementById("page" + i));
        }
        
        /* colocando o layout como filho do formulário */
        try{
        	document.forms[0].appendChild(document.getElementById("tabGeral"));
        }catch(e){
        	document['body'].appendChild(document.getElementById("tabGeral"));
        }
    },
    
    mudaFolder: function (folder,status /* parametro só para habilitar e desabilitar todas os folder */){
        if (this.qtdaFolder > 1) {
	        if (status == false){ /* trava a alteração dos Folder */
	            this.habilitaFolder(false,0);
	            this.folderControle = this.folderAtual;
	            /* atualiza folderAtual */
	            this.folderAtual = 0;
	        }else if (status == true){ /* libera todas as Folder */
	            this.habilitaFolder(true,0);
	            this.folderAtual = this.folderControle;
	            folder = this.folderAtual;
	        }
	        
	        if (folder > 0){	        
		        for (var i=1; i <= this.qtdaFolder; i++){
		            if ((i == 1) && (folder == 1)){ /* primeira aba selecionada */
		                document.getElementById('Folder' + i +'_' + i).src = this.enderecoImg +"/Folder_Primeiro_on.gif";
		                document.getElementById('Folder' + i).background = this.enderecoImg + "/Folder_Fundo_on.gif";
		                document.getElementById('Folder' + i +'_' + (i+1)).src = this.enderecoImg + "/Folder_Juncao_2_on.gif";
		            }else if ((i == 1) && (folder != 1)){ /* primeira aba não selecionada */
		                document.getElementById('Folder' + i + '_' + i).src = this.enderecoImg +"/Folder_Primeiro_off.gif";
		                document.getElementById('Folder' + i).background = this.enderecoImg + "/Folder_Fundo_off.gif";
		                if (folder != (i + 1))
		                    document.getElementById('Folder' + i + '_' + (i+1)).src = this.enderecoImg + "/Folder_Juncao_off.gif";  
		            }else if ((i > 1) && (i == folder) && (i != this.qtdaFolder)){ /* folder do meio selecionado */
		                document.getElementById('Folder' + (i-1) + '_' + i).src = this.enderecoImg +"/Folder_Juncao_1_on.gif";
		                document.getElementById('Folder' + i).background = this.enderecoImg + "/Folder_Fundo_on.gif";
		                document.getElementById('Folder' + i + '_' + (i+1)).src = this.enderecoImg + "/Folder_Juncao_2_on.gif";			
		            }else if ((i > 1) &&(i != folder) && (i < this.qtdaFolder)){ /* folder do meio  não selecionado */
		                document.getElementById('Folder' + i).background = this.enderecoImg + "/Folder_Fundo_off.gif";
		                if (folder != (i + 1))
		                    document.getElementById('Folder' + i +'_' + (i+1)).src = this.enderecoImg + "/Folder_Juncao_off.gif";  
		            }else if ((i > 1) && (i == folder) && (i == this.qtdaFolder)){
		                document.getElementById('Folder' + (i-1) + '_' + i).src = this.enderecoImg +"/Folder_Juncao_1_on.gif";
		                document.getElementById('Folder' + i).background = this.enderecoImg + "/Folder_Fundo_on.gif";
		                document.getElementById('Folder' + i +'_' + (i+1)).src = this.enderecoImg + "/Folder_Ultimo_on.gif";    
		            }else if ((i > 1) && (i == this.qtdaFolder)){	
		                document.getElementById('Folder' + i).background = this.enderecoImg + "/Folder_Fundo_off.gif";
		                document.getElementById('Folder' + i + '_' + (i+1)).src = this.enderecoImg + "/Folder_Ultimo_off.gif";   
		            }
		            	            
		            if (i == folder){
		                document.getElementById('page' + i).style.display = "block";
		                /* desabilitar o click do folder */
		                this.habilitaFolder(true,i);
		                this.folderAtual = folder;
		            }else{
		                document.getElementById('page' + i).style.display = "none";
		            }
			
			     }   	  
			 }
	    }
    },
    
    habilitaFolder: function (status,folder){
        for (var i=1; i <= this.qtdaFolder; i++){            
            if ((status == false) && (folder == 0)){ 
                document.getElementById('FolderClick' + i).style.cursor = "default";
                document.getElementById('FolderClick' + i).onclick = "";
            }else if ((status == true) && (folder == 0)) {
                document.getElementById('FolderClick' + i).style.cursor = "pointer";
                if (this.IsIE)
                    eval("document.getElementById('FolderClick' + i).onclick = function () {if (window.onclickFolder" + i + "){onclickFolder" + i + "();} Solusoft.mudaFolder(" + i + ");};");
                else
                	document.getElementById('FolderClick' + i).onclick = eval("function () {if (window.onclickFolder" + i + "){onclickFolder" + i + "();} Solusoft.mudaFolder(" + i + ");}");
            }else if (folder == i){ /* desabilita click folder 1 */
                document.getElementById('FolderClick' + i).style.cursor = "default";
                document.getElementById('FolderClick' + i).onclick = "";                
            }else{
                document.getElementById('FolderClick' + i).style.cursor = "pointer";
                if (this.IsIE)                   
                	eval("document.getElementById('FolderClick' + i).onclick = function () {if (window.onclickFolder" + i + "){onclickFolder" + i + "();} Solusoft.mudaFolder(" + i + ");};");
                else
                	document.getElementById('FolderClick' + i).onclick = eval('function () {if (window.onclickFolder' + i + '){onclickFolder' + i + '();} Solusoft.mudaFolder(' + i + ');}');
            }
        }        
    },
    
    montaFuncaoColuna: function (colunas,chave){
        if (typeof chave == 'undefined')
        	chave = "";
	    colunasAUX = colunas.split(','); 
	    funcao = "";
	    for (var i=0; i < colunasAUX.length; i++){
	        if (funcao == "")
	        	funcao = "[";
	        		        	
	        chaveAUX = chave.split(',');
	        
	        if (chaveAUX.length == 1){
	        	
		        if (colunasAUX[i] != chave)	 
		    		funcao += "function (objeto) { return objeto." + colunasAUX[i] + "}";
		    	else {		    	    
		    	    /* registra chave */
	                eval('registroInicial = {' + chave + ': null};');
	                eval('registroFinal = {' + chave + ': null};'); 	                
		    	    
				    funcao += "function (objeto) {";
				    funcao +=   " if (registroInicial." + chave + " == null)"; 
		            funcao +=      " registroInicial." + chave + " = objeto." + colunasAUX[i] + ";"; 
		            funcao +=      " registroFinal." + chave + " = objeto." + colunasAUX[i] + ";";
		            funcao +=      " return objeto." + colunasAUX[i] + "}";			     
		    	}			        
	        }else{
                registraChavesAUX = ''; 
	            for(var j=0; j < chaveAUX.length; j++){
	                if (j > 0)
	                	registraChavesAUX += ',';
	                
	                // foi separado por campo agora tem que montar um objeto
	                campoAUX = chaveAUX[j].split('.');
	               
	                // se tem mais de uma propriedade por objeto.
	                if (campoAUX.length >  1){
		                campo = '';
		                for (var h=0; h < campoAUX.length; h++){
		                   if (campo == '') // se for o primeiro campo
	 	                      campo = campoAUX[h] + ':{';
	 	                   else if (h == (campoAUX.length -1)) // se for o ultimo método
	 	                      campo += campoAUX[h] + ':null}';
	 	                   else 
	 	                      campo += campoAUX[h] + ':{';     
		                } 
		                
		                if (campoAUX.length > 2) { // se tiver mas que um método
		                	for (var h=2; h < campoAUX.length; h++){
		                		campo += '}'; // fechando objeto que falta
		                	}
		                }
		                registraChavesAUX += campo;
		            }else {
		                registraChavesAUX += chaveAUX[j] + ':null';
		            }    	               	                
	            }	            	            	          
	            
	            /* registra chave */
	            eval('registroInicial = {' + registraChavesAUX + '};');
	            eval('registroFinal = {' + registraChavesAUX + '};');
	            
	            if(chave.indexOf(colunasAUX[i]) == -1){
	            	funcao += "function (objeto) { return objeto." + colunasAUX[i] + "}";
	            }else{
	            	for(var j=0; j < chaveAUX.length; j++){
	                   if (colunasAUX[i] == chaveAUX[j]){
	                   		funcao += "function (objeto) {";
						    funcao +=   " if (registroInicial." + chaveAUX[j] + " == null)"; 
				            funcao +=      " registroInicial." + chaveAUX[j] + " =  objeto." + colunasAUX[i] + ";"; 
				            funcao +=      " registroFinal." + chaveAUX[j] + " = objeto." + colunasAUX[i] + ";";
				            funcao +=      " return objeto." + colunasAUX[i] + "}";	
	                   }	                
	            	}
	            }	            
	        }	 
	        		    	
	    	if ((i + 1) < colunasAUX.length)
	    		funcao += ",";
	    	else if ((i + 1) == colunasAUX.length)	
	    	    funcao += "]";
	    }	    	    
	    return eval(funcao);
    },
    
    opcoesColunas: function (){ 
       return {
		  /* opção para personalizar a linha da tabela */
		  rowCreator: function(options) {	    
			var row = document.createElement("tr");
			row.onmouseover = function(){this.bgColor='#F7F7F7';};
			row.onmouseout = function(){this.bgColor='#EAEAEA';};
			row.style.cursor = "pointer";
			row.id = options.rowIndex;
			row.onclick = function() { Solusoft.retornaPesquisaZoomJanelaModal(objetosListados[row.id]); };
			return  row;
			
		 },
		 cellCreator: function(options){
		 var col = document.createElement("td");
		 col.noWrap = true;
		  
		 return col;		 
		 
		 }	
			
	   }     
	},	
	
	pesquisaAtualiza: function (listaObjetos) {
		if (listaObjetos != null && listaObjetos.length > 0){
		objetosListados = listaObjetos;

		for(var i = 0; i < listaObjetos.length; i++){
			var dataAux = listaObjetos[i].data;
			if (dataAux){
			  stringData = "";
	  		  if(dataAux.getDate() < 10)
    		  	  stringData = "0";
	  		  stringData += dataAux.getDate() + "/";
  			  if(dataAux.getMonth() + 1 < 10)
    			  stringData += "0";
 			  stringData += (dataAux.getMonth() + 1) + "/" + dataAux.getFullYear();
 			  listaObjetos[i].data = stringData;
 			  //listaObjetos[i].prioridade = listaObjetos[i].prioridade.toUpperCase();
 			}
		}
        
        chaveAUX = chaveTabela.split(',');
        
        //reiniciando parametros
        if (chaveAUX.length == 1){
           eval('registroInicial.' + chaveTabela + ' = null;');
           eval('registroFinal.' + chaveTabela + ' = null;');
        }else{
           for(var i=0; i < chaveAUX.length; i++){
              eval('registroInicial.' + chaveAUX[i] + ' = null;');
              eval('registroFinal.' + chaveAUX[i] + ' = null;');
           }
        }                    	    
	    
		DWRUtil.removeAllRows(tabelaDeDados);
		DWRUtil.addRows(tabelaDeDados,listaObjetos,funcoesColunas,opcoesColunas);
		}
	},
	
	abrePesquisa: function (url,largura, altura){
	    if (typeof largura == 'undefined')
	    	largura = 320;
   	    if (typeof altura == 'undefined')
	        altura = 320;	        	    	    
	        
        this.parametro.funcao = 'pesquisa';
        this.parametro.objeto =  new Object();
	        
	    this.abreJanelaModal(url,largura,altura); 	     
	},
	
	abreZoom: function (url,campo,parametro,largura, altura){	
	    if (typeof largura == 'undefined')
	    	largura = 320;
   	    if (typeof altura == 'undefined')
	        altura = 320;	        	    	    
	   if (campo != ""){     
		    if (campo.disabled == false && campo.readOnly == false){
			this.parametro.funcao = campo.id;
			this.parametro.objeto = parametro;

			    this.abreJanelaModal(url,largura,altura); 
		    }else
				alert('campo desabilitado');   
	   }else{
	           this.parametro.funcao = campo.id;
	           this.parametro.objeto = parametro;
	           this.abreJanelaModal(url,largura,altura); 
	        }
	},
	
	fechaJanelaModal: function (){	 
	    if (window.parent.janelaMestre)
	        janela = window.parent.janelaMestre;
	    else if (typeof janelaMestre != 'undefined')
	    	    var janela = janelaMestre;
	    else if (top) /* se essa janela for uma filha */
	     	    var janela = top;
	    else
 	            var janela = window;	
 	       
 	    if (janela.document.getElementById('janelaMeio')){    	    	 	                
 	        // exluindo janelas
      		try {         		     
		        if (janela.document.getElementById('divJanela')){
	            	janela.document.getElementById('divJanela').removeChild(janela.document.getElementById('iframeJanela'));
	            	janela.document.body.removeChild(janela.document.getElementById('divJanela'));
	            }	
	                        
	            if (janela.document.getElementById('divBloqueia')){		            
		            janela.document.body.removeChild(janela.document.getElementById('divBloqueia'));
		        }

			}catch(x){}            
 	    }else{ 	    
 	    	if (window.opener) { 	    	
 	    		window.close();
 	        } else if (window.parent.janelaMestre){ 	    	          
	            
	            // exluindo janelas
	      		try {         		     
			        if (janela.document.getElementById('divJanela')){
		            	janela.document.getElementById('divJanela').removeChild(janela.document.getElementById('iframeJanela'));
		            	janela.document.body.removeChild(janela.document.getElementById('divJanela'));
		            }
		                        
		            if (janela.document.getElementById('divBloqueia'))
		                janela.document.body.removeChild(janela.document.getElementById('divBloqueia'));
	
				}catch(x){}             
	            
	       }
 	    } 	    
	},
	
	fechaJanelaModalTeste: function (){	 
		    if (top) /* se essa janela for uma filha */
		     	    var janela = top;
		    else
	 	            var janela = window;	
	 	       
	 	    if (janela.document.getElementById('janelaMeio')){    	    	 	                
	            
	            if (janela.document.getElementById('divBloqueia'))
		            janela.document.getElementById('divBloqueia').style.display = 'none';
		            
		        if (janela.document.getElementById('divJanela')){    
	            	janela.document.getElementById('divJanela').style.display = 'none';            
	            	janela.document.getElementById('divJanela').clearAttributes();
	            }	
	            
	            janela.document.getElementById('iframeJanela').src = "about:blank";   
      
	 	    }else{
	 	    	if (window.opener)
	 	    		window.close();
	 	    } 	    
	},
	
	retornaPesquisaZoomJanelaModal: function (objeto){
		if (top) /* se essa janela for uma filha */
 	       var janela = top;
 	    else
 	       var janela = window;
 	       
 	    if (janela.document.getElementById('janelaMeio').contentWindow.retornoPesquisaZoom){
            janela.document.getElementById('janelaMeio').contentWindow.retornoPesquisaZoom(objeto,Solusoft.parametro.funcao);            
		}else {   	
			if (window.opener.retornoPesquisaZoom) { 
			    window.opener.retornoPesquisaZoom(objeto,Solusoft.parametro.funcao); 			    
			}    
		}
		
		this.fechaJanelaModal();
	},
		
	
	abreJanelaModal: function (url,largura,altura, idioma){
	    if (typeof janelaMestre != 'undefined')
	       var janela = janelaMestre;
	    else if (top) /* se essa janela for uma filha */
 	       var janela = top;
 	    else
 	       var janela = window;
 	     
 	    if (janela.document.getElementById('iframeJanela'))
	 	    janela.document.body.removeChild(janela.document.getElementById('iframeJanela'));
 	     
 	    /* verifica se existe a Janela, se sim só pega a referência */
	    if (janela.document.getElementById('divJanela'))
 	   	 	janela.document.body.removeChild(janela.document.getElementById('divJanela'));
 	     
 	    /* se já tiver a div bloqueia só pega a referencia */   
 	    if (janela.document.getElementById('divBloqueia'))   
	 	    janela.document.body.removeChild(janela.document.getElementById('divBloqueia'));   
 	       
 	      
	    /* criando a div para bloquear */
		var divBloqueia = janela.document.createElement('div');        	        
        divBloqueia.border='0px';        
        divBloqueia.id = 'divBloqueia';
        divBloqueia.style.filter = "alpha(opacity=40)";
	    divBloqueia.style.opacity = 0.4;
	    divBloqueia.style.position = 'absolute';
	    
	    divBloqueia.style.zIndex = 90000;
	    divBloqueia.style.backgroundColor ='#AAA';
	    divBloqueia.style.left = '0px';
		divBloqueia.style.top = '0px';
      	divBloqueia.style.width = janela.screen.width;
    	divBloqueia.style.height= janela.screen.height; 
	    
	    janela.document.body.appendChild(divBloqueia);
		    
	    /* deixando a div Bloqueia visivel */
	    divBloqueia.style.display='block';
	    
	   
	    /* criando a janela para bloquear */
		var divJanela = janela.document.createElement('div');        	        
        divJanela.border='0px';        
        divJanela.id = 'divJanela';
	    divJanela.style.position = 'absolute';		    
	    divJanela.style.zIndex = 100000;	    	    			    
	    
	    /* Redimencionando o tamanho e posição da Janela */ 
	    if (typeof janelaMestre != 'undefined')   {
	       var winl = 50;
           var wint = 50; 	    
		}else{ 
	       var winl = (((window.screen.width - window.screenLeft) - largura) / 2);
	       var wint = (((window.screen.height - window.screenTop) - altura) / 2); 
	    }
	    
	    if (largura == "*" && altura == "*"){
	      var largura = window.screen.width * 23/24;
	      var altura = window.screen.height * 3/4;
	      
	      if (window.screen.width > 1024){
	        largura = window.screen.width * 6/8;
	        altura = window.screen.height * 5/8;
	      }
	      
	      if (window.screen.width > 1152){
	      //11/16
	        largura = window.screen.width * 25/32;
	        altura = window.screen.height * 11/20;
	      }
	      
	      if (window.screen.height == 800){
	        altura = window.screen.height * 11/16;
	      }
	
		  /* Redimencionando o tamanho e posição da Janela */
	      var winl = (((window.screen.width - window.screenLeft) - largura) / 2);
          var wint = (((window.screen.height - window.screenTop) - altura) / 2);   
	    }
	    
	    divJanela.style.left = winl;
        divJanela.style.top = wint;
      	divJanela.style.width = largura;
    	divJanela.style.height= altura; 
    	divJanela.style.overflow = 'hidden';
    	
    	janela.document.body.appendChild(divJanela);
    	
    	divJanela.style.display='none';
    	divJanela.style.display='block';
    	    	

    	var janelaDiv = janela.document.createElement('iframe');    	
    	janelaDiv.id = 'iframeJanela';
    	janelaDiv.name = 'iframeJanela';
    	janelaDiv.style.width = largura;
    	janelaDiv.style.height = altura;
    	janelaDiv.frameBorder = 0;
    	janelaDiv.scrolling = 'no'; 
    	janelaDiv.allowTransparency = true;  
    	janelaDiv.style.zIndex = -1;	
    	janelaDiv.style.position = 'absolute';
    	  	
    	divJanela.appendChild(janelaDiv);	  

        janelaDiv.style.display='none';
    	janelaDiv.style.display='block';
	    
	    /* atualizando o endereço */
	    if (url != ""){
	    	url = url.replace('../',''); /* tirando a referencia do endereço */
	    	janelaDiv.src = url;   
	    }	
		return true;	
	},
	
	abreJanelaModalInf: function (url,largura,altura){
	
	    if (typeof janelaMestre != 'undefined')
	       var janela = janelaMestre;
	    else if (top) /* se essa janela for uma filha */
 	       var janela = top;
 	    else
 	       var janela = window;
 	     
 	    if (janela.document.getElementById('iframeJanelaInf'))
	 	    janela.document.body.removeChild(janela.document.getElementById('iframeJanelaInf'));
 	     
 	    /* verifica se existe a Janela, se sim só pega a referência */
	    if (janela.document.getElementById('divJanelaInf'))
 	   	 	janela.document.body.removeChild(janela.document.getElementById('divJanelaInf'));
 	     
 	    /* se já tiver a div bloqueia só pega a referencia */   
 	    if (janela.document.getElementById('divBloqueiaInf'))   
	 	    janela.document.body.removeChild(janela.document.getElementById('divBloqueiaInf'));   
 	       
 	      
	    /* criando a div para bloquear */
		var divBloqueiaInf = janela.document.createElement('div');        	        
        divBloqueiaInf.border='0px';        
        divBloqueiaInf.id = 'divBloqueiaInf';
        divBloqueiaInf.style.filter = "alpha(opacity=40)";
	    divBloqueiaInf.style.opacity = 0.4;
	    divBloqueiaInf.style.position = 'absolute';
	    
	    divBloqueiaInf.style.zIndex = 200000;
	    divBloqueiaInf.style.backgroundColor ='#AAA';
	    divBloqueiaInf.style.left = '0px';
		divBloqueiaInf.style.top = '0px';
      	divBloqueiaInf.style.width = janela.screen.width;
    	divBloqueiaInf.style.height= janela.screen.height; 
	    
	    janela.document.body.appendChild(divBloqueiaInf);
		    
	    /* deixando a div Bloqueia visivel */
	    divBloqueiaInf.style.display='block';
	    
	   
	    /* criando a janela para bloquear */
		var divJanelaInf = janela.document.createElement('div');        	        
        divJanelaInf.border='0px';        
        divJanelaInf.id = 'divJanelaInf';
	    divJanelaInf.style.position = 'absolute';		    
	    divJanelaInf.style.zIndex = 300000;
	    janela.document.body.appendChild(divJanelaInf);
	    		
	    
	    /* Redimencionando o tamanho e posição da Janela */ 
	    if (typeof janelaMestre != 'undefined')   {
	       var winl = 50;
           var wint = 50; 	    
		}else{ 
	       var winl = (((window.screen.width - window.screenLeft) - largura) / 2);
	       var wint = (((window.screen.height - window.screenTop) - altura) / 2); 
	    }
	    
	    divJanelaInf.style.left = winl;
        divJanelaInf.style.top = wint;
      	divJanelaInf.style.width = largura;
    	divJanelaInf.style.height= altura; 
    	
    	divJanelaInf.style.display='block';
    	

    	var janelaDivInf = janela.document.createElement('iframe');    	
    	janelaDivInf.id = 'iframeJanelaInf';
    	janelaDivInf.name = 'iframeJanelaInf';
    	janelaDivInf.style.width = largura;
    	janelaDivInf.style.height = altura;
    	janelaDivInf.frameBorder = 0;
    	janelaDivInf.scrolling = 'no'; 
    	janelaDivInf.allowTransparency = true;
    	divJanelaInf.appendChild(janelaDivInf);	  

	    
	    /* atualizando o endereço */
	    if (url != ""){
	    	url = url.replace('../',''); /* tirando a referencia do endereço */
	    	janelaDivInf.src = url;   
	    }	

		return true;	
	},
	
	fechaJanelaModalInf: function (){	 
	    if (window.parent.janelaMestre)
	        janela = window.parent.janelaMestre;
	    else if (typeof janelaMestre != 'undefined') 
	    	var janela = janelaMestre;
	    else if (top) /* se essa janela for uma filha */
	     	var janela = top;
	    else
 	        var janela = window;	
 	             	        
 	       
 	    if (janela.document.getElementById('iframeJanelaInf')){    	    	 	                
 	        // exluindo janelas
      		try {         		     
		        if (janela.document.getElementById('divJanelaInf')){
	            	janela.document.getElementById('divJanelaInf').removeChild(janela.document.getElementById('iframeJanelaInf'));
	            	janela.document.body.removeChild(janela.document.getElementById('divJanelaInf'));
	            }	
	                        
	            if (janela.document.getElementById('divBloqueiaInf')){		            
		            janela.document.body.removeChild(janela.document.getElementById('divBloqueiaInf'));
		        }

			}catch(x){}            
 	    }else{ 	    
 	    	if (window.opener) { 	    	
 	    		window.close();
 	        } else if (window.parent.janelaMestre){ 	    	          
	            
	            // exluindo janelas
	      		try {         		     
			        if (janela.document.getElementById('divJanelaInf')){
		            	janela.document.getElementById('divJanelaInf').removeChild(janela.document.getElementById('iframeJanelaInf'));
		            	janela.document.body.removeChild(janela.document.getElementById('divJanelaInf'));
		            }
		                        
		            if (janela.document.getElementById('divBloqueiaInf'))
		                janela.document.body.removeChild(janela.document.getElementById('divBloqueiaInf'));
				}catch(x){}             
	            
	       }
 	    } 	    
	},
	
	
	
    /* ********************** RELACIONAMENTO PAI E FILHO ****************************************** */
    
    
    /* carregando os dados nos respectivos campos */
	atualizaFilhoPai: function (dadosBusca,filho){			
	    	    	    
	    if ((typeof eval(paiJSON)!= "undefined") && (eval(paiJSON) != "")) {	    	         		           		     	    	         		     
		    eval('Solusoft.dadosBuscaFilho' + filho + ' = dadosBusca;');
		    eval('dadosFilhoAUX = Solusoft.dadosFilho' + filho + ';');		    		    		    		    
	    }else{
	    	alert('Pai não selecionado.');
	    	dadosFilhoAUX = null;
	    }
	    	    
	    if ((dadosFilhoAUX != null) && (dadosBusca != null)){
		    for(var i=0; i < dadosFilhoAUX.length; i++){	        
		    	for(var j=0; j < dadosBusca.length; j++){
		    		if (eval('dadosFilhoAUX[i].' + eval('IdFilho' + filho)) == eval('dadosBusca[j].' + eval('IdBuscaFilho' + filho))){
		    			dadosBusca.splice(j,1);
		    		}
		    	}
		    }		    		    		    	    
	    }
	    	    	    
	    /* status dos botões de relacionamento */
	    this.statusBotaoPaiFilho(filho,dadosBusca, dadosFilhoAUX);   
	    Solusoft.atualizaDadosBrowse(eval('campoFilho' + filho), dadosFilhoAUX);	   
	    Solusoft.atualizaDadosBrowse(eval('campoBuscaFilho' + filho), dadosBusca);	    
	},
	
	desabilitaBotaoPaiFilho: function (filho){
		if (document.getElementById('btInsereFilho' + filho)) {
    		document.getElementById('btInsereFilho' + filho).className = 'botoesDisabled';
    		document.getElementById('btInsereFilho' + filho).disabled = true;
	    }
	    
	    if (document.getElementById('btIsereTudoFilho' + filho)) {
    		document.getElementById('btIsereTudoFilho' + filho).className = 'botoesDisabled';
    		document.getElementById('btIsereTudoFilho' + filho).disabled = true;
	    }
	    
	    if (document.getElementById('btRetiraFilho' + filho)) {
    		document.getElementById('btRetiraFilho' + filho).className = 'botoesDisabled';
    		document.getElementById('btRetiraFilho' + filho).disabled = true;		    	
	    }
	    
	    if (document.getElementById('btRetiraTudoFilho' + filho)) {
    		document.getElementById('btRetiraTudoFilho' + filho).className = 'botoesDisabled';
    		document.getElementById('btRetiraTudoFilho' + filho).disabled = true;
	    }
	},
	
	habilitaBrowse: function (nomeBrowse){
	  eval('statusBrowse' + nomeBrowse + ' = true;');
	},
	
	/* status dos botões de relacionamento */
	statusBotaoPaiFilho: function (filho,dadosBusca, dadosFilho){
		if (typeof dadosBusca == 'undefined')		    
			eval('dadosBusca = objetosBrowse' + campoBusca + ';');			
						
		if (typeof dadosFilho == 'undefined')		    
			eval('dadosFilho = objetosBrowse' + campoFilho + ';');
						
		eval('campoBusca = campoBuscaFilho' + filho + ';');
	    eval('campoFilho = campoFilho' + filho + ';');	    	    
	    
	    if (( eval('statusBrowse' + campoBusca) == true) && ( eval('statusBrowse' + campoFilho)  == true)) {
			/***** Controle de botões *******/
		    if ((dadosBusca == null) || (dadosBusca.length == 0)){	    	
			    if (document.getElementById('btInsereFilho' + filho)) {
			    		document.getElementById('btInsereFilho' + filho).className = 'botoesDisabled';
			    		document.getElementById('btInsereFilho' + filho).disabled = true;
			    }
			    
			    if (document.getElementById('btIsereTudoFilho' + filho)) {
			    		document.getElementById('btIsereTudoFilho' + filho).className = 'botoesDisabled';
			    		document.getElementById('btIsereTudoFilho' + filho).disabled = true;
			    }
		    }else {
		    	if (document.getElementById('btInsereFilho' + filho)) {
			    		document.getElementById('btInsereFilho' + filho).className = 'botoes';
			    		document.getElementById('btInsereFilho' + filho).disabled = false;
			    }
			    
			    if (document.getElementById('btIsereTudoFilho' + filho)) {
			    		document.getElementById('btIsereTudoFilho' + filho).className = 'botoes';
			    		document.getElementById('btIsereTudoFilho' + filho).disabled = false;
			    }
		    }
		    
		    if ((dadosFilho == null) || (dadosFilho.length == 0)){
			    
			    if (document.getElementById('btRetiraFilho' + filho)) {
			    		document.getElementById('btRetiraFilho' + filho).className = 'botoesDisabled';
			    		document.getElementById('btRetiraFilho' + filho).disabled = true;		    	
			    }
			    
			    if (document.getElementById('btRetiraTudoFilho' + filho)) {
			    		document.getElementById('btRetiraTudoFilho' + filho).className = 'botoesDisabled';
			    		document.getElementById('btRetiraTudoFilho' + filho).disabled = true;
			    }
		    } else {
		    	if (document.getElementById('btRetiraFilho' + filho)) {
			    		document.getElementById('btRetiraFilho' + filho).className = 'botoes';
			    		document.getElementById('btRetiraFilho' + filho).disabled = false;		    	
			    }
			    
			    if (document.getElementById('btRetiraTudoFilho' + filho)) {
			    		document.getElementById('btRetiraTudoFilho' + filho).className = 'botoes';
			    		document.getElementById('btRetiraTudoFilho' + filho).disabled = false;
			    }
			}
	    }
	},
	
	/* ação do botão gravar */
	gravaFilho: function (campo){
	    eval('var dadoSelecionado = objetosBrowseSelecionado' + campo + ';');		
	    if (dadoSelecionado == null)
	    	alert('Selecione um valor');
		else if (window.gravandoFilho){
		     eval('objetosBrowseSelecionado' + campo + ' = null;');
    	    gravandoFilho(campo,dadoSelecionado,eval(paiJSON));
        }
	},
	
	/* ação do botão salvar todos */
	gravarTudoFilho: function (campo){	   
	    eval('objetosBrowseSelecionado' + campo + ' = null;');
		if (window.gravandoTudoFilho)		    
    		gravandoTudoFilho(campo,eval(paiJSON));
	},
	
	excluirFilho: function (campo){
	    eval('var dadoSelecionado = objetosBrowseSelecionado' + campo + ';');
		if (dadoSelecionado == null)
	    	alert('Selecione um valor');
		else if (window.excluindoFilho){
		    eval('objetosBrowseSelecionado' + campo + ' = null;');
    	    excluindoFilho(campo,dadoSelecionado,eval(paiJSON));	    
    	}    
	},
	
	excluirTudoFilho: function (campo){
	    eval('objetosBrowseSelecionado' + campo + ' = null;');
		if (window.excluindoTudoFilho)
			window.excluindoTudoFilho(campo,eval(paiJSON));
	},
	
	
    carregaData: function (dataAux, campo){
        if (typeof dataAux == 'string'){
           if (idioma == "en_US" && dataAux != ""){
              mudaAno = dataAux.split("/")[2];
              mudaMes = dataAux.split("/")[0];
              mudaDia = dataAux.split("/")[1];
              stringData = mudaDia + "/" + mudaMes + "/" + mudaAno;
           }else{
              stringData = dataAux;
           }
        }else {
			stringData = "";
			if (idioma == "pt_BR"){
				if(dataAux.getDate() < 10)
				stringData = "0";
				stringData += dataAux.getDate() + "/";
				if(dataAux.getMonth() + 1 < 10)
				stringData += "0";
			 	stringData += (dataAux.getMonth() + 1) + "/" + dataAux.getFullYear();
			 }else if (idioma == "en_US"){
			 	if(dataAux.getMonth() + 1 < 10)
		 			stringData = "0";
			 	stringData += (dataAux.getMonth() + 1) + "/";
			 	if(dataAux.getDate() < 10)
			 		stringData += "0";
			 	stringData += dataAux.getDate() + "/";
			 	stringData += dataAux.getFullYear();
			 }
		}
		document.getElementById(campo).value = stringData;
	},

    carregaHora: function (dataAux, campo){
		stringHora = "";

		if (isNaN(dataAux) || dataAux == null || dataAux == "" || dataAux == "0"){
			if (dataAux == null || dataAux == "" || dataAux == "0")
				dataAux = "00:00";
			dataAuxiliar = new Date("00/00/0000 " + dataAux);
			dataAux = dataAuxiliar;
		}
		if (idioma == "pt_BR"){
			if(dataAux.getHours() < 10)
				stringHora += "0";
			stringHora += dataAux.getHours() + ":";
			if(dataAux.getMinutes() < 10)
				stringHora += "0";
		 	stringHora += dataAux.getMinutes();
			document.getElementById(campo).value = stringHora;
		}else{
		    if (idioma == "en_US"){
				if(dataAux.getHours() > 12){
					if((dataAux.getHours() - 12) < 10)
						stringHora += "0";
					stringHora += (dataAux.getHours() - 12) + ":";
					periodo = "pm";}
				else{
					if(dataAux.getHours() < 10)
						stringHora += "0";
					stringHora += dataAux.getHours() + ":";
					periodo = "am";
				}
				
				if(dataAux.getMinutes() < 10)
					stringHora += "0";
			 	stringHora += dataAux.getMinutes() + periodo;
				document.getElementById(campo).value = stringHora;		    
		    }
		}
	},
	
  /****************************************** BROWSE **********************************************************************/	
	
	browse: function (nomeCampo,colunasTabela, titulo,tituloColunas,largura, altura, classeCss){
		campo  = '<div class="' + classeCss + '" id="div' + nomeCampo + '" style="width: ' + largura + 'px; height: ' + altura + ' px; overflow: auto; border: 1px solid silver; background: #FFFFFF">';
		campo += '  <table cellpadding="0" cellspacing="0" class="' + classeCss + '" id="table' + nomeCampo + '" width="100%" border="0">';   
		campo += '   <thead style="position:relative;cursor: default; top: expression(document.getElementById(' + "'div" + nomeCampo + "'" + ').scrollTop-2);">';
		
		if (tituloColunas != ''){
			colunaAUX = tituloColunas.split(','); /* quantidade colunas que o cliente deseja */
			
			campo += '    <tr>';
			campo += '	     <th colspan="' + colunaAUX.length + '">' + titulo + '</th>';
			campo += '    </tr>';
			
			campo += ' <tr>';				
			for(var i=0; i < colunaAUX.length; i++){
				 campo += '<th>' + colunaAUX[i] + '</th>';
			}
			campo += '</tr>';
		}else{
			campo += '    <tr>';
			campo += '	     <th>' + titulo + '</th>';
			campo += '    </tr>';
		}
		
		campo += '   </thead>';						  
		campo += '	 <tbody id="dados' + nomeCampo +'">';
        campo += '   </tbody>';					   
		campo += '  </table>';
		campo += '</div>';
				
		document.writeln(campo);
		campo = "";
        
        /* declarando variavel */
        eval('funcoesColunas' + nomeCampo + ' = null;');
        eval('opcoesColunas' + nomeCampo + ' = null;');
        eval('objetosBrowse' + nomeCampo + ' = null;');
        eval('statusBrowse' + nomeCampo + ' = false;');
        eval('linhaSelecionada' + nomeCampo + ' = null;');
        eval('objetosBrowseSelecionado' + nomeCampo + ' = null;');
        
        /* preenchendo variavel */
        eval('funcoesColunas' + nomeCampo + ' = Solusoft.montaFuncaoColuna("' + colunasTabela + '");');
        eval('opcoesColunas' + nomeCampo + ' = Solusoft.opcoesColunasBrowse("' + nomeCampo + '");');						
	},
	
	opcoesColunasBrowse: function (nomeBrowse){ 
       return {
		  /* opção para personalizar a linha da tabela do browse */
		  rowCreator: function(options) {	    
			var row = document.createElement("tr");
			eval('row.onmouseover = function(){ if (statusBrowse'+ nomeBrowse + ' == true) this.bgColor=\'#D6EBFF\';};');
			eval('row.onmouseout = function(){ if (statusBrowse'+ nomeBrowse + ' == true) this.bgColor=\'#FFFFFF\';};');
			row.style.cursor = "pointer";
			row.id = nomeBrowse + options.rowIndex;			
			eval('row.onclick = function(){ if (statusBrowse'+ nomeBrowse + ' == true) Solusoft.selecionaLinhaBrowse("' + nomeBrowse + '",row,nomeBrowse,objetosBrowse' + nomeBrowse + '[' + options.rowIndex + '])};');
			eval('row.ondblclick = function() { if (statusBrowse'+ nomeBrowse + ' == true) Solusoft.retornaValorBrowse("' + nomeBrowse + '",objetosBrowse' + nomeBrowse + '[' + options.rowIndex + ']);};'); 
			return row;
		 }
	   }     
	},
				
	selecionaLinhaBrowse: function (nomeBrowse,linha,nomeBrowse,dadoSelecionado) {
	    if((eval('linhaSelecionada' + nomeBrowse) != null) && (eval('linhaSelecionada' + nomeBrowse + '.id') == linha.id)){
	    	linhaAUX = eval('linhaSelecionada' + nomeBrowse);
     		linhaAUX.onmouseout = function(){this.bgColor='#FFFFFF';};
     		linhaAUX.bgColor = '#FFFFFF';
     		eval('linhaSelecionada' + nomeBrowse + ' = null;')
     		eval('objetosBrowseSelecionado' + nomeBrowse + ' = null;');
     	}else if (eval('linhaSelecionada' + nomeBrowse) != null){
     		linhaAUX = eval('linhaSelecionada' + nomeBrowse);
     		linhaAUX.onmouseout = function(){this.bgColor='#FFFFFF';};
     		linhaAUX.bgColor = '#FFFFFF';
     		eval('objetosBrowseSelecionado' + nomeBrowse + ' = dadoSelecionado;');
     		eval('linhaSelecionada' + nomeBrowse + ' = linha;');
			linha.bgColor = '#D6EBFF';
			linha.onmouseout = "";
     	}else{
     	    eval('objetosBrowseSelecionado' + nomeBrowse + ' = dadoSelecionado;');
			eval('linhaSelecionada' + nomeBrowse + ' = linha;');
			linha.bgColor = '#D6EBFF';
			linha.onmouseout = "";
		}
	},
	
	atualizaDadosBrowse: function (nomeCampo, listaDados){     
	    eval('objetosBrowse' + nomeCampo + ' = listaDados'); 
		DWRUtil.removeAllRows('dados' + nomeCampo);
		if ((listaDados != null) && (listaDados != "") && (listaDados.length > 0)){
			DWRUtil.addRows('dados' + nomeCampo,listaDados,eval('funcoesColunas' + nomeCampo),eval('opcoesColunas' + nomeCampo));
		}	
	},
	
	retornaValorBrowse: function(nomeBrowse,dadoSelecionado){
	    eval('linhaSelecionada' + nomeBrowse + ' = null;');
	    eval('objetosBrowseSelecionado' + nomeBrowse + ' = null;');
	    if (window.retornandoValorBrowse)
	    	retornandoValorBrowse(nomeBrowse,dadoSelecionado);
		   	
	},
	
	insereLinhaBrowse: function (nomeBrowse,objeto, campoChave){
	    adicionar = true;
		if ((eval('objetosBrowse' + nomeBrowse) == null) || (eval('objetosBrowse' + nomeBrowse) == ''))
	       listaDados = new Array();
	    else   
			eval('listaDados = objetosBrowse' + nomeBrowse + ';');
						
		if (typeof campoChave != 'undefined'){
			campoChaveAUX = campoChave.split(',');
		    chave = '';
		    dadosBrowse = eval('objetosBrowse' + nomeBrowse);
		    
		    if (campoChaveAUX.length > 1) {
			    for(var j=0; j < campoChaveAUX.length; i++){
			        if (chave != '')
			        	chave += ' && ';
			    	chave += ' (listaDados[i].' + campoChave[j] + ' == objeto.' + campoChave[j] + ') ';
			    }
		    }else
		    	chave = 'listaDados[i].' + campoChave + ' == objeto.' + campoChave;
		    
		    /* tirando o elemento da lista */
			if (eval('objetosBrowse' + nomeBrowse) != null){
				for (var i=0; i < eval('objetosBrowse' + nomeBrowse + '.length'); i++){				
					if (eval(chave)){
					    listaDados[i] = objeto;				    
						adicionar = false;
					}
				}
			}
		}	    
		
		if (adicionar)	
			listaDados.push(objeto);		
		this.atualizaDadosBrowse(nomeBrowse, listaDados);
		listaDados="";
	},
	
	excluirTodasLinhasBrowse: function (nomeBrowse){
		eval('objetosBrowse' + nomeBrowse + ' = null;');
        eval('linhaSelecionada' + nomeBrowse + ' = null;');
        eval('objetosBrowseSelecionado' + nomeBrowse + ' = null;');
		DWRUtil.removeAllRows('dados' + nomeBrowse);
	},
	
	excluirLinhaBrowse: function (nomeBrowse, objeto, campoChave){
	    /* montando chave de comparação */
	    campoChaveAUX = campoChave.split(',');
	    chave = '';
	    dadosBrowse = eval('objetosBrowse' + nomeBrowse);
	    
	    if (campoChaveAUX.length > 1) {
		    for(var j=0; j < campoChaveAUX.length; i++){
		        if (chave != '')
		        	chave += ' && ';
		    	chave += ' (objetosBrowse' + nomeBrowse + '[i].' + campoChave[j] + ' == objeto.' + campoChave[j] + ') ';
		    }
	    }else
	    	chave = 'objetosBrowse' + nomeBrowse + '[i].' + campoChave + ' == objeto.' + campoChave;
	    
	    /* tirando o elemento da lista */
		if (eval('objetosBrowse' + nomeBrowse) != null){
			for (var i=0; i < eval('objetosBrowse' + nomeBrowse + '.length'); i++){				
				if (eval(chave)){				    
					dadosBrowse.splice(i,1);
				}
			}
			
			this.atualizaDadosBrowse(nomeBrowse, dadosBrowse);
			dadosBrowse = '';
			chave = '';
			campoChaveAUX = '';
		}				
	},
	
	/* ************************************** RELATORIO ************************************** */
	
	preparaRelatorio: function (largura,altura){
	    if (typeof largura == 'undefined')
	    	var largura = window.screen.width * 7/8;
	    if (typeof altura == 'undefined')
	    	var altura = window.screen.height * 5/8;
	
		/* Redimencionando o tamanho e posição da Janela */
	    var winl = (((window.screen.width - window.screenLeft) - largura) / 2 - 20);
        var wint = (((window.screen.height - window.screenTop) - altura) / 2 - 50);        		    
	    
	    pagina =  '<div id="divBloqueia" style="display:none;position:absolute; left:0px ; top:0px; width:100%; height:100%; z-index:99; filter:alpha(opacity=40);opacity:0.4;background-color:#AAA;"></div>';
        pagina += '<div id="divRelatorio" style="display:none;position:absolute; top:' + wint + '; width:100%; height:' + altura + '; z-index:100;">';	
		pagina += ' <table  width="100%" height="100%" border="0" cellpadding="0" cellspacing="0">';
		pagina += ' <tr>';
		pagina += '    <td width="10" height="33"><img src="' + this.enderecoImg + '/Erro_r2_c2.gif" width="10" height="33" border="0" alt=""></td>';
		pagina += '    <td background="' + this.enderecoImg + '/Erro_r2_c6.gif" height="33">';
		pagina += '        <table width="100%" height="100%"  border="0" cellpadding="0" cellspacing="0">';
		pagina += '          <tr>';
		pagina += '            <td width="96%" valign="bottom"><img src="'+ this.enderecoBotao + '/impressora.gif" alt="" width="20" height="21" align="right" onClick="Solusoft.imprimirRelatorio();" style="cursor:pointer"></td>';
		pagina += '            <td width="4%" valign="bottom"><img src="'+ this.enderecoBotao + '/fechar.gif" width="21" height="21" align="right" onClick="Solusoft.fechaRelatorio();" style="cursor:pointer"></td>';
		pagina += '          </tr>';
		pagina += '        </table>';
		pagina += '    </td>';
		pagina += '    <td width="16" height="33"><img src="' + this.enderecoImg + '/Erro_r2_c7.gif" width="16" height="33" border="0" alt=""></td>';
		pagina += '  </tr>';
		pagina += '  <tr>';
		pagina += '    <td background="' + this.enderecoImg + '/Erro_r3_c2.gif" width="10"></td>';
		pagina += '    <td bgcolor="#EAEAEA"><iframe id="relatorio" name="relatorio" scrolling="auto" allowtransparency="yes" width="100%" height="100%" frameborder="0"></iframe></td>';
		pagina += '    <td background="' + this.enderecoImg + '/Erro_r3_c7.gif" width="16"></td>';
		pagina += '  </tr>';
		pagina += '  <tr>';
		pagina += '    <td><img src="' + this.enderecoImg + '/Erro_r5_c2.gif" width="10" height="17" border="0" alt=""></td>';
		pagina += '    <td background="' + this.enderecoImg + '/Erro_r5_c3.gif" height="17"></td>';
		pagina += '    <td><img src="' + this.enderecoImg + '/Erro_r5_c7.gif" width="16" height="17" border="0" alt=""></td>';
		pagina += '  </tr>';
		pagina += ' </table>';
		pagina += '</div>';
		
		document.writeln(pagina); /* escreve no documento em questão */
        pagina = ""; // liberando espaco na memoria		
           
        window.document.body.appendChild(document.getElementById("divBloqueia"));
        window.document.body.appendChild(document.getElementById("divRelatorio"));
	},
	
	mostraRelatorio: function (){
	   document.getElementById("divBloqueia").style.display = 'block';
	   document.getElementById("divRelatorio").style.display = 'block';
	},
	
	fechaRelatorio: function (){
       document.getElementById("divBloqueia").style.display = 'none';
	   document.getElementById("divRelatorio").style.display = 'none';
	   document.getElementById('relatorio').src = "about:blank"; 
	},
	
	imprimirRelatorio: function (){
	   document.getElementById("relatorio").focus();
	   document.getElementById("relatorio").contentWindow.imprimir();
	},		
	
	deAte: function (campoDe, campoAte){
	  if (campoAte.value == "")
	    campoAte.value = campoDe.value;
	},
	
	
	/*********************************** PESQUISA INCREMENTAL *****************************************/
	arrOptions: new Array(),
    strLastValue: new String(""),
    bMadeRequest: null,
    theTextBox: null,
    objLastActive: null,
    currentValueSelected: -1,
    bNoResults: false,
    isTiming: false,
    countForId: 0,
    undeStart: "<span class='spanMatchText'>",
	undeEnd: "</span>",
	selectSpanStart: "<span style='width:100%;display:block;' class='spanNormalElement' onmouseover='Solusoft.SetHighColor(this)' ",
	selectSpanEnd: "</span>",
	
	CarregaPesquisaIncremental: function (campo,campoAUX,separador,nomeFuncaoPesquisa,mensagemValorVaziu){
	    var mostrarMensagem = false; 
 	 
       /* verifica se já não tem criado */
       if (!window.document.getElementById('spanOutput')){
	       var elemSpan = document.createElement("span");
	       elemSpan.id = "spanOutput";
	       elemSpan.className = "spanTextDropdown";
	       document.body.appendChild(elemSpan);
       }    
       
       if (mensagemValorVaziu != "")
       	   mostrarMensagem = true; 
        
       //aplicando propriedades nos campos
       campo.obj = Solusoft.SetProperties(campo,campoAUX,nomeFuncaoPesquisa,true,true,true,mostrarMensagem,mensagemValorVaziu,true,2000,separador);
    },	
	  
	SetProperties: function (xElem,xHidden,xserverCode,xignoreCase,xmatchAnywhere,xmatchTextBoxWidth,
                  	         xshowNoMatchMessage,xnoMatchingDataMessage,xuseTimeout,xtheVisibleTime,separador){
         var props={
           elem: xElem,
           hidden: xHidden,
           serverCode: xserverCode,
           regExFlags: ( (xignoreCase) ? "i" : "" ),
           regExAny: ( (xmatchAnywhere) ? "" : "^" ),
           isSeparador: separador,
           matchAnywhere: xmatchAnywhere,
           matchTextBoxWidth: xmatchTextBoxWidth,
           theVisibleTime: xtheVisibleTime,
           showNoMatchMessage: xshowNoMatchMessage,
           noMatchingDataMessage: xnoMatchingDataMessage,
           useTimeout: xuseTimeout,
           textoAtual: ""
         };
         Solusoft.AddHandler(xElem);
         return props;
    },

	AddHandler: function (objText){
       objText.onkeyup = Solusoft.GiveOptions;
       objText.onblur = function(){if(objText.obj.useTimeout)Solusoft.StartTimeout();}
       if(Solusoft.isOpera)objText.onkeypress = Solusoft.GiveOptions;
    },
    
    executaFuncEspecPesq: function (campo){
       this.theTextBox = campo;
       var result;	     
       var xStrText = campo.value; 
       if (campo.obj.isSeparador.length > 0){
          result = xStrText.split(campo.obj.isSeparador);
          if (result.length > 0)
            xStrText = result[result.length - 1];  
       }  
       xStrText = xStrText.replace(/ /,"");

       /* chamando função específica */
       if (eval("window." + campo.obj.serverCode))
           eval(campo.obj.serverCode + "('" + xStrText + "');" );	        
    },
    
	// tratando teclas
	GiveOptions: function (e){
       var intKey = -1;
       if(window.event){
         intKey = event.keyCode;
         Solusoft.theTextBox = event.srcElement;
       }else{
         intKey = e.which;
         Solusoft.theTextBox = e.target;
       }	        
                                  
       /* pega qual a ultima letra digitada */ 
       var char = Solusoft.theTextBox.value.slice(Solusoft.theTextBox.value.length - 1, Solusoft.theTextBox.value.length);             
       
       // verifica se tem separador, e limpa o cache do valor total.
       if ((Solusoft.theTextBox.obj.isSeparador.length > 0) 
          && (Solusoft.theTextBox.value.indexOf(Solusoft.theTextBox.obj.isSeparador) == -1))
          Solusoft.theTextBox.obj.textoAtual = ""; 
      
          
       //verifica se for o separador do campo
       if ((char == Solusoft.theTextBox.obj.isSeparador) || (intKey == 32)){
         Solusoft.arrOptions = new Array();
         setTimeout("Solusoft.HideTheBox()",0);
         Solusoft.strLastValue = "";	                       
         Solusoft.theTextBox.obj.textoAtual = Solusoft.theTextBox.value;	
         if (Solusoft.theTextBox.value.lastIndexOf(Solusoft.theTextBox.obj.isSeparador) > -1)
            Solusoft.theTextBox.obj.textoAtual = Solusoft.theTextBox.value.slice(0,Solusoft.theTextBox.value.lastIndexOf(Solusoft.theTextBox.obj.isSeparador) + 1);            	          
   	      return false;
   	    }
       
       if(Solusoft.theTextBox.obj.useTimeout){
         if(Solusoft.isTiming)Solusoft.EraseTimeout();
         Solusoft.StartTimeout();
       }
       if(Solusoft.theTextBox.value.length == 0 && !Solusoft.isOpera){
         Solusoft.arrOptions = new Array();
         setTimeout("Solusoft.HideTheBox()",0);
         Solusoft.strLastValue = "";
         return false;
       }
       
       if(Solusoft.objLastActive == Solusoft.theTextBox){
         if(intKey == 13){
           Solusoft.GrabHighlighted();
           Solusoft.theTextBox.blur();
           return false;
         } else if(intKey == 38){
           Solusoft.MoveHighlight(-1);
           return false;
         } else if(intKey == 40){
           Solusoft.MoveHighlight(1);
           return false;
         } else{}
       }
       
       if(Solusoft.objLastActive != this.theTextBox ||
          Solusoft.theTextBox.value.indexOf(Solusoft.strLastValue) != 0 ||
          ((Solusoft.arrOptions.length==0 || Solusoft.arrOptions.length==15 ) && !Solusoft.bNoResults) ||
          (Solusoft.theTextBox.value.length <= Solusoft.strLastValue.length)){
            Solusoft.objLastActive = Solusoft.theTextBox;
            Solusoft.bMadeRequest = true;
            Solusoft.executaFuncEspecPesq(Solusoft.theTextBox);
       } else if(!Solusoft.bMadeRequest){
         Solusoft.BuildList(Solusoft.theTextBox.value);
       }
       Solusoft.strLastValue = Solusoft.theTextBox.value;
    },
	
    // classe para receber os dados
	RecebeResultadosPesquisa:  function (resultado){
       Solusoft.arrOptions = resultado;
       Solusoft.BuildList(Solusoft.strLastValue);
       Solusoft.bMadeRequest = false;
    },
		  
	BuildList: function (theText){
       Solusoft.SetElementPosition(Solusoft.theTextBox);
       var theMatches = Solusoft.MakeMatches(theText);
       theMatches = theMatches.join().replace(/\,/gi,"");
       if(theMatches.length > 0){
         document.getElementById("spanOutput").innerHTML = theMatches;
         document.getElementById("OptionsList_0").className= "spanHighElement";
         Solusoft.currentValueSelected = 0;
         Solusoft.bNoResults = false;
       }else{
         Solusoft.currentValueSelected = -1;
         Solusoft.bNoResults = true;
         if(Solusoft.theTextBox.obj.showNoMatchMessage)
           document.getElementById("spanOutput").innerHTML = "<span class='noMatchData'>" + Solusoft.theTextBox.obj.noMatchingDataMessage + "</span>";
         else setTimeout("Solusoft.HideTheBox()",0);
       }
    },
	
	SetElementPosition: function (theTextBoxInt){
       var selectedPosX = 0;
       var selectedPosY = 0;
       var theElement = theTextBoxInt;
       if (!theElement) return;
       var theElemHeight = theElement.offsetHeight;
       var theElemWidth = theElement.offsetWidth;
       while(theElement != null){
         selectedPosX += theElement.offsetLeft;
         selectedPosY += theElement.offsetTop;
         theElement = theElement.offsetParent;
       }
       xPosElement = document.getElementById("spanOutput");
       xPosElement.style.left = selectedPosX;
       if(theTextBoxInt.obj.matchTextBoxWidth)
         xPosElement.style.width = theElemWidth;
       xPosElement.style.top = selectedPosY + theElemHeight
       xPosElement.style.display = "block";
       if(theTextBoxInt.obj.useTimeout){
         xPosElement.onmouseout = Solusoft.StartTimeout;
         xPosElement.onmouseover = Solusoft.EraseTimeout;
       }
       else{
         xPosElement.onmouseout = null;
         xPosElement.onmouseover = null;
       }
    },
	
	MakeMatches: function (xCompareStr){
       var result;
       Solusoft.countForId = 0;
       var matchArray = new Array();
       	        	      
       if (Solusoft.theTextBox.obj.isSeparador.length > 0){
          result = xCompareStr.split(Solusoft.theTextBox.obj.isSeparador);
          if (result.length > 0){
            xCompareStr = result[result.length - 1];
          }	           
       }
       xCompareStr = xCompareStr.replace(/ /,"");

       	        
       var regExp = new RegExp(Solusoft.theTextBox.obj.regExAny + xCompareStr,Solusoft.theTextBox.obj.regExFlags);
       for(i=0;i<Solusoft.arrOptions.length;i++){
         var theMatch = Solusoft.arrOptions[i][0].match(regExp);
         if(theMatch){
           matchArray[matchArray.length]= Solusoft.CreateUnderline(Solusoft.arrOptions[i][0],xCompareStr,i);
         }
       }
       return matchArray;
    },
	

	CreateUnderline: function (xStr,xTextMatch,xVal){
       selectSpanMid = "onclick='Solusoft.SetText(" + xVal + ")' id='OptionsList_" + this.countForId + "' theArrayNumber='"+ xVal +"'>";
       var regExp = new RegExp(Solusoft.theTextBox.obj.regExAny +
       xTextMatch,Solusoft.theTextBox.obj.regExFlags);
       var aStart = xStr.search(regExp);
       var matchedText = xStr.substring(aStart,aStart + xTextMatch.length);
       this.countForId++;
       return Solusoft.selectSpanStart + selectSpanMid + xStr.replace(regExp,Solusoft.undeStart + matchedText + Solusoft.undeEnd) + Solusoft.selectSpanEnd;
    },
	
	MoveHighlight:  function (xDir){
       if(Solusoft.currentValueSelected >= 0){
         newValue = parseInt(Solusoft.currentValueSelected) + parseInt(xDir);
         if(newValue > -1 && newValue < Solusoft.countForId){
           Solusoft.currentValueSelected = newValue;
           Solusoft.SetHighColor (null);
         }
       }
    },
    
	SetHighColor: function (theTextBox){
       if(theTextBox){
         Solusoft.currentValueSelected =  theTextBox.id.slice(theTextBox.id.indexOf("_")+1,theTextBox.id.length);
       }
       for(i = 0; i < Solusoft.countForId; i++){
         document.getElementById('OptionsList_' + i).className = 'spanNormalElement';
       }
       document.getElementById('OptionsList_' +  this.currentValueSelected).className = 'spanHighElement';
    },
	
	SetText: function (xVal){
       if ((Solusoft.theTextBox.obj.isSeparador.length > 0) && (Solusoft.theTextBox.obj.textoAtual.length > 0)) {	        
          Solusoft.theTextBox.value = Solusoft.theTextBox.obj.textoAtual + Solusoft.arrOptions[xVal][0]; //set text value
          Solusoft.theTextBox.obj.hidden.value = Solusoft.theTextBox.obj.textoAtual + Solusoft.arrOptions[xVal][0];
       }else{
          Solusoft.theTextBox.value = Solusoft.arrOptions[xVal][0]; //set text value
          Solusoft.theTextBox.obj.hidden.value = Solusoft.arrOptions[xVal][0];	
       }   

       setTimeout("Solusoft.HideTheBox()",0); //esconde a caixa
       
       //seta foco no campo apos escolha de algum item
       setTimeout("document.getElementById(Solusoft.theTextBox.id).focus()",0);
       
       setTimeout("document.getElementById('spanOutput').style.display = 'none'",0);
       Solusoft.currentValueSelected = -1; //remove the selected index
   
    },
    
	GrabHighlighted: function (){
       if(Solusoft.currentValueSelected >= 0){
         xVal = document.getElementById("OptionsList_" + Solusoft.currentValueSelected).getAttribute("theArrayNumber");
         Solusoft.SetText(xVal);
         setTimeout("Solusoft.HideTheBox()",0);
       }
    },
	      
	HideTheBox: function (){
       setTimeout("document.getElementById('spanOutput').style.display = 'none'",0);
       Solusoft.currentValueSelected = -1;
       Solusoft.EraseTimeout();
    },
	
	EraseTimeout: function (){
       clearTimeout(Solusoft.isTiming);
       Solusoft.isTiming = false;
    },
	 
	StartTimeout: function (){
	   if (document.getElementById("theTextBox"))
          Solusoft.isTiming = setTimeout("Solusoft.HideTheBox()",Solusoft.theTextBox.obj.theVisibleTime);
    },
    
    contaCaracter: function (campo, escreverEm, tamanhoMaximo) {  
	  if (campo && campo.value.length >= tamanhoMaximo) {
	    campo.value = campo.value.substring(0, tamanhoMaximo);
	  }
	  var txtField = document.getElementById(escreverEm);
	  if (txtField) {  
	    txtField.innerHTML = campo.value.length;
    }
}		
	
};


Number.prototype.round=function(casas){return Math.round(this * Math.pow(10, casas)) / Math.pow(10, casas);};