﻿jQuery.SearchResultList = function(idCiudad, containerId, options) {
    var defaults = {onLoadResultsComplete: function(){}};
    var activatedTooltips = false;
    var settings = $.extend({}, defaults, options);
    var $container = $(containerId);
    var showedapartment = false;   
    var rootPath = "";    
    function initSearchResultsList(){    
        $(".paging").show();
        loadResults();
        $(".paging").css("visibility", "visible");
    }        
    function loadContainerResults(results){    
            switch(caseSearch){
            case "GetApartmentsMyList":                 
            if(results.d.Apartments!=null){                            
                totalPages = 1;
                maxRooms = 20;
                minRooms = 0;                     
                pPageSize=9;
                totalPages = 1;                                
                var auxMaxDailyPrice= 0;
                var infiniteNumber=9999999999;
                var auxMinDailyPrice=infiniteNumber;
                var auxMaxRooms=20;
                apartments=Array();
                var filteredItems=0;       
               
                $.each(results.d.Apartments, function(i, item){                   
                        if(Number(item.DailyPrice)>auxMaxDailyPrice){auxMaxDailyPrice=item.DailyPrice;}
                        if(Number(item.DailyPrice)<auxMinDailyPrice){auxMinDailyPrice=item.DailyPrice;}                         
                        if(Number(item.Rooms)>auxMaxRooms){auxMaxRooms=item.Rooms;} 
                        if(item.IsAvaible==0){
                            item.DailyPrice=infiniteNumber;
                            item.TotalPrice=infiniteNumber;
                            item.DailyPricePerson=infiniteNumber;
                        }                                              
                        apartments[i] = item;                                            
                });                
                orderApartments('3');                
                $.each(apartments, function(i, item){                   
                            if(filter_item(item)){
                                item.filtered=true;
                                filteredItems++;                     
                                dataToDom_Apartment(item,"removeApartment",true);
                            }else{
                                item.filtered=false;
                            }
                });
                
                auxMaxDailyPrice+=10;
                if(auxMinDailyPrice>10){auxMinDailyPrice-=10;}
                maxDailyPrice = auxMaxDailyPrice;
                minDailyPrice = auxMinDailyPrice;
                maxRooms = auxMaxRooms;
                minRooms = 0;  
                totalResults =filteredItems;
                caseSearch="LocalGetApartmentsMyList";                
                }else{
                    totalResults = 0;
                }
            break;
            case "LocalGetApartmentsMyList":                                                        
            if(apartments!=null){            
                pPageSize=9;
                var filteredItems=0;                      
                $.each(apartments, function(i, item) {                                                                   
                        if(filter_item(item)){
                            item.filtered=true;
                            filteredItems++;
                            dataToDom_Apartment(item,"removeApartment",true);
                        }else{
                            item.filtered=false;
                        }
                });
                totalResults =filteredItems;                                
            }else{
                    totalResults = 0;
            }
            break;
            case "GetAllApartments":
                totalPages = results.d.totalPages;
                totalResults = results.d.totalResults;            
                maxDailyPrice = results.d.maxDailyPrice;
                minDailyPrice = results.d.minDailyPrice;            
                maxRooms = results.d.maxRooms;
                minRooms = 0;                
                if (totalResults == 0) {                 
                    $container.html('<div class="notav">' + objDictionary.SearchMap_NoApartamentosDisponibles + '</div>');                                        
                 }else {           
                    apartments=Array();
                    $.each(results.d.Apartments, function(i, item) {    
                        apartments[i] = item;
                        dataToDom_Apartment(item,"addToList",true);
                    });
                 } 
                 $(".btlist a.btno").click(function() {              
                 if(semTransfer){                           
                        semTransfer=false;
                        $(this).effect("transfer", {to:$(".scroll-container")}, 1000,activeTransfer); 
                        return false;
                  }                                   
                });
            break;            
            default:
                totalPages = results.d.totalPages;
                totalResults = results.d.totalResults;            
                maxDailyPrice = results.d.maxDailyPrice;
                minDailyPrice = results.d.minDailyPrice;            
                maxRooms = results.d.maxRooms;
                minRooms = 0;                
                if (totalResults == 0) {                 
                    $container.html('<div class="notav">' + objDictionary.SearchMap_NoApartamentosDisponibles + '</div>');                                        
                 }else {           
                    apartments=Array();
                    $.each(results.d.Apartments, function(i, item) {  
                        item.IsAvaible=1;  
                        apartments[i] = item;
                        dataToDom_Apartment(item,"addToList",false);
                    });
                 } 
                 $(".btlist a.btno").click(function() {              
                 if(semTransfer){                           
                        semTransfer=false;
                        $(this).effect("transfer", {to:$(".scroll-container")}, 1000,activeTransfer); 
                        return false;
                  }                                   
                });
            break;
            }            
            $container.append('<div class="ftclr"></div>');
            loadPagination();
            activeTooltips();
            
            $container.removeClass("loadingicon");
            if (totalResults == 0) {                 
                if(caseSearch=="GetApartments" || caseSearch=="GetAllApartments"){
                    $container.html('<div class="notav">' + objDictionary.SearchMap_NoApartamentosDisponibles + '</div>');   
                }else{
                    msgNotAptMylist();
                }                                                     
            } 
             onLoadResultsComplete();
             semLoading = true;                    
             enableControls();
    }
    function loadResults() {    
        if (semLoading) {                       
            semLoading = false;            
            disableControls();            
            $container.html("");
            $container.addClass("loadingicon");                        
            switch(caseSearch){
            case "GetApartments":
                loadAjax_GetApartments();
            break; 
            case "GetAllApartments":   
                loadAjax_GetAllApartments();
            break;           
            case "GetApartmentsMyList":                 
                loadAjax_GetApartmentsMyList();                  
            break;
            case "LocalGetApartmentsMyList":
                loadContainerResults(null);                
            break;            
            }
        }       
    }
    function msgNotAptMylist(){
        $container.append('<div class="notavMain"><div id="msg-noitems">' + objDictionary.SearchMap_miLista_TextoInfoCaixaLista + '<div id="msg-noitems-but">\
<img src="/imgs/but/btnl-o.gif" alt="btn-detail" class="rbtn" /><div class="btno">+ ' + objDictionary.SearchMap_BotonMiLista + '</div>\
<img src="/imgs/but/btnl-o.gif" alt="btn-detail" class="rbtn" /><div class="btno">- ' + objDictionary.SearchMap_BotonMiLista + '</div>\
</div></div></div>');
    }    
   function loadAjax_GetAllApartments(){          
     var pZonaIdsTxt=pZonaIds.join(",");   
     $.ajax({
                type: "POST",
                url: "/FinderServices.asmx/GetAllApartments",                
                data: "{'pLocationId':" + idCiudad + ",'pName':'"+pName +"','pAdults':"+pAdults + ",'pKids':" + pKids + ",'pStartDate':'" + pStartDate + "','pEndDate':'" + pEndDate + "','pSymbolMoney':'" + currency + "','pOrderBy':" + pOrderBy + ",'pPriceType':" + pPriceType + ",'pZonaId':'" + pZonaIdsTxt + "','pPriceMin':" + pPriceMin + ",'pPriceMax':" + pPriceMax + ",'pMinRooms':" + pMinRooms + ",'pMaxRooms':" + pMaxRooms + ",'pCurrentPage':" + currentPage + ",'pPageSize':" + pPageSize + ",'pEquipment':'" + arrEquipmentFilters.toString() + "','pScore':'"+pScore+"'}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                cache: false,
                success: function(results) {                       
                    loadContainerResults(results);                    
                },
                error: function(result) {                                   
                    $container.html('<div class="notav">' + "Search error." + '</div>');
                }
            })
   }
   function loadAjax_GetApartments(){          
   var pZonaIdsTxt=pZonaIds.join(",");       
     $.ajax({
                type: "POST",
                url: "/FinderServices.asmx/GetApartments",
                data: "{'pLocationId':" + idCiudad + ",'pAdults':"+pAdults + ",'pKids':" + pKids + ",'pStartDate':'" + pStartDate + "','pEndDate':'" + pEndDate + "','pSymbolMoney':'" + currency + "','pOrderBy':" + pOrderBy + ",'pPriceType':" + pPriceType + ",'pZonaId':'" + pZonaIdsTxt + "','pPriceMin':" + pPriceMin + ",'pPriceMax':" + pPriceMax + ",'pMinRooms':" + pMinRooms + ",'pMaxRooms':" + pMaxRooms + ",'pCurrentPage':" + currentPage + ",'pPageSize':" + pPageSize + ",'pEquipment':'" + arrEquipmentFilters.toString() + "','pScore':'"+pScore+"'}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                cache: false,
                success: function(results) {loadContainerResults(results);
                },
                error: function(result) {                
                $container.html('<div class="notav">' + "Search error." + '</div>');
                }
            })
   }
    function activeTooltips() {   
        $(".more-info").hover(function() { if ($(this).find('.info-tooltip').is(':hidden')) { $(this).find('.info-tooltip').fadeIn('fast'); } return true; }, function() { $('.info-tooltip').fadeOut('fast'); return true; });         
    }
    
    function dataToDom_Apartment(item,actionListName,showprice) {         
        var TotalPriceTxt=item.TotalPrice;
        var ReservePriceTxt=item.ReservePrice;    
        var DailyPricePersonTxt=item.DailyPricePerson;
        var DailyPriceTxt=item.DailyPrice;     
        var htmlDisp = '<img class="rbtn" alt="" src="/imgs/but/btnl-g.gif"/><a class="btng" href="javascript:Book(' + item.ApartmentId + ');">' + objDictionary.SearchMap_ApartmentItem_ButtonReservar + '</a>';
        btnSymbol="+";
        if(showprice){                                
            if (!item.IsAvaible) {
                TotalPriceTxt="--";
                ReservePriceTxt="--";
                DailyPricePersonTxt="--";
                DailyPriceTxt="--";
                htmlDisp = '<img src="/imgs/but/btnl-gr.gif" alt="" class="rbtn" /><a href="#" class="btngr">' + objDictionary.SearchMap_miLista_NoDisp + '</a>';
            }
        }   
        if(actionListName=="removeApartment"){
        btnSymbol="-";
        }
                          
        var itemContainer = document.createElement("div");
        var $itemjContainer = $(itemContainer);
        $itemjContainer.addClass("apartment-detail");
        $itemjContainer.attr('id', 'aptbox-'+item.ApartmentId);        
        var strPuntuacion = item.Ranking;           
        strPuntuacion = strPuntuacion.replace(",", ".");
        
        var widthPC = Math.round((Number(strPuntuacion) / 10) * 70);        
        var terraza = "";
        var pathimg = "/imgs/eqp/icons/";        
        if (item.SurfaceBalcony == 0) {
            terraza = objDictionary.SearchMap_general_no;
        } else {
            terraza = item.SurfaceBalcony + "m<sup>2</sup>";
        }        
        var txtRanking=item.Ranking;
        if(item.Ranking==10 || item.Ranking=="10,0"){
            txtRanking="10";
        }
        arrEquipmentItem = Array();
        arrEquipmentItem = item.Equipment.split(",");    
        $itemjContainer.append('<div class="apartment-image"><a href="/' + item.UrlDetail + '" ><img width="110" height="110" alt="' + item.Name + '" src="'+rootPath+'/' + item.Photo + '"/></a></div>\
<div class="apartment-title">\
<ul>\
<li><h2>' + item.Name + '</h2>\
</li>\
<li>Area: <em>' + item.Zone + '</em></li>\
<li class="votes-apartment">\
<div id="voteinfo-s">\
<div class="voteinfo1">' + txtRanking + '</div>\
<div class="voteinfo2-s">\
<div class="voteimg-bg-s">\
<div class="voteimg-fg-s" style="width: ' + widthPC + 'px;"> </div>\
</div>\
<div class="vote-op">' + objDictionary.quality_survey_Comments+ ' : ' + item.NumComments + '</div>\
</div>\
</div>\
</li>\
<li class="map-photo"><a href="/' + item.UrlDetail + '#map-tab">Map</a><a href="/' + item.UrlDetail + '#photos-tab" >' + objDictionary.linkText_fotos+ '</a></li>\
<li><img class="rbtn" alt="bt" src="/imgs/but/btnl-b.gif"/><a href="/' + item.UrlDetail + '" class="btnb">' + objDictionary.SearchMap_ApartmentItem_ButtonDetalle+ '</a></li>\
</ul>\
</div>\
<div class="apartment-features">\
<ul>\
<li>' + objDictionary.ApartmentItem_Personas+ ': <em>' + item.People + '</em></li>\
<li>' + objDictionary.SearchMap_ApartmentItem_Superficie+ ': <em>' + item.Surface + ' m2</em></li>\
<li>' + objDictionary.SearchMap_ApartmentItem_Habitaciones+ ': <em>' + item.Rooms + '</em></li>\
<li>' + objDictionary.SearchMap_ApartmentItem_Terraza+ ': <em>' + terraza + '</em></li>\
<li>' + objDictionary.SearchMap_ApartmentItem_Planta + ': <em>' + item.Floor + '</em></li>\
</ul>\
</div>\
<div class="apartment-equipment"><ul class="img-tooltip">\
<li><img src="' + pathimg + arrEquipmentItem[3] + '_ico_calefac.png" alt="' + objDictionary.SearchMap_apartEquip_Calefaccion + '"  /></li>\
<li><img src="' + pathimg + arrEquipmentItem[0] + '_ico_air.png" alt="' + objDictionary.SearchMap_apartEquip_Aire + '"  /></li>\
<li> <img src="' + pathimg + arrEquipmentItem[2] + '_ico_elevator.png" alt="' + objDictionary.SearchMap_apartEquip_Ascensor + '"  /></li>\
<li><img src="' + pathimg + arrEquipmentItem[5] + '_ico_cot.png" alt="' + objDictionary.SearchMap_apartEquip_Cuna + '"  /></li>\
<li><img src="' + pathimg + arrEquipmentItem[4] + '_ico_kitchen.png" alt="' + objDictionary.SearchMap_apartEquip_Cocina + '"  /></li>\
<li><img src="' + pathimg + arrEquipmentItem[8] + '_ico_wash.png" alt="' + objDictionary.SearchMap_apartEquip_Lavadora + '"  /></li>\
<li><img src="' + pathimg + arrEquipmentItem[7] + '_ico_net.png" alt="' + objDictionary.SearchMap_apartEquip_Internet + '"  /></li>\
<li><img src="' + pathimg + arrEquipmentItem[10] + '_ico_parking.png" alt="' + objDictionary.SearchMap_apartEquip_Parking + '"  /></li>\
<li><img src="' + pathimg + arrEquipmentItem[1] + '_ico_pet.png" alt="' + objDictionary.SearchMap_apartEquip_Mascota + '"  /></li>\
<li><img src="' + pathimg + arrEquipmentItem[6] + '_ico_smoke.png" alt="' + objDictionary.SearchMap_apartEquip_Fumadores + '"  /></li>\
<li><img src="' + pathimg + arrEquipmentItem[9] + '_ico_dis.png" alt="' + objDictionary.SearchMap_apartEquip_Accesible + '"  /></li>\
<li><img src="' + pathimg + arrEquipmentItem[11] + '_ico_terrace.png" alt="' + objDictionary.SearchMap_ApartmentItem_Terraza + '"  /></li>\
</ul></div>\
<div class="apartment-price"><ul>\
<li class="more-info"><img alt="?" src="/imgs/icons/show-help.png"/>\
<ul><li style="display: none;" class="info-tooltip">' + objDictionary.tooltip_precios + '</li>\
</ul>\
</li>\
<li class="price-day">' + objDictionary.SearchMap_PrecioDia + '<br/>\
<em><span class="symbol">' + currencySymbol + ' </span><span>' + DailyPriceTxt + '</span><br/>\
<span class="comentlt">(' + objDictionary.SearchMap_PrecioDiaPers + ' ' + currencySymbol + ' ' + DailyPricePersonTxt + ')</span></em></li>\
<li class="total">' + objDictionary.SearchMap_PrecioTotal + ' (' + pDays + ' ' + objDictionary.ApartmentItem_Dias + ')<br/><em><span class="symbol">' + currencySymbol + ' </span><span>' + TotalPriceTxt + '</span></em></li>\
<li class="price-reserve">' + objDictionary.ApartmentItem_PrecioReserva + '<br/>\
<em><span class="symbol">' + currencySymbol + ' </span><span>' + ReservePriceTxt + '</span><br/>\<span class="comentlt">' + objDictionary.ApartmentItem_NotaPrecioReserva + '</span></em></li>\
<li class="btlist"><div class="rbtn2"></div><a id="idapt-' + item.ApartmentId + '" onclick="'+actionListName+'(' + item.ApartmentId + ')" href="javascript:void(0)" class="btno">'+btnSymbol+' ' + objDictionary.SearchMap_BotonMiLista + '</a>'+htmlDisp+'</li>\
</ul>\
</div>');
        $container.append($itemjContainer);
    }
jQuery.SearchResultList.loadResults = function() {loadResults();}
jQuery.SearchResultList.loadContainerResults=function(results){loadContainerResults(results);}
jQuery.SearchResultList.initSearchResultsList = function() {initSearchResultsList();}
jQuery.SearchResultList.removeApartment = function(iditem) {    
    for (i = 0; i < apartments.length; i++) {
            if (apartments[i].ApartmentId == iditem) {
                apartments.splice(i, 1);
                break;
            };
    }   
    $('#aptbox-'+iditem).slideUp('fast', function() {$('#aptbox-'+iditem).remove();});
    deleteItemIdList(iditem);    
}
}	
function loadResults(){$.SearchResultList.loadResults();}
function loadContainerResults(results){$.SearchResultList.loadContainerResults(results);}
function removeApartment(idItem){$.SearchResultList.removeApartment(idItem);}