//Tiny lib, debugger (c)Alexander Melanchenko, http://alexnd.com

/*
usage:
	$DBG.dump(var) - return dump string
	$DBG.alert(var) - dump alert
	$DBG.dumpw(var) - dump window
	$DBG.settarget(id) - set target element
	$DBG.dumpv(var) - put dump to target value
	$DBG.dumph(var) - put dump to target innerHTML
	$DBG.putv(var) - put string to target value
	$DBG.puth(var) - put string to target innerHTML
*/

var $DBG = {
_s:'',
_put_target:null,
_w:null,
_wf:null,
_bs:'',
_ba:[],

dump: function(v){
	return $DBG.print(v, true);
},

dumpw: function(v){
	$DBG.print(v, false);
},

alert: function(v){
	$DBG.print(v);
},

printw: function(v){
	$DBG._win(v);
},

settarget: function(i){
	$DBG._t=document.getElementById(i);
},

bufs: function(v){
	$DBG._bs+=v;
},

bufa: function(v){
	$DBG._ba[$DBG._ba.length]=v;
},

putv: function(v){
	c=(undefined!=arguments[1] && arguments[1])?false:true;
	if('object' != typeof $DBG._t)return;
	if(c)
		$DBG._t.value+=v;
	else
		$DBG._t.value=v;
},

puth: function(v){
	c=(undefined!=arguments[1] && arguments[1])?false:true;
	if('object' != typeof $DBG._t)return;
	if(c)
		$DBG._t.innerHTML+=v;
	else
		$DBG._t.innerHTML=v;
},

putbufs: function(c){
	c=(undefined!=arguments[0] && arguments[0])?false:true;
	if('object' != typeof $DBG._t)return;
	if(c)
		$DBG._t.value+=$DBG._bs;
	else
		$DBG._t.value=$DBG._bs;
},

dumpv: function(v){
	c=(undefined!=arguments[1] && arguments[1])?false:true;
	if('object' != typeof $DBG._t)return;
	if(c)
		$DBG._t.value+=$DBG.print(v, true);
	else
		$DBG._t.value=$DBG.print(v, true);
},

dumph: function(v){
	c=(undefined!=arguments[1] && arguments[1])?false:true;
	if('object' != typeof $DBG._t)return;
	if(c)
		$DBG._t.innerHTML+=$DBG.print(v, true);
	else
		$DBG._t.innerHTML=$DBG.print(v, true);
},

print: function(v){
	var r = "";
	var t = typeof(v);
	r+="typeof: "+t+"\n";
	if(t=="object")
	{
		r+="Properties:\n";
		for (var i in v) {
			r+=i;
			if('undefined'!=typeof v[i]){
				r+=" ("+typeof(v[i])+") = "+v[i];
			}
			r+="\n";
		}
	}
	r+="Value:\n"+v;
	$DBG._s = r;
	if(arguments.length>1){
		if(arguments[1]){
			return r;
		}else{
			$DBG._win(r);
		}
	}
	else{
		alert(r);
	}
},

_win: function(v){
	if('object'==typeof window.console){
		window.console.log(v);
	}else{
		$DBG._w=window.open("","DBGWindow","resizable,scrollbars,height=400,width=500");
		if('object'==typeof $DBG._w){
			$DBG._wf=function(){
				$DBG._w.document.write("<html><head><title>Information</title></head><body style='padding:5px;margin:0px;font:10px Arial'><pre style='font:10px Arial'>"+v+"</pre></body></html>");
				$DBG._w.document.close();
			}
			setTimeout($DBG._wf, 50);
		}else{
			alert(v);
		}
	}
}

}
