// Autor Eva Serralvo evaser@wotrant.com
// Javascript para desplegables geograficos para utilizacion en interfaz
// Asume:
//  Se muestran 2 desplegables: pais y provincia, no existe region
//  Se ha seleccionado las opciones elegidas en ambos desplegables antes de llamar a estos metodos,
//  en la actualidad lo realiza WtransForm en el metodo getComboList()

/* Ejemplo de uso:
1.- En la cabecera de la jsp <head> se ha de cargar este fichero y definir una funcion que
    permita detectar la carga de la pagina y cuando se ha hecho atras
    Si en el formulario donde aparecen los desplegables se define un campo hidden denominado "s"
    <input type="hidden" name="s"> se puede hacer de la siguiente forma:

<script type="text/javascript" language="JavaScript" src="/js/geo2.js"></script>
<script language="JavaScript">
function geo(form){
 with (form){
  var combopais = <nombre_combo_pais>
  var comboprov = <nombre_combo_provincia>
  if(s.value==""){
    s.value="1";
    actualiza("pais",combopais,comboprov,"load");
  }else{
    actualiza("pais",combopais,comboprov,"back");
  }
 }
}
</script>

3.- Se ha de ejecutar este metodo al cargar la pagina
     <body onLoad="geo(document.form)">

3.- Este codigo ha de agregarse en la misma pagina o mejor en el top si existen frames

<script type="text/javascript" language="JavaScript">
<%
Vector vProv = ListasGeo.setListaProvJS(<identificador_idioma>);
//Retorna array de [[id_provincia, nombre],id_region,id_pais]
%>
var listaGeoProv = new Array();
listaGeoProv = <%=vProv%>
paisDefecto =  xx  [opcional]
</script>

4.- En los desplegables de paises añadir:
    onChange='actualiza("pais", this, <nombre_combo_prov>)'

5.- En los desplegables de provincias añadir:
    onChange='actualiza("prov", <nombre_combo_pais>, this)'
*/




var paisDefecto = 34 	// se mostraran sus provincias cuando se seleccione
			// TODOS u opcion nula en el desplegable de paises
                        // desde la jsp se puede modificar su valor


// Se utiliza en la funcion actualiza()
function cambia(lista, listaGeo, combo, opcion)
{
    if(lista=="provPais") indice_op = 2
    else indice_op =1

    var primeraOp
    if (combo.options[0].value==0) primeraOp=1
    else primeraOp=0

    //borra la lista anterior
    l=combo.length
    for(i=0; i < l; i++)
        combo.options[primeraOp]=null

    j=primeraOp
    for (i=0; i < listaGeo.length; i++){
         if (listaGeo[i][indice_op]==opcion)
             combo.options[j++]=new Option(""+listaGeo[i][0][1]+"",""+listaGeo[i][0][0]+"")
    }

    // Retorna el numero de regiones o provincias añadidas al desplegable
    return j--;

}

function actualiza() {

    var argv = actualiza.arguments;
    var argc = actualiza.arguments.length;

    var despl  = argv[0]    //indica que desplegable se ha actualizado ("pais"/"prov")
    var combo1 = argv[1]    //combo de paises
    var combo2 = argv[2]    //combo de provincias
    var tipo = "act"        // tipo
                            //  "act"  -> indica actualizacion de desplegable (default)
                            //  "load" -> indica carga de la pagina
                            //  "back" -> indica que se hace atras en el navegador
                            // al cargar y hacer atrás se actualizan todos los datos correctamente

    if (argc>3)
     tipo = argv[3]

    if (despl=="pais")
    {
        // recupera id de pais seleccionado
        ind=combo1.selectedIndex

        if (ind==0) paisSel=paisDefecto
        else paisSel=combo1.options[ind].value

       // Se llama al actualizar pais
        if(tipo=="act"){
           cambia("provPais", top.listaGeoProv, combo2, paisSel)
        }
        // Se llama al hacer atras
        // indProv tiene valor ok pero el valor de provincia no es correcto hasta que se actualiza
        // la lista pq la jsp carga las provincias de todos los paises
        else if(tipo=="back"){
           indProv=combo2.selectedIndex
           cambia("provPais", top.listaGeoProv, combo2, paisSel)
           combo2.options[indProv].selected = true
        }
        else{ // "load"
           //Se ejecuta la primera vez que se carga la página
           indProv=combo2.selectedIndex
           prov=combo2.options[indProv].value

           cambia("provPais", top.listaGeoProv, combo2, paisSel)
           if(indProv!=0){
             i=0;
             while(i < combo2.options.length && combo2.options[i].value!=prov) i++;
             combo2.options[i].selected = true
           }
      	}
    }
    else //Desplegable provincia
    {
        // recupera id de provincia seleccionada
        ind=combo2.selectedIndex
        provSel=combo2.options[ind].value
        if (ind!=0)
        {
           // selecciona pais de esta provincia
           i=0;
           while(top.listaGeoProv[i][0][0]!=provSel && i < top.listaGeoProv.length) i++
           var idPais = top.listaGeoProv[i][2]
           j=0
           while(j < combo1.options.length && combo1.options[j].value!=idPais) j++
           combo1.options[j].selected = true
        }
    }
}

