//-- logging

var log_messageIndex = 0;
var log_messageIdSeparator = ":&nbsp;";
var log_reversed = false;

function log_enable()
{
	log_create();

	//dfl_deferFunction(log_create);
}

function log_message(message)
{
	var raw = "<span class=\"logindex\">" + log_messageIndex + log_messageIdSeparator +"</span>";

	if(message)
		raw += "<span class=\"logmessage\">" + message + "</span>";

	log_raw(raw); 
	log_messageIndex++;
}

function log_event(theEvent, message)
{
	var raw = "<span class=\"logindex\">" + log_messageIndex + log_messageIdSeparator + "</span>";

	if(theEvent)
		raw += "<span class=\"logevent\">&lt;"+theEvent.type+"&gt;</span>";

	if(theEvent && message)
		raw += "&nbsp;";

	if(message)
		raw += "<span class=\"logmessage\">"+message+"</span>";

	log_raw(raw); 
	log_messageIndex++;
}

function log_exception(theException, message)
{
	var raw = "<span class=\"logindex\">" + log_messageIndex + log_messageIdSeparator + "</span>";

	if(theException)
		raw += "<span class=\"logexception\">*" + theException.name + "*</span>";

	if(theException && (message || theException.message))
		raw += "&nbsp;";

	if(message)
		raw += "<span class=\"logmessage\">" + message + "</span>";
	else if(theException && theException.message)
		raw += "<span class=\"logmessage\">" + theException.message + "</span>";

	log_raw(raw); 
	log_messageIndex++;
}

function log_raw(raw)
{
	var divText = "<div class=\"logentry\">" + raw + "</div>";
	
	if(document.logger && log_reversed)
	{
		document.logger.innerHTML = divText + document.logger.innerHTML;
	}
	else if(document.logger)
	{
		document.logger.innerHTML += divText;
		document.logger.scrollTop = document.logger.scrollHeight
	}
	
}

function log_clear()
{
	if(document.logger)
		document.logger.innerHTML = "";

	log_messageIndex = 0;
}

function log_toggleDisplay()
{
	if(log_isDisplayed())
		log_hide();
	else
		log_show();
}

function log_isDisplayed()
{
	return document.logger ? document.logger.currentStyle.display != "none" : false;
}

function log_show()
{
	if(document.logger)
		document.logger.style.display = "block";
}

function log_hide()
{
	if(document.logger)
		document.logger.style.display = "none";
}

function log_create()
{
	var logOutput = document.getElementById("logoutput");

	if(!logOutput)
	{
		if(document.logger)
			logOutput = document.logger;
		else
			logOutput = document.createElement("<div id='logoutput' />");

		if(document.body)
			document.body.appendChild(logOutput);
		
		document.logger=logOutput;
	}	
}