(function(undefined) { /* local var and method */ var version = '0.0'; var debugLevel = 0; // 0: no message; higher means more message var canlog = true; // enable log /* object prototype */ /* public method and attribute */ /** * debug function */ $$.debug = {}; /** * set debug level * * @param level int 0=>no message; higher for more message */ $$.debug.logLevel = function(level) { debugLevel = level; } /** * log a message * * @param mode string dir|log|info|...native log mode */ $$.debug.log = function(mode, msg) { if (!canlog) return; if (debugLevel == 0) return; // Remove first argument var args = Array.prototype.slice.apply(arguments, [1]); // Prepend timestamp var dt = new Date(); var tag = dt.getHours()+":"+dt.getMinutes()+":"+dt.getSeconds()+"."+dt.getMilliseconds(); var args = Array.prototype.slice.apply(arguments, [0]); args[0] = tag + " - "; if (mode == 'dir' && typeof args[1] == 'object') { window.console.log(args[0]); window.console.dir(args[1]); return; } if(typeof window.console[mode] == 'function') { window.console[mode].apply(window.console, args); } } /* init code */ // check browser console if( !window.console ) { canlog = false; // disable log when console not present } // debug test message //$$.debug.logLevel(1); //$$.debug.log('table', $$); })();