var Debug = function()
{
    var disabled = 0;

    var messages = new Hash();
    var log = new Array();

    var _pub = {
        disableLog: function()
        {
            disabled = 1;
        },

        enableLog: function()
        {
            disabled = 0;
        },

        clear: function(key)
        {
            if(key)
            {
                messages.unset(key);
            }
            else
                messages = new Hash();
            display();
        },

        set: function(key,value)
        {
            if(key)
            {
                messages.set(key,value.toString())
                display();
            }
        },

        log: function(value)
        {
            if(!disabled)
            { 
                log.push(value);
                display();
            }
        },

        clearLog: function()
        {
            if(!disabled)
            {
                log = new Array();
                display();
            }
        },

        summarise: function(node)
        {
            var ret;
            if(!node)
                ret = 'null';
            else if(node.nodeType == 3)
            {
                ret = '"' + node.data.replace(/[\n\t ]+/g,' ').substr(0,10);
                if(node.data.length > 10)
                    ret += '...';
                ret += '"';
            }
            else
                ret = node.tagName;

            return ret;
        },
    };

    var display = function()
    {
        return;
        var debug = $('debug');

        Util.removeChildren(debug);

        messages.each(function(m){
            debug.appendChild(document.createTextNode(m.key + ':'));
            var parts = m.value.split('\n');
            parts.each(function(p){
                debug.appendChild(document.createElement('br'));
                debug.appendChild(document.createTextNode(p));
            });

            debug.appendChild(document.createElement('hr'));
        });

        log.each(function(p){
            debug.appendChild(document.createElement('br'));
            debug.appendChild(document.createTextNode(p));
        });
    };

    return _pub;
}();
