/*
	Dependencies: jQuery.js
	
	This piece of s..$%^ I mean code is responsible for rendering messages and errors on Account Management pages
	This code contains some hard-coded values such as class name for UL elements speciffic to display type (i.e. .errors | .messages)
	Two types of messages are maintained in different collections and are handled differently
	
	API:
		Methods:
			AddError(msg) - Appends new error(s) to errors collection 
				msg - type of "string" or "array"
			AddMessage(msg) - Appends new message(s) to messages collection
				msg - type of "string" or "array"
			ClearErrors() - Initializes errors collection
			ClearMessages() - Initializes messaegs collection
			ClearAll() - ...
			RenderErrors([id]) - This method renders UL with LI's for each error and optionally appends it to an element whos id is passed as parameter.
								If element id is ommited, this function will return UL DOM element (not a string expression of an element).
			RenderMessages([id]) - Sames as above only for messages
			NOTE!!!: Render messages with optional element id will INITIALIZE/CLEAR that element before appending UL to it.
			
			hasErrors() - Returns true if errors are present
			hasMessages() - Returns true if messages are present
	Author: Sam Tsvilik
	Company: MLB Advanced Media
	Las Modified: 07/15/2008
*/
var ActionMessageDisplay = (function() {
	var _ul = document.createElement("ul"),
		_li = document.createElement("li")
	var _errors = [];
	var _messages = [];
	var _self = {
		AddError: function(msg) {
			if(typeof(msg) === "string") {
				_errors.push(msg);
			} else if(msg instanceof Array) {
				_errors = _errors.concat(msg);
			}
		},
		AddMessage: function(msg) {
			if(typeof(msg) === "string") {
				_messages.push(msg);
			} else if(msg instanceof Array) {
				_messages = _messages.concat(msg);
			}
		},
		ClearErrors: function() {
			_errors = [];
		},
		ClearMessages: function() {
			_messages = [];
		},
		ClearAll: function() {
			_self.ClearErrors();
			_self.ClearMessages();
		},
		RenderErrors: function(cId) {
			var _eul = _ul.cloneNode(false);
				_eul.setAttribute("id", "errors");
				_eul.className = "errors";
			var _e = 0, _eLen = _errors.length-1, _cli = null;
			if(_eLen >= 0) {
				do {
					_cli = _li.cloneNode(false);
					_cli.innerHTML = _errors[_e];
					_eul.appendChild(_cli);
				} while(_e++ < _eLen);
			}
			if(!!cId && typeof(cId) === "string") {
				//$("#"+cId).html("").append(_eul); Use this if you want to clear errors first
				$("#"+cId).append(_eul);
			} else {
				return _eul;
			}
		},
		RenderMessages: function(cId) {
			var _mul = _ul.cloneNode(false);
				_mul.setAttribute("id", "messages");
				_mul.className = "messages";
			var _m = 0, _mLen = _messages.length-1, _cli = null;
			if(_mLen >= 0) {
				do {
					_cli = _li.cloneNode(false);
					_cli.innerHTML = _messages[_m];
					_mul.appendChild(_cli);
				} while(_m++ < _mLen);
			}
			if(!!cId && typeof(cId) === "string") {
				//$("#"+cId).html("").append(_eul); Use this if you want to clear errors first
				$("#"+cId).append(_mul);		
			} else {
				return _mul;
			}
		},
		hasErrors: function() {
			return _errors.length>0?true:false;
		},
		hasMessages: function() {
			return _messages.length>0?true:false;
		}
	};
	return _self;	
})();