/**
 * print_r 
 *
 * a function for printing arrays or objects
 * 
 * @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;
}
