/* **** CODI HTML EXEMPLE

<form name="frm1" action="javascript:SLNMS_selecpob()">
<div style="position:relative;" name="capamare" >
<input type="text" name="cx_noms" onKeyUp="javascript:SLNMS_ant_a=0;SLNMS_fillform(event,0);" size="50">
<input type="hidden" name="hd_tipus_nom" value="">
<input type="hidden" name="hd_idioma_noms" value="1">
<div id="capa1" style="position:absolute;width:150;height:100;top:20;left:0;background-color:transparent;visibility:hidden">
<select name="sl_noms" style="width:500px" multiple size="15" onChange="javascript:SLNMS_selecpob();" onclick="javascript:SLNMS_selecpob();">
</select>
</div>
</div>
</form>

// *** (La crida a aquest script va sota el formulari)
<script language="JavaScript" src="/generalcoms/js/selector_noms.js"></script>

**** FI CODI HTML EXEMPLE */



// *** CONFIGURACIÓ
var SLNMS_obj_selector = document.chooseDateForm.sl_noms;
var SLNMS_obj_caixatxt = document.chooseDateForm.cx_noms;
var SLNMS_obj_tipus_nom = document.chooseDateForm.hd_tipus_nom;
var SLNMS_obj_idioma = document.chooseDateForm.hd_idioma_noms;
var SLNMS_capa_contenedora = "capa1";
var SLNMS_urlNomsCercador = "/servlet/generalcoms.getNomsCercador?idioma=" + SLNMS_obj_idioma.value + "&inicials=";

// *** FI CONFIGURACIÓ


var SLNMS_noms = new Array();
var SLNMS_indiceseleccion = -1;
var SLNMS_pulsoMovimiento = false;
var SLNMS_ant_a=0;
var SLNMS_ult_tec_hot = 0;

function SLNMS_OmpleDesplegable(desplegable)
{
	var nom_sense_codi_regio = "";
    var total_items_actual=SLNMS_noms.length;
	for (var i=0;i<total_items_actual;i++)
	{
        if (SLNMS_noms[i].lastIndexOf(" !")>-1) nom_sense_codi_regio = SLNMS_noms[i].substring(0,SLNMS_noms[i].lastIndexOf(" !")) + "]";
        else nom_sense_codi_regio = SLNMS_noms[i];
		desplegable.options[i]=new Option( nom_sense_codi_regio, SLNMS_noms[i], false);
        if (SLNMS_noms[i].indexOf("hotel")>-1) desplegable.options[i].className='opthot';
        else if (SLNMS_noms[i].indexOf("region")>-1) desplegable.options[i].className='optreg';
        else if ((SLNMS_noms[i].indexOf("poblacion")>-1) || (SLNMS_noms[i].indexOf("city")>-1)) desplegable.options[i].className='optpob';
	}
}

function SLNMS_BorraDesplegable(desplegable)
{
	var total_items_actual=desplegable.options.length;
	for (var i=0;i<total_items_actual;i++)
	{
		desplegable.options[i]=null;
	}
	desplegable.options.length=0;

}

function SLNMS_fillform(e,a)
{
  switch (e.keyCode)
  {
    case 13: {
				SLNMS_selecpob();
			 }
		     break;
    case 33: {
				if (SLNMS_obj_selector.selectedIndex>0) SLNMS_obj_selector.selectedIndex=SLNMS_obj_selector.selectedIndex-9;
			 }
		     break;
    case 38: {
				if (SLNMS_obj_selector.selectedIndex>0) SLNMS_obj_selector.selectedIndex--;
			 }
		     break;
    case 34: {
				if (SLNMS_obj_selector.selectedIndex<(SLNMS_noms.length-1)) SLNMS_obj_selector.selectedIndex+=9;
			 }
		     break;
    case 40: {
				if (SLNMS_obj_selector.selectedIndex<(SLNMS_noms.length-1)) SLNMS_obj_selector.selectedIndex++;
			 }
		     break;
    default: {
            var sortir = false;
            var i=0;
            nom_sense_codi_regio = "";

            var cadena = SLNMS_obj_caixatxt.value;
            cadena = cadena.toUpperCase();
            SLNMS_obj_caixatxt.value= cadena;

            SLNMS_BorraDesplegable(SLNMS_obj_selector);

            if ((cadena.length==3) && (SLNMS_noms.length==0))
            {
                SLNMS_obj_caixatxt.readonly=true;
                SLNMS_obj_caixatxt.style.cursor="wait";
                document.body.style.cursor="wait";
                SLNMS_paginas(SLNMS_urlNomsCercador + cadena ,"");
            }
			else if (cadena.length>2)
            {
                        while (a<SLNMS_noms.length && !sortir)
                        {
                                   if ( SLNMS_Semblant(SLNMS_noms[a],cadena)>-1 )
                                   {
                                               if (SLNMS_noms[a].lastIndexOf(" !")>-1) nom_sense_codi_regio = SLNMS_noms[a].substring(0,SLNMS_noms[a].lastIndexOf(" !")) + "]";
                                               else nom_sense_codi_regio = SLNMS_noms[a];
                                               SLNMS_obj_selector.options[i]= new Option( nom_sense_codi_regio, SLNMS_noms[a] , false);
                                               if (SLNMS_noms[a].indexOf("hotel")>-1) SLNMS_obj_selector.options[i].className='opthot';
                                               else if (SLNMS_noms[a].indexOf("region")>-1) SLNMS_obj_selector.options[i].className='optreg';
                                               else if ((SLNMS_noms[a].indexOf("poblacion")>-1) || (SLNMS_noms[a].indexOf("city")>-1)) SLNMS_obj_selector.options[i].className='optpob';
                                               i++;
                                   }
                                   a++;
                        }
            }


            if (SLNMS_obj_selector.selectedIndex==-1 && SLNMS_pulsoMovimiento==false)
			{
                       SLNMS_obj_selector.selectedIndex=0; //seleccionamos el combo
                       SLNMS_indiceseleccion = 0;
            }
            if (SLNMS_indiceseleccion!=-1)
			{
                        SLNMS_obj_selector.selectedIndex=SLNMS_indiceseleccion;
            }


            if (SLNMS_obj_selector.options.length==0) SLNMS_ocultar(SLNMS_capa_contenedora);
			else SLNMS_mostrar(SLNMS_capa_contenedora);

			if (cadena.length==2) { SLNMS_noms=null; SLNMS_noms = new Array; }
	  }
	}

	try { SLNMS_obj_caixatxt.focus(); } catch(err) {}

//setTimeout(function(){if(checkEl)checkEl.focus();checkEl.select();},100);
}

