Removed Firebug Lite - unused, outdated, and potential licensing issue. All licensing issues should be resolved now.
authorDan
Sat, 30 May 2009 14:46:57 -0400
changeset 1015 17721bad21df
parent 1014 930c1fdd3e9f
child 1016 6d32d80b2192
Removed Firebug Lite - unused, outdated, and potential licensing issue. All licensing issues should be resolved now.
includes/clientside/firebug/errorIcon.png
includes/clientside/firebug/firebug.css
includes/clientside/firebug/firebug.html
includes/clientside/firebug/firebug.js
includes/clientside/firebug/firebugx.js
includes/clientside/firebug/infoIcon.png
includes/clientside/firebug/src/firebug.css
includes/clientside/firebug/src/firebug.js
includes/clientside/firebug/src/firebugx.js
includes/clientside/firebug/warningIcon.png
licenses/index.html
licenses/mpl.html
Binary file includes/clientside/firebug/errorIcon.png has changed
--- a/includes/clientside/firebug/firebug.css	Fri May 29 20:22:30 2009 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-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.html	Fri May 29 20:22:30 2009 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-
-<head>
-    <title>Firebug</title>
-    <link rel="stylesheet" type="text/css" href="firebug.css">
-</head>
-
-<body>
-    <div id="toolbar" class="toolbar">
-        <a href="#" onclick="parent.console.clear()">Clear</a>
-        <span class="toolbarRight">
-            <a href="#" onclick="parent.console.close()">Close</a>
-        </span>
-    </div>
-    <div id="log"></div>
-    <input type="text" id="commandLine">
-    
-    <script>parent.onFirebugReady(document);</script>
-</body>
-</html>
--- a/includes/clientside/firebug/firebug.js	Fri May 29 20:22:30 2009 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-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	Fri May 29 20:22:30 2009 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-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
Binary file includes/clientside/firebug/infoIcon.png has changed
--- a/includes/clientside/firebug/src/firebug.css	Fri May 29 20:22:30 2009 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,209 +0,0 @@
-
-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;
-}
--- a/includes/clientside/firebug/src/firebug.js	Fri May 29 20:22:30 2009 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,672 +0,0 @@
-
-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);
-})();
-}
--- a/includes/clientside/firebug/src/firebugx.js	Fri May 29 20:22:30 2009 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-
-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
Binary file includes/clientside/firebug/warningIcon.png has changed
--- a/licenses/index.html	Fri May 29 20:22:30 2009 -0400
+++ b/licenses/index.html	Sat May 30 14:46:57 2009 -0400
@@ -103,6 +103,7 @@
 <ul>
   <li><a href="http://pajhome.org.uk/">Paul Johnston</a>'s implementations of the MD5 and SHA1 algorithms in Javascript</li>
   <li><a href="http://framework.zend.com/">Zend Framework</a>, for the majority of JSON operations</li>
+  <li><a href="http://getfirebug.com/lite/">Firebug Lite</a>, only the minimal version that stubs window.console.</li>
 </ul>
 
 <h2>The MIT/X License</h2>
@@ -117,12 +118,6 @@
   <li><a href="http://www.famfamfam.com/lab/icons/silk/">fam fam fam silk icon set</a> - the icons used in the administration panel and several other places</li>
 </ul>
 
-<h2>Mozilla Public License</h2>
-<p><a href="mpl.html">View the text of this license</a></p>
-<ul>
-  <li><a href="http://getfirebug.com/">Firebug</a> Lite, a remix of Firebug that works in non-Firefox browsers and can be loaded on demand</li>
-</ul>
-
 <!-- <div class="copyright">valid <a href="http://validator.w3.org/check/referer">xhtml</a> and <a href="http://jigsaw.w3.org/css-validator/validator?uri=referer">css</a></div> -->
 
 </div>
