var timeoutDWR;var paramsBusqueda={idioma:null,idOperacion:null,idTipoOperacion:null,IPRC:null,obraNueva:null,segundaMano:null,vacacional:null,precioMin:null,precioMax:null,superficieMin:null,superficieMax:null,idProvincia:null,idComAutonoma:null,idTipoInmueble:null,idsGruposSubTiposInmueble:null,numBanos:null,numHabitaciones:null,disponeGaraje:null,disponeAscensor:null,disponeTerraza:null,disponeTrastero:null,disponePiscina:null,estado:null,situacion:null,masCriterios:null,todosIPRC:null,busquedaSemantica:null,porcentajeDescuento:null,rebajaPrecio:null,sinPosesion:null,soloNovedades:null,sinArrendamiento:null};
var comboPoblaciones="poblacion";var gruposSubtipos="grupoSubTipoInmueble";var subtipos="subTipoInmueble";var comboHabitaciones="numHabitaciones"; var comboBanyos="numBanos"; var checkSegundaMano="segundaMano"; var checkObraNueva="obraNueva";
var checkVacacional="vacacional";var comboProvincia="provincia";
var vivienda = 1;var local=2; var oficina=7;var parking=4; var trastero=8; var terreno=3; var varios=5;var nave=6;var hotel=9; var edificio=10;
function recuperaSubtiposGrupos(d){
	var c=new Array();
	//if($_("sub")!=null&&$_("sub").value=="si"){
		var a=0;
		var f=0;
		while(a<document.getElementsByName(d).length){
			var b=document.getElementsByName(d)[a];
			if(b!=null&&b.checked==true){
				var e={codigo:"",valor:""};
				e.valor=b.value;c[f]=e;
				f++;}a++;}
	//	}
	return c;
	}

function recuperaSubtiposGrupos2(d){
	var a=cargaSelect(gruposSubtipos);
	var c=new Array();
	if (a!=null){				
		var e={codigo:"",valor:""};
		e.valor=a;
		c[0]=e;				
	}
	return c;

}
function loadSubtipos(a){
	loadSubtiposGrupos(a,subtipos);}
function loadGruposSubtipos(a){
	loadSubtiposGrupos(a,gruposSubtipos);}
function aplicaEstiloCheck(){
	$("input:checkbox:not([safari])").checkbox();$("input[safari]:checkbox").checkbox({cls:"jquery-safari-checkbox"});
}function loadSubtiposGrupos(b,a){
	var c="capaSubtiposGrupos";
	if(a==subtipos){
		RemoteUtilsService.getSubtiposInmuebles(b,function(d){
			if(d.length>0){
				$_(c).innerHTML=htmlSubtiposGrupos(d,a);
			}else{
				$_(c).innerHTML="";
			}
			aplicaEstiloCheck();
			});
	}else{
		if(a==gruposSubtipos){

			dwr.util.removeAllOptions(gruposSubtipos);
			RemoteUtilsService.getGruposSubtiposInmuebles(b,function(d){				
				if(d.length>0){
					//alert($_(c).innerHTML);
					//$_(c).innerHTML=htmlSubtiposGrupos(d,a);


						var e=[];
						e.push({codigo:"-1",valor:t('search.any')});

						for(i in d){
						
							var a=d[i].codigo;
							var b=d[i].valor;
							e.push({codigo:a,valor:b});
						}
						dwr.util.addOptions(gruposSubtipos,e,"codigo","valor");
						$_(gruposSubtipos).disabled=false;
					}else{
						$_(gruposSubtipos).disabled=true;
						}					

				//aplicaEstiloCheck();
				}
			);
		}}
	}
function htmlSubtiposGrupos(d,a){
	var b="";
	var c=true;

	for(iIndice in d){
		if(c==true){
			b+='<input type="hidden" name="sub" id="sub" value="si" />';
			c=false;
		}

		b+=htmlSubtipoGrupo(d[iIndice],a);}return b;}
