
if (typeof(LITHIUM) == "undefined") {
	var LITHIUM = {};
}

if (typeof(LITHIUM.Kudos) == "undefined") {
	LITHIUM.Kudos = {};
}

LITHIUM.Kudos.kudoedTooltip = "";
LITHIUM.Kudos.kudoedLabel = "";
LITHIUM.Kudos.kudoedThanksLabel = "";
LITHIUM.Kudos.kudosButtonImage = "";
LITHIUM.Kudos.boardUrl = "";
LITHIUM.Kudos.showKudosUserPage = "";
LITHIUM.Kudos.isCancelGiveKudos = false;

LITHIUM.Kudos.handleSuccess = function(o) {
	if (o.responseText !== "undefined") {	
		var buttonEl = document.getElementById("kudos-button-" + o.argument.mId);
		var hiddenEl = document.getElementById("kudos-label-hidden-" + o.argument.mId);
		var kudosLabelEl = document.getElementById("kudos-label-" + o.argument.mId);
		var linkEl = document.getElementById("kudos-link-" + o.argument.mId);

		// Hack used to remove the <!--lithium --> comment that is added to the bottom of all jsp pages.
		// TODO: Find a new method to circumvent finalize.jspf - maybe by using a new 'jspx' extension.
		var resp = o.responseText.replace(/[\s]+<!--lithium[\s]+-->/,"");
		var jsonObj = eval('(' + resp + ')');

		if (jsonObj.kudosError != "") {
			alert(jsonObj.kudosError);
		} else if (jsonObj.kudosCount != "") {
			if (LITHIUM.Kudos.showKudosUserPage == "true") {
			 	buttonEl.innerHTML = "<a href='" + LITHIUM.Kudos.boardUrl + "/message-id/" + jsonObj.messageId + "/tab-name/all-users/page/1'>" + jsonObj.kudosCount + "</a>";
			} else {
				buttonEl.innerHTML = "<span>" + jsonObj.kudosCount + "</span>";
			}
			buttonEl.className = "kudos-button-disabled kudos-count default_cursor";
			buttonEl.title = LITHIUM.Kudos.kudoedTooltip;
			buttonEl.onclick = "";
			if(linkEl) {
				linkEl.onclick = "";	
			}
			kudosLabelEl.innerHTML = LITHIUM.Kudos.kudoedLabel;  
			kudosLabelEl.className = "kudos-label-kudoed default_cursor";
			hiddenEl.innerHTML = LITHIUM.Kudos.kudoedThanksLabel;
			hiddenEl.className = "kudos-label-thanks default_cursor";
			
			// There is an issue in IE that is causing the message-area elements to disappear during this
			// method. HACK: By touching each one they re-appear. 
			var elements = YAHOO.util.Dom.getElementsByClassName('message-area', 'div');
			for (i=0; i < elements.length; i++) {				
				elements[i].className += "";
			}
			
			updateThreadedListMessage(jsonObj.isKudosHot, o.argument.mId, jsonObj.kudosCount);
		}
	}
}

LITHIUM.Kudos.handleFailure = function(o) {
	history.go(0);
}

LITHIUM.Kudos.handleFailureDebug = function(o) {
	alert("Kudos ajax request failed: status=" + o.status + ",'" + o.statusText +"'. Click ok to refresh the page.");
	history.go(0);
}

function giveKudos(debug, messageId, ticket) {
	if (LITHIUM.Kudos.isCancelGiveKudos) {
		return;
	}
	var callback = null;
	var request = null;
	if (debug) {
		callback = {
			success: LITHIUM.Kudos.handleSuccess,
			failure: LITHIUM.Kudos.handleFailureDebug,
			timeout: 2500,
			argument: { mId: messageId }
		};
	} else {
		callback = {
			success: LITHIUM.Kudos.handleSuccess,
			failure: LITHIUM.Kudos.handleFailure,
			timeout: 2500,
			argument: { mId: messageId }
		};
	}
	request = YAHOO.util.Connect.asyncRequest("POST", "/" + LITHIUM.Tagging.communityId + "/board/kudos?message.uid=" + messageId + "&ticket=" + ticket + "&submitted", callback);
}

function updateThreadedListMessage(isKudosHot, messageId, kudosCount) {
	var kudosCell = document.getElementById("kudos-listId-" + messageId);
	if (kudosCell) {
		kudosCell.className = "cell-kudos";
	
		kudosCell.innerHTML = kudosCount;
	}
}

function cancelGiveKudos() {
	LITHIUM.Kudos.isCancelGiveKudos = true;	
}