jQuery.SearchControls = function(options) {   
    var pZonaIdsTemp=Array();
    $(".prevdea,.prevdeaText").click(function() { if (semLoading){goToPrevPage(); } });
    $(".nextdea,.nextdeaText").click(function() { if (semLoading){goToNextPage(); } });        
    jQuery.SearchControls.SearchResultPageClick = function(page) {
        if (semLoading) {currentPage = page;loadResults();}
    }
    $("#aplyZones").click(function(){
        currentPage=1;
        pZonaIds=Array();
        for(i = 0; i < pZonaIdsTemp.length; i++){pZonaIds[i]=pZonaIdsTemp[i];}   
        updateAreas();     
        loadResults();
        $("#zonesDesplMoreCtrl").slideUp("fast", function() {openwZones=false;});
    });    
    jQuery.SearchControls.selectAllZones= function() {selectAllZones();}        
    $("#allZones").click(function(){
        selectAllZones();
        loadResults();
    });         
    function selectAllZones(){
        $("#zonesDesplMore input").attr('checked', false);
        pZonaIds=Array();
        updateAreas();             
        $("#zonesDesplMoreCtrl").slideUp("fast", function() {openwZones=false;});
    }
    
	$(".zonesDespl").click(function() { 		    
	    if(!openwZones){
	        pZonaIdsTemp=Array();
	        for(i = 0; i < pZonaIds.length; i++){pZonaIdsTemp[i]=pZonaIds[i];}	        
		    $("#zonesDesplMoreCtrl").slideDown("fast", function() {openwZones=true;});
		}else{		    
		    $("#zonesDesplMore input").attr('checked', false);			    
            for (i = 0; i < pZonaIds.length; i++){$("#zonesDesplMore input[value="+pZonaIds[i]+"]").attr('checked', true);}            
		    $("#zonesDesplMoreCtrl").slideUp("fast", function() {openwZones=false;});
		}
	});
    $("#f_order-search-by").change(function() {
        pOrderBy = $("#f_order-search-by").val();
        orderApartments(pOrderBy);
        currentPage = 1;
        loadResults();        
    });    
    jQuery.SearchControls.onSearchZoneClick= function(item) {    
        var idZoneTemp=item.value;        
        if (item.checked){
            pZonaIdsTemp.push(idZoneTemp);
        }else{            
            for (i = 0; i < pZonaIdsTemp.length; i++) {if (pZonaIdsTemp[i]== idZoneTemp){pZonaIdsTemp.splice(i, 1); break;}}
        }        
    }
    
    function goToPrevPage() {
        if (currentPage > 1) {currentPage -= 1;this.loadResults();}
    }
    function goToNextPage() {
        if (currentPage < totalPages) {currentPage += 1;loadResults();}
    }    
    jQuery.SearchControls.loadCharPagination = function() {
        var paginationCode="";
        for(i=0;i<=25;i++){
            character = String.fromCharCode(65 + i);
            paginationCode=paginationCode+'<a href="javascript:searchByChar(\''+character+'\')">'+character+'</a>';
        }
        $("#pages-nav").html(paginationCode);
    }    
    jQuery.SearchControls.loadPagination = function() {    
        var valMaxPages = 7;
        var valMidPages = 4;
        var iniPages = 1;
        var pFirst = 1;
        var pTotal = valMaxPages;
        if (currentPage >= valMaxPages) {
            pFirst = currentPage - 3;
            pTotal = currentPage + 3;
        }
        $(".ul_paging").html("");
        for (p = pFirst; p <= totalPages && p <= pTotal; p++) {
            if (p == currentPage) {
                $(".ul_paging").append('<span class="curr">' + p + '</span>');
            } else {
                $(".ul_paging").append('<a onclick="SearchResultPageClick(' + p + ')" href="javascript:void(0)">' + p + '</a>');
            }
        }        
        var currentPageFirstRow = 1;        
        if (currentPage > 1) { currentPageFirstRow = pPageSize * (currentPage - 1) + 1; }
        var currentPageLastRow = currentPageFirstRow + pPageSize - 1;
        if (currentPageLastRow > totalResults) { currentPageLastRow = totalResults; }
        $(".dea").html(" "+currentPageFirstRow + " - " + currentPageLastRow+" ");
        $(".deatotal").html(totalResults);
    }         
     function getFiltersArray(strFilters) {
        arrEquipmentFiltersApt = Array();
        arrEquipmentFiltersApt = strFilters.split(",");
    }    
    jQuery.SearchControls.loadResultsFilters = function() {
        currentPage = 1;
        loadResults();
    }
    jQuery.SearchControls.disableControls = function() {disableControls();}
    function disableControls(){    
        $("#filter_search input").attr('disabled', 'disabled');
        $("#flzone").attr('disabled', 'disabled');
        $("#f_order-search-by").attr('disabled', 'disabled');
        $("#sliderPrice").slider("disable");
        $("#sliderHab").slider("disable");        
    }    
    jQuery.SearchControls.enableControls = function(){enableControls();}
    function enableControls() {        
        $("#filter_search input").removeAttr('disabled');
        $("#flzone").removeAttr('disabled');
        $("#f_order-search-by").removeAttr('disabled');
        $("#sliderPrice").slider("enable");
        $("#sliderHab").slider("enable");
    }        
    jQuery.SearchControls.updateValuesPrices = function(valIni, valEnd) {updateValuesPrices(valIni, valEnd);}
    function updateValuesPrices(valIni, valEnd) {
        currentPage = 1;
        pPriceMin = valIni;
        pPriceMax = valEnd;
        loadResults();
    }   
    function updateValuesRooms(valIni) {
        currentPage = 1;
        pMinRooms = valIni;        
        loadResults();
    } 
    jQuery.SearchControls.updateValueRevs = function(valIni) {updateValueRevs(valIni);}
    function updateValueRevs(valIni) {
        currentPage = 1;
        pScore = valIni;                
        loadResults();
    }     
    jQuery.SearchControls.updateValuesRooms = function(valIni, valEnd) {updateValuesRooms(valIni, valEnd);}
    jQuery.SearchControls.searchByName=function(){pName=$("#searchName").val();currentPage=1;loadResults();}
    jQuery.SearchControls.searchByChar=function(inChar){
        currentPage=1;
        pName=inChar;        
        $("#searchName").val(inChar);
        loadResults();
    }
    jQuery.SearchControls.filter_item=function(item){
        var noconc=0;
        var pricecond=false;                        
        var arrEquipmentItem = item.Equipment.split(",");
        var noslect=0;
        for (i=0;i<=arrEquipmentItem.length-1;i++){
            if(arrEquipmentFilters[i]=='0'){noslect++;}                                             
            if(arrEquipmentItem[i]!=arrEquipmentFilters[i] && arrEquipmentFilters[i]=='1'){noconc++;}
        }       
        if(noslect!=arrEquipmentItem.length && noconc>0){return false;}         
        switch (pPriceType) {
            case 1:  
                if((item.TotalPrice>=pPriceMin && (pPriceMax==0 || item.TotalPrice<=pPriceMax)) || item.IsAvaible==0 ){pricecond=true;}break;
            case 3:  
                if((item.DailyPricePerson>=pPriceMin && (pPriceMax==0 ||item.DailyPricePerson<=pPriceMax)) || item.IsAvaible==0){pricecond=true;}break;
            default: 
                if((item.DailyPrice>=pPriceMin && (pPriceMax==0 || item.DailyPrice<=pPriceMax)) || item.IsAvaible==0){pricecond=true;}break;
         }         
         if(pMinRooms>item.Rooms){return false;}
         if(pScore>item.Ranking){return false;}         
         return pricecond;  
    }
    
    jQuery.SearchControls.orderApartments=function(criteri) {                      
        var criteriTxt="TotalPrice";
        var rev=false;
        switch(criteri){
            case "1":                
                criteriTxt="Surface";
                rev=true;                
            break;
            case "2":                
                criteriTxt="Rooms";
                rev=true;
            break;
            case "3":                
                criteriTxt="TotalPrice";                
            break;
            case "4":                
                criteriTxt="Ranking";                
                rev=true;
            break;            
            case "5":                
                criteriTxt="People";                
                rev=true;
            break;
            case "6":    
                criteriTxt="Floor";                
            break;
        }            
        var j, i, index;          
            for (i = 0; i<apartments.length; i++) {            
                index = apartments[i];                                                                
                j = i - 1;     
                eval("for ( j; j >= 0 && parseFloat(apartments[j]."+criteriTxt+") >parseFloat(index."+criteriTxt+");j-- ) {apartments[j+1] =apartments[j];}");
                apartments[j + 1] = index;                
            }                        
        if(rev){apartments.reverse();}        
    }
}
function loadPagination(){$.SearchControls.loadPagination();}
function loadCharPagination(){$.SearchControls.loadCharPagination();}
function SearchResultPageClick(page){$.SearchControls.SearchResultPageClick(page);}
function updateValuesPrices(valIni,valEnd){$.SearchControls.updateValuesPrices(valIni,valEnd);}
function updateValuesRooms(valIni,valEnd){$.SearchControls.updateValuesRooms(valIni,valEnd);}
function updateValueRevs(valIni){$.SearchControls.updateValueRevs(valIni);}
function loadResultsFilters(){$.SearchControls.loadResultsFilters();}
function disableControls(){$.SearchControls.disableControls();}
function enableControls(){$.SearchControls.enableControls();}
function searchByName(){$.SearchControls.searchByName();}
function searchByChar(inChar){$.SearchControls.searchByChar(inChar);}
function filter_item(item){return $.SearchControls.filter_item(item);}
function orderApartments(criteri){return $.SearchControls.orderApartments(criteri);}
function selectAllZones(){return $.SearchControls.selectAllZones();}
function onSearchFilterClick(item) {
        var s = new String();
        s = item.id;
        var i = s.indexOf("_");
        var id = s.substring(i+1);
        if (item.checked) { arrEquipmentFilters[id] = 1;}
        else {arrEquipmentFilters[id] = 0;}            
        loadResultsFilters();
}
function onSearchZoneClick(item){return $.SearchControls.onSearchZoneClick(item);}
function sendSearch(){
        validation(ididioma);
        return false;
}
function updateSlideComponent() {
        if ($("#sliderPrice").slider("option", "values")) {
            var pMaxPriceValue, pMinPriceValue;            
            switch (pPriceType) {
                case 1:  
                    pMaxPriceValue = maxDailyPrice * pDays;
                    pMinPriceValue = minDailyPrice * pDays;
                    break;
                case 3:  
                    pMaxPriceValue = maxDailyPrice / pPeople;
                    pMinPriceValue = minDailyPrice / pPeople;
                    break;
                default: 
                    pMaxPriceValue = maxDailyPrice;
                    pMinPriceValue = minDailyPrice;
            }
            if (pPriceMax == 0) {
                pSliderMaxSelectdValue = pMaxPriceValue;
            }else {
                pSliderMaxSelectdValue = pPriceMax;
            }
            if (pPriceMin == 0) {pSliderMinSelectdValue = pMinPriceValue;}else {pSliderMinSelectdValue = pPriceMin;}            
            $("#sliderPrice").slider("option", "min", Math.floor(pMinPriceValue));
            $("#sliderPrice").slider("option", "max", Math.ceil(pMaxPriceValue));
            $("#sliderPrice").slider("values", 0, Math.floor(pSliderMinSelectdValue));
            $("#sliderPrice").slider("values", 1, Math.ceil(pSliderMaxSelectdValue));
            $("#iniprice").html(Math.floor(pSliderMinSelectdValue));
            $("#iniprice2").html(Math.ceil(pSliderMaxSelectdValue));
        }
    }
