<!--
// Trabalha com valores de tabela (WEBGEN) onde não se sabe quantas ou quais são as linhas existentes
///
//Tabelas variáveis, utilizar estruturas genéricas abaixo para combo, textarea, janela, etc:
//
//  Funções:
//
// verifica IE e FF qual tecla foi pressionada p/ onkeydown / ESC=27    e TAB=9  para hide ou show tabela 
function showhideMenu(menu,event){
	var k=event.keyCode  ? event.keyCode  :
          event.charCode ? event.charCode :
          event.which    ? event.which    : void 0;
    if (k == 9){hidemenu(menu);
	}else{

//		if (k >= 48 && k <=57){
			showmenu(menu);
//		}	
	}
}
// torna visivel qualquer combo/janela/textarea  - sem cálculo de posicao
function showmenu(elmnt){
	document.getElementById(elmnt).style.visibility="visible";
}
// torna invisível qualquer combo/janela/textarea - sem calculo de posicao
function hidemenu(elmnt){
	document.getElementById(elmnt).style.visibility="hidden";
}
// torna visivel combobox com posicao variavel na tela
// informar: elmnt  --> 
//           elmntS -->
//           Vtop   -->
//           Vleft  -->
function showmenuPV(elmnt,elmntS,Vtop,Vleft){
	el = elmnt.id;
	var posY = (pegarPosicaoY(elmntS))-Vtop;
	var posT = posY+'px';
	var posX = (pegarPosicaoX(elmntS))-Vleft;
	var posL = posX+'px';
	
	document.getElementById(el).style.left= posL;
	document.getElementById(el).style.top= posT;
	document.getElementById(el).style.visibility="visible";
}
// torna visivel combobox com posicao variavel na tela
// informar: elmnt  -->
//           elmntS -->
//           Vtop   -->
//           Vleft  -->
function showmenuTB(elmnt,elmntS,Vtop,Vleft){
	var posY = (pegarPosicaoY(elmntS))-Vtop;
	var posT = posY+'px';
	var posX = (pegarPosicaoX(elmntS))-Vleft;
	var posL = posX+'px';
	document.getElementById(elmnt).style.left= posL;
	document.getElementById(elmnt).style.top= posT;
	document.getElementById(elmnt).style.visibility="visible";
}
// torna invisivel combobox com posicao variavel na tela
function hidemenuPV(elmnt){
	el = elmnt.id;
	document.getElementById(el).style.visibility="hidden";
}
// Posicionar o "menu" de acordo com a posicao relativa na tela 
function pegarPosicaoY(objeto){
	var atual_top = 0;
	if (objeto.offsetParent) {
		while (objeto.offsetParent) {
			atual_top += objeto.offsetTop
		objeto = objeto.offsetParent;
		}
	}
	return atual_top;
}
function pegarPosicaoX(objeto){
	var atual_left = 0;
	if (objeto.offsetParent) {
		while (objeto.offsetParent) {
			atual_left += objeto.offsetLeft
			objeto = objeto.offsetParent;
		}
	}
	return atual_left;
}
//
// Tabelas fixas do sistema p/combobox - utilizar estrutura abaixo (valida para tabela de horas, tipos de endereço, localidade, especialidade, etc:
//		<tr>
//			<TD class="Nomecampo">Cidade:</td>
//			<td>
//			<select NAME="n05_codlocalid" id="n05_codlocalid" SIZE=1 class="ConteudoCampo" onKeyUp="MudaCampo(event,n4_P_distancia3);">
//				<script>imprimeLocalidadeN("¢¢¢¢¢")</script>
//			</select>
//			</td>
//		</tr>
//
// tabela de horas - utilizar o comando    <script>imprimeOpcHR("¢¢")</script>   no html
var imprimehora = new Array(	"   ", "00 ",	"01 ",	"02 ",	"03 ",	"04 ",	"05 ",	"06 ",	"07 ",	"08 ",	"09 ",	"10 ",	"11 ",	"12 ", 
						    	"13 ",	"14 ",	"15 ",	"16 ",	"17 ",	"18 ",	"19 ",	"20 ",	"21 ",	"22 ",	"23 "	);
