Minified some JS files using YUI compressor
authorDan
Sun, 11 May 2008 16:59:21 -0400
changeset 551 3acd624d4f4f
parent 550 685e839d934e
child 552 400ad5a212a8
Minified some JS files using YUI compressor
includes/clientside/firebug/firebug.css
includes/clientside/firebug/firebug.js
includes/clientside/firebug/firebugx.js
includes/clientside/firebug/src/firebug.css
includes/clientside/firebug/src/firebug.js
includes/clientside/firebug/src/firebugx.js
includes/clientside/tinymce/tiny_mce_gzip.js
includes/clientside/tinymce/tiny_mce_gzip_src.js
--- a/includes/clientside/firebug/firebug.css	Sun May 11 16:58:58 2008 -0400
+++ b/includes/clientside/firebug/firebug.css	Sun May 11 16:59:21 2008 -0400
@@ -1,209 +1,1 @@
-
-html, body {
-    margin: 0;
-    background: #FFFFFF;
-    font-family: Lucida Grande, Tahoma, sans-serif;
-    font-size: 11px;
-    overflow: hidden;
-}
-
-a {
-    text-decoration: none;
-}
-
-a:hover {
-    text-decoration: underline;
-}
-
-.toolbar {
-    height: 14px;
-    border-top: 1px solid ThreeDHighlight;
-    border-bottom: 1px solid ThreeDShadow;
-    padding: 2px 6px;
-    background: ThreeDFace;
-}
-
-.toolbarRight {
-    position: absolute;
-    top: 4px;
-    right: 6px;
-}
-
-#log {
-    overflow: auto;
-    position: absolute;
-    left: 0;
-    width: 100%;
-}
-
-#commandLine {
-    position: absolute;
-    bottom: 0;
-    left: 0;
-    width: 100%;
-    height: 18px;
-    border: none;
-    border-top: 1px solid ThreeDShadow;
-}
-
-/************************************************************************************************/
-
-.logRow {
-    position: relative;
-    border-bottom: 1px solid #D7D7D7;
-    padding: 2px 4px 1px 6px;
-    background-color: #FFFFFF;
-}
-
-.logRow-command {
-    font-family: Monaco, monospace;
-    color: blue;
-}
-
-.objectBox-null {
-    padding: 0 2px;
-    border: 1px solid #666666;
-    background-color: #888888;
-    color: #FFFFFF;
-}
-
-.objectBox-string {
-    font-family: Monaco, monospace;
-    color: red;
-    white-space: pre;
-}
-
-.objectBox-number {
-    color: #000088;
-}
-
-.objectBox-function {
-    font-family: Monaco, monospace;
-    color: DarkGreen;
-}
-
-.objectBox-object {
-    color: DarkGreen;
-    font-weight: bold;
-}
-
-/************************************************************************************************/
-
-.logRow-info,
-.logRow-error,
-.logRow-warning {
-    background: #FFFFFF no-repeat 2px 2px;
-    padding-left: 20px;
-    padding-bottom: 3px;
-}
-
-.logRow-info {
-    background-image: url(infoIcon.png);
-}
-
-.logRow-warning {
-    background-color: cyan;
-    background-image: url(warningIcon.png);
-}
-
-.logRow-error {
-    background-color: LightYellow;
-    background-image: url(errorIcon.png);
-}
-
-.errorMessage {
-    vertical-align: top;
-    color: #FF0000;
-}
-
-.objectBox-sourceLink {
-    position: absolute;
-    right: 4px;
-    top: 2px;
-    padding-left: 8px;
-    font-family: Lucida Grande, sans-serif;
-    font-weight: bold;
-    color: #0000FF;
-}
-
-/************************************************************************************************/
-
-.logRow-group {
-    background: #EEEEEE;
-    border-bottom: none;
-}
-
-.logGroup {
-    background: #EEEEEE;
-}
-
-.logGroupBox {
-    margin-left: 24px;
-    border-top: 1px solid #D7D7D7;
-    border-left: 1px solid #D7D7D7;
-}
-
-/************************************************************************************************/
-
-.selectorTag,
-.selectorId,
-.selectorClass {
-    font-family: Monaco, monospace;
-    font-weight: normal;
-}
-
-.selectorTag {
-    color: #0000FF;
-}
-
-.selectorId {
-    color: DarkBlue;
-}
-
-.selectorClass {
-    color: red;
-}
-
-/************************************************************************************************/
-
-.objectBox-element {
-    font-family: Monaco, monospace;
-    color: #000088;
-}
-
-.nodeChildren {
-    margin-left: 16px;
-}
-
-.nodeTag {
-    color: blue;
-}
-
-.nodeValue {
-    color: #FF0000;
-    font-weight: normal;
-}
-
-.nodeText,
-.nodeComment {
-    margin: 0 2px;
-    vertical-align: top;
-}
-
-.nodeText {
-    color: #333333;
-}
-
-.nodeComment {
-    color: DarkGreen;
-}
-
-/************************************************************************************************/
-
-.propertyNameCell {
-    vertical-align: top;
-}
-
-.propertyName {
-    font-weight: bold;
-}
+html,body{margin:0;background:#FFF;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;overflow:hidden;}a{text-decoration:none;}a:hover{text-decoration:underline;}.toolbar{height:14px;border-top:1px solid ThreeDHighlight;border-bottom:1px solid ThreeDShadow;padding:2px 6px;background:ThreeDFace;}.toolbarRight{position:absolute;top:4px;right:6px;}#log{overflow:auto;position:absolute;left:0;width:100%;}#commandLine{position:absolute;bottom:0;left:0;width:100%;height:18px;border:none;border-top:1px solid ThreeDShadow;}.logRow{position:relative;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFF;}.logRow-command{font-family:Monaco,monospace;color:blue;}.objectBox-null{padding:0 2px;border:1px solid #666;background-color:#888;color:#FFF;}.objectBox-string{font-family:Monaco,monospace;color:red;white-space:pre;}.objectBox-number{color:#008;}.objectBox-function{font-family:Monaco,monospace;color:DarkGreen;}.objectBox-object{color:DarkGreen;font-weight:bold;}.logRow-info,.logRow-error,.logRow-warning{background:#FFF no-repeat 2px 2px;padding-left:20px;padding-bottom:3px;}.logRow-info{background-image:url(infoIcon.png);}.logRow-warning{background-color:cyan;background-image:url(warningIcon.png);}.logRow-error{background-color:LightYellow;background-image:url(errorIcon.png);}.errorMessage{vertical-align:top;color:#F00;}.objectBox-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#00F;}.logRow-group{background:#EEE;border-bottom:none;}.logGroup{background:#EEE;}.logGroupBox{margin-left:24px;border-top:1px solid #D7D7D7;border-left:1px solid #D7D7D7;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#00F;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.objectBox-element{font-family:Monaco,monospace;color:#008;}.nodeChildren{margin-left:16px;}.nodeTag{color:blue;}.nodeValue{color:#F00;font-weight:normal;}.nodeText,.nodeComment{margin:0 2px;vertical-align:top;}.nodeText{color:#333;}.nodeComment{color:DarkGreen;}.propertyNameCell{vertical-align:top;}.propertyName{font-weight:bold;}
\ No newline at end of file
--- a/includes/clientside/firebug/firebug.js	Sun May 11 16:58:58 2008 -0400
+++ b/includes/clientside/firebug/firebug.js	Sun May 11 16:59:21 2008 -0400
@@ -1,672 +1,1 @@
-
-if (!("console" in window) || !("firebug" in console)) {
-(function()
-{
-    window.console = 
-    {
-        log: function()
-        {
-            logFormatted(arguments, "");
-        },
-        
-        debug: function()
-        {
-            logFormatted(arguments, "debug");
-        },
-        
-        info: function()
-        {
-            logFormatted(arguments, "info");
-        },
-        
-        warn: function()
-        {
-            logFormatted(arguments, "warning");
-        },
-        
-        error: function()
-        {
-            logFormatted(arguments, "error");
-        },
-        
-        assert: function(truth, message)
-        {
-            if (!truth)
-            {
-                var args = [];
-                for (var i = 1; i < arguments.length; ++i)
-                    args.push(arguments[i]);
-                
-                logFormatted(args.length ? args : ["Assertion Failure"], "error");
-                throw message ? message : "Assertion Failure";
-            }
-        },
-        
-        dir: function(object)
-        {
-            var html = [];
-                        
-            var pairs = [];
-            for (var name in object)
-            {
-                try
-                {
-                    pairs.push([name, object[name]]);
-                }
-                catch (exc)
-                {
-                }
-            }
-            
-            pairs.sort(function(a, b) { return a[0] < b[0] ? -1 : 1; });
-            
-            html.push('<table>');
-            for (var i = 0; i < pairs.length; ++i)
-            {
-                var name = pairs[i][0], value = pairs[i][1];
-                
-                html.push('<tr>', 
-                '<td class="propertyNameCell"><span class="propertyName">',
-                    escapeHTML(name), '</span></td>', '<td><span class="propertyValue">');
-                appendObject(value, html);
-                html.push('</span></td></tr>');
-            }
-            html.push('</table>');
-            
-            logRow(html, "dir");
-        },
-        
-        dirxml: function(node)
-        {
-            var html = [];
-            
-            appendNode(node, html);
-            logRow(html, "dirxml");
-        },
-        
-        group: function()
-        {
-            logRow(arguments, "group", pushGroup);
-        },
-        
-        groupEnd: function()
-        {
-            logRow(arguments, "", popGroup);
-        },
-        
-        time: function(name)
-        {
-            timeMap[name] = (new Date()).getTime();
-        },
-        
-        timeEnd: function(name)
-        {
-            if (name in timeMap)
-            {
-                var delta = (new Date()).getTime() - timeMap[name];
-                logFormatted([name+ ":", delta+"ms"]);
-                delete timeMap[name];
-            }
-        },
-        
-        count: function()
-        {
-            this.warn(["count() not supported."]);
-        },
-        
-        trace: function()
-        {
-            this.warn(["trace() not supported."]);
-        },
-        
-        profile: function()
-        {
-            this.warn(["profile() not supported."]);
-        },
-        
-        profileEnd: function()
-        {
-        },
-        
-        clear: function()
-        {
-            consoleBody.innerHTML = "";
-        },
-
-        open: function()
-        {
-            toggleConsole(true);
-        },
-        
-        close: function()
-        {
-            if (frameVisible)
-                toggleConsole();
-        }
-    };
- 
-    // ********************************************************************************************
-       
-    var consoleFrame = null;
-    var consoleBody = null;
-    var commandLine = null;
-    
-    var frameVisible = false;
-    var messageQueue = [];
-    var groupStack = [];
-    var timeMap = {};
-    
-    var clPrefix = ">>> ";
-    
-    var isFirefox = navigator.userAgent.indexOf("Firefox") != -1;
-    var isIE = navigator.userAgent.indexOf("MSIE") != -1;
-    var isOpera = navigator.userAgent.indexOf("Opera") != -1;
-    var isSafari = navigator.userAgent.indexOf("AppleWebKit") != -1;
-
-    // ********************************************************************************************
-
-    function toggleConsole(forceOpen)
-    {
-        frameVisible = forceOpen || !frameVisible;
-        if (consoleFrame)
-            consoleFrame.style.visibility = frameVisible ? "visible" : "hidden";
-        else
-            waitForBody();
-    }
-
-    function focusCommandLine()
-    {
-        toggleConsole(true);
-        if (commandLine)
-            commandLine.focus();
-    }
-
-    function waitForBody()
-    {
-        if (document.body)
-            createFrame();
-        else
-            setTimeout(waitForBody, 200);
-    }    
-
-    function createFrame()
-    {
-        if (consoleFrame)
-            return;
-        
-        window.onFirebugReady = function(doc)
-        {
-            window.onFirebugReady = null;
-
-            var toolbar = doc.getElementById("toolbar");
-            toolbar.onmousedown = onSplitterMouseDown;
-
-            commandLine = doc.getElementById("commandLine");
-            addEvent(commandLine, "keydown", onCommandLineKeyDown);
-
-            addEvent(doc, isIE || isSafari ? "keydown" : "keypress", onKeyDown);
-            
-            consoleBody = doc.getElementById("log");
-            layout();
-            flush();
-        }
-
-        var baseURL = getFirebugURL();
-
-        consoleFrame = document.createElement("iframe");
-        consoleFrame.setAttribute("src", baseURL+"/firebug.html");
-        consoleFrame.setAttribute("frameBorder", "0");
-        consoleFrame.style.visibility = (frameVisible ? "visible" : "hidden");    
-        consoleFrame.style.zIndex = "2147483647";
-        consoleFrame.style.position = "fixed";
-        consoleFrame.style.width = "100%";
-        consoleFrame.style.left = "0";
-        consoleFrame.style.bottom = "0";
-        consoleFrame.style.height = "200px";
-        document.body.appendChild(consoleFrame);
-    }
-    
-    function getFirebugURL()
-    {
-        var scripts = document.getElementsByTagName("script");
-        for (var i = 0; i < scripts.length; ++i)
-        {
-            if (scripts[i].src.indexOf("firebug.js") != -1)
-            {
-                var lastSlash = scripts[i].src.lastIndexOf("/");
-                return scripts[i].src.substr(0, lastSlash);
-            }
-        }
-    }
-    
-    function evalCommandLine()
-    {
-        var text = commandLine.value;
-        commandLine.value = "";
-
-        logRow([clPrefix, text], "command");
-        
-        var value;
-        try
-        {
-            value = eval(text);
-        }
-        catch (exc)
-        {
-        }
-
-        console.log(value);
-    }
-    
-    function layout()
-    {
-        var toolbar = consoleBody.ownerDocument.getElementById("toolbar");
-        var height = consoleFrame.offsetHeight - (toolbar.offsetHeight + commandLine.offsetHeight);
-        consoleBody.style.top = toolbar.offsetHeight + "px";
-        consoleBody.style.height = height + "px";
-        
-        commandLine.style.top = (consoleFrame.offsetHeight - commandLine.offsetHeight) + "px";
-    }
-    
-    function logRow(message, className, handler)
-    {
-        if (consoleBody)
-            writeMessage(message, className, handler);
-        else
-        {
-            messageQueue.push([message, className, handler]);
-            waitForBody();
-        }
-    }
-    
-    function flush()
-    {
-        var queue = messageQueue;
-        messageQueue = [];
-        
-        for (var i = 0; i < queue.length; ++i)
-            writeMessage(queue[i][0], queue[i][1], queue[i][2]);
-    }
-
-    function writeMessage(message, className, handler)
-    {
-        var isScrolledToBottom =
-            consoleBody.scrollTop + consoleBody.offsetHeight >= consoleBody.scrollHeight;
-
-        if (!handler)
-            handler = writeRow;
-        
-        handler(message, className);
-        
-        if (isScrolledToBottom)
-            consoleBody.scrollTop = consoleBody.scrollHeight - consoleBody.offsetHeight;
-    }
-    
-    function appendRow(row)
-    {
-        var container = groupStack.length ? groupStack[groupStack.length-1] : consoleBody;
-        container.appendChild(row);
-    }
-
-    function writeRow(message, className)
-    {
-        var row = consoleBody.ownerDocument.createElement("div");
-        row.className = "logRow" + (className ? " logRow-"+className : "");
-        row.innerHTML = message.join("");
-        appendRow(row);
-    }
-
-    function pushGroup(message, className)
-    {
-        logFormatted(message, className);
-
-        var groupRow = consoleBody.ownerDocument.createElement("div");
-        groupRow.className = "logGroup";
-        var groupRowBox = consoleBody.ownerDocument.createElement("div");
-        groupRowBox.className = "logGroupBox";
-        groupRow.appendChild(groupRowBox);
-        appendRow(groupRowBox);
-        groupStack.push(groupRowBox);
-    }
-
-    function popGroup()
-    {
-        groupStack.pop();
-    }
-    
-    // ********************************************************************************************
-
-    function logFormatted(objects, className)
-    {
-        var html = [];
-
-        var format = objects[0];
-        var objIndex = 0;
-
-        if (typeof(format) != "string")
-        {
-            format = "";
-            objIndex = -1;
-        }
-
-        var parts = parseFormat(format);
-        for (var i = 0; i < parts.length; ++i)
-        {
-            var part = parts[i];
-            if (part && typeof(part) == "object")
-            {
-                var object = objects[++objIndex];
-                part.appender(object, html);
-            }
-            else
-                appendText(part, html);
-        }
-
-        for (var i = objIndex+1; i < objects.length; ++i)
-        {
-            appendText(" ", html);
-            
-            var object = objects[i];
-            if (typeof(object) == "string")
-                appendText(object, html);
-            else
-                appendObject(object, html);
-        }
-        
-        logRow(html, className);
-    }
-
-    function parseFormat(format)
-    {
-        var parts = [];
-
-        var reg = /((^%|[^\\]%)(\d+)?(\.)([a-zA-Z]))|((^%|[^\\]%)([a-zA-Z]))/;    
-        var appenderMap = {s: appendText, d: appendInteger, i: appendInteger, f: appendFloat};
-
-        for (var m = reg.exec(format); m; m = reg.exec(format))
-        {
-            var type = m[8] ? m[8] : m[5];
-            var appender = type in appenderMap ? appenderMap[type] : appendObject;
-            var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0);
-
-            parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1));
-            parts.push({appender: appender, precision: precision});
-
-            format = format.substr(m.index+m[0].length);
-        }
-
-        parts.push(format);
-
-        return parts;
-    }
-
-    function escapeHTML(value)
-    {
-        function replaceChars(ch)
-        {
-            switch (ch)
-            {
-                case "<":
-                    return "&lt;";
-                case ">":
-                    return "&gt;";
-                case "&":
-                    return "&amp;";
-                case "'":
-                    return "&#39;";
-                case '"':
-                    return "&quot;";
-            }
-            return "?";
-        };
-        return String(value).replace(/[<>&"']/g, replaceChars);
-    }
-
-    function objectToString(object)
-    {
-        try
-        {
-            return object+"";
-        }
-        catch (exc)
-        {
-            return null;
-        }
-    }
-
-    // ********************************************************************************************
-
-    function appendText(object, html)
-    {
-        html.push(escapeHTML(objectToString(object)));
-    }
-
-    function appendNull(object, html)
-    {
-        html.push('<span class="objectBox-null">', escapeHTML(objectToString(object)), '</span>');
-    }
-
-    function appendString(object, html)
-    {
-        html.push('<span class="objectBox-string">&quot;', escapeHTML(objectToString(object)),
-            '&quot;</span>');
-    }
-
-    function appendInteger(object, html)
-    {
-        html.push('<span class="objectBox-number">', escapeHTML(objectToString(object)), '</span>');
-    }
-
-    function appendFloat(object, html)
-    {
-        html.push('<span class="objectBox-number">', escapeHTML(objectToString(object)), '</span>');
-    }
-
-    function appendFunction(object, html)
-    {
-        var reName = /function ?(.*?)\(/;
-        var m = reName.exec(objectToString(object));
-        var name = m ? m[1] : "function";
-        html.push('<span class="objectBox-function">', escapeHTML(name), '()</span>');
-    }
-    
-    function appendObject(object, html)
-    {
-        try
-        {
-            if (object == undefined)
-                appendNull("undefined", html);
-            else if (object == null)
-                appendNull("null", html);
-            else if (typeof object == "string")
-                appendString(object, html);
-            else if (typeof object == "number")
-                appendInteger(object, html);
-            else if (typeof object == "function")
-                appendFunction(object, html);
-            else if (object.nodeType == 1)
-                appendSelector(object, html);
-            else if (typeof object == "object")
-                appendObjectFormatted(object, html);
-            else
-                appendText(object, html);
-        }
-        catch (exc)
-        {
-        }
-    }
-        
-    function appendObjectFormatted(object, html)
-    {
-        var text = objectToString(object);
-        var reObject = /\[object (.*?)\]/;
-
-        var m = reObject.exec(text);
-        html.push('<span class="objectBox-object">', m ? m[1] : text, '</span>')
-    }
-    
-    function appendSelector(object, html)
-    {
-        html.push('<span class="objectBox-selector">');
-
-        html.push('<span class="selectorTag">', escapeHTML(object.nodeName.toLowerCase()), '</span>');
-        if (object.id)
-            html.push('<span class="selectorId">#', escapeHTML(object.id), '</span>');
-        if (object.className)
-            html.push('<span class="selectorClass">.', escapeHTML(object.className), '</span>');
-
-        html.push('</span>');
-    }
-
-    function appendNode(node, html)
-    {
-        if (node.nodeType == 1)
-        {
-            html.push(
-                '<div class="objectBox-element">',
-                    '&lt;<span class="nodeTag">', node.nodeName.toLowerCase(), '</span>');
-
-            for (var i = 0; i < node.attributes.length; ++i)
-            {
-                var attr = node.attributes[i];
-                if (!attr.specified)
-                    continue;
-                
-                html.push('&nbsp;<span class="nodeName">', attr.nodeName.toLowerCase(),
-                    '</span>=&quot;<span class="nodeValue">', escapeHTML(attr.nodeValue),
-                    '</span>&quot;')
-            }
-
-            if (node.firstChild)
-            {
-                html.push('&gt;</div><div class="nodeChildren">');
-
-                for (var child = node.firstChild; child; child = child.nextSibling)
-                    appendNode(child, html);
-                    
-                html.push('</div><div class="objectBox-element">&lt;/<span class="nodeTag">', 
-                    node.nodeName.toLowerCase(), '&gt;</span></div>');
-            }
-            else
-                html.push('/&gt;</div>');
-        }
-        else if (node.nodeType == 3)
-        {
-            html.push('<div class="nodeText">', escapeHTML(node.nodeValue),
-                '</div>');
-        }
-    }
-
-    // ********************************************************************************************
-    
-    function addEvent(object, name, handler)
-    {
-        if (document.all)
-            object.attachEvent("on"+name, handler);
-        else
-            object.addEventListener(name, handler, false);
-    }
-    
-    function removeEvent(object, name, handler)
-    {
-        if (document.all)
-            object.detachEvent("on"+name, handler);
-        else
-            object.removeEventListener(name, handler, false);
-    }
-    
-    function cancelEvent(event)
-    {
-        if (document.all)
-            event.cancelBubble = true;
-        else
-            event.stopPropagation();        
-    }
-
-    function onError(msg, href, lineNo)
-    {
-        var html = [];
-        
-        var lastSlash = href.lastIndexOf("/");
-        var fileName = lastSlash == -1 ? href : href.substr(lastSlash+1);
-        
-        html.push(
-            '<span class="errorMessage">', msg, '</span>', 
-            '<div class="objectBox-sourceLink">', fileName, ' (line ', lineNo, ')</div>'
-        );
-        
-        logRow(html, "error");
-    };
-
-    function onKeyDown(event)
-    {
-        if (event.keyCode == 123)
-            toggleConsole();
-        else if ((event.keyCode == 108 || event.keyCode == 76) && event.shiftKey
-                 && (event.metaKey || event.ctrlKey))
-            focusCommandLine();
-        else
-            return;
-        
-        cancelEvent(event);
-    }
-
-    function onSplitterMouseDown(event)
-    {
-        if (isSafari || isOpera)
-            return;
-        
-        addEvent(document, "mousemove", onSplitterMouseMove);
-        addEvent(document, "mouseup", onSplitterMouseUp);
-
-        for (var i = 0; i < frames.length; ++i)
-        {
-            addEvent(frames[i].document, "mousemove", onSplitterMouseMove);
-            addEvent(frames[i].document, "mouseup", onSplitterMouseUp);
-        }
-    }
-    
-    function onSplitterMouseMove(event)
-    {
-        var win = document.all
-            ? event.srcElement.ownerDocument.parentWindow
-            : event.target.ownerDocument.defaultView;
-
-        var clientY = event.clientY;
-        if (win != win.parent)
-            clientY += win.frameElement ? win.frameElement.offsetTop : 0;
-        
-        var height = consoleFrame.offsetTop + consoleFrame.clientHeight;
-        var y = height - clientY;
-        
-        consoleFrame.style.height = y + "px";
-        layout();
-    }
-    
-    function onSplitterMouseUp(event)
-    {
-        removeEvent(document, "mousemove", onSplitterMouseMove);
-        removeEvent(document, "mouseup", onSplitterMouseUp);
-
-        for (var i = 0; i < frames.length; ++i)
-        {
-            removeEvent(frames[i].document, "mousemove", onSplitterMouseMove);
-            removeEvent(frames[i].document, "mouseup", onSplitterMouseUp);
-        }
-    }
-    
-    function onCommandLineKeyDown(event)
-    {
-        if (event.keyCode == 13)
-            evalCommandLine();
-        else if (event.keyCode == 27)
-            commandLine.value = "";
-    }
-    
-    window.onerror = onError;
-    addEvent(document, isIE || isSafari ? "keydown" : "keypress", onKeyDown);
-    
-    if (document.documentElement.getAttribute("debug") == "true")
-        toggleConsole(true);
-})();
-}
+if(!("console" in window)||!("firebug" in console)){(function(){window.console={log:function(){logFormatted(arguments,"")},debug:function(){logFormatted(arguments,"debug")},info:function(){logFormatted(arguments,"info")},warn:function(){logFormatted(arguments,"warning")},error:function(){logFormatted(arguments,"error")},assert:function(truth,message){if(!truth){var args=[];for(var i=1;i<arguments.length;++i){args.push(arguments[i])}logFormatted(args.length?args:["Assertion Failure"],"error");throw message?message:"Assertion Failure"}},dir:function(object){var html=[];var pairs=[];for(var name in object){try{pairs.push([name,object[name]])}catch(exc){}}pairs.sort(function(a,b){return a[0]<b[0]?-1:1});html.push("<table>");for(var i=0;i<pairs.length;++i){var name=pairs[i][0],value=pairs[i][1];html.push("<tr>",'<td class="propertyNameCell"><span class="propertyName">',escapeHTML(name),"</span></td>",'<td><span class="propertyValue">');appendObject(value,html);html.push("</span></td></tr>")}html.push("</table>");logRow(html,"dir")},dirxml:function(node){var html=[];appendNode(node,html);logRow(html,"dirxml")},group:function(){logRow(arguments,"group",pushGroup)},groupEnd:function(){logRow(arguments,"",popGroup)},time:function(name){timeMap[name]=(new Date()).getTime()},timeEnd:function(name){if(name in timeMap){var delta=(new Date()).getTime()-timeMap[name];logFormatted([name+":",delta+"ms"]);delete timeMap[name]}},count:function(){this.warn(["count() not supported."])},trace:function(){this.warn(["trace() not supported."])},profile:function(){this.warn(["profile() not supported."])},profileEnd:function(){},clear:function(){consoleBody.innerHTML=""},open:function(){toggleConsole(true)},close:function(){if(frameVisible){toggleConsole()}}};var consoleFrame=null;var consoleBody=null;var commandLine=null;var frameVisible=false;var messageQueue=[];var groupStack=[];var timeMap={};var clPrefix=">>> ";var isFirefox=navigator.userAgent.indexOf("Firefox")!=-1;var isIE=navigator.userAgent.indexOf("MSIE")!=-1;var isOpera=navigator.userAgent.indexOf("Opera")!=-1;var isSafari=navigator.userAgent.indexOf("AppleWebKit")!=-1;function toggleConsole(forceOpen){frameVisible=forceOpen||!frameVisible;if(consoleFrame){consoleFrame.style.visibility=frameVisible?"visible":"hidden"}else{waitForBody()}}function focusCommandLine(){toggleConsole(true);if(commandLine){commandLine.focus()}}function waitForBody(){if(document.body){createFrame()}else{setTimeout(waitForBody,200)}}function createFrame(){if(consoleFrame){return }window.onFirebugReady=function(doc){window.onFirebugReady=null;var toolbar=doc.getElementById("toolbar");toolbar.onmousedown=onSplitterMouseDown;commandLine=doc.getElementById("commandLine");addEvent(commandLine,"keydown",onCommandLineKeyDown);addEvent(doc,isIE||isSafari?"keydown":"keypress",onKeyDown);consoleBody=doc.getElementById("log");layout();flush()};var baseURL=getFirebugURL();consoleFrame=document.createElement("iframe");consoleFrame.setAttribute("src",baseURL+"/firebug.html");consoleFrame.setAttribute("frameBorder","0");consoleFrame.style.visibility=(frameVisible?"visible":"hidden");consoleFrame.style.zIndex="2147483647";consoleFrame.style.position="fixed";consoleFrame.style.width="100%";consoleFrame.style.left="0";consoleFrame.style.bottom="0";consoleFrame.style.height="200px";document.body.appendChild(consoleFrame)}function getFirebugURL(){var scripts=document.getElementsByTagName("script");for(var i=0;i<scripts.length;++i){if(scripts[i].src.indexOf("firebug.js")!=-1){var lastSlash=scripts[i].src.lastIndexOf("/");return scripts[i].src.substr(0,lastSlash)}}}function evalCommandLine(){var text=commandLine.value;commandLine.value="";logRow([clPrefix,text],"command");var value;try{value=eval(text)}catch(exc){}console.log(value)}function layout(){var toolbar=consoleBody.ownerDocument.getElementById("toolbar");var height=consoleFrame.offsetHeight-(toolbar.offsetHeight+commandLine.offsetHeight);consoleBody.style.top=toolbar.offsetHeight+"px";consoleBody.style.height=height+"px";commandLine.style.top=(consoleFrame.offsetHeight-commandLine.offsetHeight)+"px"}function logRow(message,className,handler){if(consoleBody){writeMessage(message,className,handler)}else{messageQueue.push([message,className,handler]);waitForBody()}}function flush(){var queue=messageQueue;messageQueue=[];for(var i=0;i<queue.length;++i){writeMessage(queue[i][0],queue[i][1],queue[i][2])}}function writeMessage(message,className,handler){var isScrolledToBottom=consoleBody.scrollTop+consoleBody.offsetHeight>=consoleBody.scrollHeight;if(!handler){handler=writeRow}handler(message,className);if(isScrolledToBottom){consoleBody.scrollTop=consoleBody.scrollHeight-consoleBody.offsetHeight}}function appendRow(row){var container=groupStack.length?groupStack[groupStack.length-1]:consoleBody;container.appendChild(row)}function writeRow(message,className){var row=consoleBody.ownerDocument.createElement("div");row.className="logRow"+(className?" logRow-"+className:"");row.innerHTML=message.join("");appendRow(row)}function pushGroup(message,className){logFormatted(message,className);var groupRow=consoleBody.ownerDocument.createElement("div");groupRow.className="logGroup";var groupRowBox=consoleBody.ownerDocument.createElement("div");groupRowBox.className="logGroupBox";groupRow.appendChild(groupRowBox);appendRow(groupRowBox);groupStack.push(groupRowBox)}function popGroup(){groupStack.pop()}function logFormatted(objects,className){var html=[];var format=objects[0];var objIndex=0;if(typeof (format)!="string"){format="";objIndex=-1}var parts=parseFormat(format);for(var i=0;i<parts.length;++i){var part=parts[i];if(part&&typeof (part)=="object"){var object=objects[++objIndex];part.appender(object,html)}else{appendText(part,html)}}for(var i=objIndex+1;i<objects.length;++i){appendText(" ",html);var object=objects[i];if(typeof (object)=="string"){appendText(object,html)}else{appendObject(object,html)}}logRow(html,className)}function parseFormat(format){var parts=[];var reg=/((^%|[^\\]%)(\d+)?(\.)([a-zA-Z]))|((^%|[^\\]%)([a-zA-Z]))/;var appenderMap={s:appendText,d:appendInteger,i:appendInteger,f:appendFloat};for(var m=reg.exec(format);m;m=reg.exec(format)){var type=m[8]?m[8]:m[5];var appender=type in appenderMap?appenderMap[type]:appendObject;var precision=m[3]?parseInt(m[3]):(m[4]=="."?-1:0);parts.push(format.substr(0,m[0][0]=="%"?m.index:m.index+1));parts.push({appender:appender,precision:precision});format=format.substr(m.index+m[0].length)}parts.push(format);return parts}function escapeHTML(value){function replaceChars(ch){switch(ch){case"<":return"&lt;";case">":return"&gt;";case"&":return"&amp;";case"'":return"&#39;";case'"':return"&quot;"}return"?"}return String(value).replace(/[<>&"']/g,replaceChars)}function objectToString(object){try{return object+""}catch(exc){return null}}function appendText(object,html){html.push(escapeHTML(objectToString(object)))}function appendNull(object,html){html.push('<span class="objectBox-null">',escapeHTML(objectToString(object)),"</span>")}function appendString(object,html){html.push('<span class="objectBox-string">&quot;',escapeHTML(objectToString(object)),"&quot;</span>")}function appendInteger(object,html){html.push('<span class="objectBox-number">',escapeHTML(objectToString(object)),"</span>")}function appendFloat(object,html){html.push('<span class="objectBox-number">',escapeHTML(objectToString(object)),"</span>")}function appendFunction(object,html){var reName=/function ?(.*?)\(/;var m=reName.exec(objectToString(object));var name=m?m[1]:"function";html.push('<span class="objectBox-function">',escapeHTML(name),"()</span>")}function appendObject(object,html){try{if(object==undefined){appendNull("undefined",html)}else{if(object==null){appendNull("null",html)}else{if(typeof object=="string"){appendString(object,html)}else{if(typeof object=="number"){appendInteger(object,html)}else{if(typeof object=="function"){appendFunction(object,html)}else{if(object.nodeType==1){appendSelector(object,html)}else{if(typeof object=="object"){appendObjectFormatted(object,html)}else{appendText(object,html)}}}}}}}}catch(exc){}}function appendObjectFormatted(object,html){var text=objectToString(object);var reObject=/\[object (.*?)\]/;var m=reObject.exec(text);html.push('<span class="objectBox-object">',m?m[1]:text,"</span>")}function appendSelector(object,html){html.push('<span class="objectBox-selector">');html.push('<span class="selectorTag">',escapeHTML(object.nodeName.toLowerCase()),"</span>");if(object.id){html.push('<span class="selectorId">#',escapeHTML(object.id),"</span>")}if(object.className){html.push('<span class="selectorClass">.',escapeHTML(object.className),"</span>")}html.push("</span>")}function appendNode(node,html){if(node.nodeType==1){html.push('<div class="objectBox-element">','&lt;<span class="nodeTag">',node.nodeName.toLowerCase(),"</span>");for(var i=0;i<node.attributes.length;++i){var attr=node.attributes[i];if(!attr.specified){continue}html.push('&nbsp;<span class="nodeName">',attr.nodeName.toLowerCase(),'</span>=&quot;<span class="nodeValue">',escapeHTML(attr.nodeValue),"</span>&quot;")}if(node.firstChild){html.push('&gt;</div><div class="nodeChildren">');for(var child=node.firstChild;child;child=child.nextSibling){appendNode(child,html)}html.push('</div><div class="objectBox-element">&lt;/<span class="nodeTag">',node.nodeName.toLowerCase(),"&gt;</span></div>")}else{html.push("/&gt;</div>")}}else{if(node.nodeType==3){html.push('<div class="nodeText">',escapeHTML(node.nodeValue),"</div>")}}}function addEvent(object,name,handler){if(document.all){object.attachEvent("on"+name,handler)}else{object.addEventListener(name,handler,false)}}function removeEvent(object,name,handler){if(document.all){object.detachEvent("on"+name,handler)}else{object.removeEventListener(name,handler,false)}}function cancelEvent(event){if(document.all){event.cancelBubble=true}else{event.stopPropagation()}}function onError(msg,href,lineNo){var html=[];var lastSlash=href.lastIndexOf("/");var fileName=lastSlash==-1?href:href.substr(lastSlash+1);html.push('<span class="errorMessage">',msg,"</span>",'<div class="objectBox-sourceLink">',fileName," (line ",lineNo,")</div>");logRow(html,"error")}function onKeyDown(event){if(event.keyCode==123){toggleConsole()}else{if((event.keyCode==108||event.keyCode==76)&&event.shiftKey&&(event.metaKey||event.ctrlKey)){focusCommandLine()}else{return }}cancelEvent(event)}function onSplitterMouseDown(event){if(isSafari||isOpera){return }addEvent(document,"mousemove",onSplitterMouseMove);addEvent(document,"mouseup",onSplitterMouseUp);for(var i=0;i<frames.length;++i){addEvent(frames[i].document,"mousemove",onSplitterMouseMove);addEvent(frames[i].document,"mouseup",onSplitterMouseUp)}}function onSplitterMouseMove(event){var win=document.all?event.srcElement.ownerDocument.parentWindow:event.target.ownerDocument.defaultView;var clientY=event.clientY;if(win!=win.parent){clientY+=win.frameElement?win.frameElement.offsetTop:0}var height=consoleFrame.offsetTop+consoleFrame.clientHeight;var y=height-clientY;consoleFrame.style.height=y+"px";layout()}function onSplitterMouseUp(event){removeEvent(document,"mousemove",onSplitterMouseMove);removeEvent(document,"mouseup",onSplitterMouseUp);for(var i=0;i<frames.length;++i){removeEvent(frames[i].document,"mousemove",onSplitterMouseMove);removeEvent(frames[i].document,"mouseup",onSplitterMouseUp)}}function onCommandLineKeyDown(event){if(event.keyCode==13){evalCommandLine()}else{if(event.keyCode==27){commandLine.value=""}}}window.onerror=onError;addEvent(document,isIE||isSafari?"keydown":"keypress",onKeyDown);if(document.documentElement.getAttribute("debug")=="true"){toggleConsole(true)}})()};
\ No newline at end of file
--- a/includes/clientside/firebug/firebugx.js	Sun May 11 16:58:58 2008 -0400
+++ b/includes/clientside/firebug/firebugx.js	Sun May 11 16:59:21 2008 -0400
@@ -1,10 +1,1 @@
-
-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"];
-
-    window.console = {};
-    for (var i = 0; i < names.length; ++i)
-        window.console[names[i]] = function() {}
-}
\ No newline at end of file
+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"];window.console={};for(var i=0;i<names.length;++i){window.console[names[i]]=function(){}}};
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/includes/clientside/firebug/src/firebug.css	Sun May 11 16:59:21 2008 -0400
@@ -0,0 +1,209 @@
+
+html, body {
+    margin: 0;
+    background: #FFFFFF;
+    font-family: Lucida Grande, Tahoma, sans-serif;
+    font-size: 11px;
+    overflow: hidden;
+}
+
+a {
+    text-decoration: none;
+}
+
+a:hover {
+    text-decoration: underline;
+}
+
+.toolbar {
+    height: 14px;
+    border-top: 1px solid ThreeDHighlight;
+    border-bottom: 1px solid ThreeDShadow;
+    padding: 2px 6px;
+    background: ThreeDFace;
+}
+
+.toolbarRight {
+    position: absolute;
+    top: 4px;
+    right: 6px;
+}
+
+#log {
+    overflow: auto;
+    position: absolute;
+    left: 0;
+    width: 100%;
+}
+
+#commandLine {
+    position: absolute;
+    bottom: 0;
+    left: 0;
+    width: 100%;
+    height: 18px;
+    border: none;
+    border-top: 1px solid ThreeDShadow;
+}
+
+/************************************************************************************************/
+
+.logRow {
+    position: relative;
+    border-bottom: 1px solid #D7D7D7;
+    padding: 2px 4px 1px 6px;
+    background-color: #FFFFFF;
+}
+
+.logRow-command {
+    font-family: Monaco, monospace;
+    color: blue;
+}
+
+.objectBox-null {
+    padding: 0 2px;
+    border: 1px solid #666666;
+    background-color: #888888;
+    color: #FFFFFF;
+}
+
+.objectBox-string {
+    font-family: Monaco, monospace;
+    color: red;
+    white-space: pre;
+}
+
+.objectBox-number {
+    color: #000088;
+}
+
+.objectBox-function {
+    font-family: Monaco, monospace;
+    color: DarkGreen;
+}
+
+.objectBox-object {
+    color: DarkGreen;
+    font-weight: bold;
+}
+
+/************************************************************************************************/
+
+.logRow-info,
+.logRow-error,
+.logRow-warning {
+    background: #FFFFFF no-repeat 2px 2px;
+    padding-left: 20px;
+    padding-bottom: 3px;
+}
+
+.logRow-info {
+    background-image: url(infoIcon.png);
+}
+
+.logRow-warning {
+    background-color: cyan;
+    background-image: url(warningIcon.png);
+}
+
+.logRow-error {
+    background-color: LightYellow;
+    background-image: url(errorIcon.png);
+}
+
+.errorMessage {
+    vertical-align: top;
+    color: #FF0000;
+}
+
+.objectBox-sourceLink {
+    position: absolute;
+    right: 4px;
+    top: 2px;
+    padding-left: 8px;
+    font-family: Lucida Grande, sans-serif;
+    font-weight: bold;
+    color: #0000FF;
+}
+
+/************************************************************************************************/
+
+.logRow-group {
+    background: #EEEEEE;
+    border-bottom: none;
+}
+
+.logGroup {
+    background: #EEEEEE;
+}
+
+.logGroupBox {
+    margin-left: 24px;
+    border-top: 1px solid #D7D7D7;
+    border-left: 1px solid #D7D7D7;
+}
+
+/************************************************************************************************/
+
+.selectorTag,
+.selectorId,
+.selectorClass {
+    font-family: Monaco, monospace;
+    font-weight: normal;
+}
+
+.selectorTag {
+    color: #0000FF;
+}
+
+.selectorId {
+    color: DarkBlue;
+}
+
+.selectorClass {
+    color: red;
+}
+
+/************************************************************************************************/
+
+.objectBox-element {
+    font-family: Monaco, monospace;
+    color: #000088;
+}
+
+.nodeChildren {
+    margin-left: 16px;
+}
+
+.nodeTag {
+    color: blue;
+}
+
+.nodeValue {
+    color: #FF0000;
+    font-weight: normal;
+}
+
+.nodeText,
+.nodeComment {
+    margin: 0 2px;
+    vertical-align: top;
+}
+
+.nodeText {
+    color: #333333;
+}
+
+.nodeComment {
+    color: DarkGreen;
+}
+
+/************************************************************************************************/
+
+.propertyNameCell {
+    vertical-align: top;
+}
+
+.propertyName {
+    font-weight: bold;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/includes/clientside/firebug/src/firebug.js	Sun May 11 16:59:21 2008 -0400
@@ -0,0 +1,672 @@
+
+if (!("console" in window) || !("firebug" in console)) {
+(function()
+{
+    window.console = 
+    {
+        log: function()
+        {
+            logFormatted(arguments, "");
+        },
+        
+        debug: function()
+        {
+            logFormatted(arguments, "debug");
+        },
+        
+        info: function()
+        {
+            logFormatted(arguments, "info");
+        },
+        
+        warn: function()
+        {
+            logFormatted(arguments, "warning");
+        },
+        
+        error: function()
+        {
+            logFormatted(arguments, "error");
+        },
+        
+        assert: function(truth, message)
+        {
+            if (!truth)
+            {
+                var args = [];
+                for (var i = 1; i < arguments.length; ++i)
+                    args.push(arguments[i]);
+                
+                logFormatted(args.length ? args : ["Assertion Failure"], "error");
+                throw message ? message : "Assertion Failure";
+            }
+        },
+        
+        dir: function(object)
+        {
+            var html = [];
+                        
+            var pairs = [];
+            for (var name in object)
+            {
+                try
+                {
+                    pairs.push([name, object[name]]);
+                }
+                catch (exc)
+                {
+                }
+            }
+            
+            pairs.sort(function(a, b) { return a[0] < b[0] ? -1 : 1; });
+            
+            html.push('<table>');
+            for (var i = 0; i < pairs.length; ++i)
+            {
+                var name = pairs[i][0], value = pairs[i][1];
+                
+                html.push('<tr>', 
+                '<td class="propertyNameCell"><span class="propertyName">',
+                    escapeHTML(name), '</span></td>', '<td><span class="propertyValue">');
+                appendObject(value, html);
+                html.push('</span></td></tr>');
+            }
+            html.push('</table>');
+            
+            logRow(html, "dir");
+        },
+        
+        dirxml: function(node)
+        {
+            var html = [];
+            
+            appendNode(node, html);
+            logRow(html, "dirxml");
+        },
+        
+        group: function()
+        {
+            logRow(arguments, "group", pushGroup);
+        },
+        
+        groupEnd: function()
+        {
+            logRow(arguments, "", popGroup);
+        },
+        
+        time: function(name)
+        {
+            timeMap[name] = (new Date()).getTime();
+        },
+        
+        timeEnd: function(name)
+        {
+            if (name in timeMap)
+            {
+                var delta = (new Date()).getTime() - timeMap[name];
+                logFormatted([name+ ":", delta+"ms"]);
+                delete timeMap[name];
+            }
+        },
+        
+        count: function()
+        {
+            this.warn(["count() not supported."]);
+        },
+        
+        trace: function()
+        {
+            this.warn(["trace() not supported."]);
+        },
+        
+        profile: function()
+        {
+            this.warn(["profile() not supported."]);
+        },
+        
+        profileEnd: function()
+        {
+        },
+        
+        clear: function()
+        {
+            consoleBody.innerHTML = "";
+        },
+
+        open: function()
+        {
+            toggleConsole(true);
+        },
+        
+        close: function()
+        {
+            if (frameVisible)
+                toggleConsole();
+        }
+    };
+ 
+    // ********************************************************************************************
+       
+    var consoleFrame = null;
+    var consoleBody = null;
+    var commandLine = null;
+    
+    var frameVisible = false;
+    var messageQueue = [];
+    var groupStack = [];
+    var timeMap = {};
+    
+    var clPrefix = ">>> ";
+    
+    var isFirefox = navigator.userAgent.indexOf("Firefox") != -1;
+    var isIE = navigator.userAgent.indexOf("MSIE") != -1;
+    var isOpera = navigator.userAgent.indexOf("Opera") != -1;
+    var isSafari = navigator.userAgent.indexOf("AppleWebKit") != -1;
+
+    // ********************************************************************************************
+
+    function toggleConsole(forceOpen)
+    {
+        frameVisible = forceOpen || !frameVisible;
+        if (consoleFrame)
+            consoleFrame.style.visibility = frameVisible ? "visible" : "hidden";
+        else
+            waitForBody();
+    }
+
+    function focusCommandLine()
+    {
+        toggleConsole(true);
+        if (commandLine)
+            commandLine.focus();
+    }
+
+    function waitForBody()
+    {
+        if (document.body)
+            createFrame();
+        else
+            setTimeout(waitForBody, 200);
+    }    
+
+    function createFrame()
+    {
+        if (consoleFrame)
+            return;
+        
+        window.onFirebugReady = function(doc)
+        {
+            window.onFirebugReady = null;
+
+            var toolbar = doc.getElementById("toolbar");
+            toolbar.onmousedown = onSplitterMouseDown;
+
+            commandLine = doc.getElementById("commandLine");
+            addEvent(commandLine, "keydown", onCommandLineKeyDown);
+
+            addEvent(doc, isIE || isSafari ? "keydown" : "keypress", onKeyDown);
+            
+            consoleBody = doc.getElementById("log");
+            layout();
+            flush();
+        }
+
+        var baseURL = getFirebugURL();
+
+        consoleFrame = document.createElement("iframe");
+        consoleFrame.setAttribute("src", baseURL+"/firebug.html");
+        consoleFrame.setAttribute("frameBorder", "0");
+        consoleFrame.style.visibility = (frameVisible ? "visible" : "hidden");    
+        consoleFrame.style.zIndex = "2147483647";
+        consoleFrame.style.position = "fixed";
+        consoleFrame.style.width = "100%";
+        consoleFrame.style.left = "0";
+        consoleFrame.style.bottom = "0";
+        consoleFrame.style.height = "200px";
+        document.body.appendChild(consoleFrame);
+    }
+    
+    function getFirebugURL()
+    {
+        var scripts = document.getElementsByTagName("script");
+        for (var i = 0; i < scripts.length; ++i)
+        {
+            if (scripts[i].src.indexOf("firebug.js") != -1)
+            {
+                var lastSlash = scripts[i].src.lastIndexOf("/");
+                return scripts[i].src.substr(0, lastSlash);
+            }
+        }
+    }
+    
+    function evalCommandLine()
+    {
+        var text = commandLine.value;
+        commandLine.value = "";
+
+        logRow([clPrefix, text], "command");
+        
+        var value;
+        try
+        {
+            value = eval(text);
+        }
+        catch (exc)
+        {
+        }
+
+        console.log(value);
+    }
+    
+    function layout()
+    {
+        var toolbar = consoleBody.ownerDocument.getElementById("toolbar");
+        var height = consoleFrame.offsetHeight - (toolbar.offsetHeight + commandLine.offsetHeight);
+        consoleBody.style.top = toolbar.offsetHeight + "px";
+        consoleBody.style.height = height + "px";
+        
+        commandLine.style.top = (consoleFrame.offsetHeight - commandLine.offsetHeight) + "px";
+    }
+    
+    function logRow(message, className, handler)
+    {
+        if (consoleBody)
+            writeMessage(message, className, handler);
+        else
+        {
+            messageQueue.push([message, className, handler]);
+            waitForBody();
+        }
+    }
+    
+    function flush()
+    {
+        var queue = messageQueue;
+        messageQueue = [];
+        
+        for (var i = 0; i < queue.length; ++i)
+            writeMessage(queue[i][0], queue[i][1], queue[i][2]);
+    }
+
+    function writeMessage(message, className, handler)
+    {
+        var isScrolledToBottom =
+            consoleBody.scrollTop + consoleBody.offsetHeight >= consoleBody.scrollHeight;
+
+        if (!handler)
+            handler = writeRow;
+        
+        handler(message, className);
+        
+        if (isScrolledToBottom)
+            consoleBody.scrollTop = consoleBody.scrollHeight - consoleBody.offsetHeight;
+    }
+    
+    function appendRow(row)
+    {
+        var container = groupStack.length ? groupStack[groupStack.length-1] : consoleBody;
+        container.appendChild(row);
+    }
+
+    function writeRow(message, className)
+    {
+        var row = consoleBody.ownerDocument.createElement("div");
+        row.className = "logRow" + (className ? " logRow-"+className : "");
+        row.innerHTML = message.join("");
+        appendRow(row);
+    }
+
+    function pushGroup(message, className)
+    {
+        logFormatted(message, className);
+
+        var groupRow = consoleBody.ownerDocument.createElement("div");
+        groupRow.className = "logGroup";
+        var groupRowBox = consoleBody.ownerDocument.createElement("div");
+        groupRowBox.className = "logGroupBox";
+        groupRow.appendChild(groupRowBox);
+        appendRow(groupRowBox);
+        groupStack.push(groupRowBox);
+    }
+
+    function popGroup()
+    {
+        groupStack.pop();
+    }
+    
+    // ********************************************************************************************
+
+    function logFormatted(objects, className)
+    {
+        var html = [];
+
+        var format = objects[0];
+        var objIndex = 0;
+
+        if (typeof(format) != "string")
+        {
+            format = "";
+            objIndex = -1;
+        }
+
+        var parts = parseFormat(format);
+        for (var i = 0; i < parts.length; ++i)
+        {
+            var part = parts[i];
+            if (part && typeof(part) == "object")
+            {
+                var object = objects[++objIndex];
+                part.appender(object, html);
+            }
+            else
+                appendText(part, html);
+        }
+
+        for (var i = objIndex+1; i < objects.length; ++i)
+        {
+            appendText(" ", html);
+            
+            var object = objects[i];
+            if (typeof(object) == "string")
+                appendText(object, html);
+            else
+                appendObject(object, html);
+        }
+        
+        logRow(html, className);
+    }
+
+    function parseFormat(format)
+    {
+        var parts = [];
+
+        var reg = /((^%|[^\\]%)(\d+)?(\.)([a-zA-Z]))|((^%|[^\\]%)([a-zA-Z]))/;    
+        var appenderMap = {s: appendText, d: appendInteger, i: appendInteger, f: appendFloat};
+
+        for (var m = reg.exec(format); m; m = reg.exec(format))
+        {
+            var type = m[8] ? m[8] : m[5];
+            var appender = type in appenderMap ? appenderMap[type] : appendObject;
+            var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0);
+
+            parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1));
+            parts.push({appender: appender, precision: precision});
+
+            format = format.substr(m.index+m[0].length);
+        }
+
+        parts.push(format);
+
+        return parts;
+    }
+
+    function escapeHTML(value)
+    {
+        function replaceChars(ch)
+        {
+            switch (ch)
+            {
+                case "<":
+                    return "&lt;";
+                case ">":
+                    return "&gt;";
+                case "&":
+                    return "&amp;";
+                case "'":
+                    return "&#39;";
+                case '"':
+                    return "&quot;";
+            }
+            return "?";
+        };
+        return String(value).replace(/[<>&"']/g, replaceChars);
+    }
+
+    function objectToString(object)
+    {
+        try
+        {
+            return object+"";
+        }
+        catch (exc)
+        {
+            return null;
+        }
+    }
+
+    // ********************************************************************************************
+
+    function appendText(object, html)
+    {
+        html.push(escapeHTML(objectToString(object)));
+    }
+
+    function appendNull(object, html)
+    {
+        html.push('<span class="objectBox-null">', escapeHTML(objectToString(object)), '</span>');
+    }
+
+    function appendString(object, html)
+    {
+        html.push('<span class="objectBox-string">&quot;', escapeHTML(objectToString(object)),
+            '&quot;</span>');
+    }
+
+    function appendInteger(object, html)
+    {
+        html.push('<span class="objectBox-number">', escapeHTML(objectToString(object)), '</span>');
+    }
+
+    function appendFloat(object, html)
+    {
+        html.push('<span class="objectBox-number">', escapeHTML(objectToString(object)), '</span>');
+    }
+
+    function appendFunction(object, html)
+    {
+        var reName = /function ?(.*?)\(/;
+        var m = reName.exec(objectToString(object));
+        var name = m ? m[1] : "function";
+        html.push('<span class="objectBox-function">', escapeHTML(name), '()</span>');
+    }
+    
+    function appendObject(object, html)
+    {
+        try
+        {
+            if (object == undefined)
+                appendNull("undefined", html);
+            else if (object == null)
+                appendNull("null", html);
+            else if (typeof object == "string")
+                appendString(object, html);
+            else if (typeof object == "number")
+                appendInteger(object, html);
+            else if (typeof object == "function")
+                appendFunction(object, html);
+            else if (object.nodeType == 1)
+                appendSelector(object, html);
+            else if (typeof object == "object")
+                appendObjectFormatted(object, html);
+            else
+                appendText(object, html);
+        }
+        catch (exc)
+        {
+        }
+    }
+        
+    function appendObjectFormatted(object, html)
+    {
+        var text = objectToString(object);
+        var reObject = /\[object (.*?)\]/;
+
+        var m = reObject.exec(text);
+        html.push('<span class="objectBox-object">', m ? m[1] : text, '</span>')
+    }
+    
+    function appendSelector(object, html)
+    {
+        html.push('<span class="objectBox-selector">');
+
+        html.push('<span class="selectorTag">', escapeHTML(object.nodeName.toLowerCase()), '</span>');
+        if (object.id)
+            html.push('<span class="selectorId">#', escapeHTML(object.id), '</span>');
+        if (object.className)
+            html.push('<span class="selectorClass">.', escapeHTML(object.className), '</span>');
+
+        html.push('</span>');
+    }
+
+    function appendNode(node, html)
+    {
+        if (node.nodeType == 1)
+        {
+            html.push(
+                '<div class="objectBox-element">',
+                    '&lt;<span class="nodeTag">', node.nodeName.toLowerCase(), '</span>');
+
+            for (var i = 0; i < node.attributes.length; ++i)
+            {
+                var attr = node.attributes[i];
+                if (!attr.specified)
+                    continue;
+                
+                html.push('&nbsp;<span class="nodeName">', attr.nodeName.toLowerCase(),
+                    '</span>=&quot;<span class="nodeValue">', escapeHTML(attr.nodeValue),
+                    '</span>&quot;')
+            }
+
+            if (node.firstChild)
+            {
+                html.push('&gt;</div><div class="nodeChildren">');
+
+                for (var child = node.firstChild; child; child = child.nextSibling)
+                    appendNode(child, html);
+                    
+                html.push('</div><div class="objectBox-element">&lt;/<span class="nodeTag">', 
+                    node.nodeName.toLowerCase(), '&gt;</span></div>');
+            }
+            else
+                html.push('/&gt;</div>');
+        }
+        else if (node.nodeType == 3)
+        {
+            html.push('<div class="nodeText">', escapeHTML(node.nodeValue),
+                '</div>');
+        }
+    }
+
+    // ********************************************************************************************
+    
+    function addEvent(object, name, handler)
+    {
+        if (document.all)
+            object.attachEvent("on"+name, handler);
+        else
+            object.addEventListener(name, handler, false);
+    }
+    
+    function removeEvent(object, name, handler)
+    {
+        if (document.all)
+            object.detachEvent("on"+name, handler);
+        else
+            object.removeEventListener(name, handler, false);
+    }
+    
+    function cancelEvent(event)
+    {
+        if (document.all)
+            event.cancelBubble = true;
+        else
+            event.stopPropagation();        
+    }
+
+    function onError(msg, href, lineNo)
+    {
+        var html = [];
+        
+        var lastSlash = href.lastIndexOf("/");
+        var fileName = lastSlash == -1 ? href : href.substr(lastSlash+1);
+        
+        html.push(
+            '<span class="errorMessage">', msg, '</span>', 
+            '<div class="objectBox-sourceLink">', fileName, ' (line ', lineNo, ')</div>'
+        );
+        
+        logRow(html, "error");
+    };
+
+    function onKeyDown(event)
+    {
+        if (event.keyCode == 123)
+            toggleConsole();
+        else if ((event.keyCode == 108 || event.keyCode == 76) && event.shiftKey
+                 && (event.metaKey || event.ctrlKey))
+            focusCommandLine();
+        else
+            return;
+        
+        cancelEvent(event);
+    }
+
+    function onSplitterMouseDown(event)
+    {
+        if (isSafari || isOpera)
+            return;
+        
+        addEvent(document, "mousemove", onSplitterMouseMove);
+        addEvent(document, "mouseup", onSplitterMouseUp);
+
+        for (var i = 0; i < frames.length; ++i)
+        {
+            addEvent(frames[i].document, "mousemove", onSplitterMouseMove);
+            addEvent(frames[i].document, "mouseup", onSplitterMouseUp);
+        }
+    }
+    
+    function onSplitterMouseMove(event)
+    {
+        var win = document.all
+            ? event.srcElement.ownerDocument.parentWindow
+            : event.target.ownerDocument.defaultView;
+
+        var clientY = event.clientY;
+        if (win != win.parent)
+            clientY += win.frameElement ? win.frameElement.offsetTop : 0;
+        
+        var height = consoleFrame.offsetTop + consoleFrame.clientHeight;
+        var y = height - clientY;
+        
+        consoleFrame.style.height = y + "px";
+        layout();
+    }
+    
+    function onSplitterMouseUp(event)
+    {
+        removeEvent(document, "mousemove", onSplitterMouseMove);
+        removeEvent(document, "mouseup", onSplitterMouseUp);
+
+        for (var i = 0; i < frames.length; ++i)
+        {
+            removeEvent(frames[i].document, "mousemove", onSplitterMouseMove);
+            removeEvent(frames[i].document, "mouseup", onSplitterMouseUp);
+        }
+    }
+    
+    function onCommandLineKeyDown(event)
+    {
+        if (event.keyCode == 13)
+            evalCommandLine();
+        else if (event.keyCode == 27)
+            commandLine.value = "";
+    }
+    
+    window.onerror = onError;
+    addEvent(document, isIE || isSafari ? "keydown" : "keypress", onKeyDown);
+    
+    if (document.documentElement.getAttribute("debug") == "true")
+        toggleConsole(true);
+})();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/includes/clientside/firebug/src/firebugx.js	Sun May 11 16:59:21 2008 -0400
@@ -0,0 +1,10 @@
+
+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"];
+
+    window.console = {};
+    for (var i = 0; i < names.length; ++i)
+        window.console[names[i]] = function() {}
+}
\ No newline at end of file
--- a/includes/clientside/tinymce/tiny_mce_gzip.js	Sun May 11 16:58:58 2008 -0400
+++ b/includes/clientside/tinymce/tiny_mce_gzip.js	Sun May 11 16:59:21 2008 -0400
@@ -1,185 +1,1 @@
-var tinyMCE_GZ = {
-	settings : {
-		themes : '',
-		plugins : '',
-		languages : '',
-		disk_cache : true,
-		page_name : 'tiny_mce_gzip.php',
-		debug : false,
-		suffix : ''
-	},
-
-	init : function(s, cb, sc) {
-		var t = this, n, i, nl = document.getElementsByTagName('script');
-
-		for (n in s)
-			t.settings[n] = s[n];
-
-		s = t.settings;
-
-		for (i=0; i<nl.length; i++) {
-			n = nl[i];
-
-			if (n.src && n.src.indexOf('tiny_mce') != -1)
-				t.baseURL = n.src.substring(0, n.src.lastIndexOf('/'));
-		}
-
-		if (!t.coreLoaded)
-			t.loadScripts(1, s.themes, s.plugins, s.languages, cb, sc);
-	},
-
-	loadScripts : function(co, th, pl, la, cb, sc) {
-		var t = this, x, w = window, q, c = 0, ti, s = t.settings;
-
-		function get(s) {
-			x = 0;
-
-			try {
-				x = new ActiveXObject(s);
-			} catch (s) {
-			}
-
-			return x;
-		};
-
-		// Build query string
-		q = 'js=true&diskcache=' + (s.disk_cache ? 'true' : 'false') + '&core=' + (co ? 'true' : 'false') + '&suffix=' + escape(s.suffix) + '&themes=' + escape(th) + '&plugins=' + escape(pl) + '&languages=' + escape(la);
-
-		if (co)
-			t.coreLoaded = 1;
-
-		// Send request
-		x = w.XMLHttpRequest ? new XMLHttpRequest() : get('Msxml2.XMLHTTP') || get('Microsoft.XMLHTTP');
-		x.overrideMimeType && x.overrideMimeType('text/javascript');
-		x.open('GET', t.baseURL + '/' + s.page_name + '?' + q, !!cb);
-//		x.setRequestHeader('Content-Type', 'text/javascript');
-		x.send('');
-
-		// Handle asyncronous loading
-		if (cb) {
-			// Wait for response
-			ti = w.setInterval(function() {
-				if (x.readyState == 4 || c++ > 10000) {
-					w.clearInterval(ti);
-
-					if (c < 10000 && x.status == 200) {
-						t.loaded = 1;
-						t.eval(x.responseText);
-						tinymce.dom.Event.domLoaded = true;
-						cb.call(sc || t, x);
-					}
-
-					ti = x = null;
-				}
-			}, 10);
-		} else
-			t.eval(x.responseText);
-	},
-
-	start : function() {
-		var t = this, each = tinymce.each, s = t.settings, sl, ln = s.languages.split(',');
-
-		tinymce.suffix = s.suffix;
-
-		// Extend script loader
-		tinymce.create('tinymce.compressor.ScriptLoader:tinymce.dom.ScriptLoader', {
-			loadScripts : function(sc, cb, s) {
-				var ti = this, th = [], pl = [], la = [];
-
-				each(sc, function(o) {
-					var u = o.url;
-
-					if ((!ti.lookup[u] || ti.lookup[u].state != 2) && u.indexOf(t.baseURL) === 0) {
-						// Collect theme
-						if (u.indexOf('editor_template') != -1) {
-							th.push(/\/themes\/([^\/]+)/.exec(u)[1]);
-							load(u, 1);
-						}
-
-						// Collect plugin
-						if (u.indexOf('editor_plugin') != -1) {
-							pl.push(/\/plugins\/([^\/]+)/.exec(u)[1]);
-							load(u, 1);
-						}
-
-						// Collect language
-						if (u.indexOf('/langs/') != -1) {
-							la.push(/\/langs\/([^.]+)/.exec(u)[1]);
-							load(u, 1);
-						}
-					}
-				});
-
-				if (th.length + pl.length + la.length > 0) {
-					if (sl.settings.strict_mode) {
-						// Async
-						t.loadScripts(0, th.join(','), pl.join(','), la.join(','), cb, s);
-						return;
-					} else
-						t.loadScripts(0, th.join(','), pl.join(','), la.join(','), cb, s);
-				}
-
-				return ti.parent(sc, cb, s);
-			}
-		});
-
-		sl = tinymce.ScriptLoader = new tinymce.compressor.ScriptLoader();
-
-		function load(u, sp) {
-			var o;
-
-			if (!sp)
-				u = t.baseURL + u;
-
-			o = {url : u, state : 2};
-			sl.queue.push(o);
-			sl.lookup[o.url] = o;
-		};
-
-		// Add core languages
-		each (ln, function(c) {
-			if (c)
-				load('/langs/' + c + '.js');
-		});
-
-		// Add themes with languages
-		each(s.themes.split(','), function(n) {
-			if (n) {
-				load('/themes/' + n + '/editor_template' + s.suffix + '.js');
-
-				each (ln, function(c) {
-					if (c)
-						load('/themes/' + n + '/langs/' + c + '.js');
-				});
-			}
-		});
-
-		// Add plugins with languages
-		each(s.plugins.split(','), function(n) {
-			if (n) {
-				load('/plugins/' + n + '/editor_plugin' + s.suffix + '.js');
-
-				each (ln, function(c) {
-					if (c)
-						load('/plugins/' + n + '/langs/' + c + '.js');
-				});
-			}
-		});
-	},
-
-	end : function() {
-	},
-
-	eval : function(co) {
-		var w = window;
-
-		// Evaluate script
-		if (!w.execScript) {
-			if (/Gecko/.test(navigator.userAgent))
-				eval(co, w); // Firefox 3.0
-			else
-				eval.call(w, co);
-		} else
-			w.execScript(co); // IE
-	}
-};
+var tinyMCE_GZ={settings:{themes:"",plugins:"",languages:"",disk_cache:true,page_name:"tiny_mce_gzip.php",debug:false,suffix:""},init:function(E,A,F){var D=this,G,C,B=document.getElementsByTagName("script");for(G in E){D.settings[G]=E[G]}E=D.settings;for(C=0;C<B.length;C++){G=B[C];if(G.src&&G.src.indexOf("tiny_mce")!=-1){D.baseURL=G.src.substring(0,G.src.lastIndexOf("/"))}}if(!D.coreLoaded){D.loadScripts(1,E.themes,E.plugins,E.languages,A,F)}},loadScripts:function(co,th,pl,la,cb,sc){var t=this,x,w=window,q,c=0,ti,s=t.settings;function get(s){x=0;try{x=new ActiveXObject(s)}catch(s){}return x}q="js=true&diskcache="+(s.disk_cache?"true":"false")+"&core="+(co?"true":"false")+"&suffix="+escape(s.suffix)+"&themes="+escape(th)+"&plugins="+escape(pl)+"&languages="+escape(la);if(co){t.coreLoaded=1}x=w.XMLHttpRequest?new XMLHttpRequest():get("Msxml2.XMLHTTP")||get("Microsoft.XMLHTTP");x.overrideMimeType&&x.overrideMimeType("text/javascript");x.open("GET",t.baseURL+"/"+s.page_name+"?"+q,!!cb);x.send("");if(cb){ti=w.setInterval(function(){if(x.readyState==4||c++>10000){w.clearInterval(ti);if(c<10000&&x.status==200){t.loaded=1;t.eval(x.responseText);tinymce.dom.Event.domLoaded=true;cb.call(sc||t,x)}ti=x=null}},10)}else{t.eval(x.responseText)}},start:function(){var B=this,F=tinymce.each,C=B.settings,A,D=C.languages.split(",");tinymce.suffix=C.suffix;tinymce.create("tinymce.compressor.ScriptLoader:tinymce.dom.ScriptLoader",{loadScripts:function(M,G,J){var I=this,K=[],H=[],L=[];F(M,function(O){var N=O.url;if((!I.lookup[N]||I.lookup[N].state!=2)&&N.indexOf(B.baseURL)===0){if(N.indexOf("editor_template")!=-1){K.push(/\/themes\/([^\/]+)/.exec(N)[1]);E(N,1)}if(N.indexOf("editor_plugin")!=-1){H.push(/\/plugins\/([^\/]+)/.exec(N)[1]);E(N,1)}if(N.indexOf("/langs/")!=-1){L.push(/\/langs\/([^.]+)/.exec(N)[1]);E(N,1)}}});if(K.length+H.length+L.length>0){if(A.settings.strict_mode){B.loadScripts(0,K.join(","),H.join(","),L.join(","),G,J);return }else{B.loadScripts(0,K.join(","),H.join(","),L.join(","),G,J)}}return I.parent(M,G,J)}});A=tinymce.ScriptLoader=new tinymce.compressor.ScriptLoader();function E(G,H){var I;if(!H){G=B.baseURL+G}I={url:G,state:2};A.queue.push(I);A.lookup[I.url]=I}F(D,function(G){if(G){E("/langs/"+G+".js")}});F(C.themes.split(","),function(G){if(G){E("/themes/"+G+"/editor_template"+C.suffix+".js");F(D,function(H){if(H){E("/themes/"+G+"/langs/"+H+".js")}})}});F(C.plugins.split(","),function(G){if(G){E("/plugins/"+G+"/editor_plugin"+C.suffix+".js");F(D,function(H){if(H){E("/plugins/"+G+"/langs/"+H+".js")}})}})},end:function(){},eval:function(co){var w=window;if(!w.execScript){if(/Gecko/.test(navigator.userAgent)){eval(co,w)}else{eval.call(w,co)}}else{w.execScript(co)}}};
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/includes/clientside/tinymce/tiny_mce_gzip_src.js	Sun May 11 16:59:21 2008 -0400
@@ -0,0 +1,185 @@
+var tinyMCE_GZ = {
+	settings : {
+		themes : '',
+		plugins : '',
+		languages : '',
+		disk_cache : true,
+		page_name : 'tiny_mce_gzip.php',
+		debug : false,
+		suffix : ''
+	},
+
+	init : function(s, cb, sc) {
+		var t = this, n, i, nl = document.getElementsByTagName('script');
+
+		for (n in s)
+			t.settings[n] = s[n];
+
+		s = t.settings;
+
+		for (i=0; i<nl.length; i++) {
+			n = nl[i];
+
+			if (n.src && n.src.indexOf('tiny_mce') != -1)
+				t.baseURL = n.src.substring(0, n.src.lastIndexOf('/'));
+		}
+
+		if (!t.coreLoaded)
+			t.loadScripts(1, s.themes, s.plugins, s.languages, cb, sc);
+	},
+
+	loadScripts : function(co, th, pl, la, cb, sc) {
+		var t = this, x, w = window, q, c = 0, ti, s = t.settings;
+
+		function get(s) {
+			x = 0;
+
+			try {
+				x = new ActiveXObject(s);
+			} catch (s) {
+			}
+
+			return x;
+		};
+
+		// Build query string
+		q = 'js=true&diskcache=' + (s.disk_cache ? 'true' : 'false') + '&core=' + (co ? 'true' : 'false') + '&suffix=' + escape(s.suffix) + '&themes=' + escape(th) + '&plugins=' + escape(pl) + '&languages=' + escape(la);
+
+		if (co)
+			t.coreLoaded = 1;
+
+		// Send request
+		x = w.XMLHttpRequest ? new XMLHttpRequest() : get('Msxml2.XMLHTTP') || get('Microsoft.XMLHTTP');
+		x.overrideMimeType && x.overrideMimeType('text/javascript');
+		x.open('GET', t.baseURL + '/' + s.page_name + '?' + q, !!cb);
+//		x.setRequestHeader('Content-Type', 'text/javascript');
+		x.send('');
+
+		// Handle asyncronous loading
+		if (cb) {
+			// Wait for response
+			ti = w.setInterval(function() {
+				if (x.readyState == 4 || c++ > 10000) {
+					w.clearInterval(ti);
+
+					if (c < 10000 && x.status == 200) {
+						t.loaded = 1;
+						t.eval(x.responseText);
+						tinymce.dom.Event.domLoaded = true;
+						cb.call(sc || t, x);
+					}
+
+					ti = x = null;
+				}
+			}, 10);
+		} else
+			t.eval(x.responseText);
+	},
+
+	start : function() {
+		var t = this, each = tinymce.each, s = t.settings, sl, ln = s.languages.split(',');
+
+		tinymce.suffix = s.suffix;
+
+		// Extend script loader
+		tinymce.create('tinymce.compressor.ScriptLoader:tinymce.dom.ScriptLoader', {
+			loadScripts : function(sc, cb, s) {
+				var ti = this, th = [], pl = [], la = [];
+
+				each(sc, function(o) {
+					var u = o.url;
+
+					if ((!ti.lookup[u] || ti.lookup[u].state != 2) && u.indexOf(t.baseURL) === 0) {
+						// Collect theme
+						if (u.indexOf('editor_template') != -1) {
+							th.push(/\/themes\/([^\/]+)/.exec(u)[1]);
+							load(u, 1);
+						}
+
+						// Collect plugin
+						if (u.indexOf('editor_plugin') != -1) {
+							pl.push(/\/plugins\/([^\/]+)/.exec(u)[1]);
+							load(u, 1);
+						}
+
+						// Collect language
+						if (u.indexOf('/langs/') != -1) {
+							la.push(/\/langs\/([^.]+)/.exec(u)[1]);
+							load(u, 1);
+						}
+					}
+				});
+
+				if (th.length + pl.length + la.length > 0) {
+					if (sl.settings.strict_mode) {
+						// Async
+						t.loadScripts(0, th.join(','), pl.join(','), la.join(','), cb, s);
+						return;
+					} else
+						t.loadScripts(0, th.join(','), pl.join(','), la.join(','), cb, s);
+				}
+
+				return ti.parent(sc, cb, s);
+			}
+		});
+
+		sl = tinymce.ScriptLoader = new tinymce.compressor.ScriptLoader();
+
+		function load(u, sp) {
+			var o;
+
+			if (!sp)
+				u = t.baseURL + u;
+
+			o = {url : u, state : 2};
+			sl.queue.push(o);
+			sl.lookup[o.url] = o;
+		};
+
+		// Add core languages
+		each (ln, function(c) {
+			if (c)
+				load('/langs/' + c + '.js');
+		});
+
+		// Add themes with languages
+		each(s.themes.split(','), function(n) {
+			if (n) {
+				load('/themes/' + n + '/editor_template' + s.suffix + '.js');
+
+				each (ln, function(c) {
+					if (c)
+						load('/themes/' + n + '/langs/' + c + '.js');
+				});
+			}
+		});
+
+		// Add plugins with languages
+		each(s.plugins.split(','), function(n) {
+			if (n) {
+				load('/plugins/' + n + '/editor_plugin' + s.suffix + '.js');
+
+				each (ln, function(c) {
+					if (c)
+						load('/plugins/' + n + '/langs/' + c + '.js');
+				});
+			}
+		});
+	},
+
+	end : function() {
+	},
+
+	eval : function(co) {
+		var w = window;
+
+		// Evaluate script
+		if (!w.execScript) {
+			if (/Gecko/.test(navigator.userAgent))
+				eval(co, w); // Firefox 3.0
+			else
+				eval.call(w, co);
+		} else
+			w.execScript(co); // IE
+	}
+};