﻿/*
* Simple jQuery logger / debugger.
* Based on: http://jquery.com/plugins/Authoring/
* See var DEBUG below for turning debugging/logging on and off.
*
* @version   20070111
* @since     2006-07-10
* @copyright Copyright (c) 2006 Glyphix Studio, Inc. http://www.glyphix.com
* @author    Brad Brizendine <brizbane@gmail.com>
* @license   MIT http://www.opensource.org/licenses/mit-license.php
* @requires  >= jQuery 1.0.3
*/
// global debug switch ... add DEBUG = true; somewhere after jquery.debug.js is loaded to turn debugging on
var DEBUG = false;
// shamelessly ripped off from http://getfirebug.com/
if (!("console" in window) || !("firebug" in console)) {
    var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
    // create the logging div
    jQuery(document).ready(
		function() {
		    $(document.body).append('<div id="DEBUG"><ol></ol></div>');
		}
	);
    // attach a function to each of the firebug methods
    window.console = {};
    for (var i = 0; i < names.length; ++i) {
        window.console[names[i]] = function(msg) { $('#DEBUG ol').append('<li>' + msg + '</li>'); }
    }
}

/*
* debug
* Simply loops thru each jquery item and logs it
*/
jQuery.fn.debug = function() {
    return this.each(function() {
        $.log(this);
    });
};

/*
* log
* Send it anything, and it will add a line to the logging console.
* If firebug is installed, it simple send the item to firebug.
* If not, it creates a string representation of the html element (if message is an object), or just uses the supplied value (if not an object).
*/
jQuery.log = function(message) {
    // only if debugging is on
    if (window.DEBUG) {

        // Developers: if you need a quick filter, do something like this.  Just don't commit it uncommented.
        //if (message.indexOf('NhgbAjax') == -1)
        //    return;

        // if no firebug, build a debug line from the actual html element if it's an object, or just send the string
        var str = message;
        if (!('firebug' in console)) {
            if (typeof (message) == 'object') {
                str = '&lt;';
                if (message.nodeName != null) {
                    str += message.nodeName.toLowerCase();
                    for (var i = 0; i < message.attributes.length; i++) {
                        str += ' ' + message.attributes[i].nodeName.toLowerCase() + '="' + message.attributes[i].nodeValue + '"';
                    }
                }
                else
                    str = message.toString();
                str += '&gt;';
            }
        }
        console.debug(str);
    }
};

//additional NHGB utils
function LogFunc() {
    if (window.DEBUG) {
        $.log(LogFunc.caller);
    }
}

function LogFuncDetailed() {
    if (window.DEBUG) {
        var caller = LogFuncDetailed.caller;
        var callerList = [];
        while (caller != null) {
            callerList.push(caller);
            caller = caller.caller;
        }
        var popped, i = 1;
        while ((popped = callerList.pop()) != null)
            $.log(i++ + ": " + popped);
    }
}