////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Logging code
var logNameSpace = new Array();

  // use below to enable specific log namespaces - off by default so we don't log each others consoles
//enableNs('default');


function enableNs(ns) {
    if (logNameSpace[ns] == undefined) {
        logNameSpace[ns] = new Array();
    }

    logNameSpace[ns]['on'] = true;
}

function log(text, options) {
    if (jsDebuggingOn == false) {
        return;
    }

    var settings = { verbose: false, ns: 'default'};

    if ( options ) {
        $.extend( settings, options );
    }

    var verbose = settings.verbose;
    var messNamespace = settings.ns;


    if (logNameSpace[messNamespace] == undefined) {
        logNameSpace[messNamespace] = new Array();
    }

    if (logNameSpace[messNamespace]['count'] == undefined) {
        logNameSpace[messNamespace]['count'] = 0;
    }

    if (logNameSpace[messNamespace]['on'] == undefined) {
        logNameSpace[messNamespace]['on'] = false;
    }


    if (typeof(console)!="undefined" && logNameSpace[messNamespace]['on'] == true) {
        logNameSpace[messNamespace]['count']++;

        var trace = printStackTrace(); // uses stacktrace.js
        var output = '';

        if ( !verbose ) {
            output += 'LOG('+messNamespace+':'+logNameSpace[messNamespace]['count']+'): ' + trace[3] + ': ' + text;
        } else {
            output += 'LOG('+messNamespace+':'+logNameSpace[messNamespace]['count']+'): ' + text + ": \n";
            output += "\t Stack Trace\n";
            for(x in trace) {
                if (x < 3) continue; // don't want to print the traces of the logging and tracing functions
                output += "\t\t " + trace[x] + "\n";
            }
        }

        console.log(output);
    } else {

    }
}
