function renderOffers(data) {
    var html = "";
    var className = "";
    var tsCode = data.page.code;
    var funcExecutor = undefined;
    var funcUpdateScrollNavigation = undefined;

    if (tsCode.lastIndexOf('_obp') == tsCode.length - 4) {
        html = renderPartnerBox(data);
    } else if (tsCode.lastIndexOf('_fly') == tsCode.length - 4) {
        html = renderShortListFly(data);
    } else if (tsCode.lastIndexOf('_sky') == tsCode.length - 4) {
        html = renderSkyscraper(data);
    } else if (tsCode.lastIndexOf('_sl') == tsCode.length - 3) {
        html = renderShortList(data);
    } else if (tsCode.lastIndexOf('_cb') == tsCode.length - 3) {
        className = "pxCinemaBox";
        html = renderCinemaBox(data);
        funcUpdateScrollNavigation = appendScrolling;
        funcExecutor = showNhide;
    } else if (tsCode.lastIndexOf('_slider') == tsCode.length - 7) {
        html = renderSliderBox(data);
        funcUpdateScrollNavigation = function() { jQuery('.pxSliderBox').serialScroll(
                {
                    target: '.pxSlbContent',
                    items: 'div.pxSlbOffers', // Selector to the items ( relative to the matched elements, '#sections' in this case )
                    prev: 'div.pxSlbLnkBack', // Selector to the 'prev' button (absolute!, meaning it's relative to the document)
                    next: 'div.pxSlbLnkNext', // Selector to the 'next' button (absolute too)
                    axis: 'x', // The default is 'y' scroll on both ways
                    duration: 500, // Length of the animation (if you scroll 2 axes and use queue, then each axis take half this time)
                    force: true, // Force a scroll to the element specified by 'start' (some browsers don't reset on refreshes)
                    lazy: true,
                    exclude: 0,
                    cycle: false,
                    onBefore: function(e, elem, $pane, $items, pos) { UpdateSliderScrollNavigation(pos); }
                });
            };
        funcExecutor = clickSlide;
    }
    // fix png's 
    var badBrowser = (/MSIE ((5\.5)|6)/.test(navigator.userAgent) && navigator.platform == "Win32");
    if (badBrowser) {
        $('img[src$=.png]').each(function() {
            if (!this.complete) {
                this.onload = function() { fixPng(this) };
            }
            else {
                fixPng(this);
            }
        });
    }
    if (html != "") {
        if(className != "") jQuery("#travelsuite_" + tsCode).addClass(className);
        jQuery("#travelsuite_" + tsCode).html(html);
        if(funcUpdateScrollNavigation) {
            funcUpdateScrollNavigation('pxScroll_' + data.page.id, data.page.id);
        }
        if (funcExecutor) {
            var pageId = data.page.id;
            var posId;
            if (data.getByCode('cb_offer').length > 0) {
                posId = data.getByCode('cb_offer')[0].positionId;
            }
            funcExecutor(posId, posId, pageId);
        }
    }
}
