/// <reference path="jQuery.intellisense.js"/>
/// <reference path="xeko.js"/>
/// <reference path="messaging.js"/>

$(document).ready(function() 
{
	xeko.widgets.news.getNews();
});

xeko.widgets.news = {
  "itemsPerPage": 26,
  "newsXml": null,
  "getNews": function() {
    // Load the XML for this month, unless it has already been loaded
    if (!xeko.widgets.news.newsXml) {
      $.ajax({
        type: "GET",
        url: "/widgets/widget.News.handler.php?type=getNews",
        beforeSend: function() {  },
        complete: function() { $("#newsLoading").hide(); },
        success: function(xml) {
          if ($("errors", xml).text().length > 0) {
            xeko.widgets.news.throwError(xeko.messaging.error.NEWS_LOAD_ERROR);
          }
          else {
            xeko.widgets.news.hideError();

            // Cache XML
            xeko.widgets.news.newsXml = xml;

            // Set up paging
            xeko.paging.init(
							"news", // identifier for this instance
							$("news>item", xml).length, // number of items
							xeko.widgets.news.itemsPerPage, // items per page
							"#newsNavBarRange", // selector for range text element
							".newsNavBarPagination", // selector for pagination buttons element
							"News items", // how to refer to items in the range element
							"xeko.widgets.news.renderNews()"	// method to call to re-render items on pagination
						);

            // Render loaded Events XML
            xeko.widgets.news.renderNews();
          }
        },
        error: function(xmlHttpRequest, status, err) {
			if (xmlHttpRequest.status > 0) xeko.widgets.news.throwError(xeko.messaging.error.NEWS_LOAD_ERROR);
        }
      });
    }
    else {
      // Render cached Events XML
      xeko.widgets.news.renderNews();
    }
  },
  "renderNews": function() {
    // render paging
    xeko.paging.construct("news");

    var xml = xeko.widgets.news.newsXml;
    
    // Clear existing list items
    $("#newsList>li").remove();

    var currentItem = 1;
    $("news>item", xml).each(function() {
      if ($(this).find("newsdisplay").text() == 1) {
        if (xeko.paging.isInRange(currentItem, "news")) {
          var source = $(this).find("source").text();
          var title = $(this).find("title").text();
          var url = $(this).find("url").text();

          var dte = xeko.utilities.formatDateFromOldServices($(this).find("releasedate").text());
          var dteStr = xeko.utilities.formatShortDate(dte.toString());

          $("#newsList")
						.append("<li></li>")
						.find("li:last")
						.append("<h2>" + source + "</h2>")	// Source publication
						.append(dteStr + "<br />")	// Date
						.append("<a target='_blank' href='" + url + "'>" + title + "</a>")	// link
					;
        }
        currentItem++;
      }
    });
  },
  "throwError": function(msg) {
    $("#news>p.error").text(msg).show();
  },
  "hideError": function() {
    $("#news>p.error").hide();
  }
};