/***************************************/
/* Desarrollado por: Martin Hoenigfeld */
/* Fecha: 06/12/04                     */
/* Ultima Modif.: Martin Hoenigfeld    */
/* Fecha: 09/12/04                     */
/***************************************/
/* las siguientes funciones son para buscar cadenas de carateres en combos */
/* y seleccionarlas.                                                       */
/* Para implemetarlas se debe agregar las funciones en eventos del combo   */
/* CodTecla: en el evento onkeydown   */
/*		onkeydown="CodTecla(this);"     */
/* SChainCombo: en el evento onkeyup  */
/*		onkeyup="if (SChainCombo(this) == 'Ejecutar'){aca va la función que se tendria que ejecutar};"    */
/* LostFocus: en el evento onblur      */
/*		onblur="LostFocus();"           */
/* inicializacion de variables para funciones CodTecla, SChainCombo y LostFocus */
var chain = "";
var anterior = 0;
var tecla =0;

/* funcion: retorna false para cualquier tecla presionada en el objeto, menos cursores arriba y abajo*/
/* Hay que pasarle el combo u objeto como parametro */
function CodTecla(s)
{
	tecla = eval(event.keyCode);
	if ((tecla == 38) || (tecla == 40))
		{
		event.returnValue=true;}
	else
		{event.returnValue=false;}
}

/* funcion: arma la cadena a partir de las teclas presionadas y la busca en el combo que se le pasa por parametro */
/* Hay que pasarle el combo u objeto como parametro (s) y */
/* el codigo que se ejecuta al presionar la tecla return en Ejec (como un string) */
function SChainCombo(s,Ejec)
{
var pos=-1;
if (tecla==27)
	{
		chain="";
		anterior = 0;
		s.selectedIndex = 0;
	}
if ((tecla >= 32 && tecla <= 127 && tecla !=40 && tecla != 38) || (tecla==8) || (tecla==188))
 {
		s.selectedIndex = 0;
		if (tecla!=8)
			{
				if (tecla == 188)
					{chain = chain  + ",";}
				else
					{chain = chain  +   String.fromCharCode(tecla);}
			}
		else
			{chain = chain.substring(0,chain.length-1)}
		for_i :
		for (var i = 0; i < s.options.length; i++)
		 { 
	        if (s.options[i].text.toLowerCase().substring(0,chain.length) == chain.toLowerCase())
	        	{pos=i;break for_i;}
		  }
		  if (pos > -1)
		  	{	
		  		s.selectedIndex = pos;
		  		anterior = pos;
		  	}
		  else
		    {
		   	 	s.selectedIndex = anterior;
		    	if (chain.length==1)
		    		{
		    			chain="";anterior=0;
		    		}
		    	else
		    		{
		    		chain = chain.substring(0,chain.length-1)
		    		}
		    		
		    	}
  }
  if (tecla == 13)
  	{
			if (Ejec != '')
				{eval(Ejec);}
  	}
}

/* funcion: borra la cadena cuando el combo pierde el foco */
function LostFocus()
{chain="";}