function updateRoomsSlider(pMaxRoomsValueSelected, _reLoadResults) {    
        if (pMaxRoomsValueSelected == 0){pMaxRoomsValueSelected = maxRooms;}            
            pSliderReloadResults = _reLoadResults;            
            $("#sliderHab").slider("option", "min", minRooms);            
            $("#sliderHab").slider("option", "max", maxRooms);                                                            
            $("#habValues .endVal").html(pMaxRoomsValueSelected);
            $("#sliderHab").slider("value",pMinRooms);
	        $("#habVal").html(pMinRooms);
}
function updateRevsSlider() {$("#sliderRev").slider("value",pScore);$("#revVal").html(pScore);}
var openwZones=false;   
function updateAreas(){
    if(pZonaIds.length>0){        
        $(".zonesDespl").removeClass("zonesDesplInAct");
        $(".zonesDespl").addClass("zonesDesplAct");
        if(pZonaIds.length==1){
            $(".zonesDespl").html(objDictionary.filter_unbarrioseleccionado);            
        }else{
            $(".zonesDespl").html(objDictionary.filter_nbarriosseleccionados.replace("%n%",pZonaIds.length));                         
        }        
    }else{
        $(".zonesDespl").addClass("zonesDesplInAct");
        $(".zonesDespl").removeClass("zonesDesplAct");
        $(".zonesDespl").html(objDictionary.searchForm_Zona);
    }
}

 function initSliderControls(){
    $("#pricetotal").removeAttr("checked");
    $("#pricedaypers").removeAttr("checked");
    $("#priceday").removeAttr("checked");    
	switch(pPriceType){
	    case 1:
	        $("#pricetotal").attr("checked", "checked");
	        $("#typeprice").html(objDictionary.SearchMap_PrecioTotal);
	        break;
	    case 2:
	        $("#priceday").attr("checked", "checked");
	        $("#typeprice").html(objDictionary.SearchMap_PrecioDia);
	        break;
	    case 3:
	        $("#pricedaypers").attr("checked", "checked");
	        $("#typeprice").html(objDictionary.SearchMap_PrecioDiaPers);
	        break;	        
	}   
	$("#priceday").click(function(){
	    var typeAct=2;	    
	    $("#typeprice").html(objDictionary.SearchMap_PrecioDia);
	    if (typeAct!= pPriceType ) {	 
	        if ( pPriceType == 1 ) {
                if ( pPriceMin != 0 ) { pPriceMin = pPriceMin / pDays; }
                if ( pPriceMax != 0 ) { pPriceMax = pPriceMax / pDays; }
            }            
            if ( pPriceType == 3 ) { // from diari persona
                if ( pPriceMin != 0 ) { pPriceMin = pPriceMin * pPeople; }
                if ( pPriceMax != 0 ) { pPriceMax = pPriceMax * pPeople; }
            }            
    	    pSliderReloadResults = 1;   
    	    pPriceType = typeAct;     
	        updateSlideComponent();	            
	    }	
	});	
	$("#pricedaypers").click(function(){
		    var typeAct=3;		    
		    $("#typeprice").html(objDictionary.SearchMap_PrecioDiaPers);
	        if (typeAct!= pPriceType ) {
	            if ( pPriceType == 1 ) {
	                if ( pPriceMin != 0 ) { pPriceMin = pPriceMin / pDays / pPeople; }
                    if ( pPriceMax != 0 ) { pPriceMax = pPriceMax / pDays / pPeople; }
	            }
	            if ( pPriceType == 2 ) {
	                if ( pPriceMin != 0 ) { pPriceMin = pPriceMin / pPeople; }
                    if ( pPriceMax != 0 ) { pPriceMax = pPriceMax / pPeople; }
	            }	            
	            pSliderReloadResults = 1;  
	            pPriceType = typeAct; 
	            updateSlideComponent();
	        }
	});	
	$("#pricetotal").click(function(){
		    var typeAct=1;		    
		    $("#typeprice").html(objDictionary.SearchMap_PrecioTotal);
	        if (typeAct!= pPriceType ) {
	            if ( pPriceType == 2 ) { 
	                if ( pPriceMin != 0 ) { pPriceMin = pPriceMin * pDays; }
                    if ( pPriceMax != 0 ) { pPriceMax = pPriceMax * pDays; }
	            }
	            if ( pPriceType == 3 ){ 
	                if ( pPriceMin != 0 ) { pPriceMin = pPriceMin * pDays * pPeople; }
                    if ( pPriceMax != 0 ) { pPriceMax = pPriceMax * pDays * pPeople; }
	            }	            
	            pSliderReloadResults = 0;  
	            pPriceType = typeAct; 
	            updateSlideComponent();
	        }            
	});	 
    $("#sliderPrice").slider({
			range: true,
			min: 0,
			max: 200,
			values: [0, 200],
			slide: function(event, ui) {
				$("#iniprice").html(ui.values[0]);
				$("#iniprice2").html(ui.values[1]);	
				pPriceMin = ui.values[0];
				pPriceMax = ui.values[1];
			},
			change: function(event, ui) {
			    if ( pSliderReloadResults == 1 ){
			        pSliderReloadResults = 0;
			        updateValuesPrices(Math.floor(pPriceMin),Math.ceil(pPriceMax));
			    }
			},
			start: function(event, ui) {  
			    pSliderReloadResults = 1;
			}
		});

    $("#sliderHab").slider({   
        range: 'max', 
		min: 0,
		max: pMinRooms,
		values: 0,
		slide: function(event, ui) {
		    pSliderReloadResults = 1;
		    $("#habVal").html(ui.value);
		},
		change: function(event, ui) {
		    if ( pSliderReloadResults == 1 ){
		        updateValuesRooms(ui.value);
		        pSliderReloadResults = 0;
		    }
		}
	});		
 	$("#delbutton").click(function(){
	     for (i = 0; i < 12; i++){     
    	     document.getElementById("filter_"+i).checked = false ;
    	     arrEquipmentFilters[i] = 0;
        }
        
        pPriceMin= $( "#sliderPrice" ).slider("option", "min");
        pPriceMax = $( "#sliderPrice" ).slider("option", "max");        
        
        $("#sliderHab").slider("value",0);
	    $("#habVal").html("0");  
	    pMinRooms=0;
        pMaxRooms=0;
        maxRooms = 0;
        minRooms = 0;
        $("#sliderRev").slider("value",5);
        $("#rebVal").html("5");  
         pScore=5;
	          
        updateSlideComponent();
        selectAllZones();
        loadResultsFilters();
	});
	$("#sliderRev").slider({    
		min: 0,
		range: 'max',
		max: 10,
		value: pScore,
		slide: function(event, ui) {
		    pSliderReloadResults = 1;
		    $("#revVal").html(ui.value);
		},
		change: function(event, ui) {
		    if ( pSliderReloadResults == 1 ){
		        updateValueRevs(ui.value);
		        pSliderReloadResults = 0;
		    }
		}
	});	
    }