function debug_log(data)
{
//  console.log(data);
 var params= {data:print_data0(data)};
 write_debug_window(params);
}


function print_object(obj,name,padding,path)
{
 if(!name)    name='';
 if(!padding) padding=0;
 if(!path)    path='';
 var str=js_linefeed;
 for(var prop in obj)
 {
  str+=print_data0(obj[prop],prop,padding,path);
 }
 return str;
}

function print_data0(obj,name,padding,path)
{
 if(!name)    name='';
 if(!padding) padding=0;
 if(!path)    path='';
 if ((name=='') && (obj=='')) return 'empty';
 var str=str_pad('',padding);
 str += name;
 str +='('+leftstr(mytype(obj),1)+')';
 switch(mytype(obj))
 {
  case 'function':return ''; // no functions
                  data=''+''+'\r\n';
                  break;
  case 'array':   data=print_object(obj,name,padding+3,path);
                  break;
  case 'undefined':data='UNDEFINED'+'\r\n';
                  break;
  case 'object' : if(obj===null) {obj='NULL';data=obj+''+'\r\n';break;}
                  data=print_object(obj,name,padding+3,path);
                  break;
  default       : if(obj===null) obj='NULL';
                  data=obj+''+'\r\n';
                  break;
 }
 str +=': '+data;
 return str;
}

function print_data(obj,name,levels)
{
 alert(print_data0(obj,name));
}