function htmlSubtipoGrupo(c,a){
	var b='<label class="tipo_inmueble" for="';
b+=limitedText(c.valor,15,1);b+='"><input checked name="'+a+'" id="'+a+'" type="checkbox" onclick="loadComboPoblaciones();" value="';b+=c.codigo;b+='">';b+=limitedText(c.valor,15,1);b+="</label>";return b;}
function cargaParamsBusqueda(){
	paramsBusqueda.idioma=$_("idioma").value;
	paramsBusqueda.idProvincia=$_("provincia").value;
	paramsBusqueda.poblacion=$_("poblacion").value;
	paramsBusqueda.idTipoInmueble=$_("tipoInmueble").value;
	paramsBusqueda.idTipoOperacion=$_("idTipoOperacion").value;
	paramsBusqueda.idComAutonoma=idComAutonoma;
	//paramsBusqueda.IPRC=cargaCheck("iprc");
	paramsBusqueda.obraNueva=cargaCheck("obraNueva");
	paramsBusqueda.segundaMano=cargaCheck("segundaMano");
	paramsBusqueda.vacacional=cargaCheck("vacacional");

	paramsBusqueda.idsGruposSubTiposInmueble=recuperaSubtiposGrupos2(gruposSubtipos);
	paramsBusqueda.precioMin=cargaMinSelect("precioMin");
	paramsBusqueda.precioMax=cargaMaxSelect("precioMax");
	paramsBusqueda.superficieMin=cargaMinSelect("superficieMin");
	paramsBusqueda.superficieMax=cargaMaxSelect("superficieMax");
	paramsBusqueda.numHabitaciones=cargaSelect("numHabitaciones");
	paramsBusqueda.numBanos=cargaSelect("numBanos");
	paramsBusqueda.masCriterios=cargaInput("masCriterios");
	paramsBusqueda.sinPosesion=cargaCheck("no_visit");
	paramsBusqueda.sinArrendamiento=cargaCheck("sin_arrendamiento");
	paramsBusqueda.soloNovedades=cargaCheck("only_new_items");
	if(paramsBusqueda.masCriterios==true){
	
	paramsBusqueda.estado=cargaSelect("estado");
	paramsBusqueda.disponeGaraje=cargaCheck("garaje");
	paramsBusqueda.disponeAscensor=cargaCheck("ascensor");
	paramsBusqueda.disponeTerraza=cargaCheck("terraza");
	paramsBusqueda.disponeTrastero=cargaCheck("trastero");
	paramsBusqueda.disponePiscina=cargaCheck("piscina");
	}
if($_("porcentajeDescuento")!=undefined&&$_("porcentajeDescuento").value=="true"){paramsBusqueda.porcentajeDescuento=true;}if($_("rebajaPrecio")!=undefined&&$_("rebajaPrecio").value=="true"){paramsBusqueda.rebajaPrecio=true;


}}function cargaCheck(a){	

	//return null;
	if($_(a).checked!=true){return null;}else{return true;}}
function cargaInput(a){
	//return null;
	
	return($_(a).value=="true"?true:null);}
function cargaMinSelect(a){
	//return null;
	return($_(a).selectedIndex==0?null:$_(a).value);}
function cargaMaxSelect(a){
	return(		
		$_(a).selectedIndex==$_(a).length-1?null:$_(a).value);}
function cargaSelect(a){
	return($_(a).value==-1?null:$_(a).value);}

/* 
 * Comprueba que todos los parámetros obligatorios para obtener la población están 
 * informados y si es así invoca la carga con un timeout de 500 ms.
 */
function loadComboPoblaciones(){
	if(timeoutDWR!=null){
		clearTimeout(timeoutDWR);
	}

	if(($_("tipoInmueble") != null && $_("tipoInmueble").value == "")
			|| ($_("sub") != null && $_("sub").value == "si" 
				&& recuperaSubtiposGrupos(gruposSubtipos).length==0)) {
		dwr.util.removeAllOptions(comboPoblaciones);
		$_(comboPoblaciones).disabled=true;
	} else {
		timeoutDWR=setTimeout("loadComboPoblaciones2();",500);
	}
}

function loadComboPoblaciones1(id){
	if(timeoutDWR!=null){
		clearTimeout(timeoutDWR);
	}
	
var inm = "tipoInmueble??";
				
	if(($_("tipoInmueble" + id) != null && $_("tipoInmueble"+id).value == "")
			||($_("sub") != null && $_("sub").value == "si")) {
		dwr.util.removeAllOptions(comboPoblaciones);
		$_(comboPoblaciones).disabled=true;
	} else {
		timeoutDWR=setTimeout("loadComboPoblaciones3("+id+");",500);		
	}
}

