function print_r(obj,pre,child)
{
  if(pre === undefined)   pre   = false;
  if(child === undefined) child = 0;

  var n  = "\n";
  var t  = "&nbsp;&nbsp;&nbsp;&nbsp;";
  var ts = "";

  if(pre) for(var i = 0; i <= child; i++) ts += t;

  if(obj.constructor == Array || obj.constructor == Object)
  {
    if(pre && child == 0)
    {
      document.write('<pre>'+n);
      document.write('Array'+n);
      document.write('('+n);
    }
    else if(pre && child > 0)
    {
      document.write(ts+'('+n);
    }
    else
    {
      document.write('Array (');
    }

    for(var value in obj)
    {
      if(obj[value].constructor == Array|| obj[value].constructor == Object)
      {
        var newChild = child + 1;

        if(pre && child == 0)
        {
          document.write(ts+'['+value+'] => Array'+n);
        }
        else if(pre && child > 0)
        {
          document.write(ts+t+'['+value+'] => Array'+n);
          newChild++;
        }
        else
        {
          document.write(" ["+value+"] => ");
        }

        print_r(obj[value],pre,newChild);
      }
      else
      {
        if(pre && child == 0)
        {
          document.write(t+'['+value+'] => '+obj[value]+n);
        }
        else if(pre && child > 0)
       {
          document.write(ts+t+'['+value+'] => '+obj[value]+n);
        }
        else
        {
          document.write(' ['+value+'] => '+obj[value]+' ');
        }
      }
    }

    if(pre && child == 0)
    {
       document.write(') ');
       document.write('</pre>');
    }
    else if(pre && child > 0)
    {
      document.write(ts+') '+n);
    }
    else
    {
      document.write(') ');
    }
  }
}

