IE7Pro Forum

A Community of IE7Pro users

You are not logged in.

#1 03-04-2007 06:12:53

FremyCompany
Senior Member
From: Belgium
Registered: 07-02-2007
Posts: 1165
Website

FireBug Lite for all sites !

FireBug is a great FF extension ! But for non-FF browser, FireBug developpers have developped a little JavaScript script that permit to use a "little" FireBug console... but you must add this script to all pages of your site... not a good idea... Ah, but UserScript can do this for you !!! Gread idea !!!

Some minor transformation for UserScript compatibility and it works !

Code:

// ==UserScript==
// @name          FireBug Console
// @description   FireBug Lite!
// @include       *
// ==/UserScript==


// ADD (FREMYCOMPANY) //
var firebug_html="%3C!DOCTYPE%20html%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20XHTML%201.0%20Strict%2F%2FEN%22%0A%20%20%20%20%20%20%20%20%20%22http%3A%2F%2Fwww.w3.org%2FTR%2Fxhtml1%2FDTD%2Fxhtml1-strict.dtd%22%3E%0A%0A%3Chtml%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%22%3E%0A%0A%3Chead%3E%0A%20%20%20%20%3Ctitle%3EFirebug%3C%2Ftitle%3E%0A%20%20%20%20%3Clink%20rel%3D%22stylesheet%22%20type%3D%22text%2Fcss%22%20href%3D%22http%3A%2F%2Fwww.getfirebug.com%2Ffirebug%2Ffirebug.css%22%3E%0A%3C%2Fhead%3E%0A%0A%3Cbody%3E%0A%20%20%20%20%3Cdiv%20id%3D%22toolbar%22%20class%3D%22toolbar%22%3E%0A%20%20%20%20%20%20%20%20%3Ca%20href%3D%22%23%22%20onclick%3D%22parent.console.clear()%22%3EClear%3C%2Fa%3E%0A%20%20%20%20%20%20%20%20%3Cspan%20class%3D%22toolbarRight%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Ca%20href%3D%22%23%22%20onclick%3D%22parent.console.close()%22%3EClose%3C%2Fa%3E%0A%20%20%20%20%20%20%20%20%3C%2Fspan%3E%0A%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%3Cdiv%20id%3D%22log%22%3E%3C%2Fdiv%3E%0A%20%20%20%20%3Cinput%20type%3D%22text%22%20id%3D%22commandLine%22%3E%0A%20%20%20%20%0A%20%20%20%20%3Cscript%3Eparent.onFirebugReady(document)%3B%3C%2Fscript%3E%0A%3C%2Fbody%3E%0A%3C%2Fhtml%3E%0A";
var firebug_css="%0Ahtml%2C%20body%20%7B%0A%20%20%20%20margin%3A%200%3B%0A%20%20%20%20background%3A%20%23FFFFFF%3B%0A%20%20%20%20font-family%3A%20Lucida%20Grande%2C%20Tahoma%2C%20sans-serif%3B%0A%20%20%20%20font-size%3A%2011px%3B%0A%20%20%20%20overflow%3A%20hidden%3B%0A%7D%0A%0Aa%20%7B%0A%20%20%20%20text-decoration%3A%20none%3B%0A%7D%0A%0Aa%3Ahover%20%7B%0A%20%20%20%20text-decoration%3A%20underline%3B%0A%7D%0A%0A.toolbar%20%7B%0A%20%20%20%20height%3A%2014px%3B%0A%20%20%20%20border-top%3A%201px%20solid%20ThreeDHighlight%3B%0A%20%20%20%20border-bottom%3A%201px%20solid%20ThreeDShadow%3B%0A%20%20%20%20padding%3A%202px%206px%3B%0A%20%20%20%20background%3A%20ThreeDFace%3B%0A%7D%0A%0A.toolbarRight%20%7B%0A%20%20%20%20position%3A%20absolute%3B%0A%20%20%20%20top%3A%204px%3B%0A%20%20%20%20right%3A%206px%3B%0A%7D%0A%0A%23log%20%7B%0A%20%20%20%20overflow%3A%20auto%3B%0A%20%20%20%20position%3A%20absolute%3B%0A%20%20%20%20left%3A%200%3B%0A%20%20%20%20width%3A%20100%25%3B%0A%7D%0A%0A%23commandLine%20%7B%0A%20%20%20%20position%3A%20absolute%3B%0A%20%20%20%20bottom%3A%200%3B%0A%20%20%20%20left%3A%200%3B%0A%20%20%20%20width%3A%20100%25%3B%0A%20%20%20%20height%3A%2018px%3B%0A%20%20%20%20border%3A%20none%3B%0A%20%20%20%20border-top%3A%201px%20solid%20ThreeDShadow%3B%0A%7D%0A%0A%2F************************************************************************************************%2F%0A%0A.logRow%20%7B%0A%20%20%20%20position%3A%20relative%3B%0A%20%20%20%20border-bottom%3A%201px%20solid%20%23D7D7D7%3B%0A%20%20%20%20padding%3A%202px%204px%201px%206px%3B%0A%20%20%20%20background-color%3A%20%23FFFFFF%3B%0A%7D%0A%0A.logRow-command%20%7B%0A%20%20%20%20font-family%3A%20Monaco%2C%20monospace%3B%0A%20%20%20%20color%3A%20blue%3B%0A%7D%0A%0A.objectBox-null%20%7B%0A%20%20%20%20padding%3A%200%202px%3B%0A%20%20%20%20border%3A%201px%20solid%20%23666666%3B%0A%20%20%20%20background-color%3A%20%23888888%3B%0A%20%20%20%20color%3A%20%23FFFFFF%3B%0A%7D%0A%0A.objectBox-string%20%7B%0A%20%20%20%20font-family%3A%20Monaco%2C%20monospace%3B%0A%20%20%20%20color%3A%20red%3B%0A%20%20%20%20white-space%3A%20pre%3B%0A%7D%0A%0A.objectBox-number%20%7B%0A%20%20%20%20color%3A%20%23000088%3B%0A%7D%0A%0A.objectBox-function%20%7B%0A%20%20%20%20font-family%3A%20Monaco%2C%20monospace%3B%0A%20%20%20%20color%3A%20DarkGreen%3B%0A%7D%0A%0A.objectBox-object%20%7B%0A%20%20%20%20color%3A%20DarkGreen%3B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%7D%0A%0A%2F************************************************************************************************%2F%0A%0A.logRow-info%2C%0A.logRow-error%2C%0A.logRow-warning%20%7B%0A%20%20%20%20background%3A%20%23FFFFFF%20no-repeat%202px%202px%3B%0A%20%20%20%20padding-left%3A%2020px%3B%0A%20%20%20%20padding-bottom%3A%203px%3B%0A%7D%0A%0A.logRow-info%20%7B%0A%20%20%20%20background-image%3A%20url(infoIcon.png)%3B%0A%7D%0A%0A.logRow-warning%20%7B%0A%20%20%20%20background-color%3A%20cyan%3B%0A%20%20%20%20background-image%3A%20url(warningIcon.png)%3B%0A%7D%0A%0A.logRow-error%20%7B%0A%20%20%20%20background-color%3A%20LightYellow%3B%0A%20%20%20%20background-image%3A%20url(errorIcon.png)%3B%0A%7D%0A%0A.errorMessage%20%7B%0A%20%20%20%20vertical-align%3A%20top%3B%0A%20%20%20%20color%3A%20%23FF0000%3B%0A%7D%0A%0A.objectBox-sourceLink%20%7B%0A%20%20%20%20position%3A%20absolute%3B%0A%20%20%20%20right%3A%204px%3B%0A%20%20%20%20top%3A%202px%3B%0A%20%20%20%20padding-left%3A%208px%3B%0A%20%20%20%20font-family%3A%20Lucida%20Grande%2C%20sans-serif%3B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%20%20%20%20color%3A%20%230000FF%3B%0A%7D%0A%0A%2F************************************************************************************************%2F%0A%0A.logRow-group%20%7B%0A%20%20%20%20background%3A%20%23EEEEEE%3B%0A%20%20%20%20border-bottom%3A%20none%3B%0A%7D%0A%0A.logGroup%20%7B%0A%20%20%20%20background%3A%20%23EEEEEE%3B%0A%7D%0A%0A.logGroupBox%20%7B%0A%20%20%20%20margin-left%3A%2024px%3B%0A%20%20%20%20border-top%3A%201px%20solid%20%23D7D7D7%3B%0A%20%20%20%20border-left%3A%201px%20solid%20%23D7D7D7%3B%0A%7D%0A%0A%2F************************************************************************************************%2F%0A%0A.selectorTag%2C%0A.selectorId%2C%0A.selectorClass%20%7B%0A%20%20%20%20font-family%3A%20Monaco%2C%20monospace%3B%0A%20%20%20%20font-weight%3A%20normal%3B%0A%7D%0A%0A.selectorTag%20%7B%0A%20%20%20%20color%3A%20%230000FF%3B%0A%7D%0A%0A.selectorId%20%7B%0A%20%20%20%20color%3A%20DarkBlue%3B%0A%7D%0A%0A.selectorClass%20%7B%0A%20%20%20%20color%3A%20red%3B%0A%7D%0A%0A%2F************************************************************************************************%2F%0A%0A.objectBox-element%20%7B%0A%20%20%20%20font-family%3A%20Monaco%2C%20monospace%3B%0A%20%20%20%20color%3A%20%23000088%3B%0A%7D%0A%0A.nodeChildren%20%7B%0A%20%20%20%20margin-left%3A%2016px%3B%0A%7D%0A%0A.nodeTag%20%7B%0A%20%20%20%20color%3A%20blue%3B%0A%7D%0A%0A.nodeValue%20%7B%0A%20%20%20%20color%3A%20%23FF0000%3B%0A%20%20%20%20font-weight%3A%20normal%3B%0A%7D%0A%0A.nodeText%2C%0A.nodeComment%20%7B%0A%20%20%20%20margin%3A%200%202px%3B%0A%20%20%20%20vertical-align%3A%20top%3B%0A%7D%0A%0A.nodeText%20%7B%0A%20%20%20%20color%3A%20%23333333%3B%0A%7D%0A%0A.nodeComment%20%7B%0A%20%20%20%20color%3A%20DarkGreen%3B%0A%7D%0A%0A%2F************************************************************************************************%2F%0A%0A.propertyNameCell%20%7B%0A%20%20%20%20vertical-align%3A%20top%3B%0A%7D%0A%0A.propertyName%20%7B%0A%20%20%20%20font-weight%3A%20bold%3B%0A%7D%0A";
var objectBrowser_html="%3C!DOCTYPE%20html%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20XHTML%201.0%20Transitional%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FTR%2Fxhtml1%2FDTD%2Fxhtml1-transitional.dtd%22%3E%0D%0A%3Chtml%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%22%20%3E%0D%0A%3Chead%3E%0D%0A%20%20%20%20%3Ctitle%3EObject%20Browser%3C%2Ftitle%3E%0D%0A%20%20%20%20%3Cscript%20type%3D%22text%2Fjavascript%22%3E%0D%0A%20%20%20%20var%20target%20%3D%20opener.console.target%3B%0D%0A%20%20%20%20var%20targets%20%3D%20%5Btarget%5D%3B%0D%0A%20%20%20%20%20%20%20%20targets.currentIndex%20%3D%200%3B%0D%0A%20%20%20%20%20%20%20%20targets.moveUp%3Dfunction(name)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20this.currentIndex%2B%2B%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20this%5Bthis.currentIndex%5D%3Dthis%5Bthis.currentIndex-1%5D%5Bname%5D%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20this.refresh()%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20targets.moveNext%3Dfunction(newTarget)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(!newTarget)%20%7B%20alert(%22This%20object%20doesn't%20exists%22)%3B%20return%20false%3B%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20this.currentIndex%2B%2B%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20this%5Bthis.currentIndex%5D%3DnewTarget%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20this.refresh()%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20targets.moveDown%3Dfunction()%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.currentIndex!%3D0)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20delete%20this%5Bthis.currentIndex%5D%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.currentIndex--%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.refresh()%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20targets.printValue%3Dfunction()%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20w%20%3D%20window.open(%22about%3Ablank%22%2C%22_blank%22%2C%22height%3D600%2C%20width%3D800%2C%20centerscreen%3Dyes%2C%20center%3Dyes%2C%20scrollbars%3Dyes%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20targets.printValue.w%3Dw%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20setTimeout(targets.printValue.wait%2C%20150)%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20targets.printValue.wait%3Dfunction()%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20w%20%3D%20targets.printValue.w%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(w.document)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20s%20%3D%20document.createElement(%22span%22)%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20s.appendChild(document.createTextNode((%22%22%2Btarget).split(%22%5Cn%22).join(%22%5BBR%5D%22).split(%22%5Ct%22).join(%22%5BS%5D%22)))%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20w.document.write(s.innerHTML.split(%22%5BBR%5D%22).join(%22%3CBR%20%2F%3E%22).split(%22%5BS%5D%22).join(%22%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%22))%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setTimeout(targets.printValue%2C%20150)%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20targets.refresh%3Dfunction()%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20target%20%3D%20targets%5Btargets.currentIndex%5D%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20tbody%20%3D%20%22%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20s%20%3D%20document.createElement(%22span%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20s.appendChild(document.createTextNode(%22%22%2Btarget))%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20tbody%20%2B%3D%20getData(%22propertyRow%22%2C%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22name%22%3A%22%3Cb%3EValue%3C%2Fb%3E%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22target%22%3A%22targets.printValue()%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22value%22%3AescapeHTML((%22%22%2Btarget).split(%22%5Cn%22)%5B0%5D.substr(0%2C%2027)%20%2B%20%22...%22)%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D)%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20catch%20(ex)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20tbody%20%2B%3D%20getData(%22propertyRow%22%2C%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22name%22%3A%22%3Cb%3EValue%3C%2Fb%3E%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22target%22%3A%22targets.printValue()%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22value%22%3A%22%5Bobject%5D%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D)%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20tbody%20%2B%3D%20getData(%22propertyRow%22%2C%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22name%22%3A%22%3Cb%3EProperties%3C%2Fb%3E%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22target%22%3A%22%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22value%22%3A%22%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D)%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(key%20in%20target)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20tbody%20%2B%3D%20getData(%22propertyRow%22%2C%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22name%22%3Akey%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22target%22%3A%22targets.moveUp('%22%2Bkey.split(%22'%22).join(%22%5C%5C'%22)%2B%22')%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22value%22%3AescapeHTML((%22%22%2Btarget%5Bkey%5D).split(%22%5Cn%22)%5B0%5D.substr(0%2C%2030))%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D)%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20catch%20(ex)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20tbody%20%2B%3D%20getData(%22propertyRow%22%2C%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22name%22%3Akey%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22target%22%3A%22targets.moveUp('%22%2Bkey.split(%22'%22).join(%22%5C%5C'%22)%2B%22')%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22value%22%3A%22%5Bobject%5D%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D)%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20catch%20(ex)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20tbody%20%2B%3D%20getData(%22propertyRow%22%2C%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22name%22%3A%22Couldn't%20evaluate%20children%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22target%22%3A%22%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22value%22%3A%22...%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D)%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20catch%20(ex)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20table%20%3D%20getData(%22propertyTable%22%2C%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22tbody%22%3Atbody%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20container%20%3D%20document.getElementById(%22properties%22)%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20container.innerHTML%3Dtable%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20container.scrollTop%20%3D%200%3B%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%0D%0A%20%20%20%20%20%20%20%20function%20getData(name%2C%20remplacements)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20res%20%3D%20document.getElementById(%22data_%22%20%2B%20name).firstChild.data%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(key%20in%20remplacements)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20res%20%3D%20res.split(%22%3C%5C%3F%22%20%2B%20key%20%2B%20%22%3F%5C%3E%22).join(remplacements%5Bkey%5D)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20res%3B%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%0D%0A%20%20%20%20%20%20%20%20escapeZone%20%3D%20document.createElement(%22span%22)%0D%0A%20%20%20%20%20%20%20%20function%20escapeHTML(t)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20escapeZone.innerHTML%3D%22%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20escapeZone.appendChild(document.createTextNode(t))%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20escapeZone.innerHTML%3B%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%0D%0A%20%20%20%20%20%20%20%20function%20Button1_onclick()%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20targets.moveDown()%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20%20%20%20%20function%20Button2_onclick()%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20targets.refresh()%3B%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%0D%0A%20%20%20%20%20%20%20%20function%20Button3_onclick()%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%20targets.moveNext(eval(document.getElementById(%22Input1%22).value))%3B%20%7D%20catch%20(ex)%20%7B%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20document.getElementById(%22Input1%22).value%3D%22target%22%3B%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%3C%2Fscript%3E%0D%0A%3C%2Fhead%3E%0D%0A%3Cbody%20bgcolor%3D%22buttonface%22%3E%0D%0A%20%20%20%20%3Cinput%20id%3D%22Button1%22%20type%3D%22button%22%20value%3D%22%20%20Back%20%20%22%20language%3D%22javascript%22%20onclick%3D%22return%20Button1_onclick()%22%20%2F%3E%0D%0A%20%20%20%20%3Cinput%20id%3D%22Button2%22%20type%3D%22button%22%20value%3D%22%20Refresh%20%22%20language%3D%22javascript%22%20onclick%3D%22return%20Button2_onclick()%22%20%2F%3E%0D%0A%20%20%20%20%3Cinput%20id%3D%22Input1%22%20type%3D%22input%22%20value%3D%22target%22%20language%3D%22javascript%22%20%2F%3E%0D%0A%20%20%20%20%3Cinput%20id%3D%22Button3%22%20type%3D%22button%22%20value%3D%22%20Execute%20%22%20language%3D%22javascript%22%20onclick%3D%22return%20Button3_onclick()%22%20%2F%3E%0D%0A%20%20%20%20%3Cbr%20%2F%3E%0D%0A%20%20%20%20%3Cdiv%20id%3D%22properties%22%20style%3D%22width%3A%20490px%3B%20height%3A%20300px%3B%20overflow-y%3A%20scroll%3B%20overflow-x%3A%20hidden%3B%20%22%3E%3C%2Fdiv%3E%0D%0A%20%20%20%20%3Cspan%20id%3D%22data%22%3E%0D%0A%20%20%20%20%20%20%20%20%3Cspan%20id%3D%22data_propertyTable%22%3E%3C!--%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Ctable%20width%3D%22490%22%20border%3D%221px%20black%20solid%22%20style%3D%22background-color%3A%20white%3B%20widht%3A%20490px%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Ctbody%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%3Ftbody%3F%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Ctr%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Ctd%20width%3D%22130px%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20No%20more%20property%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Ftd%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Ctd%20width%3D%22360px%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26nbsp%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Ftd%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Ftr%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Ftbody%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Ftable%3E%20%20%20%20%20%20%20%20%0D%0A%20%20%20%20%20%20%20%20--%3E%3C%2Fspan%3E%0D%0A%20%20%20%20%20%20%20%20%3Cspan%20id%3D%22data_propertyRow%22%3E%3C!--%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Ctr%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Ctd%20width%3D%22100px%22%20style%3D%22cursor%3A%20pointer%22%20onclick%3D%22%3C%3Ftarget%3F%3E%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%3Fname%3F%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Ftd%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Ctd%20width%3D%22300px%22%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%3Fvalue%3F%3E%26nbsp%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Ftd%3E%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Ftr%3E%0D%0A%20%20%20%20%20%20%20%20--%3E%3C%2Fspan%3E%0D%0A%20%20%20%20%3C%2Fspan%3E%0D%0A%20%20%20%20%3Cscript%3Etargets.refresh()%3C%2Fscript%3E%0D%0A%3C%2Fbody%3E%0D%0A%3C%2Fhtml%3E%0D%0A";
var firebug_base_URI="http://www.getfirebug.com/firebug/"
var objectCache=new Array();
// END ADD            //