function imprimeOpcHR(cod){
	var param = new Array(imprimehora.length);
	for(i=0;i<imprimehora.length;i++){
		if(cod==imprimehora[i].substring(0,2)) param[i] = "selected";
		document.write("<option value='"+imprimehora[i].substring(0,2)+"' "+param[i]+">"+imprimehora[i].substring(0)+"</option>");
	}
}
// tabela de minutos - utilizar o comando     <script>imprimeOpcMN("¢¢")</script>    no html
var imprimeminuto = new Array(	"   ", "00 ", "05 ", "10 ", "15 ", "20 ", "25 ", "30 ", "35 ", "40 ", "45 ", "50 ", "55 ");
function imprimeOpcMN(cod){
	var param = new Array(imprimeminuto.length);
	for(i=0;i<imprimeminuto.length;i++){
		if(cod==imprimeminuto[i].substring(0,2)) param[i] = "selected";
		document.write("<option value='"+imprimeminuto[i].substring(0,2)+"' "+param[i]+">"+imprimeminuto[i].substring(0)+"</option>");
	}
}
// tabela de tipos de endereco - utilizar o comando   <script>imprimeOpcTend("¢¢¢¢¢¢¢¢¢¢¢¢")</script>  no html 
var imprimetend = new Array( "  ", 
							 "OUTROS      Outros ", "AEROPORTO   Aeroporto ", "ALAMEDA     Alameda ", "AREA        Área ", 
 							 "AVENIDA     Avenida ", "CAMPO       Campo ", "CHACARA     Ch&aacute;cara ", "COLONIA     Col&ocirc;nia ", 
							 "COMDOMINIO  Condom&iacute;nio ", "CONJUNTO    Conjunto ", "DISTRITO    Distrito ", "ESPLANADA   Esplanada ", 
							 "ESTACAO     Esta&ccedil;&atilde;o ", "ESTRADA     Estrada ", "FAVELA      Favela ",  "FAZENDA     Fazenda ", 
    						 "FEIRA       Feira ", "JARDIM      Jardim ", "LADEIRA     Ladeira ", "LAGO        Lago ", 
							 "LAGOA       Lagoa ", "LARGO       Largo ", "LOTEAMENTO  Loteamento ", "MORRO       Morro ", 
							 "NUCLEO      N&uacute;cleo ", "PARQUE      Parque ", "PASSARELA   Passarela ", "PATIO       P&aacute;tio ", 
							 "PRACA       Pra&ccedil;a ", "QUADRA      Quadra ", "RECANTO     Recanto ", "RESIDENCIAL Residencial ", 
							 "RODOVIA     Rodovia ", "RUA         Rua ", "SETOR       Setor ", "SITIO       S&iacute;tio ", 
							 "TRAVESSA    Travessa ", "TRECHO      Trecho ", "TREVO       Trevo ", "VALE        Vale ", 
							 "VEREDA      Vereda ", "VIA         Via ", "VIADUTO     Viaduto ", "VIELA       Viela ", "VILA        Vila ");
function imprimeOpcTend(tend){
	var param = new Array(imprimetend.length);
	for(i=0;i<imprimetend.length;i++){
		if(tend==imprimetend[i].substring(0,12)) param[i] = "selected";
		document.write("<option value='"+imprimetend[i].substring(0,12)+"' "+param[i]+">"+imprimetend[i].substring(11)+"</option>");
	}
}

// Frederico
function imprimeLocalidadeB47(cod){
	var paramarea = new Array(localidadeB47.length);
	for(i=0;i<localidadeB47.length;i++){
		if(cod==localidadeB47[i].substring(0,3)) paramarea[i] = "selected";
			document.write("<option  style='text-align:left;' value='"+localidadeB47[i].substring(0,3)+"' "+paramarea[i]+">"+localidadeB47[i].substring(4)+"</option>");
	}
}