/*
 * Invoca la función DWR para obtener el contador de cada población y recoge
 * el resultado en el desplegable de poblaciones.
 */
function loadComboPoblaciones2(){
	cargaParamsBusqueda();
	
	dwr.util.removeAllOptions(comboPoblaciones);	
	RemoteUtilsService.getPoblacionesContador(paramsBusqueda, populatePoblaciones);
}

/*
 * Informa el desplegable de poblaciones con el contenido de la lista informada.
 * Como ID de cada option se informa el id de la población concatenado con el del barrio,
 * y como valor se informa la descripción de la población con el número de inmuebles
 * disponibles.
 */
function populatePoblaciones(lPoblaciones) {
	if(lPoblaciones.length>0){
		var mapOptions = [];
		var contiene = "No";
		mapOptions.push({
			codigo:"-1",
			valor:t('search.any')
		});
		for(i in lPoblaciones) {
			var optId = trim(lPoblaciones[i].idPoblacion + "," + lPoblaciones[i].idBarrio);
			var optVal = trim(lPoblaciones[i].descripcion + " (" + lPoblaciones[i].contador + ")");
			if (optId == trim(paramsBusqueda.poblacion)) {
				contiene = "Si";
			}
			mapOptions.push({codigo:optId,valor:optVal});
		}
		dwr.util.addOptions(comboPoblaciones, mapOptions, "codigo", "valor");
		$_(comboPoblaciones).disabled = false;
		if (contiene == "Si"){
			$_(comboPoblaciones).value = paramsBusqueda.poblacion;
		}
	}else{
		$_(comboPoblaciones).disabled=true;
	}
}

function loadComboProvincias1(id){

	if(timeoutDWR!=null){
		clearTimeout(timeoutDWR);
	}
	
	if(($_("tipoInmueble"+id)!=null&&$_("tipoInmueble"+id).value=="")||($_("sub")!=null&&$_("sub").value=="si")||
			(($("#segundaMano").is(':checked')==false)&&($("#obraNueva").is(':checked')==false))){

		dwr.util.removeAllOptions(comboPoblaciones);
		$_(comboPoblaciones).disabled=true;
		
		dwr.util.removeAllOptions(comboProvincia+id);
		$_(comboProvincia+id).disabled=true;

	}else{
	
		timeoutDWR=setTimeout("loadComboProvincias2("+id+");",500);

	}}

function aplicaMasCriterios(){
	if ($_("masCriterios").value=="true"){
		$_("masCriterios").value="false";
	}else{
		$_("masCriterios").value="true"
	}
	//$_("masCriterios").value=a;
	//loadComboPoblaciones();	
}
function cargaParamsBusqueda2(id){
	paramsBusqueda.idProvincia=$_("provincia"+id).value;
	paramsBusqueda.idTipoInmueble=$_("tipoInmueble").value;
	paramsBusqueda.idTipoOperacion=$_("idTipoOperacion").value;
	paramsBusqueda.idioma=$_("idioma").value;

	paramsBusqueda.poblacion=$_("poblacion").value;
	
	//paramsBusqueda.IPRC=cargaCheck("iprc");
	paramsBusqueda.obraNueva=cargaCheck("obraNueva");
	paramsBusqueda.segundaMano=cargaCheck("segundaMano");
	paramsBusqueda.vacacional=cargaCheck("vacacional");
}

