﻿// JScript File
ILogger.Logger = null;

ILogger.LevelFatal = 0;
ILogger.LevelError = 1;
ILogger.LevelWarn = 2;
ILogger.LevelInfo = 3;
ILogger.LevelDebug = 4;
ILogger.LevelTrace = 5;

ILogger.Level = ILogger.LevelWarn;

IDebug.Enabled = false;

ILib.LoadResourceFile('jscss','ILogger','css');

function ILogger()
{
    if (ILogger.Logger != null)
        return ILogger.Logger;

    
    this.logger = document.createElement('div');
    this.logger.className = 'iwLogger';
    
    this.logger.style.display='block';
    this.logger.style.position='absolute';
    this.logger.style.overflow='scroll';
    this.logger.style.height='400px';
    this.logger.style.width='400px';
    this.logger.style.top='10px';                            
    this.logger.style.left='10px';                            
    
    ILogger.Logger = this;
}

ILogger.TimeStamp = function()
{
    var today = new Date();
    return (today.getHours()<10?"0":"")+today.getHours()+":"+
            (today.getMinutes()<10?"0":"")+today.getMinutes()+":"+
            (today.getSeconds()<10?"0":"")+today.getSeconds()+"."+
            (today.getMilliseconds()<10?"00":(today.getMilliseconds()<100?"0":""))+today.getMilliseconds();
}

ILogger.Debug = function(message,ex)
{
    if (ILogger.Logger == null)
        new ILogger();
    ILogger.Logger._debug(message,ex);        
}

ILogger.prototype._debug = function(message,ex)
{
}

IDebug.Items=0;
IDebug.init = false;

function IDebug()
{
}

IDebug._setup = function() {
var div = IDebug.Enabled ? getElement('debug') : null;
    if (!div && document.getElementsByTagName("body").length > 0) {
        div = document.createElement('div');
        div.id = 'debug';
        div.className = 'iwDebugHolder iwDragTarget';
        document.getElementsByTagName("body")[0].appendChild(div);
    }
    if (div) {
        if (!IDebug.init) {
            div.innerHTML = '';
            addClassName(div, 'iwDragTarget'); // incase holder was already in markup
            IDebug.init = document.createElement('div');
            IDebug.init.className = 'iwDrag iwDebugFrame';
            IDebug.init.innerHTML = 'Debug:';
            div.appendChild(IDebug.init);
            div.style.display = 'block';
            div.style.zIndex = 9000;
            div.style.padding = '4px';
        }
        while (IDebug.Items > 10) {
            IDebug.Items--;
            div.removeChild(div.lastChild);
        }
    }
    return div;
}

IDebug.Show = function(showHide) {
    var div = IDebug.Enabled ? getElement('debug') : null;
    if (div) {
        div.style.display = showHide ? 'block' : 'none';
    }
}

IDebug.Message = function(message)
{
    if (!IDebug.Enabled) return;
    var div = IDebug._setup();
    if (div)
    {
        log = document.createElement('div'); 
        log.innerHTML = ILogger.TimeStamp()+
                        ' : '+message;
        div.insertBefore(log,div.firstChild.nextSibling);
        IDebug.Items++;
    }
}

IDebug.ElementMessage = function(message,ele)
{
    if (!IDebug.Enabled) return;
    try {
    var div = IDebug._setup();
    if (div && ele)
    {
        log = document.createElement('div'); 
        log.innerHTML = ILogger.TimeStamp()+
                        ' : '+message+
                        ' : tag='+ele.tagName+
                        ' : id='+ele.id+
                        ' : class='+ele.className+
                        ' : top='+getElementTop(ele)+
                        ' : left='+getElementLeft(ele);
        div.insertBefore(log,div.firstChild.nextSibling);
        IDebug.Items++;
    }
    } catch (e) { alert(e.description); }
}

IDebug.EventMessage = function(message,ev)
{
    if (!IDebug.Enabled) return;
    var evt = getEvent(ev);
    var div = IDebug._setup();
    if (div)
    {
        log = document.createElement('div'); 
        log.innerHTML = ILogger.TimeStamp()+
                        ' : '+message+
                        ' : Event='+evt.type+
                        ' : ele=' + getEventElement(evt).tagName +
                        ' : type=' + typeof(getEventElement(evt)) +
                        ' : id='+getEventElement(evt).id+
                        ' : class='+getEventElement(evt).className+
                        ' : ('+evt.clientX+','+evt.clientY+')';
        div.insertBefore(log,div.firstChild.nextSibling);
        IDebug.Items++;
    }
}

IDebug.ObjectMessage = function(message,obj)
{
    if (!IDebug.Enabled) return;
    var div = IDebug._setup();
    if (div)
    {
        log = document.createElement('div'); 
        log.innerHTML = ILogger.TimeStamp()+
                        ' : '+message+
                        ' : Type='+typeof(obj)+
                        ' : ' + obj;
        div.insertBefore(log,div.firstChild.nextSibling);
        IDebug.Items++;
    }
}