if (!("console" in window) || !("firebug" in console)) {
(function()
{
    var document=window.document;
    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()
        {
            objectCache=new Array();
            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 isOpera = navigator.userAgent.indexOf("Opera") != -1;
    var isIE = !isOpera && navigator.userAgent.indexOf("MSIE") != -1;
    var isSafari = navigator.userAgent.indexOf("AppleWebKit") != -1;

    // ********************************************************************************************

    function toggleConsole(forceOpen)
    {
        frameVisible = forceOpen || !frameVisible;
        if (consoleFrame) {
            consoleFrame.style.visibility = frameVisible ? "visible" : "hidden";
            if (consoleFrame.style.visibility=="visible") {
                consoleFrame.timer=setInterval(layout, 100);
            } else { 
                clearInterval(consoleFrame.timer);
            }
        } 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();
            
            doc.createStyleSheet();
            doc.cssText=unescape(firebug_css);
            
            doc.oncontextmenu=function() { return false; }
        }

        var baseURL = getFirebugURL();

        consoleFrame = document.createElement("iframe");
        consoleFrame.name="firebug_console";
        consoleFrame.src="about:blank";
        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";
        consoleFrame.style.border = "3px inset"
        
        if (document.compatMode && (document.compatMode=="BackCompat")) {
            consoleFrame.style.position="absolute";
            consoleFrame.style.bottom="";
            consoleFrame.style.setExpression("width", "((document.compatMode && (document.compatMode=='CSS1Compat')) ? document.documentElement.clientWidth : document.body.clientWidth) -6")
            consoleFrame.style.setExpression("top","((document.compatMode && (document.compatMode=='CSS1Compat')) ? document.documentElement.scrollTop + (document.documentElement.clientHeight-this.clientHeight) : document.body.scrollTop + (document.body.clientHeight-this.clientHeight)) - 6");
        }
        document.body.appendChild(consoleFrame);
        
        try {
            window.consoleFrame=consoleFrame;
            consoleFrame.maxSize=function(newSize) {
                consoleFrame.style.display="none";
                consoleFrame.visibility="hidden";
                while ((newSize + consoleFrame.offsetTop + consoleFrame.offsetHeight > document.body.scrollHeight) && newSize > 0) {
                    newSize-=1;
                }
                consoleFrame.style.display="block";
                consoleFrame.visibility="visible";

                return newSize;
            }
            consoleFrame.pageResizer = document.createElement("DIV");
            consoleFrame.pageResizer.style.setExpression("height",  "consoleFrame.maxSize(consoleFrame.offsetHeight) + 'px'");
            consoleFrame.pageResizer.style.setExpression("top",     "consoleFrame.offsetTop + consoleFrame.offsetHeight");
            consoleFrame.pageResizer.style.setExpression("display", "consoleFrame.style.visibility=='hidden'?'none':''");
            document.body.appendChild(consoleFrame.pageResizer);
        } catch (ex) {}
        
        consoleFrame.wait=function() {
            var doc = null;
            if (consoleFrame.contentWindow) {
                doc = consoleFrame.contentWindow.document;
            } else if (consoleFrame.window) {
                doc = consoleFrame.window.document;
            } else {
                setTimeout(consoleFrame.wait, 150);
                return false;
            }
            doc.write(unescape(firebug_html));
        }
        setTimeout(consoleFrame.wait, 150)
    }
    
    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);
            }
        }
        */
        return firebug_base_URI;

    }
    
    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()
    {
        consoleFrame.style.height=parseInt(consoleFrame.style.height)-6;
        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";
        consoleFrame.style.height=parseInt(consoleFrame.style.height)+6;
    }
    
    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 "'";
                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)
        {
        }
    }

    window.analyse = function analyse(index) {
        window.console.target=objectCache[index];
        var w = window.open("about:blank","_blank","width=500,height=350");
        analyse.w=w;
        setTimeout(analyse.wait, 150);
    }
    analyse.wait=function() {
        var w = analyse.w;
        if (w.document) {
            w.document.write(unescape(objectBrowser_html))
        } else {
            setTimeout(analyse.wait, 150)
        }
    }
    
    function appendObjectFormatted(object, html)
    {
        var index=objectCache.length;
        objectCache.push(object);
        var text = objectToString(object);
        var reObject = /\[object (.*?)\]/;

        var m = reObject.exec(text);
        html.push('<span class="objectBox-object" style="cursor: pointer" onclick="parent.analyse('+index+')">', 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 = "";
    }
    
    //addEvent(window, "error", onError);
    window.onerror = onError;
    addEvent(document, isIE || isSafari ? "keydown" : "keypress", onKeyDown);
    
    if (document.documentElement.getAttribute("debug") == "true")
        toggleConsole(true);
        
})();
}