function trim (myString){
	return myString.replace(/^\s+/g,'').replace(/\s+$/g,'');
}
function loadComboProvincias2(id){
	
	cargaParamsBusqueda2(id);

	dwr.util.removeAllOptions("provincia"+id);

	RemoteUtilsService.getProvinciasContador(paramsBusqueda,function(c){
			if(c.length>0){
				var d=[];
				var contiene="NO";
				d.push({codigo:"",valor:t('search.any')});
				var separador = '';
				for(i in c){
					var a=trim(c[i].codigo);
					var b=c[i].valor;		
					var codigo = c[i].codigo;
					if(a==trim(paramsBusqueda.idProvincia)){
						contiene="SI";
					}
					if(a!='08' && a!='28' && a!='41' && a!='46' && separador==''){
						separador='1';
						if (i>0){
							d.push({codigo:'',valor:'---------------------'});
						}
					}
						
					d.push({codigo:a,valor:b});
	
				}

				dwr.util.addOptions("provincia"+id,d,"codigo","valor");
				//var prov="#provincia"+id;
				 //$_('#buscador'+id+' form').find('select[name=provincia]').disabled=true;
				$("#provincia"+id).attr("disabled",false);
				
				if(contiene=="SI" && paramsBusqueda.idProvincia!=""){
					$_(comboProvincia+id).value= paramsBusqueda.idProvincia;
					loadComboPoblaciones1(id);
				}else {
					$_(comboProvincia+id).value="";
					$_(comboPoblaciones).value=-1;
				}
			}else{
				//var prov="#provincia"+id;
				$("#provincia"+id).attr("disabled",false);
				}
			});
	}


function loadComboPoblaciones3(id){

	cargaParamsBusqueda2(id);

	dwr.util.removeAllOptions(comboPoblaciones);

	RemoteUtilsService.getPoblacionesContador(paramsBusqueda,function(c){
			if(c.length>0){
				var d=[];
				var contenida = "NO";
				d.push({codigo:"-1",valor:t('search.any')});
				for(i in c){
					var a=c[i].idPoblacion+","+c[i].idBarrio;
					var b=c[i].descripcion+" ("+c[i].contador+")";
					d.push({codigo:a,valor:b});
					
					if(a==paramsBusqueda.poblacion){
						contenida="SI";
					}
				}dwr.util.addOptions(comboPoblaciones,d,"codigo","valor");$_(comboPoblaciones).disabled=false;
				
				if(contenida=="SI"){
						$_(comboPoblaciones).value=paramsBusqueda.poblacion;
				}
				
			}else{$_(comboPoblaciones).disabled=true;}});
	}
