var Messages = {
	readCookie: function(name, clear) {
		var ca = document.cookie.split(';');
		var out = new Array();
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			while (c.charAt(0)==' ') c = c.substring(1,c.length);
			if (c.split('=')[0].match(name) != null)
			{		
				out[out.length] = c.split('=')[1];
				if(clear) this.deleteCookie(c.split('=')[0]);
			} 
		}
		if(out.length == 0)
			return null;
		else
			return out;
	},
	
	createCookie: function(name, value, days) {
		if (days) {
			var date = new Date();
			date.setTime(date.getTime()+(days*24*60*60*1000));
			var expires = "; expires="+date.toGMTString();
		}
		else var expires = "";
		document.cookie = name+"="+value+expires+"; path=/";
	},
	
	deleteCookie: function(name) {
		document.cookie = name + "=;expires=Thu, 01-Jan-1970 00:00:01 GMT";
	},
	
	loadMessages: function() {
		if((n = this.readCookie('cmsg', true)) != null)
		{
			for(var i = 0;i<n.length;i++)
			{
				var data = eval("("+this.urlDecode(n[i])+")");
				if(data.clientId) {
					if((elm = $(data.clientId)).length > 0) {
						var os = elm.offset();
						var w = elm.outerWidth(true);
						$("body").append("<div id=\"message-"+i+"\" class=\"message message-"+data.severity+"\">"+data.message+"</div>");
						$("body").append("<div id=\"message-arrow-"+i+"\" class=\"message-arrow-"+data.severity+" message-arrow\"></div>");
						$("#message-arrow-"+i).css({'top':os.top+"px",'left':(os.left+w+1)+"px"});
						$("#message-"+i).css({'top':os.top+"px",'left':(os.left+w+14)+"px"});
					}
				} else {
					if($('#messages').length <= 0) {
						$("body").prepend("<div id=\"messages\"></div>");
					}
					$("#messages").append("<div id=\"message-"+i+"\" class=\"page-message message-"+data.severity+"\">"+data.message+"</div>");
				}
				$("#message-"+i).click(function(){
					var id = parseInt($(this).attr('id').replace(/[^0-9]/g,''));
					$("#message-arrow-"+id).fadeOut(function(){
						$(this).remove();
					});
					$(this).fadeOut(function(){
						$(this).remove();
					});
				});
				this.deleteCookie("cmsg["+i+"]");
			}
		}
	},
	
	urlDecode: function(encodedString) {
		var output = encodedString;
		var binVal, thisString;
		var myregexp = /(%[^%]{2})/;
		while ((match = myregexp.exec(output)) != null
		           && match.length > 1
		           && match[1] != '') {
		  binVal = parseInt(match[1].substr(1),16);
		  thisString = String.fromCharCode(binVal);
		  output = output.replace(match[1], thisString);
		}
		output = output.replace(/\+/g, " ");
		return output;
	}
};

$(function(){Messages.loadMessages()});