﻿var Logger_LogEnabled = false;

function Logger_S4() {
    return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
}
function guid() {
    return (Logger_S4() + Logger_S4() + "-" + Logger_S4() + "-" + Logger_S4() + "-" + Logger_S4()
    + "-" + Logger_S4() + Logger_S4() + Logger_S4());
}

var Logger_Cid = guid();

function __Logger_Log(level, msg) {
    if (Logger_LogEnabled) {
        var method = arguments.callee.caller.caller.toString();
        method = method.substr('function '.length);
        method = method.substr(0, method.indexOf('('));

        if (method == null || method == "") {
            method = "global";
        }
        var logMessage = "[{0}] [{1}] [{2}]: {3}".format(Logger_Cid, level, method, msg);
        $("#Logger_Console_Div").append("<div>" + logMessage + "</div>");

        if (typeof (console) !== 'undefined' && console != null) {
            console.log(logMessage);
        }
    }

};


function Logger_Log(msg) {
    __Logger_Log("Debug", msg);
}

function Logger_LogInfo(msg) {
    __Logger_Log("Info", msg);
}

function Logger_LogWarn(msg) {
    __Logger_Log("Warn", msg);
}

function Logger_LogException(exception) {
    if (exception != null) {
        __Logger_Log("Fatal", exception.toString());
    }
}

//attach a div to the end, where logs can be displayed
$(document).ready(function() {
    if (Logger_LogEnabled) {
        $("body").append("<div id='Logger_Console_Div' style='width:100%;height:100px;border-top:gray solid 1px'></div>");
        $("#Logger_Console_Div").append("<div>Logging console started.</div>");
    }
});
