// constants
var noValue = "" ;

// default values
var IDPais			= noValue ;
var IDProvincia 	= noValue ;
var IDPoblacion 	= noValue ;
var IDNumPersonas 	= noValue ;
var baseCP 			= noValue ;
var tipo_zona       = noValue ;
                  
//selects disabled true/false
var boolEnabled 	= true ;

// globals
var curOption 		= new Array() ;
var isLoaded 		= new Array() ;

//formulario...
var frm = "" ;

//funcion para el onLoad
function initLinkedSelect(frm , tipo_zona_) {
    tipo_zona = tipo_zona_ ;
    /*
    frm.elements["zona_o_prov"].selectedIndex = 0 ;
    frm.elements["pid"].selectedIndex = 0 ;
    frm.elements["num_personas"].selectedIndex = 0 ;
    */
	frm.elements["zona_o_prov"].onchange = zona_o_prov_onChange ;
	frm.elements["pid"].onchange = pid_onChange ;
    frm.elements["con_foto"].onclick = con_foto_onClick ;
}

function con_foto_onClick() {

    preselect(this.form.elements['id_pais_busqueda'].value,this.form.elements['zona_o_prov'].value, this.form.elements['pid'].value, this.form.elements['num_personas'].value, 1) ;
}

//preseleccion de lo seleccionado en el onLoad
function preselect(idPais, idProvincia, idPoblacion, idNumPersonas, selectable)
{
	frm = "document.forms['frm_search']" ;

    boolEnabled 	= selectable ;
    IDPais		 	= idPais ;
	IDProvincia 	= idProvincia ;
	IDPoblacion 	= idPoblacion ;
	IDNumPersonas 	= idNumPersonas ;
	// Inicializar los select
	initLists() ;
}

function initLists()
{

	// Vaciado de las listas
	emptyList('zona_o_prov') ;
	emptyList('pid') ;
	emptyList('num_personas') ;

	if (eval(frm+'.elements["con_foto"].checked') == true) con_foto = "1" ;
	else con_foto = "0" ;
	

	ls.getProvPobNumPersonas(IDPais, IDProvincia, IDPoblacion, con_foto, texto_todas_provincias, texto_zonas, texto_provincias, texto_todas_poblaciones, texto_personas, texto_persona, tipo_zona, cbFillProvPobNumPersonas) ;
}


function cbFillProvPobNumPersonas (result)
{
		window.status = '' ;
		fillList('zona_o_prov',  result['zonas']) ;
		fillList('pid',  result['pid']) ;
		fillList('num_personas', result['numpersonas']) ;
}


function cbFillPobNumPersonas (result)
{
	window.status = '' ;
	fillList('pid',  result['pid']) ;
	fillList('num_personas', result['numpersonas']) ;
}


function cbFillNumPersonas (result)
{
	// callback for dependent listbox
	window.status = '' ;
	fillList('num_personas',result) ;
}


/**
 * Parte de manejo para los BO
 **/

function preselectCP(idProvincia, idPoblacion, selectable, mycp, idCalle)
{
	boolEnabled 	= selectable ;
	IDProvincia 	= idProvincia ;
	IDPoblacion 	= idPoblacion ;
    IDCalle 		= idCalle ;
    baseCP 			= mycp ;
    // Verificamos si existe el campo CP (codigo postal) necesario en los forms BO/PrBO
    var cpelem 		= eval(frm+'.elements["cp"]') ;
    if (cpelem)
    	cpelem.onkeyup 	= cp_onChange ;
	// Inicializar los selects con su contenido de base
	initListsCP() ;
}

/**
 *	Inicialización de los selects
 **/
function initListsCP()
{
	// Vaciado de elementos de provincia y población
    emptyList('selProvincia') ;
	emptyList('selPoblacion') ;
	// Recuperamos las listas de provincias, poblaciones
	linked_select(baseCP,texto_selecciona,cbFillProvPobCP) ;
}


function emptyList(listName)
{


	myfrm = eval(frm) ;
	var lst = myfrm.elements[listName] ;

	lst.options.length 	= 0 ;
	lst.onchange 		= null ;
	lst.disabled 		= !boolEnabled ;
	isLoaded[listName] 	= false ;
	curOption[listName] = noValue ;

	//dejamos el leyendo...
	lst.options[0] = new Option(texto_loading, "") ;
}



function fillList(listName,contenido)
{

	emptyList( listName ) ;
	myfrm = eval(frm) ;
	var lst = myfrm.elements[listName] ;
	lst.disabled = true ;

	// Actualizamos la longitud de la lista
	lst.options.length = contenido.length ;

	// options in form "value~displaytext|value~displaytext|..."
	for (var i=0;i<contenido.length;i++) {
		if (contenido[i].indexOf('~') != -1) {
			var aOptions = contenido[i].split('~') ;
			opt = new Option(aOptions[1], aOptions[0]) ;

			lst.options[i] = opt ;
			if (parseInt(aOptions[0]) == -1) {
				lst.options[i].className = "seltit" ;
			} else {
				lst.options[i].className = "normal" ;
			}
    	}
	}


	switch(listName)
	{
		case 'zona_o_prov': 	    ID = IDProvincia ;
		break;
  		case 'pid':				    ID = IDPoblacion ;
		break;
		case 'num_personas':		ID = IDNumPersonas ;
		break;
	}

	// init to no value
	selectOption(listName, ID) ;
	isLoaded[listName] = true ;
	lst.disabled = !boolEnabled ;

	if (eval(listName + "_onChange"))
		lst.onchange = eval(listName + "_onChange") ;

}

function zona_o_prov_onChange()
{

	var val = this.options[this.selectedIndex].value ;

	myform = eval(frm) ;
	

	if (!val == "")
	{
		activaBandera(val) ;
		IDPais=myform.elements['id_pais_busqueda'].value;
	    IDProvincia = val ;
	    IDPoblacion = noValue ;
	    IDNumPersonas = noValue ;
		curOption[this.name] = val ;
		// init dependent lists

		emptyList('pid') ;
		emptyList('num_personas') ;
		window.status = texto_loading ;

		if (myform.elements["con_foto"].checked == true) con_foto = "1" ;
		else con_foto = "0" ;
		
		ls.getPobNumPersonas(IDPais,val,con_foto,texto_todas_poblaciones,texto_personas,texto_persona, tipo_zona, cbFillPobNumPersonas) ;
	}
}


function pid_onChange()
{
	var val = this.options[this.selectedIndex].value ;
	curOption[this.name] = val ;
	emptyList('num_personas') ;
	window.status = texto_loading ;

	myfrm = eval(frm) ;
	IDPais=myfrm.elements['id_pais_busqueda'].value;
	
	if (myfrm.elements["con_foto"].checked == true) con_foto = "1" ;
	else con_foto = "0" ;
	ls.getNumPersonas(IDPais,val,IDProvincia,con_foto,texto_personas,texto_persona,tipo_zona,cbFillNumPersonas) ;
}


function num_personas_onChange()
{
	var val = this.options[this.selectedIndex].value ;
	IDOptions = val ;
}

function selectOption( listName, optionVal ){

	myfrm = eval(frm) ;
	var lst = myfrm.elements[listName] ;
	for( var i = 0; i< lst.options.length; i++ )
	{
		if(lst.options[i].value == optionVal)
		{
			lst.selectedIndex = i ;
			curOption[listName] = optionVal ;
			return ;
		}
	}
}

function activaBandera(val) {}
