<?php
    class PHPDebug {
         
    function __construct() {
        if (!defined("LOG"))    define("LOG",1);
        if (!defined("INFO"))   define("INFO",2);
        if (!defined("WARN"))   define("WARN",3);
        if (!defined("ERROR"))  define("ERROR",4);
     
        define("NL","\r\n");
        echo '<script type="text/javascript">'.NL;
         
        /// this is for IE and other browsers w/o console
        echo 'if (!window.console) console = {};';
        echo 'console.log = console.log || function(){};';
        echo 'console.warn = console.warn || function(){};';
        echo 'console.error = console.error || function(){};';
        echo 'console.info = console.info || function(){};';
        echo 'console.debug = console.debug || function(){};';
        echo '</script>';
        /// end of IE    
    }
     
    function debug($name, $var = null, $type = LOG) {
        echo '<script type="text/javascript">'.NL;
        switch($type) {
            case LOG:
                echo 'console.log("'.$name.'");'.NL;    
            break;
            case INFO:
                echo 'console.info("'.$name.'");'.NL;    
            break;
            case WARN:
                echo 'console.warn("'.$name.'");'.NL;    
            break;
            case ERROR:
                echo 'console.error("'.$name.'");'.NL;    
            break;
        }
         
        if (!empty($var)) {
            if (is_object($var) || is_array($var)) {
                $object = json_encode($var);
                echo 'var object'.preg_replace('~[^A-Z|0-9]~i',"_",$name).' = \''.str_replace("'","\'",$object).'\';'.NL;
                echo 'var val'.preg_replace('~[^A-Z|0-9]~i',"_",$name).' = eval("(" + object'.preg_replace('~[^A-Z|0-9]~i',"_",$name).' + ")" );'.NL;
                switch($type) {
                    case LOG:
                        echo 'console.debug(val'.preg_replace('~[^A-Z|0-9]~i',"_",$name).');'.NL;    
                    break;
                    case INFO:
                        echo 'console.info(val'.preg_replace('~[^A-Z|0-9]~i',"_",$name).');'.NL;
                    break;
                    case WARN:
                        echo 'console.warn(val'.preg_replace('~[^A-Z|0-9]~i',"_",$name).');'.NL;        
                    break;
                    case ERROR:
                        echo 'console.error(val'.preg_replace('~[^A-Z|0-9]~i',"_",$name).');'.NL;    
                    break;
                }
            } else {
                switch($type) {
                    case LOG:
                        echo 'console.debug("'.str_replace('"','\\"',$var).'");'.NL;
                    break;
                    case INFO:
                        echo 'console.info("'.str_replace('"','\\"',$var).'");'.NL;
                    break;
                    case WARN:
                        echo 'console.warn("'.str_replace('"','\\"',$var).'");'.NL;    
                    break;
                    case ERROR:
                        echo 'console.error("'.str_replace('"','\\"',$var).'");'.NL;
                    break;
                }
            }
        }
        echo '</script>'.NL;
    }
    }
?>