﻿
    /**
    * Elsevier Commercial Sales Magazines
    * Public
    * Articles list
    *
    * @requires /cp/cp.js;/cp/cp.ajax.js
    * @namespace cp.articles
    * @version 1
    */

    cp.namespace('cp.articles');

    cp.articles = {

        // ------------------------------------------------------------------
        // Private properties
        // ------------------------------------------------------------------

        _servicePath: '/content/article/get.aspx?',
        _currentPage: 0,
        _pageSize: 10,
        _sWindow: null,

        // ------------------------------------------------------------------
        // Public properties
        // ------------------------------------------------------------------

        articleType: 0,
        categoryId: 0,
        container: null,
        pagingContainer: null,

        // ------------------------------------------------------------------
        // Private Methods
        // ------------------------------------------------------------------

        _displayArticles: function() {
            var fullHtml = '';
            var object = eval("(" + arguments[0] + ")");

            for (var i = 0; i < object.length; i++) {
                var itemHtml = '';

                itemHtml += '<h4>';

                if (object[i].ArticleTeaserImage != null) {
                    itemHtml += '<a href="' + object[i].ArticleLink + '" ';
                    itemHtml += 'class="teaser-image" style="background-image: url(\'/_virtual/';
                    itemHtml += 'article-images/' + object[i].ArticleTeaserImage + '\');">';
                    itemHtml += '<span style="display: none;">' + object[i].ArticleTitle + '';
                    itemHtml += '</span></a>';
                }

                itemHtml += '<a href="' + object[i].ArticleLink + '">'
                itemHtml += object[i].ArticleTitle + '</a>';
                itemHtml += '</h4><p>' + object[i].ArticleIntro + '<br /><span class="date">';
                itemHtml += object[i].ArticleDateConverted + '</span></p>';
                itemHtml += object[i].ArticleContentType;
                itemHtml += '<div class="hr"></div>';

                fullHtml += itemHtml;
            }

            this.scrollWindow();
            this.getPages(fullHtml, arguments[1]);
        },

        // ------------------------------------------------------------------
        // Public methods
        // ------------------------------------------------------------------

        get: function() {
            var path = this._servicePath + 'atype=' + this.articleType
                + '&catId=' + this.categoryId + '&page=' + this._currentPage
                + '&size=' + this._pageSize;

            var ajax_object = {
                url: path,
                success: function() {
                    cp.articles._displayArticles(arguments[0].responseText, path);
                }
            };

            cp.ajax.post(ajax_object);
        },

        getPages: function() {
            var html = arguments[0];

            var ajax_object = {
                url: arguments[1] + '&pages=true',
                success: function() {
                    cp.articles.container.innerHTML = html;
                    cp.articles.pagingContainer.innerHTML = arguments[0].responseText;

                    if (cp.articles.pagingContainer.className == '')
                        cp.articles.pagingContainer.className = 'paging-container';
                }
            };

            cp.ajax.post(ajax_object);
        },

        setPage: function() {
            this._currentPage = arguments[0];
            this.get();
        },

        scrollWindow: function() {
            if (parent.document.body.scrollTop != 0 || parent.document.documentElement.scrollTop != 0) {
                parent.window.scrollBy(0, -20);
                cp.articles._sWindow = setTimeout('cp.articles.scrollWindow()', 20);
            }
            else {
                clearTimeout(cp.articles._sWindow);
            }
        }
    };