jQuery.mylist = function(container, spannum, calarr, calgo, fpax, fPaxKids, currencyIn, currencySymbol, idioma, options) {
    var idIdioma = idioma;
    var max = 9;
    var containerName = container;
    var $containerC1;
    var $containerC2;
    var $containerC3;
    var $container;
    
    if (containerName == "#rpage") {
        $container = $(containerName);
        $containerC1 = $("#top-comparator");
        $containerC2 = $("#middle-comparator");
        $containerC3 = $("#bottom-comparator");
    } else if (containerName == "#mylist") {
        $container = $(containerName);
    }
    var $spannum = $(spannum);
    var $calarr = $(calarr);
    var $calgo = $(calgo);
    var $fpax = $(fpax);
    var $fPaxKids = $(fPaxKids);
    var calarrVal = $calarr.val();
    var calgoVal = $calgo.val();
    var fpaxVal = $fpax.val();
    var fPaxKidsVal = $fPaxKids.val();
    var fpaxTotalVal = Number(fpaxVal) + Number(fPaxKidsVal);
    var arrDiccionari;
    var numHiddenMylist = 0;
    if (fPaxKidsVal == "") {
        fPaxKidsVal = 0;
    }
    fpaxVal = fPaxKidsVal + fpaxVal;
    var numItems = 0;
    var itemsStore = Array();
    var $jcookie;
    var currency = currencyIn;
    var pr = "";
    var ordenacio = "PreuTotal";
    var arrayIds = Array();
    $.oaCookie("OAMyList", 90);
    var res = $.oaCookie.read();
    var cookieContent = $.oaCookie.results;
    if (cookieContent != null) {
        if (cookieContent.length > 0) {
            arrayIds = cookieContent.split(",");
        }
    }
    if (container != "") {
        getDiccionari();
        
    } else {
        numHiddenMylist = arrayIds.length;
        $spannum.html(numHiddenMylist);
        numItems = numHiddenMylist;
    }

    function updateDates() {
        calarrVal = $calarr.val();
        calgoVal = $calgo.val();
        fpaxVal = $fpax.val();
        fPaxKidsVal = $fPaxKids.val();
        fpaxTotalVal = Number(fpaxVal) + Number(fPaxKidsVal);
       
    }
    function addInternalList(value) {
        if (container != "" && !existApartment(value)) {
            var items = Array();
            items.push(value);
            addToListQuery(items);
            numItems++;
        } else if (!existApartmentIds(value)) {
            arrayIds.push(value);
            numHiddenMylist++;
            $spannum.html(numHiddenMylist);
            saveCookieIds();
            numItems++;
        }
    }
    jQuery.mylist.addToList = function(value) {
     
        if (numItems < max) {
     
            $boton = $("#idapt-" + value);          
            $boton.removeClass("btno");
            $boton.addClass("btngr");              
            $boton.prev().removeClass("rbtn2");
            $boton.prev().addClass("rbtn2a");
            
            addInternalList(value);

        } else if (itemsStore.length >= max) {
            alert(arrDiccionari["AlertMaximo"]);
        }
    }
    jQuery.mylist.orderBy = function(criteria) {
        if (containerName == "#mylist") {
            orderItems(criteria);
        } else if (containerName == "#rpage") {
            orderItemsComparator(criteria);
        }
    }

    function existApartment(value) {
        for (i = 0; i < itemsStore.length; i++) {
            if (itemsStore[i].ApartmentData.IdApart == value) {
                return true;
            }
        }
        return false;
    }
    function existApartmentIds(value) {
        for (i = 0; i < arrayIds.length; i++) {
            if (arrayIds[i] == value) {
                return true;
            }
        }
        return false;
    }

    function getDiccionari() {
        arrDiccionari = new Array();
        $.ajax({
            type: "POST",
            url: "/GlobalServices.asmx/GetMyListDictionary",
            data: "{'idIdioma':'" + idIdioma + "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            cache: false,
            success: function(results) {
                $.each(results.d, function(i, item) {
                    arrDiccionari[i] = item;
                });
                addToListQuery(arrayIds);
            },
            error: function(result) { }
        })
    }

    function addToListQuery(idIn) {
        updateDates();
        content = idIn.join(",");
        if (containerName == "#rpage") {
        $(".container-wh").addClass("loadingicon");
        }
        
        $.ajax({
            type: "POST",
            url: "/ApartmentSearch.asmx/MyListApartments",
            data: "{'idApart':[" + content + "],'dayIn':'" + calarrVal + "','dayOut':'" + calgoVal + "','personas':" + fpaxTotalVal + ",'codMoneda':'" + currency + "','idIdioma':'" + idIdioma + "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            cache: false,
            success: function(results) {
                $.each(results.d.Items, function(i, item) {                                           
                    if (i < max) {
                        if (containerName == "#mylist") {
                            $container.append(dataToDom_Mylist(item));
                        
                        } else if (containerName == "#rpage") {
                            appendToComparator(item);
                            $(".container-wh").removeClass("loadingicon");
                        }                        
                        itemsStore.push(item);
                    }
                });
           
               if (containerName == "#rpage") {
                      $(".container-wh").removeClass("loadingicon");
                 }           
                updateNumItems();
                saveCookieItems();
            },
            error: function(result) { }
        })
    }

    function saveCookieItems() {
        var content = "";
        for (i = 0; i < itemsStore.length; i++) {
            content = content + itemsStore[i].ApartmentData.IdApart + ",";
        }
        content = content.substring(0, content.length - 1);
        $.oaCookie.save(content);
    }
    function saveCookieIds() {
        var content = "";
        for (i = 0; i < arrayIds.length; i++) {
            content = content + arrayIds[i] + ",";
        }
        content = content.substring(0, content.length - 1);
        $.oaCookie.save(content);
    }
    function booleanToString(item, equipament) {
        var x;
        eval('if(item.Equipment.' + equipament + '==true){x="0";}else{x="1";}');
        return x;
    }
    function booleanToYesNo(blIn) {
        if (blIn) { return ("Sí"); } else { return ("No"); }
    }
    function queryCookieItems() {
        arrayIds = readCookieItems();
        addToListQuery(arrayIds);
    }

    function appendItems(data) {
        var i = 0;
        $.each(data, function(i, item) {
            if (containerName == "#mylist") {
                $container.append(dataToDom_Mylist(item));
            }
            itemsStore[i] = item;
            i++;
        });

        updateNumItems();
    }
    function appendItemsComparator(data) {
        var i = 0;
        $.each(data, function(i, item) {
            if (containerName == "#rpage") {
                appendToComparator(item);
            }
            itemsStore[i] = item;
            i++;
        });
        updateNumItems();
    }

    function deleteItem(iditem) {
        for (i = 0; i < itemsStore.length; i++) {
            if (itemsStore[i].ApartmentData.IdApart == iditem) {
                itemsStore.splice(i, 1);
                break;
            };
        }
        saveCookieItems();
        updateNumItems();
    }
    function updateNumItems() {
        $spannum.html(itemsStore.length);
        numItems = itemsStore.length;
        if (itemsStore.length == 0) {
            if (containerName == "#mylist") {
                $container.html("");
                $container.append(dataToDom_MyListNoItems());
            } else if (containerName == "#rpage") {
                $containerC1.append(dataToDom_MyListNoItems());
                $containerC2.append(dataToDom_MyListNoItems());
                $containerC3.append(dataToDom_MyListNoItems());
            }
        } else {
            $("#noitems-mylist").remove();
        }
    }
    function orderItems(criteri) {
        orderItemsStore(criteri);
        ordenacio = criteri;
        $container.html("");
        appendItems(itemsStore);
    }
    function orderItemsComparator(criteri) {
        orderItemsStore(criteri);
        ordenacio = criteri;
        $containerC1.html("");
        $containerC2.html("");
        $containerC3.html("");
        appendItemsComparator(itemsStore);
    }

    function orderItemsStore(criterio) {
        var j, i, index;
        for (i = 1; i < itemsStore.length; i++) {
            index = itemsStore[i];
            j = i - 1;
            eval("for ( j; j >= 0 && itemsStore[j]." + criterio + " >index." + criterio + "; j-- ) { itemsStore[j+1] =itemsStore[j];}");
            itemsStore[j + 1] = index;
        }
    }

    function dataToDom_Mylist(item) {
        var datatotdom = document.createElement("div");
        var $rdatatotdom = $(datatotdom);
        $rdatatotdom.attr("id", "apt" + item.ApartmentData.IdApart);
        $rdatatotdom.addClass("apartment-detail");
        var pathimg = "/imgs/eqp/icons/";
        var htmlDisp = '';
        if (!item.PreuTotal || item.PreuTotal == 0) {
            item.Disponible = false;
        }
        if (item.Disponible) {
            htmlDisp = '<img src="/imgs/but/btnl-g.gif" alt="btn-detail" class="rbtn" /><a href="javascript:Book(' + item.ApartmentData.IdApart + ')" class="btng">' + arrDiccionari["BotonReservar"] + '</a>';
        } else {
            item.PreuTotal = '--';
            htmlDisp = '<img src="/imgs/but/btnl-gr.gif" alt="btn-detail" class="rbtn" /><a href="' + item.ApartmentData.UrlFicha + '" class="btngr">' + arrDiccionari["NoDisp"] + '</a>';
        }
        var htmlDispPrecio = '';
        if (!item.Disponible) {
            htmlDispPrecio = 'style="color:#cccccc"';
        }


        var habitaciones = item.Details.Habitaciones;
        if (item.Details.Habitaciones == 0) { habitaciones = arrDiccionari["Estudio"]; }
        var terraza = item.Details.Terraza + "m2";
        if (!item.Equipment.Terraza) { terraza = arrDiccionari["No"]; } else if (item.Details.Terraza == 0) { terraza = arrDiccionari["Si"]; }
        $rdatatotdom.append('\
      <div class="apartment-image"><a href="' + item.ApartmentData.UrlFicha + '"><img height="60px" width="60px" src="' + item.ApartmentData.UrlFotos + item.ApartmentData.Foto2 + '" alt="' + item.ApartmentData.NomApartamento + '" /></a></div>\
      <div class="apartment-title">\
        <ul>\
          <li>\
            <h2>' + item.ApartmentData.NomApartamento + '</h2>\
          </li>\
          <li>' + arrDiccionari["Zona"] + ': <em>' + item.Details.Zona + '</em></li>\
          <li class="btlist"><img src="/imgs/but/btnl-b.gif" alt="btn-detail" class="rbtn" /><a href="' + item.ApartmentData.UrlFicha + '" class="btnb">' + arrDiccionari["BotonDetalle"] + '</a>\
              <div class="btn-eq">' + arrDiccionari["VerEquipamiento"] + '\
               </div>\
          </li>\
        </ul>\
      </div>\
      <div class="apartment-features">\
        <ul>\
          <li>' + arrDiccionari["Superficie"] + ': <em>' + item.Details.Superficie + ' m2</em></li>\
          <li>' + arrDiccionari["Habitaciones"] + ':<em>' + habitaciones + '</em></li>\
          <li>' + arrDiccionari["Terraza"] + ': <em>' + terraza + '</em></li>\
          <li>' + arrDiccionari["Planta"] + ':<em>' + item.Details.Planta + '</em></li>\
        </ul>\
      </div>\
      <div class="apartment-price">\
        <ul>\
          <li class="price" ' + htmlDispPrecio + '>' + arrDiccionari["Total"] + ':<em ' + htmlDispPrecio + '><span class="symbol"> ' + currencySymbol + ' </span>' + item.PreuTotal + '</em></li>\
          <li class="btlist"><img src="/imgs/but/btnl-o.gif" alt="btn-detail" class="rbtn" />\
              <div class="btno">- ' + arrDiccionari["BotonMiLista"] + '</div>\
            ' + htmlDisp + '</li>\
        </ul>\
      </div>\
      <div class="apartment-equipment">\
	  <img src="' + pathimg + booleanToString(item, "Calefaccion") + '_ico_calefac.png" alt="' + arrDiccionari["AltCalefaccion"] + '" width="30" height="30" />\
	  <img src="' + pathimg + booleanToString(item, "Aire") + '_ico_air.png" alt="' + arrDiccionari["AltAire"] + '" width="30" height="30" />\
	  <img src="' + pathimg + booleanToString(item, "Ascensor") + '_ico_elevator.png" alt="' + arrDiccionari["AltAscensor"] + '" width="30" height="30" />\
	  <img src="' + pathimg + booleanToString(item, "Fumadores") + '_ico_smoke.png" alt="' + arrDiccionari["AltFumadores"] + '" width="30" height="30" />\
	  <img src="' + pathimg + booleanToString(item, "Cocina") + '_ico_kitchen.png" alt="' + arrDiccionari["AltCocina"] + '" width="30" height="30" />\
	  <img src="' + pathimg + booleanToString(item, "Lavadora") + '_ico_wash.png" alt="' + arrDiccionari["AltLavadora"] + '" width="30" height="30" />\
	  <img src="' + pathimg + booleanToString(item, "Minusvalidos") + '_ico_dis.png" alt="' + arrDiccionari["AltAccesible"] + '" width="30" height="30" />\
	  <img src="' + pathimg + booleanToString(item, "Animales") + '_ico_pet.png" alt="' + arrDiccionari["AltMascota"] + '" width="30" height="30" />\
	  <img src="' + pathimg + booleanToString(item, "Cuna") + '_ico_cot.png" alt="' + arrDiccionari["AltCuna"] + '" width="30" height="30" />\
	  <img src="' + pathimg + booleanToString(item, "Parking") + '_ico_parking.png" alt="' + arrDiccionari["AltParking"] + '" width="30" height="30" />\
	  <img src="' + pathimg + booleanToString(item, "Internet") + '_ico_net.png" alt="' + arrDiccionari["AltInternet"] + '" width="30" height="30" />\
	  <img src="' + pathimg + booleanToString(item, "Terraza") + '_ico_terrace.png" alt="' + arrDiccionari["AltTerraza"] + '" width="30" height="30" /></div>\
	  ');

        $rdatatotdom.find("div.btn-eq").click(function() {
            $(this).parent().parent().parent().parent().find(".apartment-equipment").slideToggle("normal");
            if ($(this).is(".btn-eq-active")) {
                $(this).removeClass("btn-eq-active");
            } else {
                $(this).addClass("btn-eq-active");
            }
        });
        $rdatatotdom.find(".btno").click(function() {
            $boton = $("#idapt-" + item.ApartmentData.IdApart);
            $boton.removeClass("btngr");
            $boton.addClass("btno");

            
            $boton.prev().addClass("rbtn2");
            $boton.prev().removeClass("rbtn2a");
            
            
            $(this).parent().parent().parent().parent().fadeOut("fast",
															function() {
															    deleteItem(item.ApartmentData.IdApart);
															    $(this).remove();
															    updateNumItems();
															}
															);
        });
        return $rdatatotdom;
    }
    function dataToDom_MyListNoItems() {
        var datatotdom = document.createElement("div");
        var $rdatatotdom = $(datatotdom);
        $rdatatotdom.attr("id", "noitems-mylist");
        var htmlDispPrecio = '';
        $rdatatotdom.append('<div id="msg-noitems">' + arrDiccionari["InfoLista"] + '<div id="msg-noitems-but">\
<img src="/imgs/but/btnl-o.gif" alt="btn-detail" class="rbtn" /><div class="btno">+ ' + arrDiccionari["BotonMiLista"] + '</div>\
<img src="/imgs/but/btnl-o.gif" alt="btn-detail" class="rbtn" /><div class="btno">- ' + arrDiccionari["BotonMiLista"] + '</div>\
</div></div>');
        return $rdatatotdom;
    }
    function appendToComparator(item) {
        $containerC1.append(dataToDom_Comparator_Top(item));
        $containerC2.append(dataToDom_Comparator_Middle(item));
        $containerC3.append(dataToDom_Comparator_Bottom(item));
    }
    function dataToDom_Comparator_Top(item) {

        var datatotdom = document.createElement("div");
        var $rdatatotdom = $(datatotdom);
        $rdatatotdom.attr("id", "apttop" + item.ApartmentData.IdApart);
        $rdatatotdom.addClass("main-apartment-comparator");
        var htmlDisp = '';
        if (!item.PreuTotal || item.PreuTotal == 0) {
            item.Disponible = false;
        }
        if (item.Disponible) {
            htmlDisp = '<img src="/imgs/but/btnl-g.gif" alt="btn-detail" class="rbtn" /><a href="javascript:Book(' + item.ApartmentData.IdApart + ')" class="btng">' + arrDiccionari["BotonReservar"] + '</a>';
        } else {
            item.PreuTotal = '--';
            item.PreuDiari = '--';
            item.PreuReserva = '--';
            
            htmlDisp = '<img src="/imgs/but/btnl-gr.gif" alt="btn-detail" class="rbtn" /><a href="' + item.ApartmentData.UrlFicha + '" class="btngr">' + arrDiccionari["NoDisp"] + '</a>';
        }

        $rdatatotdom.append('<h3>' + item.ApartmentData.NomApartamento + '</h3>\
	    <div class="btlist"><img src="/imgs/but/btnl-o.gif" alt="btn-detail" class="rbtn" />\
              <div class="btno">- ' + arrDiccionari["BotonMiLista"] + '</div>\
			  <div class="apartment-image"><a href="' + item.ApartmentData.UrlFicha + '"><img height="60px" width="60px" src="' + item.ApartmentData.UrlFotos + item.ApartmentData.Foto2 + '" alt="' + item.ApartmentData.NomApartamento + '" /></a></div>\
			  <div class="btlist">' + htmlDisp + '</div>\
			   <div class="btlist"><img src="/imgs/but/btnl-b.gif" alt="btn-detail" class="rbtn" /><a href="' + item.ApartmentData.UrlFicha + '" class="btnb">' + arrDiccionari["BotonDetalle"] + '</a>\
	  ');

        $rdatatotdom.find(".btno").click(function() {


            $(this).parent().parent().parent().parent().parent().parent().find("#aptmid" + item.ApartmentData.IdApart).remove();
            $(this).parent().parent().parent().parent().parent().parent().find("#aptbot" + item.ApartmentData.IdApart).remove();
            $(this).parent().parent().parent().parent().parent().parent().find("#apttop" + item.ApartmentData.IdApart).remove();
            deleteItem(item.ApartmentData.IdApart);
        });
        return $rdatatotdom;
    }
    function booleanToEquipmentIco(bIn) {
        var retSt;
        if (bIn) { retSt = "ok.png"; } else { retSt = "no.png" }
        return retSt;
    }


    function dataToDom_Comparator_Middle(item) {

        var datatotdom = document.createElement("div");
        var $rdatatotdom = $(datatotdom);
        $rdatatotdom.attr("id", "aptmid" + item.ApartmentData.IdApart);
        $rdatatotdom.addClass("detail-apartment-comparator");
        var htmlDispPrecio = "";
        if (!item.Disponible) { htmlDispPrecio = ' style="color:#cccccc"'; }
        var habitaciones = item.Details.Habitaciones;
        if (item.Details.Habitaciones == 0) { habitaciones = arrDiccionari["Estudio"]; }
        var terraza = item.Details.Terraza + "m2";
        if (!item.Equipment.Terraza) { terraza = arrDiccionari["No"]; } else if (item.Details.Terraza == 0) { terraza = arrDiccionari["Si"]; }

        $rdatatotdom.append('\
<ul><li' + htmlDispPrecio + '><span class="symbol">' + currencySymbol + ' </span><strong>' + item.PreuDiari + '</strong></li>\
<li' + htmlDispPrecio + '><span class="symbol">' + currencySymbol + ' </span><strong>' + item.PreuTotal + '</strong></li>\
<li' + htmlDispPrecio + '><span class="symbol">' + currencySymbol + ' </span><strong>' + item.PreuReserva + '</strong></li>\
<li  class="small">' + item.Details.Zona + '</li>\
<li>' + item.Details.Superficie + 'm2</li>\
<li>' + habitaciones + '</li>\
<li>' + item.Details.Personas + '</li>\
<li>' + item.Details.Planta + '</li>\
<li>' + terraza + '</li>\
</ul>\
	');


        return $rdatatotdom;
    }
    function dataToDom_Comparator_Bottom(item) {
        var datatotdom = document.createElement("div");
        var $rdatatotdom = $(datatotdom);
        $rdatatotdom.css("float", "left");
        $rdatatotdom.attr("id", "aptbot" + item.ApartmentData.IdApart);
        $rdatatotdom.addClass("detail-apartment-comparator");
        var pathimg = "/imgs/comparator/";
        var n = booleanToEquipmentIco(item.Equipment.Calefaccion);
        $rdatatotdom.append('\
		<ul>\
		 <li><img src="' + pathimg + booleanToEquipmentIco(item.Equipment.Calefaccion) + '" alt="' + arrDiccionari["AltCalefaccion"] + '" /></li>\
	  <li><img src="' + pathimg + booleanToEquipmentIco(item.Equipment.Aire) + '" alt="' + arrDiccionari["AltAire"] + '" /></li>\
	  <li><img src="' + pathimg + booleanToEquipmentIco(item.Equipment.Ascensor) + '" alt="' + arrDiccionari["AltAscensor"] + '" /></li>\
	  <li><img src="' + pathimg + booleanToEquipmentIco(item.Equipment.Fumadores) + '" alt="' + arrDiccionari["AltFumadores"] + '" /></li>\
	  <li><img src="' + pathimg + booleanToEquipmentIco(item.Equipment.Cocina) + '" alt="' + arrDiccionari["AltCocina"] + '" /></li>\
	  <li><img src="' + pathimg + booleanToEquipmentIco(item.Equipment.Lavadora) + '" alt="' + arrDiccionari["AltLavadora"] + '" /></li>\
	  <li><img src="' + pathimg + booleanToEquipmentIco(item.Equipment.Minusvalidos) + '" alt="' + arrDiccionari["AltAccesible"] + '" /></li>\
	  <li><img src="' + pathimg + booleanToEquipmentIco(item.Equipment.Animales) + '" alt="' + arrDiccionari["AltMascota"] + '" /></li>\
	  <li><img src="' + pathimg + booleanToEquipmentIco(item.Equipment.Cuna) + '" alt="' + arrDiccionari["AltCuna"] + '" /></li>\
	  <li><img src="' + pathimg + booleanToEquipmentIco(item.Equipment.Parking) + '" alt="' + arrDiccionari["AltParking"] + '" /></li>\
	  <li><img src="' + pathimg + booleanToEquipmentIco(item.Equipment.Internet) + '" alt="' + arrDiccionari["AltInternet"] + '" /></li>\
	  <li><img src="' + pathimg + booleanToEquipmentIco(item.Equipment.Terraza) + '" alt="' + arrDiccionari["AltTerraza"] + '" /></li>\
		</ul>\
	');
        return $rdatatotdom;
    }
}

function addToList(value){
if(value){
    $.mylist.addToList(value);			
    }
}
