"use strict";

if (typeof travi !== 'object') {
	var travi = {};
}

travi.announcements = (function () {
	var formatUpdateHTML = function (update)
	{
		var formattedDate = new Date();
		formattedDate.setTime(update.date * 1000);
		formattedDate = formattedDate.format("l, F j, Y");
		
		return	'<dt>' + 
					formattedDate + 
				'</dt>' + 
					'<dd>' + 
						update.desc + 
					'</dd>';
	},
	
	updateLinks = function (prev, next, offset, found)
	{
		$("#previousUpdates").attr('href', '/updates/?offset=' + prev);
		$("#moreUpdates").attr('href', '/updates/?offset=' + next);
		
		$("ul.pagination li.pipeDivider").removeClass("outOfRange");
		if (offset <= 0) {
			$("#previousUpdates").parent().addClass("outOfRange");
			$("ul.pagination li.pipeDivider").addClass("outOfRange");
		} else {
			$("#previousUpdates").parent().removeClass("outOfRange");
		}
		if (found > next) {
			$("#moreUpdates").parent().removeClass("outOfRange");
		} else {
			$("#moreUpdates").parent().addClass("outOfRange");
			$("ul.pagination li.pipeDivider").addClass("outOfRange");
		}
	},
	
	getMoreAnnouncements = function () {
		$.getJSON('/announcements/?action=getUpdatesJSON&' + this.href.substring(this.href.indexOf('offset')),
			function (json) {
				$('#announcementsList dl').hide('blind', function () {
					$(this).empty();
					$(json.updates).each(function () {
						$('#announcementsList dl').append(formatUpdateHTML(this));
					});
					$(this).show('blind', function () {
						$(this).trigger('announce-update');
					});
				});
				updateLinks(json.prevOff, json.nextOff, json.offset, json.rowsFound);
			}
		);
		return false;
	},

	init = function () {
		$.getScript('/resources/shared/js/date/date.format.js', function () {
			$("ul.pagination a").click(getMoreAnnouncements);
		});
	};

	$(document).ready(init);
	
	return {
		init: init
	};
}());