function SLNMS_Semblant(cad1,cad2)
{
	myString = new String(cad1);
	results = myString.search(cad2);
	return results;
}

function SLNMS_selecpob()
{
    var valor_sel = SLNMS_obj_selector.options[SLNMS_obj_selector.selectedIndex].value;

    // Esbrinem codi de regio si en té
    var codi_regio = "";
    if (valor_sel.lastIndexOf(" !")>-1)
    {
        var inicodiregio = valor_sel.lastIndexOf(" !");
        var ficodiregio = valor_sel.indexOf("]",inicodiregio);
        codi_regio = "#" + valor_sel.substring(inicodiregio+2,ficodiregio);
    }

    if (valor_sel.indexOf("hotel")>-1) SLNMS_obj_tipus_nom.value="H";
    else if (valor_sel.indexOf("region")>-1) SLNMS_obj_tipus_nom.value="R" + codi_regio;
    else if ((valor_sel.indexOf("poblacion")>-1) || (valor_sel.indexOf("city")>-1)) SLNMS_obj_tipus_nom.value="P" + codi_regio;
    SLNMS_obj_caixatxt.value=valor_sel.substring(0,valor_sel.indexOf(" ["));
    SLNMS_ocultar(SLNMS_capa_contenedora);
}
function SLNMS_mostrar(nombreCapa)
{
	document.getElementById(nombreCapa).style.visibility="visible";
}
function SLNMS_ocultar(nombreCapa)
{
	document.getElementById(nombreCapa).style.visibility="hidden";
}
function SLNMS_cargarpagina (pagina_requerida, id_contenedor)
{
	if (pagina_requerida.readyState == 4 && (pagina_requerida.status == 200 || window.location.href.indexOf ("http") == - 1))
	{
		eval("SLNMS_noms = " + pagina_requerida.responseText);
		// Eliminem el primer element que sempre es vuit
		SLNMS_noms.shift();
		SLNMS_OmpleDesplegable(SLNMS_obj_selector);
		SLNMS_mostrar(SLNMS_capa_contenedora);
        SLNMS_obj_caixatxt.readonly=false;
        SLNMS_obj_caixatxt.style.cursor="default";
        document.body.style.cursor="default";
        SLNMS_obj_caixatxt.focus();
	}
}
function SLNMS_paginas (url, id_contenedor)
{
	var pagina_requerida = false;
	if (window.XMLHttpRequest)
	{
		// Si es Mozilla, Safari etc
		pagina_requerida = new XMLHttpRequest ();
	}
	else if (window.ActiveXObject)
	{
		// pero si es IE
		try
		{
			pagina_requerida = new ActiveXObject ("Msxml2.XMLHTTP");
		}
		catch (e)
		{
		// en caso que sea una versión antigua
			try
			{
				pagina_requerida = new ActiveXObject ("Microsoft.XMLHTTP");
			}
			catch (e)
			{
			}
		}
	}
	else
	return false;

	pagina_requerida.onreadystatechange = function ()
	{
		SLNMS_cargarpagina (pagina_requerida, id_contenedor);
	}

	pagina_requerida.open ('GET', url, true);
	pagina_requerida.send (null);
}
