/**
 * print_r 
 *
 * prints an array or object into readable format.
 *
 * I actually took most of this function from:
 * http://www.phpbuilder.com/board/archive/index.php/t-10294264.html
 *
 * and modified it a little to fit my liking ( such as fiddling 
 * with the _indent and adding a 'function' case statement ).
 * 
 * @param input $input 
 * @param _indent $_indent 
 * @access public
 * @return void
 */
function print_r(input, _indent)
{
    if(typeof(_indent) == 'string') {
        var indent = _indent + _indent;
        var paren_indent = _indent;
    } else {
        var indent = '    ';
        var paren_indent = ' ';
    }
    switch(typeof(input)) {
        case 'boolean':
            var output = (input ? 'true' : 'false') + "\n";
            break;
        case 'object':
            if ( input === null ) {
                var output = "null\n";
                break;
            }
            var output = ((input.reverse) ? 'Array' : 'Object') + " (\n";
            for(var i in input) {
                output += indent + "[" + i + "] => " + print_r(input[i], indent);
            }
            output += paren_indent + ")\n";
            break;
        case 'string':
            var output = '"' + input + "\"\n";
            break;
        case 'function':
            if ( input.toString().indexOf('{') != -1 ){
                var output = input.toString().substr(0, input.toString().indexOf('{') + 1) + "}\n";
            }
            else {
                var output = input + "\n";
            }
            break;
        case 'number':
        default:
            var output = "" + input + "\n";
    }
    return output;
}

