function DebugReporter()
{
	this.debugOn = false;
	this.delimiter = "\n";
	this.debugWindowUrl = "";
	this.debugWindowName = "Debug_Report_Output_Window";
	this.debugWindowFeatures = "width=600,height=1000,scrollbars=yes";
	this.debugWindowReplace = false;

	this.show = function(showWhere)
	{
		if ((that.debugOn) && (debugMessages.length > 0))
		{
			if (typeof(showWhere) != "string")
			{
				showWhere = "popup";
			}
			
			switch (showWhere.toLowerCase())
			{
				case "popup":
					sendDebugTextToPopup();
					break;
				case "browser":
					sendDebugTextToWindow();
					break;
				case "server":
					sendDebugTextToServer();
					break;
				default:
					sendDebugTextToPopup();
					break;
			}
		}
		debugMessages = new Array();
	}
	
	this.append = function(textToAppend)
	{
		if ((typeof(textToAppend) == 'undefined') || (textToAppend === null))
		{
			textToAppend = ""
		}
		currentLine = currentLine + textToAppend.toString();
	}
	
	this.line = function(textToAppend)
	{
		if ((typeof(textToAppend) == 'undefined') || (textToAppend === null))
		{
			textToAppend = ""
		}
		currentLine = currentLine + textToAppend.toString();
		debugMessages.push(currentLine);
		currentLine = "";
	}
	
	this.tabIn = function() {}
	
	this.tabOut = function() {}
	
	this.clear = function()
	{
		debugMessages = new Array();
	}
	
	var debugMessages = new Array();
	var currentLine = "";
	var that = this;
	
	var getDelimitedString = function()
	{
		var text = "";
		if (debugMessages.length)
		{
			var arrayLength = debugMessages.length;
			text = debugMessages[0];
			for ( var i =  1 ; i < arrayLength ; i++)
			{
				text += that.delimiter;
				text += debugMessages[i];
			}
		}
		return text;
	}
	
	var sendDebugTextToPopup = function()
	{
		alert(getDelimitedString());
	}
	var sendDebugTextToWindow = function()
	{
		var oldDelimiter = that.delimiter;
		that.delimiter = "<br/>";
		var debugText = getDelimitedString();
		that.delimiter = oldDelimiter;
		
		var debugWindow = debugWindow = window.open(that.debugWindowUrl,that.debugWindowName,that.debugWindowFeatures,that.debugWindowReplace);
		
		debugWindow.document.body.innerHtml = "";
		debugWindow.document.write("<p style='padding-bottom:10px;border-bottom-style:solid;border-bottom-width:1px;'>");
		debugWindow.document.write(debugText);
		debugWindow.document.write("</p>");
	}
	var sendDebugTextToServer = function() {}
}

var debug = new DebugReporter();
debug.debugOn = true;


