/*!
 *	@author		Roel Schut
 *	@version	1.0.1 - 2009.03.31	
 */
(function($)
{
	$.debug =
	{
		_debugger: null,
		
		_date: function()
		{
			var $date = new Date();
			var $h = $date.getHours();
			var $i = $date.getMinutes();
			var $s = $date.getSeconds();
			var $m = $date.getMilliseconds() +'0';
			
			if($h < 10) $h = '0'+ $h;
			if($i < 10) $i = '0'+ $i;
			if($s < 10) $s = '0'+ $s;
			while($m.length < 4) $m = '0'+ $m;
			
			return $h +':'+ $i +':'+ $s +', '+ $m;
		},
		
		_indent: function($time)
		{
			var $return = '';
			var $iL = $time.length;
			for(var $i=0; $i<$iL; $i++) $return += '.';
			return $return;
		},
		
		_trace: function($trace)
		{
			if(typeof(console) == 'object' && console.log)
			{
				console.log($trace.replace(/<br \/>/g, '\n'));
			}
			else
			{
				if(!$.debug._debugger)
				{
					$.debug._debugger = $.element.append('pre')
						.attr('id', 'debugger')
						.addClass('debugger')
						.css
						({
							'overflow-y':	'scroll',
							'height':		150,
							'padding':		3,
							'border':		'1px solid #000',
							'font-family':	'"Courier New", Courier, monospace',
							'font-size':	12
						});
				}
				
				var $seperator = '<hr style="height: 1px" />';
				$.debug._debugger.prepend($trace + $seperator);
			}
		},
		
		trace: function()
		{
			var $time	= $.debug._date();
			var $trace	= $time;
			
			var $indent = (arguments.length > 1)
				? $.debug._indent($time)
				: '';
			
			var $iL = arguments.length;
			for(var $i=0; $i<$iL; $i++)
			{
				if($i>0) $trace += '<br />'+ $indent;
				var $arg = arguments[$i];
				$trace += ' | '+ $arg +' ('+ typeof($arg) +')';
			}
			
			$.debug._trace($trace);
		},
		
		object: function($obj)
		{
			var $trace = '';
			for(var $k in $obj)
			{
				var $v = $obj[$k];
				var $t = typeof($v);
				
				if($t == 'function' || $t == 'object')
				{
					$v = '['+ $t +']';
				}
				
				$trace += $k +' = '+ $v +' ('+ $t +')<br />';
			}
			$.debug._trace($trace);
		},
		
		alert: function()
		{
			var $alert = '';
			var $iL = arguments.length;
			for(var $i=0; $i<$iL; $i++)
			{
				if($i>0) $alert += ', ';
				$alert += arguments[$i];
			}
			alert($alert);
		}
	};
	
	window.debug =
	{
		trace:	$.debug.trace,
		object:	$.debug.object,
		alert:	$.debug.alert
	};
	
})(jQuery);