function habilitaCampos(){
	var a = $('#tipoInmueble').val();
	if (a!=vivienda){
		$_(comboHabitaciones).disabled=true;
		$_(comboBanyos).disabled=true;
	}else{
		$_(comboHabitaciones).disabled=false;
		$_(comboBanyos).disabled=false;
	}
	if (a!=vivienda && a!=local && a!=oficina && a!=nave && a!=parking && a!=trastero && a!=hotel && a!=edificio ){
		$_(checkObraNueva).disabled=true;
		$_(checkSegundaMano).disabled=true;	
	}else{
		$_(checkObraNueva).disabled=false;
		$_(checkSegundaMano).disabled=false;
	}
	
	if (a!=vivienda && a!=parking && a!=trastero  ){
		$_(checkVacacional).checked=false;
		$_(checkVacacional).disabled=true;
	
	}else{
		//$_(checkVacacional).checked=false;
		$_(checkVacacional).disabled=false;
	}
	
	if(a==vivienda){
		//$_("garaje").checked=false;
		$_("garaje").disabled=false;
		
		//$_("ascensor").checked=false;
		$_("ascensor").disabled=false;
		
		//$_("terraza").checked=false;
		$_("terraza").disabled=false;
		
		//$_("trastero").checked=false;
		$_("trastero").disabled=false;
		
		//$_("piscina").checked=false;
		$_("piscina").disabled=false;
		
		//$_("no_visit").checked=false;
		$_("no_visit").disabled=false;
	}
	
	if(a==oficina){
		//$_("garaje").checked=false;
		$_("garaje").disabled=false;
		
		//$_("ascensor").checked=false;
		$_("ascensor").disabled=false;
		
		//$_("terraza").checked=false;
		$_("terraza").disabled=false;
		
		$_("trastero").checked=false;
		$_("trastero").disabled=true;
		
		$_("piscina").checked=false;
		$_("piscina").disabled=true;
		
		$_("no_visit").checked=false;
		$_("no_visit").disabled=true;
	}
	if(a==parking){
		$_("garaje").checked=false;
		$_("garaje").disabled=true;
		
		$_("ascensor").checked=false;
		$_("ascensor").disabled=true;
		
		$_("terraza").checked=false;
		$_("terraza").disabled=true;
		
		//$_("trastero").checked=false;
		$_("trastero").disabled=false;
		
		//$_("piscina").checked=false;
		$_("piscina").disabled=false;
		
		//$_("no_visit").checked=false;
		$_("no_visit").disabled=false;		

	}
	
	if(a==local){
		//$_("garaje").checked=false;
		$_("garaje").disabled=false;
		
		//$_("ascensor").checked=false;
		$_("ascensor").disabled=false;
		
		$_("terraza").checked=false;
		$_("terraza").disabled=true;
		
		$_("trastero").checked=false;
		$_("trastero").disabled=true;
		
		$_("piscina").checked=false;
		$_("piscina").disabled=true;
		
		$_("no_visit").checked=false;
		$_("no_visit").disabled=true;		

	}	
	if(a==trastero || a==nave ||a==terreno || a==varios){
		$_("garaje").checked=false;
		$_("garaje").disabled=true;
		
		$_("ascensor").checked=false;
		$_("ascensor").disabled=true;
		
		$_("terraza").checked=false;
		$_("terraza").disabled=true;
		
		$_("trastero").checked=false;
		$_("trastero").disabled=true;
		
		$_("piscina").checked=false;
		$_("piscina").disabled=true;
		
		$_("no_visit").checked=false;
		$_("no_visit").disabled=true;		

	}
	
	if(a==hotel || a==edificio ){
		//$_("garaje").checked=false;
		$_("garaje").disabled=false;
		
		//$_("ascensor").checked=false;
		$_("ascensor").disabled=false;
		
		//$_("terraza").checked=false;
		$_("terraza").disabled=false;
		
		$_("trastero").checked=false;
		$_("trastero").disabled=true;
		
		//$_("piscina").checked=false;
		$_("piscina").disabled=false;
		
		$_("no_visit").checked=false;
		$_("no_visit").disabled=true;		

	}	
}
function loadComboPrecios(combo,precioMin, precioMax,precioSel){
	dwr.util.removeAllOptions(combo);
	var d=[];
	d.push({codigo:"",valor:t('search.any')});
	var importe = 0; 
	if( precioMax > 3000000.0 ){
		precioMax = 3000000.0;
	}
	
	if (precioMin!=null){
	if (precioMin<400000 ){
		importe=60000;
		while(importe <=400000 && importe<=precioMax){
			var a=importe;
			d.push({codigo:a,valor:a});
			importe+=20000; 
		}
		if(importe>precioMax){
			d.push({codigo:importe,valor:importe});
		}
	}
	if (precioMin<800000 && importe<=precioMax){

		if(importe==0)
			importe=400000;
		else
			importe=450000;
		while(importe <=800000 && importe<=precioMax){	
			d.push({codigo:importe,valor:importe});
			importe+=50000; 
		}
		
		if(importe>precioMax){
			d.push({codigo:importe,valor:importe});			
		}
	}
	if (precioMin<1000000 && importe<=precioMax){
		if (importe==0)
			importe=800000;
		else
			importe=900000;
		while(importe <1000000 && importe<=precioMax){
	
			d.push({codigo:importe,valor:importe});
			importe+=100000; 
		}
	//if (filtros.getPrecioMin()>=1000000){
		//importe+=100000;
		var i=1;
		while(importe<precioMax){
			d.push({codigo:importe,valor:i+" millon"});
			importe+=1000000;
			i++;
		}
		d.push({codigo:importe,valor:i+" millon"});
	
	}}
			
			dwr.util.addOptions(combo,d,"codigo","valor");

			$_(combo).disabled=false;
			
//			alert($("#"+combo).val());
			if (precioSel!=null){
            $("#"+combo+" option").each(function () {
    //        	alert($(this).text() + " " + $(this).val());
                if($(this).val()==precioSel){
                	$(this).attr("selected"," selected ");
                }
              });
			}
            //alert($_(combo).val());

	}

 function loadComboSuperficie(combo,superficieMin, superficieMax, superficieSel){

	 	dwr.util.removeAllOptions(combo);
		var d=[];
		d.push({codigo:"",valor:t('search.any')});	 
 
		var superficie = 0;
		if (superficieMin!=null){
		if (superficieMin<200 && superficie<=superficieMax){
			superficie=40;
			while(superficie <=200 && superficie<=superficieMax){			
				d.push({codigo:superficie,valor:superficie});
				superficie+=20; 
			}
			if(superficie>superficieMax){				
				d.push({codigo:superficie,valor:superficie});
			}
		} 
		if (superficieMin<=400 && superficieMax<=400 && superficieMax>200 ){
			

			d.push({codigo:400,valor:400});	
		}

		if (superficieMin<=600 && superficieMax<=600 && superficieMax>400 ){


			d.push({codigo:600,valor:600});	
		}
	}
				
		dwr.util.addOptions(combo,d,"codigo","valor");
		$_(combo).disabled=false;
		
		if (superficieSel!=null){
            $("#"+combo+" option").each(function () {
            	//alert($(this).text() + " " + $(this).val());
                if($(this).val()==superficieSel){
                	$(this).attr("selected"," selected ");
                }
              });
			}
    

 }
 
 var Locale = (function() {

	  var strings = {},

	  locale = 'en',

	  re = /#\{([a-z0-9_]+)\}/gi,

	  merge = function merge(a, b) {
	    var p;
	    for (p in b) {
	      if (b[p] && (typeof b[p] == 'object')) {
	        a[p] = a[p] || {};
	        merge(a[p], b[p]);
	      }
	      else {
	        a[p] = b[p];
	      }
	    }
	    return a;
	  },

	  addStrings = function(translations) {
	    merge(strings, translations);
	  },

	  translate = function(key, vars) {
	    var count = vars && vars.count,
	    tString = findString(key, count);
	    if (tString === null) return '!!' + locale + '.' + key + '!!';
	    return interpolate(tString, vars || {});
	  },

	  interpolate = function(template, data) {
	    var m, s = template, r = '', search, part, name, value, found;
	    while (s && (m = re.exec(s))) {
	      search = m[0];
	      name = m[1];
	      if (name in data) {
	        found = true;
	        value = data[name];
	      }
	      part = s.substring(0, re.lastIndex);
	      if (found) part = part.replace(search, value);
	      r += part;
	      s = s.substring(re.lastIndex);
	      re.lastIndex = 0;
	    }
	    r += s;
	    return r;

	  },

	  countToKey = function(count) {
	    return count == 1 ? 'one' : 'other';
	  },

	  findString = function(key, count) {
	    if (count !== undefined) {
	      return findPluralString(key, count);
	    }
	    var path = key.split('.'),
	    i,
	    endKey = path.pop(),
	    len = path.length,
	    tString = null,
	    cur = strings[locale];
	    for (i = 0; i < len; i += 1) {
	      if (path[i] in cur) {
	        cur = cur[path[i]];
	      }
	      else {
	        cur = null;
	        break;
	      }
	    }
	    if (cur && (endKey in cur)) {
	      tString = cur[endKey];
	    }
	    return tString;
	  },

	  findPluralString = function(key, count) {
	    if (count === 0) {
	      return findString(key + '.zero') || findString(key + '.other');
	    }
	    else if (count === 1) {
	      return findString(key + '.one');
	    }
	    return findString(key + '.other');
	  },

	  setLocale = function(code) {
	    locale = code;
	  };

	  /* make `t` a global function */
	  this.t = translate;

	  return {

	    setLocale : setLocale,
	    translate : translate,
	    addStrings : addStrings

	  };

	}());

	function changeBuscadorAction(idOperacion) {
		cargaParamsBusqueda2(idOperacion);
		var poblacion = $("#poblacion").val();
		RemoteUtilsService.getBuscadorActionName(paramsBusqueda,poblacion,function(str) { 
			var form = $("#buscador"+idOperacion);
			changeFormAction(form,str,"action"+idOperacion);
			form.submit();
		}); 
	}
	
	function changeBuscadorByRefAction(ref, idioma) {
		RemoteUtilsService.getBuscadorByRefActionName(ref, idioma, function(str) { 
			var form = $("#buscador_d");
			changeFormAction(form,str,"actionByRef");
			form.submit();
		}); 
	}
	
	function changeFormAction(form, url, actionId) {
		//Patch para IE
		document.getElementById(actionId).name = "";
		form.attr("action",url);
		document.getElementById(actionId).name = "action";
	}

