//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,

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);
},

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;
},

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!=v[i]){
				r+=" (typeof:"+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)
{
	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();
	}
	DBG._w=window.open("","DbgWindow","resizable,scrollbars,height=400,width=500");
	setTimeout(DBG._wf, 50);
}

}
