// Copyright (c) 2009, Pikadude No. 1

// Create a "namespace"
var NF = {
// Prepare the object to receive configuration
messages: [],
firstMessage: [],
images: {},

initialize: function() {
// This is called after the HTML and configuration have loaded
	if (document.NewsFlashForm) {
		NF.form = document.NewsFlashForm;
		NF.form.reset();
	}
	
	NF.actionLink = document.getElementById("nfactionlink");
	NF.prevLink = document.getElementById("nfprevlink");
	NF.nextLink = document.getElementById("nfnextlink");
	
	if (NF.firstMessage.length == 0) {
		NF.currentMessage = Math.floor(Math.random() * NF.messages.length);
	} else if (NF.firstMessage.length == 1) {
		NF.currentMessage = NF.firstMessage[0];
	} else {
		NF.display("messagebox", "Configuration issue: setFirstMessage was used more than once.");
		return;
	}
	
	NF.actionImage = document.createElement("img");
	NF.prevImage = document.createElement("img");
	NF.nextImage = document.createElement("img");
	NF.actionImage.src = NF.images.ok;
	NF.prevImage.src = NF.images.prevDisabled;
	NF.nextImage.src = NF.images.nextDisabled;
	NF.actionImage.alt = "Okay";
	NF.prevImage.alt = "";
	NF.nextImage.alt = "";
	// Suppress the display of tooltips in IE
	NF.actionImage.title = "";
	NF.prevImage.title = "";
	NF.nextImage.title = "";
	
	document.getElementById("nfactionbutton").appendChild(NF.actionImage);
	document.getElementById("nfprevbutton").appendChild(NF.prevImage);
	document.getElementById("nfnextbutton").appendChild(NF.nextImage);
	NF.display("messagebox", "This box will tell you what's new on the " + NF.siteName + " website, and eliminated the need to have a whole seperate page just for that.\n\nClick Okay to find out what's up.");
	// Pre-load images that aren't needed right away
	(new Image()).src = NF.images.goDisabled;
	(new Image()).src = NF.images.goEnabled;
	(new Image()).src = NF.images.prevEnabled;
	(new Image()).src = NF.images.nextEnabled;
},
display: function(zone, value) {
// This was quite literally made to be overwritten. Someone could write their own JavaScript code that overwrites this method and uses DOMAssistant or JQuery or something to display HTML.
	NF.form[zone].value = value;
},
setFirstMessage: function() {
// The configuration file will call this after declaring the message that should be displayed first
	NF.firstMessage.push(NF.messages.length - 1);
},
updateUI: function() {
	var newHeader = "Message " + (NF.currentMessage + 1) + " of " + NF.messages.length;
	if (NF.messages[NF.currentMessage].addDate == NF.lastUpdate)
		newHeader += " (New)";
	NF.display("headerbox", newHeader);
	NF.display("messagebox", NF.messages[NF.currentMessage].text);
	if (NF.messages[NF.currentMessage].link) {
		NF.actionLink.href = NF.messages[NF.currentMessage].link;
		NF.actionImage.src = NF.images.goEnabled;
		NF.actionImage.alt = "Go";
	} else {
		NF.actionLink.href = "javascript:;";
		NF.actionImage.src = NF.images.goDisabled;
		NF.actionImage.alt = "";
	};
},
next: function() {
	NF.currentMessage++;
	if ( NF.currentMessage == NF.messages.length) {NF.currentMessage = 0};
	NF.updateUI();
},
previous: function() {
	NF.currentMessage--;
	if (NF.currentMessage == -1) {NF.currentMessage = NF.messages.length - 1};
	NF.updateUI();
},
updateStats: function() {
	var newMessages = new Array();
	for (i in NF.messages) {
		if (NF.messages[i].addDate == NF.lastUpdate) newMessages.push(i * 1 + 1);
	}
	var statsString = "This news was last updated on: " + NF.lastUpdate;
	if (newMessages.length > 0) {
		statsString += ".\n\nThese messages were added on that date: " + newMessages.join(", ");
	}
	NF.display("headerbox", "News Flash Update Stats");
	NF.display("messagebox", statsString);
	NF.actionImage.src = NF.images.ok;
	NF.prevImage.src = NF.images.prevDisabled;
	NF.prevImage.alt = "";
	NF.prevLink.href = "javascript:;";
	NF.nextImage.src = NF.images.nextDisabled;
	NF.nextImage.alt = "";
	NF.nextLink.href = "javascript:;";
	NF.actionLink.href = "javascript:NF.ok();";
	NF.actionImage.alt = "Okay";
},
ok: function() {
	NF.prevImage.src = NF.images.prevEnabled;
	NF.prevImage.alt = "Previous";
	NF.prevLink.href = "javascript:NF.previous();";
	NF.nextImage.src = NF.images.nextEnabled;
	NF.nextImage.alt = "Next";
	NF.nextLink.href = "javascript:NF.next();";
	NF.updateUI();
}
}