// tabela de localidades   -   a lista de localidades está no módulo "scriptLocalidadeN.js"  - utilizar o comando <script>imprimeLocalidadeN("¢¢¢¢¢")</script> no html
function imprimeLocalidadeN(cod){
	var paramarea = new Array(localidadeN.length);
	for(i=0;i<localidadeN.length;i++){
		if(cod==localidadeN[i].substring(0,5)) paramarea[i] = "selected";
			document.write("<option  style='text-align:left;' value='"+localidadeN[i].substring(0,5)+"' "+paramarea[i]+">"+localidadeN[i].substring(6)+"</option>");
	}
}
// tabela de especialidades   -   a lista de especialidades está no módulo "scriptEspecialidadeN.js"
function imprimeEspecialidadeN(cod){
	var paramarea = new Array(especialidadeN.length);
	for(i=0;i<especialidadeN.length;i++){
		if(cod==especialidadeN[i].substring(0,3)) paramarea[i] = "selected";
			document.write("<option  style='text-align:left;' value='"+especialidadeN[i].substring(0,3)+"' "+paramarea[i]+">"+especialidadeN[i].substring(4)+"</option>");
	}
}
// tabela de especialidades   -   a lista de servicos de diagnóstico complementar está no módulo "scriptServDiagnoseN.js"
function imprimeServDiagnoseN(cod){
	var paramarea = new Array(especdiagnoseN.length);
	for(i=0;i<especdiagnoseN.length;i++){
		if(cod==especdiagnoseN[i].substring(0,3)) paramarea[i] = "selected";
			document.write("<option  style='text-align:left;' value='"+especdiagnoseN[i].substring(0,3)+"' "+paramarea[i]+">"+especdiagnoseN[i].substring(4)+"</option>");
	}
}
// tabela de especialidades   -   a lista de serviços de atendimento especializado está no módulo "scriptServAtendN.js"
function imprimeServAtendN(cod){
	var paramarea = new Array(especatendendN.length);
	for(i=0;i<especatendendN.length;i++){
		if(cod==especatendendN[i].substring(0,3)) paramarea[i] = "selected";
			document.write("<option  style='text-align:left;' value='"+especatendendN[i].substring(0,3)+"' "+paramarea[i]+">"+especatendendN[i].substring(4)+"</option>");
	}
}
// tabela de areas de atuacao   -   a lista de areas de atuacao está no módulo "scriptAreaAtuacaoN.js"
function imprimeAreaAtuN(cod){
	var paramarea = new Array(areaatuN.length);
	for(i=0;i<areaatuN.length;i++){
		if(cod==areaatuN[i].substring(0,3)) paramarea[i] = "selected";
			document.write("<option  style='text-align:left;' value='"+areaatuN[i].substring(0,3)+"' "+paramarea[i]+">"+areaatuN[i].substring(4)+"</option>");
	}
}
// tabela de honorario classificada por codigo - o js scriptHonorario.js gerada pelo pgm=SMHNT789 -utilizar o comando <script>imprimehonorarioC('xxxId')</script>
function imprimehonorarioC(cod){
		var paramarea = new Array(honorCod.length);
		for(i=0;i<honorCod.length;i++){
				if(cod==honorCod[i].substring(0,0)) paramarea[i] = "selected";
			document.write("<option  style='text-align:left;' value='"+honorCod[i].substring(0,0)+"' "+paramarea[i]+">"+honorCod[i].substring(0)+"</option>");
		}
}
// tabela de honorario classificada por nome - o js scriptHonorario.js gerada pelo pgm=SMHNT789 - utilizar o comando <script>imprimehonorarioN('nnnID')</script>
function imprimehonorarioN(cod){
		var paramarea = new Array(honorNom.length);
		for(i=0;i<honorNom.length;i++){
			if(cod==honorNom[i].substring(0,13)) paramarea[i] = "selected";
			document.write("<option  style='text-align:left;' value='"+honorNom[i].substring(0,13)+"' "+paramarea[i]+">"+honorNom[i].substring(13)+"</option>");
		}
}
// alimenta campo com valor do combobox
function mostraListaCHon(valor, objSel) {
 // alert(valor+objSel);
    for (i=0; i < objSel.length; i++){
    qtd = valor.length;
        if (objSel.options[i].text.substring(0, qtd).toUpperCase() == valor.toUpperCase()) {
        	objSel.selectedIndex = i;
            break;
        }
    }
}
//
//
//   Autocomplete com pesquisa campo-fenética
//
// onde:
// obj    		= campo que esta sendo pesquisado / --> irá montar as opções de select para este campo respeitano sua posição na tela
// what 		= tabela/array para montar select (deve estar em ordem alfabética ou efetuar sort para o array no html) 
// iniLabel		= importante ser informado corretamente pois é o byte inicial da pesquisa fonética - posição de inicio da ""descrição do select <option value='123'>  label  </option>"" dentro do string do array 
// quando temos um string composto de valores respectivos a dois campos da tela (Ex: '404 ACUPUNTURA' - código e descrição de especialidade, onde o value e ACUPUNTURA é o label)
//			deverá ser informado o(s) campo(s) a ser(em) preemchido(s) bem como as posições inicial e final para o string a ser movido
//      EX: id1Value = n03_cod_espec  iniid1Value = 0 e  fimid1Value = 3  irá mover '404' para o value deo campo n03_cod_espec
//        e id2Value = a40_desc_espec  iniid2Value = 4 e  fimid1Value = ' ' (não é necessário informar i tamanho quando se trata do final do string)  irá mover 'ACUMPUNTURA' para o value deo campo a40_desc_espec 
// id1Value 	= id do campo que irá receber valor
// iniid1Value  = posicao inicial do valor (dentro do string) que irá ser movido para o id1Value.value
// fimid1Value  = tamanho final do valor (dentro do string) que irá ser movido para o id1Value.value
// id2Value 	= id do campo que irá receber valor
// iniid2Value  = posicao inicial do valor (dentro do string) que irá ser movido para o id2Value.value
// fimid2Value  = tamanho final do valor (dentro do string) que irá ser movido para o id2Value.value
// id3Value 	= id do campo que irá receber valor
// iniid3Value  = posicao inicial do valor (dentro do string) que irá ser movido para o id3Value.value
// fimid3Value  = tamanho final do valor (dentro do string) que irá ser movido para o id3Value.value