PS: Press "F12" to make the console appear

4 April : Update :
- Compatibility with the "BackCompat render system"
- Grow the page when the console appear to be able to scroll down to the end of the page
- Some fixes

Last edited by FremyCompany (04-04-2007 11:25:35)

Offline

 

#2 03-04-2007 23:03:00

Support Guy
IE7Pro Developer
Registered: 30-12-2006
Posts: 768

Re: FireBug Lite for all sites !

That's Great!

Offline

 

#3 04-04-2007 03:56:36

FremyCompany
Senior Member
From: Belgium
Registered: 07-02-2007
Posts: 1165
Website

Re: FireBug Lite for all sites !

Thank you.

PS:
Another project (with an ActiveX, such IE7Pro) already propose a similar solution : Companion.JS (=CJS).
But the look are currently minder beautyfull (this is a 0.1 BETA version)

Offline

 

#4 04-04-2007 04:47:16

skaue
New Member
Registered: 16-01-2007
Posts: 35

Re: FireBug Lite for all sites !

seems a litte buggy... I think it needs more improvements

Offline

 

#5 04-04-2007 08:27:01

FremyCompany
Senior Member
From: Belgium
Registered: 07-02-2007
Posts: 1165
Website

Re: FireBug Lite for all sites !

skaue wrote:

seems a litte buggy... I think it needs more improvements

What is the problem ?

I've updated the script today because there had a problem with some site that IE render as "BackCompat".
==> BackCompat doesn't understand the "fixed" position ==> Console not good positioned
===> I've found a solution with setExpression IE Method

I've solved some little bugs, too

==> Try the new build and say if yours bugs are always present

Last edited by FremyCompany (04-04-2007 08:28:34)

Offline

 

#6 04-04-2007 11:27:02

FremyCompany
Senior Member
From: Belgium
Registered: 07-02-2007
Posts: 1165
Website

Re: FireBug Lite for all sites !

re-Updated

Offline

 

#7 10-04-2007 05:37:49

skaue
New Member
Registered: 16-01-2007
Posts: 35

Re: FireBug Lite for all sites !

FremyCompany wrote:

skaue wrote:

seems a litte buggy... I think it needs more improvements

What is the problem ?

Well, one thing i noticed is some weird behaviour when resizing the debugger-window. You can drag the border to test this. Havent testet latest version yet.

Offline

 

#8 10-04-2007 05:44:44

FremyCompany
Senior Member
From: Belgium
Registered: 07-02-2007
Posts: 1165
Website

Re: FireBug Lite for all sites !

Normally the lastest build should not have this bug... But if you can verrify by your way, it seems better

Offline

 

#9 20-05-2007 11:25:08

FremyCompany
Senior Member
From: Belgium
Registered: 07-02-2007
Posts: 1165
Website

Re: FireBug Lite for all sites !

New version availlable !
http://www.iescripts.org/upload/preview/src/17.20070520112343.jpg

Last edited by FremyCompany (20-05-2007 11:25:21)

Offline

 

#10 14-01-2009 10:07:46

kenorb
New Member
Registered: 14-01-2009
Posts: 1

Re: FireBug Lite for all sites !

Somebody tested it with Chrome?
http://dev.chromium.org/developers/desi … er-scripts
I'm pressing F12 and nothing happens.
Any suggestion how to use it?

Offline

 

#11 14-01-2009 10:28:14

ellis123
Senior Member
Registered: 31-07-2007
Posts: 627

Re: FireBug Lite for all sites !

That Userscript plug-in system only works with FF Userscripts, not IE Userscripts.  In order for the script to work it will need to be both compatible with the FF userscript engine (which I'm pretty certain this isn't), and have the filename changed to "whatever".user.js .

Offline

 

Board footer

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson