/**
 * Logger
 * Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 4/7/2008
 *
 * @projectDescription Utility object to log information
 *
 * @author Ariel Flesler
 * @version 1.0.0
 */

var Logger = {
	target:null,
	container: document.body,
	getList:function(){
		var ol = this.container.appendChild(document.createElement('ol'));
		ol.className = 'list';
		return ol;
	},
	getItem:function( args ){
		var li = document.createElement('li');
		li.className = args.length > 2 ? 'summary' : 'count';
		return li;
	},
	format:function( args ){
		var ret = args[0], i = 1;
		if( args.length > 2 )
			ret += '>' + args[i++];
		return ret + ': ' + args[i];
	},
	log:function( a ){
		var args = typeof a == 'object' ? a : arguments;
		if( !this.target )
			this.target = this.getList();

		var text = this.format(args),
			li = this.getItem(args);

		li.appendChild(document.createTextNode(text));
		this.target.appendChild(li);
	},
	asserts:0,
	assert:function( condition, message ){
		var i = ++this.asserts;
		this.log( message || 'assert #' + i, condition ? 'PASS' : 'FAIL' );
	}
};