    
    /* Hot Deals */

    todayDate = new Date();

    HotDeals = {

        itemsPerPage: 10,
        month: HomeData.getValue("hd_month") || "all",
        year: HomeData.getValue("hd_year") || todayDate.getFullYear(),
        loading: false,
        items: [],
        total: 0,
        offset: 0,
        reqObj: null,
        address: { country: "", state: "", city: ""},



        // calendar
        setMonth: function(v) {
            if(this.loading) return;
            if(this.month != "-") {
                $("hd_month_" + this.month).className = "";
            }
            this.month = v;
            HomeData.setValue("hd_month", v);
            HomeData.save();
            $("hd_month_" + this.month).blur();
            this.offset = 0;
            this.refresh();
        },


        setYear: function(v) {
            if(this.loading) return;
            if(this.year != "-") {
                $("hd_year_" + this.year).className = "";
            }
            this.year = v;
            HomeData.setValue("hd_year", v);
            HomeData.save();
            $("hd_year_" + this.year).blur();
            this.offset = 0;
            this.refresh();
        },


        applyAddress: function() {
            var a = {
                country: $("country_select").value,
                state: $("state_select").value,
                city: $("city_select").value
            }
            if(a.country != this.address.country || a.state != this.address.state || a.city != this.address.city)  {
                this.items = [];
                this.address = a;
                this.refresh();
            }
        },




        // system
        refresh: function() {
            $("hd_month_" + this.month).className = "selected";
            $("hd_year_" + this.year).className = "selected";
            $("hd_total").style.visibility = "hidden";

            if(this.items[this.year]) {
                this.render();
            } else {
                this.loading = true;

                var r = { 
                    dialog: 'hot_deals',
                    action: 'get_items',
//                    country: this.address.country, 
//                    state: this.address.state, 
//                    city: this.address.city,
                    year: this.year
                };

                var onServerResponce = function(data) {
                    HotDeals.items[HotDeals.year] = data;
                    HotDeals.render();
                    HotDeals.loading = false;
                }
                this.reqObj = new AJAX_Request({url: "", params: r, callback: onServerResponce});
                $("hd_items").innerHTML = "<br><br><br>Loading...";
            }
            return false;
        },




        // pager
        renderPager: function() {
            var html = "";
            var pages = Math.ceil(this.total / this.itemsPerPage);
            var active_page = Math.ceil(this.offset / this.itemsPerPage) + 1;

            if(pages > 1) {
                if(this.offset > 0) {
                    html += "<a class='nav' href='javascript:HotDeals.onPagerClick(\"prev\")'>&lt;&lt;&lt;</a>";
                } else {
                    html += "<span class='nav_disabled'>&lt;&lt;&lt;</span>";
                }

                p1 = 1;
                p2 = pages;
                if(pages > 6) {
                    var p1 = active_page - 3;
                    if(p1 < 1) p1 = 1;
                    var p2 = p1 + 6;
                    if(p2 > pages) {
                        p1 -= p2 - pages;
                        p2 = pages;
                    }
                    if(p1 < 1) p1 = 1;
                }

                for(var i=p1; i<=p2; i++) {
                    if(i == active_page) {
                        html += "<span class='page_active'>" + i + "</span>";
                    } else {
                        html += "<a class='page' href='javascript:HotDeals.onPagerClick(" + i + ")'>" + i + "</a>";                
                    }
                }
                if(this.offset < this.total - this.itemsPerPage) {
                    html += "<a class='nav' href='javascript:HotDeals.onPagerClick(\"next\")'>&gt;&gt;&gt;</a>";
                } else {
                    html += "<span class='nav_disabled'>&gt;&gt;&gt;</span>";
                }
            }
            $("hd_pager").innerHTML = html;
        },



        onPagerClick: function(pos) {
            switch(pos) {
                case "prev":
                    if(this.offset <  this.itemsPerPage) return;
                    this.offset -= this.itemsPerPage;
                    if(this.offset < 0) {
                        this.offset = 0;
                    }
                    break;

                case "next":
                    if(this.offset >  this.total - this.itemsPerPage) return;
                    this.offset += this.itemsPerPage;
                    if(this.offset > this.total) this.offset = this.total;
                    break;

                default:
                    this.offset = (pos - 1)* this.itemsPerPage;
                    break;
            }
            this.render();
        },



        // display

        render: function() {
            this.reqObj = null;

            if(this.month == "all") {
                var items = this.items[this.year];
            } else {
                var dt1 = new Date(this.year, this.month - 1, 1);
                var t1 = Math.round(dt1.getTime() / 1000);
                var m = this.month - 1;
                var dt2 = new Date(this.year + (m == 11 ? 1 : 0), m == 11 ? 0 : (m + 1), 1);
                var t2 = Math.round(dt2.getTime() / 1000);


                var all = this.items[this.year];
                var items = [];
                for(var i=0; i<all.length; i++) {
                    if((all[i].ts <= t1 && all[i].te > t2) ||
                       (all[i].ts >= t1 && all[i].te < t2) ||
                       (all[i].ts <= t1 && all[i].te >= t1) ||
                       (all[i].ts <= t2 && all[i].te >= t2)) {
                        items.push(all[i]);
                    }
                }
            }

            this.total = items.length;

            if(items.length) {
                $("hd_total").style.visibility = "visible";
                $("hd_total_count").innerHTML = items.length;

                var html = [];
                for(var i=0; i<this.itemsPerPage; i++) {
                    var idx = i + this.offset;
                    if(!items[idx]) continue;
                    var hd = items[idx];

                    var img_code = hd.image ? hd.subdomain + "." + hd.host_url  + '/files' + hd.image : basehost + "/static/hotdeal.gif";
                    img_code = "<div class='box'><img src='http://" + img_code + "'/></div>"

                    html.push("<div class='hotdeals_item'>" +
                              "<div class='c1'><h1><span>" + hd.city + "</span> " + hd.state.toUpperCase() + " " + hd.country.toUpperCase() + "</h1>" + img_code + "</div>" +

                              "<div class='c2'><h1>" + hd.title + "</h1>" + hd.description + "</div>" +

                              "<div class='c3'>" + 
//                              "<h1><img class='motel_icon' src='/static/images." + hd.host + "/motel_icon.png'/> "
                              "<h1><img class='motel_icon' src='/static/themes/" + hd.host + "/motel_icon.png'/> " + hd.member + "</h1>" +
                              "<div class='line'>From:"+
                              "<span class='date'> $" + hd.rate + "</span> per night" +
                              "</div>" +
                              "<div class='line'>Rooms:"+
                              "<span class='date'> " + hd.RoomIDs + "</span></div>" +
                              "<div class='line'>Minimum nights:"+
                              "<span class='date'> " + hd.minstay+"</span>" +
                              "</div>" +
                              "<div class='line'>Dates available:"+
                                  "<div class='date'>" + hd.ds + " - " + hd.de + "</div>" +
                              "</div>" +
                              "<div class='more'><a href='" + hd.url + "' title='" + hd.member + "'>more info ...</a></div>" +
                              "</div>" +

                              "</div>");
                }

                $("hd_items").innerHTML = html.join("<div class='divider'></div>");
            } else {
                $("hd_items").innerHTML = "<br><br><br>No specials";
            }
            this.visibleItems = items;
            this.renderPager();
        }
    }