//
//  EXEMPLO:	
//
// tabela de honorário classificada por código
// var honorCod = new Array(
// '20000000 CARDIOLOGIA                                                                    ',
// '20010000 DIAGNOSE                                                                       ',
// '20010010 Eletrocardiograma -                                                            ',
// '20010028 Teste ergometrico (t.e.) em bicicleta ou esteira                               ',
// '56010176 Cistometria com pressao intra-uretral                                          ',
// '         ');
//	SE DIGITADO 2001002 IRÁ MOVER:
//		<td>
//			<table>	
//				<input class="ConteudoCampo1" size="8" autocomplete="off" type="text" name="A08_P_CODHON15" id="CODHONx" value="¢¢¢¢¢¢¢¢" onkeyup="checkList(this,honorCod,'0',this.id,'0','8','NOMHONx','9','')" onkeypress="checkList(this,honorCod,'0',this.id,'0','8','NOMHONx','9','')"> 
//		    </table> 
//		</td>
//    ---> 20010028 PARA id="CODHONx"
//		<td>
//			<table>
//				<input class="ConteudoCampo1" readonly size="60" autocomplete="off" type="text" name="A60_P_NOMEHON15" id="NOMHONx" value="¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢¢" >
//		    </table>
//		</td>
//    ---> Teste ergometrico (t.e.) em bicicleta ou esteira PARA id="NOMHONx"
//
//
// checkList --> verifica se o valor informado está presente em qualque parte da string
function checkList(obj,what,iniLabel,id1Value,iniid1Value,fimid1Value,id2Value,iniid2Value,fimid2Value,id3Value,iniid3Value,fimid3Value,event){
	var k=event.keyCode  ? event.keyCode  :
        event.charCode ? event.charCode :
        event.which    ? event.which    : void 0;
	var T=findPosY(obj)
	var L=findPosX(obj)
	var hld=document.getElementById('listHolder')
	if(!hld){
		var hld=document.createElement('DIV')
		hld.id='listHolder'
		hld.className = 'listHolder'
		document.body.appendChild(hld)
	}
	if (k==9){
		document.getElementById('listHolder').style.display='none'}
	hld.style.top=(T+obj.offsetHeight)
	hld.style.left=L
	hld.style.display='none'
	var txt=obj.value
	if(txt){
		var match=false
		var indices = [];
		var z = 0;
		for(a=0;a<what.length;a++){
			val = what[a];
			for (i = iniLabel - 1; i < val.length; i++) {   
				cString = val.substring(i, i + txt.length);  
				if (cString.toLowerCase() == txt.toLowerCase()){  
					if (indices[z - 1] !== a) { 
						indices[z]=a;
						z++;
						i=val.length;
					}
				} 
			}
		}
		k=event.keyCode  ? event.keyCode  :
      	  event.charCode ? event.charCode :
       	  event.which    ? event.which    : void 0;
		if (k==9){
		document.getElementById('listHolder').style.display='none'}  
		var str='<select class="list" onclick="setOption(\''+obj.id+'\',this.options[this.selectedIndex].value,\''+id1Value+'\''+','+'\''+iniid1Value+'\''+','+'\''+fimid1Value+'\''+','+'\''+id2Value+'\''+','+'\''+iniid2Value+'\''+','+'\''+fimid2Value+'\''+','+'\''+id3Value+'\''+','+'\''+iniid3Value+'\''+','+'\''+fimid3Value+'\')"' 
		+ 'onkeyup="if(k==13){setOption(\''+obj.id+'\',this.options[this.selectedIndex].value,\''+id1Value+'\''+','+'\''+iniid1Value+'\''+','+'\''+fimid1Value+'\''+','+'\''+id2Value+'\''+','+'\''+iniid2Value+'\''+','+'\''+fimid2Value+'\')};'
		+ 'if(k==27){document.getElementById(\'listHolder\').style.display=\'none\';document.getElementById(\''+obj.id+'\').focus()};"' 
		+ 'id="selector" size="5">'
			for (i = 0; i < indices.length; i++) {  
				match=true; 
				str+=('<option value="'+what[indices[i]].replace(/\'/gi,'’')+'">'+what[indices[i]].substring(iniLabel)+'</option>')
			}
		str+='</select>'
		if(match){
			hld.innerHTML=str
			hld.style.display='block'
			var sel=document.getElementById('selector')
			k=event.keyCode  ? event.keyCode  :
          	  event.charCode ? event.charCode :
          	  event.which    ? event.which    : void 0;
			if(k=='40'){
				sel.focus()	
			}
			if (k==19){
				document.getElementById('listHolder').style.display='none'
			}
			if (k==9){
				document.getElementById('listHolder').style.display='none'
			}
			if(k=='13'){
				document.getElementById('listHolder').style.display='none'
			}
		}
	}
}
// checkList --> verifica se o valor informado está presente em qualque parte da string
function checkPos1(obj,what,iniLabel,id1Value,iniid1Value,fimid1Value,id2Value,iniid2Value,fimid2Value,event){
	var k= event.keyCode  ? event.keyCode  :
           event.charCode ? event.charCode :
           event.which    ? event.which    : void 0;
	var T=findPosY(obj)
	var L=findPosX(obj)
	var hld=document.getElementById('listHolder')
	if (k==9){
		document.getElementById('listHolder').style.display='none'}
	if(!hld){
		var hld=document.createElement('DIV')
		hld.id='listHolder'
		hld.className = 'listHolder'
		document.body.appendChild(hld)
	}
	hld.style.top=(T+obj.offsetHeight)
	hld.style.left=L
	hld.style.display='none'
	var txt=obj.value
	if(txt){
		var match=false
		var indices = [];
		var z = 0;
		for(a=0;a<what.length;a++){
			val = what[a];

				cString = val.substring(iniid1Value, txt.length);  
	
				if (cString.toLowerCase() == txt.toLowerCase()){  
					if (indices[z - 1] !== a) { 
						indices[z]=a;
						z++;
					}
				} 
		
		}
		if (indices.length == 0){
			alert("Não encontradas opções para pesquisa solicitada!");
			return;
		}
		k=event.keyCode  ? event.keyCode  :
      	  event.charCode ? event.charCode :
       	  event.which    ? event.which    : void 0;
		if (k==9){
		document.getElementById('listHolder').style.display='none'}
		var str='<select class="list" onclick="setOption(\''+obj.id+'\',this.options[this.selectedIndex].value,\''+id1Value+'\''+','+'\''+iniid1Value+'\''+','+'\''+fimid1Value+'\''+','+'\''+id2Value+'\''+','+'\''+iniid2Value+'\''+','+'\''+fimid2Value+'\''+','+'\''+id3Value+'\''+','+'\''+iniid3Value+'\''+','+'\''+fimid3Value+'\')"' 
		+ 'onkeyup="if(k==13){setOption(\''+obj.id+'\',this.options[this.selectedIndex].value,\''+id1Value+'\''+','+'\''+iniid1Value+'\''+','+'\''+fimid1Value+'\''+','+'\''+id2Value+'\''+','+'\''+iniid2Value+'\''+','+'\''+fimid2Value+'\')};'
		+ 'if(k==27){document.getElementById(\'listHolder\').style.display=\'none\';document.getElementById(\''+obj.id+'\').focus()};"' 
		+ 'id="selector" size="5">'
			for (i = 0; i < indices.length; i++) {  
				match=true; 
				str+=('<option value="'+what[indices[i]].replace(/\'/gi,'’')+'">'+what[indices[i]].substring(iniLabel)+'</option>')
			}
		str+='</select>'
		if(match){
			hld.innerHTML=str
			hld.style.display='block'
			var sel=document.getElementById('selector')
			k=event.keyCode  ? event.keyCode  :
          	  event.charCode ? event.charCode :
          	  event.which    ? event.which    : void 0;
			if(k=='40'){
				sel.focus()	
			}
			if (k==9){
				document.getElementById('listHolder').style.display='none'}
			if (k==19){
				document.getElementById('listHolder').style.display='none'
			}
			if(k=='13'){
				document.getElementById('listHolder').style.display='none'
			}
		}
	}
}
// mostra as opçoes para select
function setOption(obj,val,id1Value,iniid1Value,fimid1Value,id2Value,iniid2Value,fimid2Value,id3Value,iniid3Value,fimid3Value){
	var obj=document.getElementById(obj);
// id1Value e id2Value, quando informados, devem receber os valores de acordo com a posição dentro do string de value para o select
// se não informado nenhum id com posicao, irá mover o conteúdo de value para o campo de digitação
	valId1 = document.getElementById(id1Value);
	valId2 = document.getElementById(id2Value);
	valId3 = document.getElementById(id3Value);
	if ((valId1) || (valId2) || (valId3)){
		valIniId1 = eval(iniid1Value);
		valFimId1 = eval(fimid1Value);
		if (valId1){
			if (valFimId1){
				document.getElementById(id1Value).value = val.substring(iniid1Value,fimid1Value);
			}else{
				document.getElementById(id1Value).value = val.substring(iniid1Value);
			}
		};
		valIniId2 = eval(iniid2Value);
		valFimId2 = eval(fimid2Value);
		if (valId2){
			if (valFimId2){
				document.getElementById(id2Value).value = val.substring(iniid2Value,fimid2Value);
			}else{
				document.getElementById(id2Value).value = val.substring(iniid2Value);
			}
		};
		valIniId3 = eval(iniid3Value);
		valFimId3 = eval(fimid3Value);
		if (valId3){
			if (valFimId3){
				document.getElementById(id3Value).value = val.substring(iniid3Value,fimid3Value);
			}else{
				document.getElementById(id3Value).value = val.substring(iniid3Value);
			}
		};
	}else{
		obj.value = val;
	};
	obj.focus()
	document.getElementById('listHolder').style.display='none'
}
function findPosX(obj){
	var curleft=0;
	if(obj.offsetParent){
		while(obj.offsetParent){
		curleft+=obj.offsetLeft
		obj=obj.offsetParent;
	}
}else if(obj.x)
		curleft+=obj.x;
		return curleft;
}
function findPosY(obj){
	var curtop=0;
	if(obj.offsetParent){
		while(obj.offsetParent){
		curtop+=obj.offsetTop
		obj=obj.offsetParent;
	}
}else if(obj.y)
		curtop+=obj.y;
		return curtop;
}
//-->