--- a/licenses/mpl.html	Fri May 29 20:22:30 2009 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,469 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml111.dtd">
-<html>
-<head>
-<title>Mozilla Public License</title>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<style type="text/css">
-body {
-  margin: 0;
-  padding: 0;
-  background-color: #FFFFFF;
-  color: #000000;
-}
-body div.main {
-  border: 1px solid #cccccc;
-  background-color: #F1F3F5;
-  margin: 10px;
-  padding: 10px;
-}
-* {
- font-family: verdana, tahoma, arial, helvetica, sans-serif;
- font-size: 8pt;
-}
-p {
-  margin-left: 1.5em;
-}
-h1, h2, h3 {
-  color: #50A0D0;
-  font-weight: normal;
-  font-family: 'trebuchet ms', verdana, tahoma, arial, helvetica, sans-serif;
-}
-h1 {
-  font-size: 16pt;
-}
-h2 {
-  font-size: 12pt;
-  margin-left: 0.5em;
-}
-h3 {
-  font-size: 10pt;
-  margin-left: 1em;
-}
-a:link, a:visited, a:active {
-  color: #3080B0;
-  text-decoration: none;
-  border-bottom: 1px dotted #50A0D0;
-}
-a:hover {
-  color: #50A0D0;
-  border-bottom: 1px solid #50A0D0;
-}
-pre {
-  font-family: 'courier new', monospace;
-  background-color: #F8F8F8;
-  margin: 10px 10px 10px 30px;
-  max-height: 150px;
-  clip: rect(0px,auto,auto,0px);
-  overflow: auto;
-  padding: 10px;
-  border: 1px solid #3060B0;
-}
-li {
-  list-style-type: square;
-}
-div.copyright {
-  text-align: right;
-  font-size: smaller;
-}
-div.copyright * {
-  font-size: smaller;
-}
-</style>
-</head>
-<body>
-
-<div class="main">
-
- <h1>Mozilla Public License Version 1.1</h1>
-
- <h2 id="section-1">1. Definitions.</h2>
- <dl>
-  <dt id="section-1.0.1">1.0.1. "Commercial Use"</dt>
-  <dd>means distribution or otherwise making the Covered Code available to a third party.</dd>
-  <dt id="section-1.1">1.1. "Contributor"</dt>
-  <dd>means each entity that creates or contributes to the creation of Modifications.</dd>
-  <dt id="section-1.2">1.2. "Contributor Version"</dt>
-  <dd>means the combination of the Original Code, prior Modifications used by a Contributor,
-   and the Modifications made by that particular Contributor.</dd>
-  <dt id="section-1.3">1.3. "Covered Code"</dt>
-  <dd>means the Original Code or Modifications or the combination of the Original Code and
-   Modifications, in each case including portions thereof.</dd>
-  <dt id="section-1.4">1.4. "Electronic Distribution Mechanism"</dt>
-  <dd>means a mechanism generally accepted in the software development community for the
-   electronic transfer of data.</dd>
-  <dt id="section-1.5">1.5. "Executable"</dt>
-  <dd>means Covered Code in any form other than Source Code.</dd>
-  <dt id="section-1.6">1.6. "Initial Developer"</dt>
-  <dd>means the individual or entity identified as the Initial Developer in the Source Code
-   notice required by <a href="#exhibit-a">Exhibit A</a>.</dd>
-  <dt id="section-1.7">1.7. "Larger Work"</dt>
-  <dd>means a work which combines Covered Code or portions thereof with code not governed
-   by the terms of this License.</dd>
-  <dt id="section-1.8">1.8. "License"</dt>
-  <dd>means this document.</dd>
-  <dt id="section-1.8.1">1.8.1. "Licensable"</dt>
-  <dd>means having the right to grant, to the maximum extent possible, whether at the
-   time of the initial grant or subsequently acquired, any and all of the rights
-   conveyed herein.</dd>
-  <dt id="section-1.9">1.9. "Modifications"</dt>
-  <dd>
-
-   <p>means any addition to or deletion from the substance or structure of either the
-    Original Code or any previous Modifications. When Covered Code is released as a
-    series of files, a Modification is:</p>
-   <ol type="a">
-    <li id="section-1.9-a">Any addition to or deletion from the contents of a file
-     containing Original Code or previous Modifications.</li>
-    <li id="section-1.9-b">Any new file that contains any part of the Original Code or
-     previous Modifications.</li>
-   </ol>
-   </dd>
-  <dt id="section-1.10">1.10. "Original Code"</dt>
-  <dd>means Source Code of computer software code which is described in the Source Code
-   notice required by <a href="#exhibit-a">Exhibit A</a> as Original Code, and which,
-   at the time of its release under this License is not already Covered Code governed
-   by this License.</dd>
-  <dt id="section-1.10.1">1.10.1. "Patent Claims"</dt>
-  <dd>means any patent claim(s), now owned or hereafter acquired, including without
-   limitation, method, process, and apparatus claims, in any patent Licensable by
-   grantor.</dd>
-  <dt id="section-1.11">1.11. "Source Code"</dt>
-  <dd>means the preferred form of the Covered Code for making modifications to it,
-   including all modules it contains, plus any associated interface definition files,
-   scripts used to control compilation and installation of an Executable, or source
-   code differential comparisons against either the Original Code or another well known,
-   available Covered Code of the Contributor's choice. The Source Code can be in a
-   compressed or archival form, provided the appropriate decompression or de-archiving
-   software is widely available for no charge.</dd>
-  <dt id="section-1.12">1.12. "You" (or "Your")</dt>
-  <dd>means an individual or a legal entity exercising rights under, and complying with
-   all of the terms of, this License or a future version of this License issued under
-   <a href="#section-6.1">Section 6.1.</a> For legal entities, "You" includes any entity
-   which controls, is controlled by, or is under common control with You. For purposes of
-   this definition, "control" means (a) the power, direct or indirect, to cause the
-   direction or management of such entity, whether by contract or otherwise, or (b)
-   ownership of more than fifty percent (50%) of the outstanding shares or beneficial
-   ownership of such entity.</dd>
- </dl>
-
- <h2 id="section-2">2. Source Code License.</h2>
- <h3 id="section-2.1">2.1. The Initial Developer Grant.</h3>
- <p>The Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive
-  license, subject to third party intellectual property claims:</p>
- <ol type="a">
-  <li id="section-2.1-a">under intellectual property rights (other than patent or
-   trademark) Licensable by Initial Developer to use, reproduce, modify, display, perform,
-   sublicense and distribute the Original Code (or portions thereof) with or without
-   Modifications, and/or as part of a Larger Work; and</li>
-  <li id="section-2.1-b">under Patents Claims infringed by the making, using or selling
-   of Original Code, to make, have made, use, practice, sell, and offer for sale, and/or
-   otherwise dispose of the Original Code (or portions thereof).</li>
-  <li id="section-2.1-c">the licenses granted in this Section 2.1
-   (<a href="#section-2.1-a">a</a>) and (<a href="#section-2.1-b">b</a>) are effective on
-   the date Initial Developer first distributes Original Code under the terms of this
-   License.</li>
-  <li id="section-2.1-d">Notwithstanding Section 2.1 (<a href="#section-2.1-b">b</a>)
-   above, no patent license is granted: 1) for code that You delete from the Original Code;
-   2) separate from the Original Code; or 3) for infringements caused by: i) the
-   modification of the Original Code or ii) the combination of the Original Code with other
-   software or devices.</li>
- </ol>
-
- <h3 id="section-2.2">2.2. Contributor Grant.</h3>
- <p>Subject to third party intellectual property claims, each Contributor hereby grants You
-  a world-wide, royalty-free, non-exclusive license</p>
- <ol type="a">
-  <li id="section-2.2-a">under intellectual property rights (other than patent or trademark)
-   Licensable by Contributor, to use, reproduce, modify, display, perform, sublicense and
-   distribute the Modifications created by such Contributor (or portions thereof) either on
-   an unmodified basis, with other Modifications, as Covered Code and/or as part of a Larger
-   Work; and</li>
-  <li id="section-2.2-b">under Patent Claims infringed by the making, using, or selling of
-   Modifications made by that Contributor either alone and/or in combination with its
-   Contributor Version (or portions of such combination), to make, use, sell, offer for
-   sale, have made, and/or otherwise dispose of: 1) Modifications made by that Contributor
-   (or portions thereof); and 2) the combination of Modifications made by that Contributor
-   with its Contributor Version (or portions of such combination).</li>
-  <li id="section-2.2-c">the licenses granted in Sections 2.2
-   (<a href="#section-2.2-a">a</a>) and 2.2 (<a href="#section-2.2-b">b</a>) are effective
-   on the date Contributor first makes Commercial Use of the Covered Code.
-  <li id="section-2.2-d">Notwithstanding Section 2.2 (<a href="#section-2.2-b">b</a>)
-   above, no patent license is granted: 1) for any code that Contributor has deleted from
-   the Contributor Version; 2) separate from the Contributor Version; 3) for infringements
-   caused by: i) third party modifications of Contributor Version or ii) the combination of
-   Modifications made by that Contributor with other software (except as part of the
-   Contributor Version) or other devices; or 4) under Patent Claims infringed by Covered Code
-   in the absence of Modifications made by that Contributor.</li>
- </ol>
-
- <h2 id="section-3">3. Distribution Obligations.</h2>
- <h3 id="section-3.1">3.1. Application of License.</h3>
- <p>The Modifications which You create or to which You contribute are governed by the terms
-  of this License, including without limitation Section <a href="#section-2.2">2.2</a>. The
-  Source Code version of Covered Code may be distributed only under the terms of this License
-  or a future version of this License released under Section <a href="#section-6.1">6.1</a>,
-  and You must include a copy of this License with every copy of the Source Code You
-  distribute. You may not offer or impose any terms on any Source Code version that alters or
-  restricts the applicable version of this License or the recipients' rights hereunder.
-  However, You may include an additional document offering the additional rights described in
-  Section <a href="#section-3.5">3.5</a>.</p>
- <h3 id="section-3.2">3.2. Availability of Source Code.</h3>
- <p>Any Modification which You create or to which You contribute must be made available in
-  Source Code form under the terms of this License either on the same media as an Executable
-  version or via an accepted Electronic Distribution Mechanism to anyone to whom you made an
-  Executable version available; and if made available via Electronic Distribution Mechanism,
-  must remain available for at least twelve (12) months after the date it initially became
-  available, or at least six (6) months after a subsequent version of that particular
-  Modification has been made available to such recipients. You are responsible for ensuring
-  that the Source Code version remains available even if the Electronic Distribution
-  Mechanism is maintained by a third party.</p>
- <h3 id="section-3.3">3.3. Description of Modifications.</h3>
-
- <p>You must cause all Covered Code to which You contribute to contain a file documenting the
-  changes You made to create that Covered Code and the date of any change. You must include a
-  prominent statement that the Modification is derived, directly or indirectly, from Original
-  Code provided by the Initial Developer and including the name of the Initial Developer in
-  (a) the Source Code, and (b) in any notice in an Executable version or related documentation
-  in which You describe the origin or ownership of the Covered Code.</p>
- <h3 id="section-3.4">3.4. Intellectual Property Matters</h3>
- <h4 id="section-3.4-a">(a) Third Party Claims</h4>
- <p>If Contributor has knowledge that a license under a third party's intellectual property
-  rights is required to exercise the rights granted by such Contributor under Sections
-  <a href="#section-2.1">2.1</a> or <a href="#section-2.2">2.2</a>, Contributor must include a
-  text file with the Source Code distribution titled "LEGAL" which describes the claim and the
-  party making the claim in sufficient detail that a recipient will know whom to contact. If
-  Contributor obtains such knowledge after the Modification is made available as described in
-  Section <a href="#section-3.2">3.2</a>, Contributor shall promptly modify the LEGAL file in
-  all copies Contributor makes available thereafter and shall take other steps (such as
-  notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who
-  received the Covered Code that new knowledge has been obtained.</p>
- <h4 id="section-3.4-b">(b) Contributor APIs</h4>
-
- <p>If Contributor's Modifications include an application programming interface and Contributor
-  has knowledge of patent licenses which are reasonably necessary to implement that
-  <abbr>API</abbr>, Contributor must also include this information in the
-  <strong class="very-strong">legal</strong> file.</p>
- <h4 id="section-3.4-c">(c) Representations.</h4>
- <p>Contributor represents that, except as disclosed pursuant to Section 3.4
-  (<a href="#section-3.4-a">a</a>) above, Contributor believes that Contributor's Modifications
-  are Contributor's original creation(s) and/or Contributor has sufficient rights to grant the
-  rights conveyed by this License.</p>
- <h3 id="section-3.5">3.5. Required Notices.</h3>
- <p>You must duplicate the notice in <a href="#exhibit-a">Exhibit A</a> in each file of the
-  Source Code. If it is not possible to put such notice in a particular Source Code file due to
-  its structure, then You must include such notice in a location (such as a relevant directory)
-  where a user would be likely to look for such a notice. If You created one or more
-  Modification(s) You may add your name as a Contributor to the notice described in
-  <a href="#exhibit-a">Exhibit A</a>. You must also duplicate this License in any documentation
-  for the Source Code where You describe recipients' rights or ownership rights relating to
-  Covered Code. You may choose to offer, and to charge a fee for, warranty, support, indemnity
-  or liability obligations to one or more recipients of Covered Code. However, You may do so
-  only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You
-  must make it absolutely clear than any such warranty, support, indemnity or liability
-  obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer
-  and every Contributor for any liability incurred by the Initial Developer or such Contributor
-  as a result of warranty, support, indemnity or liability terms You offer.</p>
- <h3 id="section-3.6">3.6. Distribution of Executable Versions.</h3>
-
- <p>You may distribute Covered Code in Executable form only if the requirements of Sections
-  <a href="#section-3.1">3.1</a>, <a href="#section-3.2">3.2</a>,
-  <a href="#section-3.3">3.3</a>, <a href="#section-3.4">3.4</a> and
-  <a href="#section-3.5">3.5</a> have been met for that Covered Code, and if You include a
-  notice stating that the Source Code version of the Covered Code is available under the terms
-  of this License, including a description of how and where You have fulfilled the obligations
-  of Section <a href="#section-3.2">3.2</a>. The notice must be conspicuously included in any
-  notice in an Executable version, related documentation or collateral in which You describe
-  recipients' rights relating to the Covered Code. You may distribute the Executable version of
-  Covered Code or ownership rights under a license of Your choice, which may contain terms
-  different from this License, provided that You are in compliance with the terms of this
-  License and that the license for the Executable version does not attempt to limit or alter the
-  recipient's rights in the Source Code version from the rights set forth in this License. If
-  You distribute the Executable version under a different license You must make it absolutely
-  clear that any terms which differ from this License are offered by You alone, not by the
-  Initial Developer or any Contributor. You hereby agree to indemnify the Initial Developer and
-  every Contributor for any liability incurred by the Initial Developer or such Contributor as
-  a result of any such terms You offer.</p>
- <h3 id="section-3.7">3.7. Larger Works.</h3>
-
- <p>You may create a Larger Work by combining Covered Code with other code not governed by the
-  terms of this License and distribute the Larger Work as a single product. In such a case,
-  You must make sure the requirements of this License are fulfilled for the Covered Code.</p>
- <h2 id="section-4">4. Inability to Comply Due to Statute or Regulation.</h2>
- <p>If it is impossible for You to comply with any of the terms of this License with respect to
-  some or all of the Covered Code due to statute, judicial order, or regulation then You must:
-  (a) comply with the terms of this License to the maximum extent possible; and (b) describe
-  the limitations and the code they affect. Such description must be included in the
-  <strong class="very-strong">legal</strong> file described in Section
-  <a href="#section-3.4">3.4</a> and must be included with all distributions of the Source Code.
-  Except to the extent prohibited by statute or regulation, such description must be
-  sufficiently detailed for a recipient of ordinary skill to be able to understand it.</p>
- <h2 id="section-5">5. Application of this License.</h2>
- <p>This License applies to code to which the Initial Developer has attached the notice in
-  <a href="#exhibit-a">Exhibit A</a> and to related Covered Code.</p>
- <h2 id="section-6">6. Versions of the License.</h2>
-
- <h3 id="section-6.1">6.1. New Versions</h3>
- <p>Netscape Communications Corporation ("Netscape") may publish revised and/or new versions
-  of the License from time to time. Each version will be given a distinguishing version number.</p>
- <h3 id="section-6.2">6.2. Effect of New Versions</h3>
- <p>Once Covered Code has been published under a particular version of the License, You may
-  always continue to use it under the terms of that version. You may also choose to use such
-  Covered Code under the terms of any subsequent version of the License published by Netscape.
-  No one other than Netscape has the right to modify the terms applicable to Covered Code
-  created under this License.</p>
- <h3 id="section-6.3">6.3. Derivative Works</h3>
- <p>If You create or use a modified version of this License (which you may only do in order to
- apply it to code which is not already Covered Code governed by this License), You must (a)
- rename Your license so that the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", "MPL",
- "NPL" or any confusingly similar phrase do not appear in your license (except to note that
- your license differs from this License) and (b) otherwise make it clear that Your version of
- the license contains terms which differ from the Mozilla Public License and Netscape Public
- License. (Filling in the name of the Initial Developer, Original Code or Contributor in the
- notice described in <a href="#exhibit-a">Exhibit A</a> shall not of themselves be deemed to
- be modifications of this License.)</p>
- <h2 id="section-7">7. <strong class="very-strong">Disclaimer of warranty</strong></h2>
-
- <p><strong class="very-strong">Covered code is provided under this license on an "as is"
-  basis, without warranty of any kind, either expressed or implied, including, without
-  limitation, warranties that the covered code is free of defects, merchantable, fit for a
-  particular purpose or non-infringing. The entire risk as to the quality and performance of
-  the covered code is with you. Should any covered code prove defective in any respect, you
-  (not the initial developer or any other contributor) assume the cost of any necessary
-  servicing, repair or correction. This disclaimer of warranty constitutes an essential part
-  of this license. No use of any covered code is authorized hereunder except under this
-  disclaimer.</strong></p>
- <h2 id="section-8">8. Termination</h2>
- <p id="section-8.1">8.1. This License and the rights granted hereunder will terminate
-  automatically if You fail to comply with terms herein and fail to cure such breach
-  within 30 days of becoming aware of the breach. All sublicenses to the Covered Code which
-  are properly granted shall survive any termination of this License. Provisions which, by
-  their nature, must remain in effect beyond the termination of this License shall survive.
- <p id="section-8.2">8.2. If You initiate litigation by asserting a patent infringement
-  claim (excluding declatory judgment actions) against Initial Developer or a Contributor
-  (the Initial Developer or Contributor against whom You file such action is referred to
-  as "Participant") alleging that:</p>
- <ol type="a">
-  <li id="section-8.2-a">such Participant's Contributor Version directly or indirectly
-   infringes any patent, then any and all rights granted by such Participant to You under
-   Sections <a href="#section-2.1">2.1</a> and/or <a href="#section-2.2">2.2</a> of this
-   License shall, upon 60 days notice from Participant terminate prospectively, unless if
-   within 60 days after receipt of notice You either: (i) agree in writing to pay
-   Participant a mutually agreeable reasonable royalty for Your past and future use of
-   Modifications made by such Participant, or (ii) withdraw Your litigation claim with
-   respect to the Contributor Version against such Participant. If within 60 days of
-   notice, a reasonable royalty and payment arrangement are not mutually agreed upon in
-   writing by the parties or the litigation claim is not withdrawn, the rights granted by
-   Participant to You under Sections <a href="#section-2.1">2.1</a> and/or
-   <a href="#section-2.2">2.2</a> automatically terminate at the expiration of the 60 day
-   notice period specified above.</li>
-  <li id="section-8.2-b">any software, hardware, or device, other than such Participant's
-   Contributor Version, directly or indirectly infringes any patent, then any rights
-   granted to You by such Participant under Sections 2.1(<a href="#section-2.1-b">b</a>)
-   and 2.2(<a href="#section-2.2-b">b</a>) are revoked effective as of the date You first
-   made, used, sold, distributed, or had made, Modifications made by that Participant.</li>
- </ol>
-
- <p id="section-8.3">8.3. If You assert a patent infringement claim against Participant
-  alleging that such Participant's Contributor Version directly or indirectly infringes
-  any patent where such claim is resolved (such as by license or settlement) prior to the
-  initiation of patent infringement litigation, then the reasonable value of the licenses
-  granted by such Participant under Sections <a href="#section-2.1">2.1</a> or
-  <a href="#section-2.2">2.2</a> shall be taken into account in determining the amount or
-  value of any payment or license.
- <p id="section-8.4">8.4. In the event of termination under Sections
-  <a href="#section-8.1">8.1</a> or <a href="#section-8.2">8.2</a> above, all end user
-  license agreements (excluding distributors and resellers) which have been validly
-  granted by You or any distributor hereunder prior to termination shall survive
-  termination.</p>
- <h2 id="section-9">9. <strong class="very-strong">Limitation of liability</strong></h2>
-
- <p><strong class="very-strong">Under no circumstances and under no legal theory, whether
-  tort (including negligence), contract, or otherwise, shall you, the initial developer,
-  any other contributor, or any distributor of covered code, or any supplier of any of
-  such parties, be liable to any person for any indirect, special, incidental, or
-  consequential damages of any character including, without limitation, damages for loss
-  of goodwill, work stoppage, computer failure or malfunction, or any and all other
-  commercial damages or losses, even if such party shall have been informed of the
-  possibility of such damages. This limitation of liability shall not apply to liability
-  for death or personal injury resulting from such party's negligence to the extent
-  applicable law prohibits such limitation. Some jurisdictions do not allow the exclusion
-  or limitation of incidental or consequential damages, so this exclusion and limitation
-  may not apply to you.</strong>
- <h2 id="section-10">10. <abbr title="United States">U.S.</abbr> government end users</h2>
- <p>The Covered Code is a "commercial item," as that term is defined in 48
-  <abbr>C.F.R.</abbr> 2.101 (<abbr title="October">Oct.</abbr> 1995), consisting of
-  "commercial computer software" and "commercial computer software documentation," as such
-  terms are used in 48 <abbr>C.F.R.</abbr> 12.212 (<abbr title="September">Sept.</abbr>
-
-  1995). Consistent with 48 <abbr>C.F.R.</abbr> 12.212 and 48 <abbr>C.F.R.</abbr>
-  227.7202-1 through 227.7202-4 (June 1995), all <abbr>U.S.</abbr> Government End Users
-  acquire Covered Code with only those rights set forth herein.</p>
- <h2 id="section-11">11. Miscellaneous</h2>
- <p>This License represents the complete agreement concerning subject matter hereof. If
-  any provision of this License is held to be unenforceable, such provision shall be
-  reformed only to the extent necessary to make it enforceable. This License shall be
-  governed by California law provisions (except to the extent applicable law, if any,
-  provides otherwise), excluding its conflict-of-law provisions. With respect to
-  disputes in which at least one party is a citizen of, or an entity chartered or
-  registered to do business in the United States of America, any litigation relating to
-  this License shall be subject to the jurisdiction of the Federal Courts of the
-  Northern District of California, with venue lying in Santa Clara County, California,
-  with the losing party responsible for costs, including without limitation, court
-  costs and reasonable attorneys' fees and expenses. The application of the United
-  Nations Convention on Contracts for the International Sale of Goods is expressly
-  excluded. Any law or regulation which provides that the language of a contract
-  shall be construed against the drafter shall not apply to this License.</p>
- <h2 id="section-12">12. Responsibility for claims</h2>
-
- <p>As between Initial Developer and the Contributors, each party is responsible for
-  claims and damages arising, directly or indirectly, out of its utilization of rights
-  under this License and You agree to work with Initial Developer and Contributors to
-  distribute such responsibility on an equitable basis. Nothing herein is intended or
-  shall be deemed to constitute any admission of liability.</p>
- <h2 id="section-13">13. Multiple-licensed code</h2>
- <p>Initial Developer may designate portions of the Covered Code as
-  "Multiple-Licensed". "Multiple-Licensed" means that the Initial Developer permits
-  you to utilize portions of the Covered Code under Your choice of the <abbr>MPL</abbr>
-  or the alternative licenses, if any, specified by the Initial Developer in the file
-  described in <a href="#exhibit-a">Exhibit A</a>.</p>
- <h2 id="exhibit-a">Exhibit A - Mozilla Public License.</h2>
- <pre>"The contents of this file are subject to the Mozilla Public License
-Version 1.1 (the "License"); you may not use this file except in
-compliance with the License. You may obtain a copy of the License at
-http://www.mozilla.org/MPL/
-
-Software distributed under the License is distributed on an "AS IS"
-basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
-License for the specific language governing rights and limitations
-under the License.
-
-The Original Code is ______________________________________.
-
-The Initial Developer of the Original Code is ________________________.
-Portions created by ______________________ are Copyright (C) ______
-_______________________. All Rights Reserved.
-
-Contributor(s): ______________________________________.
-
-Alternatively, the contents of this file may be used under the terms
-of the _____ license (the  "[___] License"), in which case the
-provisions of [______] License are applicable instead of those
-above. If you wish to allow use of your version of this file only
-under the terms of the [____] License and not to allow others to use
-your version of this file under the MPL, indicate your decision by
-deleting the provisions above and replace them with the notice and
-other provisions required by the [___] License. If you do not delete
-the provisions above, a recipient may use your version of this file
-under either the MPL or the [___] License."</pre>
-
- <p>NOTE: The text of this Exhibit A may differ slightly from the text of
-  the notices in the Source Code files of the Original Code. You should
-  use the text of this Exhibit A rather than the text found in the
-  Original Code Source Code for Your Modifications.</p>
-
-<div class="copyright">(no longer) valid <a href="http://validator.w3.org/check/referer">xhtml</a> and <a href="http://jigsaw.w3.org/css-validator/validator?uri=referer">css</a>&nbsp;&nbsp;|&nbsp;&nbsp;design by <a href="http://enanocms.org/User:dandaman32">dan fuhry</a> and <a href="http://www.fusionnerd.com/">manoj maddali</a></div>
-
-</div>
-
-</body>
-</html>