/**
 * Placeholder for Map interaction.
 * @author Guy Whitfield
 */
rn.PanelNews = function () {
    var that = this;
    this.eventData = {};
    this.newsData = {};
    this.settings = {};
    this.eventFlag = false;
    this.newsFlag = false;

    this.init = function () {
        this.parent.init.call(this);
        this.getPanelData();
    };

    this.setDomElements = function () {
        this.domNode = $('#panel-news');
        var newPanelToggle = $('.news-panel-toggle');

        newPanelToggle.click(function (e) {
            e.stopPropagation();
            $('.scroller-container').slideToggle('slow');
            newPanelToggle.html($(this).html() == 'Close' ? 'Open' : 'Close').toggleClass('open');
        });

        $('.eventItem a').hover(function (e) {
            var index = $(this).attr('data');
            rn.map.setLocation(that.eventData[index].location.Latitude, that.eventData[index].location.Longitude);
        });

        $('.newsItem a').hover(function (e) {
            var index = $(this).attr('data');
            rn.map.setLocation(that.newsData[index].location.Latitude, that.newsData[index].location.Longitude);
        });

    }


    this.minimise = function () {
        $('.scroller-container').slideUp('slow');
        $('.news-panel-toggle').html('Open');
    }

    this.maximise = function () {
        $('.scroller-container').slideDown('slow');
        $('.news-panel-toggle').html('Close');
    }


    this.getPanelData = function () {
        try {
            if (rn.map.mapData) {
                this.eventData = rn.map.mapData.items;
                this.eventFlag = true;
            }

            if (Object.size(this.newsData) > 0) { //TODO: verify this test works
                this.newsFlag = true;
                this.populatePanel();
            } else {

                var qs = window.location;
                var service = "http://" + qs.hostname + "/News-and-Events/Latest-News?ajax=1";

                $.ajax({
                    url: service,
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (data) {
                        that.newsData = data;
                        that.newsFlag = true;
                        that.populatePanel();
                    },
                    error: function (XMLHttpRequest, textStatus, errorThrown) {
                        rn.Console.log("XMLHttpRequest=" + XMLHttpRequest.responseText + "\ntextStatus=" + textStatus + "\nerrorThrown=" + errorThrown);
                    }
                });
            }


        } catch (err) {
            this.hide();
        }
    }

    this.prependZero = function (val) {
        if (val < 10) { val = '0' + val };
        return val;
    }

    this.formatListItems = function (data, type) {

        var html = "";
        var last = "";

        // Each is 0 based, so remove 1 from the length
        var dataLength = data.length - 1;

        $.each(data, function (counter) {
            if (type == "event" && counter == dataLength) { last = "last" };

            var date = rn.utilities.formatDateDDMMYY(eval(data[counter].time.slice(1, -1)));

            html += "<li><div class='" + type + "Item " + last + "'><h4>" + date
 + "</h4><a href='" + data[counter].pageLink + "' id='" + data[counter].id + "' data='" + counter + "' ><span>" + data[counter].name + "</span></a></div></li>";
        });

        return html;

    }

    this.populatePanel = function () {
        if (this.eventFlag || this.newsFlag) {
            var eventListHtml = '';
            var newsListHtml = '';
            var eventListNode = $('#event-items');
            var newsListNode = $('#news-items');

            eventListHtml = this.formatListItems(this.eventData, 'event');
            newsListHtml = this.formatListItems(this.newsData, 'news');

            eventListNode.append(eventListHtml);
            newsListNode.append(newsListHtml);

            this.setDomElements();
        } else {
            return;
        }

    }
    /**
    * EVENT LISTENERS
    */


    /**
    * onMapSizeToggle - listens for the toggle firing when the map is sent fullscreen, or back again.
    */
    this.onMapSizeToggle = function () {

        if (rn.panelMapSettings.mapState) {
            $('#panel-news').appendTo('body').css({ 'position': 'absolute', 'top': '50px', 'left': '50px', 'z-index': '2750' });
        } else {
            $('#panel-news').appendTo($('#map-container'));
        }

    };

    /**
    * onGlobalDeployment - Fired when the user clicks on Global Deployment.
    */
    this.onGlobalDeployment = function () {
        this.show();
        $('#panel-news .scroller-container').tinyscrollbar({ 'size': 210 }, 210);
    };

    this.onScopedDeployment = function () {
        this.hide();
    };

    this.onShowVesselOnMap = function () {
        this.minimise();
    }

    return this;
}

rn.PanelNews.prototype = new rn.Panel;
rn.PanelNews.constructor = rn.PanelNews;
rn.panelNews = new rn.PanelNews();
rn.panelNews.parent = rn.PanelNews.prototype;
