/*
 * ================================= Start of WebPublisherMessages.js =================================
 */
WEBPUBLISHER_ERROR = 0
WEBPUBLISHER_WARNING = 1   

var locationObjects = new Array(); 	 

/*
 * This function defines the properties and methods of the LocationObject object 
 */
function LocationObject(location) {
	
	this.location = location;

	this.messagesBySeverityArray = new Array();

	this.addMessage = function(message, messageSeverity) { 	

		var messagesBySeverity = this.getMessagesBySeverity(messageSeverity);
	
		if ( messagesBySeverity == null ) {
		
			messagesBySeverity = this.createMessagesBySeverity(messageSeverity);
		
		}
	
		messagesBySeverity.addMessage(message);

	}; 
	
	this.getMessagesBySeverity = function(messageSeverity) {

		for ( var i = 0; i < this.messagesBySeverityArray.length; i++ ) {
	 
			var messagesBySeverity = this.messagesBySeverityArray[i];
			
			if ( messagesBySeverity.messageSeverity == messageSeverity ) {
		
				return messagesBySeverity;
			
			}		

		}
		
		return null;

	}; 
	
	this.createMessagesBySeverity = function(messageSeverity) {
					  
		var messagesBySeverity = new MessagesBySeverity(messageSeverity);
	
		this.messagesBySeverityArray[this.messagesBySeverityArray.length++] = messagesBySeverity;
	
		return messagesBySeverity;

	};
	
	this.getMessagesBySeverityArray = function() { return this.messagesBySeverityArray; };

}	

/*
 * This function defines the properties and methods of the MessagesBySeverity?Object
 */
function MessagesBySeverity(messageSeverity) {

	this.messageSeverity = messageSeverity;
	this.messagesArray = new Array();

	this.addMessage = function(message) { 	
	
		this.messagesArray[this.messagesArray.length++] = message;	 

	}; 

}							

/*
 * This function displays the Summary of errors
 */
function displayWebPublisherMessages() {
	 										 
	var host = location.host;
	var hash = location.hash;
	var href = location.href;
	var pathname = location.pathname;
	var search = location.search;
	var port = location.port;
	var protocol = location.protocol;
	
	/*
	 * Only display any message(s) if the user is specifically on certain sites - ie WIP and Staging
	 */
	if ( !( protocol == "file:" || host.indexOf("ldn1wcm2:81") == 0  || host.indexOf(192) == 0 || host == "ldn1wcm2:82") || locationObjects.length==0 ) {

		return;
			
	}
				
	var divObject = document.getElementById("WebPublisherMessages");
	
	var HTMLText = "";
	
	HTMLText+="<table onclick='closeWebPublisher(this)' style='cursor: pointer; width:100%; background-color: #F3F5F7; border:4px solid black'><tr><td colspan='2' align='center'><b>WebPublisher Messages</b></td></tr>"
	
	HTMLText+="<tr ><td style='border-bottom:1px solid #AAAAAA;' align='left'><b>Location</b></td><td style='border-bottom:1px solid #AAAAAA;' align='left'><b>Description</b></td></tr>"
				  
	for ( var i = 0; i < locationObjects.length; i++ ) {
	 	
		var locationObject = locationObjects[i];
		
		var messagesBySeverityArray = locationObject.getMessagesBySeverityArray();
		
		HTMLText+="<tr><td align='left'>" + locationObject.location + "</td><td>"
		
		for ( var j = 0; j < messagesBySeverityArray.length; j++ ) {
			
			var messagesBySeverity = messagesBySeverityArray[j];
			
			HTMLText+="<table width='100%' bgcolor='"
			
			if ( messagesBySeverity.messageSeverity == WEBPUBLISHER_ERROR ) {
			
				HTMLText+="red"
				
			}
			else {
			
				HTMLText+="orange"

			}

			HTMLText+="'>"
			
			for ( var k = 0; k < messagesBySeverity.messagesArray.length; k++ ) {
			
				var message = messagesBySeverity.messagesArray[k];
							  
				HTMLText+="<tr><td align='left'>" + message + "</td></tr>"
				
			}
			
			HTMLText+="</table>"
			
		}	
				
		HTMLText+="</td></tr>"
		 
	}																						
	
	HTMLText+="<tr><td colspan='2' align='center'><button style='cursor: pointer;' onclick='closeWebPublisher(this)'><span>Close</span></td><tr></table>"
	
	divObject.innerHTML=HTMLText;
	
	divObject.style.position = "absolute";
	divObject.style.top = "20%";
	divObject.style.left = "20%";
	divObject.style.width = "60%";
	divObject.style.height = "60%";
	
	divObject.style.zIndex  = "1000";
}	

/*
 * This function is called when the user clicks the Close button on the Summary
 */ 
function closeWebPublisher(obj) {
 	
 	obj.style.cursor = "";
	
	var divObject = document.getElementById("WebPublisherMessages");
	
	divObject.style.visibility = "hidden";	
	
}

/*
 * This function stores a message plus its location as an Error
 */
function addWebPublisherError(location, message) {
	addWebPublisherMessage(location, message, WEBPUBLISHER_ERROR);
}

/*
 * This function stores a message plus its location as a Warning
 */
function addWebPublisherWarning(location, message) {
	addWebPublisherMessage(location, message, WEBPUBLISHER_WARNING);
}

/*
 * This function stores a message plus its location with the supplied severity.
 */
function addWebPublisherMessage(location, message, messageSeverity) {
					 	  
	var locationObject = getLocationObject(location);
	
	if ( getLocationObject(location) == null ) {
		
		locationObject = createLocationObject(location)
		
	}
	
	locationObject.addMessage(message, messageSeverity)	
	
}

/*
 * This function gets a pre-existing LocationObject if one exists.
 */
function getLocationObject(location) {
	
	for ( var i = 0; i < locationObjects.length; i++ ) {
	 
		var locationObject = locationObjects[i];

		if ( locationObject.location == location ) {
		
			return locationObject;
			
		}		

	}
	
	return null;
			
}

/*
 * This function creates, initialises and stores a LocationObject
 */
function createLocationObject(location) {
 
	locationObject = new LocationObject(location);
	locationObject.createMessagesBySeverity(WEBPUBLISHER_ERROR);
	locationObject.createMessagesBySeverity(WEBPUBLISHER_WARNING);
	
	locationObjects[locationObjects.length++] = locationObject;
	
	return locationObject;
	
}
/*
 * ================================= End of WebPublisherMessages.js =================================
 */