From 72635d14f94875d141498a4d5e932eb40b405740 Mon Sep 17 00:00:00 2001 From: nextime <nextime@nexlab.it> Date: Sat, 23 Feb 2013 23:24:33 +0100 Subject: [PATCH] Add the base Franco's gui --- gui/franco/SkyliveX.js | 39 + gui/franco/firebug-lite.js | 8257 ++++++++++++++++++++++++++++++++++++ gui/franco/img/logo.png | Bin 0 -> 24194 bytes gui/franco/login.html | 41 + gui/franco/maingui.html | 108 + gui/franco/splash.html | 32 + 6 files changed, 8477 insertions(+) create mode 100644 gui/franco/SkyliveX.js create mode 100644 gui/franco/firebug-lite.js create mode 100644 gui/franco/img/logo.png create mode 100644 gui/franco/login.html create mode 100644 gui/franco/maingui.html create mode 100644 gui/franco/splash.html diff --git a/gui/franco/SkyliveX.js b/gui/franco/SkyliveX.js new file mode 100644 index 0000000..6cd36f4 --- /dev/null +++ b/gui/franco/SkyliveX.js @@ -0,0 +1,39 @@ +function changeContent(id, content) +{ + var n=document.getElementById(id); + if(typeof(n)!="undefined") + n.innerHTML=content; +} +function notify(content) +{ + if(typeof(notifycb)=="function") + notifycb(content); +} +function msgalert(content) +{ + if(typeof(alertcb)=="function") + alertcb(content); + else + alert(content); +} +function publicReceived(user, msg) +{ + if(typeof(public_received)=="function") + { + public_received(user, msg); + } else { + n = document.getElementById("chatarea"); + if(typeof(n)!="undefined") + { + var newel = document.createElement('p'); + newel.innerHTML="<"+user+"> "+msg; + n.appendChild(newel); + n.scollTop = n.scrollHeight; + } + } +} + +SkyliveX.changeContent.connect(changeContent); +SkyliveX.notify.connect(notify); +SkyliveX.alertmsg.connect(msgalert); +SkyliveX.public_received.connect(publicReceived); diff --git a/gui/franco/firebug-lite.js b/gui/franco/firebug-lite.js new file mode 100644 index 0000000..4fc0280 --- /dev/null +++ b/gui/franco/firebug-lite.js @@ -0,0 +1,8257 @@ +(function(){ +/************************************************************** + * + * Firebug Lite 1.4.0 + * + * Copyright (c) 2007, Parakey Inc. + * Released under BSD license. + * More information: http://getfirebug.com/firebuglite + * + **************************************************************/ +/* + * CSS selectors powered by: + * + * Sizzle CSS Selector Engine - v1.0 + * Copyright 2009, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +var FBL={}; +(function(){var productionDir="http://getfirebug.com/releases/lite/"; +var bookmarkletVersion=4; +var reNotWhitespace=/[^\s]/; +var reSplitFile=/:\/{1,3}(.*?)\/([^\/]*?)\/?($|\?.*)/; +this.reJavascript=/\s*javascript:\s*(.*)/; +this.reChrome=/chrome:\/\/([^\/]*)\//; +this.reFile=/file:\/\/([^\/]*)\//; +var userAgent=navigator.userAgent.toLowerCase(); +this.isFirefox=/firefox/.test(userAgent); +this.isOpera=/opera/.test(userAgent); +this.isSafari=/webkit/.test(userAgent); +this.isIE=/msie/.test(userAgent)&&!/opera/.test(userAgent); +this.isIE6=/msie 6/i.test(navigator.appVersion); +this.browserVersion=(userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1]; +this.isIElt8=this.isIE&&(this.browserVersion-0<8); +this.NS=null; +this.pixelsPerInch=null; +var namespaces=[]; +this.ns=function(fn){var ns={}; +namespaces.push(fn,ns); +return ns +}; +var FBTrace=null; +this.initialize=function(){if(window.firebug&&firebug.firebuglite||window.console&&console.firebuglite){return +}if(FBL.FBTrace){FBTrace=FBL.FBTrace +}else{FBTrace=FBL.FBTrace={} +}var isChromeContext=window.Firebug&&typeof window.Firebug.SharedEnv=="object"; +if(isChromeContext){sharedEnv=window.Firebug.SharedEnv; +delete window.Firebug.SharedEnv; +FBL.Env=sharedEnv; +FBL.Env.isChromeContext=true; +FBTrace.messageQueue=FBL.Env.traceMessageQueue +}else{FBL.NS=document.documentElement.namespaceURI; +FBL.Env.browser=window; +FBL.Env.destroy=destroyEnvironment; +if(document.documentElement.getAttribute("debug")=="true"){FBL.Env.Options.startOpened=true +}findLocation(); +var prefs=FBL.Store.get("FirebugLite")||{}; +FBL.Env.DefaultOptions=FBL.Env.Options; +FBL.Env.Options=FBL.extend(FBL.Env.Options,prefs.options||{}); +if(FBL.isFirefox&&typeof FBL.Env.browser.console=="object"&&FBL.Env.browser.console.firebug&&FBL.Env.Options.disableWhenFirebugActive){return +}}if(FBL.Env.isDebugMode){FBL.Env.browser.FBL=FBL +}this.isQuiksMode=FBL.Env.browser.document.compatMode=="BackCompat"; +this.isIEQuiksMode=this.isIE&&this.isQuiksMode; +this.isIEStantandMode=this.isIE&&!this.isQuiksMode; +this.noFixedPosition=this.isIE6||this.isIEQuiksMode; +if(FBL.Env.Options.enableTrace){FBTrace.initialize() +}if(FBTrace.DBG_INITIALIZE&&isChromeContext){FBTrace.sysout("FBL.initialize - persistent application","initialize chrome context") +}if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FBL.initialize",namespaces.length/2+" namespaces BEGIN") +}for(var i=0; +i<namespaces.length; +i+=2){var fn=namespaces[i]; +var ns=namespaces[i+1]; +fn.apply(ns) +}if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FBL.initialize",namespaces.length/2+" namespaces END"); +FBTrace.sysout("FBL waitForDocument","waiting document load") +}FBL.Ajax.initialize(); +FBL.Firebug.loadPrefs(); +if(FBL.Env.Options.enablePersistent){if(isChromeContext){FBL.FirebugChrome.clone(FBL.Env.FirebugChrome) +}else{FBL.Env.FirebugChrome=FBL.FirebugChrome; +FBL.Env.traceMessageQueue=FBTrace.messageQueue +}}waitForDocument() +}; +var waitForDocument=function waitForDocument(){var doc=FBL.Env.browser.document; +var body=doc.getElementsByTagName("body")[0]; +if(body){calculatePixelsPerInch(doc,body); +onDocumentLoad() +}else{setTimeout(waitForDocument,50) +}}; +var onDocumentLoad=function onDocumentLoad(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FBL onDocumentLoad","document loaded") +}if(FBL.isIE6){fixIE6BackgroundImageCache() +}if(FBL.Env.Options.enablePersistent&&FBL.Env.isChromeContext){FBL.Firebug.initialize(); +if(!FBL.Env.isDevelopmentMode){sharedEnv.destroy(); +sharedEnv=null +}}else{FBL.FirebugChrome.create() +}}; +var sharedEnv; +this.Env={Options:{saveCookies:true,saveWindowPosition:false,saveCommandLineHistory:false,startOpened:false,startInNewWindow:false,showIconWhenHidden:true,overrideConsole:true,ignoreFirebugElements:true,disableWhenFirebugActive:true,disableXHRListener:false,disableResourceFetching:false,enableTrace:false,enablePersistent:false},Location:{sourceDir:null,baseDir:null,skinDir:null,skin:null,app:null},skin:"xp",useLocalSkin:false,isDevelopmentMode:false,isDebugMode:false,isChromeContext:false,browser:null,chrome:null}; +var destroyEnvironment=function destroyEnvironment(){setTimeout(function(){FBL=null +},100) +}; +var findLocation=function findLocation(){var reFirebugFile=/(firebug-lite(?:-\w+)?(?:\.js|\.jgz))(?:#(.+))?$/; +var reGetFirebugSite=/(?:http|https):\/\/getfirebug.com\//; +var isGetFirebugSite; +var rePath=/^(.*\/)/; +var reProtocol=/^\w+:\/\//; +var path=null; +var doc=document; +var script=doc.getElementById("FirebugLite"); +var scriptSrc; +var hasSrcAttribute=true; +if(script){scriptSrc=script.src; +file=reFirebugFile.exec(scriptSrc); +var version=script.getAttribute("FirebugLite"); +var number=version?parseInt(version):0; +if(!version||!number||number<bookmarkletVersion){FBL.Env.bookmarkletOutdated=true +}}else{for(var i=0,s=doc.getElementsByTagName("script"),si; +si=s[i]; +i++){var file=null; +if(si.nodeName.toLowerCase()=="script"){if(file=reFirebugFile.exec(si.getAttribute("firebugSrc"))){scriptSrc=si.getAttribute("firebugSrc"); +hasSrcAttribute=false +}else{if(file=reFirebugFile.exec(si.src)){scriptSrc=si.src +}else{continue +}}script=si; +break +}}}if(script){script.firebugIgnore=true +}if(file){var fileName=file[1]; +var fileOptions=file[2]; +if(reProtocol.test(scriptSrc)){path=rePath.exec(scriptSrc)[1] +}else{var r=rePath.exec(scriptSrc); +var src=r?r[1]:scriptSrc; +var backDir=/^((?:\.\.\/)+)(.*)/.exec(src); +var reLastDir=/^(.*\/)[^\/]+\/$/; +path=rePath.exec(location.href)[1]; +if(backDir){var j=backDir[1].length/3; +var p; +while(j-->0){path=reLastDir.exec(path)[1] +}path+=backDir[2] +}else{if(src.indexOf("/")!=-1){if(/^\.\/./.test(src)){path+=src.substring(2) +}else{if(/^\/./.test(src)){var domain=/^(\w+:\/\/[^\/]+)/.exec(path); +path=domain[1]+src +}else{path+=src +}}}}}}FBL.Env.isChromeExtension=script&&script.getAttribute("extension")=="Chrome"; +if(FBL.Env.isChromeExtension){path=productionDir; +FBL.Env.bookmarkletOutdated=false; +script={innerHTML:"{showIconWhenHidden:false}"} +}isGetFirebugSite=reGetFirebugSite.test(path); +if(isGetFirebugSite&&path.indexOf("/releases/lite/")==-1){path+="releases/lite/"+(fileName=="firebug-lite-beta.js"?"beta/":"latest/") +}var m=path&&path.match(/([^\/]+)\/$/)||null; +if(path&&m){var Env=FBL.Env; +Env.useLocalSkin=path.indexOf(location.protocol+"//"+location.host+"/")==0&&!isGetFirebugSite; +if(fileName=="firebug-lite-dev.js"){Env.isDevelopmentMode=true; +Env.isDebugMode=true +}else{if(fileName=="firebug-lite-debug.js"){Env.isDebugMode=true +}}if(Env.browser.document.documentElement.getAttribute("debug")=="true"){Env.Options.startOpened=true +}if(fileOptions){var options=fileOptions.split(","); +for(var i=0,length=options.length; +i<length; +i++){var option=options[i]; +var name,value; +if(option.indexOf("=")!=-1){var parts=option.split("="); +name=parts[0]; +value=eval(unescape(parts[1])) +}else{name=option; +value=true +}if(name=="debug"){Env.isDebugMode=!!value +}else{if(name in Env.Options){Env.Options[name]=value +}else{Env[name]=value +}}}}if(hasSrcAttribute){var innerOptions=FBL.trim(script.innerHTML); +if(innerOptions){var innerOptionsObject=eval("("+innerOptions+")"); +for(var name in innerOptionsObject){var value=innerOptionsObject[name]; +if(name=="debug"){Env.isDebugMode=!!value +}else{if(name in Env.Options){Env.Options[name]=value +}else{Env[name]=value +}}}}}if(!Env.Options.saveCookies){FBL.Store.remove("FirebugLite") +}if(Env.isDebugMode){Env.Options.startOpened=true; +Env.Options.enableTrace=true; +Env.Options.disableWhenFirebugActive=false +}var loc=Env.Location; +var isProductionRelease=path.indexOf(productionDir)!=-1; +loc.sourceDir=path; +loc.baseDir=path.substr(0,path.length-m[1].length-1); +loc.skinDir=(isProductionRelease?path:loc.baseDir)+"skin/"+Env.skin+"/"; +loc.skin=loc.skinDir+"firebug.html"; +loc.app=path+fileName +}else{throw new Error("Firebug Error: Library path not found") +}}; +this.bind=function(){var args=cloneArray(arguments),fn=args.shift(),object=args.shift(); +return function(){return fn.apply(object,arrayInsert(cloneArray(args),0,arguments)) +} +}; +this.bindFixed=function(){var args=cloneArray(arguments),fn=args.shift(),object=args.shift(); +return function(){return fn.apply(object,args) +} +}; +this.extend=function(l,r){var newOb={}; +for(var n in l){newOb[n]=l[n] +}for(var n in r){newOb[n]=r[n] +}return newOb +}; +this.descend=function(prototypeParent,childProperties){function protoSetter(){}protoSetter.prototype=prototypeParent; +var newOb=new protoSetter(); +for(var n in childProperties){newOb[n]=childProperties[n] +}return newOb +}; +this.append=function(l,r){for(var n in r){l[n]=r[n] +}return l +}; +this.keys=function(map){var keys=[]; +try{for(var name in map){keys.push(name) +}}catch(exc){}return keys +}; +this.values=function(map){var values=[]; +try{for(var name in map){try{values.push(map[name]) +}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("lib.values FAILED ",exc) +}}}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("lib.values FAILED ",exc) +}}return values +}; +this.remove=function(list,item){for(var i=0; +i<list.length; +++i){if(list[i]==item){list.splice(i,1); +break +}}}; +this.sliceArray=function(array,index){var slice=[]; +for(var i=index; +i<array.length; +++i){slice.push(array[i]) +}return slice +}; +function cloneArray(array,fn){var newArray=[]; +if(fn){for(var i=0; +i<array.length; +++i){newArray.push(fn(array[i])) +}}else{for(var i=0; +i<array.length; +++i){newArray.push(array[i]) +}}return newArray +}function extendArray(array,array2){var newArray=[]; +newArray.push.apply(newArray,array); +newArray.push.apply(newArray,array2); +return newArray +}this.extendArray=extendArray; +this.cloneArray=cloneArray; +function arrayInsert(array,index,other){for(var i=0; +i<other.length; +++i){array.splice(i+index,0,other[i]) +}return array +}this.createStyleSheet=function(doc,url){var style=this.createElement("link"); +style.setAttribute("charset","utf-8"); +style.firebugIgnore=true; +style.setAttribute("rel","stylesheet"); +style.setAttribute("type","text/css"); +style.setAttribute("href",url); +return style +}; +this.addStyleSheet=function(doc,style){var heads=doc.getElementsByTagName("head"); +if(heads.length){heads[0].appendChild(style) +}else{doc.documentElement.appendChild(style) +}}; +this.appendStylesheet=function(doc,uri){if(this.$(uri,doc)){return +}var styleSheet=this.createStyleSheet(doc,uri); +styleSheet.setAttribute("id",uri); +this.addStyleSheet(doc,styleSheet) +}; +this.addScript=function(doc,id,src){var element=doc.createElementNS("http://www.w3.org/1999/xhtml","html:script"); +element.setAttribute("type","text/javascript"); +element.setAttribute("id",id); +if(!FBTrace.DBG_CONSOLE){FBL.unwrapObject(element).firebugIgnore=true +}element.innerHTML=src; +if(doc.documentElement){doc.documentElement.appendChild(element) +}else{if(FBTrace.DBG_ERRORS){FBTrace.sysout("lib.addScript doc has no documentElement:",doc) +}}return element +}; +this.getStyle=this.isIE?function(el,name){return el.currentStyle[name]||el.style[name]||undefined +}:function(el,name){return el.ownerDocument.defaultView.getComputedStyle(el,null)[name]||el.style[name]||undefined +}; +var entityConversionLists=this.entityConversionLists={normal:{whitespace:{"\t":"\u200c\u2192","\n":"\u200c\u00b6","\r":"\u200c\u00ac"," ":"\u200c\u00b7"}},reverse:{whitespace:{"	":"\t","
":"\n","\u200c\u2192":"\t","\u200c\u00b6":"\n","\u200c\u00ac":"\r","\u200c\u00b7":" "}}}; +var normal=entityConversionLists.normal,reverse=entityConversionLists.reverse; +function addEntityMapToList(ccode,entity){var lists=Array.prototype.slice.call(arguments,2),len=lists.length,ch=String.fromCharCode(ccode); +for(var i=0; +i<len; +i++){var list=lists[i]; +normal[list]=normal[list]||{}; +normal[list][ch]="&"+entity+";"; +reverse[list]=reverse[list]||{}; +reverse[list]["&"+entity+";"]=ch +}}var e=addEntityMapToList,white="whitespace",text="text",attr="attributes",css="css",editor="editor"; +e(34,"quot",attr,css); +e(38,"amp",attr,text,css); +e(39,"apos",css); +e(60,"lt",attr,text,css); +e(62,"gt",attr,text,css); +e(169,"copy",text,editor); +e(174,"reg",text,editor); +e(8482,"trade",text,editor); +e(8210,"#8210",attr,text,editor); +e(8211,"ndash",attr,text,editor); +e(8212,"mdash",attr,text,editor); +e(8213,"#8213",attr,text,editor); +e(160,"nbsp",attr,text,white,editor); +e(8194,"ensp",attr,text,white,editor); +e(8195,"emsp",attr,text,white,editor); +e(8201,"thinsp",attr,text,white,editor); +e(8204,"zwnj",attr,text,white,editor); +e(8205,"zwj",attr,text,white,editor); +e(8206,"lrm",attr,text,white,editor); +e(8207,"rlm",attr,text,white,editor); +e(8203,"#8203",attr,text,white,editor); +var entityConversionRegexes={normal:{},reverse:{}}; +var escapeEntitiesRegEx={normal:function(list){var chars=[]; +for(var ch in list){chars.push(ch) +}return new RegExp("(["+chars.join("")+"])","gm") +},reverse:function(list){var chars=[]; +for(var ch in list){chars.push(ch) +}return new RegExp("("+chars.join("|")+")","gm") +}}; +function getEscapeRegexp(direction,lists){var name="",re; +var groups=[].concat(lists); +for(i=0; +i<groups.length; +i++){name+=groups[i].group +}re=entityConversionRegexes[direction][name]; +if(!re){var list={}; +if(groups.length>1){for(var i=0; +i<groups.length; +i++){var aList=entityConversionLists[direction][groups[i].group]; +for(var item in aList){list[item]=aList[item] +}}}else{if(groups.length==1){list=entityConversionLists[direction][groups[0].group] +}else{list={} +}}re=entityConversionRegexes[direction][name]=escapeEntitiesRegEx[direction](list) +}return re +}function createSimpleEscape(name,direction){return function(value){var list=entityConversionLists[direction][name]; +return String(value).replace(getEscapeRegexp(direction,{group:name,list:list}),function(ch){return list[ch] +}) +} +}function escapeGroupsForEntities(str,lists){lists=[].concat(lists); +var re=getEscapeRegexp("normal",lists),split=String(str).split(re),len=split.length,results=[],cur,r,i,ri=0,l,list,last=""; +if(!len){return[{str:String(str),group:"",name:""}] +}for(i=0; +i<len; +i++){cur=split[i]; +if(cur==""){continue +}for(l=0; +l<lists.length; +l++){list=lists[l]; +r=entityConversionLists.normal[list.group][cur]; +if(r){results[ri]={str:r,"class":list["class"],extra:list.extra[cur]?list["class"]+list.extra[cur]:""}; +break +}}if(!r){results[ri]={str:cur,"class":"",extra:""} +}ri++ +}return results +}this.escapeGroupsForEntities=escapeGroupsForEntities; +function unescapeEntities(str,lists){var re=getEscapeRegexp("reverse",lists),split=String(str).split(re),len=split.length,results=[],cur,r,i,ri=0,l,list; +if(!len){return str +}lists=[].concat(lists); +for(i=0; +i<len; +i++){cur=split[i]; +if(cur==""){continue +}for(l=0; +l<lists.length; +l++){list=lists[l]; +r=entityConversionLists.reverse[list.group][cur]; +if(r){results[ri]=r; +break +}}if(!r){results[ri]=cur +}ri++ +}return results.join("")||"" +}var escapeForTextNode=this.escapeForTextNode=createSimpleEscape("text","normal"); +var escapeForHtmlEditor=this.escapeForHtmlEditor=createSimpleEscape("editor","normal"); +var escapeForElementAttribute=this.escapeForElementAttribute=createSimpleEscape("attributes","normal"); +var escapeForCss=this.escapeForCss=createSimpleEscape("css","normal"); +var escapeForSourceLine=this.escapeForSourceLine=createSimpleEscape("text","normal"); +var unescapeWhitespace=createSimpleEscape("whitespace","reverse"); +this.unescapeForTextNode=function(str){if(Firebug.showTextNodesWithWhitespace){str=unescapeWhitespace(str) +}if(!Firebug.showTextNodesWithEntities){str=escapeForElementAttribute(str) +}return str +}; +this.escapeNewLines=function(value){return value.replace(/\r/g,"\\r").replace(/\n/g,"\\n") +}; +this.stripNewLines=function(value){return typeof(value)=="string"?value.replace(/[\r\n]/g," "):value +}; +this.escapeJS=function(value){return value.replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace('"','\\"',"g") +}; +function escapeHTMLAttribute(value){function replaceChars(ch){switch(ch){case"&":return"&"; +case"'":return apos; +case'"':return quot +}return"?" +}var apos="'",quot=""",around='"'; +if(value.indexOf('"')==-1){quot='"'; +apos="'" +}else{if(value.indexOf("'")==-1){quot='"'; +around="'" +}}return around+(String(value).replace(/[&'"]/g,replaceChars))+around +}function escapeHTML(value){function replaceChars(ch){switch(ch){case"<":return"<"; +case">":return">"; +case"&":return"&"; +case"'":return"'"; +case'"':return""" +}return"?" +}return String(value).replace(/[<>&"']/g,replaceChars) +}this.escapeHTML=escapeHTML; +this.cropString=function(text,limit){text=text+""; +if(!limit){var halfLimit=50 +}else{var halfLimit=limit/2 +}if(text.length>limit){return this.escapeNewLines(text.substr(0,halfLimit)+"..."+text.substr(text.length-halfLimit)) +}else{return this.escapeNewLines(text) +}}; +this.isWhitespace=function(text){return !reNotWhitespace.exec(text) +}; +this.splitLines=function(text){var reSplitLines2=/.*(:?\r\n|\n|\r)?/mg; +var lines; +if(text.match){lines=text.match(reSplitLines2) +}else{var str=text+""; +lines=str.match(reSplitLines2) +}lines.pop(); +return lines +}; +this.safeToString=function(ob){if(this.isIE){try{return ob+"" +}catch(E){FBTrace.sysout("Lib.safeToString() failed for ",ob); +return"" +}}try{if(ob&&"toString" in ob&&typeof ob.toString=="function"){return ob.toString() +}}catch(exc){return ob+"" +}}; +this.hasProperties=function(ob){try{for(var name in ob){return true +}}catch(exc){}return false +}; +var reTrim=/^\s+|\s+$/g; +this.trim=function(s){return s.replace(reTrim,"") +}; +this.emptyFn=function(){}; +this.isVisible=function(elt){return this.getStyle(elt,"visibility")!="hidden"&&(elt.offsetWidth>0||elt.offsetHeight>0||elt.tagName in invisibleTags||elt.namespaceURI=="http://www.w3.org/2000/svg"||elt.namespaceURI=="http://www.w3.org/1998/Math/MathML") +}; +this.collapse=function(elt,collapsed){if(this.isIElt8){if(collapsed){this.setClass(elt,"collapsed") +}else{this.removeClass(elt,"collapsed") +}}else{elt.setAttribute("collapsed",collapsed?"true":"false") +}}; +this.obscure=function(elt,obscured){if(obscured){this.setClass(elt,"obscured") +}else{this.removeClass(elt,"obscured") +}}; +this.hide=function(elt,hidden){elt.style.visibility=hidden?"hidden":"visible" +}; +this.clearNode=function(node){var nodeName=" "+node.nodeName.toLowerCase()+" "; +var ignoreTags=" table tbody thead tfoot th tr td "; +if(this.isIE&&ignoreTags.indexOf(nodeName)!=-1){this.eraseNode(node) +}else{node.innerHTML="" +}}; +this.eraseNode=function(node){while(node.lastChild){node.removeChild(node.lastChild) +}}; +this.iterateWindows=function(win,handler){if(!win||!win.document){return +}handler(win); +if(win==top||!win.frames){return +}for(var i=0; +i<win.frames.length; +++i){var subWin=win.frames[i]; +if(subWin!=win){this.iterateWindows(subWin,handler) +}}}; +this.getRootWindow=function(win){for(; +win; +win=win.parent){if(!win.parent||win==win.parent||!this.instanceOf(win.parent,"Window")){return win +}}return null +}; +this.getClientOffset=function(elt){var addOffset=function addOffset(elt,coords,view){var p=elt.offsetParent; +var chrome=Firebug.chrome; +if(elt.offsetLeft){coords.x+=elt.offsetLeft+chrome.getMeasurementInPixels(elt,"borderLeft") +}if(elt.offsetTop){coords.y+=elt.offsetTop+chrome.getMeasurementInPixels(elt,"borderTop") +}if(p){if(p.nodeType==1){addOffset(p,coords,view) +}}else{var otherView=isIE?elt.ownerDocument.parentWindow:elt.ownerDocument.defaultView; +if(!otherView.opener&&otherView.frameElement){addOffset(otherView.frameElement,coords,otherView) +}}}; +var isIE=this.isIE; +var coords={x:0,y:0}; +if(elt){var view=isIE?elt.ownerDocument.parentWindow:elt.ownerDocument.defaultView; +addOffset(elt,coords,view) +}return coords +}; +this.getViewOffset=function(elt,singleFrame){function addOffset(elt,coords,view){var p=elt.offsetParent; +coords.x+=elt.offsetLeft-(p?p.scrollLeft:0); +coords.y+=elt.offsetTop-(p?p.scrollTop:0); +if(p){if(p.nodeType==1){var parentStyle=view.getComputedStyle(p,""); +if(parentStyle.position!="static"){coords.x+=parseInt(parentStyle.borderLeftWidth); +coords.y+=parseInt(parentStyle.borderTopWidth); +if(p.localName=="TABLE"){coords.x+=parseInt(parentStyle.paddingLeft); +coords.y+=parseInt(parentStyle.paddingTop) +}else{if(p.localName=="BODY"){var style=view.getComputedStyle(elt,""); +coords.x+=parseInt(style.marginLeft); +coords.y+=parseInt(style.marginTop) +}}}else{if(p.localName=="BODY"){coords.x+=parseInt(parentStyle.borderLeftWidth); +coords.y+=parseInt(parentStyle.borderTopWidth) +}}var parent=elt.parentNode; +while(p!=parent){coords.x-=parent.scrollLeft; +coords.y-=parent.scrollTop; +parent=parent.parentNode +}addOffset(p,coords,view) +}}else{if(elt.localName=="BODY"){var style=view.getComputedStyle(elt,""); +coords.x+=parseInt(style.borderLeftWidth); +coords.y+=parseInt(style.borderTopWidth); +var htmlStyle=view.getComputedStyle(elt.parentNode,""); +coords.x-=parseInt(htmlStyle.paddingLeft); +coords.y-=parseInt(htmlStyle.paddingTop) +}if(elt.scrollLeft){coords.x+=elt.scrollLeft +}if(elt.scrollTop){coords.y+=elt.scrollTop +}var win=elt.ownerDocument.defaultView; +if(win&&(!singleFrame&&win.frameElement)){addOffset(win.frameElement,coords,win) +}}}var coords={x:0,y:0}; +if(elt){addOffset(elt,coords,elt.ownerDocument.defaultView) +}return coords +}; +this.getLTRBWH=function(elt){var bcrect,dims={left:0,top:0,right:0,bottom:0,width:0,height:0}; +if(elt){bcrect=elt.getBoundingClientRect(); +dims.left=bcrect.left; +dims.top=bcrect.top; +dims.right=bcrect.right; +dims.bottom=bcrect.bottom; +if(bcrect.width){dims.width=bcrect.width; +dims.height=bcrect.height +}else{dims.width=dims.right-dims.left; +dims.height=dims.bottom-dims.top +}}return dims +}; +this.applyBodyOffsets=function(elt,clientRect){var od=elt.ownerDocument; +if(!od.body){return clientRect +}var style=od.defaultView.getComputedStyle(od.body,null); +var pos=style.getPropertyValue("position"); +if(pos==="absolute"||pos==="relative"){var borderLeft=parseInt(style.getPropertyValue("border-left-width").replace("px",""),10)||0; +var borderTop=parseInt(style.getPropertyValue("border-top-width").replace("px",""),10)||0; +var paddingLeft=parseInt(style.getPropertyValue("padding-left").replace("px",""),10)||0; +var paddingTop=parseInt(style.getPropertyValue("padding-top").replace("px",""),10)||0; +var marginLeft=parseInt(style.getPropertyValue("margin-left").replace("px",""),10)||0; +var marginTop=parseInt(style.getPropertyValue("margin-top").replace("px",""),10)||0; +var offsetX=borderLeft+paddingLeft+marginLeft; +var offsetY=borderTop+paddingTop+marginTop; +clientRect.left-=offsetX; +clientRect.top-=offsetY; +clientRect.right-=offsetX; +clientRect.bottom-=offsetY +}return clientRect +}; +this.getOffsetSize=function(elt){return{width:elt.offsetWidth,height:elt.offsetHeight} +}; +this.getOverflowParent=function(element){for(var scrollParent=element.parentNode; +scrollParent; +scrollParent=scrollParent.offsetParent){if(scrollParent.scrollHeight>scrollParent.offsetHeight){return scrollParent +}}}; +this.isScrolledToBottom=function(element){var onBottom=(element.scrollTop+element.offsetHeight)==element.scrollHeight; +if(FBTrace.DBG_CONSOLE){FBTrace.sysout("isScrolledToBottom offsetHeight: "+element.offsetHeight+" onBottom:"+onBottom) +}return onBottom +}; +this.scrollToBottom=function(element){element.scrollTop=element.scrollHeight; +if(FBTrace.DBG_CONSOLE){FBTrace.sysout("scrollToBottom reset scrollTop "+element.scrollTop+" = "+element.scrollHeight); +if(element.scrollHeight==element.offsetHeight){FBTrace.sysout("scrollToBottom attempt to scroll non-scrollable element "+element,element) +}}return(element.scrollTop==element.scrollHeight) +}; +this.move=function(element,x,y){element.style.left=x+"px"; +element.style.top=y+"px" +}; +this.resize=function(element,w,h){element.style.width=w+"px"; +element.style.height=h+"px" +}; +this.linesIntoCenterView=function(element,scrollBox){if(!scrollBox){scrollBox=this.getOverflowParent(element) +}if(!scrollBox){return +}var offset=this.getClientOffset(element); +var topSpace=offset.y-scrollBox.scrollTop; +var bottomSpace=(scrollBox.scrollTop+scrollBox.clientHeight)-(offset.y+element.offsetHeight); +if(topSpace<0||bottomSpace<0){var split=(scrollBox.clientHeight/2); +var centerY=offset.y-split; +scrollBox.scrollTop=centerY; +topSpace=split; +bottomSpace=split-element.offsetHeight +}return{before:Math.round((topSpace/element.offsetHeight)+0.5),after:Math.round((bottomSpace/element.offsetHeight)+0.5)} +}; +this.scrollIntoCenterView=function(element,scrollBox,notX,notY){if(!element){return +}if(!scrollBox){scrollBox=this.getOverflowParent(element) +}if(!scrollBox){return +}var offset=this.getClientOffset(element); +if(!notY){var topSpace=offset.y-scrollBox.scrollTop; +var bottomSpace=(scrollBox.scrollTop+scrollBox.clientHeight)-(offset.y+element.offsetHeight); +if(topSpace<0||bottomSpace<0){var centerY=offset.y-(scrollBox.clientHeight/2); +scrollBox.scrollTop=centerY +}}if(!notX){var leftSpace=offset.x-scrollBox.scrollLeft; +var rightSpace=(scrollBox.scrollLeft+scrollBox.clientWidth)-(offset.x+element.clientWidth); +if(leftSpace<0||rightSpace<0){var centerX=offset.x-(scrollBox.clientWidth/2); +scrollBox.scrollLeft=centerX +}}if(FBTrace.DBG_SOURCEFILES){FBTrace.sysout("lib.scrollIntoCenterView ","Element:"+element.innerHTML) +}}; +var cssKeywordMap=null; +var cssPropNames=null; +var cssColorNames=null; +var imageRules=null; +this.getCSSKeywordsByProperty=function(propName){if(!cssKeywordMap){cssKeywordMap={}; +for(var name in this.cssInfo){var list=[]; +var types=this.cssInfo[name]; +for(var i=0; +i<types.length; +++i){var keywords=this.cssKeywords[types[i]]; +if(keywords){list.push.apply(list,keywords) +}}cssKeywordMap[name]=list +}}return propName in cssKeywordMap?cssKeywordMap[propName]:[] +}; +this.getCSSPropertyNames=function(){if(!cssPropNames){cssPropNames=[]; +for(var name in this.cssInfo){cssPropNames.push(name) +}}return cssPropNames +}; +this.isColorKeyword=function(keyword){if(keyword=="transparent"){return false +}if(!cssColorNames){cssColorNames=[]; +var colors=this.cssKeywords.color; +for(var i=0; +i<colors.length; +++i){cssColorNames.push(colors[i].toLowerCase()) +}var systemColors=this.cssKeywords.systemColor; +for(var i=0; +i<systemColors.length; +++i){cssColorNames.push(systemColors[i].toLowerCase()) +}}return cssColorNames.indexOf?cssColorNames.indexOf(keyword.toLowerCase())!=-1:(" "+cssColorNames.join(" ")+" ").indexOf(" "+keyword.toLowerCase()+" ")!=-1 +}; +this.isImageRule=function(rule){if(!imageRules){imageRules=[]; +for(var i in this.cssInfo){var r=i.toLowerCase(); +var suffix="image"; +if(r.match(suffix+"$")==suffix||r=="background"){imageRules.push(r) +}}}return imageRules.indexOf?imageRules.indexOf(rule.toLowerCase())!=-1:(" "+imageRules.join(" ")+" ").indexOf(" "+rule.toLowerCase()+" ")!=-1 +}; +this.copyTextStyles=function(fromNode,toNode,style){var view=this.isIE?fromNode.ownerDocument.parentWindow:fromNode.ownerDocument.defaultView; +if(view){if(!style){style=this.isIE?fromNode.currentStyle:view.getComputedStyle(fromNode,"") +}toNode.style.fontFamily=style.fontFamily; +toNode.style.fontSize=style.fontSize; +toNode.style.fontWeight=style.fontWeight; +toNode.style.fontStyle=style.fontStyle; +return style +}}; +this.copyBoxStyles=function(fromNode,toNode,style){var view=this.isIE?fromNode.ownerDocument.parentWindow:fromNode.ownerDocument.defaultView; +if(view){if(!style){style=this.isIE?fromNode.currentStyle:view.getComputedStyle(fromNode,"") +}toNode.style.marginTop=style.marginTop; +toNode.style.marginRight=style.marginRight; +toNode.style.marginBottom=style.marginBottom; +toNode.style.marginLeft=style.marginLeft; +toNode.style.borderTopWidth=style.borderTopWidth; +toNode.style.borderRightWidth=style.borderRightWidth; +toNode.style.borderBottomWidth=style.borderBottomWidth; +toNode.style.borderLeftWidth=style.borderLeftWidth; +return style +}}; +this.readBoxStyles=function(style){var styleNames={"margin-top":"marginTop","margin-right":"marginRight","margin-left":"marginLeft","margin-bottom":"marginBottom","border-top-width":"borderTop","border-right-width":"borderRight","border-left-width":"borderLeft","border-bottom-width":"borderBottom","padding-top":"paddingTop","padding-right":"paddingRight","padding-left":"paddingLeft","padding-bottom":"paddingBottom","z-index":"zIndex"}; +var styles={}; +for(var styleName in styleNames){styles[styleNames[styleName]]=parseInt(style.getPropertyCSSValue(styleName).cssText)||0 +}if(FBTrace.DBG_INSPECT){FBTrace.sysout("readBoxStyles ",styles) +}return styles +}; +this.getBoxFromStyles=function(style,element){var args=this.readBoxStyles(style); +args.width=element.offsetWidth-(args.paddingLeft+args.paddingRight+args.borderLeft+args.borderRight); +args.height=element.offsetHeight-(args.paddingTop+args.paddingBottom+args.borderTop+args.borderBottom); +return args +}; +this.getElementCSSSelector=function(element){var label=element.localName.toLowerCase(); +if(element.id){label+="#"+element.id +}if(element.hasAttribute("class")){label+="."+element.getAttribute("class").split(" ")[0] +}return label +}; +this.getURLForStyleSheet=function(styleSheet){return(styleSheet.href?styleSheet.href:styleSheet.ownerNode.ownerDocument.URL) +}; +this.getDocumentForStyleSheet=function(styleSheet){while(styleSheet.parentStyleSheet&&!styleSheet.ownerNode){styleSheet=styleSheet.parentStyleSheet +}if(styleSheet.ownerNode){return styleSheet.ownerNode.ownerDocument +}}; +this.getInstanceForStyleSheet=function(styleSheet,ownerDocument){if(FBL.isSystemStyleSheet(styleSheet)){return 0 +}if(FBTrace.DBG_CSS){FBTrace.sysout("getInstanceForStyleSheet: "+styleSheet.href+" "+styleSheet.media.mediaText+" "+(styleSheet.ownerNode&&FBL.getElementXPath(styleSheet.ownerNode)),ownerDocument) +}ownerDocument=ownerDocument||FBL.getDocumentForStyleSheet(styleSheet); +var ret=0,styleSheets=ownerDocument.styleSheets,href=styleSheet.href; +for(var i=0; +i<styleSheets.length; +i++){var curSheet=styleSheets[i]; +if(FBTrace.DBG_CSS){FBTrace.sysout("getInstanceForStyleSheet: compare href "+i+" "+curSheet.href+" "+curSheet.media.mediaText+" "+(curSheet.ownerNode&&FBL.getElementXPath(curSheet.ownerNode))) +}if(curSheet==styleSheet){break +}if(curSheet.href==href){ret++ +}}return ret +}; +var getElementType=this.getElementType=function(node){if(isElementXUL(node)){return"xul" +}else{if(isElementSVG(node)){return"svg" +}else{if(isElementMathML(node)){return"mathml" +}else{if(isElementXHTML(node)){return"xhtml" +}else{if(isElementHTML(node)){return"html" +}}}}}}; +var getElementSimpleType=this.getElementSimpleType=function(node){if(isElementSVG(node)){return"svg" +}else{if(isElementMathML(node)){return"mathml" +}else{return"html" +}}}; +var isElementHTML=this.isElementHTML=function(node){return node.nodeName==node.nodeName.toUpperCase() +}; +var isElementXHTML=this.isElementXHTML=function(node){return node.nodeName==node.nodeName.toLowerCase() +}; +var isElementMathML=this.isElementMathML=function(node){return node.namespaceURI=="http://www.w3.org/1998/Math/MathML" +}; +var isElementSVG=this.isElementSVG=function(node){return node.namespaceURI=="http://www.w3.org/2000/svg" +}; +var isElementXUL=this.isElementXUL=function(node){return node instanceof XULElement +}; +this.isSelfClosing=function(element){if(isElementSVG(element)||isElementMathML(element)){return true +}var tag=element.localName.toLowerCase(); +return(this.selfClosingTags.hasOwnProperty(tag)) +}; +this.getElementHTML=function(element){var self=this; +function toHTML(elt){if(elt.nodeType==Node.ELEMENT_NODE){if(unwrapObject(elt).firebugIgnore){return +}html.push("<",elt.nodeName.toLowerCase()); +for(var i=0; +i<elt.attributes.length; +++i){var attr=elt.attributes[i]; +if(attr.localName.indexOf("firebug-")==0){continue +}if(attr.localName.indexOf("-moz-math")==0){continue +}html.push(" ",attr.nodeName,'="',escapeForElementAttribute(attr.nodeValue),'"') +}if(elt.firstChild){html.push(">"); +var pureText=true; +for(var child=element.firstChild; +child; +child=child.nextSibling){pureText=pureText&&(child.nodeType==Node.TEXT_NODE) +}if(pureText){html.push(escapeForHtmlEditor(elt.textContent)) +}else{for(var child=elt.firstChild; +child; +child=child.nextSibling){toHTML(child) +}}html.push("</",elt.nodeName.toLowerCase(),">") +}else{if(isElementSVG(elt)||isElementMathML(elt)){html.push("/>") +}else{if(self.isSelfClosing(elt)){html.push((isElementXHTML(elt))?"/>":">") +}else{html.push("></",elt.nodeName.toLowerCase(),">") +}}}}else{if(elt.nodeType==Node.TEXT_NODE){html.push(escapeForTextNode(elt.textContent)) +}else{if(elt.nodeType==Node.CDATA_SECTION_NODE){html.push("<![CDATA[",elt.nodeValue,"]]>") +}else{if(elt.nodeType==Node.COMMENT_NODE){html.push("<!--",elt.nodeValue,"-->") +}}}}}var html=[]; +toHTML(element); +return html.join("") +}; +this.getElementXML=function(element){function toXML(elt){if(elt.nodeType==Node.ELEMENT_NODE){if(unwrapObject(elt).firebugIgnore){return +}xml.push("<",elt.nodeName.toLowerCase()); +for(var i=0; +i<elt.attributes.length; +++i){var attr=elt.attributes[i]; +if(attr.localName.indexOf("firebug-")==0){continue +}if(attr.localName.indexOf("-moz-math")==0){continue +}xml.push(" ",attr.nodeName,'="',escapeForElementAttribute(attr.nodeValue),'"') +}if(elt.firstChild){xml.push(">"); +for(var child=elt.firstChild; +child; +child=child.nextSibling){toXML(child) +}xml.push("</",elt.nodeName.toLowerCase(),">") +}else{xml.push("/>") +}}else{if(elt.nodeType==Node.TEXT_NODE){xml.push(elt.nodeValue) +}else{if(elt.nodeType==Node.CDATA_SECTION_NODE){xml.push("<![CDATA[",elt.nodeValue,"]]>") +}else{if(elt.nodeType==Node.COMMENT_NODE){xml.push("<!--",elt.nodeValue,"-->") +}}}}}var xml=[]; +toXML(element); +return xml.join("") +}; +this.hasClass=function(node,name){if(arguments.length==2){return(" "+node.className+" ").indexOf(" "+name+" ")!=-1 +}if(!node||node.nodeType!=1){return false +}else{for(var i=1; +i<arguments.length; +++i){var name=arguments[i]; +var re=new RegExp("(^|\\s)"+name+"($|\\s)"); +if(!re.exec(node.className)){return false +}}return true +}}; +this.old_hasClass=function(node,name){if(!node||node.nodeType!=1){return false +}else{for(var i=1; +i<arguments.length; +++i){var name=arguments[i]; +var re=new RegExp("(^|\\s)"+name+"($|\\s)"); +if(!re.exec(node.className)){return false +}}return true +}}; +this.setClass=function(node,name){if(node&&(" "+node.className+" ").indexOf(" "+name+" ")==-1){node.className+=" "+name +}}; +this.getClassValue=function(node,name){var re=new RegExp(name+"-([^ ]+)"); +var m=re.exec(node.className); +return m?m[1]:"" +}; +this.removeClass=function(node,name){if(node&&node.className){var index=node.className.indexOf(name); +if(index>=0){var size=name.length; +node.className=node.className.substr(0,index-1)+node.className.substr(index+size) +}}}; +this.toggleClass=function(elt,name){if((" "+elt.className+" ").indexOf(" "+name+" ")!=-1){this.removeClass(elt,name) +}else{this.setClass(elt,name) +}}; +this.setClassTimed=function(elt,name,context,timeout){if(!timeout){timeout=1300 +}if(elt.__setClassTimeout){context.clearTimeout(elt.__setClassTimeout) +}else{this.setClass(elt,name) +}elt.__setClassTimeout=context.setTimeout(function(){delete elt.__setClassTimeout; +FBL.removeClass(elt,name) +},timeout) +}; +this.cancelClassTimed=function(elt,name,context){if(elt.__setClassTimeout){FBL.removeClass(elt,name); +context.clearTimeout(elt.__setClassTimeout); +delete elt.__setClassTimeout +}}; +this.$=function(id,doc){if(doc){return doc.getElementById(id) +}else{return FBL.Firebug.chrome.document.getElementById(id) +}}; +this.$$=function(selector,doc){if(doc||!FBL.Firebug.chrome){return FBL.Firebug.Selector(selector,doc) +}else{return FBL.Firebug.Selector(selector,FBL.Firebug.chrome.document) +}}; +this.getChildByClass=function(node){for(var i=1; +i<arguments.length; +++i){var className=arguments[i]; +var child=node.firstChild; +node=null; +for(; +child; +child=child.nextSibling){if(this.hasClass(child,className)){node=child; +break +}}}return node +}; +this.getAncestorByClass=function(node,className){for(var parent=node; +parent; +parent=parent.parentNode){if(this.hasClass(parent,className)){return parent +}}return null +}; +this.getElementsByClass=function(node,className){var result=[]; +for(var child=node.firstChild; +child; +child=child.nextSibling){if(this.hasClass(child,className)){result.push(child) +}}return result +}; +this.getElementByClass=function(node,className){var args=cloneArray(arguments); +args.splice(0,1); +for(var child=node.firstChild; +child; +child=child.nextSibling){var args1=cloneArray(args); +args1.unshift(child); +if(FBL.hasClass.apply(null,args1)){return child +}else{var found=FBL.getElementByClass.apply(null,args1); +if(found){return found +}}}return null +}; +this.isAncestor=function(node,potentialAncestor){for(var parent=node; +parent; +parent=parent.parentNode){if(parent==potentialAncestor){return true +}}return false +}; +this.getNextElement=function(node){while(node&&node.nodeType!=1){node=node.nextSibling +}return node +}; +this.getPreviousElement=function(node){while(node&&node.nodeType!=1){node=node.previousSibling +}return node +}; +this.getBody=function(doc){if(doc.body){return doc.body +}var body=doc.getElementsByTagName("body")[0]; +if(body){return body +}return doc.firstChild +}; +this.findNextDown=function(node,criteria){if(!node){return null +}for(var child=node.firstChild; +child; +child=child.nextSibling){if(criteria(child)){return child +}var next=this.findNextDown(child,criteria); +if(next){return next +}}}; +this.findPreviousUp=function(node,criteria){if(!node){return null +}for(var child=node.lastChild; +child; +child=child.previousSibling){var next=this.findPreviousUp(child,criteria); +if(next){return next +}if(criteria(child)){return child +}}}; +this.findNext=function(node,criteria,upOnly,maxRoot){if(!node){return null +}if(!upOnly){var next=this.findNextDown(node,criteria); +if(next){return next +}}for(var sib=node.nextSibling; +sib; +sib=sib.nextSibling){if(criteria(sib)){return sib +}var next=this.findNextDown(sib,criteria); +if(next){return next +}}if(node.parentNode&&node.parentNode!=maxRoot){return this.findNext(node.parentNode,criteria,true) +}}; +this.findPrevious=function(node,criteria,downOnly,maxRoot){if(!node){return null +}for(var sib=node.previousSibling; +sib; +sib=sib.previousSibling){var prev=this.findPreviousUp(sib,criteria); +if(prev){return prev +}if(criteria(sib)){return sib +}}if(!downOnly){var next=this.findPreviousUp(node,criteria); +if(next){return next +}}if(node.parentNode&&node.parentNode!=maxRoot){if(criteria(node.parentNode)){return node.parentNode +}return this.findPrevious(node.parentNode,criteria,true) +}}; +this.getNextByClass=function(root,state){var iter=function iter(node){return node.nodeType==1&&FBL.hasClass(node,state) +}; +return this.findNext(root,iter) +}; +this.getPreviousByClass=function(root,state){var iter=function iter(node){return node.nodeType==1&&FBL.hasClass(node,state) +}; +return this.findPrevious(root,iter) +}; +this.isElement=function(o){try{return o&&this.instanceOf(o,"Element") +}catch(ex){return false +}}; +var appendFragment=null; +this.appendInnerHTML=function(element,html,referenceElement){referenceElement=referenceElement||null; +var doc=element.ownerDocument; +if(doc.createRange){var range=doc.createRange(); +range.selectNodeContents(element); +var fragment=range.createContextualFragment(html); +var firstChild=fragment.firstChild; +element.insertBefore(fragment,referenceElement) +}else{if(!appendFragment||appendFragment.ownerDocument!=doc){appendFragment=doc.createDocumentFragment() +}var div=doc.createElement("div"); +div.innerHTML=html; +var firstChild=div.firstChild; +while(div.firstChild){appendFragment.appendChild(div.firstChild) +}element.insertBefore(appendFragment,referenceElement); +div=null +}return firstChild +}; +this.createElement=function(tagName,properties){properties=properties||{}; +var doc=properties.document||FBL.Firebug.chrome.document; +var element=doc.createElement(tagName); +for(var name in properties){if(name!="document"){element[name]=properties[name] +}}return element +}; +this.createGlobalElement=function(tagName,properties){properties=properties||{}; +var doc=FBL.Env.browser.document; +var element=this.NS&&doc.createElementNS?doc.createElementNS(FBL.NS,tagName):doc.createElement(tagName); +for(var name in properties){var propname=name; +if(FBL.isIE&&name=="class"){propname="className" +}if(name!="document"){element.setAttribute(propname,properties[name]) +}}return element +}; +this.safeGetWindowLocation=function(window){try{if(window){if(window.closed){return"(window.closed)" +}if("location" in window){return window.location+"" +}else{return"(no window.location)" +}}else{return"(no context.window)" +}}catch(exc){if(FBTrace.DBG_WINDOWS||FBTrace.DBG_ERRORS){FBTrace.sysout("TabContext.getWindowLocation failed "+exc,exc) +}FBTrace.sysout("TabContext.getWindowLocation failed window:",window); +return"(getWindowLocation: "+exc+")" +}}; +this.isLeftClick=function(event){return(this.isIE&&event.type!="click"&&event.type!="dblclick"?event.button==1:event.button==0)&&this.noKeyModifiers(event) +}; +this.isMiddleClick=function(event){return(this.isIE&&event.type!="click"&&event.type!="dblclick"?event.button==4:event.button==1)&&this.noKeyModifiers(event) +}; +this.isRightClick=function(event){return(this.isIE&&event.type!="click"&&event.type!="dblclick"?event.button==2:event.button==2)&&this.noKeyModifiers(event) +}; +this.noKeyModifiers=function(event){return !event.ctrlKey&&!event.shiftKey&&!event.altKey&&!event.metaKey +}; +this.isControlClick=function(event){return(this.isIE&&event.type!="click"&&event.type!="dblclick"?event.button==1:event.button==0)&&this.isControl(event) +}; +this.isShiftClick=function(event){return(this.isIE&&event.type!="click"&&event.type!="dblclick"?event.button==1:event.button==0)&&this.isShift(event) +}; +this.isControl=function(event){return(event.metaKey||event.ctrlKey)&&!event.shiftKey&&!event.altKey +}; +this.isAlt=function(event){return event.altKey&&!event.ctrlKey&&!event.shiftKey&&!event.metaKey +}; +this.isAltClick=function(event){return(this.isIE&&event.type!="click"&&event.type!="dblclick"?event.button==1:event.button==0)&&this.isAlt(event) +}; +this.isControlShift=function(event){return(event.metaKey||event.ctrlKey)&&event.shiftKey&&!event.altKey +}; +this.isShift=function(event){return event.shiftKey&&!event.metaKey&&!event.ctrlKey&&!event.altKey +}; +this.addEvent=function(object,name,handler,useCapture){if(object.addEventListener){object.addEventListener(name,handler,useCapture) +}else{object.attachEvent("on"+name,handler) +}}; +this.removeEvent=function(object,name,handler,useCapture){try{if(object.removeEventListener){object.removeEventListener(name,handler,useCapture) +}else{object.detachEvent("on"+name,handler) +}}catch(e){if(FBTrace.DBG_ERRORS){FBTrace.sysout("FBL.removeEvent error: ",object,name) +}}}; +this.cancelEvent=function(e,preventDefault){if(!e){return +}if(preventDefault){if(e.preventDefault){e.preventDefault() +}else{e.returnValue=false +}}if(e.stopPropagation){e.stopPropagation() +}else{e.cancelBubble=true +}}; +this.addGlobalEvent=function(name,handler){var doc=this.Firebug.browser.document; +var frames=this.Firebug.browser.window.frames; +this.addEvent(doc,name,handler); +if(this.Firebug.chrome.type=="popup"){this.addEvent(this.Firebug.chrome.document,name,handler) +}for(var i=0,frame; +frame=frames[i]; +i++){try{this.addEvent(frame.document,name,handler) +}catch(E){}}}; +this.removeGlobalEvent=function(name,handler){var doc=this.Firebug.browser.document; +var frames=this.Firebug.browser.window.frames; +this.removeEvent(doc,name,handler); +if(this.Firebug.chrome.type=="popup"){this.removeEvent(this.Firebug.chrome.document,name,handler) +}for(var i=0,frame; +frame=frames[i]; +i++){try{this.removeEvent(frame.document,name,handler) +}catch(E){}}}; +this.dispatch=function(listeners,name,args){if(!listeners){return +}try{if(typeof listeners.length!="undefined"){if(FBTrace.DBG_DISPATCH){FBTrace.sysout("FBL.dispatch",name+" to "+listeners.length+" listeners") +}for(var i=0; +i<listeners.length; +++i){var listener=listeners[i]; +if(listener[name]){listener[name].apply(listener,args) +}}}else{if(FBTrace.DBG_DISPATCH){FBTrace.sysout("FBL.dispatch",name+" to listeners of an object") +}for(var prop in listeners){var listener=listeners[prop]; +if(listener[name]){listener[name].apply(listener,args) +}}}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout(" Exception in lib.dispatch "+name,exc) +}}}; +var disableTextSelectionHandler=function(event){FBL.cancelEvent(event,true); +return false +}; +this.disableTextSelection=function(e){if(typeof e.onselectstart!="undefined"){this.addEvent(e,"selectstart",disableTextSelectionHandler) +}else{e.style.cssText="user-select: none; -khtml-user-select: none; -moz-user-select: none;"; +if(!this.isFirefox){this.addEvent(e,"mousedown",disableTextSelectionHandler) +}}e.style.cursor="default" +}; +this.restoreTextSelection=function(e){if(typeof e.onselectstart!="undefined"){this.removeEvent(e,"selectstart",disableTextSelectionHandler) +}else{e.style.cssText="cursor: default;"; +if(!this.isFirefox){this.removeEvent(e,"mousedown",disableTextSelectionHandler) +}}}; +var eventTypes={composition:["composition","compositionstart","compositionend"],contextmenu:["contextmenu"],drag:["dragenter","dragover","dragexit","dragdrop","draggesture"],focus:["focus","blur"],form:["submit","reset","change","select","input"],key:["keydown","keyup","keypress"],load:["load","beforeunload","unload","abort","error"],mouse:["mousedown","mouseup","click","dblclick","mouseover","mouseout","mousemove"],mutation:["DOMSubtreeModified","DOMNodeInserted","DOMNodeRemoved","DOMNodeRemovedFromDocument","DOMNodeInsertedIntoDocument","DOMAttrModified","DOMCharacterDataModified"],paint:["paint","resize","scroll"],scroll:["overflow","underflow","overflowchanged"],text:["text"],ui:["DOMActivate","DOMFocusIn","DOMFocusOut"],xul:["popupshowing","popupshown","popuphiding","popuphidden","close","command","broadcast","commandupdate"]}; +this.getEventFamily=function(eventType){if(!this.families){this.families={}; +for(var family in eventTypes){var types=eventTypes[family]; +for(var i=0; +i<types.length; +++i){this.families[types[i]]=family +}}}return this.families[eventType] +}; +this.getFileName=function(url){var split=this.splitURLBase(url); +return split.name +}; +this.splitURLBase=function(url){if(this.isDataURL(url)){return this.splitDataURL(url) +}return this.splitURLTrue(url) +}; +this.splitDataURL=function(url){var mark=url.indexOf(":",3); +if(mark!=4){return false +}var point=url.indexOf(",",mark+1); +if(point<mark){return false +}var props={encodedContent:url.substr(point+1)}; +var metadataBuffer=url.substr(mark+1,point); +var metadata=metadataBuffer.split(";"); +for(var i=0; +i<metadata.length; +i++){var nv=metadata[i].split("="); +if(nv.length==2){props[nv[0]]=nv[1] +}}if(props.hasOwnProperty("fileName")){var caller_URL=decodeURIComponent(props.fileName); +var caller_split=this.splitURLTrue(caller_URL); +if(props.hasOwnProperty("baseLineNumber")){props.path=caller_split.path; +props.line=props.baseLineNumber; +var hint=decodeURIComponent(props.encodedContent.substr(0,200)).replace(/\s*$/,""); +props.name="eval->"+hint +}else{props.name=caller_split.name; +props.path=caller_split.path +}}else{if(!props.hasOwnProperty("path")){props.path="data:" +}if(!props.hasOwnProperty("name")){props.name=decodeURIComponent(props.encodedContent.substr(0,200)).replace(/\s*$/,"") +}}return props +}; +this.splitURLTrue=function(url){var m=reSplitFile.exec(url); +if(!m){return{name:url,path:url} +}else{if(!m[2]){return{path:m[1],name:m[1]} +}else{return{path:m[1],name:m[2]+m[3]} +}}}; +this.getFileExtension=function(url){if(!url){return null +}var queryString=url.indexOf("?"); +if(queryString!=-1){url=url.substr(0,queryString) +}var lastDot=url.lastIndexOf("."); +return url.substr(lastDot+1) +}; +this.isSystemURL=function(url){if(!url){return true +}if(url.length==0){return true +}if(url[0]=="h"){return false +}if(url.substr(0,9)=="resource:"){return true +}else{if(url.substr(0,16)=="chrome://firebug"){return true +}else{if(url=="XPCSafeJSObjectWrapper.cpp"){return true +}else{if(url.substr(0,6)=="about:"){return true +}else{if(url.indexOf("firebug-service.js")!=-1){return true +}else{return false +}}}}}}; +this.isSystemPage=function(win){try{var doc=win.document; +if(!doc){return false +}if((doc.styleSheets.length&&doc.styleSheets[0].href=="chrome://global/content/xml/XMLPrettyPrint.css")||(doc.styleSheets.length>1&&doc.styleSheets[1].href=="chrome://browser/skin/feeds/subscribe.css")){return true +}return FBL.isSystemURL(win.location.href) +}catch(exc){ERROR("tabWatcher.isSystemPage document not ready:"+exc); +return false +}}; +this.isSystemStyleSheet=function(sheet){var href=sheet&&sheet.href; +return href&&FBL.isSystemURL(href) +}; +this.getURIHost=function(uri){try{if(uri){return uri.host +}else{return"" +}}catch(exc){return"" +}}; +this.isLocalURL=function(url){if(url.substr(0,5)=="file:"){return true +}else{if(url.substr(0,8)=="wyciwyg:"){return true +}else{return false +}}}; +this.isDataURL=function(url){return(url&&url.substr(0,5)=="data:") +}; +this.getLocalPath=function(url){if(this.isLocalURL(url)){var fileHandler=ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler); +var file=fileHandler.getFileFromURLSpec(url); +return file.path +}}; +this.getURLFromLocalFile=function(file){var fileHandler=ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler); +var URL=fileHandler.getURLSpecFromFile(file); +return URL +}; +this.getDataURLForContent=function(content,url){var uri="data:text/html;"; +uri+="fileName="+encodeURIComponent(url)+","; +uri+=encodeURIComponent(content); +return uri +},this.getDomain=function(url){var m=/[^:]+:\/{1,3}([^\/]+)/.exec(url); +return m?m[1]:"" +}; +this.getURLPath=function(url){var m=/[^:]+:\/{1,3}[^\/]+(\/.*?)$/.exec(url); +return m?m[1]:"" +}; +this.getPrettyDomain=function(url){var m=/[^:]+:\/{1,3}(www\.)?([^\/]+)/.exec(url); +return m?m[2]:"" +}; +this.absoluteURL=function(url,baseURL){return this.absoluteURLWithDots(url,baseURL).replace("/./","/","g") +}; +this.absoluteURLWithDots=function(url,baseURL){if(url[0]=="?"){return baseURL+url +}var reURL=/(([^:]+:)\/{1,2}[^\/]*)(.*?)$/; +var m=reURL.exec(url); +if(m){return url +}var m=reURL.exec(baseURL); +if(!m){return"" +}var head=m[1]; +var tail=m[3]; +if(url.substr(0,2)=="//"){return m[2]+url +}else{if(url[0]=="/"){return head+url +}else{if(tail[tail.length-1]=="/"){return baseURL+url +}else{var parts=tail.split("/"); +return head+parts.slice(0,parts.length-1).join("/")+"/"+url +}}}}; +this.normalizeURL=function(url){if(!url){return"" +}if(url.length<255){url=url.replace(/[^\/]+\/\.\.\//,"","g"); +url=url.replace(/#.*/,""); +url=url.replace(/file:\/([^\/])/g,"file:///$1"); +if(url.indexOf("chrome:")==0){var m=reChromeCase.exec(url); +if(m){url="chrome://"+m[1].toLowerCase()+"/"+m[2] +}}}return url +}; +this.denormalizeURL=function(url){return url.replace(/file:\/\/\//g,"file:/") +}; +this.parseURLParams=function(url){var q=url?url.indexOf("?"):-1; +if(q==-1){return[] +}var search=url.substr(q+1); +var h=search.lastIndexOf("#"); +if(h!=-1){search=search.substr(0,h) +}if(!search){return[] +}return this.parseURLEncodedText(search) +}; +this.parseURLEncodedText=function(text){var maxValueLength=25000; +var params=[]; +text=text.replace(/\+/g," "); +var args=text.split("&"); +for(var i=0; +i<args.length; +++i){try{var parts=args[i].split("="); +if(parts.length==2){if(parts[1].length>maxValueLength){parts[1]=this.$STR("LargeData") +}params.push({name:decodeURIComponent(parts[0]),value:decodeURIComponent(parts[1])}) +}else{params.push({name:decodeURIComponent(parts[0]),value:""}) +}}catch(e){if(FBTrace.DBG_ERRORS){FBTrace.sysout("parseURLEncodedText EXCEPTION ",e); +FBTrace.sysout("parseURLEncodedText EXCEPTION URI",args[i]) +}}}params.sort(function(a,b){return a.name<=b.name?-1:1 +}); +return params +}; +this.parseURLParamsArray=function(url){var q=url?url.indexOf("?"):-1; +if(q==-1){return[] +}var search=url.substr(q+1); +var h=search.lastIndexOf("#"); +if(h!=-1){search=search.substr(0,h) +}if(!search){return[] +}return this.parseURLEncodedTextArray(search) +}; +this.parseURLEncodedTextArray=function(text){var maxValueLength=25000; +var params=[]; +text=text.replace(/\+/g," "); +var args=text.split("&"); +for(var i=0; +i<args.length; +++i){try{var parts=args[i].split("="); +if(parts.length==2){if(parts[1].length>maxValueLength){parts[1]=this.$STR("LargeData") +}params.push({name:decodeURIComponent(parts[0]),value:[decodeURIComponent(parts[1])]}) +}else{params.push({name:decodeURIComponent(parts[0]),value:[""]}) +}}catch(e){if(FBTrace.DBG_ERRORS){FBTrace.sysout("parseURLEncodedText EXCEPTION ",e); +FBTrace.sysout("parseURLEncodedText EXCEPTION URI",args[i]) +}}}params.sort(function(a,b){return a.name<=b.name?-1:1 +}); +return params +}; +this.reEncodeURL=function(file,text){var lines=text.split("\n"); +var params=this.parseURLEncodedText(lines[lines.length-1]); +var args=[]; +for(var i=0; +i<params.length; +++i){args.push(encodeURIComponent(params[i].name)+"="+encodeURIComponent(params[i].value)) +}var url=file.href; +url+=(url.indexOf("?")==-1?"?":"&")+args.join("&"); +return url +}; +this.getResource=function(aURL){try{var channel=ioService.newChannel(aURL,null,null); +var input=channel.open(); +return FBL.readFromStream(input) +}catch(e){if(FBTrace.DBG_ERRORS){FBTrace.sysout("lib.getResource FAILS for "+aURL,e) +}}}; +this.parseJSONString=function(jsonString,originURL){var regex=new RegExp(/^\/\*-secure-([\s\S]*)\*\/\s*$/); +var matches=regex.exec(jsonString); +if(matches){jsonString=matches[1]; +if(jsonString[0]=="\\"&&jsonString[1]=="n"){jsonString=jsonString.substr(2) +}if(jsonString[jsonString.length-2]=="\\"&&jsonString[jsonString.length-1]=="n"){jsonString=jsonString.substr(0,jsonString.length-2) +}}if(jsonString.indexOf("&&&START&&&")){regex=new RegExp(/&&&START&&& (.+) &&&END&&&/); +matches=regex.exec(jsonString); +if(matches){jsonString=matches[1] +}}jsonString="("+jsonString+")"; +var jsonObject=null; +try{jsonObject=Firebug.context.evaluate(jsonString,null,null,function(){return null +}) +}catch(e){if(FBTrace.DBG_ERRORS||FBTrace.DBG_JSONVIEWER){FBTrace.sysout("jsonviewer.parseJSON EXCEPTION",e) +}return null +}return jsonObject +}; +this.objectToString=function(object){try{return object+"" +}catch(exc){return null +}}; +this.setSelectionRange=function(input,start,length){if(input.createTextRange){var range=input.createTextRange(); +range.moveStart("character",start); +range.moveEnd("character",length-input.value.length); +range.select() +}else{if(input.setSelectionRange){input.setSelectionRange(start,length); +input.focus() +}}}; +this.getInputSelectionStart=function(input){if(document.selection){var range=input.ownerDocument.selection.createRange(); +var text=range.text; +if(text){return input.value.indexOf(text) +}else{range.moveStart("character",-input.value.length); +return range.text.length +}}else{if(typeof input.selectionStart!="undefined"){return input.selectionStart +}}return 0 +}; +function onOperaTabBlur(e){if(this.lastKey==9){this.focus() +}}function onOperaTabKeyDown(e){this.lastKey=e.keyCode +}function onOperaTabFocus(e){this.lastKey=null +}this.fixOperaTabKey=function(el){el.onfocus=onOperaTabFocus; +el.onblur=onOperaTabBlur; +el.onkeydown=onOperaTabKeyDown +}; +this.Property=function(object,name){this.object=object; +this.name=name; +this.getObject=function(){return object[name] +} +}; +this.ErrorCopy=function(message){this.message=message +}; +function EventCopy(event){for(var name in event){try{this[name]=event[name] +}catch(exc){}}}this.EventCopy=EventCopy; +var toString=Object.prototype.toString; +var reFunction=/^\s*function(\s+[\w_$][\w\d_$]*)?\s*\(/; +this.isArray=function(object){return toString.call(object)==="[object Array]" +}; +this.isFunction=function(object){if(!object){return false +}try{return toString.call(object)==="[object Function]"||this.isIE&&typeof object!="string"&&reFunction.test(""+object) +}catch(E){FBTrace.sysout("Lib.isFunction() failed for ",object); +return false +}}; +this.instanceOf=function(object,className){if(!object||typeof object!="object"){return false +}if(object.ownerDocument){var win=object.ownerDocument.defaultView||object.ownerDocument.parentWindow; +if(className in win&&object instanceof win[className]){return true +}}else{var win=Firebug.browser.window; +if(className in win){return object instanceof win[className] +}}var cache=instanceCheckMap[className]; +if(!cache){return false +}for(var n in cache){var obj=cache[n]; +var type=typeof obj; +obj=type=="object"?obj:[obj]; +for(var name in obj){if(!obj.hasOwnProperty(name)){continue +}var value=obj[name]; +if(n=="property"&&!(value in object)||n=="method"&&!this.isFunction(object[value])||n=="value"&&(""+object[name]).toLowerCase()!=(""+value).toLowerCase()){return false +}}}return true +}; +var instanceCheckMap={Window:{property:["window","document"],method:"setTimeout"},Document:{property:["body","cookie"],method:"getElementById"},Node:{property:"ownerDocument",method:"appendChild"},Element:{property:"tagName",value:{nodeType:1}},Location:{property:["hostname","protocol"],method:"assign"},HTMLImageElement:{property:"useMap",value:{nodeType:1,tagName:"img"}},HTMLAnchorElement:{property:"hreflang",value:{nodeType:1,tagName:"a"}},HTMLInputElement:{property:"form",value:{nodeType:1,tagName:"input"}},HTMLButtonElement:{},HTMLFormElement:{method:"submit",value:{nodeType:1,tagName:"form"}},HTMLBodyElement:{},HTMLHtmlElement:{},CSSStyleRule:{property:["selectorText","style"]}}; +var domMemberMap2={}; +var domMemberMap2Sandbox=null; +var getDomMemberMap2=function(name){if(!domMemberMap2Sandbox){var doc=Firebug.chrome.document; +var frame=doc.createElement("iframe"); +frame.id="FirebugSandbox"; +frame.style.display="none"; +frame.src="about:blank"; +doc.body.appendChild(frame); +domMemberMap2Sandbox=frame.window||frame.contentWindow +}var props=[]; +var object=null; +if(name=="Window"){object=domMemberMap2Sandbox.window +}else{if(name=="Document"){object=domMemberMap2Sandbox.document +}else{if(name=="HTMLScriptElement"){object=domMemberMap2Sandbox.document.createElement("script") +}else{if(name=="HTMLAnchorElement"){object=domMemberMap2Sandbox.document.createElement("a") +}else{if(name.indexOf("Element")!=-1){object=domMemberMap2Sandbox.document.createElement("div") +}}}}}if(object){for(var n in object){props.push(n) +}}return props; +return extendArray(props,domMemberMap[name]) +}; +this.getDOMMembers=function(object){if(!domMemberCache){FBL.domMemberCache=domMemberCache={}; +for(var name in domMemberMap){var builtins=getDomMemberMap2(name); +var cache=domMemberCache[name]={}; +for(var i=0; +i<builtins.length; +++i){cache[builtins[i]]=i +}}}try{if(this.instanceOf(object,"Window")){return domMemberCache.Window +}else{if(this.instanceOf(object,"Document")||this.instanceOf(object,"XMLDocument")){return domMemberCache.Document +}else{if(this.instanceOf(object,"Location")){return domMemberCache.Location +}else{if(this.instanceOf(object,"HTMLImageElement")){return domMemberCache.HTMLImageElement +}else{if(this.instanceOf(object,"HTMLAnchorElement")){return domMemberCache.HTMLAnchorElement +}else{if(this.instanceOf(object,"HTMLInputElement")){return domMemberCache.HTMLInputElement +}else{if(this.instanceOf(object,"HTMLButtonElement")){return domMemberCache.HTMLButtonElement +}else{if(this.instanceOf(object,"HTMLFormElement")){return domMemberCache.HTMLFormElement +}else{if(this.instanceOf(object,"HTMLBodyElement")){return domMemberCache.HTMLBodyElement +}else{if(this.instanceOf(object,"HTMLHtmlElement")){return domMemberCache.HTMLHtmlElement +}else{if(this.instanceOf(object,"HTMLScriptElement")){return domMemberCache.HTMLScriptElement +}else{if(this.instanceOf(object,"HTMLTableElement")){return domMemberCache.HTMLTableElement +}else{if(this.instanceOf(object,"HTMLTableRowElement")){return domMemberCache.HTMLTableRowElement +}else{if(this.instanceOf(object,"HTMLTableCellElement")){return domMemberCache.HTMLTableCellElement +}else{if(this.instanceOf(object,"HTMLIFrameElement")){return domMemberCache.HTMLIFrameElement +}else{if(this.instanceOf(object,"SVGSVGElement")){return domMemberCache.SVGSVGElement +}else{if(this.instanceOf(object,"SVGElement")){return domMemberCache.SVGElement +}else{if(this.instanceOf(object,"Element")){return domMemberCache.Element +}else{if(this.instanceOf(object,"Text")||this.instanceOf(object,"CDATASection")){return domMemberCache.Text +}else{if(this.instanceOf(object,"Attr")){return domMemberCache.Attr +}else{if(this.instanceOf(object,"Node")){return domMemberCache.Node +}else{if(this.instanceOf(object,"Event")||this.instanceOf(object,"EventCopy")){return domMemberCache.Event +}else{return{} +}}}}}}}}}}}}}}}}}}}}}}}catch(E){if(FBTrace.DBG_ERRORS){FBTrace.sysout("lib.getDOMMembers FAILED ",E) +}return{} +}}; +this.isDOMMember=function(object,propName){var members=this.getDOMMembers(object); +return members&&propName in members +}; +var domMemberCache=null; +var domMemberMap={}; +domMemberMap.Window=["document","frameElement","innerWidth","innerHeight","outerWidth","outerHeight","screenX","screenY","pageXOffset","pageYOffset","scrollX","scrollY","scrollMaxX","scrollMaxY","status","defaultStatus","parent","opener","top","window","content","self","location","history","frames","navigator","screen","menubar","toolbar","locationbar","personalbar","statusbar","directories","scrollbars","fullScreen","netscape","java","console","Components","controllers","closed","crypto","pkcs11","name","property","length","sessionStorage","globalStorage","setTimeout","setInterval","clearTimeout","clearInterval","addEventListener","removeEventListener","dispatchEvent","getComputedStyle","captureEvents","releaseEvents","routeEvent","enableExternalCapture","disableExternalCapture","moveTo","moveBy","resizeTo","resizeBy","scroll","scrollTo","scrollBy","scrollByLines","scrollByPages","sizeToContent","setResizable","getSelection","open","openDialog","close","alert","confirm","prompt","dump","focus","blur","find","back","forward","home","stop","print","atob","btoa","updateCommands","XPCNativeWrapper","GeckoActiveXObject","applicationCache"]; +domMemberMap.Location=["href","protocol","host","hostname","port","pathname","search","hash","assign","reload","replace"]; +domMemberMap.Node=["id","className","nodeType","tagName","nodeName","localName","prefix","namespaceURI","nodeValue","ownerDocument","parentNode","offsetParent","nextSibling","previousSibling","firstChild","lastChild","childNodes","attributes","dir","baseURI","textContent","innerHTML","addEventListener","removeEventListener","dispatchEvent","cloneNode","appendChild","insertBefore","replaceChild","removeChild","compareDocumentPosition","hasAttributes","hasChildNodes","lookupNamespaceURI","lookupPrefix","normalize","isDefaultNamespace","isEqualNode","isSameNode","isSupported","getFeature","getUserData","setUserData"]; +domMemberMap.Document=extendArray(domMemberMap.Node,["documentElement","body","title","location","referrer","cookie","contentType","lastModified","characterSet","inputEncoding","xmlEncoding","xmlStandalone","xmlVersion","strictErrorChecking","documentURI","URL","defaultView","doctype","implementation","styleSheets","images","links","forms","anchors","embeds","plugins","applets","width","height","designMode","compatMode","async","preferredStylesheetSet","alinkColor","linkColor","vlinkColor","bgColor","fgColor","domain","addEventListener","removeEventListener","dispatchEvent","captureEvents","releaseEvents","routeEvent","clear","open","close","execCommand","execCommandShowHelp","getElementsByName","getSelection","queryCommandEnabled","queryCommandIndeterm","queryCommandState","queryCommandSupported","queryCommandText","queryCommandValue","write","writeln","adoptNode","appendChild","removeChild","renameNode","cloneNode","compareDocumentPosition","createAttribute","createAttributeNS","createCDATASection","createComment","createDocumentFragment","createElement","createElementNS","createEntityReference","createEvent","createExpression","createNSResolver","createNodeIterator","createProcessingInstruction","createRange","createTextNode","createTreeWalker","domConfig","evaluate","evaluateFIXptr","evaluateXPointer","getAnonymousElementByAttribute","getAnonymousNodes","addBinding","removeBinding","getBindingParent","getBoxObjectFor","setBoxObjectFor","getElementById","getElementsByTagName","getElementsByTagNameNS","hasAttributes","hasChildNodes","importNode","insertBefore","isDefaultNamespace","isEqualNode","isSameNode","isSupported","load","loadBindingDocument","lookupNamespaceURI","lookupPrefix","normalize","normalizeDocument","getFeature","getUserData","setUserData"]); +domMemberMap.Element=extendArray(domMemberMap.Node,["clientWidth","clientHeight","offsetLeft","offsetTop","offsetWidth","offsetHeight","scrollLeft","scrollTop","scrollWidth","scrollHeight","style","tabIndex","title","lang","align","spellcheck","addEventListener","removeEventListener","dispatchEvent","focus","blur","cloneNode","appendChild","insertBefore","replaceChild","removeChild","compareDocumentPosition","getElementsByTagName","getElementsByTagNameNS","getAttribute","getAttributeNS","getAttributeNode","getAttributeNodeNS","setAttribute","setAttributeNS","setAttributeNode","setAttributeNodeNS","removeAttribute","removeAttributeNS","removeAttributeNode","hasAttribute","hasAttributeNS","hasAttributes","hasChildNodes","lookupNamespaceURI","lookupPrefix","normalize","isDefaultNamespace","isEqualNode","isSameNode","isSupported","getFeature","getUserData","setUserData"]); +domMemberMap.SVGElement=extendArray(domMemberMap.Element,["x","y","width","height","rx","ry","transform","href","ownerSVGElement","viewportElement","farthestViewportElement","nearestViewportElement","getBBox","getCTM","getScreenCTM","getTransformToElement","getPresentationAttribute","preserveAspectRatio"]); +domMemberMap.SVGSVGElement=extendArray(domMemberMap.Element,["x","y","width","height","rx","ry","transform","viewBox","viewport","currentView","useCurrentView","pixelUnitToMillimeterX","pixelUnitToMillimeterY","screenPixelToMillimeterX","screenPixelToMillimeterY","currentScale","currentTranslate","zoomAndPan","ownerSVGElement","viewportElement","farthestViewportElement","nearestViewportElement","contentScriptType","contentStyleType","getBBox","getCTM","getScreenCTM","getTransformToElement","getEnclosureList","getIntersectionList","getViewboxToViewportTransform","getPresentationAttribute","getElementById","checkEnclosure","checkIntersection","createSVGAngle","createSVGLength","createSVGMatrix","createSVGNumber","createSVGPoint","createSVGRect","createSVGString","createSVGTransform","createSVGTransformFromMatrix","deSelectAll","preserveAspectRatio","forceRedraw","suspendRedraw","unsuspendRedraw","unsuspendRedrawAll","getCurrentTime","setCurrentTime","animationsPaused","pauseAnimations","unpauseAnimations"]); +domMemberMap.HTMLImageElement=extendArray(domMemberMap.Element,["src","naturalWidth","naturalHeight","width","height","x","y","name","alt","longDesc","lowsrc","border","complete","hspace","vspace","isMap","useMap"]); +domMemberMap.HTMLAnchorElement=extendArray(domMemberMap.Element,["name","target","accessKey","href","protocol","host","hostname","port","pathname","search","hash","hreflang","coords","shape","text","type","rel","rev","charset"]); +domMemberMap.HTMLIFrameElement=extendArray(domMemberMap.Element,["contentDocument","contentWindow","frameBorder","height","longDesc","marginHeight","marginWidth","name","scrolling","src","width"]); +domMemberMap.HTMLTableElement=extendArray(domMemberMap.Element,["bgColor","border","caption","cellPadding","cellSpacing","frame","rows","rules","summary","tBodies","tFoot","tHead","width","createCaption","createTFoot","createTHead","deleteCaption","deleteRow","deleteTFoot","deleteTHead","insertRow"]); +domMemberMap.HTMLTableRowElement=extendArray(domMemberMap.Element,["bgColor","cells","ch","chOff","rowIndex","sectionRowIndex","vAlign","deleteCell","insertCell"]); +domMemberMap.HTMLTableCellElement=extendArray(domMemberMap.Element,["abbr","axis","bgColor","cellIndex","ch","chOff","colSpan","headers","height","noWrap","rowSpan","scope","vAlign","width"]); +domMemberMap.HTMLScriptElement=extendArray(domMemberMap.Element,["src"]); +domMemberMap.HTMLButtonElement=extendArray(domMemberMap.Element,["accessKey","disabled","form","name","type","value","click"]); +domMemberMap.HTMLInputElement=extendArray(domMemberMap.Element,["type","value","checked","accept","accessKey","alt","controllers","defaultChecked","defaultValue","disabled","form","maxLength","name","readOnly","selectionEnd","selectionStart","size","src","textLength","useMap","click","select","setSelectionRange"]); +domMemberMap.HTMLFormElement=extendArray(domMemberMap.Element,["acceptCharset","action","author","elements","encoding","enctype","entry_id","length","method","name","post","target","text","url","reset","submit"]); +domMemberMap.HTMLBodyElement=extendArray(domMemberMap.Element,["aLink","background","bgColor","link","text","vLink"]); +domMemberMap.HTMLHtmlElement=extendArray(domMemberMap.Element,["version"]); +domMemberMap.Text=extendArray(domMemberMap.Node,["data","length","appendData","deleteData","insertData","replaceData","splitText","substringData"]); +domMemberMap.Attr=extendArray(domMemberMap.Node,["name","value","specified","ownerElement"]); +domMemberMap.Event=["type","target","currentTarget","originalTarget","explicitOriginalTarget","relatedTarget","rangeParent","rangeOffset","view","keyCode","charCode","screenX","screenY","clientX","clientY","layerX","layerY","pageX","pageY","detail","button","which","ctrlKey","shiftKey","altKey","metaKey","eventPhase","timeStamp","bubbles","cancelable","cancelBubble","isTrusted","isChar","getPreventDefault","initEvent","initMouseEvent","initKeyEvent","initUIEvent","preventBubble","preventCapture","preventDefault","stopPropagation"]; +this.domConstantMap={ELEMENT_NODE:1,ATTRIBUTE_NODE:1,TEXT_NODE:1,CDATA_SECTION_NODE:1,ENTITY_REFERENCE_NODE:1,ENTITY_NODE:1,PROCESSING_INSTRUCTION_NODE:1,COMMENT_NODE:1,DOCUMENT_NODE:1,DOCUMENT_TYPE_NODE:1,DOCUMENT_FRAGMENT_NODE:1,NOTATION_NODE:1,DOCUMENT_POSITION_DISCONNECTED:1,DOCUMENT_POSITION_PRECEDING:1,DOCUMENT_POSITION_FOLLOWING:1,DOCUMENT_POSITION_CONTAINS:1,DOCUMENT_POSITION_CONTAINED_BY:1,DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC:1,UNKNOWN_RULE:1,STYLE_RULE:1,CHARSET_RULE:1,IMPORT_RULE:1,MEDIA_RULE:1,FONT_FACE_RULE:1,PAGE_RULE:1,CAPTURING_PHASE:1,AT_TARGET:1,BUBBLING_PHASE:1,SCROLL_PAGE_UP:1,SCROLL_PAGE_DOWN:1,MOUSEUP:1,MOUSEDOWN:1,MOUSEOVER:1,MOUSEOUT:1,MOUSEMOVE:1,MOUSEDRAG:1,CLICK:1,DBLCLICK:1,KEYDOWN:1,KEYUP:1,KEYPRESS:1,DRAGDROP:1,FOCUS:1,BLUR:1,SELECT:1,CHANGE:1,RESET:1,SUBMIT:1,SCROLL:1,LOAD:1,UNLOAD:1,XFER_DONE:1,ABORT:1,ERROR:1,LOCATE:1,MOVE:1,RESIZE:1,FORWARD:1,HELP:1,BACK:1,TEXT:1,ALT_MASK:1,CONTROL_MASK:1,SHIFT_MASK:1,META_MASK:1,DOM_VK_TAB:1,DOM_VK_PAGE_UP:1,DOM_VK_PAGE_DOWN:1,DOM_VK_UP:1,DOM_VK_DOWN:1,DOM_VK_LEFT:1,DOM_VK_RIGHT:1,DOM_VK_CANCEL:1,DOM_VK_HELP:1,DOM_VK_BACK_SPACE:1,DOM_VK_CLEAR:1,DOM_VK_RETURN:1,DOM_VK_ENTER:1,DOM_VK_SHIFT:1,DOM_VK_CONTROL:1,DOM_VK_ALT:1,DOM_VK_PAUSE:1,DOM_VK_CAPS_LOCK:1,DOM_VK_ESCAPE:1,DOM_VK_SPACE:1,DOM_VK_END:1,DOM_VK_HOME:1,DOM_VK_PRINTSCREEN:1,DOM_VK_INSERT:1,DOM_VK_DELETE:1,DOM_VK_0:1,DOM_VK_1:1,DOM_VK_2:1,DOM_VK_3:1,DOM_VK_4:1,DOM_VK_5:1,DOM_VK_6:1,DOM_VK_7:1,DOM_VK_8:1,DOM_VK_9:1,DOM_VK_SEMICOLON:1,DOM_VK_EQUALS:1,DOM_VK_A:1,DOM_VK_B:1,DOM_VK_C:1,DOM_VK_D:1,DOM_VK_E:1,DOM_VK_F:1,DOM_VK_G:1,DOM_VK_H:1,DOM_VK_I:1,DOM_VK_J:1,DOM_VK_K:1,DOM_VK_L:1,DOM_VK_M:1,DOM_VK_N:1,DOM_VK_O:1,DOM_VK_P:1,DOM_VK_Q:1,DOM_VK_R:1,DOM_VK_S:1,DOM_VK_T:1,DOM_VK_U:1,DOM_VK_V:1,DOM_VK_W:1,DOM_VK_X:1,DOM_VK_Y:1,DOM_VK_Z:1,DOM_VK_CONTEXT_MENU:1,DOM_VK_NUMPAD0:1,DOM_VK_NUMPAD1:1,DOM_VK_NUMPAD2:1,DOM_VK_NUMPAD3:1,DOM_VK_NUMPAD4:1,DOM_VK_NUMPAD5:1,DOM_VK_NUMPAD6:1,DOM_VK_NUMPAD7:1,DOM_VK_NUMPAD8:1,DOM_VK_NUMPAD9:1,DOM_VK_MULTIPLY:1,DOM_VK_ADD:1,DOM_VK_SEPARATOR:1,DOM_VK_SUBTRACT:1,DOM_VK_DECIMAL:1,DOM_VK_DIVIDE:1,DOM_VK_F1:1,DOM_VK_F2:1,DOM_VK_F3:1,DOM_VK_F4:1,DOM_VK_F5:1,DOM_VK_F6:1,DOM_VK_F7:1,DOM_VK_F8:1,DOM_VK_F9:1,DOM_VK_F10:1,DOM_VK_F11:1,DOM_VK_F12:1,DOM_VK_F13:1,DOM_VK_F14:1,DOM_VK_F15:1,DOM_VK_F16:1,DOM_VK_F17:1,DOM_VK_F18:1,DOM_VK_F19:1,DOM_VK_F20:1,DOM_VK_F21:1,DOM_VK_F22:1,DOM_VK_F23:1,DOM_VK_F24:1,DOM_VK_NUM_LOCK:1,DOM_VK_SCROLL_LOCK:1,DOM_VK_COMMA:1,DOM_VK_PERIOD:1,DOM_VK_SLASH:1,DOM_VK_BACK_QUOTE:1,DOM_VK_OPEN_BRACKET:1,DOM_VK_BACK_SLASH:1,DOM_VK_CLOSE_BRACKET:1,DOM_VK_QUOTE:1,DOM_VK_META:1,SVG_ZOOMANDPAN_DISABLE:1,SVG_ZOOMANDPAN_MAGNIFY:1,SVG_ZOOMANDPAN_UNKNOWN:1}; +this.cssInfo={background:["bgRepeat","bgAttachment","bgPosition","color","systemColor","none"],"background-attachment":["bgAttachment"],"background-color":["color","systemColor"],"background-image":["none"],"background-position":["bgPosition"],"background-repeat":["bgRepeat"],border:["borderStyle","thickness","color","systemColor","none"],"border-top":["borderStyle","borderCollapse","color","systemColor","none"],"border-right":["borderStyle","borderCollapse","color","systemColor","none"],"border-bottom":["borderStyle","borderCollapse","color","systemColor","none"],"border-left":["borderStyle","borderCollapse","color","systemColor","none"],"border-collapse":["borderCollapse"],"border-color":["color","systemColor"],"border-top-color":["color","systemColor"],"border-right-color":["color","systemColor"],"border-bottom-color":["color","systemColor"],"border-left-color":["color","systemColor"],"border-spacing":[],"border-style":["borderStyle"],"border-top-style":["borderStyle"],"border-right-style":["borderStyle"],"border-bottom-style":["borderStyle"],"border-left-style":["borderStyle"],"border-width":["thickness"],"border-top-width":["thickness"],"border-right-width":["thickness"],"border-bottom-width":["thickness"],"border-left-width":["thickness"],bottom:["auto"],"caption-side":["captionSide"],clear:["clear","none"],clip:["auto"],color:["color","systemColor"],content:["content"],"counter-increment":["none"],"counter-reset":["none"],cursor:["cursor","none"],direction:["direction"],display:["display","none"],"empty-cells":[],"float":["float","none"],font:["fontStyle","fontVariant","fontWeight","fontFamily"],"font-family":["fontFamily"],"font-size":["fontSize"],"font-size-adjust":[],"font-stretch":[],"font-style":["fontStyle"],"font-variant":["fontVariant"],"font-weight":["fontWeight"],height:["auto"],left:["auto"],"letter-spacing":[],"line-height":[],"list-style":["listStyleType","listStylePosition","none"],"list-style-image":["none"],"list-style-position":["listStylePosition"],"list-style-type":["listStyleType","none"],margin:[],"margin-top":[],"margin-right":[],"margin-bottom":[],"margin-left":[],"marker-offset":["auto"],"min-height":["none"],"max-height":["none"],"min-width":["none"],"max-width":["none"],outline:["borderStyle","color","systemColor","none"],"outline-color":["color","systemColor"],"outline-style":["borderStyle"],"outline-width":[],overflow:["overflow","auto"],"overflow-x":["overflow","auto"],"overflow-y":["overflow","auto"],padding:[],"padding-top":[],"padding-right":[],"padding-bottom":[],"padding-left":[],position:["position"],quotes:["none"],right:["auto"],"table-layout":["tableLayout","auto"],"text-align":["textAlign"],"text-decoration":["textDecoration","none"],"text-indent":[],"text-shadow":[],"text-transform":["textTransform","none"],top:["auto"],"unicode-bidi":[],"vertical-align":["verticalAlign"],"white-space":["whiteSpace"],width:["auto"],"word-spacing":[],"z-index":[],"-moz-appearance":["mozAppearance"],"-moz-border-radius":[],"-moz-border-radius-bottomleft":[],"-moz-border-radius-bottomright":[],"-moz-border-radius-topleft":[],"-moz-border-radius-topright":[],"-moz-border-top-colors":["color","systemColor"],"-moz-border-right-colors":["color","systemColor"],"-moz-border-bottom-colors":["color","systemColor"],"-moz-border-left-colors":["color","systemColor"],"-moz-box-align":["mozBoxAlign"],"-moz-box-direction":["mozBoxDirection"],"-moz-box-flex":[],"-moz-box-ordinal-group":[],"-moz-box-orient":["mozBoxOrient"],"-moz-box-pack":["mozBoxPack"],"-moz-box-sizing":["mozBoxSizing"],"-moz-opacity":[],"-moz-user-focus":["userFocus","none"],"-moz-user-input":["userInput"],"-moz-user-modify":[],"-moz-user-select":["userSelect","none"],"-moz-background-clip":[],"-moz-background-inline-policy":[],"-moz-background-origin":[],"-moz-binding":[],"-moz-column-count":[],"-moz-column-gap":[],"-moz-column-width":[],"-moz-image-region":[]}; +this.inheritedStyleNames={"border-collapse":1,"border-spacing":1,"border-style":1,"caption-side":1,color:1,cursor:1,direction:1,"empty-cells":1,font:1,"font-family":1,"font-size-adjust":1,"font-size":1,"font-style":1,"font-variant":1,"font-weight":1,"letter-spacing":1,"line-height":1,"list-style":1,"list-style-image":1,"list-style-position":1,"list-style-type":1,quotes:1,"text-align":1,"text-decoration":1,"text-indent":1,"text-shadow":1,"text-transform":1,"white-space":1,"word-spacing":1}; +this.cssKeywords={appearance:["button","button-small","checkbox","checkbox-container","checkbox-small","dialog","listbox","menuitem","menulist","menulist-button","menulist-textfield","menupopup","progressbar","radio","radio-container","radio-small","resizer","scrollbar","scrollbarbutton-down","scrollbarbutton-left","scrollbarbutton-right","scrollbarbutton-up","scrollbartrack-horizontal","scrollbartrack-vertical","separator","statusbar","tab","tab-left-edge","tabpanels","textfield","toolbar","toolbarbutton","toolbox","tooltip","treeheadercell","treeheadersortarrow","treeitem","treetwisty","treetwistyopen","treeview","window"],systemColor:["ActiveBorder","ActiveCaption","AppWorkspace","Background","ButtonFace","ButtonHighlight","ButtonShadow","ButtonText","CaptionText","GrayText","Highlight","HighlightText","InactiveBorder","InactiveCaption","InactiveCaptionText","InfoBackground","InfoText","Menu","MenuText","Scrollbar","ThreeDDarkShadow","ThreeDFace","ThreeDHighlight","ThreeDLightShadow","ThreeDShadow","Window","WindowFrame","WindowText","-moz-field","-moz-fieldtext","-moz-workspace","-moz-visitedhyperlinktext","-moz-use-text-color"],color:["AliceBlue","AntiqueWhite","Aqua","Aquamarine","Azure","Beige","Bisque","Black","BlanchedAlmond","Blue","BlueViolet","Brown","BurlyWood","CadetBlue","Chartreuse","Chocolate","Coral","CornflowerBlue","Cornsilk","Crimson","Cyan","DarkBlue","DarkCyan","DarkGoldenRod","DarkGray","DarkGreen","DarkKhaki","DarkMagenta","DarkOliveGreen","DarkOrange","DarkOrchid","DarkRed","DarkSalmon","DarkSeaGreen","DarkSlateBlue","DarkSlateGray","DarkTurquoise","DarkViolet","DeepPink","DarkSkyBlue","DimGray","DodgerBlue","Feldspar","FireBrick","FloralWhite","ForestGreen","Fuchsia","Gainsboro","GhostWhite","Gold","GoldenRod","Gray","Green","GreenYellow","HoneyDew","HotPink","IndianRed","Indigo","Ivory","Khaki","Lavender","LavenderBlush","LawnGreen","LemonChiffon","LightBlue","LightCoral","LightCyan","LightGoldenRodYellow","LightGrey","LightGreen","LightPink","LightSalmon","LightSeaGreen","LightSkyBlue","LightSlateBlue","LightSlateGray","LightSteelBlue","LightYellow","Lime","LimeGreen","Linen","Magenta","Maroon","MediumAquaMarine","MediumBlue","MediumOrchid","MediumPurple","MediumSeaGreen","MediumSlateBlue","MediumSpringGreen","MediumTurquoise","MediumVioletRed","MidnightBlue","MintCream","MistyRose","Moccasin","NavajoWhite","Navy","OldLace","Olive","OliveDrab","Orange","OrangeRed","Orchid","PaleGoldenRod","PaleGreen","PaleTurquoise","PaleVioletRed","PapayaWhip","PeachPuff","Peru","Pink","Plum","PowderBlue","Purple","Red","RosyBrown","RoyalBlue","SaddleBrown","Salmon","SandyBrown","SeaGreen","SeaShell","Sienna","Silver","SkyBlue","SlateBlue","SlateGray","Snow","SpringGreen","SteelBlue","Tan","Teal","Thistle","Tomato","Turquoise","Violet","VioletRed","Wheat","White","WhiteSmoke","Yellow","YellowGreen","transparent","invert"],auto:["auto"],none:["none"],captionSide:["top","bottom","left","right"],clear:["left","right","both"],cursor:["auto","cell","context-menu","crosshair","default","help","pointer","progress","move","e-resize","all-scroll","ne-resize","nw-resize","n-resize","se-resize","sw-resize","s-resize","w-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","col-resize","row-resize","text","vertical-text","wait","alias","copy","move","no-drop","not-allowed","-moz-alias","-moz-cell","-moz-copy","-moz-grab","-moz-grabbing","-moz-contextmenu","-moz-zoom-in","-moz-zoom-out","-moz-spinning"],direction:["ltr","rtl"],bgAttachment:["scroll","fixed"],bgPosition:["top","center","bottom","left","right"],bgRepeat:["repeat","repeat-x","repeat-y","no-repeat"],borderStyle:["hidden","dotted","dashed","solid","double","groove","ridge","inset","outset","-moz-bg-inset","-moz-bg-outset","-moz-bg-solid"],borderCollapse:["collapse","separate"],overflow:["visible","hidden","scroll","-moz-scrollbars-horizontal","-moz-scrollbars-none","-moz-scrollbars-vertical"],listStyleType:["disc","circle","square","decimal","decimal-leading-zero","lower-roman","upper-roman","lower-greek","lower-alpha","lower-latin","upper-alpha","upper-latin","hebrew","armenian","georgian","cjk-ideographic","hiragana","katakana","hiragana-iroha","katakana-iroha","inherit"],listStylePosition:["inside","outside"],content:["open-quote","close-quote","no-open-quote","no-close-quote","inherit"],fontStyle:["normal","italic","oblique","inherit"],fontVariant:["normal","small-caps","inherit"],fontWeight:["normal","bold","bolder","lighter","inherit"],fontSize:["xx-small","x-small","small","medium","large","x-large","xx-large","smaller","larger"],fontFamily:["Arial","Comic Sans MS","Georgia","Tahoma","Verdana","Times New Roman","Trebuchet MS","Lucida Grande","Helvetica","serif","sans-serif","cursive","fantasy","monospace","caption","icon","menu","message-box","small-caption","status-bar","inherit"],display:["block","inline","inline-block","list-item","marker","run-in","compact","table","inline-table","table-row-group","table-column","table-column-group","table-header-group","table-footer-group","table-row","table-cell","table-caption","-moz-box","-moz-compact","-moz-deck","-moz-grid","-moz-grid-group","-moz-grid-line","-moz-groupbox","-moz-inline-block","-moz-inline-box","-moz-inline-grid","-moz-inline-stack","-moz-inline-table","-moz-marker","-moz-popup","-moz-runin","-moz-stack"],position:["static","relative","absolute","fixed","inherit"],"float":["left","right"],textAlign:["left","right","center","justify"],tableLayout:["fixed"],textDecoration:["underline","overline","line-through","blink"],textTransform:["capitalize","lowercase","uppercase","inherit"],unicodeBidi:["normal","embed","bidi-override"],whiteSpace:["normal","pre","nowrap"],verticalAlign:["baseline","sub","super","top","text-top","middle","bottom","text-bottom","inherit"],thickness:["thin","medium","thick"],userFocus:["ignore","normal"],userInput:["disabled","enabled"],userSelect:["normal"],mozBoxSizing:["content-box","padding-box","border-box"],mozBoxAlign:["start","center","end","baseline","stretch"],mozBoxDirection:["normal","reverse"],mozBoxOrient:["horizontal","vertical"],mozBoxPack:["start","center","end"]}; +this.nonEditableTags={HTML:1,HEAD:1,html:1,head:1}; +this.innerEditableTags={BODY:1,body:1}; +this.selfClosingTags={meta:1,link:1,area:1,base:1,col:1,input:1,img:1,br:1,hr:1,param:1,embed:1}; +var invisibleTags=this.invisibleTags={HTML:1,HEAD:1,TITLE:1,META:1,LINK:1,STYLE:1,SCRIPT:1,NOSCRIPT:1,BR:1,PARAM:1,COL:1,html:1,head:1,title:1,meta:1,link:1,style:1,script:1,noscript:1,br:1,param:1,col:1}; +if(typeof KeyEvent=="undefined"){this.KeyEvent={DOM_VK_CANCEL:3,DOM_VK_HELP:6,DOM_VK_BACK_SPACE:8,DOM_VK_TAB:9,DOM_VK_CLEAR:12,DOM_VK_RETURN:13,DOM_VK_ENTER:14,DOM_VK_SHIFT:16,DOM_VK_CONTROL:17,DOM_VK_ALT:18,DOM_VK_PAUSE:19,DOM_VK_CAPS_LOCK:20,DOM_VK_ESCAPE:27,DOM_VK_SPACE:32,DOM_VK_PAGE_UP:33,DOM_VK_PAGE_DOWN:34,DOM_VK_END:35,DOM_VK_HOME:36,DOM_VK_LEFT:37,DOM_VK_UP:38,DOM_VK_RIGHT:39,DOM_VK_DOWN:40,DOM_VK_PRINTSCREEN:44,DOM_VK_INSERT:45,DOM_VK_DELETE:46,DOM_VK_0:48,DOM_VK_1:49,DOM_VK_2:50,DOM_VK_3:51,DOM_VK_4:52,DOM_VK_5:53,DOM_VK_6:54,DOM_VK_7:55,DOM_VK_8:56,DOM_VK_9:57,DOM_VK_SEMICOLON:59,DOM_VK_EQUALS:61,DOM_VK_A:65,DOM_VK_B:66,DOM_VK_C:67,DOM_VK_D:68,DOM_VK_E:69,DOM_VK_F:70,DOM_VK_G:71,DOM_VK_H:72,DOM_VK_I:73,DOM_VK_J:74,DOM_VK_K:75,DOM_VK_L:76,DOM_VK_M:77,DOM_VK_N:78,DOM_VK_O:79,DOM_VK_P:80,DOM_VK_Q:81,DOM_VK_R:82,DOM_VK_S:83,DOM_VK_T:84,DOM_VK_U:85,DOM_VK_V:86,DOM_VK_W:87,DOM_VK_X:88,DOM_VK_Y:89,DOM_VK_Z:90,DOM_VK_CONTEXT_MENU:93,DOM_VK_NUMPAD0:96,DOM_VK_NUMPAD1:97,DOM_VK_NUMPAD2:98,DOM_VK_NUMPAD3:99,DOM_VK_NUMPAD4:100,DOM_VK_NUMPAD5:101,DOM_VK_NUMPAD6:102,DOM_VK_NUMPAD7:103,DOM_VK_NUMPAD8:104,DOM_VK_NUMPAD9:105,DOM_VK_MULTIPLY:106,DOM_VK_ADD:107,DOM_VK_SEPARATOR:108,DOM_VK_SUBTRACT:109,DOM_VK_DECIMAL:110,DOM_VK_DIVIDE:111,DOM_VK_F1:112,DOM_VK_F2:113,DOM_VK_F3:114,DOM_VK_F4:115,DOM_VK_F5:116,DOM_VK_F6:117,DOM_VK_F7:118,DOM_VK_F8:119,DOM_VK_F9:120,DOM_VK_F10:121,DOM_VK_F11:122,DOM_VK_F12:123,DOM_VK_F13:124,DOM_VK_F14:125,DOM_VK_F15:126,DOM_VK_F16:127,DOM_VK_F17:128,DOM_VK_F18:129,DOM_VK_F19:130,DOM_VK_F20:131,DOM_VK_F21:132,DOM_VK_F22:133,DOM_VK_F23:134,DOM_VK_F24:135,DOM_VK_NUM_LOCK:144,DOM_VK_SCROLL_LOCK:145,DOM_VK_COMMA:188,DOM_VK_PERIOD:190,DOM_VK_SLASH:191,DOM_VK_BACK_QUOTE:192,DOM_VK_OPEN_BRACKET:219,DOM_VK_BACK_SLASH:220,DOM_VK_CLOSE_BRACKET:221,DOM_VK_QUOTE:222,DOM_VK_META:224} +}this.Ajax={requests:[],transport:null,states:["Uninitialized","Loading","Loaded","Interactive","Complete"],initialize:function(){this.transport=FBL.getNativeXHRObject() +},getXHRObject:function(){var xhrObj=false; +try{xhrObj=new XMLHttpRequest() +}catch(e){var progid=["MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"]; +for(var i=0; +i<progid.length; +++i){try{xhrObj=new ActiveXObject(progid[i]) +}catch(e){continue +}break +}}finally{return xhrObj +}},request:function(options){var o=FBL.extend({type:"get",async:true,dataType:"text",contentType:"application/x-www-form-urlencoded"},options||{}); +this.requests.push(o); +var s=this.getState(); +if(s=="Uninitialized"||s=="Complete"||s=="Loaded"){this.sendRequest() +}},serialize:function(data){var r=[""],rl=0; +if(data){if(typeof data=="string"){r[rl++]=data +}else{if(data.innerHTML&&data.elements){for(var i=0,el,l=(el=data.elements).length; +i<l; +i++){if(el[i].name){r[rl++]=encodeURIComponent(el[i].name); +r[rl++]="="; +r[rl++]=encodeURIComponent(el[i].value); +r[rl++]="&" +}}}else{for(var param in data){r[rl++]=encodeURIComponent(param); +r[rl++]="="; +r[rl++]=encodeURIComponent(data[param]); +r[rl++]="&" +}}}}return r.join("").replace(/&$/,"") +},sendRequest:function(){var t=FBL.Ajax.transport,r=FBL.Ajax.requests.shift(),data; +t.open(r.type,r.url,r.async); +t.setRequestHeader("X-Requested-With","XMLHttpRequest"); +if(data=FBL.Ajax.serialize(r.data)){t.setRequestHeader("Content-Type",r.contentType) +}t.onreadystatechange=function(){FBL.Ajax.onStateChange(r) +}; +t.send(data) +},onStateChange:function(options){var fn,o=options,t=this.transport; +var state=this.getState(t); +if(fn=o["on"+state]){fn(this.getResponse(o),o) +}if(state=="Complete"){var success=t.status==200,response=this.getResponse(o); +if(fn=o.onUpdate){fn(response,o) +}if(fn=o["on"+(success?"Success":"Failure")]){fn(response,o) +}t.onreadystatechange=FBL.emptyFn; +if(this.requests.length>0){setTimeout(this.sendRequest,10) +}}},getResponse:function(options){var t=this.transport,type=options.dataType; +if(t.status!=200){return t.statusText +}else{if(type=="text"){return t.responseText +}else{if(type=="html"){return t.responseText +}else{if(type=="xml"){return t.responseXML +}else{if(type=="json"){return eval("("+t.responseText+")") +}}}}}},getState:function(){return this.states[this.transport.readyState] +}}; +this.createCookie=function(name,value,days){if("cookie" in document){if(days){var date=new Date(); +date.setTime(date.getTime()+(days*24*60*60*1000)); +var expires="; expires="+date.toGMTString() +}else{var expires="" +}document.cookie=name+"="+value+expires+"; path=/" +}}; +this.readCookie=function(name){if("cookie" in document){var nameEQ=name+"="; +var ca=document.cookie.split(";"); +for(var i=0; +i<ca.length; +i++){var c=ca[i]; +while(c.charAt(0)==" "){c=c.substring(1,c.length) +}if(c.indexOf(nameEQ)==0){return c.substring(nameEQ.length,c.length) +}}}return null +}; +this.removeCookie=function(name){this.createCookie(name,"",-1) +}; +var fixIE6BackgroundImageCache=function(doc){doc=doc||document; +try{doc.execCommand("BackgroundImageCache",false,true) +}catch(E){}}; +var resetStyle="margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;"; +var calculatePixelsPerInch=function calculatePixelsPerInch(doc,body){var inch=FBL.createGlobalElement("div"); +inch.style.cssText=resetStyle+"width:1in; height:1in; position:absolute; top:-1234px; left:-1234px;"; +body.appendChild(inch); +FBL.pixelsPerInch={x:inch.offsetWidth,y:inch.offsetHeight}; +body.removeChild(inch) +}; +this.SourceLink=function(url,line,type,object,instance){this.href=url; +this.instance=instance; +this.line=line; +this.type=type; +this.object=object +}; +this.SourceLink.prototype={toString:function(){return this.href +},toJSON:function(){return'{"href":"'+this.href+'", '+(this.line?('"line":'+this.line+","):"")+(this.type?(' "type":"'+this.type+'",'):"")+"}" +}}; +this.SourceText=function(lines,owner){this.lines=lines; +this.owner=owner +}; +this.SourceText.getLineAsHTML=function(lineNo){return escapeForSourceLine(this.lines[lineNo-1]) +} +}).apply(FBL); +FBL.ns(function(){with(FBL){var oSTR={NoMembersWarning:"There are no properties to show for this object.",EmptyStyleSheet:"There are no rules in this stylesheet.",EmptyElementCSS:"This element has no style rules.",AccessRestricted:"Access to restricted URI denied.","net.label.Parameters":"Parameters","net.label.Source":"Source",URLParameters:"Params",EditStyle:"Edit Element Style...",NewRule:"New Rule...",NewProp:"New Property...",EditProp:'Edit "%s"',DeleteProp:'Delete "%s"',DisableProp:'Disable "%s"'}; +FBL.$STR=function(name){return oSTR.hasOwnProperty(name)?oSTR[name]:name +}; +FBL.$STRF=function(name,args){if(!oSTR.hasOwnProperty(name)){return name +}var format=oSTR[name]; +var objIndex=0; +var parts=parseFormat(format); +var trialIndex=objIndex; +var objects=args; +for(var i=0; +i<parts.length; +i++){var part=parts[i]; +if(part&&typeof(part)=="object"){if(++trialIndex>objects.length){format=""; +objIndex=-1; +parts.length=0; +break +}}}var result=[]; +for(var i=0; +i<parts.length; +++i){var part=parts[i]; +if(part&&typeof(part)=="object"){result.push(""+args.shift()) +}else{result.push(part) +}}return result.join("") +}; +var parseFormat=function parseFormat(format){var parts=[]; +if(format.length<=0){return parts +}var reg=/((^%|.%)(\d+)?(\.)([a-zA-Z]))|((^%|.%)([a-zA-Z]))/; +for(var m=reg.exec(format); +m; +m=reg.exec(format)){if(m[0].substr(0,2)=="%%"){parts.push(format.substr(0,m.index)); +parts.push(m[0].substr(1)) +}else{var type=m[8]?m[8]:m[5]; +var precision=m[3]?parseInt(m[3]):(m[4]=="."?-1:0); +var rep=null; +switch(type){case"s":rep=FirebugReps.Text; +break; +case"f":case"i":case"d":rep=FirebugReps.Number; +break; +case"o":rep=null; +break +}parts.push(format.substr(0,m[0][0]=="%"?m.index:m.index+1)); +parts.push({rep:rep,precision:precision,type:("%"+type)}) +}format=format.substr(m.index+m[0].length) +}parts.push(format); +return parts +} +}}); +FBL.ns(function(){with(FBL){var modules=[]; +var panelTypes=[]; +var panelTypeMap={}; +var reps=[]; +var parentPanelMap={}; +FBL.Firebug={version:"Firebug Lite 1.4.0",revision:"$Revision: 11967 $",modules:modules,panelTypes:panelTypes,panelTypeMap:panelTypeMap,reps:reps,initialize:function(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.initialize","initializing application") +}Firebug.browser=new Context(Env.browser); +Firebug.context=Firebug.browser; +Firebug.loadPrefs(); +Firebug.context.persistedState.isOpen=false; +cacheDocument(); +if(Firebug.Inspector&&Firebug.Inspector.create){Firebug.Inspector.create() +}if(FBL.CssAnalyzer&&FBL.CssAnalyzer.processAllStyleSheets){FBL.CssAnalyzer.processAllStyleSheets(Firebug.browser.document) +}FirebugChrome.initialize(); +dispatch(modules,"initialize",[]); +if(Firebug.disableResourceFetching){Firebug.Console.logFormatted(['Some Firebug Lite features are not working because resource fetching is disabled. To enabled it set the Firebug Lite option "disableResourceFetching" to "false". More info at http://getfirebug.com/firebuglite#Options'],Firebug.context,"warn") +}if(Env.onLoad){var onLoad=Env.onLoad; +delete Env.onLoad; +setTimeout(onLoad,200) +}},shutdown:function(){if(Firebug.saveCookies){Firebug.savePrefs() +}if(Firebug.Inspector){Firebug.Inspector.destroy() +}dispatch(modules,"shutdown",[]); +var chromeMap=FirebugChrome.chromeMap; +for(var name in chromeMap){if(chromeMap.hasOwnProperty(name)){try{chromeMap[name].destroy() +}catch(E){if(FBTrace.DBG_ERRORS){FBTrace.sysout("chrome.destroy() failed to: "+name) +}}}}Firebug.Lite.Cache.Element.clear(); +Firebug.Lite.Cache.StyleSheet.clear(); +Firebug.browser=null; +Firebug.context=null +},registerModule:function(){modules.push.apply(modules,arguments); +if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.registerModule") +}},registerPanel:function(){panelTypes.push.apply(panelTypes,arguments); +for(var i=0,panelType; +panelType=arguments[i]; +++i){panelTypeMap[panelType.prototype.name]=arguments[i]; +if(panelType.prototype.parentPanel){parentPanelMap[panelType.prototype.parentPanel]=1 +}}if(FBTrace.DBG_INITIALIZE){for(var i=0; +i<arguments.length; +++i){FBTrace.sysout("Firebug.registerPanel",arguments[i].prototype.name) +}}},registerRep:function(){reps.push.apply(reps,arguments) +},unregisterRep:function(){for(var i=0; +i<arguments.length; +++i){remove(reps,arguments[i]) +}},setDefaultReps:function(funcRep,rep){FBL.defaultRep=rep; +FBL.defaultFuncRep=funcRep +},getRep:function(object){var type=typeof object; +if(isIE&&isFunction(object)){type="function" +}for(var i=0; +i<reps.length; +++i){var rep=reps[i]; +try{if(rep.supportsObject(object,type)){if(FBTrace.DBG_DOM){FBTrace.sysout("getRep type: "+type+" object: "+object,rep) +}return rep +}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("firebug.getRep FAILS: ",exc.message||exc); +FBTrace.sysout("firebug.getRep reps["+i+"/"+reps.length+"]: Rep="+reps[i].className) +}}}return(type=="function")?defaultFuncRep:defaultRep +},getRepObject:function(node){var target=null; +for(var child=node; +child; +child=child.parentNode){if(hasClass(child,"repTarget")){target=child +}if(child.repObject){if(!target&&hasClass(child,"repIgnore")){break +}else{return child.repObject +}}}},getRepNode:function(node){for(var child=node; +child; +child=child.parentNode){if(child.repObject){return child +}}},getElementByRepObject:function(element,object){for(var child=element.firstChild; +child; +child=child.nextSibling){if(child.repObject==object){return child +}}},getPref:function(name){return Firebug[name] +},setPref:function(name,value){Firebug[name]=value; +Firebug.savePrefs() +},setPrefs:function(prefs){for(var name in prefs){if(prefs.hasOwnProperty(name)){Firebug[name]=prefs[name] +}}Firebug.savePrefs() +},restorePrefs:function(){var Options=Env.DefaultOptions; +for(var name in Options){Firebug[name]=Options[name] +}},loadPrefs:function(){this.restorePrefs(); +var prefs=Store.get("FirebugLite")||{}; +var options=prefs.options; +var persistedState=prefs.persistedState||FBL.defaultPersistedState; +for(var name in options){if(options.hasOwnProperty(name)){Firebug[name]=options[name] +}}if(Firebug.context&&persistedState){Firebug.context.persistedState=persistedState +}},savePrefs:function(){var prefs={options:{}}; +var EnvOptions=Env.Options; +var options=prefs.options; +for(var name in EnvOptions){if(EnvOptions.hasOwnProperty(name)){options[name]=Firebug[name] +}}var persistedState=Firebug.context.persistedState; +if(!persistedState){persistedState=Firebug.context.persistedState=FBL.defaultPersistedState +}prefs.persistedState=persistedState; +Store.set("FirebugLite",prefs) +},erasePrefs:function(){Store.remove("FirebugLite"); +this.restorePrefs() +}}; +Firebug.restorePrefs(); +window.Firebug=FBL.Firebug; +if(!Env.Options.enablePersistent||Env.Options.enablePersistent&&Env.isChromeContext||Env.isDebugMode){Env.browser.window.Firebug=FBL.Firebug +}FBL.cacheDocument=function cacheDocument(){var ElementCache=Firebug.Lite.Cache.Element; +var els=Firebug.browser.document.getElementsByTagName("*"); +for(var i=0,l=els.length,el; +i<l; +i++){el=els[i]; +ElementCache(el) +}}; +Firebug.Listener=function(){this.fbListeners=null +}; +Firebug.Listener.prototype={addListener:function(listener){if(!this.fbListeners){this.fbListeners=[] +}this.fbListeners.push(listener) +},removeListener:function(listener){remove(this.fbListeners,listener) +}}; +Firebug.Module=extend(new Firebug.Listener(),{initialize:function(){},shutdown:function(){},initContext:function(context){},reattachContext:function(browser,context){},destroyContext:function(context,persistedState){},showContext:function(browser,context){},loadedContext:function(context){},showPanel:function(browser,panel){},showSidePanel:function(browser,panel){},updateOption:function(name,value){},getObjectByURL:function(context,url){}}); +Firebug.Panel={name:"HelloWorld",title:"Hello World!",parentPanel:null,options:{hasCommandLine:false,hasStatusBar:false,hasToolButtons:false,isPreRendered:false,innerHTMLSync:false},tabNode:null,panelNode:null,sidePanelNode:null,statusBarNode:null,toolButtonsNode:null,panelBarNode:null,sidePanelBarBoxNode:null,sidePanelBarNode:null,sidePanelBar:null,searchable:false,editable:true,order:2147483647,statusSeparator:"<",create:function(context,doc){this.hasSidePanel=parentPanelMap.hasOwnProperty(this.name); +this.panelBarNode=$("fbPanelBar1"); +this.sidePanelBarBoxNode=$("fbPanelBar2"); +if(this.hasSidePanel){this.sidePanelBar=extend({},PanelBar); +this.sidePanelBar.create(this) +}var options=this.options=extend(Firebug.Panel.options,this.options); +var panelId="fb"+this.name; +if(options.isPreRendered){this.panelNode=$(panelId); +this.tabNode=$(panelId+"Tab"); +this.tabNode.style.display="block"; +if(options.hasToolButtons){this.toolButtonsNode=$(panelId+"Buttons") +}if(options.hasStatusBar){this.statusBarBox=$("fbStatusBarBox"); +this.statusBarNode=$(panelId+"StatusBar") +}}else{var containerSufix=this.parentPanel?"2":"1"; +var panelNode=this.panelNode=createElement("div",{id:panelId,className:"fbPanel"}); +$("fbPanel"+containerSufix).appendChild(panelNode); +var tabHTML='<span class="fbTabL"></span><span class="fbTabText">'+this.title+'</span><span class="fbTabR"></span>'; +var tabNode=this.tabNode=createElement("a",{id:panelId+"Tab",className:"fbTab fbHover",innerHTML:tabHTML}); +if(isIE6){tabNode.href="javascript:void(0)" +}var panelBarNode=this.parentPanel?Firebug.chrome.getPanel(this.parentPanel).sidePanelBarNode:this.panelBarNode; +panelBarNode.appendChild(tabNode); +tabNode.style.display="block"; +if(options.hasToolButtons){this.toolButtonsNode=createElement("span",{id:panelId+"Buttons",className:"fbToolbarButtons"}); +$("fbToolbarButtons").appendChild(this.toolButtonsNode) +}if(options.hasStatusBar){this.statusBarBox=$("fbStatusBarBox"); +this.statusBarNode=createElement("span",{id:panelId+"StatusBar",className:"fbToolbarButtons fbStatusBar"}); +this.statusBarBox.appendChild(this.statusBarNode) +}}this.containerNode=this.panelNode.parentNode; +if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.Panel.create",this.name) +}this.onContextMenu=bind(this.onContextMenu,this) +},destroy:function(state){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.Panel.destroy",this.name) +}if(this.hasSidePanel){this.sidePanelBar.destroy(); +this.sidePanelBar=null +}this.options=null; +this.name=null; +this.parentPanel=null; +this.tabNode=null; +this.panelNode=null; +this.containerNode=null; +this.toolButtonsNode=null; +this.statusBarBox=null; +this.statusBarNode=null +},initialize:function(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.Panel.initialize",this.name) +}if(this.hasSidePanel){this.sidePanelBar.initialize() +}var options=this.options=extend(Firebug.Panel.options,this.options); +var panelId="fb"+this.name; +this.panelNode=$(panelId); +this.tabNode=$(panelId+"Tab"); +this.tabNode.style.display="block"; +if(options.hasStatusBar){this.statusBarBox=$("fbStatusBarBox"); +this.statusBarNode=$(panelId+"StatusBar") +}if(options.hasToolButtons){this.toolButtonsNode=$(panelId+"Buttons") +}this.containerNode=this.panelNode.parentNode; +this.containerNode.scrollTop=this.lastScrollTop; +addEvent(this.containerNode,"contextmenu",this.onContextMenu); +Firebug.chrome.currentPanel=Firebug.chrome.selectedPanel&&Firebug.chrome.selectedPanel.sidePanelBar?Firebug.chrome.selectedPanel.sidePanelBar.selectedPanel:Firebug.chrome.selectedPanel; +Firebug.showInfoTips=true; +if(Firebug.InfoTip){Firebug.InfoTip.initializeBrowser(Firebug.chrome) +}},shutdown:function(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.Panel.shutdown",this.name) +}if(Firebug.InfoTip){Firebug.InfoTip.uninitializeBrowser(Firebug.chrome) +}if(Firebug.chrome.largeCommandLineVisible){Firebug.chrome.hideLargeCommandLine() +}if(this.hasSidePanel){}this.lastScrollTop=this.containerNode.scrollTop; +removeEvent(this.containerNode,"contextmenu",this.onContextMenu) +},detach:function(oldChrome,newChrome){if(oldChrome&&oldChrome.selectedPanel&&oldChrome.selectedPanel.name==this.name){this.lastScrollTop=oldChrome.selectedPanel.containerNode.scrollTop +}},reattach:function(doc){if(this.options.innerHTMLSync){this.synchronizeUI() +}},synchronizeUI:function(){this.containerNode.scrollTop=this.lastScrollTop||0 +},show:function(state){var options=this.options; +if(options.hasStatusBar){this.statusBarBox.style.display="inline"; +this.statusBarNode.style.display="inline" +}if(options.hasToolButtons){this.toolButtonsNode.style.display="inline" +}this.panelNode.style.display="block"; +this.visible=true; +if(!this.parentPanel){Firebug.chrome.layout(this) +}},hide:function(state){var options=this.options; +if(options.hasStatusBar){this.statusBarBox.style.display="none"; +this.statusBarNode.style.display="none" +}if(options.hasToolButtons){this.toolButtonsNode.style.display="none" +}this.panelNode.style.display="none"; +this.visible=false +},watchWindow:function(win){},unwatchWindow:function(win){},updateOption:function(name,value){},showToolbarButtons:function(buttonsId,show){try{if(!this.context.browser){if(FBTrace.DBG_ERRORS){FBTrace.sysout("firebug.Panel showToolbarButtons this.context has no browser, this:",this) +}return +}var buttons=this.context.browser.chrome.$(buttonsId); +if(buttons){collapse(buttons,show?"false":"true") +}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.dumpProperties("firebug.Panel showToolbarButtons FAILS",exc); +if(!this.context.browser){FBTrace.dumpStack("firebug.Panel showToolbarButtons no browser") +}}}},supportsObject:function(object){return 0 +},hasObject:function(object){return false +},select:function(object,forceUpdate){if(!object){object=this.getDefaultSelection(this.context) +}if(FBTrace.DBG_PANELS){FBTrace.sysout("firebug.select "+this.name+" forceUpdate: "+forceUpdate+" "+object+((object==this.selection)?"==":"!=")+this.selection) +}if(forceUpdate||object!=this.selection){this.selection=object; +this.updateSelection(object) +}},updateSelection:function(object){},markChange:function(skipSelf){if(this.dependents){if(skipSelf){for(var i=0; +i<this.dependents.length; +++i){var panelName=this.dependents[i]; +if(panelName!=this.name){this.context.invalidatePanels(panelName) +}}}else{this.context.invalidatePanels.apply(this.context,this.dependents) +}}},startInspecting:function(){},stopInspecting:function(object,cancelled){},search:function(text,reverse){},getSearchOptionsMenuItems:function(){return[Firebug.Search.searchOptionMenu("search.Case Sensitive","searchCaseSensitive")] +},navigateToNextDocument:function(match,reverse){var self=this; +function compare(a,b){var locA=self.getObjectDescription(a); +var locB=self.getObjectDescription(b); +if(locA.path>locB.path){return 1 +}if(locA.path<locB.path){return -1 +}if(locA.name>locB.name){return 1 +}if(locA.name<locB.name){return -1 +}return 0 +}var allLocs=this.getLocationList().sort(compare); +for(var curPos=0; +curPos<allLocs.length&&allLocs[curPos]!=this.location; +curPos++){}function transformIndex(index){if(reverse){var intermediate=curPos-index-1; +return(intermediate<0?allLocs.length:0)+intermediate +}else{return(curPos+index+1)%allLocs.length +}}for(var next=0; +next<allLocs.length-1; +next++){var object=allLocs[transformIndex(next)]; +if(match(object)){this.navigate(object); +return object +}}},getOptionsMenuItems:function(){return null +},getContextMenuItems:function(object,target){return[] +},getBreakOnMenuItems:function(){return[] +},getEditor:function(target,value){},getDefaultSelection:function(){return null +},browseObject:function(object){},getPopupObject:function(target){return Firebug.getRepObject(target) +},getTooltipObject:function(target){return Firebug.getRepObject(target) +},showInfoTip:function(infoTip,x,y){},getObjectPath:function(object){return null +},getLocationList:function(){return null +},getDefaultLocation:function(){return null +},getObjectLocation:function(object){return"" +},getObjectDescription:function(object){var url=this.getObjectLocation(object); +return FBL.splitURLBase(url) +},highlight:function(show){var tab=this.getTab(); +if(!tab){return +}if(show){tab.setAttribute("highlight","true") +}else{tab.removeAttribute("highlight") +}},getTab:function(){var chrome=Firebug.chrome; +var tab=chrome.$("fbPanelBar2").getTab(this.name); +if(!tab){tab=chrome.$("fbPanelBar1").getTab(this.name) +}return tab +},breakOnNext:function(armed){},shouldBreakOnNext:function(){return false +},getBreakOnNextTooltip:function(enabled){return null +},onContextMenu:function(event){if(!this.getContextMenuItems){return +}cancelEvent(event,true); +var target=event.target||event.srcElement; +var menu=this.getContextMenuItems(this.selection,target); +if(!menu){return +}var contextMenu=new Menu({id:"fbPanelContextMenu",items:menu}); +contextMenu.show(event.clientX,event.clientY); +return true +}}; +Firebug.MeasureBox={startMeasuring:function(target){if(!this.measureBox){this.measureBox=target.ownerDocument.createElement("span"); +this.measureBox.className="measureBox" +}copyTextStyles(target,this.measureBox); +target.ownerDocument.body.appendChild(this.measureBox) +},getMeasuringElement:function(){return this.measureBox +},measureText:function(value){this.measureBox.innerHTML=value?escapeForSourceLine(value):"m"; +return{width:this.measureBox.offsetWidth,height:this.measureBox.offsetHeight-1} +},measureInputText:function(value){value=value?escapeForTextNode(value):"m"; +if(!Firebug.showTextNodesWithWhitespace){value=value.replace(/\t/g,"mmmmmm").replace(/\ /g,"m") +}this.measureBox.innerHTML=value; +return{width:this.measureBox.offsetWidth,height:this.measureBox.offsetHeight-1} +},getBox:function(target){var style=this.measureBox.ownerDocument.defaultView.getComputedStyle(this.measureBox,""); +var box=getBoxFromStyles(style,this.measureBox); +return box +},stopMeasuring:function(){this.measureBox.parentNode.removeChild(this.measureBox) +}}; +if(FBL.domplate){Firebug.Rep=domplate({className:"",inspectable:true,supportsObject:function(object,type){return false +},inspectObject:function(object,context){Firebug.chrome.select(object) +},browseObject:function(object,context){},persistObject:function(object,context){},getRealObject:function(object,context){return object +},getTitle:function(object){var label=safeToString(object); +var re=/\[object (.*?)\]/; +var m=re.exec(label); +if(m){return m[1] +}else{if(isIE&&(label=="[object]"||typeof object=="object"&&typeof label=="undefined")){return"Object" +}else{return label +}}},getTooltip:function(object){return null +},getContextMenuItems:function(object,target,context){return[] +},STR:function(name){return $STR(name) +},cropString:function(text){return cropString(text) +},cropMultipleLines:function(text,limit){return cropMultipleLines(text,limit) +},toLowerCase:function(text){return text?text.toLowerCase():text +},plural:function(n){return n==1?"":"s" +}}) +}}}); +FBL.ns(function(){with(FBL){FBL.Controller={controllers:null,controllerContext:null,initialize:function(context){this.controllers=[]; +this.controllerContext=context||Firebug.chrome +},shutdown:function(){this.removeControllers() +},addController:function(){for(var i=0,arg; +arg=arguments[i]; +i++){if(typeof arg[0]=="string"){arg[0]=$$(arg[0],this.controllerContext) +}var handler=arg[2]; +arg[2]=bind(handler,this); +arg[3]=handler; +this.controllers.push(arg); +addEvent.apply(this,arg) +}},removeController:function(){for(var i=0,arg; +arg=arguments[i]; +i++){for(var j=0,c; +c=this.controllers[j]; +j++){if(arg[0]==c[0]&&arg[1]==c[1]&&arg[2]==c[3]){removeEvent.apply(this,c) +}}}},removeControllers:function(){for(var i=0,c; +c=this.controllers[i]; +i++){removeEvent.apply(this,c) +}}}; +FBL.PanelBar={panelMap:null,selectedPanel:null,parentPanelName:null,create:function(ownerPanel){this.panelMap={}; +this.ownerPanel=ownerPanel; +if(ownerPanel){ownerPanel.sidePanelBarNode=createElement("span"); +ownerPanel.sidePanelBarNode.style.display="none"; +ownerPanel.sidePanelBarBoxNode.appendChild(ownerPanel.sidePanelBarNode) +}var panels=Firebug.panelTypes; +for(var i=0,p; +p=panels[i]; +i++){if(!ownerPanel&&!p.prototype.parentPanel||ownerPanel&&p.prototype.parentPanel&&ownerPanel.name==p.prototype.parentPanel){this.addPanel(p.prototype.name) +}}},destroy:function(){PanelBar.shutdown.call(this); +for(var name in this.panelMap){this.removePanel(name); +var panel=this.panelMap[name]; +panel.destroy(); +this.panelMap[name]=null; +delete this.panelMap[name] +}this.panelMap=null; +this.ownerPanel=null +},initialize:function(){if(this.ownerPanel){this.ownerPanel.sidePanelBarNode.style.display="inline" +}for(var name in this.panelMap){(function(self,name){var onTabClick=function onTabClick(){self.selectPanel(name); +return false +}; +Firebug.chrome.addController([self.panelMap[name].tabNode,"mousedown",onTabClick]) +})(this,name) +}},shutdown:function(){var selectedPanel=this.selectedPanel; +if(selectedPanel){removeClass(selectedPanel.tabNode,"fbSelectedTab"); +selectedPanel.hide(); +selectedPanel.shutdown() +}if(this.ownerPanel){this.ownerPanel.sidePanelBarNode.style.display="none" +}this.selectedPanel=null +},addPanel:function(panelName,parentPanel){var PanelType=Firebug.panelTypeMap[panelName]; +var panel=this.panelMap[panelName]=new PanelType(); +panel.create() +},removePanel:function(panelName){var panel=this.panelMap[panelName]; +if(panel.hasOwnProperty(panelName)){panel.destroy() +}},selectPanel:function(panelName){var selectedPanel=this.selectedPanel; +var panel=this.panelMap[panelName]; +if(panel&&selectedPanel!=panel){if(selectedPanel){removeClass(selectedPanel.tabNode,"fbSelectedTab"); +selectedPanel.shutdown(); +selectedPanel.hide() +}if(!panel.parentPanel){Firebug.context.persistedState.selectedPanelName=panelName +}this.selectedPanel=panel; +setClass(panel.tabNode,"fbSelectedTab"); +panel.show(); +panel.initialize() +}},getPanel:function(panelName){var panel=this.panelMap[panelName]; +return panel +}}; +FBL.Button=function(options){options=options||{}; +append(this,options); +this.state="unpressed"; +this.display="unpressed"; +if(this.element){this.container=this.element.parentNode +}else{this.shouldDestroy=true; +this.container=this.owner.getPanel().toolButtonsNode; +this.element=createElement("a",{className:this.baseClassName+" "+this.className+" fbHover",innerHTML:this.caption}); +if(this.title){this.element.title=this.title +}this.container.appendChild(this.element) +}}; +Button.prototype=extend(Controller,{type:"normal",caption:"caption",title:null,className:"",baseClassName:"fbButton",pressedClassName:"fbBtnPressed",element:null,container:null,owner:null,state:null,display:null,destroy:function(){this.shutdown(); +if(this.shouldDestroy){this.container.removeChild(this.element) +}this.element=null; +this.container=null; +this.owner=null +},initialize:function(){Controller.initialize.apply(this); +var element=this.element; +this.addController([element,"mousedown",this.handlePress]); +if(this.type=="normal"){this.addController([element,"mouseup",this.handleUnpress],[element,"mouseout",this.handleUnpress],[element,"click",this.handleClick]) +}},shutdown:function(){Controller.shutdown.apply(this) +},restore:function(){this.changeState("unpressed") +},changeState:function(state){this.state=state; +this.changeDisplay(state) +},changeDisplay:function(display){if(display!=this.display){if(display=="pressed"){setClass(this.element,this.pressedClassName) +}else{if(display=="unpressed"){removeClass(this.element,this.pressedClassName) +}}this.display=display +}},handlePress:function(event){cancelEvent(event,true); +if(this.type=="normal"){this.changeDisplay("pressed"); +this.beforeClick=true +}else{if(this.type=="toggle"){if(this.state=="pressed"){this.changeState("unpressed"); +if(this.onUnpress){this.onUnpress.apply(this.owner,arguments) +}}else{this.changeState("pressed"); +if(this.onPress){this.onPress.apply(this.owner,arguments) +}}if(this.onClick){this.onClick.apply(this.owner,arguments) +}}}return false +},handleUnpress:function(event){cancelEvent(event,true); +if(this.beforeClick){this.changeDisplay("unpressed") +}return false +},handleClick:function(event){cancelEvent(event,true); +if(this.type=="normal"){if(this.onClick){this.onClick.apply(this.owner) +}this.changeState("unpressed") +}this.beforeClick=false; +return false +}}); +FBL.IconButton=function(){Button.apply(this,arguments) +}; +IconButton.prototype=extend(Button.prototype,{baseClassName:"fbIconButton",pressedClassName:"fbIconPressed"}); +var menuItemProps={"class":"$item.className",type:"$item.type",value:"$item.value",_command:"$item.command"}; +if(isIE6){menuItemProps.href="javascript:void(0)" +}if(FBL.domplate){var MenuPlate=domplate(Firebug.Rep,{tag:DIV({"class":"fbMenu fbShadow"},DIV({"class":"fbMenuContent fbShadowContent"},FOR("item","$object.items|memberIterator",TAG("$item.tag",{item:"$item"})))),itemTag:A(menuItemProps,"$item.label"),checkBoxTag:A(extend(menuItemProps,{checked:"$item.checked"}),"$item.label"),radioButtonTag:A(extend(menuItemProps,{selected:"$item.selected"}),"$item.label"),groupTag:A(extend(menuItemProps,{child:"$item.child"}),"$item.label"),shortcutTag:A(menuItemProps,"$item.label",SPAN({"class":"fbMenuShortcutKey"},"$item.key")),separatorTag:SPAN({"class":"fbMenuSeparator"}),memberIterator:function(items){var result=[]; +for(var i=0,length=items.length; +i<length; +i++){var item=items[i]; +if(typeof item=="string"&&item.indexOf("-")==0){result.push({tag:this.separatorTag}); +continue +}item=extend(item,{}); +item.type=item.type||""; +item.value=item.value||""; +var type=item.type; +item.tag=this.itemTag; +var className=item.className||""; +className+="fbMenuOption fbHover "; +if(type=="checkbox"){className+="fbMenuCheckBox "; +item.tag=this.checkBoxTag +}else{if(type=="radiobutton"){className+="fbMenuRadioButton "; +item.tag=this.radioButtonTag +}else{if(type=="group"){className+="fbMenuGroup "; +item.tag=this.groupTag +}else{if(type=="shortcut"){className+="fbMenuShortcut "; +item.tag=this.shortcutTag +}}}}if(item.checked){className+="fbMenuChecked " +}else{if(item.selected){className+="fbMenuRadioSelected " +}}if(item.disabled){className+="fbMenuDisabled " +}item.className=className; +item.label=$STR(item.label); +result.push(item) +}return result +}}) +}FBL.Menu=function(options){if(!options.element){if(options.getItems){options.items=options.getItems() +}options.element=MenuPlate.tag.append({object:options},getElementByClass(Firebug.chrome.document,"fbBody"),MenuPlate) +}append(this,options); +if(typeof this.element=="string"){this.id=this.element; +this.element=$(this.id) +}else{if(this.id){this.element.id=this.id +}}this.element.firebugIgnore=true; +this.elementStyle=this.element.style; +this.isVisible=false; +this.handleMouseDown=bind(this.handleMouseDown,this); +this.handleMouseOver=bind(this.handleMouseOver,this); +this.handleMouseOut=bind(this.handleMouseOut,this); +this.handleWindowMouseDown=bind(this.handleWindowMouseDown,this) +}; +var menuMap={}; +Menu.prototype=extend(Controller,{destroy:function(){this.hide(); +if(this.parentMenu){this.parentMenu.childMenu=null +}this.element.parentNode.removeChild(this.element); +this.element=null; +this.elementStyle=null; +this.parentMenu=null; +this.parentTarget=null +},initialize:function(){Controller.initialize.call(this); +this.addController([this.element,"mousedown",this.handleMouseDown],[this.element,"mouseover",this.handleMouseOver]) +},shutdown:function(){Controller.shutdown.call(this) +},show:function(x,y){this.initialize(); +if(this.isVisible){return +}x=x||0; +y=y||0; +if(this.parentMenu){var oldChildMenu=this.parentMenu.childMenu; +if(oldChildMenu&&oldChildMenu!=this){oldChildMenu.destroy() +}this.parentMenu.childMenu=this +}else{addEvent(Firebug.chrome.document,"mousedown",this.handleWindowMouseDown) +}this.elementStyle.display="block"; +this.elementStyle.visibility="hidden"; +var size=Firebug.chrome.getSize(); +x=Math.min(x,size.width-this.element.clientWidth-10); +x=Math.max(x,0); +y=Math.min(y,size.height-this.element.clientHeight-10); +y=Math.max(y,0); +this.elementStyle.left=x+"px"; +this.elementStyle.top=y+"px"; +this.elementStyle.visibility="visible"; +this.isVisible=true; +if(isFunction(this.onShow)){this.onShow.apply(this,arguments) +}},hide:function(){this.clearHideTimeout(); +this.clearShowChildTimeout(); +if(!this.isVisible){return +}this.elementStyle.display="none"; +if(this.childMenu){this.childMenu.destroy(); +this.childMenu=null +}if(this.parentTarget){removeClass(this.parentTarget,"fbMenuGroupSelected") +}this.isVisible=false; +this.shutdown(); +if(isFunction(this.onHide)){this.onHide.apply(this,arguments) +}},showChildMenu:function(target){var id=target.getAttribute("child"); +var parent=this; +var target=target; +this.showChildTimeout=Firebug.chrome.window.setTimeout(function(){var box=Firebug.chrome.getElementBox(target); +var childMenuObject=menuMap.hasOwnProperty(id)?menuMap[id]:{element:$(id)}; +var childMenu=new Menu(extend(childMenuObject,{parentMenu:parent,parentTarget:target})); +var offsetLeft=isIE6?-1:-6; +childMenu.show(box.left+box.width+offsetLeft,box.top-6); +setClass(target,"fbMenuGroupSelected") +},350) +},clearHideTimeout:function(){if(this.hideTimeout){Firebug.chrome.window.clearTimeout(this.hideTimeout); +delete this.hideTimeout +}},clearShowChildTimeout:function(){if(this.showChildTimeout){Firebug.chrome.window.clearTimeout(this.showChildTimeout); +this.showChildTimeout=null +}},handleMouseDown:function(event){cancelEvent(event,true); +var topParent=this; +while(topParent.parentMenu){topParent=topParent.parentMenu +}var target=event.target||event.srcElement; +target=getAncestorByClass(target,"fbMenuOption"); +if(!target||hasClass(target,"fbMenuGroup")){return false +}if(target&&!hasClass(target,"fbMenuDisabled")){var type=target.getAttribute("type"); +if(type=="checkbox"){var checked=target.getAttribute("checked"); +var value=target.getAttribute("value"); +var wasChecked=hasClass(target,"fbMenuChecked"); +if(wasChecked){removeClass(target,"fbMenuChecked"); +target.setAttribute("checked","") +}else{setClass(target,"fbMenuChecked"); +target.setAttribute("checked","true") +}if(isFunction(this.onCheck)){this.onCheck.call(this,target,value,!wasChecked) +}}if(type=="radiobutton"){var selectedRadios=getElementsByClass(target.parentNode,"fbMenuRadioSelected"); +var group=target.getAttribute("group"); +for(var i=0,length=selectedRadios.length; +i<length; +i++){radio=selectedRadios[i]; +if(radio.getAttribute("group")==group){removeClass(radio,"fbMenuRadioSelected"); +radio.setAttribute("selected","") +}}setClass(target,"fbMenuRadioSelected"); +target.setAttribute("selected","true") +}var handler=null; +var cmd=target.command; +if(isFunction(cmd)){handler=cmd +}else{if(typeof cmd=="string"){handler=this[cmd] +}}var closeMenu=true; +if(handler){closeMenu=handler.call(this,target)!==false +}if(closeMenu){topParent.hide() +}}return false +},handleWindowMouseDown:function(event){var target=event.target||event.srcElement; +target=getAncestorByClass(target,"fbMenu"); +if(!target){removeEvent(Firebug.chrome.document,"mousedown",this.handleWindowMouseDown); +this.hide() +}},handleMouseOver:function(event){this.clearHideTimeout(); +this.clearShowChildTimeout(); +var target=event.target||event.srcElement; +target=getAncestorByClass(target,"fbMenuOption"); +if(!target){return +}var childMenu=this.childMenu; +if(childMenu){removeClass(childMenu.parentTarget,"fbMenuGroupSelected"); +if(childMenu.parentTarget!=target&&childMenu.isVisible){childMenu.clearHideTimeout(); +childMenu.hideTimeout=Firebug.chrome.window.setTimeout(function(){childMenu.destroy() +},300) +}}if(hasClass(target,"fbMenuGroup")){this.showChildMenu(target) +}}}); +append(Menu,{register:function(object){menuMap[object.id]=object +},check:function(element){setClass(element,"fbMenuChecked"); +element.setAttribute("checked","true") +},uncheck:function(element){removeClass(element,"fbMenuChecked"); +element.setAttribute("checked","") +},disable:function(element){setClass(element,"fbMenuDisabled") +},enable:function(element){removeClass(element,"fbMenuDisabled") +}}); +function StatusBar(){}StatusBar.prototype=extend(Controller,{}) +}}); +FBL.ns(function(){with(FBL){var refreshDelay=300; +var shouldFixElementFromPoint=isOpera||isSafari&&browserVersion<"532"; +var evalError="___firebug_evaluation_error___"; +var pixelsPerInch; +var resetStyle="margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;"; +var offscreenStyle=resetStyle+"top:-1234px; left:-1234px;"; +FBL.Context=function(win){this.window=win.window; +this.document=win.document; +this.browser=Env.browser; +if(isIE&&!this.window.eval){this.window.execScript("null"); +if(!this.window.eval){throw new Error("Firebug Error: eval() method not found in this window") +}}this.eval=this.window.eval("new Function('try{ return window.eval.apply(window,arguments) }catch(E){ E."+evalError+"=true; return E }')") +}; +FBL.Context.prototype={browser:null,loaded:true,setTimeout:function(fn,delay){var win=this.window; +if(win.setTimeout==this.setTimeout){throw new Error("setTimeout recursion") +}var timeout=win.setTimeout.apply?win.setTimeout.apply(win,arguments):win.setTimeout(fn,delay); +if(!this.timeouts){this.timeouts={} +}this.timeouts[timeout]=1; +return timeout +},clearTimeout:function(timeout){clearTimeout(timeout); +if(this.timeouts){delete this.timeouts[timeout] +}},setInterval:function(fn,delay){var win=this.window; +var timeout=win.setInterval.apply?win.setInterval.apply(win,arguments):win.setInterval(fn,delay); +if(!this.intervals){this.intervals={} +}this.intervals[timeout]=1; +return timeout +},clearInterval:function(timeout){clearInterval(timeout); +if(this.intervals){delete this.intervals[timeout] +}},invalidatePanels:function(){if(!this.invalidPanels){this.invalidPanels={} +}for(var i=0; +i<arguments.length; +++i){var panelName=arguments[i]; +if(!Firebug.chrome||!Firebug.chrome.selectedPanel){return +}var panel=Firebug.chrome.selectedPanel.sidePanelBar?Firebug.chrome.selectedPanel.sidePanelBar.getPanel(panelName,true):null; +if(panel&&!panel.noRefresh){this.invalidPanels[panelName]=1 +}}if(this.refreshTimeout){this.clearTimeout(this.refreshTimeout); +delete this.refreshTimeout +}this.refreshTimeout=this.setTimeout(bindFixed(function(){var invalids=[]; +for(var panelName in this.invalidPanels){var panel=Firebug.chrome.selectedPanel.sidePanelBar?Firebug.chrome.selectedPanel.sidePanelBar.getPanel(panelName,true):null; +if(panel){if(panel.visible&&!panel.editing){panel.refresh() +}else{panel.needsRefresh=true +}if(panel.editing){invalids.push(panelName) +}}}delete this.invalidPanels; +delete this.refreshTimeout; +if(invalids.length){this.invalidatePanels.apply(this,invalids) +}},this),refreshDelay) +},evaluate:function(expr,context,api,errorHandler){context=context||"window"; +var isObjectLiteral=trim(expr).indexOf("{")==0,cmd,result; +if(context=="window"){if(isObjectLiteral){cmd=api?"with("+api+"){ ("+expr+") }":"("+expr+")" +}else{cmd=api?"with("+api+"){ "+expr+" }":expr +}}else{cmd=api?"(function(arguments){ with("+api+"){ "+expr+" } }).call("+context+",undefined)":"(function(arguments){ "+expr+" }).call("+context+",undefined)" +}result=this.eval(cmd); +if(result&&result[evalError]){var msg=result.name?(result.name+": "):""; +msg+=result.message||result; +if(errorHandler){result=errorHandler(msg) +}else{result=msg +}}return result +},getWindowSize:function(){var width=0,height=0,el; +if(typeof this.window.innerWidth=="number"){width=this.window.innerWidth; +height=this.window.innerHeight +}else{if((el=this.document.documentElement)&&(el.clientHeight||el.clientWidth)){width=el.clientWidth; +height=el.clientHeight +}else{if((el=this.document.body)&&(el.clientHeight||el.clientWidth)){width=el.clientWidth; +height=el.clientHeight +}}}return{width:width,height:height} +},getWindowScrollSize:function(){var width=0,height=0,el; +if(!isIEQuiksMode&&(el=this.document.documentElement)&&(el.scrollHeight||el.scrollWidth)){width=el.scrollWidth; +height=el.scrollHeight +}if((el=this.document.body)&&(el.scrollHeight||el.scrollWidth)&&(el.scrollWidth>width||el.scrollHeight>height)){width=el.scrollWidth; +height=el.scrollHeight +}return{width:width,height:height} +},getWindowScrollPosition:function(){var top=0,left=0,el; +if(typeof this.window.pageYOffset=="number"){top=this.window.pageYOffset; +left=this.window.pageXOffset +}else{if((el=this.document.body)&&(el.scrollTop||el.scrollLeft)){top=el.scrollTop; +left=el.scrollLeft +}else{if((el=this.document.documentElement)&&(el.scrollTop||el.scrollLeft)){top=el.scrollTop; +left=el.scrollLeft +}}}return{top:top,left:left} +},getElementFromPoint:function(x,y){if(shouldFixElementFromPoint){var scroll=this.getWindowScrollPosition(); +return this.document.elementFromPoint(x+scroll.left,y+scroll.top) +}else{return this.document.elementFromPoint(x,y) +}},getElementPosition:function(el){var left=0; +var top=0; +do{left+=el.offsetLeft; +top+=el.offsetTop +}while(el=el.offsetParent); +return{left:left,top:top} +},getElementBox:function(el){var result={}; +if(el.getBoundingClientRect){var rect=el.getBoundingClientRect(); +var offset=isIE?this.document.body.clientTop||this.document.documentElement.clientTop:0; +var scroll=this.getWindowScrollPosition(); +result.top=Math.round(rect.top-offset+scroll.top); +result.left=Math.round(rect.left-offset+scroll.left); +result.height=Math.round(rect.bottom-rect.top); +result.width=Math.round(rect.right-rect.left) +}else{var position=this.getElementPosition(el); +result.top=position.top; +result.left=position.left; +result.height=el.offsetHeight; +result.width=el.offsetWidth +}return result +},getMeasurement:function(el,name){var result={value:0,unit:"px"}; +var cssValue=this.getStyle(el,name); +if(!cssValue){return result +}if(cssValue.toLowerCase()=="auto"){return result +}var reMeasure=/(\d+\.?\d*)(.*)/; +var m=cssValue.match(reMeasure); +if(m){result.value=m[1]-0; +result.unit=m[2].toLowerCase() +}return result +},getMeasurementInPixels:function(el,name){if(!el){return null +}var m=this.getMeasurement(el,name); +var value=m.value; +var unit=m.unit; +if(unit=="px"){return value +}else{if(unit=="pt"){return this.pointsToPixels(name,value) +}else{if(unit=="em"){return this.emToPixels(el,value) +}else{if(unit=="%"){return this.percentToPixels(el,value) +}else{if(unit=="ex"){return this.exToPixels(el,value) +}}}}}},getMeasurementBox1:function(el,name){var sufixes=["Top","Left","Bottom","Right"]; +var result=[]; +for(var i=0,sufix; +sufix=sufixes[i]; +i++){result[i]=Math.round(this.getMeasurementInPixels(el,name+sufix)) +}return{top:result[0],left:result[1],bottom:result[2],right:result[3]} +},getMeasurementBox:function(el,name){var result=[]; +var sufixes=name=="border"?["TopWidth","LeftWidth","BottomWidth","RightWidth"]:["Top","Left","Bottom","Right"]; +if(isIE){var propName,cssValue; +var autoMargin=null; +for(var i=0,sufix; +sufix=sufixes[i]; +i++){propName=name+sufix; +cssValue=el.currentStyle[propName]||el.style[propName]; +if(cssValue=="auto"){if(!autoMargin){autoMargin=this.getCSSAutoMarginBox(el) +}result[i]=autoMargin[sufix.toLowerCase()] +}else{result[i]=this.getMeasurementInPixels(el,propName) +}}}else{for(var i=0,sufix; +sufix=sufixes[i]; +i++){result[i]=this.getMeasurementInPixels(el,name+sufix) +}}return{top:result[0],left:result[1],bottom:result[2],right:result[3]} +},getCSSAutoMarginBox:function(el){if(isIE&&" meta title input script link a ".indexOf(" "+el.nodeName.toLowerCase()+" ")!=-1){return{top:0,left:0,bottom:0,right:0} +}if(isIE&&" h1 h2 h3 h4 h5 h6 h7 ul p ".indexOf(" "+el.nodeName.toLowerCase()+" ")==-1){return{top:0,left:0,bottom:0,right:0} +}var offsetTop=0; +if(false&&isIEStantandMode){var scrollSize=Firebug.browser.getWindowScrollSize(); +offsetTop=scrollSize.height +}var box=this.document.createElement("div"); +box.style.cssText="margin:0; padding:1px; border: 0; visibility: hidden;"; +var clone=el.cloneNode(false); +var text=this.document.createTextNode(" "); +clone.appendChild(text); +box.appendChild(clone); +this.document.body.appendChild(box); +var marginTop=clone.offsetTop-box.offsetTop-1; +var marginBottom=box.offsetHeight-clone.offsetHeight-2-marginTop; +var marginLeft=clone.offsetLeft-box.offsetLeft-1; +var marginRight=box.offsetWidth-clone.offsetWidth-2-marginLeft; +this.document.body.removeChild(box); +return{top:marginTop+offsetTop,left:marginLeft,bottom:marginBottom-offsetTop,right:marginRight} +},getFontSizeInPixels:function(el){var size=this.getMeasurement(el,"fontSize"); +if(size.unit=="px"){return size.value +}var computeDirtyFontSize=function(el,calibration){var div=this.document.createElement("div"); +var divStyle=offscreenStyle; +if(calibration){divStyle+=" font-size:"+calibration+"px;" +}div.style.cssText=divStyle; +div.innerHTML="A"; +el.appendChild(div); +var value=div.offsetHeight; +el.removeChild(div); +return value +}; +var rate=200/225; +var value=computeDirtyFontSize(el); +return value*rate +},pointsToPixels:function(name,value,returnFloat){var axis=/Top$|Bottom$/.test(name)?"y":"x"; +var result=value*pixelsPerInch[axis]/72; +return returnFloat?result:Math.round(result) +},emToPixels:function(el,value){if(!el){return null +}var fontSize=this.getFontSizeInPixels(el); +return Math.round(value*fontSize) +},exToPixels:function(el,value){if(!el){return null +}var div=this.document.createElement("div"); +div.style.cssText=offscreenStyle+"width:"+value+"ex;"; +el.appendChild(div); +var value=div.offsetWidth; +el.removeChild(div); +return value +},percentToPixels:function(el,value){if(!el){return null +}var div=this.document.createElement("div"); +div.style.cssText=offscreenStyle+"width:"+value+"%;"; +el.appendChild(div); +var value=div.offsetWidth; +el.removeChild(div); +return value +},getStyle:isIE?function(el,name){return el.currentStyle[name]||el.style[name]||undefined +}:function(el,name){return this.document.defaultView.getComputedStyle(el,null)[name]||el.style[name]||undefined +}} +}}); +FBL.ns(function(){with(FBL){var WindowDefaultOptions={type:"frame",id:"FirebugUI"},commandLine,fbTop,fbContent,fbContentStyle,fbBottom,fbBtnInspect,fbToolbar,fbPanelBox1,fbPanelBox1Style,fbPanelBox2,fbPanelBox2Style,fbPanelBar2Box,fbPanelBar2BoxStyle,fbHSplitter,fbVSplitter,fbVSplitterStyle,fbPanel1,fbPanel1Style,fbPanel2,fbPanel2Style,fbConsole,fbConsoleStyle,fbHTML,fbCommandLine,fbLargeCommandLine,fbLargeCommandButtons,topHeight,topPartialHeight,chromeRedrawSkipRate=isIE?75:isOpera?80:75,lastSelectedPanelName,focusCommandLineState=0,lastFocusedPanelName,lastHSplitterMouseMove=0,onHSplitterMouseMoveBuffer=null,onHSplitterMouseMoveTimer=null,lastVSplitterMouseMove=0; +FBL.defaultPersistedState={isOpen:false,height:300,sidePanelWidth:350,selectedPanelName:"Console",selectedHTMLElementId:null,htmlSelectionStack:[]}; +FBL.FirebugChrome={chromeMap:{},htmlSelectionStack:[],create:function(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FirebugChrome.create","creating chrome window") +}createChromeWindow() +},initialize:function(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FirebugChrome.initialize","initializing chrome window") +}if(Env.chrome.type=="frame"||Env.chrome.type=="div"){ChromeMini.create(Env.chrome) +}var chrome=Firebug.chrome=new Chrome(Env.chrome); +FirebugChrome.chromeMap[chrome.type]=chrome; +addGlobalEvent("keydown",onGlobalKeyDown); +if(Env.Options.enablePersistent&&chrome.type=="popup"){var frame=FirebugChrome.chromeMap.frame; +if(frame){frame.close() +}chrome.initialize() +}},clone:function(FBChrome){for(var name in FBChrome){var prop=FBChrome[name]; +if(FBChrome.hasOwnProperty(name)&&!isFunction(prop)){this[name]=prop +}}}}; +var createChromeWindow=function(options){options=extend(WindowDefaultOptions,options||{}); +var browserWin=Env.browser.window; +var browserContext=new Context(browserWin); +var prefs=Store.get("FirebugLite"); +var persistedState=prefs&&prefs.persistedState||defaultPersistedState; +var chrome={},context=options.context||Env.browser,type=chrome.type=Env.Options.enablePersistent?"popup":options.type,isChromeFrame=type=="frame",useLocalSkin=Env.useLocalSkin,url=useLocalSkin?Env.Location.skin:"about:blank",body=context.document.getElementsByTagName("body")[0],formatNode=function(node){if(!Env.isDebugMode){node.firebugIgnore=true +}var browserWinSize=browserContext.getWindowSize(); +var height=persistedState.height||300; +height=Math.min(browserWinSize.height,height); +height=Math.max(200,height); +node.style.border="0"; +node.style.visibility="hidden"; +node.style.zIndex="2147483647"; +node.style.position=noFixedPosition?"absolute":"fixed"; +node.style.width="100%"; +node.style.left="0"; +node.style.bottom=noFixedPosition?"-1px":"0"; +node.style.height=height+"px" +},createChromeDiv=function(){var node=chrome.node=createGlobalElement("div"),style=createGlobalElement("style"),css=FirebugChrome.Skin.CSS,rules=".fbBody *{margin:0;padding:0;font-size:11px;line-height:13px;color:inherit;}"+css+".fbBody #fbHSplitter{position:absolute !important;} .fbBody #fbHTML span{line-height:14px;} .fbBody .lineNo div{line-height:inherit !important;}"; +style.type="text/css"; +if(style.styleSheet){style.styleSheet.cssText=rules +}else{style.appendChild(context.document.createTextNode(rules)) +}document.getElementsByTagName("head")[0].appendChild(style); +node.className="fbBody"; +node.style.overflow="hidden"; +node.innerHTML=getChromeDivTemplate(); +if(isIE){setTimeout(function(){node.firstChild.style.height="1px"; +node.firstChild.style.position="static" +},0) +}formatNode(node); +body.appendChild(node); +chrome.window=window; +chrome.document=document; +onChromeLoad(chrome) +}; +try{if(type=="div"){createChromeDiv(); +return +}else{if(isChromeFrame){var node=chrome.node=createGlobalElement("iframe"); +node.setAttribute("src",url); +node.setAttribute("frameBorder","0"); +formatNode(node); +body.appendChild(node); +node.id=options.id +}else{var height=persistedState.popupHeight||300; +var browserWinSize=browserContext.getWindowSize(); +var browserWinLeft=typeof browserWin.screenX=="number"?browserWin.screenX:browserWin.screenLeft; +var popupLeft=typeof persistedState.popupLeft=="number"?persistedState.popupLeft:browserWinLeft; +var browserWinTop=typeof browserWin.screenY=="number"?browserWin.screenY:browserWin.screenTop; +var popupTop=typeof persistedState.popupTop=="number"?persistedState.popupTop:Math.max(0,Math.min(browserWinTop+browserWinSize.height-height,screen.availHeight-height-61)); +var popupWidth=typeof persistedState.popupWidth=="number"?persistedState.popupWidth:Math.max(0,Math.min(browserWinSize.width,screen.availWidth-10)); +var popupHeight=typeof persistedState.popupHeight=="number"?persistedState.popupHeight:300; +var options=["true,top=",popupTop,",left=",popupLeft,",height=",popupHeight,",width=",popupWidth,",resizable"].join(""),node=chrome.node=context.window.open(url,"popup",options); +if(node){try{node.focus() +}catch(E){alert("Firebug Error: Firebug popup was blocked."); +return +}}else{alert("Firebug Error: Firebug popup was blocked."); +return +}}}if(!useLocalSkin){var tpl=getChromeTemplate(!isChromeFrame),doc=isChromeFrame?node.contentWindow.document:node.document; +doc.write(tpl); +doc.close() +}var win,waitDelay=useLocalSkin?isChromeFrame?200:300:100,waitForWindow=function(){if(isChromeFrame&&(win=node.contentWindow)&&node.contentWindow.document.getElementById("fbCommandLine")||!isChromeFrame&&(win=node.window)&&node.document&&node.document.getElementById("fbCommandLine")){chrome.window=win.window; +chrome.document=win.document; +setTimeout(function(){onChromeLoad(chrome) +},useLocalSkin?200:0) +}else{setTimeout(waitForWindow,waitDelay) +}}; +waitForWindow() +}catch(e){var msg=e.message||e; +if(/access/i.test(msg)){if(isChromeFrame){body.removeChild(node) +}else{if(type=="popup"){node.close() +}}createChromeDiv() +}else{alert("Firebug Error: Firebug GUI could not be created.") +}}}; +var onChromeLoad=function onChromeLoad(chrome){Env.chrome=chrome; +if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Chrome onChromeLoad","chrome window loaded") +}if(Env.Options.enablePersistent){Env.FirebugChrome=FirebugChrome; +chrome.window.Firebug=chrome.window.Firebug||{}; +chrome.window.Firebug.SharedEnv=Env; +if(Env.isDevelopmentMode){Env.browser.window.FBDev.loadChromeApplication(chrome) +}else{var doc=chrome.document; +var script=doc.createElement("script"); +script.src=Env.Location.app+"#remote,persist"; +doc.getElementsByTagName("head")[0].appendChild(script) +}}else{if(chrome.type=="frame"||chrome.type=="div"){setTimeout(function(){FBL.Firebug.initialize() +},0) +}else{if(chrome.type=="popup"){var oldChrome=FirebugChrome.chromeMap.frame; +var newChrome=new Chrome(chrome); +dispatch(newChrome.panelMap,"detach",[oldChrome,newChrome]); +newChrome.reattach(oldChrome,newChrome) +}}}}; +var getChromeDivTemplate=function(){return FirebugChrome.Skin.HTML +}; +var getChromeTemplate=function(isPopup){var tpl=FirebugChrome.Skin; +var r=[],i=-1; +r[++i]='<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">'; +r[++i]="<html><head><title>"; +r[++i]=Firebug.version; +r[++i]="</title><style>html,body{margin:0;padding:0;overflow:hidden;}"; +r[++i]=tpl.CSS; +r[++i]="</style>"; +r[++i]='</head><body class="fbBody'+(isPopup?" FirebugPopup":"")+'">'; +r[++i]=tpl.HTML; +r[++i]="</body></html>"; +return r.join("") +}; +var Chrome=function Chrome(chrome){var type=chrome.type; +var Base=type=="frame"||type=="div"?ChromeFrameBase:ChromePopupBase; +append(this,Base); +append(this,chrome); +append(this,new Context(chrome.window)); +FirebugChrome.chromeMap[type]=this; +Firebug.chrome=this; +Env.chrome=chrome.window; +this.commandLineVisible=false; +this.sidePanelVisible=false; +this.create(); +return this +}; +var ChromeBase={}; +append(ChromeBase,Controller); +append(ChromeBase,PanelBar); +append(ChromeBase,{node:null,type:null,document:null,window:null,sidePanelVisible:false,commandLineVisible:false,largeCommandLineVisible:false,inspectButton:null,create:function(){PanelBar.create.call(this); +if(Firebug.Inspector){this.inspectButton=new Button({type:"toggle",element:$("fbChrome_btInspect"),owner:Firebug.Inspector,onPress:Firebug.Inspector.startInspecting,onUnpress:Firebug.Inspector.stopInspecting}) +}},destroy:function(){if(Firebug.Inspector){this.inspectButton.destroy() +}PanelBar.destroy.call(this); +this.shutdown() +},testMenu:function(){var firebugMenu=new Menu({id:"fbFirebugMenu",items:[{label:"Open Firebug",type:"shortcut",key:isFirefox?"Shift+F12":"F12",checked:true,command:"toggleChrome"},{label:"Open Firebug in New Window",type:"shortcut",key:isFirefox?"Ctrl+Shift+F12":"Ctrl+F12",command:"openPopup"},{label:"Inspect Element",type:"shortcut",key:"Ctrl+Shift+C",command:"toggleInspect"},{label:"Command Line",type:"shortcut",key:"Ctrl+Shift+L",command:"focusCommandLine"},"-",{label:"Options",type:"group",child:"fbFirebugOptionsMenu"},"-",{label:"Firebug Lite Website...",command:"visitWebsite"},{label:"Discussion Group...",command:"visitDiscussionGroup"},{label:"Issue Tracker...",command:"visitIssueTracker"}],onHide:function(){iconButton.restore() +},toggleChrome:function(){Firebug.chrome.toggle() +},openPopup:function(){Firebug.chrome.toggle(true,true) +},toggleInspect:function(){Firebug.Inspector.toggleInspect() +},focusCommandLine:function(){Firebug.chrome.focusCommandLine() +},visitWebsite:function(){this.visit("http://getfirebug.com/lite.html") +},visitDiscussionGroup:function(){this.visit("http://groups.google.com/group/firebug") +},visitIssueTracker:function(){this.visit("http://code.google.com/p/fbug/issues/list") +},visit:function(url){window.open(url) +}}); +var firebugOptionsMenu={id:"fbFirebugOptionsMenu",getItems:function(){var cookiesDisabled=!Firebug.saveCookies; +return[{label:"Start Opened",type:"checkbox",value:"startOpened",checked:Firebug.startOpened,disabled:cookiesDisabled},{label:"Start in New Window",type:"checkbox",value:"startInNewWindow",checked:Firebug.startInNewWindow,disabled:cookiesDisabled},{label:"Show Icon When Hidden",type:"checkbox",value:"showIconWhenHidden",checked:Firebug.showIconWhenHidden,disabled:cookiesDisabled},{label:"Override Console Object",type:"checkbox",value:"overrideConsole",checked:Firebug.overrideConsole,disabled:cookiesDisabled},{label:"Ignore Firebug Elements",type:"checkbox",value:"ignoreFirebugElements",checked:Firebug.ignoreFirebugElements,disabled:cookiesDisabled},{label:"Disable When Firebug Active",type:"checkbox",value:"disableWhenFirebugActive",checked:Firebug.disableWhenFirebugActive,disabled:cookiesDisabled},{label:"Disable XHR Listener",type:"checkbox",value:"disableXHRListener",checked:Firebug.disableXHRListener,disabled:cookiesDisabled},{label:"Disable Resource Fetching",type:"checkbox",value:"disableResourceFetching",checked:Firebug.disableResourceFetching,disabled:cookiesDisabled},{label:"Enable Trace Mode",type:"checkbox",value:"enableTrace",checked:Firebug.enableTrace,disabled:cookiesDisabled},{label:"Enable Persistent Mode (experimental)",type:"checkbox",value:"enablePersistent",checked:Firebug.enablePersistent,disabled:cookiesDisabled},"-",{label:"Reset All Firebug Options",command:"restorePrefs",disabled:cookiesDisabled}] +},onCheck:function(target,value,checked){Firebug.setPref(value,checked) +},restorePrefs:function(target){Firebug.erasePrefs(); +if(target){this.updateMenu(target) +}},updateMenu:function(target){var options=getElementsByClass(target.parentNode,"fbMenuOption"); +var firstOption=options[0]; +var enabled=Firebug.saveCookies; +if(enabled){Menu.check(firstOption) +}else{Menu.uncheck(firstOption) +}if(enabled){Menu.check(options[0]) +}else{Menu.uncheck(options[0]) +}for(var i=1,length=options.length; +i<length; +i++){var option=options[i]; +var value=option.getAttribute("value"); +var pref=Firebug[value]; +if(pref){Menu.check(option) +}else{Menu.uncheck(option) +}if(enabled){Menu.enable(option) +}else{Menu.disable(option) +}}}}; +Menu.register(firebugOptionsMenu); +var menu=firebugMenu; +var testMenuClick=function(event){cancelEvent(event,true); +var target=event.target||event.srcElement; +if(menu.isVisible){menu.hide() +}else{var offsetLeft=isIE6?1:-4,chrome=Firebug.chrome,box=chrome.getElementBox(target),offset=chrome.type=="div"?chrome.getElementPosition(chrome.node):{top:0,left:0}; +menu.show(box.left+offsetLeft-offset.left,box.top+box.height-5-offset.top) +}return false +}; +var iconButton=new IconButton({type:"toggle",element:$("fbFirebugButton"),onClick:testMenuClick}); +iconButton.initialize() +},initialize:function(){if(Env.bookmarkletOutdated){Firebug.Console.logFormatted(["A new bookmarklet version is available. Please visit http://getfirebug.com/firebuglite#Install and update it."],Firebug.context,"warn") +}if(Firebug.Console){Firebug.Console.flush() +}if(Firebug.Trace){FBTrace.flush(Firebug.Trace) +}if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.chrome.initialize","initializing chrome application") +}Controller.initialize.call(this); +PanelBar.initialize.call(this); +fbTop=$("fbTop"); +fbContent=$("fbContent"); +fbContentStyle=fbContent.style; +fbBottom=$("fbBottom"); +fbBtnInspect=$("fbBtnInspect"); +fbToolbar=$("fbToolbar"); +fbPanelBox1=$("fbPanelBox1"); +fbPanelBox1Style=fbPanelBox1.style; +fbPanelBox2=$("fbPanelBox2"); +fbPanelBox2Style=fbPanelBox2.style; +fbPanelBar2Box=$("fbPanelBar2Box"); +fbPanelBar2BoxStyle=fbPanelBar2Box.style; +fbHSplitter=$("fbHSplitter"); +fbVSplitter=$("fbVSplitter"); +fbVSplitterStyle=fbVSplitter.style; +fbPanel1=$("fbPanel1"); +fbPanel1Style=fbPanel1.style; +fbPanel2=$("fbPanel2"); +fbPanel2Style=fbPanel2.style; +fbConsole=$("fbConsole"); +fbConsoleStyle=fbConsole.style; +fbHTML=$("fbHTML"); +fbCommandLine=$("fbCommandLine"); +fbLargeCommandLine=$("fbLargeCommandLine"); +fbLargeCommandButtons=$("fbLargeCommandButtons"); +topHeight=fbTop.offsetHeight; +topPartialHeight=fbToolbar.offsetHeight; +disableTextSelection($("fbToolbar")); +disableTextSelection($("fbPanelBarBox")); +disableTextSelection($("fbPanelBar1")); +disableTextSelection($("fbPanelBar2")); +if(isIE6&&Firebug.Selector){var as=$$(".fbHover"); +for(var i=0,a; +a=as[i]; +i++){a.setAttribute("href","javascript:void(0)") +}}if(Firebug.Inspector){this.inspectButton.initialize() +}this.addController([$("fbLargeCommandLineIcon"),"click",this.showLargeCommandLine]); +var self=this; +setTimeout(function(){self.selectPanel(Firebug.context.persistedState.selectedPanelName); +if(Firebug.context.persistedState.selectedPanelName=="Console"&&Firebug.CommandLine){Firebug.chrome.focusCommandLine() +}},0); +var onPanelMouseDown=function onPanelMouseDown(event){var target=event.target||event.srcElement; +if(FBL.isLeftClick(event)){var editable=FBL.getAncestorByClass(target,"editable"); +if(editable){Firebug.Editor.startEditing(editable); +FBL.cancelEvent(event) +}else{if(!hasClass(target,"textEditorInner")){Firebug.Editor.stopEditing() +}}}else{if(FBL.isMiddleClick(event)&&Firebug.getRepNode(target)){FBL.cancelEvent(event) +}}}; +Firebug.getElementPanel=function(element){var panelNode=getAncestorByClass(element,"fbPanel"); +var id=panelNode.id.substr(2); +var panel=Firebug.chrome.panelMap[id]; +if(!panel){if(Firebug.chrome.selectedPanel.sidePanelBar){panel=Firebug.chrome.selectedPanel.sidePanelBar.panelMap[id] +}}return panel +}; +var onKeyCodeListenersMap=[]; +var onKeyCodeListen=function(event){for(var keyCode in onKeyCodeListenersMap){var listeners=onKeyCodeListenersMap[keyCode]; +for(var i=0,listener; +listener=listeners[i]; +i++){var filter=listener.filter||FBL.noKeyModifiers; +if(event.keyCode==keyCode&&(!filter||filter(event))){listener.listener(); +FBL.cancelEvent(event,true); +return false +}}}}; +addEvent(Firebug.chrome.document,"keydown",onKeyCodeListen); +Firebug.chrome.keyCodeListen=function(key,filter,listener,capture){var keyCode=KeyEvent["DOM_VK_"+key]; +if(!onKeyCodeListenersMap[keyCode]){onKeyCodeListenersMap[keyCode]=[] +}onKeyCodeListenersMap[keyCode].push({filter:filter,listener:listener}); +return keyCode +}; +Firebug.chrome.keyIgnore=function(keyCode){onKeyCodeListenersMap[keyCode]=null; +delete onKeyCodeListenersMap[keyCode] +}; +this.addController([fbPanel1,"mousedown",onPanelMouseDown],[fbPanel2,"mousedown",onPanelMouseDown]); +if(FBL.domplate){this.testMenu() +}},shutdown:function(){if(Firebug.Inspector){this.inspectButton.shutdown() +}restoreTextSelection($("fbToolbar")); +restoreTextSelection($("fbPanelBarBox")); +restoreTextSelection($("fbPanelBar1")); +restoreTextSelection($("fbPanelBar2")); +Controller.shutdown.call(this); +PanelBar.shutdown.call(this); +fbTop=null; +fbContent=null; +fbContentStyle=null; +fbBottom=null; +fbBtnInspect=null; +fbToolbar=null; +fbPanelBox1=null; +fbPanelBox1Style=null; +fbPanelBox2=null; +fbPanelBox2Style=null; +fbPanelBar2Box=null; +fbPanelBar2BoxStyle=null; +fbHSplitter=null; +fbVSplitter=null; +fbVSplitterStyle=null; +fbPanel1=null; +fbPanel1Style=null; +fbPanel2=null; +fbConsole=null; +fbConsoleStyle=null; +fbHTML=null; +fbCommandLine=null; +fbLargeCommandLine=null; +fbLargeCommandButtons=null; +topHeight=null; +topPartialHeight=null +},toggle:function(forceOpen,popup){if(popup){this.detach() +}else{if(isOpera&&Firebug.chrome.type=="popup"&&Firebug.chrome.node.closed){var frame=FirebugChrome.chromeMap.frame; +frame.reattach(); +FirebugChrome.chromeMap.popup=null; +frame.open(); +return +}if(Firebug.chrome.type=="popup"){return +}var shouldOpen=forceOpen||!Firebug.context.persistedState.isOpen; +if(shouldOpen){this.open() +}else{this.close() +}}},detach:function(){if(!FirebugChrome.chromeMap.popup){this.close(); +createChromeWindow({type:"popup"}) +}},reattach:function(oldChrome,newChrome){Firebug.browser.window.Firebug=Firebug; +var newPanelMap=newChrome.panelMap; +var oldPanelMap=oldChrome.panelMap; +var panel; +for(var name in newPanelMap){panel=newPanelMap[name]; +if(panel.options.innerHTMLSync){panel.panelNode.innerHTML=oldPanelMap[name].panelNode.innerHTML +}}Firebug.chrome=newChrome; +if(newChrome.type=="popup"){newChrome.initialize() +}else{Firebug.context.persistedState.selectedPanelName=oldChrome.selectedPanel.name +}dispatch(newPanelMap,"reattach",[oldChrome,newChrome]) +},draw:function(){var size=this.getSize(); +var commandLineHeight=Firebug.chrome.commandLineVisible?fbCommandLine.offsetHeight:0,y=Math.max(size.height,topHeight),heightValue=Math.max(y-topHeight-commandLineHeight,0),height=heightValue+"px",sideWidthValue=Firebug.chrome.sidePanelVisible?Firebug.context.persistedState.sidePanelWidth:0,width=Math.max(size.width-sideWidthValue,0)+"px"; +fbPanelBox1Style.height=height; +fbPanel1Style.height=height; +if(isIE||isOpera){fbVSplitterStyle.height=Math.max(y-topPartialHeight-commandLineHeight,0)+"px" +}fbPanelBox1Style.width=width; +fbPanel1Style.width=width; +if(Firebug.chrome.sidePanelVisible){sideWidthValue=Math.max(sideWidthValue-6,0); +var sideWidth=sideWidthValue+"px"; +fbPanelBox2Style.width=sideWidth; +fbVSplitterStyle.right=sideWidth; +if(Firebug.chrome.largeCommandLineVisible){fbLargeCommandLine=$("fbLargeCommandLine"); +fbLargeCommandLine.style.height=heightValue-4+"px"; +fbLargeCommandLine.style.width=sideWidthValue-2+"px"; +fbLargeCommandButtons=$("fbLargeCommandButtons"); +fbLargeCommandButtons.style.width=sideWidth +}else{fbPanel2Style.height=height; +fbPanel2Style.width=sideWidth; +fbPanelBar2BoxStyle.width=sideWidth +}}},getSize:function(){return this.type=="div"?{height:this.node.offsetHeight,width:this.node.offsetWidth}:this.getWindowSize() +},resize:function(){var self=this; +setTimeout(function(){self.draw(); +if(noFixedPosition&&(self.type=="frame"||self.type=="div")){self.fixIEPosition() +}},0) +},layout:function(panel){if(FBTrace.DBG_CHROME){FBTrace.sysout("Chrome.layout","") +}var options=panel.options; +changeCommandLineVisibility(options.hasCommandLine); +changeSidePanelVisibility(panel.hasSidePanel); +Firebug.chrome.draw() +},showLargeCommandLine:function(hideToggleIcon){var chrome=Firebug.chrome; +if(!chrome.largeCommandLineVisible){chrome.largeCommandLineVisible=true; +if(chrome.selectedPanel.options.hasCommandLine){if(Firebug.CommandLine){Firebug.CommandLine.blur() +}changeCommandLineVisibility(false) +}changeSidePanelVisibility(true); +fbLargeCommandLine.style.display="block"; +fbLargeCommandButtons.style.display="block"; +fbPanel2Style.display="none"; +fbPanelBar2BoxStyle.display="none"; +chrome.draw(); +fbLargeCommandLine.focus(); +if(Firebug.CommandLine){Firebug.CommandLine.setMultiLine(true) +}}},hideLargeCommandLine:function(){if(Firebug.chrome.largeCommandLineVisible){Firebug.chrome.largeCommandLineVisible=false; +if(Firebug.CommandLine){Firebug.CommandLine.setMultiLine(false) +}fbLargeCommandLine.blur(); +fbPanel2Style.display="block"; +fbPanelBar2BoxStyle.display="block"; +fbLargeCommandLine.style.display="none"; +fbLargeCommandButtons.style.display="none"; +changeSidePanelVisibility(false); +if(Firebug.chrome.selectedPanel.options.hasCommandLine){changeCommandLineVisibility(true) +}Firebug.chrome.draw() +}},focusCommandLine:function(){var selectedPanelName=this.selectedPanel.name,panelToSelect; +if(focusCommandLineState==0||selectedPanelName!="Console"){focusCommandLineState=0; +lastFocusedPanelName=selectedPanelName; +panelToSelect="Console" +}if(focusCommandLineState==1){panelToSelect=lastFocusedPanelName +}this.selectPanel(panelToSelect); +try{if(Firebug.CommandLine){if(panelToSelect=="Console"){Firebug.CommandLine.focus() +}else{Firebug.CommandLine.blur() +}}}catch(e){}focusCommandLineState=++focusCommandLineState%2 +}}); +var ChromeFrameBase=extend(ChromeBase,{create:function(){ChromeBase.create.call(this); +if(isFirefox){this.node.style.display="block" +}if(Env.Options.startInNewWindow){this.close(); +this.toggle(true,true); +return +}if(Env.Options.startOpened){this.open() +}else{this.close() +}},destroy:function(){var size=Firebug.chrome.getWindowSize(); +Firebug.context.persistedState.height=size.height; +if(Firebug.saveCookies){Firebug.savePrefs() +}removeGlobalEvent("keydown",onGlobalKeyDown); +ChromeBase.destroy.call(this); +this.document=null; +delete this.document; +this.window=null; +delete this.window; +this.node.parentNode.removeChild(this.node); +this.node=null; +delete this.node +},initialize:function(){ChromeBase.initialize.call(this); +this.addController([Firebug.browser.window,"resize",this.resize],[$("fbWindow_btClose"),"click",this.close],[$("fbWindow_btDetach"),"click",this.detach],[$("fbWindow_btDeactivate"),"click",this.deactivate]); +if(!Env.Options.enablePersistent){this.addController([Firebug.browser.window,"unload",Firebug.shutdown]) +}if(noFixedPosition){this.addController([Firebug.browser.window,"scroll",this.fixIEPosition]) +}fbVSplitter.onmousedown=onVSplitterMouseDown; +fbHSplitter.onmousedown=onHSplitterMouseDown; +this.isInitialized=true +},shutdown:function(){fbVSplitter.onmousedown=null; +fbHSplitter.onmousedown=null; +ChromeBase.shutdown.apply(this); +this.isInitialized=false +},reattach:function(){var frame=FirebugChrome.chromeMap.frame; +ChromeBase.reattach(FirebugChrome.chromeMap.popup,this) +},open:function(){if(!Firebug.context.persistedState.isOpen){Firebug.context.persistedState.isOpen=true; +if(Env.isChromeExtension){localStorage.setItem("Firebug","1,1") +}var node=this.node; +node.style.visibility="hidden"; +if(Firebug.showIconWhenHidden){if(ChromeMini.isInitialized){ChromeMini.shutdown() +}}else{node.style.display="block" +}var main=$("fbChrome"); +main.style.display=""; +var self=this; +node.style.visibility="visible"; +setTimeout(function(){self.initialize(); +if(noFixedPosition){self.fixIEPosition() +}self.draw() +},10) +}},close:function(){if(Firebug.context.persistedState.isOpen){if(this.isInitialized){this.shutdown() +}Firebug.context.persistedState.isOpen=false; +if(Env.isChromeExtension){localStorage.setItem("Firebug","1,0") +}var node=this.node; +if(Firebug.showIconWhenHidden){node.style.visibility="hidden"; +var main=$("fbChrome",FirebugChrome.chromeMap.frame.document); +main.style.display="none"; +ChromeMini.initialize(); +node.style.visibility="visible" +}else{node.style.display="none" +}}},deactivate:function(){if(Env.isChromeExtension){localStorage.removeItem("Firebug"); +Firebug.GoogleChrome.dispatch("FB_deactivate"); +Firebug.chrome.close() +}else{Firebug.shutdown() +}},fixIEPosition:function(){var doc=this.document; +var offset=isIE?doc.body.clientTop||doc.documentElement.clientTop:0; +var size=Firebug.browser.getWindowSize(); +var scroll=Firebug.browser.getWindowScrollPosition(); +var maxHeight=size.height; +var height=this.node.offsetHeight; +var bodyStyle=doc.body.currentStyle; +this.node.style.top=maxHeight-height+scroll.top+"px"; +if((this.type=="frame"||this.type=="div")&&(bodyStyle.marginLeft||bodyStyle.marginRight)){this.node.style.width=size.width+"px" +}if(fbVSplitterStyle){fbVSplitterStyle.right=Firebug.context.persistedState.sidePanelWidth+"px" +}this.draw() +}}); +var ChromeMini=extend(Controller,{create:function(chrome){append(this,chrome); +this.type="mini" +},initialize:function(){Controller.initialize.apply(this); +var doc=FirebugChrome.chromeMap.frame.document; +var mini=$("fbMiniChrome",doc); +mini.style.display="block"; +var miniIcon=$("fbMiniIcon",doc); +var width=miniIcon.offsetWidth+10; +miniIcon.title="Open "+Firebug.version; +var errors=$("fbMiniErrors",doc); +if(errors.offsetWidth){width+=errors.offsetWidth+10 +}var node=this.node; +node.style.height="27px"; +node.style.width=width+"px"; +node.style.left=""; +node.style.right=0; +if(this.node.nodeName.toLowerCase()=="iframe"){node.setAttribute("allowTransparency","true"); +this.document.body.style.backgroundColor="transparent" +}else{node.style.background="transparent" +}if(noFixedPosition){this.fixIEPosition() +}this.addController([$("fbMiniIcon",doc),"click",onMiniIconClick]); +if(noFixedPosition){this.addController([Firebug.browser.window,"scroll",this.fixIEPosition]) +}this.isInitialized=true +},shutdown:function(){var node=this.node; +node.style.height=Firebug.context.persistedState.height+"px"; +node.style.width="100%"; +node.style.left=0; +node.style.right=""; +if(this.node.nodeName.toLowerCase()=="iframe"){node.setAttribute("allowTransparency","false"); +this.document.body.style.backgroundColor="#fff" +}else{node.style.background="#fff" +}if(noFixedPosition){this.fixIEPosition() +}var doc=FirebugChrome.chromeMap.frame.document; +var mini=$("fbMiniChrome",doc); +mini.style.display="none"; +Controller.shutdown.apply(this); +this.isInitialized=false +},draw:function(){},fixIEPosition:ChromeFrameBase.fixIEPosition}); +var ChromePopupBase=extend(ChromeBase,{initialize:function(){setClass(this.document.body,"FirebugPopup"); +ChromeBase.initialize.call(this); +this.addController([Firebug.chrome.window,"resize",this.resize],[Firebug.chrome.window,"unload",this.destroy]); +if(Env.Options.enablePersistent){this.persist=bind(this.persist,this); +addEvent(Firebug.browser.window,"unload",this.persist) +}else{this.addController([Firebug.browser.window,"unload",this.close]) +}fbVSplitter.onmousedown=onVSplitterMouseDown +},destroy:function(){var chromeWin=Firebug.chrome.window; +var left=chromeWin.screenX||chromeWin.screenLeft; +var top=chromeWin.screenY||chromeWin.screenTop; +var size=Firebug.chrome.getWindowSize(); +Firebug.context.persistedState.popupTop=top; +Firebug.context.persistedState.popupLeft=left; +Firebug.context.persistedState.popupWidth=size.width; +Firebug.context.persistedState.popupHeight=size.height; +if(Firebug.saveCookies){Firebug.savePrefs() +}var frame=FirebugChrome.chromeMap.frame; +if(frame){dispatch(frame.panelMap,"detach",[this,frame]); +frame.reattach(this,frame) +}if(Env.Options.enablePersistent){removeEvent(Firebug.browser.window,"unload",this.persist) +}ChromeBase.destroy.apply(this); +FirebugChrome.chromeMap.popup=null; +this.node.close() +},persist:function(){persistTimeStart=new Date().getTime(); +removeEvent(Firebug.browser.window,"unload",this.persist); +Firebug.Inspector.destroy(); +Firebug.browser.window.FirebugOldBrowser=true; +var persistTimeStart=new Date().getTime(); +var waitMainWindow=function(){var doc,head; +try{if(window.opener&&!window.opener.FirebugOldBrowser&&(doc=window.opener.document)){try{if(Env.isDebugMode){window.FBL=FBL +}window.Firebug=Firebug; +window.opener.Firebug=Firebug; +Env.browser=window.opener; +Firebug.browser=Firebug.context=new Context(Env.browser); +Firebug.loadPrefs(); +registerConsole(); +var persistDelay=new Date().getTime()-persistTimeStart; +var chrome=Firebug.chrome; +addEvent(Firebug.browser.window,"unload",chrome.persist); +FBL.cacheDocument(); +Firebug.Inspector.create(); +Firebug.Console.logFormatted(["Firebug could not capture console calls during "+persistDelay+"ms"],Firebug.context,"info"); +setTimeout(function(){var htmlPanel=chrome.getPanel("HTML"); +htmlPanel.createUI() +},50) +}catch(pE){alert("persist error: "+(pE.message||pE)) +}}else{window.setTimeout(waitMainWindow,0) +}}catch(E){window.close() +}}; +waitMainWindow() +},close:function(){this.destroy() +}}); +var changeCommandLineVisibility=function changeCommandLineVisibility(visibility){var last=Firebug.chrome.commandLineVisible; +var visible=Firebug.chrome.commandLineVisible=typeof visibility=="boolean"?visibility:!Firebug.chrome.commandLineVisible; +if(visible!=last){if(visible){fbBottom.className=""; +if(Firebug.CommandLine){Firebug.CommandLine.activate() +}}else{if(Firebug.CommandLine){Firebug.CommandLine.deactivate() +}fbBottom.className="hide" +}}}; +var changeSidePanelVisibility=function changeSidePanelVisibility(visibility){var last=Firebug.chrome.sidePanelVisible; +Firebug.chrome.sidePanelVisible=typeof visibility=="boolean"?visibility:!Firebug.chrome.sidePanelVisible; +if(Firebug.chrome.sidePanelVisible!=last){fbPanelBox2.className=Firebug.chrome.sidePanelVisible?"":"hide"; +fbPanelBar2Box.className=Firebug.chrome.sidePanelVisible?"":"hide" +}}; +var onGlobalKeyDown=function onGlobalKeyDown(event){var keyCode=event.keyCode; +var shiftKey=event.shiftKey; +var ctrlKey=event.ctrlKey; +if(keyCode==123&&(!isFirefox&&!shiftKey||shiftKey&&isFirefox)){Firebug.chrome.toggle(false,ctrlKey); +cancelEvent(event,true); +if(Env.isChromeExtension){Firebug.GoogleChrome.dispatch("FB_enableIcon") +}}else{if(keyCode==67&&ctrlKey&&shiftKey){Firebug.Inspector.toggleInspect(); +cancelEvent(event,true) +}else{if(keyCode==76&&ctrlKey&&shiftKey){Firebug.chrome.focusCommandLine(); +cancelEvent(event,true) +}}}}; +var onMiniIconClick=function onMiniIconClick(event){Firebug.chrome.toggle(false,event.ctrlKey); +cancelEvent(event,true) +}; +var onHSplitterMouseDown=function onHSplitterMouseDown(event){addGlobalEvent("mousemove",onHSplitterMouseMove); +addGlobalEvent("mouseup",onHSplitterMouseUp); +if(isIE){addEvent(Firebug.browser.document.documentElement,"mouseleave",onHSplitterMouseUp) +}fbHSplitter.className="fbOnMovingHSplitter"; +return false +}; +var onHSplitterMouseMove=function onHSplitterMouseMove(event){cancelEvent(event,true); +var clientY=event.clientY; +var win=isIE?event.srcElement.ownerDocument.parentWindow:event.target.defaultView||event.target.ownerDocument&&event.target.ownerDocument.defaultView; +if(!win){return +}if(win!=win.parent){var frameElement=win.frameElement; +if(frameElement){var framePos=Firebug.browser.getElementPosition(frameElement).top; +clientY+=framePos; +if(frameElement.style.position!="fixed"){clientY-=Firebug.browser.getWindowScrollPosition().top +}}}if(isOpera&&isQuiksMode&&win.frameElement.id=="FirebugUI"){clientY=Firebug.browser.getWindowSize().height-win.frameElement.offsetHeight+clientY +}onHSplitterMouseMoveBuffer=clientY; +if(new Date().getTime()-lastHSplitterMouseMove>chromeRedrawSkipRate){lastHSplitterMouseMove=new Date().getTime(); +handleHSplitterMouseMove() +}else{if(!onHSplitterMouseMoveTimer){onHSplitterMouseMoveTimer=setTimeout(handleHSplitterMouseMove,chromeRedrawSkipRate) +}}cancelEvent(event,true); +return false +}; +var handleHSplitterMouseMove=function(){if(onHSplitterMouseMoveTimer){clearTimeout(onHSplitterMouseMoveTimer); +onHSplitterMouseMoveTimer=null +}var clientY=onHSplitterMouseMoveBuffer; +var windowSize=Firebug.browser.getWindowSize(); +var scrollSize=Firebug.browser.getWindowScrollSize(); +var commandLineHeight=Firebug.chrome.commandLineVisible?fbCommandLine.offsetHeight:0; +var fixedHeight=topHeight+commandLineHeight; +var chromeNode=Firebug.chrome.node; +var scrollbarSize=!isIE&&(scrollSize.width>windowSize.width)?17:0; +var height=windowSize.height; +var chromeHeight=Math.max(height-clientY+5-scrollbarSize,fixedHeight); +chromeHeight=Math.min(chromeHeight,windowSize.height-scrollbarSize); +Firebug.context.persistedState.height=chromeHeight; +chromeNode.style.height=chromeHeight+"px"; +if(noFixedPosition){Firebug.chrome.fixIEPosition() +}Firebug.chrome.draw() +}; +var onHSplitterMouseUp=function onHSplitterMouseUp(event){removeGlobalEvent("mousemove",onHSplitterMouseMove); +removeGlobalEvent("mouseup",onHSplitterMouseUp); +if(isIE){removeEvent(Firebug.browser.document.documentElement,"mouseleave",onHSplitterMouseUp) +}fbHSplitter.className=""; +Firebug.chrome.draw(); +return false +}; +var onVSplitterMouseDown=function onVSplitterMouseDown(event){addGlobalEvent("mousemove",onVSplitterMouseMove); +addGlobalEvent("mouseup",onVSplitterMouseUp); +return false +}; +var onVSplitterMouseMove=function onVSplitterMouseMove(event){if(new Date().getTime()-lastVSplitterMouseMove>chromeRedrawSkipRate){var target=event.target||event.srcElement; +if(target&&target.ownerDocument){var clientX=event.clientX; +var win=document.all?event.srcElement.ownerDocument.parentWindow:event.target.ownerDocument.defaultView; +if(win!=win.parent){clientX+=win.frameElement?win.frameElement.offsetLeft:0 +}var size=Firebug.chrome.getSize(); +var x=Math.max(size.width-clientX+3,6); +Firebug.context.persistedState.sidePanelWidth=x; +Firebug.chrome.draw() +}lastVSplitterMouseMove=new Date().getTime() +}cancelEvent(event,true); +return false +}; +var onVSplitterMouseUp=function onVSplitterMouseUp(event){removeGlobalEvent("mousemove",onVSplitterMouseMove); +removeGlobalEvent("mouseup",onVSplitterMouseUp); +Firebug.chrome.draw() +} +}}); +FBL.ns(function(){with(FBL){Firebug.Lite={} +}}); +FBL.ns(function(){with(FBL){Firebug.Lite.Cache={ID:"firebug-"+new Date().getTime()}; +var cacheUID=0; +var createCache=function(){var map={}; +var data={}; +var CID=Firebug.Lite.Cache.ID; +var supportsDeleteExpando=!document.all; +var cacheFunction=function(element){return cacheAPI.set(element) +}; +var cacheAPI={get:function(key){return map.hasOwnProperty(key)?map[key]:null +},set:function(element){var id=getValidatedKey(element); +if(!id){id=++cacheUID; +element[CID]=id +}if(!map.hasOwnProperty(id)){map[id]=element; +data[id]={} +}return id +},unset:function(element){var id=getValidatedKey(element); +if(!id){return +}if(supportsDeleteExpando){delete element[CID] +}else{if(element.removeAttribute){element.removeAttribute(CID) +}}delete map[id]; +delete data[id] +},key:function(element){return getValidatedKey(element) +},has:function(element){var id=getValidatedKey(element); +return id&&map.hasOwnProperty(id) +},each:function(callback){for(var key in map){if(map.hasOwnProperty(key)){callback(key,map[key]) +}}},data:function(element,name,value){if(value){if(!name){return null +}var id=cacheAPI.set(element); +return data[id][name]=value +}else{var id=cacheAPI.key(element); +return data.hasOwnProperty(id)&&data[id].hasOwnProperty(name)?data[id][name]:null +}},clear:function(){for(var id in map){var element=map[id]; +cacheAPI.unset(element) +}}}; +var getValidatedKey=function(element){var id=element[CID]; +if(!supportsDeleteExpando&&id&&map.hasOwnProperty(id)&&map[id]!=element){element.removeAttribute(CID); +id=null +}return id +}; +FBL.append(cacheFunction,cacheAPI); +return cacheFunction +}; +Firebug.Lite.Cache.StyleSheet=createCache(); +Firebug.Lite.Cache.Element=createCache(); +Firebug.Lite.Cache.Event=createCache() +}}); +FBL.ns(function(){with(FBL){var sourceMap={}; +Firebug.Lite.Proxy={_callbacks:{},load:function(url){var resourceDomain=getDomain(url); +var isLocalResource=!resourceDomain||resourceDomain==Firebug.context.window.location.host; +return isLocalResource?fetchResource(url):fetchProxyResource(url) +},loadJSONP:function(url,callback){var script=createGlobalElement("script"),doc=Firebug.context.document,uid=""+new Date().getTime(),callbackName="callback=Firebug.Lite.Proxy._callbacks."+uid,jsonpURL=url.indexOf("?")!=-1?url+"&"+callbackName:url+"?"+callbackName; +Firebug.Lite.Proxy._callbacks[uid]=function(data){if(callback){callback(data) +}script.parentNode.removeChild(script); +delete Firebug.Lite.Proxy._callbacks[uid] +}; +script.src=jsonpURL; +if(doc.documentElement){doc.documentElement.appendChild(script) +}},YQL:function(url,callback){var yql="http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22"+encodeURIComponent(url)+"%22&format=xml"; +this.loadJSONP(yql,function(data){var source=data.results[0]; +var match=/<body>\s+<p>([\s\S]+)<\/p>\s+<\/body>$/.exec(source); +if(match){source=match[1] +}console.log(source) +}) +}}; +Firebug.Lite.Proxy.fetchResourceDisabledMessage='/* Firebug Lite resource fetching is disabled.\nTo enabled it set the Firebug Lite option "disableResourceFetching" to "false".\nMore info at http://getfirebug.com/firebuglite#Options */'; +var fetchResource=function(url){if(Firebug.disableResourceFetching){var source=sourceMap[url]=Firebug.Lite.Proxy.fetchResourceDisabledMessage; +return source +}if(sourceMap.hasOwnProperty(url)){return sourceMap[url] +}var xhr=FBL.getNativeXHRObject(); +xhr.open("get",url,false); +xhr.send(); +var source=sourceMap[url]=xhr.responseText; +return source +}; +var fetchProxyResource=function(url){if(sourceMap.hasOwnProperty(url)){return sourceMap[url] +}var proxyURL=Env.Location.baseDir+"plugin/proxy/proxy.php?url="+encodeURIComponent(url); +var response=fetchResource(proxyURL); +try{var data=eval("("+response+")") +}catch(E){return"ERROR: Firebug Lite Proxy plugin returned an invalid response." +}var source=data?data.contents:""; +return source +} +}}); +FBL.ns(function(){with(FBL){Firebug.Lite.Style={} +}}); +FBL.ns(function(){with(FBL){Firebug.Lite.Script=function(window){this.fileName=null; +this.isValid=null; +this.baseLineNumber=null; +this.lineExtent=null; +this.tag=null; +this.functionName=null; +this.functionSource=null +}; +Firebug.Lite.Script.prototype={isLineExecutable:function(){},pcToLine:function(){},lineToPc:function(){},toString:function(){return"Firebug.Lite.Script" +}} +}}); +FBL.ns(function(){with(FBL){Firebug.Lite.Browser=function(window){this.contentWindow=window; +this.contentDocument=window.document; +this.currentURI={spec:window.location.href} +}; +Firebug.Lite.Browser.prototype={toString:function(){return"Firebug.Lite.Browser" +}} +}}); +var JSON=window.JSON||{}; +(function(){function f(n){return n<10?"0"+n:n +}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null +}; +String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf() +} +}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep; +function quote(string){escapable.lastIndex=0; +return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a]; +return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4) +})+'"':'"'+string+'"' +}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key]; +if(value&&typeof value==="object"&&typeof value.toJSON==="function"){value=value.toJSON(key) +}if(typeof rep==="function"){value=rep.call(holder,key,value) +}switch(typeof value){case"string":return quote(value); +case"number":return isFinite(value)?String(value):"null"; +case"boolean":case"null":return String(value); +case"object":if(!value){return"null" +}gap+=indent; +partial=[]; +if(Object.prototype.toString.apply(value)==="[object Array]"){length=value.length; +for(i=0; +i<length; +i+=1){partial[i]=str(i,value)||"null" +}v=partial.length===0?"[]":gap?"[\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"]":"["+partial.join(",")+"]"; +gap=mind; +return v +}if(rep&&typeof rep==="object"){length=rep.length; +for(i=0; +i<length; +i+=1){k=rep[i]; +if(typeof k==="string"){v=str(k,value); +if(v){partial.push(quote(k)+(gap?": ":":")+v) +}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value); +if(v){partial.push(quote(k)+(gap?": ":":")+v) +}}}}v=partial.length===0?"{}":gap?"{\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"}":"{"+partial.join(",")+"}"; +gap=mind; +return v +}}if(typeof JSON.stringify!=="function"){JSON.stringify=function(value,replacer,space){var i; +gap=""; +indent=""; +if(typeof space==="number"){for(i=0; +i<space; +i+=1){indent+=" " +}}else{if(typeof space==="string"){indent=space +}}rep=replacer; +if(replacer&&typeof replacer!=="function"&&(typeof replacer!=="object"||typeof replacer.length!=="number")){throw new Error("JSON.stringify") +}return str("",{"":value}) +} +}if(typeof JSON.parse!=="function"){JSON.parse=function(text,reviver){var j; +function walk(holder,key){var k,v,value=holder[key]; +if(value&&typeof value==="object"){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k); +if(v!==undefined){value[k]=v +}else{delete value[k] +}}}}return reviver.call(holder,key,value) +}text=String(text); +cx.lastIndex=0; +if(cx.test(text)){text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4) +}) +}if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){j=eval("("+text+")"); +return typeof reviver==="function"?walk({"":j},""):j +}throw new SyntaxError("JSON.parse") +} +}FBL.JSON=JSON +}()); +(function(){var store=(function(){var api={},win=window,doc=win.document,localStorageName="localStorage",globalStorageName="globalStorage",namespace="__firebug__storejs__",storage; +api.disabled=false; +api.set=function(key,value){}; +api.get=function(key){}; +api.remove=function(key){}; +api.clear=function(){}; +api.transact=function(key,transactionFn){var val=api.get(key); +if(typeof val=="undefined"){val={} +}transactionFn(val); +api.set(key,val) +}; +api.serialize=function(value){return JSON.stringify(value) +}; +api.deserialize=function(value){if(typeof value!="string"){return undefined +}return JSON.parse(value) +}; +function isLocalStorageNameSupported(){try{return(localStorageName in win&&win[localStorageName]) +}catch(err){return false +}}function isGlobalStorageNameSupported(){try{return(globalStorageName in win&&win[globalStorageName]&&win[globalStorageName][win.location.hostname]) +}catch(err){return false +}}if(isLocalStorageNameSupported()){storage=win[localStorageName]; +api.set=function(key,val){storage.setItem(key,api.serialize(val)) +}; +api.get=function(key){return api.deserialize(storage.getItem(key)) +}; +api.remove=function(key){storage.removeItem(key) +}; +api.clear=function(){storage.clear() +} +}else{if(isGlobalStorageNameSupported()){storage=win[globalStorageName][win.location.hostname]; +api.set=function(key,val){storage[key]=api.serialize(val) +}; +api.get=function(key){return api.deserialize(storage[key]&&storage[key].value) +}; +api.remove=function(key){delete storage[key] +}; +api.clear=function(){for(var key in storage){delete storage[key] +}} +}else{if(doc.documentElement.addBehavior){var storage=doc.createElement("div"); +function withIEStorage(storeFunction){return function(){var args=Array.prototype.slice.call(arguments,0); +args.unshift(storage); +doc.documentElement.appendChild(storage); +storage.addBehavior("#default#userData"); +storage.load(localStorageName); +var result=storeFunction.apply(api,args); +doc.documentElement.removeChild(storage); +return result +} +}api.set=withIEStorage(function(storage,key,val){storage.setAttribute(key,api.serialize(val)); +storage.save(localStorageName) +}); +api.get=withIEStorage(function(storage,key){return api.deserialize(storage.getAttribute(key)) +}); +api.remove=withIEStorage(function(storage,key){storage.removeAttribute(key); +storage.save(localStorageName) +}); +api.clear=withIEStorage(function(storage){var attributes=storage.XMLDocument.documentElement.attributes; +storage.load(localStorageName); +for(var i=0,attr; +attr=attributes[i]; +i++){storage.removeAttribute(attr.name) +}storage.save(localStorageName) +}) +}}}try{api.set(namespace,namespace); +if(api.get(namespace)!=namespace){api.disabled=true +}api.remove(namespace) +}catch(e){api.disabled=true +}return api +})(); +if(typeof module!="undefined"){module.exports=store +}FBL.Store=store +})(); +FBL.ns(function(){with(FBL){var chunker=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,done=0,toString=Object.prototype.toString,hasDuplicate=false,baseHasDuplicate=true; +[0,0].sort(function(){baseHasDuplicate=false; +return 0 +}); +var Sizzle=function(selector,context,results,seed){results=results||[]; +var origContext=context=context||document; +if(context.nodeType!==1&&context.nodeType!==9){return[] +}if(!selector||typeof selector!=="string"){return results +}var parts=[],m,set,checkSet,check,mode,extra,prune=true,contextXML=isXML(context),soFar=selector; +while((chunker.exec(""),m=chunker.exec(soFar))!==null){soFar=m[3]; +parts.push(m[1]); +if(m[2]){extra=m[3]; +break +}}if(parts.length>1&&origPOS.exec(selector)){if(parts.length===2&&Expr.relative[parts[0]]){set=posProcess(parts[0]+parts[1],context) +}else{set=Expr.relative[parts[0]]?[context]:Sizzle(parts.shift(),context); +while(parts.length){selector=parts.shift(); +if(Expr.relative[selector]){selector+=parts.shift() +}set=posProcess(selector,set) +}}}else{if(!seed&&parts.length>1&&context.nodeType===9&&!contextXML&&Expr.match.ID.test(parts[0])&&!Expr.match.ID.test(parts[parts.length-1])){var ret=Sizzle.find(parts.shift(),context,contextXML); +context=ret.expr?Sizzle.filter(ret.expr,ret.set)[0]:ret.set[0] +}if(context){var ret=seed?{expr:parts.pop(),set:makeArray(seed)}:Sizzle.find(parts.pop(),parts.length===1&&(parts[0]==="~"||parts[0]==="+")&&context.parentNode?context.parentNode:context,contextXML); +set=ret.expr?Sizzle.filter(ret.expr,ret.set):ret.set; +if(parts.length>0){checkSet=makeArray(set) +}else{prune=false +}while(parts.length){var cur=parts.pop(),pop=cur; +if(!Expr.relative[cur]){cur="" +}else{pop=parts.pop() +}if(pop==null){pop=context +}Expr.relative[cur](checkSet,pop,contextXML) +}}else{checkSet=parts=[] +}}if(!checkSet){checkSet=set +}if(!checkSet){throw"Syntax error, unrecognized expression: "+(cur||selector) +}if(toString.call(checkSet)==="[object Array]"){if(!prune){results.push.apply(results,checkSet) +}else{if(context&&context.nodeType===1){for(var i=0; +checkSet[i]!=null; +i++){if(checkSet[i]&&(checkSet[i]===true||checkSet[i].nodeType===1&&contains(context,checkSet[i]))){results.push(set[i]) +}}}else{for(var i=0; +checkSet[i]!=null; +i++){if(checkSet[i]&&checkSet[i].nodeType===1){results.push(set[i]) +}}}}}else{makeArray(checkSet,results) +}if(extra){Sizzle(extra,origContext,results,seed); +Sizzle.uniqueSort(results) +}return results +}; +Sizzle.uniqueSort=function(results){if(sortOrder){hasDuplicate=baseHasDuplicate; +results.sort(sortOrder); +if(hasDuplicate){for(var i=1; +i<results.length; +i++){if(results[i]===results[i-1]){results.splice(i--,1) +}}}}return results +}; +Sizzle.matches=function(expr,set){return Sizzle(expr,null,null,set) +}; +Sizzle.find=function(expr,context,isXML){var set,match; +if(!expr){return[] +}for(var i=0,l=Expr.order.length; +i<l; +i++){var type=Expr.order[i],match; +if((match=Expr.leftMatch[type].exec(expr))){var left=match[1]; +match.splice(1,1); +if(left.substr(left.length-1)!=="\\"){match[1]=(match[1]||"").replace(/\\/g,""); +set=Expr.find[type](match,context,isXML); +if(set!=null){expr=expr.replace(Expr.match[type],""); +break +}}}}if(!set){set=context.getElementsByTagName("*") +}return{set:set,expr:expr} +}; +Sizzle.filter=function(expr,set,inplace,not){var old=expr,result=[],curLoop=set,match,anyFound,isXMLFilter=set&&set[0]&&isXML(set[0]); +while(expr&&set.length){for(var type in Expr.filter){if((match=Expr.match[type].exec(expr))!=null){var filter=Expr.filter[type],found,item; +anyFound=false; +if(curLoop==result){result=[] +}if(Expr.preFilter[type]){match=Expr.preFilter[type](match,curLoop,inplace,result,not,isXMLFilter); +if(!match){anyFound=found=true +}else{if(match===true){continue +}}}if(match){for(var i=0; +(item=curLoop[i])!=null; +i++){if(item){found=filter(item,match,i,curLoop); +var pass=not^!!found; +if(inplace&&found!=null){if(pass){anyFound=true +}else{curLoop[i]=false +}}else{if(pass){result.push(item); +anyFound=true +}}}}}if(found!==undefined){if(!inplace){curLoop=result +}expr=expr.replace(Expr.match[type],""); +if(!anyFound){return[] +}break +}}}if(expr==old){if(anyFound==null){throw"Syntax error, unrecognized expression: "+expr +}else{break +}}old=expr +}return curLoop +}; +var Expr=Sizzle.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(elem){return elem.getAttribute("href") +}},relative:{"+":function(checkSet,part,isXML){var isPartStr=typeof part==="string",isTag=isPartStr&&!/\W/.test(part),isPartStrNotTag=isPartStr&&!isTag; +if(isTag&&!isXML){part=part.toUpperCase() +}for(var i=0,l=checkSet.length,elem; +i<l; +i++){if((elem=checkSet[i])){while((elem=elem.previousSibling)&&elem.nodeType!==1){}checkSet[i]=isPartStrNotTag||elem&&elem.nodeName===part?elem||false:elem===part +}}if(isPartStrNotTag){Sizzle.filter(part,checkSet,true) +}},">":function(checkSet,part,isXML){var isPartStr=typeof part==="string"; +if(isPartStr&&!/\W/.test(part)){part=isXML?part:part.toUpperCase(); +for(var i=0,l=checkSet.length; +i<l; +i++){var elem=checkSet[i]; +if(elem){var parent=elem.parentNode; +checkSet[i]=parent.nodeName===part?parent:false +}}}else{for(var i=0,l=checkSet.length; +i<l; +i++){var elem=checkSet[i]; +if(elem){checkSet[i]=isPartStr?elem.parentNode:elem.parentNode===part +}}if(isPartStr){Sizzle.filter(part,checkSet,true) +}}},"":function(checkSet,part,isXML){var doneName=done++,checkFn=dirCheck; +if(!/\W/.test(part)){var nodeCheck=part=isXML?part:part.toUpperCase(); +checkFn=dirNodeCheck +}checkFn("parentNode",part,doneName,checkSet,nodeCheck,isXML) +},"~":function(checkSet,part,isXML){var doneName=done++,checkFn=dirCheck; +if(typeof part==="string"&&!/\W/.test(part)){var nodeCheck=part=isXML?part:part.toUpperCase(); +checkFn=dirNodeCheck +}checkFn("previousSibling",part,doneName,checkSet,nodeCheck,isXML) +}},find:{ID:function(match,context,isXML){if(typeof context.getElementById!=="undefined"&&!isXML){var m=context.getElementById(match[1]); +return m?[m]:[] +}},NAME:function(match,context,isXML){if(typeof context.getElementsByName!=="undefined"){var ret=[],results=context.getElementsByName(match[1]); +for(var i=0,l=results.length; +i<l; +i++){if(results[i].getAttribute("name")===match[1]){ret.push(results[i]) +}}return ret.length===0?null:ret +}},TAG:function(match,context){return context.getElementsByTagName(match[1]) +}},preFilter:{CLASS:function(match,curLoop,inplace,result,not,isXML){match=" "+match[1].replace(/\\/g,"")+" "; +if(isXML){return match +}for(var i=0,elem; +(elem=curLoop[i])!=null; +i++){if(elem){if(not^(elem.className&&(" "+elem.className+" ").indexOf(match)>=0)){if(!inplace){result.push(elem) +}}else{if(inplace){curLoop[i]=false +}}}}return false +},ID:function(match){return match[1].replace(/\\/g,"") +},TAG:function(match,curLoop){for(var i=0; +curLoop[i]===false; +i++){}return curLoop[i]&&isXML(curLoop[i])?match[1]:match[1].toUpperCase() +},CHILD:function(match){if(match[1]=="nth"){var test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(match[2]=="even"&&"2n"||match[2]=="odd"&&"2n+1"||!/\D/.test(match[2])&&"0n+"+match[2]||match[2]); +match[2]=(test[1]+(test[2]||1))-0; +match[3]=test[3]-0 +}match[0]=done++; +return match +},ATTR:function(match,curLoop,inplace,result,not,isXML){var name=match[1].replace(/\\/g,""); +if(!isXML&&Expr.attrMap[name]){match[1]=Expr.attrMap[name] +}if(match[2]==="~="){match[4]=" "+match[4]+" " +}return match +},PSEUDO:function(match,curLoop,inplace,result,not){if(match[1]==="not"){if((chunker.exec(match[3])||"").length>1||/^\w/.test(match[3])){match[3]=Sizzle(match[3],null,null,curLoop) +}else{var ret=Sizzle.filter(match[3],curLoop,inplace,true^not); +if(!inplace){result.push.apply(result,ret) +}return false +}}else{if(Expr.match.POS.test(match[0])||Expr.match.CHILD.test(match[0])){return true +}}return match +},POS:function(match){match.unshift(true); +return match +}},filters:{enabled:function(elem){return elem.disabled===false&&elem.type!=="hidden" +},disabled:function(elem){return elem.disabled===true +},checked:function(elem){return elem.checked===true +},selected:function(elem){elem.parentNode.selectedIndex; +return elem.selected===true +},parent:function(elem){return !!elem.firstChild +},empty:function(elem){return !elem.firstChild +},has:function(elem,i,match){return !!Sizzle(match[3],elem).length +},header:function(elem){return/h\d/i.test(elem.nodeName) +},text:function(elem){return"text"===elem.type +},radio:function(elem){return"radio"===elem.type +},checkbox:function(elem){return"checkbox"===elem.type +},file:function(elem){return"file"===elem.type +},password:function(elem){return"password"===elem.type +},submit:function(elem){return"submit"===elem.type +},image:function(elem){return"image"===elem.type +},reset:function(elem){return"reset"===elem.type +},button:function(elem){return"button"===elem.type||elem.nodeName.toUpperCase()==="BUTTON" +},input:function(elem){return/input|select|textarea|button/i.test(elem.nodeName) +}},setFilters:{first:function(elem,i){return i===0 +},last:function(elem,i,match,array){return i===array.length-1 +},even:function(elem,i){return i%2===0 +},odd:function(elem,i){return i%2===1 +},lt:function(elem,i,match){return i<match[3]-0 +},gt:function(elem,i,match){return i>match[3]-0 +},nth:function(elem,i,match){return match[3]-0==i +},eq:function(elem,i,match){return match[3]-0==i +}},filter:{PSEUDO:function(elem,match,i,array){var name=match[1],filter=Expr.filters[name]; +if(filter){return filter(elem,i,match,array) +}else{if(name==="contains"){return(elem.textContent||elem.innerText||"").indexOf(match[3])>=0 +}else{if(name==="not"){var not=match[3]; +for(var i=0,l=not.length; +i<l; +i++){if(not[i]===elem){return false +}}return true +}}}},CHILD:function(elem,match){var type=match[1],node=elem; +switch(type){case"only":case"first":while((node=node.previousSibling)){if(node.nodeType===1){return false +}}if(type=="first"){return true +}node=elem; +case"last":while((node=node.nextSibling)){if(node.nodeType===1){return false +}}return true; +case"nth":var first=match[2],last=match[3]; +if(first==1&&last==0){return true +}var doneName=match[0],parent=elem.parentNode; +if(parent&&(parent.sizcache!==doneName||!elem.nodeIndex)){var count=0; +for(node=parent.firstChild; +node; +node=node.nextSibling){if(node.nodeType===1){node.nodeIndex=++count +}}parent.sizcache=doneName +}var diff=elem.nodeIndex-last; +if(first==0){return diff==0 +}else{return(diff%first==0&&diff/first>=0) +}}},ID:function(elem,match){return elem.nodeType===1&&elem.getAttribute("id")===match +},TAG:function(elem,match){return(match==="*"&&elem.nodeType===1)||elem.nodeName===match +},CLASS:function(elem,match){return(" "+(elem.className||elem.getAttribute("class"))+" ").indexOf(match)>-1 +},ATTR:function(elem,match){var name=match[1],result=Expr.attrHandle[name]?Expr.attrHandle[name](elem):elem[name]!=null?elem[name]:elem.getAttribute(name),value=result+"",type=match[2],check=match[4]; +return result==null?type==="!=":type==="="?value===check:type==="*="?value.indexOf(check)>=0:type==="~="?(" "+value+" ").indexOf(check)>=0:!check?value&&result!==false:type==="!="?value!=check:type==="^="?value.indexOf(check)===0:type==="$="?value.substr(value.length-check.length)===check:type==="|="?value===check||value.substr(0,check.length+1)===check+"-":false +},POS:function(elem,match,i,array){var name=match[2],filter=Expr.setFilters[name]; +if(filter){return filter(elem,i,match,array) +}}}}; +var origPOS=Expr.match.POS; +for(var type in Expr.match){Expr.match[type]=new RegExp(Expr.match[type].source+/(?![^\[]*\])(?![^\(]*\))/.source); +Expr.leftMatch[type]=new RegExp(/(^(?:.|\r|\n)*?)/.source+Expr.match[type].source) +}var makeArray=function(array,results){array=Array.prototype.slice.call(array,0); +if(results){results.push.apply(results,array); +return results +}return array +}; +try{Array.prototype.slice.call(document.documentElement.childNodes,0) +}catch(e){makeArray=function(array,results){var ret=results||[]; +if(toString.call(array)==="[object Array]"){Array.prototype.push.apply(ret,array) +}else{if(typeof array.length==="number"){for(var i=0,l=array.length; +i<l; +i++){ret.push(array[i]) +}}else{for(var i=0; +array[i]; +i++){ret.push(array[i]) +}}}return ret +} +}var sortOrder; +if(document.documentElement.compareDocumentPosition){sortOrder=function(a,b){if(!a.compareDocumentPosition||!b.compareDocumentPosition){if(a==b){hasDuplicate=true +}return 0 +}var ret=a.compareDocumentPosition(b)&4?-1:a===b?0:1; +if(ret===0){hasDuplicate=true +}return ret +} +}else{if("sourceIndex" in document.documentElement){sortOrder=function(a,b){if(!a.sourceIndex||!b.sourceIndex){if(a==b){hasDuplicate=true +}return 0 +}var ret=a.sourceIndex-b.sourceIndex; +if(ret===0){hasDuplicate=true +}return ret +} +}else{if(document.createRange){sortOrder=function(a,b){if(!a.ownerDocument||!b.ownerDocument){if(a==b){hasDuplicate=true +}return 0 +}var aRange=a.ownerDocument.createRange(),bRange=b.ownerDocument.createRange(); +aRange.setStart(a,0); +aRange.setEnd(a,0); +bRange.setStart(b,0); +bRange.setEnd(b,0); +var ret=aRange.compareBoundaryPoints(Range.START_TO_END,bRange); +if(ret===0){hasDuplicate=true +}return ret +} +}}}(function(){var form=document.createElement("div"),id="script"+(new Date).getTime(); +form.innerHTML="<a name='"+id+"'/>"; +var root=document.documentElement; +root.insertBefore(form,root.firstChild); +if(!!document.getElementById(id)){Expr.find.ID=function(match,context,isXML){if(typeof context.getElementById!=="undefined"&&!isXML){var m=context.getElementById(match[1]); +return m?m.id===match[1]||typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id").nodeValue===match[1]?[m]:undefined:[] +}}; +Expr.filter.ID=function(elem,match){var node=typeof elem.getAttributeNode!=="undefined"&&elem.getAttributeNode("id"); +return elem.nodeType===1&&node&&node.nodeValue===match +} +}root.removeChild(form); +root=form=null +})(); +(function(){var div=document.createElement("div"); +div.appendChild(document.createComment("")); +if(div.getElementsByTagName("*").length>0){Expr.find.TAG=function(match,context){var results=context.getElementsByTagName(match[1]); +if(match[1]==="*"){var tmp=[]; +for(var i=0; +results[i]; +i++){if(results[i].nodeType===1){tmp.push(results[i]) +}}results=tmp +}return results +} +}div.innerHTML="<a href='#'></a>"; +if(div.firstChild&&typeof div.firstChild.getAttribute!=="undefined"&&div.firstChild.getAttribute("href")!=="#"){Expr.attrHandle.href=function(elem){return elem.getAttribute("href",2) +} +}div=null +})(); +if(document.querySelectorAll){(function(){var oldSizzle=Sizzle,div=document.createElement("div"); +div.innerHTML="<p class='TEST'></p>"; +if(div.querySelectorAll&&div.querySelectorAll(".TEST").length===0){return +}Sizzle=function(query,context,extra,seed){context=context||document; +if(!seed&&context.nodeType===9&&!isXML(context)){try{return makeArray(context.querySelectorAll(query),extra) +}catch(e){}}return oldSizzle(query,context,extra,seed) +}; +for(var prop in oldSizzle){Sizzle[prop]=oldSizzle[prop] +}div=null +})() +}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var div=document.createElement("div"); +div.innerHTML="<div class='test e'></div><div class='test'></div>"; +if(div.getElementsByClassName("e").length===0){return +}div.lastChild.className="e"; +if(div.getElementsByClassName("e").length===1){return +}Expr.order.splice(1,0,"CLASS"); +Expr.find.CLASS=function(match,context,isXML){if(typeof context.getElementsByClassName!=="undefined"&&!isXML){return context.getElementsByClassName(match[1]) +}}; +div=null +})() +}function dirNodeCheck(dir,cur,doneName,checkSet,nodeCheck,isXML){var sibDir=dir=="previousSibling"&&!isXML; +for(var i=0,l=checkSet.length; +i<l; +i++){var elem=checkSet[i]; +if(elem){if(sibDir&&elem.nodeType===1){elem.sizcache=doneName; +elem.sizset=i +}elem=elem[dir]; +var match=false; +while(elem){if(elem.sizcache===doneName){match=checkSet[elem.sizset]; +break +}if(elem.nodeType===1&&!isXML){elem.sizcache=doneName; +elem.sizset=i +}if(elem.nodeName===cur){match=elem; +break +}elem=elem[dir] +}checkSet[i]=match +}}}function dirCheck(dir,cur,doneName,checkSet,nodeCheck,isXML){var sibDir=dir=="previousSibling"&&!isXML; +for(var i=0,l=checkSet.length; +i<l; +i++){var elem=checkSet[i]; +if(elem){if(sibDir&&elem.nodeType===1){elem.sizcache=doneName; +elem.sizset=i +}elem=elem[dir]; +var match=false; +while(elem){if(elem.sizcache===doneName){match=checkSet[elem.sizset]; +break +}if(elem.nodeType===1){if(!isXML){elem.sizcache=doneName; +elem.sizset=i +}if(typeof cur!=="string"){if(elem===cur){match=true; +break +}}else{if(Sizzle.filter(cur,[elem]).length>0){match=elem; +break +}}}elem=elem[dir] +}checkSet[i]=match +}}}var contains=document.compareDocumentPosition?function(a,b){return a.compareDocumentPosition(b)&16 +}:function(a,b){return a!==b&&(a.contains?a.contains(b):true) +}; +var isXML=function(elem){return elem.nodeType===9&&elem.documentElement.nodeName!=="HTML"||!!elem.ownerDocument&&elem.ownerDocument.documentElement.nodeName!=="HTML" +}; +var posProcess=function(selector,context){var tmpSet=[],later="",match,root=context.nodeType?[context]:context; +while((match=Expr.match.PSEUDO.exec(selector))){later+=match[0]; +selector=selector.replace(Expr.match.PSEUDO,"") +}selector=Expr.relative[selector]?selector+"*":selector; +for(var i=0,l=root.length; +i<l; +i++){Sizzle(selector,root[i],tmpSet) +}return Sizzle.filter(later,tmpSet) +}; +Firebug.Selector=Sizzle +}}); +FBL.ns(function(){with(FBL){var ElementCache=Firebug.Lite.Cache.Element; +var inspectorTS,inspectorTimer,isInspecting; +Firebug.Inspector={create:function(){offlineFragment=Env.browser.document.createDocumentFragment(); +createBoxModelInspector(); +createOutlineInspector() +},destroy:function(){destroyBoxModelInspector(); +destroyOutlineInspector(); +offlineFragment=null +},toggleInspect:function(){if(isInspecting){this.stopInspecting() +}else{Firebug.chrome.inspectButton.changeState("pressed"); +this.startInspecting() +}},startInspecting:function(){isInspecting=true; +Firebug.chrome.selectPanel("HTML"); +createInspectorFrame(); +var size=Firebug.browser.getWindowScrollSize(); +fbInspectFrame.style.width=size.width+"px"; +fbInspectFrame.style.height=size.height+"px"; +addEvent(fbInspectFrame,"mousemove",Firebug.Inspector.onInspecting); +addEvent(fbInspectFrame,"mousedown",Firebug.Inspector.onInspectingClick) +},stopInspecting:function(){isInspecting=false; +if(outlineVisible){this.hideOutline() +}removeEvent(fbInspectFrame,"mousemove",Firebug.Inspector.onInspecting); +removeEvent(fbInspectFrame,"mousedown",Firebug.Inspector.onInspectingClick); +destroyInspectorFrame(); +Firebug.chrome.inspectButton.restore(); +if(Firebug.chrome.type=="popup"){Firebug.chrome.node.focus() +}},onInspectingClick:function(e){fbInspectFrame.style.display="none"; +var targ=Firebug.browser.getElementFromPoint(e.clientX,e.clientY); +fbInspectFrame.style.display="block"; +var id=targ.id; +if(id&&/^fbOutline\w$/.test(id)){return +}if(id=="FirebugUI"){return +}while(targ.nodeType!=1){targ=targ.parentNode +}Firebug.Inspector.stopInspecting() +},onInspecting:function(e){if(new Date().getTime()-lastInspecting>30){fbInspectFrame.style.display="none"; +var targ=Firebug.browser.getElementFromPoint(e.clientX,e.clientY); +fbInspectFrame.style.display="block"; +var id=targ.id; +if(id&&/^fbOutline\w$/.test(id)){return +}if(id=="FirebugUI"){return +}while(targ.nodeType!=1){targ=targ.parentNode +}if(targ.nodeName.toLowerCase()=="body"){return +}Firebug.Inspector.drawOutline(targ); +if(ElementCache(targ)){var target=""+ElementCache.key(targ); +var lazySelect=function(){inspectorTS=new Date().getTime(); +if(Firebug.HTML){Firebug.HTML.selectTreeNode(""+ElementCache.key(targ)) +}}; +if(inspectorTimer){clearTimeout(inspectorTimer); +inspectorTimer=null +}if(new Date().getTime()-inspectorTS>200){setTimeout(lazySelect,0) +}else{inspectorTimer=setTimeout(lazySelect,300) +}}lastInspecting=new Date().getTime() +}},onInspectingBody:function(e){if(new Date().getTime()-lastInspecting>30){var targ=e.target; +var id=targ.id; +if(id&&/^fbOutline\w$/.test(id)){return +}if(id=="FirebugUI"){return +}while(targ.nodeType!=1){targ=targ.parentNode +}if(targ.nodeName.toLowerCase()=="body"){return +}Firebug.Inspector.drawOutline(targ); +if(ElementCache.has(targ)){FBL.Firebug.HTML.selectTreeNode(""+ElementCache.key(targ)) +}lastInspecting=new Date().getTime() +}},drawOutline:function(el){var border=2; +var scrollbarSize=17; +var windowSize=Firebug.browser.getWindowSize(); +var scrollSize=Firebug.browser.getWindowScrollSize(); +var scrollPosition=Firebug.browser.getWindowScrollPosition(); +var box=Firebug.browser.getElementBox(el); +var top=box.top; +var left=box.left; +var height=box.height; +var width=box.width; +var freeHorizontalSpace=scrollPosition.left+windowSize.width-left-width-(!isIE&&scrollSize.height>windowSize.height?scrollbarSize:0); +var freeVerticalSpace=scrollPosition.top+windowSize.height-top-height-(!isIE&&scrollSize.width>windowSize.width?scrollbarSize:0); +var numVerticalBorders=freeVerticalSpace>0?2:1; +var o=outlineElements; +var style; +style=o.fbOutlineT.style; +style.top=top-border+"px"; +style.left=left+"px"; +style.height=border+"px"; +style.width=width+"px"; +style=o.fbOutlineL.style; +style.top=top-border+"px"; +style.left=left-border+"px"; +style.height=height+numVerticalBorders*border+"px"; +style.width=border+"px"; +style=o.fbOutlineB.style; +if(freeVerticalSpace>0){style.top=top+height+"px"; +style.left=left+"px"; +style.width=width+"px" +}else{style.top=-2*border+"px"; +style.left=-2*border+"px"; +style.width=border+"px" +}style=o.fbOutlineR.style; +if(freeHorizontalSpace>0){style.top=top-border+"px"; +style.left=left+width+"px"; +style.height=height+numVerticalBorders*border+"px"; +style.width=(freeHorizontalSpace<border?freeHorizontalSpace:border)+"px" +}else{style.top=-2*border+"px"; +style.left=-2*border+"px"; +style.height=border+"px"; +style.width=border+"px" +}if(!outlineVisible){this.showOutline() +}},hideOutline:function(){if(!outlineVisible){return +}for(var name in outline){offlineFragment.appendChild(outlineElements[name]) +}outlineVisible=false +},showOutline:function(){if(outlineVisible){return +}if(boxModelVisible){this.hideBoxModel() +}for(var name in outline){Firebug.browser.document.getElementsByTagName("body")[0].appendChild(outlineElements[name]) +}outlineVisible=true +},drawBoxModel:function(el){if(!el||!el.parentNode){return +}var box=Firebug.browser.getElementBox(el); +var windowSize=Firebug.browser.getWindowSize(); +var scrollPosition=Firebug.browser.getWindowScrollPosition(); +var offsetHeight=Firebug.chrome.type=="frame"?Firebug.context.persistedState.height:0; +if(box.top>scrollPosition.top+windowSize.height-offsetHeight||box.left>scrollPosition.left+windowSize.width||scrollPosition.top>box.top+box.height||scrollPosition.left>box.left+box.width){return +}var top=box.top; +var left=box.left; +var height=box.height; +var width=box.width; +var margin=Firebug.browser.getMeasurementBox(el,"margin"); +var padding=Firebug.browser.getMeasurementBox(el,"padding"); +var border=Firebug.browser.getMeasurementBox(el,"border"); +boxModelStyle.top=top-margin.top+"px"; +boxModelStyle.left=left-margin.left+"px"; +boxModelStyle.height=height+margin.top+margin.bottom+"px"; +boxModelStyle.width=width+margin.left+margin.right+"px"; +boxBorderStyle.top=margin.top+"px"; +boxBorderStyle.left=margin.left+"px"; +boxBorderStyle.height=height+"px"; +boxBorderStyle.width=width+"px"; +boxPaddingStyle.top=margin.top+border.top+"px"; +boxPaddingStyle.left=margin.left+border.left+"px"; +boxPaddingStyle.height=height-border.top-border.bottom+"px"; +boxPaddingStyle.width=width-border.left-border.right+"px"; +boxContentStyle.top=margin.top+border.top+padding.top+"px"; +boxContentStyle.left=margin.left+border.left+padding.left+"px"; +boxContentStyle.height=height-border.top-padding.top-padding.bottom-border.bottom+"px"; +boxContentStyle.width=width-border.left-padding.left-padding.right-border.right+"px"; +if(!boxModelVisible){this.showBoxModel() +}},hideBoxModel:function(){if(!boxModelVisible){return +}offlineFragment.appendChild(boxModel); +boxModelVisible=false +},showBoxModel:function(){if(boxModelVisible){return +}if(outlineVisible){this.hideOutline() +}Firebug.browser.document.getElementsByTagName("body")[0].appendChild(boxModel); +boxModelVisible=true +}}; +var offlineFragment=null; +var boxModelVisible=false; +var boxModel,boxModelStyle,boxMargin,boxMarginStyle,boxBorder,boxBorderStyle,boxPadding,boxPaddingStyle,boxContent,boxContentStyle; +var resetStyle="margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;"; +var offscreenStyle=resetStyle+"top:-1234px; left:-1234px;"; +var inspectStyle=resetStyle+"z-index: 2147483500;"; +var inspectFrameStyle=resetStyle+"z-index: 2147483550; top:0; left:0; background:url("+Env.Location.skinDir+"pixel_transparent.gif);"; +var inspectModelOpacity=isIE?"filter:alpha(opacity=80);":"opacity:0.8;"; +var inspectModelStyle=inspectStyle+inspectModelOpacity; +var inspectMarginStyle=inspectStyle+"background: #EDFF64; height:100%; width:100%;"; +var inspectBorderStyle=inspectStyle+"background: #666;"; +var inspectPaddingStyle=inspectStyle+"background: SlateBlue;"; +var inspectContentStyle=inspectStyle+"background: SkyBlue;"; +var outlineStyle={fbHorizontalLine:"background: #3875D7;height: 2px;",fbVerticalLine:"background: #3875D7;width: 2px;"}; +var lastInspecting=0; +var fbInspectFrame=null; +var outlineVisible=false; +var outlineElements={}; +var outline={fbOutlineT:"fbHorizontalLine",fbOutlineL:"fbVerticalLine",fbOutlineB:"fbHorizontalLine",fbOutlineR:"fbVerticalLine"}; +var getInspectingTarget=function(){}; +var createInspectorFrame=function createInspectorFrame(){fbInspectFrame=createGlobalElement("div"); +fbInspectFrame.id="fbInspectFrame"; +fbInspectFrame.firebugIgnore=true; +fbInspectFrame.style.cssText=inspectFrameStyle; +Firebug.browser.document.getElementsByTagName("body")[0].appendChild(fbInspectFrame) +}; +var destroyInspectorFrame=function destroyInspectorFrame(){if(fbInspectFrame){Firebug.browser.document.getElementsByTagName("body")[0].removeChild(fbInspectFrame); +fbInspectFrame=null +}}; +var createOutlineInspector=function createOutlineInspector(){for(var name in outline){var el=outlineElements[name]=createGlobalElement("div"); +el.id=name; +el.firebugIgnore=true; +el.style.cssText=inspectStyle+outlineStyle[outline[name]]; +offlineFragment.appendChild(el) +}}; +var destroyOutlineInspector=function destroyOutlineInspector(){for(var name in outline){var el=outlineElements[name]; +el.parentNode.removeChild(el) +}}; +var createBoxModelInspector=function createBoxModelInspector(){boxModel=createGlobalElement("div"); +boxModel.id="fbBoxModel"; +boxModel.firebugIgnore=true; +boxModelStyle=boxModel.style; +boxModelStyle.cssText=inspectModelStyle; +boxMargin=createGlobalElement("div"); +boxMargin.id="fbBoxMargin"; +boxMarginStyle=boxMargin.style; +boxMarginStyle.cssText=inspectMarginStyle; +boxModel.appendChild(boxMargin); +boxBorder=createGlobalElement("div"); +boxBorder.id="fbBoxBorder"; +boxBorderStyle=boxBorder.style; +boxBorderStyle.cssText=inspectBorderStyle; +boxModel.appendChild(boxBorder); +boxPadding=createGlobalElement("div"); +boxPadding.id="fbBoxPadding"; +boxPaddingStyle=boxPadding.style; +boxPaddingStyle.cssText=inspectPaddingStyle; +boxModel.appendChild(boxPadding); +boxContent=createGlobalElement("div"); +boxContent.id="fbBoxContent"; +boxContentStyle=boxContent.style; +boxContentStyle.cssText=inspectContentStyle; +boxModel.appendChild(boxContent); +offlineFragment.appendChild(boxModel) +}; +var destroyBoxModelInspector=function destroyBoxModelInspector(){boxModel.parentNode.removeChild(boxModel) +} +}}); +(function(){FBL.DomplateTag=function DomplateTag(tagName){this.tagName=tagName +}; +FBL.DomplateEmbed=function DomplateEmbed(){}; +FBL.DomplateLoop=function DomplateLoop(){}; +var DomplateTag=FBL.DomplateTag; +var DomplateEmbed=FBL.DomplateEmbed; +var DomplateLoop=FBL.DomplateLoop; +var womb=null; +FBL.domplate=function(){var lastSubject; +for(var i=0; +i<arguments.length; +++i){lastSubject=lastSubject?copyObject(lastSubject,arguments[i]):arguments[i] +}for(var name in lastSubject){var val=lastSubject[name]; +if(isTag(val)){val.tag.subject=lastSubject +}}return lastSubject +}; +var domplate=FBL.domplate; +FBL.domplate.context=function(context,fn){var lastContext=domplate.lastContext; +domplate.topContext=context; +fn.apply(context); +domplate.topContext=lastContext +}; +FBL.TAG=function(){var embed=new DomplateEmbed(); +return embed.merge(arguments) +}; +FBL.FOR=function(){var loop=new DomplateLoop(); +return loop.merge(arguments) +}; +FBL.DomplateTag.prototype={merge:function(args,oldTag){if(oldTag){this.tagName=oldTag.tagName +}this.context=oldTag?oldTag.context:null; +this.subject=oldTag?oldTag.subject:null; +this.attrs=oldTag?copyObject(oldTag.attrs):{}; +this.classes=oldTag?copyObject(oldTag.classes):{}; +this.props=oldTag?copyObject(oldTag.props):null; +this.listeners=oldTag?copyArray(oldTag.listeners):null; +this.children=oldTag?copyArray(oldTag.children):[]; +this.vars=oldTag?copyArray(oldTag.vars):[]; +var attrs=args.length?args[0]:null; +var hasAttrs=typeof(attrs)=="object"&&!isTag(attrs); +this.children=[]; +if(domplate.topContext){this.context=domplate.topContext +}if(args.length){parseChildren(args,hasAttrs?1:0,this.vars,this.children) +}if(hasAttrs){this.parseAttrs(attrs) +}return creator(this,DomplateTag) +},parseAttrs:function(args){for(var name in args){var val=parseValue(args[name]); +readPartNames(val,this.vars); +if(name.indexOf("on")==0){var eventName=name.substr(2); +if(!this.listeners){this.listeners=[] +}this.listeners.push(eventName,val) +}else{if(name.indexOf("_")==0){var propName=name.substr(1); +if(!this.props){this.props={} +}this.props[propName]=val +}else{if(name.indexOf("$")==0){var className=name.substr(1); +if(!this.classes){this.classes={} +}this.classes[className]=val +}else{if(name=="class"&&this.attrs.hasOwnProperty(name)){this.attrs[name]+=" "+val +}else{this.attrs[name]=val +}}}}}},compile:function(){if(this.renderMarkup){return +}this.compileMarkup(); +this.compileDOM() +},compileMarkup:function(){this.markupArgs=[]; +var topBlock=[],topOuts=[],blocks=[],info={args:this.markupArgs,argIndex:0}; +this.generateMarkup(topBlock,topOuts,blocks,info); +this.addCode(topBlock,topOuts,blocks); +var fnBlock=["r=(function (__code__, __context__, __in__, __out__"]; +for(var i=0; +i<info.argIndex; +++i){fnBlock.push(", s",i) +}fnBlock.push(") {"); +if(this.subject){fnBlock.push("with (this) {") +}if(this.context){fnBlock.push("with (__context__) {") +}fnBlock.push("with (__in__) {"); +fnBlock.push.apply(fnBlock,blocks); +if(this.subject){fnBlock.push("}") +}if(this.context){fnBlock.push("}") +}fnBlock.push("}})"); +function __link__(tag,code,outputs,args){if(!tag||!tag.tag){return +}tag.tag.compile(); +var tagOutputs=[]; +var markupArgs=[code,tag.tag.context,args,tagOutputs]; +markupArgs.push.apply(markupArgs,tag.tag.markupArgs); +tag.tag.renderMarkup.apply(tag.tag.subject,markupArgs); +outputs.push(tag); +outputs.push(tagOutputs) +}function __escape__(value){function replaceChars(ch){switch(ch){case"<":return"<"; +case">":return">"; +case"&":return"&"; +case"'":return"'"; +case'"':return""" +}return"?" +}return String(value).replace(/[<>&"']/g,replaceChars) +}function __loop__(iter,outputs,fn){var iterOuts=[]; +outputs.push(iterOuts); +if(iter instanceof Array){iter=new ArrayIterator(iter) +}try{while(1){var value=iter.next(); +var itemOuts=[0,0]; +iterOuts.push(itemOuts); +fn.apply(this,[value,itemOuts]) +}}catch(exc){if(exc!=StopIteration){throw exc +}}}var js=fnBlock.join(""); +var r=null; +eval(js); +this.renderMarkup=r +},getVarNames:function(args){if(this.vars){args.push.apply(args,this.vars) +}for(var i=0; +i<this.children.length; +++i){var child=this.children[i]; +if(isTag(child)){child.tag.getVarNames(args) +}else{if(child instanceof Parts){for(var i=0; +i<child.parts.length; +++i){if(child.parts[i] instanceof Variable){var name=child.parts[i].name; +var names=name.split("."); +args.push(names[0]) +}}}}}},generateMarkup:function(topBlock,topOuts,blocks,info){topBlock.push(',"<',this.tagName,'"'); +for(var name in this.attrs){if(name!="class"){var val=this.attrs[name]; +topBlock.push(', " ',name,'=\\""'); +addParts(val,",",topBlock,info,true); +topBlock.push(', "\\""') +}}if(this.listeners){for(var i=0; +i<this.listeners.length; +i+=2){readPartNames(this.listeners[i+1],topOuts) +}}if(this.props){for(var name in this.props){readPartNames(this.props[name],topOuts) +}}if(this.attrs.hasOwnProperty("class")||this.classes){topBlock.push(', " class=\\""'); +if(this.attrs.hasOwnProperty("class")){addParts(this.attrs["class"],",",topBlock,info,true) +}topBlock.push(', " "'); +for(var name in this.classes){topBlock.push(", ("); +addParts(this.classes[name],"",topBlock,info); +topBlock.push(' ? "',name,'" + " " : "")') +}topBlock.push(', "\\""') +}topBlock.push(',">"'); +this.generateChildMarkup(topBlock,topOuts,blocks,info); +topBlock.push(',"</',this.tagName,'>"') +},generateChildMarkup:function(topBlock,topOuts,blocks,info){for(var i=0; +i<this.children.length; +++i){var child=this.children[i]; +if(isTag(child)){child.tag.generateMarkup(topBlock,topOuts,blocks,info) +}else{addParts(child,",",topBlock,info,true) +}}},addCode:function(topBlock,topOuts,blocks){if(topBlock.length){blocks.push('__code__.push(""',topBlock.join(""),");") +}if(topOuts.length){blocks.push("__out__.push(",topOuts.join(","),");") +}topBlock.splice(0,topBlock.length); +topOuts.splice(0,topOuts.length) +},addLocals:function(blocks){var varNames=[]; +this.getVarNames(varNames); +var map={}; +for(var i=0; +i<varNames.length; +++i){var name=varNames[i]; +if(map.hasOwnProperty(name)){continue +}map[name]=1; +var names=name.split("."); +blocks.push("var ",names[0]+" = __in__."+names[0]+";") +}},compileDOM:function(){var path=[]; +var blocks=[]; +this.domArgs=[]; +path.embedIndex=0; +path.loopIndex=0; +path.staticIndex=0; +path.renderIndex=0; +var nodeCount=this.generateDOM(path,blocks,this.domArgs); +var fnBlock=["r=(function (root, context, o"]; +for(var i=0; +i<path.staticIndex; +++i){fnBlock.push(", ","s"+i) +}for(var i=0; +i<path.renderIndex; +++i){fnBlock.push(", ","d"+i) +}fnBlock.push(") {"); +for(var i=0; +i<path.loopIndex; +++i){fnBlock.push("var l",i," = 0;") +}for(var i=0; +i<path.embedIndex; +++i){fnBlock.push("var e",i," = 0;") +}if(this.subject){fnBlock.push("with (this) {") +}if(this.context){fnBlock.push("with (context) {") +}fnBlock.push(blocks.join("")); +if(this.subject){fnBlock.push("}") +}if(this.context){fnBlock.push("}") +}fnBlock.push("return ",nodeCount,";"); +fnBlock.push("})"); +function __bind__(object,fn){return function(event){return fn.apply(object,[event]) +} +}function __link__(node,tag,args){if(!tag||!tag.tag){return +}tag.tag.compile(); +var domArgs=[node,tag.tag.context,0]; +domArgs.push.apply(domArgs,tag.tag.domArgs); +domArgs.push.apply(domArgs,args); +return tag.tag.renderDOM.apply(tag.tag.subject,domArgs) +}var self=this; +function __loop__(iter,fn){var nodeCount=0; +for(var i=0; +i<iter.length; +++i){iter[i][0]=i; +iter[i][1]=nodeCount; +nodeCount+=fn.apply(this,iter[i]) +}return nodeCount +}function __path__(parent,offset){var root=parent; +for(var i=2; +i<arguments.length; +++i){var index=arguments[i]; +if(i==3){index+=offset +}if(index==-1){parent=parent.parentNode +}else{parent=parent.childNodes[index] +}}return parent +}var js=fnBlock.join(""); +var r=null; +eval(js); +this.renderDOM=r +},generateDOM:function(path,blocks,args){if(this.listeners||this.props){this.generateNodePath(path,blocks) +}if(this.listeners){for(var i=0; +i<this.listeners.length; +i+=2){var val=this.listeners[i+1]; +var arg=generateArg(val,path,args); +blocks.push('addEvent(node, "',this.listeners[i],'", __bind__(this, ',arg,"), false);") +}}if(this.props){for(var name in this.props){var val=this.props[name]; +var arg=generateArg(val,path,args); +blocks.push("node.",name," = ",arg,";") +}}this.generateChildDOM(path,blocks,args); +return 1 +},generateNodePath:function(path,blocks){blocks.push("var node = __path__(root, o"); +for(var i=0; +i<path.length; +++i){blocks.push(",",path[i]) +}blocks.push(");") +},generateChildDOM:function(path,blocks,args){path.push(0); +for(var i=0; +i<this.children.length; +++i){var child=this.children[i]; +if(isTag(child)){path[path.length-1]+="+"+child.tag.generateDOM(path,blocks,args) +}else{path[path.length-1]+="+1" +}}path.pop() +}}; +FBL.DomplateEmbed.prototype=copyObject(FBL.DomplateTag.prototype,{merge:function(args,oldTag){this.value=oldTag?oldTag.value:parseValue(args[0]); +this.attrs=oldTag?oldTag.attrs:{}; +this.vars=oldTag?copyArray(oldTag.vars):[]; +var attrs=args[1]; +for(var name in attrs){var val=parseValue(attrs[name]); +this.attrs[name]=val; +readPartNames(val,this.vars) +}return creator(this,DomplateEmbed) +},getVarNames:function(names){if(this.value instanceof Parts){names.push(this.value.parts[0].name) +}if(this.vars){names.push.apply(names,this.vars) +}},generateMarkup:function(topBlock,topOuts,blocks,info){this.addCode(topBlock,topOuts,blocks); +blocks.push("__link__("); +addParts(this.value,"",blocks,info); +blocks.push(", __code__, __out__, {"); +var lastName=null; +for(var name in this.attrs){if(lastName){blocks.push(",") +}lastName=name; +var val=this.attrs[name]; +blocks.push('"',name,'":'); +addParts(val,"",blocks,info) +}blocks.push("});") +},generateDOM:function(path,blocks,args){var embedName="e"+path.embedIndex++; +this.generateNodePath(path,blocks); +var valueName="d"+path.renderIndex++; +var argsName="d"+path.renderIndex++; +blocks.push(embedName+" = __link__(node, ",valueName,", ",argsName,");"); +return embedName +}}); +FBL.DomplateLoop.prototype=copyObject(FBL.DomplateTag.prototype,{merge:function(args,oldTag){this.varName=oldTag?oldTag.varName:args[0]; +this.iter=oldTag?oldTag.iter:parseValue(args[1]); +this.vars=[]; +this.children=oldTag?copyArray(oldTag.children):[]; +var offset=Math.min(args.length,2); +parseChildren(args,offset,this.vars,this.children); +return creator(this,DomplateLoop) +},getVarNames:function(names){if(this.iter instanceof Parts){names.push(this.iter.parts[0].name) +}DomplateTag.prototype.getVarNames.apply(this,[names]) +},generateMarkup:function(topBlock,topOuts,blocks,info){this.addCode(topBlock,topOuts,blocks); +var iterName; +if(this.iter instanceof Parts){var part=this.iter.parts[0]; +iterName=part.name; +if(part.format){for(var i=0; +i<part.format.length; +++i){iterName=part.format[i]+"("+iterName+")" +}}}else{iterName=this.iter +}blocks.push("__loop__.apply(this, [",iterName,", __out__, function(",this.varName,", __out__) {"); +this.generateChildMarkup(topBlock,topOuts,blocks,info); +this.addCode(topBlock,topOuts,blocks); +blocks.push("}]);") +},generateDOM:function(path,blocks,args){var iterName="d"+path.renderIndex++; +var counterName="i"+path.loopIndex; +var loopName="l"+path.loopIndex++; +if(!path.length){path.push(-1,0) +}var preIndex=path.renderIndex; +path.renderIndex=0; +var nodeCount=0; +var subBlocks=[]; +var basePath=path[path.length-1]; +for(var i=0; +i<this.children.length; +++i){path[path.length-1]=basePath+"+"+loopName+"+"+nodeCount; +var child=this.children[i]; +if(isTag(child)){nodeCount+="+"+child.tag.generateDOM(path,subBlocks,args) +}else{nodeCount+="+1" +}}path[path.length-1]=basePath+"+"+loopName; +blocks.push(loopName," = __loop__.apply(this, [",iterName,", function(",counterName,",",loopName); +for(var i=0; +i<path.renderIndex; +++i){blocks.push(",d"+i) +}blocks.push(") {"); +blocks.push(subBlocks.join("")); +blocks.push("return ",nodeCount,";"); +blocks.push("}]);"); +path.renderIndex=preIndex; +return loopName +}}); +function Variable(name,format){this.name=name; +this.format=format +}function Parts(parts){this.parts=parts +}function parseParts(str){var re=/\$([_A-Za-z][_A-Za-z0-9.|]*)/g; +var index=0; +var parts=[]; +var m; +while(m=re.exec(str)){var pre=str.substr(index,(re.lastIndex-m[0].length)-index); +if(pre){parts.push(pre) +}var expr=m[1].split("|"); +parts.push(new Variable(expr[0],expr.slice(1))); +index=re.lastIndex +}if(!index){return str +}var post=str.substr(index); +if(post){parts.push(post) +}return new Parts(parts) +}function parseValue(val){return typeof(val)=="string"?parseParts(val):val +}function parseChildren(args,offset,vars,children){for(var i=offset; +i<args.length; +++i){var val=parseValue(args[i]); +children.push(val); +readPartNames(val,vars) +}}function readPartNames(val,vars){if(val instanceof Parts){for(var i=0; +i<val.parts.length; +++i){var part=val.parts[i]; +if(part instanceof Variable){vars.push(part.name) +}}}}function generateArg(val,path,args){if(val instanceof Parts){var vals=[]; +for(var i=0; +i<val.parts.length; +++i){var part=val.parts[i]; +if(part instanceof Variable){var varName="d"+path.renderIndex++; +if(part.format){for(var j=0; +j<part.format.length; +++j){varName=part.format[j]+"("+varName+")" +}}vals.push(varName) +}else{vals.push('"'+part.replace(/"/g,'\\"')+'"') +}}return vals.join("+") +}else{args.push(val); +return"s"+path.staticIndex++ +}}function addParts(val,delim,block,info,escapeIt){var vals=[]; +if(val instanceof Parts){for(var i=0; +i<val.parts.length; +++i){var part=val.parts[i]; +if(part instanceof Variable){var partName=part.name; +if(part.format){for(var j=0; +j<part.format.length; +++j){partName=part.format[j]+"("+partName+")" +}}if(escapeIt){vals.push("__escape__("+partName+")") +}else{vals.push(partName) +}}else{vals.push('"'+part+'"') +}}}else{if(isTag(val)){info.args.push(val); +vals.push("s"+info.argIndex++) +}else{vals.push('"'+val+'"') +}}var parts=vals.join(delim); +if(parts){block.push(delim,parts) +}}function isTag(obj){return(typeof(obj)=="function"||obj instanceof Function)&&!!obj.tag +}function creator(tag,cons){var fn=new Function("var tag = arguments.callee.tag;var cons = arguments.callee.cons;var newTag = new cons();return newTag.merge(arguments, tag);"); +fn.tag=tag; +fn.cons=cons; +extend(fn,Renderer); +return fn +}function copyArray(oldArray){var ary=[]; +if(oldArray){for(var i=0; +i<oldArray.length; +++i){ary.push(oldArray[i]) +}}return ary +}function copyObject(l,r){var m={}; +extend(m,l); +extend(m,r); +return m +}function extend(l,r){for(var n in r){l[n]=r[n] +}}function addEvent(object,name,handler){if(document.all){object.attachEvent("on"+name,handler) +}else{object.addEventListener(name,handler,false) +}}function ArrayIterator(array){var index=-1; +this.next=function(){if(++index>=array.length){throw StopIteration +}return array[index] +} +}function StopIteration(){}FBL.$break=function(){throw StopIteration +}; +var Renderer={renderHTML:function(args,outputs,self){var code=[]; +var markupArgs=[code,this.tag.context,args,outputs]; +markupArgs.push.apply(markupArgs,this.tag.markupArgs); +this.tag.renderMarkup.apply(self?self:this.tag.subject,markupArgs); +return code.join("") +},insertRows:function(args,before,self){this.tag.compile(); +var outputs=[]; +var html=this.renderHTML(args,outputs,self); +var doc=before.ownerDocument; +var div=doc.createElement("div"); +div.innerHTML="<table><tbody>"+html+"</tbody></table>"; +var tbody=div.firstChild.firstChild; +var parent=before.tagName=="TR"?before.parentNode:before; +var after=before.tagName=="TR"?before.nextSibling:null; +var firstRow=tbody.firstChild,lastRow; +while(tbody.firstChild){lastRow=tbody.firstChild; +if(after){parent.insertBefore(lastRow,after) +}else{parent.appendChild(lastRow) +}}var offset=0; +if(before.tagName=="TR"){var node=firstRow.parentNode.firstChild; +for(; +node&&node!=firstRow; +node=node.nextSibling){++offset +}}var domArgs=[firstRow,this.tag.context,offset]; +domArgs.push.apply(domArgs,this.tag.domArgs); +domArgs.push.apply(domArgs,outputs); +this.tag.renderDOM.apply(self?self:this.tag.subject,domArgs); +return[firstRow,lastRow] +},insertBefore:function(args,before,self){return this.insertNode(args,before.ownerDocument,before,false,self) +},insertAfter:function(args,after,self){return this.insertNode(args,after.ownerDocument,after,true,self) +},insertNode:function(args,doc,element,isAfter,self){if(!args){args={} +}this.tag.compile(); +var outputs=[]; +var html=this.renderHTML(args,outputs,self); +var doc=element.ownerDocument; +if(!womb||womb.ownerDocument!=doc){womb=doc.createElement("div") +}womb.innerHTML=html; +var root=womb.firstChild; +if(isAfter){while(womb.firstChild){if(element.nextSibling){element.parentNode.insertBefore(womb.firstChild,element.nextSibling) +}else{element.parentNode.appendChild(womb.firstChild) +}}}else{while(womb.lastChild){element.parentNode.insertBefore(womb.lastChild,element) +}}var domArgs=[root,this.tag.context,0]; +domArgs.push.apply(domArgs,this.tag.domArgs); +domArgs.push.apply(domArgs,outputs); +this.tag.renderDOM.apply(self?self:this.tag.subject,domArgs); +return root +},replace:function(args,parent,self){this.tag.compile(); +var outputs=[]; +var html=this.renderHTML(args,outputs,self); +var root; +if(parent.nodeType==1){parent.innerHTML=html; +root=parent.firstChild +}else{if(!parent||parent.nodeType!=9){parent=document +}if(!womb||womb.ownerDocument!=parent){womb=parent.createElement("div") +}womb.innerHTML=html; +root=womb.firstChild +}var domArgs=[root,this.tag.context,0]; +domArgs.push.apply(domArgs,this.tag.domArgs); +domArgs.push.apply(domArgs,outputs); +this.tag.renderDOM.apply(self?self:this.tag.subject,domArgs); +return root +},append:function(args,parent,self){this.tag.compile(); +var outputs=[]; +var html=this.renderHTML(args,outputs,self); +if(!womb||womb.ownerDocument!=parent.ownerDocument){womb=parent.ownerDocument.createElement("div") +}womb.innerHTML=html; +var root=womb.firstChild; +while(womb.firstChild){parent.appendChild(womb.firstChild) +}womb=null; +var domArgs=[root,this.tag.context,0]; +domArgs.push.apply(domArgs,this.tag.domArgs); +domArgs.push.apply(domArgs,outputs); +this.tag.renderDOM.apply(self?self:this.tag.subject,domArgs); +return root +}}; +function defineTags(){for(var i=0; +i<arguments.length; +++i){var tagName=arguments[i]; +var fn=new Function("var newTag = new arguments.callee.DomplateTag('"+tagName+"'); return newTag.merge(arguments);"); +fn.DomplateTag=DomplateTag; +var fnName=tagName.toUpperCase(); +FBL[fnName]=fn +}}defineTags("a","button","br","canvas","code","col","colgroup","div","fieldset","form","h1","h2","h3","hr","img","input","label","legend","li","ol","optgroup","option","p","pre","select","span","strong","table","tbody","td","textarea","tfoot","th","thead","tr","tt","ul","iframe") +})(); +var FirebugReps=FBL.ns(function(){with(FBL){var OBJECTBOX=this.OBJECTBOX=SPAN({"class":"objectBox objectBox-$className"}); +var OBJECTBLOCK=this.OBJECTBLOCK=DIV({"class":"objectBox objectBox-$className"}); +var OBJECTLINK=this.OBJECTLINK=isIE6?A({"class":"objectLink objectLink-$className a11yFocus",href:"javascript:void(0)",title:"$object|FBL.getElementXPath",_repObject:"$object"}):A({"class":"objectLink objectLink-$className a11yFocus",title:"$object|FBL.getElementXPath",_repObject:"$object"}); +this.Undefined=domplate(Firebug.Rep,{tag:OBJECTBOX("undefined"),className:"undefined",supportsObject:function(object,type){return type=="undefined" +}}); +this.Null=domplate(Firebug.Rep,{tag:OBJECTBOX("null"),className:"null",supportsObject:function(object,type){return object==null +}}); +this.Nada=domplate(Firebug.Rep,{tag:SPAN(""),className:"nada"}); +this.Number=domplate(Firebug.Rep,{tag:OBJECTBOX("$object"),className:"number",supportsObject:function(object,type){return type=="boolean"||type=="number" +}}); +this.String=domplate(Firebug.Rep,{tag:OBJECTBOX(""$object""),shortTag:OBJECTBOX(""$object|cropString""),className:"string",supportsObject:function(object,type){return type=="string" +}}); +this.Text=domplate(Firebug.Rep,{tag:OBJECTBOX("$object"),shortTag:OBJECTBOX("$object|cropString"),className:"text"}); +this.Caption=domplate(Firebug.Rep,{tag:SPAN({"class":"caption"},"$object")}); +this.Warning=domplate(Firebug.Rep,{tag:DIV({"class":"warning focusRow",role:"listitem"},"$object|STR")}); +this.Func=domplate(Firebug.Rep,{tag:OBJECTLINK("$object|summarizeFunction"),summarizeFunction:function(fn){var fnRegex=/function ([^(]+\([^)]*\)) \{/; +var fnText=safeToString(fn); +var m=fnRegex.exec(fnText); +return m?m[1]:"function()" +},copySource:function(fn){copyToClipboard(safeToString(fn)) +},monitor:function(fn,script,monitored){if(monitored){Firebug.Debugger.unmonitorScript(fn,script,"monitor") +}else{Firebug.Debugger.monitorScript(fn,script,"monitor") +}},className:"function",supportsObject:function(object,type){return isFunction(object) +},inspectObject:function(fn,context){var sourceLink=findSourceForFunction(fn,context); +if(sourceLink){Firebug.chrome.select(sourceLink) +}if(FBTrace.DBG_FUNCTION_NAME){FBTrace.sysout("reps.function.inspectObject selected sourceLink is ",sourceLink) +}},getTooltip:function(fn,context){var script=findScriptForFunctionInContext(context,fn); +if(script){return $STRF("Line",[normalizeURL(script.fileName),script.baseLineNumber]) +}else{if(fn.toString){return fn.toString() +}}},getTitle:function(fn,context){var name=fn.name?fn.name:"function"; +return name+"()" +},getContextMenuItems:function(fn,target,context,script){if(!script){script=findScriptForFunctionInContext(context,fn) +}if(!script){return +}var scriptInfo=getSourceFileAndLineByScript(context,script); +var monitored=scriptInfo?fbs.isMonitored(scriptInfo.sourceFile.href,scriptInfo.lineNo):false; +var name=script?getFunctionName(script,context):fn.name; +return[{label:"CopySource",command:bindFixed(this.copySource,this,fn)},"-",{label:$STRF("ShowCallsInConsole",[name]),nol10n:true,type:"checkbox",checked:monitored,command:bindFixed(this.monitor,this,fn,script,monitored)}] +}}); +this.Obj=domplate(Firebug.Rep,{tag:OBJECTLINK(SPAN({"class":"objectTitle"},"$object|getTitle "),SPAN({"class":"objectProps"},SPAN({"class":"objectLeftBrace",role:"presentation"},"{"),FOR("prop","$object|propIterator",SPAN({"class":"objectPropName",role:"presentation"},"$prop.name"),SPAN({"class":"objectEqual",role:"presentation"},"$prop.equal"),TAG("$prop.tag",{object:"$prop.object"}),SPAN({"class":"objectComma",role:"presentation"},"$prop.delim")),SPAN({"class":"objectRightBrace"},"}"))),propNumberTag:SPAN({"class":"objectProp-number"},"$object"),propStringTag:SPAN({"class":"objectProp-string"},""$object""),propObjectTag:SPAN({"class":"objectProp-object"},"$object"),propIterator:function(object){var maxLength=55; +if(!object){return[] +}var props=[]; +var length=0; +var numProperties=0; +var numPropertiesShown=0; +var maxLengthReached=false; +var lib=this; +var propRepsMap={"boolean":this.propNumberTag,number:this.propNumberTag,string:this.propStringTag,object:this.propObjectTag}; +try{var title=Firebug.Rep.getTitle(object); +length+=title.length; +for(var name in object){var value; +try{value=object[name] +}catch(exc){continue +}var type=typeof(value); +if(type=="boolean"||type=="number"||(type=="string"&&value)||(type=="object"&&value&&value.toString)){var tag=propRepsMap[type]; +var value=(type=="object")?Firebug.getRep(value).getTitle(value):value+""; +length+=name.length+value.length+4; +if(length<=maxLength){props.push({tag:tag,name:name,object:value,equal:"=",delim:", "}); +numPropertiesShown++ +}else{maxLengthReached=true +}}numProperties++; +if(maxLengthReached&&numProperties>numPropertiesShown){break +}}if(numProperties>numPropertiesShown){props.push({object:"...",tag:FirebugReps.Caption.tag,name:"",equal:"",delim:""}) +}else{if(props.length>0){props[props.length-1].delim="" +}}}catch(exc){}return props +},fb_1_6_propIterator:function(object,max){max=max||3; +if(!object){return[] +}var props=[]; +var len=0,count=0; +try{for(var name in object){var value; +try{value=object[name] +}catch(exc){continue +}var t=typeof(value); +if(t=="boolean"||t=="number"||(t=="string"&&value)||(t=="object"&&value&&value.toString)){var rep=Firebug.getRep(value); +var tag=rep.shortTag||rep.tag; +if(t=="object"){value=rep.getTitle(value); +tag=rep.titleTag +}count++; +if(count<=max){props.push({tag:tag,name:name,object:value,equal:"=",delim:", "}) +}else{break +}}}if(count>max){props[Math.max(1,max-1)]={object:"more...",tag:FirebugReps.Caption.tag,name:"",equal:"",delim:""} +}else{if(props.length>0){props[props.length-1].delim="" +}}}catch(exc){}return props +},className:"object",supportsObject:function(object,type){return true +}}); +this.Arr=domplate(Firebug.Rep,{tag:OBJECTBOX({_repObject:"$object"},SPAN({"class":"arrayLeftBracket",role:"presentation"},"["),FOR("item","$object|arrayIterator",TAG("$item.tag",{object:"$item.object"}),SPAN({"class":"arrayComma",role:"presentation"},"$item.delim")),SPAN({"class":"arrayRightBracket",role:"presentation"},"]")),shortTag:OBJECTBOX({_repObject:"$object"},SPAN({"class":"arrayLeftBracket",role:"presentation"},"["),FOR("item","$object|shortArrayIterator",TAG("$item.tag",{object:"$item.object"}),SPAN({"class":"arrayComma",role:"presentation"},"$item.delim")),SPAN({"class":"arrayRightBracket"},"]")),arrayIterator:function(array){var items=[]; +for(var i=0; +i<array.length; +++i){var value=array[i]; +var rep=Firebug.getRep(value); +var tag=rep.shortTag?rep.shortTag:rep.tag; +var delim=(i==array.length-1?"":", "); +items.push({object:value,tag:tag,delim:delim}) +}return items +},shortArrayIterator:function(array){var items=[]; +for(var i=0; +i<array.length&&i<3; +++i){var value=array[i]; +var rep=Firebug.getRep(value); +var tag=rep.shortTag?rep.shortTag:rep.tag; +var delim=(i==array.length-1?"":", "); +items.push({object:value,tag:tag,delim:delim}) +}if(array.length>3){items.push({object:(array.length-3)+" more...",tag:FirebugReps.Caption.tag,delim:""}) +}return items +},shortPropIterator:this.Obj.propIterator,getItemIndex:function(child){var arrayIndex=0; +for(child=child.previousSibling; +child; +child=child.previousSibling){if(child.repObject){++arrayIndex +}}return arrayIndex +},className:"array",supportsObject:function(object){return this.isArray(object) +},isArray:function(obj){try{if(!obj){return false +}else{if(isIE&&!isFunction(obj)&&typeof obj=="object"&&isFinite(obj.length)&&obj.nodeType!=8){return true +}else{if(isFinite(obj.length)&&isFunction(obj.splice)){return true +}else{if(isFinite(obj.length)&&isFunction(obj.callee)){return true +}else{if(instanceOf(obj,"HTMLCollection")){return true +}else{if(instanceOf(obj,"NodeList")){return true +}else{return false +}}}}}}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("isArray FAILS:",exc); +FBTrace.sysout("isArray Fails on obj",obj) +}}return false +},getTitle:function(object,context){return"["+object.length+"]" +}}); +this.Property=domplate(Firebug.Rep,{supportsObject:function(object){return object instanceof Property +},getRealObject:function(prop,context){return prop.object[prop.name] +},getTitle:function(prop,context){return prop.name +}}); +this.NetFile=domplate(this.Obj,{supportsObject:function(object){return object instanceof Firebug.NetFile +},browseObject:function(file,context){openNewTab(file.href); +return true +},getRealObject:function(file,context){return null +}}); +this.Except=domplate(Firebug.Rep,{tag:OBJECTBOX({_repObject:"$object"},"$object.message"),className:"exception",supportsObject:function(object){return object instanceof ErrorCopy +}}); +this.Element=domplate(Firebug.Rep,{tag:OBJECTLINK("<",SPAN({"class":"nodeTag"},"$object.nodeName|toLowerCase"),FOR("attr","$object|attrIterator"," $attr.nodeName="",SPAN({"class":"nodeValue"},"$attr.nodeValue"),"""),">"),shortTag:OBJECTLINK(SPAN({"class":"$object|getVisible"},SPAN({"class":"selectorTag"},"$object|getSelectorTag"),SPAN({"class":"selectorId"},"$object|getSelectorId"),SPAN({"class":"selectorClass"},"$object|getSelectorClass"),SPAN({"class":"selectorValue"},"$object|getValue"))),getVisible:function(elt){return isVisible(elt)?"":"selectorHidden" +},getSelectorTag:function(elt){return elt.nodeName.toLowerCase() +},getSelectorId:function(elt){return elt.id?"#"+elt.id:"" +},getSelectorClass:function(elt){return elt.className?"."+elt.className.split(" ")[0]:"" +},getValue:function(elt){return""; +var value; +if(elt instanceof HTMLImageElement){value=getFileName(elt.src) +}else{if(elt instanceof HTMLAnchorElement){value=getFileName(elt.href) +}else{if(elt instanceof HTMLInputElement){value=elt.value +}else{if(elt instanceof HTMLFormElement){value=getFileName(elt.action) +}else{if(elt instanceof HTMLScriptElement){value=getFileName(elt.src) +}}}}}return value?" "+cropString(value,20):"" +},attrIterator:function(elt){var attrs=[]; +var idAttr,classAttr; +if(elt.attributes){for(var i=0; +i<elt.attributes.length; +++i){var attr=elt.attributes[i]; +if(!attr.specified||attr.nodeName&&attr.nodeName.indexOf("firebug-")!=-1){continue +}else{if(attr.nodeName=="id"){idAttr=attr +}else{if(attr.nodeName=="class"){classAttr=attr +}else{if(attr.nodeName=="style"){attrs.push({nodeName:attr.nodeName,nodeValue:attr.nodeValue||elt.style.cssText.replace(/([^\s]+)\s*:/g,function(m,g){return g.toLowerCase()+":" +})}) +}else{attrs.push(attr) +}}}}}}if(classAttr){attrs.splice(0,0,classAttr) +}if(idAttr){attrs.splice(0,0,idAttr) +}return attrs +},shortAttrIterator:function(elt){var attrs=[]; +if(elt.attributes){for(var i=0; +i<elt.attributes.length; +++i){var attr=elt.attributes[i]; +if(attr.nodeName=="id"||attr.nodeName=="class"){attrs.push(attr) +}}}return attrs +},getHidden:function(elt){return isVisible(elt)?"":"nodeHidden" +},getXPath:function(elt){return getElementTreeXPath(elt) +},getNodeText:function(element){var text=element.textContent; +if(Firebug.showFullTextNodes){return text +}else{return cropString(text,50) +}},getNodeTextGroups:function(element){var text=element.textContent; +if(!Firebug.showFullTextNodes){text=cropString(text,50) +}var escapeGroups=[]; +if(Firebug.showTextNodesWithWhitespace){escapeGroups.push({group:"whitespace","class":"nodeWhiteSpace",extra:{"\t":"_Tab","\n":"_Para"," ":"_Space"}}) +}if(Firebug.showTextNodesWithEntities){escapeGroups.push({group:"text","class":"nodeTextEntity",extra:{}}) +}if(escapeGroups.length){return escapeGroupsForEntities(text,escapeGroups) +}else{return[{str:text,"class":"",extra:""}] +}},copyHTML:function(elt){var html=getElementXML(elt); +copyToClipboard(html) +},copyInnerHTML:function(elt){copyToClipboard(elt.innerHTML) +},copyXPath:function(elt){var xpath=getElementXPath(elt); +copyToClipboard(xpath) +},persistor:function(context,xpath){var elts=xpath?getElementsByXPath(context.window.document,xpath):null; +return elts&&elts.length?elts[0]:null +},className:"element",supportsObject:function(object){return instanceOf(object,"Element") +},browseObject:function(elt,context){var tag=elt.nodeName.toLowerCase(); +if(tag=="script"){openNewTab(elt.src) +}else{if(tag=="link"){openNewTab(elt.href) +}else{if(tag=="a"){openNewTab(elt.href) +}else{if(tag=="img"){openNewTab(elt.src) +}}}}return true +},persistObject:function(elt,context){var xpath=getElementXPath(elt); +return bind(this.persistor,top,xpath) +},getTitle:function(element,context){return getElementCSSSelector(element) +},getTooltip:function(elt){return this.getXPath(elt) +},getContextMenuItems:function(elt,target,context){var monitored=areEventsMonitored(elt,null,context); +return[{label:"CopyHTML",command:bindFixed(this.copyHTML,this,elt)},{label:"CopyInnerHTML",command:bindFixed(this.copyInnerHTML,this,elt)},{label:"CopyXPath",command:bindFixed(this.copyXPath,this,elt)},"-",{label:"ShowEventsInConsole",type:"checkbox",checked:monitored,command:bindFixed(toggleMonitorEvents,FBL,elt,null,monitored,context)},"-",{label:"ScrollIntoView",command:bindFixed(elt.scrollIntoView,elt)}] +}}); +this.TextNode=domplate(Firebug.Rep,{tag:OBJECTLINK("<",SPAN({"class":"nodeTag"},"TextNode")," textContent="",SPAN({"class":"nodeValue"},"$object.textContent|cropString"),""",">"),className:"textNode",supportsObject:function(object){return object instanceof Text +}}); +this.Document=domplate(Firebug.Rep,{tag:OBJECTLINK("Document ",SPAN({"class":"objectPropValue"},"$object|getLocation")),getLocation:function(doc){return doc.location?getFileName(doc.location.href):"" +},className:"object",supportsObject:function(object){return instanceOf(object,"Document") +},browseObject:function(doc,context){openNewTab(doc.location.href); +return true +},persistObject:function(doc,context){return this.persistor +},persistor:function(context){return context.window.document +},getTitle:function(win,context){return"document" +},getTooltip:function(doc){return doc.location.href +}}); +this.StyleSheet=domplate(Firebug.Rep,{tag:OBJECTLINK("StyleSheet ",SPAN({"class":"objectPropValue"},"$object|getLocation")),getLocation:function(styleSheet){return getFileName(styleSheet.href) +},copyURL:function(styleSheet){copyToClipboard(styleSheet.href) +},openInTab:function(styleSheet){openNewTab(styleSheet.href) +},className:"object",supportsObject:function(object){return instanceOf(object,"CSSStyleSheet") +},browseObject:function(styleSheet,context){openNewTab(styleSheet.href); +return true +},persistObject:function(styleSheet,context){return bind(this.persistor,top,styleSheet.href) +},getTooltip:function(styleSheet){return styleSheet.href +},getContextMenuItems:function(styleSheet,target,context){return[{label:"CopyLocation",command:bindFixed(this.copyURL,this,styleSheet)},"-",{label:"OpenInTab",command:bindFixed(this.openInTab,this,styleSheet)}] +},persistor:function(context,href){return getStyleSheetByHref(href,context) +}}); +this.Window=domplate(Firebug.Rep,{tag:OBJECTLINK("Window ",SPAN({"class":"objectPropValue"},"$object|getLocation")),getLocation:function(win){try{return(win&&win.location&&!win.closed)?getFileName(win.location.href):"" +}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("reps.Window window closed?") +}}},className:"object",supportsObject:function(object){return instanceOf(object,"Window") +},browseObject:function(win,context){openNewTab(win.location.href); +return true +},persistObject:function(win,context){return this.persistor +},persistor:function(context){return context.window +},getTitle:function(win,context){return"window" +},getTooltip:function(win){if(win&&!win.closed){return win.location.href +}}}); +this.Event=domplate(Firebug.Rep,{tag:TAG("$copyEventTag",{object:"$object|copyEvent"}),copyEventTag:OBJECTLINK("$object|summarizeEvent"),summarizeEvent:function(event){var info=[event.type," "]; +var eventFamily=getEventFamily(event.type); +if(eventFamily=="mouse"){info.push("clientX=",event.clientX,", clientY=",event.clientY) +}else{if(eventFamily=="key"){info.push("charCode=",event.charCode,", keyCode=",event.keyCode) +}}return info.join("") +},copyEvent:function(event){return new EventCopy(event) +},className:"object",supportsObject:function(object){return instanceOf(object,"Event")||instanceOf(object,"EventCopy") +},getTitle:function(event,context){return"Event "+event.type +}}); +this.SourceLink=domplate(Firebug.Rep,{tag:OBJECTLINK({$collapsed:"$object|hideSourceLink"},"$object|getSourceLinkTitle"),hideSourceLink:function(sourceLink){return sourceLink?sourceLink.href.indexOf("XPCSafeJSObjectWrapper")!=-1:true +},getSourceLinkTitle:function(sourceLink){if(!sourceLink){return"" +}try{var fileName=getFileName(sourceLink.href); +fileName=decodeURIComponent(fileName); +fileName=cropString(fileName,17) +}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("reps.getSourceLinkTitle decodeURIComponent fails for '"+fileName+"': "+exc,exc) +}}return typeof sourceLink.line=="number"?fileName+" (line "+sourceLink.line+")":fileName +},copyLink:function(sourceLink){copyToClipboard(sourceLink.href) +},openInTab:function(sourceLink){openNewTab(sourceLink.href) +},className:"sourceLink",supportsObject:function(object){return object instanceof SourceLink +},getTooltip:function(sourceLink){return decodeURI(sourceLink.href) +},inspectObject:function(sourceLink,context){if(sourceLink.type=="js"){var scriptFile=getSourceFileByHref(sourceLink.href,context); +if(scriptFile){return Firebug.chrome.select(sourceLink) +}}else{if(sourceLink.type=="css"){if(sourceLink.object){Firebug.chrome.select(sourceLink.object); +return +}var stylesheet=getStyleSheetByHref(sourceLink.href,context); +if(stylesheet){var ownerNode=stylesheet.ownerNode; +if(ownerNode){Firebug.chrome.select(sourceLink,"html"); +return +}var panel=context.getPanel("stylesheet"); +if(panel&&panel.getRuleByLine(stylesheet,sourceLink.line)){return Firebug.chrome.select(sourceLink) +}}}}viewSource(sourceLink.href,sourceLink.line) +},browseObject:function(sourceLink,context){openNewTab(sourceLink.href); +return true +},getContextMenuItems:function(sourceLink,target,context){return[{label:"CopyLocation",command:bindFixed(this.copyLink,this,sourceLink)},"-",{label:"OpenInTab",command:bindFixed(this.openInTab,this,sourceLink)}] +}}); +this.SourceFile=domplate(this.SourceLink,{tag:OBJECTLINK({$collapsed:"$object|hideSourceLink"},"$object|getSourceLinkTitle"),persistor:function(context,href){return getSourceFileByHref(href,context) +},className:"sourceFile",supportsObject:function(object){return object instanceof SourceFile +},persistObject:function(sourceFile){return bind(this.persistor,top,sourceFile.href) +},browseObject:function(sourceLink,context){},getTooltip:function(sourceFile){return sourceFile.href +}}); +this.StackFrame=domplate(Firebug.Rep,{tag:OBJECTBLOCK(A({"class":"objectLink objectLink-function focusRow a11yFocus",_repObject:"$object.fn"},"$object|getCallName")," ( ",FOR("arg","$object|argIterator",TAG("$arg.tag",{object:"$arg.value"}),SPAN({"class":"arrayComma"},"$arg.delim"))," )",SPAN({"class":"objectLink-sourceLink objectLink"},"$object|getSourceLinkTitle")),getCallName:function(frame){return frame.name||"anonymous" +},getSourceLinkTitle:function(frame){var fileName=cropString(getFileName(frame.href),20); +return fileName+(frame.lineNo?" (line "+frame.lineNo+")":""); +var fileName=cropString(getFileName(frame.href),17); +return $STRF("Line",[fileName,frame.lineNo]) +},argIterator:function(frame){if(!frame.args){return[] +}var items=[]; +for(var i=0; +i<frame.args.length; +++i){var arg=frame.args[i]; +if(!arg){break +}var rep=Firebug.getRep(arg.value); +var tag=rep.shortTag?rep.shortTag:rep.tag; +var delim=(i==frame.args.length-1?"":", "); +items.push({name:arg.name,value:arg.value,tag:tag,delim:delim}) +}return items +},className:"stackFrame",supportsObject:function(object){return object instanceof StackFrame +},inspectObject:function(stackFrame,context){var sourceLink=new SourceLink(stackFrame.href,stackFrame.lineNo,"js"); +Firebug.chrome.select(sourceLink) +},getTooltip:function(stackFrame,context){return $STRF("Line",[stackFrame.href,stackFrame.lineNo]) +}}); +this.StackTrace=domplate(Firebug.Rep,{tag:FOR("frame","$object.frames focusRow",TAG(this.StackFrame.tag,{object:"$frame"})),className:"stackTrace",supportsObject:function(object){return object instanceof StackTrace +}}); +this.jsdStackFrame=domplate(Firebug.Rep,{inspectable:false,supportsObject:function(object){return(object instanceof jsdIStackFrame)&&(object.isValid) +},getTitle:function(frame,context){if(!frame.isValid){return"(invalid frame)" +}return getFunctionName(frame.script,context) +},getTooltip:function(frame,context){if(!frame.isValid){return"(invalid frame)" +}var sourceInfo=FBL.getSourceFileAndLineByScript(context,frame.script,frame); +if(sourceInfo){return $STRF("Line",[sourceInfo.sourceFile.href,sourceInfo.lineNo]) +}else{return $STRF("Line",[frame.script.fileName,frame.line]) +}},getContextMenuItems:function(frame,target,context){var fn=frame.script.functionObject.getWrappedValue(); +return FirebugReps.Func.getContextMenuItems(fn,target,context,frame.script) +}}); +this.ErrorMessage=domplate(Firebug.Rep,{tag:OBJECTBOX({$hasTwisty:"$object|hasStackTrace",$hasBreakSwitch:"$object|hasBreakSwitch",$breakForError:"$object|hasErrorBreak",_repObject:"$object",_stackTrace:"$object|getLastErrorStackTrace",onclick:"$onToggleError"},DIV({"class":"errorTitle a11yFocus",role:"checkbox","aria-checked":"false"},"$object.message|getMessage"),DIV({"class":"errorTrace"}),DIV({"class":"errorSourceBox errorSource-$object|getSourceType"},IMG({"class":"errorBreak a11yFocus",src:"blank.gif",role:"checkbox","aria-checked":"false",title:"Break on this error"}),A({"class":"errorSource a11yFocus"},"$object|getLine")),TAG(this.SourceLink.tag,{object:"$object|getSourceLink"})),getLastErrorStackTrace:function(error){return error.trace +},hasStackTrace:function(error){var url=error.href.toString(); +var fromCommandLine=(url.indexOf("XPCSafeJSObjectWrapper")!=-1); +return !fromCommandLine&&error.trace +},hasBreakSwitch:function(error){return error.href&&error.lineNo>0 +},hasErrorBreak:function(error){return fbs.hasErrorBreakpoint(error.href,error.lineNo) +},getMessage:function(message){var re=/\[Exception... "(.*?)" nsresult:/; +var m=re.exec(message); +return m?m[1]:message +},getLine:function(error){if(error.category=="js"){if(error.source){return cropString(error.source,80) +}else{if(error.href&&error.href.indexOf("XPCSafeJSObjectWrapper")==-1){return cropString(error.getSourceLine(),80) +}}}},getSourceLink:function(error){var ext=error.category=="css"?"css":"js"; +return error.lineNo?new SourceLink(error.href,error.lineNo,ext):null +},getSourceType:function(error){if(error.source){return"syntax" +}else{if(error.lineNo==1&&getFileExtension(error.href)!="js"){return"none" +}else{if(error.category=="css"){return"none" +}else{if(!error.href||!error.lineNo){return"none" +}else{return"exec" +}}}}},onToggleError:function(event){var target=event.currentTarget; +if(hasClass(event.target,"errorBreak")){this.breakOnThisError(target.repObject) +}else{if(hasClass(event.target,"errorSource")){var panel=Firebug.getElementPanel(event.target); +this.inspectObject(target.repObject,panel.context) +}else{if(hasClass(event.target,"errorTitle")){var traceBox=target.childNodes[1]; +toggleClass(target,"opened"); +event.target.setAttribute("aria-checked",hasClass(target,"opened")); +if(hasClass(target,"opened")){if(target.stackTrace){var node=FirebugReps.StackTrace.tag.append({object:target.stackTrace},traceBox) +}if(Firebug.A11yModel.enabled){var panel=Firebug.getElementPanel(event.target); +dispatch([Firebug.A11yModel],"onLogRowContentCreated",[panel,traceBox]) +}}else{clearNode(traceBox) +}}}}},copyError:function(error){var message=[this.getMessage(error.message),error.href,"Line "+error.lineNo]; +copyToClipboard(message.join("\n")) +},breakOnThisError:function(error){if(this.hasErrorBreak(error)){Firebug.Debugger.clearErrorBreakpoint(error.href,error.lineNo) +}else{Firebug.Debugger.setErrorBreakpoint(error.href,error.lineNo) +}},className:"errorMessage",inspectable:false,supportsObject:function(object){return object instanceof ErrorMessage +},inspectObject:function(error,context){var sourceLink=this.getSourceLink(error); +FirebugReps.SourceLink.inspectObject(sourceLink,context) +},getContextMenuItems:function(error,target,context){var breakOnThisError=this.hasErrorBreak(error); +var items=[{label:"CopyError",command:bindFixed(this.copyError,this,error)}]; +if(error.category=="css"){items.push("-",{label:"BreakOnThisError",type:"checkbox",checked:breakOnThisError,command:bindFixed(this.breakOnThisError,this,error)},optionMenu("BreakOnAllErrors","breakOnErrors")) +}return items +}}); +this.Assert=domplate(Firebug.Rep,{tag:DIV(DIV({"class":"errorTitle"}),DIV({"class":"assertDescription"})),className:"assert",inspectObject:function(error,context){var sourceLink=this.getSourceLink(error); +Firebug.chrome.select(sourceLink) +},getContextMenuItems:function(error,target,context){var breakOnThisError=this.hasErrorBreak(error); +return[{label:"CopyError",command:bindFixed(this.copyError,this,error)},"-",{label:"BreakOnThisError",type:"checkbox",checked:breakOnThisError,command:bindFixed(this.breakOnThisError,this,error)},{label:"BreakOnAllErrors",type:"checkbox",checked:Firebug.breakOnErrors,command:bindFixed(this.breakOnAllErrors,this,error)}] +}}); +this.SourceText=domplate(Firebug.Rep,{tag:DIV(FOR("line","$object|lineIterator",DIV({"class":"sourceRow",role:"presentation"},SPAN({"class":"sourceLine",role:"presentation"},"$line.lineNo"),SPAN({"class":"sourceRowText",role:"presentation"},"$line.text")))),lineIterator:function(sourceText){var maxLineNoChars=(sourceText.lines.length+"").length; +var list=[]; +for(var i=0; +i<sourceText.lines.length; +++i){var lineNo=(i+1)+""; +while(lineNo.length<maxLineNoChars){lineNo=" "+lineNo +}list.push({lineNo:lineNo,text:sourceText.lines[i]}) +}return list +},getHTML:function(sourceText){return getSourceLineRange(sourceText,1,sourceText.lines.length) +}}); +this.nsIDOMHistory=domplate(Firebug.Rep,{tag:OBJECTBOX({onclick:"$showHistory"},OBJECTLINK("$object|summarizeHistory")),className:"nsIDOMHistory",summarizeHistory:function(history){try{var items=history.length; +return items+" history entries" +}catch(exc){return"object does not support history (nsIDOMHistory)" +}},showHistory:function(history){try{var items=history.length; +Firebug.chrome.select(history) +}catch(exc){}},supportsObject:function(object,type){return(object instanceof Ci.nsIDOMHistory) +}}); +this.ApplicationCache=domplate(Firebug.Rep,{tag:OBJECTBOX({onclick:"$showApplicationCache"},OBJECTLINK("$object|summarizeCache")),summarizeCache:function(applicationCache){try{return applicationCache.length+" items in offline cache" +}catch(exc){return"https://bugzilla.mozilla.org/show_bug.cgi?id=422264" +}},showApplicationCache:function(event){openNewTab("https://bugzilla.mozilla.org/show_bug.cgi?id=422264") +},className:"applicationCache",supportsObject:function(object,type){if(Ci.nsIDOMOfflineResourceList){return(object instanceof Ci.nsIDOMOfflineResourceList) +}}}); +this.Storage=domplate(Firebug.Rep,{tag:OBJECTBOX({onclick:"$show"},OBJECTLINK("$object|summarize")),summarize:function(storage){return storage.length+" items in Storage" +},show:function(storage){openNewTab("http://dev.w3.org/html5/webstorage/#storage-0") +},className:"Storage",supportsObject:function(object,type){return(object instanceof Storage) +}}); +Firebug.registerRep(this.Undefined,this.Null,this.Number,this.String,this.Window,this.Element,this.Document,this.StyleSheet,this.Event,this.Property,this.Except,this.Arr); +Firebug.setDefaultReps(this.Func,this.Obj) +}}); +FBL.ns(function(){with(FBL){var saveTimeout=400; +var pageAmount=10; +var currentTarget=null; +var currentGroup=null; +var currentPanel=null; +var currentEditor=null; +var defaultEditor=null; +var originalClassName=null; +var originalValue=null; +var defaultValue=null; +var previousValue=null; +var invalidEditor=false; +var ignoreNextInput=false; +Firebug.Editor=extend(Firebug.Module,{supportsStopEvent:true,dispatchName:"editor",tabCharacter:" ",startEditing:function(target,value,editor){this.stopEditing(); +if(hasClass(target,"insertBefore")||hasClass(target,"insertAfter")){return +}var panel=Firebug.getElementPanel(target); +if(!panel.editable){return +}if(FBTrace.DBG_EDITOR){FBTrace.sysout("editor.startEditing "+value,target) +}defaultValue=target.getAttribute("defaultValue"); +if(value==undefined){var textContent=isIE?"innerText":"textContent"; +value=target[textContent]; +if(value==defaultValue){value="" +}}originalValue=previousValue=value; +invalidEditor=false; +currentTarget=target; +currentPanel=panel; +currentGroup=getAncestorByClass(target,"editGroup"); +currentPanel.editing=true; +var panelEditor=currentPanel.getEditor(target,value); +currentEditor=editor?editor:panelEditor; +if(!currentEditor){currentEditor=getDefaultEditor(currentPanel) +}var inlineParent=getInlineParent(target); +var targetSize=getOffsetSize(inlineParent); +setClass(panel.panelNode,"editing"); +setClass(target,"editing"); +if(currentGroup){setClass(currentGroup,"editing") +}currentEditor.show(target,currentPanel,value,targetSize); +currentEditor.beginEditing(target,value); +if(FBTrace.DBG_EDITOR){FBTrace.sysout("Editor start panel "+currentPanel.name) +}this.attachListeners(currentEditor,panel.context) +},stopEditing:function(cancel){if(!currentTarget){return +}if(FBTrace.DBG_EDITOR){FBTrace.sysout("editor.stopEditing cancel:"+cancel+" saveTimeout: "+this.saveTimeout) +}clearTimeout(this.saveTimeout); +delete this.saveTimeout; +this.detachListeners(currentEditor,currentPanel.context); +removeClass(currentPanel.panelNode,"editing"); +removeClass(currentTarget,"editing"); +if(currentGroup){removeClass(currentGroup,"editing") +}var value=currentEditor.getValue(); +if(value==defaultValue){value="" +}var removeGroup=currentEditor.endEditing(currentTarget,value,cancel); +try{if(cancel){if(value!=originalValue){this.saveEditAndNotifyListeners(currentTarget,originalValue,previousValue) +}if(removeGroup&&!originalValue&¤tGroup){currentGroup.parentNode.removeChild(currentGroup) +}}else{if(!value){this.saveEditAndNotifyListeners(currentTarget,null,previousValue); +if(removeGroup&¤tGroup){currentGroup.parentNode.removeChild(currentGroup) +}}else{this.save(value) +}}}catch(exc){}currentEditor.hide(); +currentPanel.editing=false; +currentTarget=null; +currentGroup=null; +currentPanel=null; +currentEditor=null; +originalValue=null; +invalidEditor=false; +return value +},cancelEditing:function(){return this.stopEditing(true) +},update:function(saveNow){if(this.saveTimeout){clearTimeout(this.saveTimeout) +}invalidEditor=true; +currentEditor.layout(); +if(saveNow){this.save() +}else{var context=currentPanel.context; +this.saveTimeout=context.setTimeout(bindFixed(this.save,this),saveTimeout); +if(FBTrace.DBG_EDITOR){FBTrace.sysout("editor.update saveTimeout: "+this.saveTimeout) +}}},save:function(value){if(!invalidEditor){return +}if(value==undefined){value=currentEditor.getValue() +}if(FBTrace.DBG_EDITOR){FBTrace.sysout("editor.save saveTimeout: "+this.saveTimeout+" currentPanel: "+(currentPanel?currentPanel.name:"null")) +}try{this.saveEditAndNotifyListeners(currentTarget,value,previousValue); +previousValue=value; +invalidEditor=false +}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("editor.save FAILS "+exc,exc) +}}},saveEditAndNotifyListeners:function(currentTarget,value,previousValue){currentEditor.saveEdit(currentTarget,value,previousValue) +},setEditTarget:function(element){if(!element){dispatch([Firebug.A11yModel],"onInlineEditorClose",[currentPanel,currentTarget,true]); +this.stopEditing() +}else{if(hasClass(element,"insertBefore")){this.insertRow(element,"before") +}else{if(hasClass(element,"insertAfter")){this.insertRow(element,"after") +}else{this.startEditing(element) +}}}},tabNextEditor:function(){if(!currentTarget){return +}var value=currentEditor.getValue(); +var nextEditable=currentTarget; +do{nextEditable=!value&¤tGroup?getNextOutsider(nextEditable,currentGroup):getNextByClass(nextEditable,"editable") +}while(nextEditable&&!nextEditable.offsetHeight); +this.setEditTarget(nextEditable) +},tabPreviousEditor:function(){if(!currentTarget){return +}var value=currentEditor.getValue(); +var prevEditable=currentTarget; +do{prevEditable=!value&¤tGroup?getPreviousOutsider(prevEditable,currentGroup):getPreviousByClass(prevEditable,"editable") +}while(prevEditable&&!prevEditable.offsetHeight); +this.setEditTarget(prevEditable) +},insertRow:function(relative,insertWhere){var group=relative||getAncestorByClass(currentTarget,"editGroup")||currentTarget; +var value=this.stopEditing(); +currentPanel=Firebug.getElementPanel(group); +currentEditor=currentPanel.getEditor(group,value); +if(!currentEditor){currentEditor=getDefaultEditor(currentPanel) +}currentGroup=currentEditor.insertNewRow(group,insertWhere); +if(!currentGroup){return +}var editable=hasClass(currentGroup,"editable")?currentGroup:getNextByClass(currentGroup,"editable"); +if(editable){this.setEditTarget(editable) +}},insertRowForObject:function(relative){var container=getAncestorByClass(relative,"insertInto"); +if(container){relative=getChildByClass(container,"insertBefore"); +if(relative){this.insertRow(relative,"before") +}}},attachListeners:function(editor,context){var win=isIE?currentTarget.ownerDocument.parentWindow:currentTarget.ownerDocument.defaultView; +addEvent(win,"resize",this.onResize); +addEvent(win,"blur",this.onBlur); +var chrome=Firebug.chrome; +this.listeners=[chrome.keyCodeListen("ESCAPE",null,bind(this.cancelEditing,this))]; +if(editor.arrowCompletion){this.listeners.push(chrome.keyCodeListen("UP",null,bindFixed(editor.completeValue,editor,-1)),chrome.keyCodeListen("DOWN",null,bindFixed(editor.completeValue,editor,1)),chrome.keyCodeListen("PAGE_UP",null,bindFixed(editor.completeValue,editor,-pageAmount)),chrome.keyCodeListen("PAGE_DOWN",null,bindFixed(editor.completeValue,editor,pageAmount))) +}if(currentEditor.tabNavigation){this.listeners.push(chrome.keyCodeListen("RETURN",null,bind(this.tabNextEditor,this)),chrome.keyCodeListen("RETURN",isControl,bind(this.insertRow,this,null,"after")),chrome.keyCodeListen("TAB",null,bind(this.tabNextEditor,this)),chrome.keyCodeListen("TAB",isShift,bind(this.tabPreviousEditor,this))) +}else{if(currentEditor.multiLine){this.listeners.push(chrome.keyCodeListen("TAB",null,insertTab)) +}else{this.listeners.push(chrome.keyCodeListen("RETURN",null,bindFixed(this.stopEditing,this))); +if(currentEditor.tabCompletion){this.listeners.push(chrome.keyCodeListen("TAB",null,bind(editor.completeValue,editor,1)),chrome.keyCodeListen("TAB",isShift,bind(editor.completeValue,editor,-1))) +}}}},detachListeners:function(editor,context){if(!this.listeners){return +}var win=isIE?currentTarget.ownerDocument.parentWindow:currentTarget.ownerDocument.defaultView; +removeEvent(win,"resize",this.onResize); +removeEvent(win,"blur",this.onBlur); +var chrome=Firebug.chrome; +if(chrome){for(var i=0; +i<this.listeners.length; +++i){chrome.keyIgnore(this.listeners[i]) +}}delete this.listeners +},onResize:function(event){currentEditor.layout(true) +},onBlur:function(event){if(currentEditor.enterOnBlur&&isAncestor(event.target,currentEditor.box)){this.stopEditing() +}},initialize:function(){Firebug.Module.initialize.apply(this,arguments); +this.onResize=bindFixed(this.onResize,this); +this.onBlur=bind(this.onBlur,this) +},disable:function(){this.stopEditing() +},showContext:function(browser,context){this.stopEditing() +},showPanel:function(browser,panel){this.stopEditing() +}}); +Firebug.BaseEditor=extend(Firebug.MeasureBox,{getValue:function(){},setValue:function(value){},show:function(target,panel,value,textSize,targetSize){},hide:function(){},layout:function(forceAll){},getContextMenuItems:function(target){var items=[]; +items.push({label:"Cut",commandID:"cmd_cut"}); +items.push({label:"Copy",commandID:"cmd_copy"}); +items.push({label:"Paste",commandID:"cmd_paste"}); +return items +},beginEditing:function(target,value){},saveEdit:function(target,value,previousValue){},endEditing:function(target,value,cancel){return true +},insertNewRow:function(target,insertWhere){}}); +var inlineEditorAttributes={"class":"textEditorInner",type:"text",spellcheck:"false",onkeypress:"$onKeyPress",onoverflow:"$onOverflow",oncontextmenu:"$onContextMenu"}; +if(isIE){inlineEditorAttributes.onpropertychange="$onInput"; +inlineEditorAttributes.onkeydown="$onKeyDown" +}else{inlineEditorAttributes.oninput="$onInput" +}Firebug.InlineEditor=function(doc){this.initializeInline(doc) +}; +Firebug.InlineEditor.prototype=domplate(Firebug.BaseEditor,{enterOnBlur:true,outerMargin:8,shadowExpand:7,tag:DIV({"class":"inlineEditor"},DIV({"class":"textEditorTop1"},DIV({"class":"textEditorTop2"})),DIV({"class":"textEditorInner1"},DIV({"class":"textEditorInner2"},INPUT(inlineEditorAttributes))),DIV({"class":"textEditorBottom1"},DIV({"class":"textEditorBottom2"}))),inputTag:INPUT({"class":"textEditorInner",type:"text",onkeypress:"$onKeyPress",onoverflow:"$onOverflow"}),expanderTag:IMG({"class":"inlineExpander",src:"blank.gif"}),initialize:function(){this.fixedWidth=false; +this.completeAsYouType=true; +this.tabNavigation=true; +this.multiLine=false; +this.tabCompletion=false; +this.arrowCompletion=true; +this.noWrap=true; +this.numeric=false +},destroy:function(){this.destroyInput() +},initializeInline:function(doc){if(FBTrace.DBG_EDITOR){FBTrace.sysout("Firebug.InlineEditor initializeInline()") +}this.box=this.tag.append({},doc.body,this); +this.input=this.box.getElementsByTagName("input")[0]; +if(isIElt8){this.input.style.top="-8px" +}this.expander=this.expanderTag.replace({},doc,this); +this.initialize() +},destroyInput:function(){},getValue:function(){return this.input.value +},setValue:function(value){return this.input.value=stripNewLines(value) +},show:function(target,panel,value,targetSize){this.target=target; +this.panel=panel; +this.targetSize=targetSize; +var innerHTML=target.innerHTML; +var isEmptyElement=!innerHTML; +if(isEmptyElement){target.innerHTML="." +}this.targetOffset={x:target.offsetLeft,y:target.offsetTop}; +if(isEmptyElement){target.innerHTML=innerHTML +}this.originalClassName=this.box.className; +var classNames=target.className.split(" "); +for(var i=0; +i<classNames.length; +++i){setClass(this.box,"editor-"+classNames[i]) +}copyTextStyles(target,this.box); +this.setValue(value); +if(this.fixedWidth){this.updateLayout(true) +}else{this.startMeasuring(target); +this.textSize=this.measureInputText(value); +var parent=this.input.parentNode; +if(hasClass(parent,"textEditorInner2")){var yDiff=this.textSize.height-this.shadowExpand; +if(isIE6){yDiff-=2 +}parent.style.height=yDiff+"px"; +parent.parentNode.style.height=yDiff+"px" +}this.updateLayout(true) +}this.getAutoCompleter().reset(); +if(isIElt8){panel.panelNode.appendChild(this.box) +}else{target.offsetParent.appendChild(this.box) +}if(isIE){this.input.style.fontFamily="Monospace"; +this.input.style.fontSize="11px" +}if(!this.fixedWidth){copyBoxStyles(target,this.expander); +target.parentNode.replaceChild(this.expander,target); +collapse(target,true); +this.expander.parentNode.insertBefore(target,this.expander) +}this.box.style.display="block"; +var self=this; +setTimeout(function(){self.input.focus(); +self.input.select() +},0) +},hide:function(){this.box.className=this.originalClassName; +if(!this.fixedWidth){this.stopMeasuring(); +collapse(this.target,false); +if(this.expander.parentNode){this.expander.parentNode.removeChild(this.expander) +}}if(this.box.parentNode){this.input.blur(); +this.box.parentNode.removeChild(this.box) +}delete this.target; +delete this.panel +},layout:function(forceAll){if(!this.fixedWidth){this.textSize=this.measureInputText(this.input.value) +}if(forceAll){this.targetOffset=getClientOffset(this.expander) +}this.updateLayout(false,forceAll) +},beginEditing:function(target,value){},saveEdit:function(target,value,previousValue){},endEditing:function(target,value,cancel){return true +},insertNewRow:function(target,insertWhere){},advanceToNext:function(target,charCode){return false +},getAutoCompleteRange:function(value,offset){},getAutoCompleteList:function(preExpr,expr,postExpr){},getAutoCompleter:function(){if(!this.autoCompleter){this.autoCompleter=new Firebug.AutoCompleter(null,bind(this.getAutoCompleteRange,this),bind(this.getAutoCompleteList,this),true,false) +}return this.autoCompleter +},completeValue:function(amt){var selectRangeCallback=this.getAutoCompleter().complete(currentPanel.context,this.input,true,amt<0); +if(selectRangeCallback){Firebug.Editor.update(true); +if(isSafari){setTimeout(selectRangeCallback,0) +}else{selectRangeCallback() +}}else{this.incrementValue(amt) +}},incrementValue:function(amt){var value=this.input.value; +if(isIE){var start=getInputSelectionStart(this.input),end=start +}else{var start=this.input.selectionStart,end=this.input.selectionEnd +}var range=this.getAutoCompleteRange(value,start); +if(!range||range.type!="int"){range={start:0,end:value.length-1} +}var expr=value.substr(range.start,range.end-range.start+1); +preExpr=value.substr(0,range.start); +postExpr=value.substr(range.end+1); +var intValue=parseInt(expr); +if(!!intValue||intValue==0){var m=/\d+/.exec(expr); +var digitPost=expr.substr(m.index+m[0].length); +var completion=intValue-amt; +this.input.value=preExpr+completion+digitPost+postExpr; +setSelectionRange(this.input,start,end); +Firebug.Editor.update(true); +return true +}else{return false +}},onKeyPress:function(event){if(event.keyCode==27&&!this.completeAsYouType){var reverted=this.getAutoCompleter().revert(this.input); +if(reverted){cancelEvent(event) +}}else{if(event.charCode&&this.advanceToNext(this.target,event.charCode)){Firebug.Editor.tabNextEditor(); +cancelEvent(event) +}else{if(this.numeric&&event.charCode&&(event.charCode<48||event.charCode>57)&&event.charCode!=45&&event.charCode!=46){FBL.cancelEvent(event) +}else{this.ignoreNextInput=event.keyCode==8 +}}}},onOverflow:function(){this.updateLayout(false,false,3) +},onKeyDown:function(event){if(event.keyCode>46||event.keyCode==32||event.keyCode==8){this.keyDownPressed=true +}},onInput:function(event){if(isIE){if(event.propertyName!="value"||!isVisible(this.input)||!this.keyDownPressed){return +}this.keyDownPressed=false +}var selectRangeCallback; +if(this.ignoreNextInput){this.ignoreNextInput=false; +this.getAutoCompleter().reset() +}else{if(this.completeAsYouType){selectRangeCallback=this.getAutoCompleter().complete(currentPanel.context,this.input,false) +}else{this.getAutoCompleter().reset() +}}Firebug.Editor.update(); +if(selectRangeCallback){if(isSafari){setTimeout(selectRangeCallback,0) +}else{selectRangeCallback() +}}},onContextMenu:function(event){cancelEvent(event); +var popup=$("fbInlineEditorPopup"); +FBL.eraseNode(popup); +var target=event.target||event.srcElement; +var menu=this.getContextMenuItems(target); +if(menu){for(var i=0; +i<menu.length; +++i){FBL.createMenuItem(popup,menu[i]) +}}if(!popup.firstChild){return false +}popup.openPopupAtScreen(event.screenX,event.screenY,true); +return true +},updateLayout:function(initial,forceAll,extraWidth){if(this.fixedWidth){this.box.style.left=(this.targetOffset.x)+"px"; +this.box.style.top=(this.targetOffset.y)+"px"; +var w=this.target.offsetWidth; +var h=this.target.offsetHeight; +this.input.style.width=w+"px"; +this.input.style.height=(h-3)+"px" +}else{if(initial||forceAll){this.box.style.left=this.targetOffset.x+"px"; +this.box.style.top=this.targetOffset.y+"px" +}var approxTextWidth=this.textSize.width; +var maxWidth=(currentPanel.panelNode.scrollWidth-this.targetOffset.x)-this.outerMargin; +var wrapped=initial?this.noWrap&&this.targetSize.height>this.textSize.height+3:this.noWrap&&approxTextWidth>maxWidth; +if(wrapped){var style=isIE?this.target.currentStyle:this.target.ownerDocument.defaultView.getComputedStyle(this.target,""); +targetMargin=parseInt(style.marginLeft)+parseInt(style.marginRight); +approxTextWidth=maxWidth-targetMargin; +this.input.style.width="100%"; +this.box.style.width=approxTextWidth+"px" +}else{var charWidth=this.measureInputText("m").width; +if(extraWidth){charWidth*=extraWidth +}var inputWidth=approxTextWidth+charWidth; +if(initial){if(isIE){var xDiff=13; +this.box.style.width=(inputWidth+xDiff)+"px" +}else{this.box.style.width="auto" +}}else{var xDiff=isIE?13:this.box.scrollWidth-this.input.offsetWidth; +this.box.style.width=(inputWidth+xDiff)+"px" +}this.input.style.width=inputWidth+"px" +}this.expander.style.width=approxTextWidth+"px"; +this.expander.style.height=Math.max(this.textSize.height-3,0)+"px" +}if(forceAll){scrollIntoCenterView(this.box,null,true) +}}}); +Firebug.AutoCompleter=function(getExprOffset,getRange,evaluator,selectMode,caseSensitive){var candidates=null; +var originalValue=null; +var originalOffset=-1; +var lastExpr=null; +var lastOffset=-1; +var exprOffset=0; +var lastIndex=0; +var preParsed=null; +var preExpr=null; +var postExpr=null; +this.revert=function(textBox){if(originalOffset!=-1){textBox.value=originalValue; +setSelectionRange(textBox,originalOffset,originalOffset); +this.reset(); +return true +}else{this.reset(); +return false +}}; +this.reset=function(){candidates=null; +originalValue=null; +originalOffset=-1; +lastExpr=null; +lastOffset=0; +exprOffset=0 +}; +this.complete=function(context,textBox,cycle,reverse){var value=textBox.value; +var offset=getInputSelectionStart(textBox); +if(isSafari&&!cycle&&offset>=0){offset++ +}if(!selectMode&&originalOffset!=-1){offset=originalOffset +}if(!candidates||!cycle||offset!=lastOffset){originalOffset=offset; +originalValue=value; +var parseStart=getExprOffset?getExprOffset(value,offset,context):0; +preParsed=value.substr(0,parseStart); +var parsed=value.substr(parseStart); +var range=getRange?getRange(parsed,offset-parseStart,context):null; +if(!range){range={start:0,end:parsed.length-1} +}var expr=parsed.substr(range.start,range.end-range.start+1); +preExpr=parsed.substr(0,range.start); +postExpr=parsed.substr(range.end+1); +exprOffset=parseStart+range.start; +if(!cycle){if(!expr){return +}else{if(lastExpr&&lastExpr.indexOf(expr)!=0){candidates=null +}else{if(lastExpr&&lastExpr.length>=expr.length){candidates=null; +lastExpr=expr; +return +}}}}lastExpr=expr; +lastOffset=offset; +var searchExpr; +if(expr&&offset!=parseStart+range.end+1){if(cycle){offset=range.start; +searchExpr=expr; +expr="" +}else{return +}}var values=evaluator(preExpr,expr,postExpr,context); +if(!values){return +}if(expr){candidates=[]; +if(caseSensitive){for(var i=0; +i<values.length; +++i){var name=values[i]; +if(name.indexOf&&name.indexOf(expr)==0){candidates.push(name) +}}}else{var lowerExpr=caseSensitive?expr:expr.toLowerCase(); +for(var i=0; +i<values.length; +++i){var name=values[i]; +if(name.indexOf&&name.toLowerCase().indexOf(lowerExpr)==0){candidates.push(name) +}}}lastIndex=reverse?candidates.length-1:0 +}else{if(searchExpr){var searchIndex=-1; +if(caseSensitive){searchIndex=values.indexOf(expr) +}else{var lowerExpr=searchExpr.toLowerCase(); +for(var i=0; +i<values.length; +++i){var name=values[i]; +if(name&&name.toLowerCase().indexOf(lowerExpr)==0){searchIndex=i; +break +}}}if(searchIndex==-1){return this.reset() +}expr=searchExpr; +candidates=cloneArray(values); +lastIndex=searchIndex +}else{expr=""; +candidates=[]; +for(var i=0; +i<values.length; +++i){if(values[i].substr){candidates.push(values[i]) +}}lastIndex=-1 +}}}if(cycle){expr=lastExpr; +lastIndex+=reverse?-1:1 +}if(!candidates.length){return +}if(lastIndex>=candidates.length){lastIndex=0 +}else{if(lastIndex<0){lastIndex=candidates.length-1 +}}var completion=candidates[lastIndex]; +var preCompletion=expr.substr(0,offset-exprOffset); +var postCompletion=completion.substr(offset-exprOffset); +textBox.value=preParsed+preExpr+preCompletion+postCompletion+postExpr; +var offsetEnd=preParsed.length+preExpr.length+completion.length; +return function(){if(selectMode){setSelectionRange(textBox,offset,offsetEnd) +}else{setSelectionRange(textBox,offsetEnd,offsetEnd) +}} +} +}; +var getDefaultEditor=function getDefaultEditor(panel){if(!defaultEditor){var doc=panel.document; +defaultEditor=new Firebug.InlineEditor(doc) +}return defaultEditor +}; +var getOutsider=function getOutsider(element,group,stepper){var parentGroup=getAncestorByClass(group.parentNode,"editGroup"); +var next; +do{next=stepper(next||element) +}while(isAncestor(next,group)||isGroupInsert(next,parentGroup)); +return next +}; +var isGroupInsert=function isGroupInsert(next,group){return(!group||isAncestor(next,group))&&(hasClass(next,"insertBefore")||hasClass(next,"insertAfter")) +}; +var getNextOutsider=function getNextOutsider(element,group){return getOutsider(element,group,bind(getNextByClass,FBL,"editable")) +}; +var getPreviousOutsider=function getPreviousOutsider(element,group){return getOutsider(element,group,bind(getPreviousByClass,FBL,"editable")) +}; +var getInlineParent=function getInlineParent(element){var lastInline=element; +for(; +element; +element=element.parentNode){var s=isIE?element.currentStyle:element.ownerDocument.defaultView.getComputedStyle(element,""); +if(s.display!="inline"){return lastInline +}else{lastInline=element +}}return null +}; +var insertTab=function insertTab(){insertTextIntoElement(currentEditor.input,Firebug.Editor.tabCharacter) +}; +Firebug.registerModule(Firebug.Editor) +}}); +FBL.ns(function(){with(FBL){if(Env.Options.disableXHRListener){return +}var XHRSpy=function(){this.requestHeaders=[]; +this.responseHeaders=[] +}; +XHRSpy.prototype={method:null,url:null,async:null,xhrRequest:null,href:null,loaded:false,logRow:null,responseText:null,requestHeaders:null,responseHeaders:null,sourceLink:null,getURL:function(){return this.href +}}; +var XMLHttpRequestWrapper=function(activeXObject){var xhrRequest=typeof activeXObject!="undefined"?activeXObject:new _XMLHttpRequest(),spy=new XHRSpy(),self=this,reqType,reqUrl,reqStartTS; +var updateSelfPropertiesIgnore={abort:1,channel:1,getAllResponseHeaders:1,getInterface:1,getResponseHeader:1,mozBackgroundRequest:1,multipart:1,onreadystatechange:1,open:1,send:1,setRequestHeader:1}; +var updateSelfProperties=function(){if(supportsXHRIterator){for(var propName in xhrRequest){if(propName in updateSelfPropertiesIgnore){continue +}try{var propValue=xhrRequest[propName]; +if(propValue&&!isFunction(propValue)){self[propName]=propValue +}}catch(E){}}}else{if(xhrRequest.readyState==4){self.status=xhrRequest.status; +self.statusText=xhrRequest.statusText; +self.responseText=xhrRequest.responseText; +self.responseXML=xhrRequest.responseXML +}}}; +var updateXHRPropertiesIgnore={channel:1,onreadystatechange:1,readyState:1,responseBody:1,responseText:1,responseXML:1,status:1,statusText:1,upload:1}; +var updateXHRProperties=function(){for(var propName in self){if(propName in updateXHRPropertiesIgnore){continue +}try{var propValue=self[propName]; +if(propValue&&!xhrRequest[propName]){xhrRequest[propName]=propValue +}}catch(E){}}}; +var logXHR=function(){var row=Firebug.Console.log(spy,null,"spy",Firebug.Spy.XHR); +if(row){setClass(row,"loading"); +spy.logRow=row +}}; +var finishXHR=function(){var duration=new Date().getTime()-reqStartTS; +var success=xhrRequest.status==200; +var responseHeadersText=xhrRequest.getAllResponseHeaders(); +var responses=responseHeadersText?responseHeadersText.split(/[\n\r]/):[]; +var reHeader=/^(\S+):\s*(.*)/; +for(var i=0,l=responses.length; +i<l; +i++){var text=responses[i]; +var match=text.match(reHeader); +if(match){var name=match[1]; +var value=match[2]; +if(name=="Content-Type"){spy.mimeType=value +}spy.responseHeaders.push({name:[name],value:[value]}) +}}with({row:spy.logRow,status:xhrRequest.status==0?"":xhrRequest.status+" "+xhrRequest.statusText,time:duration,success:success}){setTimeout(function(){spy.responseText=xhrRequest.responseText; +row=row||spy.logRow; +if(!row){return +}handleRequestStatus(success,status,time) +},200) +}spy.loaded=true; +updateSelfProperties() +}; +var handleStateChange=function(){self.readyState=xhrRequest.readyState; +if(xhrRequest.readyState==4){finishXHR(); +xhrRequest.onreadystatechange=function(){} +}self.onreadystatechange() +}; +var handleRequestStatus=function(success,status,time){var row=spy.logRow; +FBL.removeClass(row,"loading"); +if(!success){FBL.setClass(row,"error") +}var item=FBL.$$(".spyStatus",row)[0]; +item.innerHTML=status; +if(time){var item=FBL.$$(".spyTime",row)[0]; +item.innerHTML=time+"ms" +}}; +this.readyState=0; +this.onreadystatechange=function(){}; +this.open=function(method,url,async,user,password){updateSelfProperties(); +if(spy.loaded){spy=new XHRSpy() +}spy.method=method; +spy.url=url; +spy.async=async; +spy.href=url; +spy.xhrRequest=xhrRequest; +spy.urlParams=parseURLParamsArray(url); +try{if(supportsApply){xhrRequest.open.apply(xhrRequest,arguments) +}else{xhrRequest.open(method,url,async,user,password) +}}catch(e){}xhrRequest.onreadystatechange=handleStateChange +}; +this.send=function(data){spy.data=data; +reqStartTS=new Date().getTime(); +updateXHRProperties(); +try{xhrRequest.send(data) +}catch(e){}finally{logXHR(); +if(!spy.async){self.readyState=xhrRequest.readyState; +try{finishXHR() +}catch(E){}}}}; +this.setRequestHeader=function(header,value){spy.requestHeaders.push({name:[header],value:[value]}); +return xhrRequest.setRequestHeader(header,value) +}; +this.abort=function(){xhrRequest.abort(); +updateSelfProperties(); +handleRequestStatus(false,"Aborted") +}; +this.getResponseHeader=function(header){return xhrRequest.getResponseHeader(header) +}; +this.getAllResponseHeaders=function(){return xhrRequest.getAllResponseHeaders() +}; +var supportsApply=!isIE6&&xhrRequest&&xhrRequest.open&&typeof xhrRequest.open.apply!="undefined"; +var numberOfXHRProperties=0; +for(var propName in xhrRequest){numberOfXHRProperties++; +if(propName in updateSelfPropertiesIgnore){continue +}try{var propValue=xhrRequest[propName]; +if(isFunction(propValue)){if(typeof self[propName]=="undefined"){this[propName]=(function(name,xhr){return supportsApply?function(){return xhr[name].apply(xhr,arguments) +}:function(a,b,c,d,e){return xhr[name](a,b,c,d,e) +} +})(propName,xhrRequest) +}}else{this[propName]=propValue +}}catch(E){}}var supportsXHRIterator=numberOfXHRProperties>0; +return this +}; +var _ActiveXObject; +var isIE6=/msie 6/i.test(navigator.appVersion); +if(isIE6){_ActiveXObject=window.ActiveXObject; +var xhrObjects=" MSXML2.XMLHTTP.5.0 MSXML2.XMLHTTP.4.0 MSXML2.XMLHTTP.3.0 MSXML2.XMLHTTP Microsoft.XMLHTTP "; +window.ActiveXObject=function(name){var error=null; +try{var activeXObject=new _ActiveXObject(name) +}catch(e){error=e +}finally{if(!error){if(xhrObjects.indexOf(" "+name+" ")!=-1){return new XMLHttpRequestWrapper(activeXObject) +}else{return activeXObject +}}else{throw error.message +}}} +}if(!isIE6){var _XMLHttpRequest=XMLHttpRequest; +window.XMLHttpRequest=function(){return new XMLHttpRequestWrapper() +} +}FBL.getNativeXHRObject=function(){var xhrObj=false; +try{xhrObj=new _XMLHttpRequest() +}catch(e){var progid=["MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"]; +for(var i=0; +i<progid.length; +++i){try{xhrObj=new _ActiveXObject(progid[i]) +}catch(e){continue +}break +}}finally{return xhrObj +}} +}}); +FBL.ns(function(){with(FBL){var reIgnore=/about:|javascript:|resource:|chrome:|jar:/; +var layoutInterval=300; +var indentWidth=18; +var cacheSession=null; +var contexts=new Array(); +var panelName="net"; +var maxQueueRequests=500; +var activeRequests=[]; +var mimeExtensionMap={txt:"text/plain",html:"text/html",htm:"text/html",xhtml:"text/html",xml:"text/xml",css:"text/css",js:"application/x-javascript",jss:"application/x-javascript",jpg:"image/jpg",jpeg:"image/jpeg",gif:"image/gif",png:"image/png",bmp:"image/bmp",swf:"application/x-shockwave-flash",flv:"video/x-flv"}; +var fileCategories={"undefined":1,html:1,css:1,js:1,xhr:1,image:1,flash:1,txt:1,bin:1}; +var textFileCategories={txt:1,html:1,xhr:1,css:1,js:1}; +var binaryFileCategories={bin:1,flash:1}; +var mimeCategoryMap={"text/plain":"txt","application/octet-stream":"bin","text/html":"html","text/xml":"html","text/css":"css","application/x-javascript":"js","text/javascript":"js","application/javascript":"js","image/jpeg":"image","image/jpg":"image","image/gif":"image","image/png":"image","image/bmp":"image","application/x-shockwave-flash":"flash","video/x-flv":"flash"}; +var binaryCategoryMap={image:1,flash:1}; +Firebug.NetMonitor=extend(Firebug.ActivableModule,{dispatchName:"netMonitor",clear:function(context){var panel=context.getPanel(panelName,true); +if(panel){panel.clear() +}},initialize:function(){return; +this.panelName=panelName; +Firebug.ActivableModule.initialize.apply(this,arguments); +if(Firebug.TraceModule){Firebug.TraceModule.addListener(this.TraceListener) +}NetHttpObserver.registerObserver(); +NetHttpActivityObserver.registerObserver(); +Firebug.Debugger.addListener(this.DebuggerListener) +},shutdown:function(){return; +prefs.removeObserver(Firebug.prefDomain,this,false); +if(Firebug.TraceModule){Firebug.TraceModule.removeListener(this.TraceListener) +}NetHttpObserver.unregisterObserver(); +NetHttpActivityObserver.unregisterObserver(); +Firebug.Debugger.removeListener(this.DebuggerListener) +}}); +Firebug.NetMonitor.NetInfoBody=domplate(Firebug.Rep,new Firebug.Listener(),{tag:DIV({"class":"netInfoBody",_repObject:"$file"},TAG("$infoTabs",{file:"$file"}),TAG("$infoBodies",{file:"$file"})),infoTabs:DIV({"class":"netInfoTabs focusRow subFocusRow",role:"tablist"},A({"class":"netInfoParamsTab netInfoTab a11yFocus",onclick:"$onClickTab",role:"tab",view:"Params",$collapsed:"$file|hideParams"},$STR("URLParameters")),A({"class":"netInfoHeadersTab netInfoTab a11yFocus",onclick:"$onClickTab",role:"tab",view:"Headers"},$STR("Headers")),A({"class":"netInfoPostTab netInfoTab a11yFocus",onclick:"$onClickTab",role:"tab",view:"Post",$collapsed:"$file|hidePost"},$STR("Post")),A({"class":"netInfoPutTab netInfoTab a11yFocus",onclick:"$onClickTab",role:"tab",view:"Put",$collapsed:"$file|hidePut"},$STR("Put")),A({"class":"netInfoResponseTab netInfoTab a11yFocus",onclick:"$onClickTab",role:"tab",view:"Response",$collapsed:"$file|hideResponse"},$STR("Response")),A({"class":"netInfoCacheTab netInfoTab a11yFocus",onclick:"$onClickTab",role:"tab",view:"Cache",$collapsed:"$file|hideCache"},$STR("Cache")),A({"class":"netInfoHtmlTab netInfoTab a11yFocus",onclick:"$onClickTab",role:"tab",view:"Html",$collapsed:"$file|hideHtml"},$STR("HTML"))),infoBodies:DIV({"class":"netInfoBodies outerFocusRow"},TABLE({"class":"netInfoParamsText netInfoText netInfoParamsTable",role:"tabpanel",cellpadding:0,cellspacing:0},TBODY()),DIV({"class":"netInfoHeadersText netInfoText",role:"tabpanel"}),DIV({"class":"netInfoPostText netInfoText",role:"tabpanel"}),DIV({"class":"netInfoPutText netInfoText",role:"tabpanel"}),PRE({"class":"netInfoResponseText netInfoText",role:"tabpanel"}),DIV({"class":"netInfoCacheText netInfoText",role:"tabpanel"},TABLE({"class":"netInfoCacheTable",cellpadding:0,cellspacing:0,role:"presentation"},TBODY({role:"list","aria-label":$STR("Cache")}))),DIV({"class":"netInfoHtmlText netInfoText",role:"tabpanel"},IFRAME({"class":"netInfoHtmlPreview",role:"document"}))),headerDataTag:FOR("param","$headers",TR({role:"listitem"},TD({"class":"netInfoParamName",role:"presentation"},TAG("$param|getNameTag",{param:"$param"})),TD({"class":"netInfoParamValue",role:"list","aria-label":"$param.name"},FOR("line","$param|getParamValueIterator",CODE({"class":"focusRow subFocusRow",role:"listitem"},"$line"))))),customTab:A({"class":"netInfo$tabId\\Tab netInfoTab",onclick:"$onClickTab",view:"$tabId",role:"tab"},"$tabTitle"),customBody:DIV({"class":"netInfo$tabId\\Text netInfoText",role:"tabpanel"}),nameTag:SPAN("$param|getParamName"),nameWithTooltipTag:SPAN({title:"$param.name"},"$param|getParamName"),getNameTag:function(param){return(this.getParamName(param)==param.name)?this.nameTag:this.nameWithTooltipTag +},getParamName:function(param){var limit=25; +var name=param.name; +if(name.length>limit){name=name.substr(0,limit)+"..." +}return name +},getParamTitle:function(param){var limit=25; +var name=param.name; +if(name.length>limit){return name +}return"" +},hideParams:function(file){return !file.urlParams||!file.urlParams.length +},hidePost:function(file){return file.method.toUpperCase()!="POST" +},hidePut:function(file){return file.method.toUpperCase()!="PUT" +},hideResponse:function(file){return false +},hideCache:function(file){return true; +return !file.cacheEntry +},hideHtml:function(file){return(file.mimeType!="text/html")&&(file.mimeType!="application/xhtml+xml") +},onClickTab:function(event){this.selectTab(event.currentTarget||event.srcElement) +},getParamValueIterator:function(param){return param.value; +return wrapText(param.value,true) +},appendTab:function(netInfoBox,tabId,tabTitle){var args={tabId:tabId,tabTitle:tabTitle}; +this.customTab.append(args,$$(".netInfoTabs",netInfoBox)[0]); +this.customBody.append(args,$$(".netInfoBodies",netInfoBox)[0]) +},selectTabByName:function(netInfoBox,tabName){var tab=getChildByClass(netInfoBox,"netInfoTabs","netInfo"+tabName+"Tab"); +if(tab){this.selectTab(tab) +}},selectTab:function(tab){var view=tab.getAttribute("view"); +var netInfoBox=getAncestorByClass(tab,"netInfoBody"); +var selectedTab=netInfoBox.selectedTab; +if(selectedTab){removeClass(netInfoBox.selectedText,"netInfoTextSelected"); +removeClass(selectedTab,"netInfoTabSelected"); +selectedTab.setAttribute("aria-selected","false") +}var textBodyName="netInfo"+view+"Text"; +selectedTab=netInfoBox.selectedTab=tab; +netInfoBox.selectedText=$$("."+textBodyName,netInfoBox)[0]; +setClass(netInfoBox.selectedText,"netInfoTextSelected"); +setClass(selectedTab,"netInfoTabSelected"); +selectedTab.setAttribute("selected","true"); +selectedTab.setAttribute("aria-selected","true"); +var file=Firebug.getRepObject(netInfoBox); +var context=Firebug.chrome; +this.updateInfo(netInfoBox,file,context) +},updateInfo:function(netInfoBox,file,context){if(FBTrace.DBG_NET){FBTrace.sysout("net.updateInfo; file",file) +}if(!netInfoBox){if(FBTrace.DBG_NET||FBTrace.DBG_ERRORS){FBTrace.sysout("net.updateInfo; ERROR netInfo == null "+file.href,file) +}return +}var tab=netInfoBox.selectedTab; +if(hasClass(tab,"netInfoParamsTab")){if(file.urlParams&&!netInfoBox.urlParamsPresented){netInfoBox.urlParamsPresented=true; +this.insertHeaderRows(netInfoBox,file.urlParams,"Params") +}}else{if(hasClass(tab,"netInfoHeadersTab")){var headersText=$$(".netInfoHeadersText",netInfoBox)[0]; +if(file.responseHeaders&&!netInfoBox.responseHeadersPresented){netInfoBox.responseHeadersPresented=true; +NetInfoHeaders.renderHeaders(headersText,file.responseHeaders,"ResponseHeaders") +}if(file.requestHeaders&&!netInfoBox.requestHeadersPresented){netInfoBox.requestHeadersPresented=true; +NetInfoHeaders.renderHeaders(headersText,file.requestHeaders,"RequestHeaders") +}}else{if(hasClass(tab,"netInfoPostTab")){if(!netInfoBox.postPresented){netInfoBox.postPresented=true; +var postText=$$(".netInfoPostText",netInfoBox)[0]; +NetInfoPostData.render(context,postText,file) +}}else{if(hasClass(tab,"netInfoPutTab")){if(!netInfoBox.putPresented){netInfoBox.putPresented=true; +var putText=$$(".netInfoPutText",netInfoBox)[0]; +NetInfoPostData.render(context,putText,file) +}}else{if(hasClass(tab,"netInfoResponseTab")&&file.loaded&&!netInfoBox.responsePresented){var responseTextBox=$$(".netInfoResponseText",netInfoBox)[0]; +if(file.category=="image"){netInfoBox.responsePresented=true; +var responseImage=netInfoBox.ownerDocument.createElement("img"); +responseImage.src=file.href; +clearNode(responseTextBox); +responseTextBox.appendChild(responseImage,responseTextBox) +}else{this.setResponseText(file,netInfoBox,responseTextBox,context) +}}else{if(hasClass(tab,"netInfoCacheTab")&&file.loaded&&!netInfoBox.cachePresented){var responseTextBox=netInfoBox.getElementsByClassName("netInfoCacheText").item(0); +if(file.cacheEntry){netInfoBox.cachePresented=true; +this.insertHeaderRows(netInfoBox,file.cacheEntry,"Cache") +}}else{if(hasClass(tab,"netInfoHtmlTab")&&file.loaded&&!netInfoBox.htmlPresented){netInfoBox.htmlPresented=true; +var text=Utils.getResponseText(file,context); +var iframe=$$(".netInfoHtmlPreview",netInfoBox)[0]; +var reScript=/<script(.|\s)*?\/script>/gi; +text=text.replace(reScript,""); +iframe.contentWindow.document.write(text); +iframe.contentWindow.document.close() +}}}}}}}dispatch(NetInfoBody.fbListeners,"updateTabBody",[netInfoBox,file,context]) +},setResponseText:function(file,netInfoBox,responseTextBox,context){netInfoBox.responsePresented=true; +if(isIE){responseTextBox.style.whiteSpace="nowrap" +}responseTextBox[typeof responseTextBox.textContent!="undefined"?"textContent":"innerText"]=file.responseText; +return; +var text=Utils.getResponseText(file,context); +var limit=Firebug.netDisplayedResponseLimit+15; +var limitReached=text?(text.length>limit):false; +if(limitReached){text=text.substr(0,limit)+"..." +}if(text){insertWrappedText(text,responseTextBox) +}else{insertWrappedText("",responseTextBox) +}if(limitReached){var object={text:$STR("net.responseSizeLimitMessage"),onClickLink:function(){var panel=context.getPanel("net",true); +panel.openResponseInTab(file) +}}; +Firebug.NetMonitor.ResponseSizeLimit.append(object,responseTextBox) +}netInfoBox.responsePresented=true; +if(FBTrace.DBG_NET){FBTrace.sysout("net.setResponseText; response text updated") +}},insertHeaderRows:function(netInfoBox,headers,tableName,rowName){if(!headers.length){return +}var headersTable=$$(".netInfo"+tableName+"Table",netInfoBox)[0]; +var tbody=getChildByClass(headersTable,"netInfo"+rowName+"Body"); +if(!tbody){tbody=headersTable.firstChild +}var titleRow=getChildByClass(tbody,"netInfo"+rowName+"Title"); +this.headerDataTag.insertRows({headers:headers},titleRow?titleRow:tbody); +removeClass(titleRow,"collapsed") +}}); +var NetInfoBody=Firebug.NetMonitor.NetInfoBody; +Firebug.NetMonitor.NetInfoHeaders=domplate(Firebug.Rep,{tag:DIV({"class":"netInfoHeadersTable",role:"tabpanel"},DIV({"class":"netInfoHeadersGroup netInfoResponseHeadersTitle"},SPAN($STR("ResponseHeaders")),SPAN({"class":"netHeadersViewSource response collapsed",onclick:"$onViewSource",_sourceDisplayed:false,_rowName:"ResponseHeaders"},$STR("net.headers.view source"))),TABLE({cellpadding:0,cellspacing:0},TBODY({"class":"netInfoResponseHeadersBody",role:"list","aria-label":$STR("ResponseHeaders")})),DIV({"class":"netInfoHeadersGroup netInfoRequestHeadersTitle"},SPAN($STR("RequestHeaders")),SPAN({"class":"netHeadersViewSource request collapsed",onclick:"$onViewSource",_sourceDisplayed:false,_rowName:"RequestHeaders"},$STR("net.headers.view source"))),TABLE({cellpadding:0,cellspacing:0},TBODY({"class":"netInfoRequestHeadersBody",role:"list","aria-label":$STR("RequestHeaders")}))),sourceTag:TR({role:"presentation"},TD({colspan:2,role:"presentation"},PRE({"class":"source"}))),onViewSource:function(event){var target=event.target; +var requestHeaders=(target.rowName=="RequestHeaders"); +var netInfoBox=getAncestorByClass(target,"netInfoBody"); +var file=netInfoBox.repObject; +if(target.sourceDisplayed){var headers=requestHeaders?file.requestHeaders:file.responseHeaders; +this.insertHeaderRows(netInfoBox,headers,target.rowName); +target.innerHTML=$STR("net.headers.view source") +}else{var source=requestHeaders?file.requestHeadersText:file.responseHeadersText; +this.insertSource(netInfoBox,source,target.rowName); +target.innerHTML=$STR("net.headers.pretty print") +}target.sourceDisplayed=!target.sourceDisplayed; +cancelEvent(event) +},insertSource:function(netInfoBox,source,rowName){var tbody=$$(".netInfo"+rowName+"Body",netInfoBox)[0]; +var node=this.sourceTag.replace({},tbody); +var sourceNode=$$(".source",node)[0]; +sourceNode.innerHTML=source +},insertHeaderRows:function(netInfoBox,headers,rowName){var headersTable=$$(".netInfoHeadersTable",netInfoBox)[0]; +var tbody=$$(".netInfo"+rowName+"Body",headersTable)[0]; +clearNode(tbody); +if(!headers.length){return +}NetInfoBody.headerDataTag.insertRows({headers:headers},tbody); +var titleRow=getChildByClass(headersTable,"netInfo"+rowName+"Title"); +removeClass(titleRow,"collapsed") +},init:function(parent){var rootNode=this.tag.append({},parent); +var netInfoBox=getAncestorByClass(parent,"netInfoBody"); +var file=netInfoBox.repObject; +var viewSource; +viewSource=$$(".request",rootNode)[0]; +if(file.requestHeadersText){removeClass(viewSource,"collapsed") +}viewSource=$$(".response",rootNode)[0]; +if(file.responseHeadersText){removeClass(viewSource,"collapsed") +}},renderHeaders:function(parent,headers,rowName){if(!parent.firstChild){this.init(parent) +}this.insertHeaderRows(parent,headers,rowName) +}}); +var NetInfoHeaders=Firebug.NetMonitor.NetInfoHeaders; +Firebug.NetMonitor.NetInfoPostData=domplate(Firebug.Rep,{paramsTable:TABLE({"class":"netInfoPostParamsTable",cellpadding:0,cellspacing:0,role:"presentation"},TBODY({role:"list","aria-label":$STR("net.label.Parameters")},TR({"class":"netInfoPostParamsTitle",role:"presentation"},TD({colspan:3,role:"presentation"},DIV({"class":"netInfoPostParams"},$STR("net.label.Parameters"),SPAN({"class":"netInfoPostContentType"},"application/x-www-form-urlencoded")))))),partsTable:TABLE({"class":"netInfoPostPartsTable",cellpadding:0,cellspacing:0,role:"presentation"},TBODY({role:"list","aria-label":$STR("net.label.Parts")},TR({"class":"netInfoPostPartsTitle",role:"presentation"},TD({colspan:2,role:"presentation"},DIV({"class":"netInfoPostParams"},$STR("net.label.Parts"),SPAN({"class":"netInfoPostContentType"},"multipart/form-data")))))),jsonTable:TABLE({"class":"netInfoPostJSONTable",cellpadding:0,cellspacing:0,role:"presentation"},TBODY({role:"list","aria-label":$STR("JSON")},TR({"class":"netInfoPostJSONTitle",role:"presentation"},TD({role:"presentation"},DIV({"class":"netInfoPostParams"},$STR("JSON")))),TR(TD({"class":"netInfoPostJSONBody"})))),xmlTable:TABLE({"class":"netInfoPostXMLTable",cellpadding:0,cellspacing:0,role:"presentation"},TBODY({role:"list","aria-label":$STR("xmlviewer.tab.XML")},TR({"class":"netInfoPostXMLTitle",role:"presentation"},TD({role:"presentation"},DIV({"class":"netInfoPostParams"},$STR("xmlviewer.tab.XML")))),TR(TD({"class":"netInfoPostXMLBody"})))),sourceTable:TABLE({"class":"netInfoPostSourceTable",cellpadding:0,cellspacing:0,role:"presentation"},TBODY({role:"list","aria-label":$STR("net.label.Source")},TR({"class":"netInfoPostSourceTitle",role:"presentation"},TD({colspan:2,role:"presentation"},DIV({"class":"netInfoPostSource"},$STR("net.label.Source")))))),sourceBodyTag:TR({role:"presentation"},TD({colspan:2,role:"presentation"},FOR("line","$param|getParamValueIterator",CODE({"class":"focusRow subFocusRow",role:"listitem"},"$line")))),getParamValueIterator:function(param){return NetInfoBody.getParamValueIterator(param) +},render:function(context,parentNode,file){var spy=getAncestorByClass(parentNode,"spyHead"); +var spyObject=spy.repObject; +var data=spyObject.data; +var contentType=file.mimeType; +if(contentType&&contentType=="application/x-www-form-urlencoded"||data&&data.indexOf("=")!=-1){var params=parseURLEncodedTextArray(data); +if(params){this.insertParameters(parentNode,params) +}}var jsonData={responseText:data}; +if(Firebug.JSONViewerModel.isJSON(contentType,data)){this.insertJSON(parentNode,jsonData,context) +}var postText=data; +if(postText){this.insertSource(parentNode,postText) +}},insertParameters:function(parentNode,params){if(!params||!params.length){return +}var paramTable=this.paramsTable.append({object:{}},parentNode); +var row=$$(".netInfoPostParamsTitle",paramTable)[0]; +var tbody=paramTable.getElementsByTagName("tbody")[0]; +NetInfoBody.headerDataTag.insertRows({headers:params},row) +},insertParts:function(parentNode,data){if(!data.params||!data.params.length){return +}var partsTable=this.partsTable.append({object:{}},parentNode); +var row=$$(".netInfoPostPartsTitle",paramTable)[0]; +NetInfoBody.headerDataTag.insertRows({headers:data.params},row) +},insertJSON:function(parentNode,file,context){var text=file.responseText; +var data=parseJSONString(text); +if(!data){return +}var jsonTable=this.jsonTable.append({},parentNode); +var jsonBody=$$(".netInfoPostJSONBody",jsonTable)[0]; +if(!this.toggles){this.toggles={} +}Firebug.DOMPanel.DirTable.tag.replace({object:data,toggles:this.toggles},jsonBody) +},insertXML:function(parentNode,file,context){var text=Utils.getPostText(file,context); +var jsonTable=this.xmlTable.append(null,parentNode); +var jsonBody=$$(".netInfoPostXMLBody",jsonTable)[0]; +Firebug.XMLViewerModel.insertXML(jsonBody,text) +},insertSource:function(parentNode,text){var sourceTable=this.sourceTable.append({object:{}},parentNode); +var row=$$(".netInfoPostSourceTitle",sourceTable)[0]; +var param={value:[text]}; +this.sourceBodyTag.insertRows({param:param},row) +},parseMultiPartText:function(file,context){var text=Utils.getPostText(file,context); +if(text==undefined){return null +}FBTrace.sysout("net.parseMultiPartText; boundary: ",text); +var boundary=text.match(/\s*boundary=\s*(.*)/)[1]; +var divider="\r\n\r\n"; +var bodyStart=text.indexOf(divider); +var body=text.substr(bodyStart+divider.length); +var postData={}; +postData.mimeType="multipart/form-data"; +postData.params=[]; +var parts=body.split("--"+boundary); +for(var i=0; +i<parts.length; +i++){var part=parts[i].split(divider); +if(part.length!=2){continue +}var m=part[0].match(/\s*name=\"(.*)\"(;|$)/); +postData.params.push({name:(m&&m.length>1)?m[1]:"",value:trim(part[1])}) +}return postData +}}); +var NetInfoPostData=Firebug.NetMonitor.NetInfoPostData; +var $STRP=function(a){return a +}; +Firebug.NetMonitor.NetLimit=domplate(Firebug.Rep,{collapsed:true,tableTag:DIV(TABLE({width:"100%",cellpadding:0,cellspacing:0},TBODY())),limitTag:TR({"class":"netRow netLimitRow",$collapsed:"$isCollapsed"},TD({"class":"netCol netLimitCol",colspan:6},TABLE({cellpadding:0,cellspacing:0},TBODY(TR(TD(SPAN({"class":"netLimitLabel"},$STRP("plural.Limit_Exceeded",[0]))),TD({style:"width:100%"}),TD(BUTTON({"class":"netLimitButton",title:"$limitPrefsTitle",onclick:"$onPreferences"},$STR("LimitPrefs"))),TD(" ")))))),isCollapsed:function(){return this.collapsed +},onPreferences:function(event){openNewTab("about:config") +},updateCounter:function(row){removeClass(row,"collapsed"); +var limitLabel=row.getElementsByClassName("netLimitLabel").item(0); +limitLabel.firstChild.nodeValue=$STRP("plural.Limit_Exceeded",[row.limitInfo.totalCount]) +},createTable:function(parent,limitInfo){var table=this.tableTag.replace({},parent); +var row=this.createRow(table.firstChild.firstChild,limitInfo); +return[table,row] +},createRow:function(parent,limitInfo){var row=this.limitTag.insertRows(limitInfo,parent,this)[0]; +row.limitInfo=limitInfo; +return row +},observe:function(subject,topic,data){if(topic!="nsPref:changed"){return +}if(data.indexOf("net.logLimit")!=-1){this.updateMaxLimit() +}},updateMaxLimit:function(){var value=Firebug.getPref(Firebug.prefDomain,"net.logLimit"); +maxQueueRequests=value?value:maxQueueRequests +}}); +var NetLimit=Firebug.NetMonitor.NetLimit; +Firebug.NetMonitor.ResponseSizeLimit=domplate(Firebug.Rep,{tag:DIV({"class":"netInfoResponseSizeLimit"},SPAN("$object.beforeLink"),A({"class":"objectLink",onclick:"$onClickLink"},"$object.linkText"),SPAN("$object.afterLink")),reLink:/^(.*)<a>(.*)<\/a>(.*$)/,append:function(obj,parent){var m=obj.text.match(this.reLink); +return this.tag.append({onClickLink:obj.onClickLink,object:{beforeLink:m[1],linkText:m[2],afterLink:m[3]}},parent,this) +}}); +Firebug.NetMonitor.Utils={findHeader:function(headers,name){if(!headers){return null +}name=name.toLowerCase(); +for(var i=0; +i<headers.length; +++i){var headerName=headers[i].name.toLowerCase(); +if(headerName==name){return headers[i].value +}}},formatPostText:function(text){if(text instanceof XMLDocument){return getElementXML(text.documentElement) +}else{return text +}},getPostText:function(file,context,noLimit){if(!file.postText){file.postText=readPostTextFromRequest(file.request,context); +if(!file.postText&&context){file.postText=readPostTextFromPage(file.href,context) +}}if(!file.postText){return file.postText +}var limit=Firebug.netDisplayedPostBodyLimit; +if(file.postText.length>limit&&!noLimit){return cropString(file.postText,limit,"\n\n... "+$STR("net.postDataSizeLimitMessage")+" ...\n\n") +}return file.postText +},getResponseText:function(file,context){return(typeof(file.responseText)!="undefined")?file.responseText:context.sourceCache.loadText(file.href,file.method,file) +},isURLEncodedRequest:function(file,context){var text=Utils.getPostText(file,context); +if(text&&text.toLowerCase().indexOf("content-type: application/x-www-form-urlencoded")==0){return true +}var headerValue=Utils.findHeader(file.requestHeaders,"content-type"); +if(headerValue&&headerValue.indexOf("application/x-www-form-urlencoded")==0){return true +}return false +},isMultiPartRequest:function(file,context){var text=Utils.getPostText(file,context); +if(text&&text.toLowerCase().indexOf("content-type: multipart/form-data")==0){return true +}return false +},getMimeType:function(mimeType,uri){if(!mimeType||!(mimeCategoryMap.hasOwnProperty(mimeType))){var ext=getFileExtension(uri); +if(!ext){return mimeType +}else{var extMimeType=mimeExtensionMap[ext.toLowerCase()]; +return extMimeType?extMimeType:mimeType +}}else{return mimeType +}},getDateFromSeconds:function(s){var d=new Date(); +d.setTime(s*1000); +return d +},getHttpHeaders:function(request,file){try{var http=QI(request,Ci.nsIHttpChannel); +file.status=request.responseStatus; +file.method=http.requestMethod; +file.urlParams=parseURLParams(file.href); +file.mimeType=Utils.getMimeType(request.contentType,request.name); +if(!file.responseHeaders&&Firebug.collectHttpHeaders){var requestHeaders=[],responseHeaders=[]; +http.visitRequestHeaders({visitHeader:function(name,value){requestHeaders.push({name:name,value:value}) +}}); +http.visitResponseHeaders({visitHeader:function(name,value){responseHeaders.push({name:name,value:value}) +}}); +file.requestHeaders=requestHeaders; +file.responseHeaders=responseHeaders +}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("net.getHttpHeaders FAILS "+file.href,exc) +}}},isXHR:function(request){try{var callbacks=request.notificationCallbacks; +var xhrRequest=callbacks?callbacks.getInterface(Ci.nsIXMLHttpRequest):null; +if(FBTrace.DBG_NET){FBTrace.sysout("net.isXHR; "+(xhrRequest!=null)+", "+safeGetName(request)) +}return(xhrRequest!=null) +}catch(exc){}return false +},getFileCategory:function(file){if(file.category){if(FBTrace.DBG_NET){FBTrace.sysout("net.getFileCategory; current: "+file.category+" for: "+file.href,file) +}return file.category +}if(file.isXHR){if(FBTrace.DBG_NET){FBTrace.sysout("net.getFileCategory; XHR for: "+file.href,file) +}return file.category="xhr" +}if(!file.mimeType){var ext=getFileExtension(file.href); +if(ext){file.mimeType=mimeExtensionMap[ext.toLowerCase()] +}}if(!file.mimeType){return"" +}var mimeType=file.mimeType; +if(mimeType){mimeType=mimeType.split(";")[0] +}return(file.category=mimeCategoryMap[mimeType]) +}}; +var Utils=Firebug.NetMonitor.Utils; +Firebug.registerModule(Firebug.NetMonitor) +}}); +FBL.ns(function(){with(FBL){var contexts=[]; +Firebug.Spy=extend(Firebug.Module,{dispatchName:"spy",initialize:function(){if(Firebug.TraceModule){Firebug.TraceModule.addListener(this.TraceListener) +}Firebug.Module.initialize.apply(this,arguments) +},shutdown:function(){Firebug.Module.shutdown.apply(this,arguments); +if(Firebug.TraceModule){Firebug.TraceModule.removeListener(this.TraceListener) +}},initContext:function(context){context.spies=[]; +if(Firebug.showXMLHttpRequests&&Firebug.Console.isAlwaysEnabled()){this.attachObserver(context,context.window) +}if(FBTrace.DBG_SPY){FBTrace.sysout("spy.initContext "+contexts.length+" ",context.getName()) +}},destroyContext:function(context){this.detachObserver(context,null); +if(FBTrace.DBG_SPY&&context.spies.length){FBTrace.sysout("spy.destroyContext; ERROR There are leaking Spies ("+context.spies.length+") "+context.getName()) +}delete context.spies; +if(FBTrace.DBG_SPY){FBTrace.sysout("spy.destroyContext "+contexts.length+" ",context.getName()) +}},watchWindow:function(context,win){if(Firebug.showXMLHttpRequests&&Firebug.Console.isAlwaysEnabled()){this.attachObserver(context,win) +}},unwatchWindow:function(context,win){try{this.detachObserver(context,win) +}catch(ex){ERROR(ex) +}},updateOption:function(name,value){if(name=="showXMLHttpRequests"){var tach=value?this.attachObserver:this.detachObserver; +for(var i=0; +i<TabWatcher.contexts.length; +++i){var context=TabWatcher.contexts[i]; +iterateWindows(context.window,function(win){tach.apply(this,[context,win]) +}) +}}},skipSpy:function(win){if(!win){return true +}var uri=safeGetWindowLocation(win); +if(uri&&(uri.indexOf("about:")==0||uri.indexOf("chrome:")==0)){return true +}},attachObserver:function(context,win){if(Firebug.Spy.skipSpy(win)){return +}for(var i=0; +i<contexts.length; +++i){if((contexts[i].context==context)&&(contexts[i].win==win)){return +}}if(contexts.length==0){httpObserver.addObserver(SpyHttpObserver,"firebug-http-event",false); +SpyHttpActivityObserver.registerObserver() +}contexts.push({context:context,win:win}); +if(FBTrace.DBG_SPY){FBTrace.sysout("spy.attachObserver (HTTP) "+contexts.length+" ",context.getName()) +}},detachObserver:function(context,win){for(var i=0; +i<contexts.length; +++i){if(contexts[i].context==context){if(win&&(contexts[i].win!=win)){continue +}contexts.splice(i,1); +if(contexts.length==0){httpObserver.removeObserver(SpyHttpObserver,"firebug-http-event"); +SpyHttpActivityObserver.unregisterObserver() +}if(FBTrace.DBG_SPY){FBTrace.sysout("spy.detachObserver (HTTP) "+contexts.length+" ",context.getName()) +}return +}}},getXHR:function(request){if(!(request instanceof Ci.nsIHttpChannel)){return null +}try{var callbacks=request.notificationCallbacks; +return(callbacks?callbacks.getInterface(Ci.nsIXMLHttpRequest):null) +}catch(exc){if(exc.name=="NS_NOINTERFACE"){if(FBTrace.DBG_SPY){FBTrace.sysout("spy.getXHR; Request is not nsIXMLHttpRequest: "+safeGetRequestName(request)) +}}}return null +}}); +Firebug.Spy.XHR=domplate(Firebug.Rep,{tag:DIV({"class":"spyHead",_repObject:"$object"},TABLE({"class":"spyHeadTable focusRow outerFocusRow",cellpadding:0,cellspacing:0,role:"listitem","aria-expanded":"false"},TBODY({role:"presentation"},TR({"class":"spyRow"},TD({"class":"spyTitleCol spyCol",onclick:"$onToggleBody"},DIV({"class":"spyTitle"},"$object|getCaption"),DIV({"class":"spyFullTitle spyTitle"},"$object|getFullUri")),TD({"class":"spyCol"},DIV({"class":"spyStatus"},"$object|getStatus")),TD({"class":"spyCol"},SPAN({"class":"spyIcon"})),TD({"class":"spyCol"},SPAN({"class":"spyTime"})),TD({"class":"spyCol"},TAG(FirebugReps.SourceLink.tag,{object:"$object.sourceLink"})))))),getCaption:function(spy){return spy.method.toUpperCase()+" "+cropString(spy.getURL(),100) +},getFullUri:function(spy){return spy.method.toUpperCase()+" "+spy.getURL() +},getStatus:function(spy){var text=""; +if(spy.statusCode){text+=spy.statusCode+" " +}if(spy.statusText){return text+=spy.statusText +}return text +},onToggleBody:function(event){var target=event.currentTarget||event.srcElement; +var logRow=getAncestorByClass(target,"logRow-spy"); +if(isLeftClick(event)){toggleClass(logRow,"opened"); +var spy=getChildByClass(logRow,"spyHead").repObject; +var spyHeadTable=getAncestorByClass(target,"spyHeadTable"); +if(hasClass(logRow,"opened")){updateHttpSpyInfo(spy,logRow); +if(spyHeadTable){spyHeadTable.setAttribute("aria-expanded","true") +}}else{}}},copyURL:function(spy){copyToClipboard(spy.getURL()) +},copyParams:function(spy){var text=spy.postText; +if(!text){return +}var url=reEncodeURL(spy,text,true); +copyToClipboard(url) +},copyResponse:function(spy){copyToClipboard(spy.responseText) +},openInTab:function(spy){openNewTab(spy.getURL(),spy.postText) +},supportsObject:function(object){return false; +return object instanceof Firebug.Spy.XMLHttpRequestSpy +},browseObject:function(spy,context){var url=spy.getURL(); +openNewTab(url); +return true +},getRealObject:function(spy,context){return spy.xhrRequest +},getContextMenuItems:function(spy){var items=[{label:"CopyLocation",command:bindFixed(this.copyURL,this,spy)}]; +if(spy.postText){items.push({label:"CopyLocationParameters",command:bindFixed(this.copyParams,this,spy)}) +}items.push({label:"CopyResponse",command:bindFixed(this.copyResponse,this,spy)},"-",{label:"OpenInTab",command:bindFixed(this.openInTab,this,spy)}); +return items +}}); +function updateTime(spy){var timeBox=spy.logRow.getElementsByClassName("spyTime").item(0); +if(spy.responseTime){timeBox.textContent=" "+formatTime(spy.responseTime) +}}function updateLogRow(spy){updateTime(spy); +var statusBox=spy.logRow.getElementsByClassName("spyStatus").item(0); +statusBox.textContent=Firebug.Spy.XHR.getStatus(spy); +removeClass(spy.logRow,"loading"); +setClass(spy.logRow,"loaded"); +try{var errorRange=Math.floor(spy.xhrRequest.status/100); +if(errorRange==4||errorRange==5){setClass(spy.logRow,"error") +}}catch(exc){}}var updateHttpSpyInfo=function updateHttpSpyInfo(spy,logRow){if(!spy.logRow&&logRow){spy.logRow=logRow +}if(!spy.logRow||!hasClass(spy.logRow,"opened")){return +}if(!spy.params){spy.params=parseURLParams(spy.href+"") +}if(!spy.requestHeaders){spy.requestHeaders=getRequestHeaders(spy) +}if(!spy.responseHeaders&&spy.loaded){spy.responseHeaders=getResponseHeaders(spy) +}var template=Firebug.NetMonitor.NetInfoBody; +var netInfoBox=getChildByClass(spy.logRow,"spyHead","netInfoBody"); +if(!netInfoBox){var head=getChildByClass(spy.logRow,"spyHead"); +netInfoBox=template.tag.append({file:spy},head); +dispatch(template.fbListeners,"initTabBody",[netInfoBox,spy]); +template.selectTabByName(netInfoBox,"Response") +}else{template.updateInfo(netInfoBox,spy,spy.context) +}}; +function getRequestHeaders(spy){var headers=[]; +var channel=spy.xhrRequest.channel; +if(channel instanceof Ci.nsIHttpChannel){channel.visitRequestHeaders({visitHeader:function(name,value){headers.push({name:name,value:value}) +}}) +}return headers +}function getResponseHeaders(spy){var headers=[]; +try{var channel=spy.xhrRequest.channel; +if(channel instanceof Ci.nsIHttpChannel){channel.visitResponseHeaders({visitHeader:function(name,value){headers.push({name:name,value:value}) +}}) +}}catch(exc){if(FBTrace.DBG_SPY||FBTrace.DBG_ERRORS){FBTrace.sysout("spy.getResponseHeaders; EXCEPTION "+safeGetRequestName(spy.request),exc) +}}return headers +}Firebug.registerModule(Firebug.Spy) +}}); +FBL.ns(function(){with(FBL){var contentTypes={"text/javascript":1,"text/x-javascript":1,"text/json":1,"text/x-json":1,"application/json":1,"application/x-json":1,"application/javascript":1,"application/x-javascript":1,"application/json-rpc":1}; +Firebug.JSONViewerModel=extend(Firebug.Module,{dispatchName:"jsonViewer",initialize:function(){Firebug.NetMonitor.NetInfoBody.addListener(this); +this.toggles={} +},shutdown:function(){Firebug.NetMonitor.NetInfoBody.removeListener(this) +},initTabBody:function(infoBox,file){if(FBTrace.DBG_JSONVIEWER){FBTrace.sysout("jsonviewer.initTabBody",infoBox) +}dispatch(this.fbListeners,"onParseJSON",[file]); +if(!file.jsonObject){if(this.isJSON(file.mimeType,file.responseText)){file.jsonObject=this.parseJSON(file) +}}if(file.jsonObject&&hasProperties(file.jsonObject)){Firebug.NetMonitor.NetInfoBody.appendTab(infoBox,"JSON",$STR("JSON")); +if(FBTrace.DBG_JSONVIEWER){FBTrace.sysout("jsonviewer.initTabBody; JSON object available "+(typeof(file.jsonObject)!="undefined"),file.jsonObject) +}}},isJSON:function(contentType,data){var responseText=data?trim(data):null; +if(responseText&&responseText.indexOf("{")==0){return true +}if(!contentType){return false +}contentType=contentType.split(";")[0]; +contentType=trim(contentType); +return contentTypes[contentType] +},updateTabBody:function(infoBox,file,context){var tab=infoBox.selectedTab; +var tabBody=$$(".netInfoJSONText",infoBox)[0]; +if(!hasClass(tab,"netInfoJSONTab")||tabBody.updated){return +}tabBody.updated=true; +if(file.jsonObject){Firebug.DOMPanel.DirTable.tag.replace({object:file.jsonObject,toggles:this.toggles},tabBody) +}},parseJSON:function(file){var jsonString=new String(file.responseText); +return parseJSONString(jsonString) +}}); +Firebug.registerModule(Firebug.JSONViewerModel) +}}); +FBL.ns(function(){with(FBL){var xmlContentTypes=["text/xml","application/xml","application/xhtml+xml","application/rss+xml","application/atom+xml",,"application/vnd.mozilla.maybe.feed","application/rdf+xml","application/vnd.mozilla.xul+xml"]; +Firebug.XMLViewerModel=extend(Firebug.Module,{dispatchName:"xmlViewer",initialize:function(){Firebug.Module.initialize.apply(this,arguments); +Firebug.NetMonitor.NetInfoBody.addListener(this) +},shutdown:function(){Firebug.Module.shutdown.apply(this,arguments); +Firebug.NetMonitor.NetInfoBody.removeListener(this) +},initTabBody:function(infoBox,file){if(FBTrace.DBG_XMLVIEWER){FBTrace.sysout("xmlviewer.initTabBody",infoBox) +}if(this.isXML(file.mimeType,file.responseText)){Firebug.NetMonitor.NetInfoBody.appendTab(infoBox,"XML",$STR("XML")); +if(FBTrace.DBG_XMLVIEWER){FBTrace.sysout("xmlviewer.initTabBody; XML response available") +}}},isXML:function(contentType){if(!contentType){return false +}for(var i=0; +i<xmlContentTypes.length; +i++){if(contentType.indexOf(xmlContentTypes[i])==0){return true +}}return false +},updateTabBody:function(infoBox,file,context){var tab=infoBox.selectedTab; +var tabBody=$$(".netInfoXMLText",infoBox)[0]; +if(!hasClass(tab,"netInfoXMLTab")||tabBody.updated){return +}tabBody.updated=true; +this.insertXML(tabBody,Firebug.NetMonitor.Utils.getResponseText(file,context)) +},insertXML:function(parentNode,text){var xmlText=text.replace(/^\s*<?.+?>\s*/,""); +var div=parentNode.ownerDocument.createElement("div"); +div.innerHTML=xmlText; +var root=div.getElementsByTagName("*")[0]; +if(FBTrace.DBG_XMLVIEWER){FBTrace.sysout("xmlviewer.updateTabBody; XML response parsed",doc) +}var html=[]; +Firebug.Reps.appendNode(root,html); +parentNode.innerHTML=html.join("") +}}); +Firebug.XMLViewerModel.ParseError=domplate(Firebug.Rep,{tag:DIV({"class":"xmlInfoError"},DIV({"class":"xmlInfoErrorMsg"},"$error.message"),PRE({"class":"xmlInfoErrorSource"},"$error|getSource")),getSource:function(error){var parts=error.source.split("\n"); +if(parts.length!=2){return error.source +}var limit=50; +var column=parts[1].length; +if(column>=limit){parts[0]="..."+parts[0].substr(column-limit); +parts[1]="..."+parts[1].substr(column-limit) +}if(parts[0].length>80){parts[0]=parts[0].substr(0,80)+"..." +}return parts.join("\n") +}}); +Firebug.registerModule(Firebug.XMLViewerModel) +}}); +FBL.ns(function(){with(FBL){var consoleQueue=[]; +var lastHighlightedObject; +var FirebugContext=Env.browser; +var maxQueueRequests=500; +Firebug.ConsoleBase={log:function(object,context,className,rep,noThrottle,sourceLink){return this.logRow(appendObject,object,context,className,rep,sourceLink,noThrottle) +},logFormatted:function(objects,context,className,noThrottle,sourceLink){return this.logRow(appendFormatted,objects,context,className,null,sourceLink,noThrottle) +},openGroup:function(objects,context,className,rep,noThrottle,sourceLink,noPush){return this.logRow(appendOpenGroup,objects,context,className,rep,sourceLink,noThrottle) +},closeGroup:function(context,noThrottle){return this.logRow(appendCloseGroup,null,context,null,null,null,noThrottle,true) +},logRow:function(appender,objects,context,className,rep,sourceLink,noThrottle,noRow){noThrottle=true; +if(!context){context=FirebugContext +}if(FBTrace.DBG_ERRORS&&!context){FBTrace.sysout("Console.logRow has no context, skipping objects",objects) +}if(!context){return +}if(noThrottle||!context){var panel=this.getPanel(context); +if(panel){var row=panel.append(appender,objects,className,rep,sourceLink,noRow); +var container=panel.panelNode; +return row +}else{consoleQueue.push([appender,objects,context,className,rep,sourceLink,noThrottle,noRow]) +}}else{if(!context.throttle){return +}var args=[appender,objects,context,className,rep,sourceLink,true,noRow]; +context.throttle(this.logRow,this,args) +}},appendFormatted:function(args,row,context){if(!context){context=FirebugContext +}var panel=this.getPanel(context); +panel.appendFormatted(args,row) +},clear:function(context){if(!context){context=Firebug.context +}var panel=this.getPanel(context,true); +if(panel){panel.clear() +}},getPanel:function(context,noCreate){return Firebug.chrome?Firebug.chrome.getPanel("Console"):null +}}; +var ActivableConsole=extend(Firebug.ConsoleBase,{isAlwaysEnabled:function(){return true +}}); +Firebug.Console=Firebug.Console=extend(ActivableConsole,{dispatchName:"console",error:function(){Firebug.Console.logFormatted(arguments,Firebug.browser,"error") +},flush:function(){dispatch(this.fbListeners,"flush",[]); +for(var i=0,length=consoleQueue.length; +i<length; +i++){var args=consoleQueue[i]; +this.logRow.apply(this,args) +}},showPanel:function(browser,panel){},getFirebugConsoleElement:function(context,win){var element=win.document.getElementById("_firebugConsole"); +if(!element){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("getFirebugConsoleElement forcing element") +}var elementForcer="(function(){var r=null; try { r = window._getFirebugConsoleElement();}catch(exc){r=exc;} return r;})();"; +if(context.stopped){Firebug.Console.injector.evaluateConsoleScript(context) +}else{var r=Firebug.CommandLine.evaluateInWebPage(elementForcer,context,win) +}if(FBTrace.DBG_CONSOLE){FBTrace.sysout("getFirebugConsoleElement forcing element result "+r,r) +}var element=win.document.getElementById("_firebugConsole"); +if(!element){if(FBTrace.DBG_ERRORS){FBTrace.sysout("console.getFirebugConsoleElement: no _firebugConsole in win:",win) +}Firebug.Console.logFormatted(["Firebug cannot find _firebugConsole element",r,win],context,"error",true) +}}return element +},isReadyElsePreparing:function(context,win){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("console.isReadyElsePreparing, win is "+(win?"an argument: ":"null, context.window: ")+(win?win.location:context.window.location),(win?win:context.window)) +}if(win){return this.injector.attachIfNeeded(context,win) +}else{var attached=true; +for(var i=0; +i<context.windows.length; +i++){attached=attached&&this.injector.attachIfNeeded(context,context.windows[i]) +}if(context.windows.indexOf(context.window)==-1){FBTrace.sysout("isReadyElsePreparing ***************** context.window not in context.windows") +}if(FBTrace.DBG_CONSOLE){FBTrace.sysout("console.isReadyElsePreparing attached to "+context.windows.length+" and returns "+attached) +}return attached +}},initialize:function(){this.panelName="console" +},enable:function(){if(Firebug.Console.isAlwaysEnabled()){this.watchForErrors() +}},disable:function(){if(Firebug.Console.isAlwaysEnabled()){this.unwatchForErrors() +}},initContext:function(context,persistedState){Firebug.ActivableModule.initContext.apply(this,arguments); +context.consoleReloadWarning=true +},loadedContext:function(context){for(var url in context.sourceFileMap){return +}this.clearReloadWarning(context) +},clearReloadWarning:function(context){if(context.consoleReloadWarning){var panel=context.getPanel(this.panelName); +panel.clearReloadWarning(); +delete context.consoleReloadWarning +}},togglePersist:function(context){var panel=context.getPanel(this.panelName); +panel.persistContent=panel.persistContent?false:true; +Firebug.chrome.setGlobalAttribute("cmd_togglePersistConsole","checked",panel.persistContent) +},showContext:function(browser,context){Firebug.chrome.setGlobalAttribute("cmd_clearConsole","disabled",!context); +Firebug.ActivableModule.showContext.apply(this,arguments) +},destroyContext:function(context,persistedState){Firebug.Console.injector.detachConsole(context,context.window) +},onPanelEnable:function(panelName){if(panelName!=this.panelName){return +}if(FBTrace.DBG_CONSOLE){FBTrace.sysout("console.onPanelEnable**************") +}this.watchForErrors(); +Firebug.Debugger.addDependentModule(this) +},onPanelDisable:function(panelName){if(panelName!=this.panelName){return +}if(FBTrace.DBG_CONSOLE){FBTrace.sysout("console.onPanelDisable**************") +}Firebug.Debugger.removeDependentModule(this); +this.unwatchForErrors(); +this.clear() +},onSuspendFirebug:function(){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("console.onSuspendFirebug\n") +}if(Firebug.Console.isAlwaysEnabled()){this.unwatchForErrors() +}},onResumeFirebug:function(){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("console.onResumeFirebug\n") +}if(Firebug.Console.isAlwaysEnabled()){this.watchForErrors() +}},watchForErrors:function(){Firebug.Errors.checkEnabled(); +$("fbStatusIcon").setAttribute("console","on") +},unwatchForErrors:function(){Firebug.Errors.checkEnabled(); +$("fbStatusIcon").removeAttribute("console") +},onMonitorScript:function(context,frame){Firebug.Console.log(frame,context) +},onFunctionCall:function(context,frame,depth,calling){if(calling){Firebug.Console.openGroup([frame,"depth:"+depth],context) +}else{Firebug.Console.closeGroup(context) +}},logRow:function(appender,objects,context,className,rep,sourceLink,noThrottle,noRow){if(!context){context=FirebugContext +}if(FBTrace.DBG_WINDOWS&&!context){FBTrace.sysout("Console.logRow: no context \n") +}if(this.isAlwaysEnabled()){return Firebug.ConsoleBase.logRow.apply(this,arguments) +}}}); +Firebug.ConsoleListener={log:function(context,object,className,sourceLink){},logFormatted:function(context,objects,className,sourceLink){}}; +Firebug.ConsolePanel=function(){}; +Firebug.ConsolePanel.prototype=extend(Firebug.Panel,{wasScrolledToBottom:false,messageCount:0,lastLogTime:0,groups:null,limit:null,append:function(appender,objects,className,rep,sourceLink,noRow){var container=this.getTopContainer(); +if(noRow){appender.apply(this,[objects]) +}else{var row=this.createRow("logRow",className); +appender.apply(this,[objects,row,rep]); +if(sourceLink){FirebugReps.SourceLink.tag.append({object:sourceLink},row) +}container.appendChild(row); +this.filterLogRow(row,this.wasScrolledToBottom); +if(this.wasScrolledToBottom){scrollToBottom(this.panelNode) +}return row +}},clear:function(){if(this.panelNode){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("ConsolePanel.clear") +}clearNode(this.panelNode); +this.insertLogLimit(this.context) +}},insertLogLimit:function(){var row=this.createRow("limitRow"); +var limitInfo={totalCount:0,limitPrefsTitle:$STRF("LimitPrefsTitle",[Firebug.prefDomain+".console.logLimit"])}; +return; +var netLimitRep=Firebug.NetMonitor.NetLimit; +var nodes=netLimitRep.createTable(row,limitInfo); +this.limit=nodes[1]; +var container=this.panelNode; +container.insertBefore(nodes[0],container.firstChild) +},insertReloadWarning:function(){this.warningRow=this.append(appendObject,$STR("message.Reload to activate window console"),"info") +},clearReloadWarning:function(){if(this.warningRow){this.warningRow.parentNode.removeChild(this.warningRow); +delete this.warningRow +}},appendObject:function(object,row,rep){if(!rep){rep=Firebug.getRep(object) +}return rep.tag.append({object:object},row) +},appendFormatted:function(objects,row,rep){if(!objects||!objects.length){return +}function logText(text,row){var node=row.ownerDocument.createTextNode(text); +row.appendChild(node) +}var format=objects[0]; +var objIndex=0; +if(typeof(format)!="string"){format=""; +objIndex=-1 +}else{if(objects.length===1){if(format.length<1){logText("(an empty string)",row); +return +}}}var parts=parseFormat(format); +var trialIndex=objIndex; +for(var i=0; +i<parts.length; +i++){var part=parts[i]; +if(part&&typeof(part)=="object"){if(++trialIndex>objects.length){format=""; +objIndex=-1; +parts.length=0; +break +}}}for(var i=0; +i<parts.length; +++i){var part=parts[i]; +if(part&&typeof(part)=="object"){var object=objects[++objIndex]; +if(typeof(object)!="undefined"){this.appendObject(object,row,part.rep) +}else{this.appendObject(part.type,row,FirebugReps.Text) +}}else{FirebugReps.Text.tag.append({object:part},row) +}}for(var i=objIndex+1; +i<objects.length; +++i){logText(" ",row); +var object=objects[i]; +if(typeof(object)=="string"){FirebugReps.Text.tag.append({object:object},row) +}else{this.appendObject(object,row) +}}},appendOpenGroup:function(objects,row,rep){if(!this.groups){this.groups=[] +}setClass(row,"logGroup"); +setClass(row,"opened"); +var innerRow=this.createRow("logRow"); +setClass(innerRow,"logGroupLabel"); +if(rep){rep.tag.replace({objects:objects},innerRow) +}else{this.appendFormatted(objects,innerRow,rep) +}row.appendChild(innerRow); +var groupBody=this.createRow("logGroupBody"); +row.appendChild(groupBody); +groupBody.setAttribute("role","group"); +this.groups.push(groupBody); +addEvent(innerRow,"mousedown",function(event){if(isLeftClick(event)){var target=event.target||event.srcElement; +target=getAncestorByClass(target,"logGroupLabel"); +var groupRow=target.parentNode; +if(hasClass(groupRow,"opened")){removeClass(groupRow,"opened"); +target.setAttribute("aria-expanded","false") +}else{setClass(groupRow,"opened"); +target.setAttribute("aria-expanded","true") +}}}) +},appendCloseGroup:function(object,row,rep){if(this.groups){this.groups.pop() +}},onMouseMove:function(event){if(!Firebug.Inspector){return +}var target=event.srcElement||event.target; +var object=getAncestorByClass(target,"objectLink-element"); +object=object?object.repObject:null; +if(object&&instanceOf(object,"Element")&&object.nodeType==1){if(object!=lastHighlightedObject){Firebug.Inspector.drawBoxModel(object); +object=lastHighlightedObject +}}else{Firebug.Inspector.hideBoxModel() +}},onMouseDown:function(event){var target=event.srcElement||event.target; +var object=getAncestorByClass(target,"objectLink"); +var repObject=object?object.repObject:null; +if(!repObject){return +}if(hasClass(object,"objectLink-object")){Firebug.chrome.selectPanel("DOM"); +Firebug.chrome.getPanel("DOM").select(repObject,true) +}else{if(hasClass(object,"objectLink-element")){Firebug.chrome.selectPanel("HTML"); +Firebug.chrome.getPanel("HTML").select(repObject,true) +}}},name:"Console",title:"Console",options:{hasCommandLine:true,hasToolButtons:true,isPreRendered:true},create:function(){Firebug.Panel.create.apply(this,arguments); +this.context=Firebug.browser.window; +this.document=Firebug.chrome.document; +this.onMouseMove=bind(this.onMouseMove,this); +this.onMouseDown=bind(this.onMouseDown,this); +this.clearButton=new Button({element:$("fbConsole_btClear"),owner:Firebug.Console,onClick:Firebug.Console.clear}) +},initialize:function(){Firebug.Panel.initialize.apply(this,arguments); +if(!this.persistedContent&&Firebug.Console.isAlwaysEnabled()){this.insertLogLimit(this.context); +this.updateMaxLimit(); +if(this.context.consoleReloadWarning){this.insertReloadWarning() +}}addEvent(this.panelNode,"mouseover",this.onMouseMove); +addEvent(this.panelNode,"mousedown",this.onMouseDown); +this.clearButton.initialize() +},initializeNode:function(){if(FBTrace.DBG_CONSOLE){this.onScroller=bind(this.onScroll,this); +addEvent(this.panelNode,"scroll",this.onScroller) +}this.onResizer=bind(this.onResize,this); +this.resizeEventTarget=Firebug.chrome.$("fbContentBox"); +addEvent(this.resizeEventTarget,"resize",this.onResizer) +},destroyNode:function(){if(this.onScroller){removeEvent(this.panelNode,"scroll",this.onScroller) +}},shutdown:function(){this.clearButton.shutdown(); +removeEvent(this.panelNode,"mousemove",this.onMouseMove); +removeEvent(this.panelNode,"mousedown",this.onMouseDown); +this.destroyNode(); +Firebug.Panel.shutdown.apply(this,arguments) +},ishow:function(state){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("Console.panel show; "+this.context.getName(),state) +}var enabled=Firebug.Console.isAlwaysEnabled(); +if(enabled){Firebug.Console.disabledPanelPage.hide(this); +this.showCommandLine(true); +this.showToolbarButtons("fbConsoleButtons",true); +Firebug.chrome.setGlobalAttribute("cmd_togglePersistConsole","checked",this.persistContent); +if(state&&state.wasScrolledToBottom){this.wasScrolledToBottom=state.wasScrolledToBottom; +delete state.wasScrolledToBottom +}if(this.wasScrolledToBottom){scrollToBottom(this.panelNode) +}if(FBTrace.DBG_CONSOLE){FBTrace.sysout("console.show ------------------ wasScrolledToBottom: "+this.wasScrolledToBottom+", "+this.context.getName()) +}}else{this.hide(state); +Firebug.Console.disabledPanelPage.show(this) +}},ihide:function(state){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("Console.panel hide; "+this.context.getName(),state) +}this.showToolbarButtons("fbConsoleButtons",false); +this.showCommandLine(false); +if(FBTrace.DBG_CONSOLE){FBTrace.sysout("console.hide ------------------ wasScrolledToBottom: "+this.wasScrolledToBottom+", "+this.context.getName()) +}},destroy:function(state){if(this.panelNode.offsetHeight){this.wasScrolledToBottom=isScrolledToBottom(this.panelNode) +}if(state){state.wasScrolledToBottom=this.wasScrolledToBottom +}if(FBTrace.DBG_CONSOLE){FBTrace.sysout("console.destroy ------------------ wasScrolledToBottom: "+this.wasScrolledToBottom+", "+this.context.getName()) +}},shouldBreakOnNext:function(){return Firebug.getPref(Firebug.servicePrefDomain,"breakOnErrors") +},getBreakOnNextTooltip:function(enabled){return(enabled?$STR("console.Disable Break On All Errors"):$STR("console.Break On All Errors")) +},enablePanel:function(module){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("console.ConsolePanel.enablePanel; "+this.context.getName()) +}Firebug.ActivablePanel.enablePanel.apply(this,arguments); +this.showCommandLine(true); +if(this.wasScrolledToBottom){scrollToBottom(this.panelNode) +}},disablePanel:function(module){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("console.ConsolePanel.disablePanel; "+this.context.getName()) +}Firebug.ActivablePanel.disablePanel.apply(this,arguments); +this.showCommandLine(false) +},getOptionsMenuItems:function(){return[optionMenu("ShowJavaScriptErrors","showJSErrors"),optionMenu("ShowJavaScriptWarnings","showJSWarnings"),optionMenu("ShowCSSErrors","showCSSErrors"),optionMenu("ShowXMLErrors","showXMLErrors"),optionMenu("ShowXMLHttpRequests","showXMLHttpRequests"),optionMenu("ShowChromeErrors","showChromeErrors"),optionMenu("ShowChromeMessages","showChromeMessages"),optionMenu("ShowExternalErrors","showExternalErrors"),optionMenu("ShowNetworkErrors","showNetworkErrors"),this.getShowStackTraceMenuItem(),this.getStrictOptionMenuItem(),"-",optionMenu("LargeCommandLine","largeCommandLine")] +},getShowStackTraceMenuItem:function(){var menuItem=serviceOptionMenu("ShowStackTrace","showStackTrace"); +if(FirebugContext&&!Firebug.Debugger.isAlwaysEnabled()){menuItem.disabled=true +}return menuItem +},getStrictOptionMenuItem:function(){var strictDomain="javascript.options"; +var strictName="strict"; +var strictValue=prefs.getBoolPref(strictDomain+"."+strictName); +return{label:"JavascriptOptionsStrict",type:"checkbox",checked:strictValue,command:bindFixed(Firebug.setPref,Firebug,strictDomain,strictName,!strictValue)} +},getBreakOnMenuItems:function(){return[] +},search:function(text){if(!text){return +}if(this.matchSet){for(var i in this.matchSet){removeClass(this.matchSet[i],"matched") +}}this.matchSet=[]; +function findRow(node){return getAncestorByClass(node,"logRow") +}var search=new TextSearch(this.panelNode,findRow); +var logRow=search.find(text); +if(!logRow){dispatch([Firebug.A11yModel],"onConsoleSearchMatchFound",[this,text,[]]); +return false +}for(; +logRow; +logRow=search.findNext()){setClass(logRow,"matched"); +this.matchSet.push(logRow) +}dispatch([Firebug.A11yModel],"onConsoleSearchMatchFound",[this,text,this.matchSet]); +return true +},breakOnNext:function(breaking){Firebug.setPref(Firebug.servicePrefDomain,"breakOnErrors",breaking) +},createRow:function(rowName,className){var elt=this.document.createElement("div"); +elt.className=rowName+(className?" "+rowName+"-"+className:""); +return elt +},getTopContainer:function(){if(this.groups&&this.groups.length){return this.groups[this.groups.length-1] +}else{return this.panelNode +}},filterLogRow:function(logRow,scrolledToBottom){if(this.searchText){setClass(logRow,"matching"); +setClass(logRow,"matched"); +setTimeout(bindFixed(function(){if(this.searchFilter(this.searchText,logRow)){this.matchSet.push(logRow) +}else{removeClass(logRow,"matched") +}removeClass(logRow,"matching"); +if(scrolledToBottom){scrollToBottom(this.panelNode) +}},this),100) +}},searchFilter:function(text,logRow){var count=this.panelNode.childNodes.length; +var searchRange=this.document.createRange(); +searchRange.setStart(this.panelNode,0); +searchRange.setEnd(this.panelNode,count); +var startPt=this.document.createRange(); +startPt.setStartBefore(logRow); +var endPt=this.document.createRange(); +endPt.setStartAfter(logRow); +return finder.Find(text,searchRange,startPt,endPt)!=null +},observe:function(subject,topic,data){if(topic!="nsPref:changed"){return +}var prefDomain="Firebug.extension."; +var prefName=data.substr(prefDomain.length); +if(prefName=="console.logLimit"){this.updateMaxLimit() +}},updateMaxLimit:function(){var value=1000; +maxQueueRequests=value?value:maxQueueRequests +},showCommandLine:function(shouldShow){return; +if(shouldShow){collapse(Firebug.chrome.$("fbCommandBox"),false); +Firebug.CommandLine.setMultiLine(Firebug.largeCommandLine,Firebug.chrome) +}else{Firebug.CommandLine.setMultiLine(false,Firebug.chrome,Firebug.largeCommandLine); +collapse(Firebug.chrome.$("fbCommandBox"),true) +}},onScroll:function(event){this.wasScrolledToBottom=FBL.isScrolledToBottom(this.panelNode); +if(FBTrace.DBG_CONSOLE){FBTrace.sysout("console.onScroll ------------------ wasScrolledToBottom: "+this.wasScrolledToBottom+", wasScrolledToBottom: "+this.context.getName(),event) +}},onResize:function(event){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("console.onResize ------------------ wasScrolledToBottom: "+this.wasScrolledToBottom+", offsetHeight: "+this.panelNode.offsetHeight+", scrollTop: "+this.panelNode.scrollTop+", scrollHeight: "+this.panelNode.scrollHeight+", "+this.context.getName(),event) +}if(this.wasScrolledToBottom){scrollToBottom(this.panelNode) +}}}); +function parseFormat(format){var parts=[]; +if(format.length<=0){return parts +}var reg=/((^%|.%)(\d+)?(\.)([a-zA-Z]))|((^%|.%)([a-zA-Z]))/; +for(var m=reg.exec(format); +m; +m=reg.exec(format)){if(m[0].substr(0,2)=="%%"){parts.push(format.substr(0,m.index)); +parts.push(m[0].substr(1)) +}else{var type=m[8]?m[8]:m[5]; +var precision=m[3]?parseInt(m[3]):(m[4]=="."?-1:0); +var rep=null; +switch(type){case"s":rep=FirebugReps.Text; +break; +case"f":case"i":case"d":rep=FirebugReps.Number; +break; +case"o":rep=null; +break +}parts.push(format.substr(0,m[0][0]=="%"?m.index:m.index+1)); +parts.push({rep:rep,precision:precision,type:("%"+type)}) +}format=format.substr(m.index+m[0].length) +}parts.push(format); +return parts +}var appendObject=Firebug.ConsolePanel.prototype.appendObject; +var appendFormatted=Firebug.ConsolePanel.prototype.appendFormatted; +var appendOpenGroup=Firebug.ConsolePanel.prototype.appendOpenGroup; +var appendCloseGroup=Firebug.ConsolePanel.prototype.appendCloseGroup; +Firebug.registerModule(Firebug.Console); +Firebug.registerPanel(Firebug.ConsolePanel) +}}); +FBL.ns(function(){with(FBL){var frameCounters={}; +var traceRecursion=0; +Firebug.Console.injector={install:function(context){var win=context.window; +var consoleHandler=new FirebugConsoleHandler(context,win); +var properties=["log","debug","info","warn","error","assert","dir","dirxml","group","groupCollapsed","groupEnd","time","timeEnd","count","trace","profile","profileEnd","clear","open","close"]; +var Handler=function(name){var c=consoleHandler; +var f=consoleHandler[name]; +return function(){return f.apply(c,arguments) +} +}; +var installer=function(c){for(var i=0,l=properties.length; +i<l; +i++){var name=properties[i]; +c[name]=new Handler(name); +c.firebuglite=Firebug.version +}}; +var sandbox; +if(win.console){if(Env.Options.overrideConsole){sandbox=new win.Function("arguments.callee.install(window.console={})") +}else{return +}}else{try{sandbox=new win.Function("arguments.callee.install(window.console={})") +}catch(E){sandbox=new win.Function("arguments.callee.install(window.firebug={})") +}}sandbox.install=installer; +sandbox() +},isAttached:function(context,win){if(win.wrappedJSObject){var attached=(win.wrappedJSObject._getFirebugConsoleElement?true:false); +if(FBTrace.DBG_CONSOLE){FBTrace.sysout("Console.isAttached:"+attached+" to win.wrappedJSObject "+safeGetWindowLocation(win.wrappedJSObject)) +}return attached +}else{if(FBTrace.DBG_CONSOLE){FBTrace.sysout("Console.isAttached? to win "+win.location+" fnc:"+win._getFirebugConsoleElement) +}return(win._getFirebugConsoleElement?true:false) +}},attachIfNeeded:function(context,win){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("Console.attachIfNeeded has win "+(win?((win.wrappedJSObject?"YES":"NO")+" wrappedJSObject"):"null")) +}if(this.isAttached(context,win)){return true +}if(FBTrace.DBG_CONSOLE){FBTrace.sysout("Console.attachIfNeeded found isAttached false ") +}this.attachConsoleInjector(context,win); +this.addConsoleListener(context,win); +Firebug.Console.clearReloadWarning(context); +var attached=this.isAttached(context,win); +if(attached){dispatch(Firebug.Console.fbListeners,"onConsoleInjected",[context,win]) +}return attached +},attachConsoleInjector:function(context,win){var consoleInjection=this.getConsoleInjectionScript(); +if(FBTrace.DBG_CONSOLE){FBTrace.sysout("attachConsoleInjector evaluating in "+win.location,consoleInjection) +}Firebug.CommandLine.evaluateInWebPage(consoleInjection,context,win); +if(FBTrace.DBG_CONSOLE){FBTrace.sysout("attachConsoleInjector evaluation completed for "+win.location) +}},getConsoleInjectionScript:function(){if(!this.consoleInjectionScript){var script=""; +script+="window.__defineGetter__('console', function() {\n"; +script+=" return (window._firebug ? window._firebug : window.loadFirebugConsole()); })\n\n"; +script+="window.loadFirebugConsole = function() {\n"; +script+="window._firebug = new _FirebugConsole();"; +if(FBTrace.DBG_CONSOLE){script+=" window.dump('loadFirebugConsole '+window.location+'\\n');\n" +}script+=" return window._firebug };\n"; +var theFirebugConsoleScript=getResource("chrome://firebug/content/consoleInjected.js"); +script+=theFirebugConsoleScript; +this.consoleInjectionScript=script +}return this.consoleInjectionScript +},forceConsoleCompilationInPage:function(context,win){if(!win){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("no win in forceConsoleCompilationInPage!") +}return +}var consoleForcer="window.loadFirebugConsole();"; +if(context.stopped){Firebug.Console.injector.evaluateConsoleScript(context) +}else{Firebug.CommandLine.evaluateInWebPage(consoleForcer,context,win) +}if(FBTrace.DBG_CONSOLE){FBTrace.sysout("forceConsoleCompilationInPage "+win.location,consoleForcer) +}},evaluateConsoleScript:function(context){var scriptSource=this.getConsoleInjectionScript(); +Firebug.Debugger.evaluate(scriptSource,context) +},addConsoleListener:function(context,win){if(!context.activeConsoleHandlers){context.activeConsoleHandlers=[] +}else{for(var i=0; +i<context.activeConsoleHandlers.length; +i++){if(context.activeConsoleHandlers[i].window==win){context.activeConsoleHandlers[i].detach(); +if(FBTrace.DBG_CONSOLE){FBTrace.sysout("consoleInjector addConsoleListener removed handler("+context.activeConsoleHandlers[i].handler_name+") from _firebugConsole in : "+win.location+"\n") +}context.activeConsoleHandlers.splice(i,1) +}}}var element=Firebug.Console.getFirebugConsoleElement(context,win); +if(element){element.setAttribute("FirebugVersion",Firebug.version) +}else{return false +}var handler=new FirebugConsoleHandler(context,win); +handler.attachTo(element); +context.activeConsoleHandlers.push(handler); +if(FBTrace.DBG_CONSOLE){FBTrace.sysout("consoleInjector addConsoleListener attached handler("+handler.handler_name+") to _firebugConsole in : "+win.location+"\n") +}return true +},detachConsole:function(context,win){if(win&&win.document){var element=win.document.getElementById("_firebugConsole"); +if(element){element.parentNode.removeChild(element) +}}}}; +var total_handlers=0; +var FirebugConsoleHandler=function FirebugConsoleHandler(context,win){this.window=win; +this.attachTo=function(element){this.element=element; +this.boundHandler=bind(this.handleEvent,this); +this.element.addEventListener("firebugAppendConsole",this.boundHandler,true) +}; +this.detach=function(){this.element.removeEventListener("firebugAppendConsole",this.boundHandler,true) +}; +this.handler_name=++total_handlers; +this.handleEvent=function(event){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("FirebugConsoleHandler("+this.handler_name+") "+event.target.getAttribute("methodName")+", event",event) +}if(!Firebug.CommandLine.CommandHandler.handle(event,this,win)){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("FirebugConsoleHandler",this) +}var methodName=event.target.getAttribute("methodName"); +Firebug.Console.log($STRF("console.MethodNotSupported",[methodName])) +}}; +this.firebuglite=Firebug.version; +this.init=function(){var consoleElement=win.document.getElementById("_firebugConsole"); +consoleElement.setAttribute("FirebugVersion",Firebug.version) +}; +this.log=function(){logFormatted(arguments,"log") +}; +this.debug=function(){logFormatted(arguments,"debug",true) +}; +this.info=function(){logFormatted(arguments,"info",true) +}; +this.warn=function(){logFormatted(arguments,"warn",true) +}; +this.error=function(){logFormatted(arguments,"error",true) +}; +this.exception=function(){logAssert("error",arguments) +}; +this.assert=function(x){if(!x){var rest=[]; +for(var i=1; +i<arguments.length; +i++){rest.push(arguments[i]) +}logAssert("assert",rest) +}}; +this.dir=function(o){Firebug.Console.log(o,context,"dir",Firebug.DOMPanel.DirTable) +}; +this.dirxml=function(o){if(instanceOf(o,"Window")){o=o.document.documentElement +}else{if(instanceOf(o,"Document")){o=o.documentElement +}}Firebug.Console.log(o,context,"dirxml",Firebug.HTMLPanel.SoloElement) +}; +this.group=function(){var sourceLink=null; +Firebug.Console.openGroup(arguments,null,"group",null,false,sourceLink) +}; +this.groupEnd=function(){Firebug.Console.closeGroup(context) +}; +this.groupCollapsed=function(){var sourceLink=getStackLink(); +var row=Firebug.Console.openGroup(arguments,null,"group",null,true,sourceLink); +removeClass(row,"opened") +}; +this.profile=function(title){logFormatted(["console.profile() not supported."],"warn",true) +}; +this.profileEnd=function(){logFormatted(["console.profile() not supported."],"warn",true) +}; +this.count=function(key){var frameId="0"; +if(frameId){if(!frameCounters){frameCounters={} +}if(key!=undefined){frameId+=key +}var frameCounter=frameCounters[frameId]; +if(!frameCounter){var logRow=logFormatted(["0"],null,true,true); +frameCounter={logRow:logRow,count:1}; +frameCounters[frameId]=frameCounter +}else{++frameCounter.count +}var label=key==undefined?frameCounter.count:key+" "+frameCounter.count; +frameCounter.logRow.firstChild.firstChild.nodeValue=label +}}; +this.trace=function(){var getFuncName=function getFuncName(f){if(f.getName instanceof Function){return f.getName() +}if(f.name){return f.name +}var name=f.toString().match(/function\s*([_$\w\d]*)/)[1]; +return name||"anonymous" +}; +var wasVisited=function(fn){for(var i=0,l=frames.length; +i<l; +i++){if(frames[i].fn==fn){return true +}}return false +}; +traceRecursion++; +if(traceRecursion>1){traceRecursion--; +return +}var frames=[]; +for(var fn=arguments.callee.caller.caller; +fn; +fn=fn.caller){if(wasVisited(fn)){break +}var args=[]; +for(var i=0,l=fn.arguments.length; +i<l; +++i){args.push({value:fn.arguments[i]}) +}frames.push({fn:fn,name:getFuncName(fn),args:args}) +}try{(0)() +}catch(e){var result=e; +var stack=result.stack||result.stacktrace||""; +stack=stack.replace(/\n\r|\r\n/g,"\n"); +var items=stack.split(/[\n\r]/); +if(FBL.isSafari){var reChromeStackItem=/^\s+at\s+(.*)((?:http|https|ftp|file):\/\/.*)$/; +var reChromeStackItemName=/\s*\($/; +var reChromeStackItemValue=/^(.+)\:(\d+\:\d+)\)?$/; +var framePos=0; +for(var i=4,length=items.length; +i<length; +i++,framePos++){var frame=frames[framePos]; +var item=items[i]; +var match=item.match(reChromeStackItem); +if(match){var name=match[1]; +if(name){name=name.replace(reChromeStackItemName,""); +frame.name=name +}var value=match[2].match(reChromeStackItemValue); +if(value){frame.href=value[1]; +frame.lineNo=value[2] +}}}}else{if(FBL.isFirefox){var reFirefoxStackItem=/^(.*)@(.*)$/; +var reFirefoxStackItemValue=/^(.+)\:(\d+)$/; +var framePos=0; +for(var i=2,length=items.length; +i<length; +i++,framePos++){var frame=frames[framePos]||{}; +var item=items[i]; +var match=item.match(reFirefoxStackItem); +if(match){var name=match[1]; +var value=match[2].match(reFirefoxStackItemValue); +if(value){frame.href=value[1]; +frame.lineNo=value[2] +}}}}}}Firebug.Console.log({frames:frames},context,"stackTrace",FirebugReps.StackTrace); +traceRecursion-- +}; +this.trace_ok=function(){var getFuncName=function getFuncName(f){if(f.getName instanceof Function){return f.getName() +}if(f.name){return f.name +}var name=f.toString().match(/function\s*([_$\w\d]*)/)[1]; +return name||"anonymous" +}; +var wasVisited=function(fn){for(var i=0,l=frames.length; +i<l; +i++){if(frames[i].fn==fn){return true +}}return false +}; +var frames=[]; +for(var fn=arguments.callee.caller; +fn; +fn=fn.caller){if(wasVisited(fn)){break +}var args=[]; +for(var i=0,l=fn.arguments.length; +i<l; +++i){args.push({value:fn.arguments[i]}) +}frames.push({fn:fn,name:getFuncName(fn),args:args}) +}Firebug.Console.log({frames:frames},context,"stackTrace",FirebugReps.StackTrace) +}; +this.clear=function(){Firebug.Console.clear(context) +}; +this.time=function(name,reset){if(!name){return +}var time=new Date().getTime(); +if(!this.timeCounters){this.timeCounters={} +}var key="KEY"+name.toString(); +if(!reset&&this.timeCounters[key]){return +}this.timeCounters[key]=time +}; +this.timeEnd=function(name){var time=new Date().getTime(); +if(!this.timeCounters){return +}var key="KEY"+name.toString(); +var timeCounter=this.timeCounters[key]; +if(timeCounter){var diff=time-timeCounter; +var label=name+": "+diff+"ms"; +this.info(label); +delete this.timeCounters[key] +}return diff +}; +this.evaluated=function(result,context){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("consoleInjector.FirebugConsoleHandler evalutated default called",result) +}Firebug.Console.log(result,context) +}; +this.evaluateError=function(result,context){Firebug.Console.log(result,context,"errorMessage") +}; +function logFormatted(args,className,linkToSource,noThrottle){var sourceLink=linkToSource?getStackLink():null; +return Firebug.Console.logFormatted(args,context,className,noThrottle,sourceLink) +}function logAssert(category,args){Firebug.Errors.increaseCount(context); +if(!args||!args.length||args.length==0){var msg=[FBL.$STR("Assertion")] +}else{var msg=args[0] +}if(Firebug.errorStackTrace){var trace=Firebug.errorStackTrace; +delete Firebug.errorStackTrace; +if(FBTrace.DBG_CONSOLE){FBTrace.sysout("logAssert trace from errorStackTrace",trace) +}}else{if(msg.stack){var trace=parseToStackTrace(msg.stack); +if(FBTrace.DBG_CONSOLE){FBTrace.sysout("logAssert trace from msg.stack",trace) +}}else{var trace=getJSDUserStack(); +if(FBTrace.DBG_CONSOLE){FBTrace.sysout("logAssert trace from getJSDUserStack",trace) +}}}var errorObject=new FBL.ErrorMessage(msg,(msg.fileName?msg.fileName:win.location),(msg.lineNumber?msg.lineNumber:0),"",category,context,trace); +if(trace&&trace.frames&&trace.frames[0]){errorObject.correctWithStackTrace(trace) +}errorObject.resetSource(); +var objects=errorObject; +if(args.length>1){objects=[errorObject]; +for(var i=1; +i<args.length; +i++){objects.push(args[i]) +}}var row=Firebug.Console.log(objects,context,"errorMessage",null,true); +row.scrollIntoView() +}function getComponentsStackDump(){var frame=Components.stack; +var userURL=win.location.href.toString(); +if(FBTrace.DBG_CONSOLE){FBTrace.sysout("consoleInjector.getComponentsStackDump initial stack for userURL "+userURL,frame) +}while(frame&&FBL.isSystemURL(frame.filename)){frame=frame.caller +}if(frame){frame=frame.caller +}if(frame){frame=frame.caller +}if(FBTrace.DBG_CONSOLE){FBTrace.sysout("consoleInjector.getComponentsStackDump final stack for userURL "+userURL,frame) +}return frame +}function getStackLink(){return +}function getJSDUserStack(){var trace=FBL.getCurrentStackTrace(context); +var frames=trace?trace.frames:null; +if(frames&&(frames.length>0)){var oldest=frames.length-1; +for(var i=0; +i<frames.length; +i++){if(frames[oldest-i].href.indexOf("chrome:")==0){break +}var fn=frames[oldest-i].fn+""; +if(fn&&(fn.indexOf("_firebugEvalEvent")!=-1)){break +}}FBTrace.sysout("consoleInjector getJSDUserStack: "+frames.length+" oldest: "+oldest+" i: "+i+" i - oldest + 2: "+(i-oldest+2),trace); +trace.frames=trace.frames.slice(2-i); +return trace +}else{return"Firebug failed to get stack trace with any frames" +}}}; +FBL.registerConsole=function(){var win=Env.browser.window; +Firebug.Console.injector.install(win) +}; +registerConsole() +}}); +FBL.ns(function(){with(FBL){var commandPrefix=">>>"; +var reOpenBracket=/[\[\(\{]/; +var reCloseBracket=/[\]\)\}]/; +var commandHistory=[]; +var commandPointer=-1; +var isAutoCompleting=null; +var autoCompletePrefix=null; +var autoCompleteExpr=null; +var autoCompleteBuffer=null; +var autoCompletePosition=null; +var fbCommandLine=null; +var fbLargeCommandLine=null; +var fbLargeCommandButtons=null; +var _completion={window:["console"],document:["getElementById","getElementsByTagName"]}; +var _stack=function(command){Firebug.context.persistedState.commandHistory.push(command); +Firebug.context.persistedState.commandPointer=Firebug.context.persistedState.commandHistory.length +}; +Firebug.CommandLine=extend(Firebug.Module,{element:null,isMultiLine:false,isActive:false,initialize:function(doc){this.clear=bind(this.clear,this); +this.enter=bind(this.enter,this); +this.onError=bind(this.onError,this); +this.onKeyDown=bind(this.onKeyDown,this); +this.onMultiLineKeyDown=bind(this.onMultiLineKeyDown,this); +addEvent(Firebug.browser.window,"error",this.onError); +addEvent(Firebug.chrome.window,"error",this.onError) +},shutdown:function(doc){this.deactivate(); +removeEvent(Firebug.browser.window,"error",this.onError); +removeEvent(Firebug.chrome.window,"error",this.onError) +},activate:function(multiLine,hideToggleIcon,onRun){defineCommandLineAPI(); +Firebug.context.persistedState.commandHistory=Firebug.context.persistedState.commandHistory||[]; +Firebug.context.persistedState.commandPointer=Firebug.context.persistedState.commandPointer||-1; +if(this.isActive){if(this.isMultiLine==multiLine){return +}this.deactivate() +}fbCommandLine=$("fbCommandLine"); +fbLargeCommandLine=$("fbLargeCommandLine"); +fbLargeCommandButtons=$("fbLargeCommandButtons"); +if(multiLine){onRun=onRun||this.enter; +this.isMultiLine=true; +this.element=fbLargeCommandLine; +addEvent(this.element,"keydown",this.onMultiLineKeyDown); +addEvent($("fbSmallCommandLineIcon"),"click",Firebug.chrome.hideLargeCommandLine); +this.runButton=new Button({element:$("fbCommand_btRun"),owner:Firebug.CommandLine,onClick:onRun}); +this.runButton.initialize(); +this.clearButton=new Button({element:$("fbCommand_btClear"),owner:Firebug.CommandLine,onClick:this.clear}); +this.clearButton.initialize() +}else{this.isMultiLine=false; +this.element=fbCommandLine; +if(!fbCommandLine){return +}addEvent(this.element,"keydown",this.onKeyDown) +}if(isOpera){fixOperaTabKey(this.element) +}if(this.lastValue){this.element.value=this.lastValue +}this.isActive=true +},deactivate:function(){if(!this.isActive){return +}this.isActive=false; +this.lastValue=this.element.value; +if(this.isMultiLine){removeEvent(this.element,"keydown",this.onMultiLineKeyDown); +removeEvent($("fbSmallCommandLineIcon"),"click",Firebug.chrome.hideLargeCommandLine); +this.runButton.destroy(); +this.clearButton.destroy() +}else{removeEvent(this.element,"keydown",this.onKeyDown) +}this.element=null; +delete this.element; +fbCommandLine=null; +fbLargeCommandLine=null; +fbLargeCommandButtons=null +},focus:function(){this.element.focus() +},blur:function(){this.element.blur() +},clear:function(){this.element.value="" +},evaluate:function(expr){var api="Firebug.CommandLine.API"; +var result=Firebug.context.evaluate(expr,"window",api,Firebug.Console.error); +return result +},enter:function(){var command=this.element.value; +if(!command){return +}_stack(command); +Firebug.Console.log(commandPrefix+" "+stripNewLines(command),Firebug.browser,"command",FirebugReps.Text); +var result=this.evaluate(command); +Firebug.Console.log(result) +},prevCommand:function(){if(Firebug.context.persistedState.commandPointer>0&&Firebug.context.persistedState.commandHistory.length>0){this.element.value=Firebug.context.persistedState.commandHistory[--Firebug.context.persistedState.commandPointer] +}},nextCommand:function(){var element=this.element; +var limit=Firebug.context.persistedState.commandHistory.length-1; +var i=Firebug.context.persistedState.commandPointer; +if(i<limit){element.value=Firebug.context.persistedState.commandHistory[++Firebug.context.persistedState.commandPointer] +}else{if(i==limit){++Firebug.context.persistedState.commandPointer; +element.value="" +}}},autocomplete:function(reverse){var element=this.element; +var command=element.value; +var offset=getExpressionOffset(command); +var valBegin=offset?command.substr(0,offset):""; +var val=command.substr(offset); +var buffer,obj,objName,commandBegin,result,prefix; +if(!isAutoCompleting){var reObj=/(.*[^_$\w\d\.])?((?:[_$\w][_$\w\d]*\.)*)([_$\w][_$\w\d]*)?$/; +var r=reObj.exec(val); +if(r[1]||r[2]||r[3]){commandBegin=r[1]||""; +objName=r[2]||""; +prefix=r[3]||"" +}else{if(val==""){commandBegin=objName=prefix="" +}else{return +}}isAutoCompleting=true; +if(objName==""){obj=window +}else{objName=objName.replace(/\.$/,""); +var n=objName.split("."); +var target=window,o; +for(var i=0,ni; +ni=n[i]; +i++){if(o=target[ni]){target=o +}else{target=null; +break +}}obj=target +}if(obj){autoCompletePrefix=prefix; +autoCompleteExpr=valBegin+commandBegin+(objName?objName+".":""); +autoCompletePosition=-1; +buffer=autoCompleteBuffer=isIE?_completion[objName||"window"]||[]:[]; +for(var p in obj){buffer.push(p) +}}}else{buffer=autoCompleteBuffer +}if(buffer){prefix=autoCompletePrefix; +var diff=reverse?-1:1; +for(var i=autoCompletePosition+diff,l=buffer.length,bi; +i>=0&&i<l; +i+=diff){bi=buffer[i]; +if(bi.indexOf(prefix)==0){autoCompletePosition=i; +result=bi; +break +}}}if(result){element.value=autoCompleteExpr+result +}},setMultiLine:function(multiLine){if(multiLine==this.isMultiLine){return +}this.activate(multiLine) +},onError:function(msg,href,lineNo){href=href||""; +var lastSlash=href.lastIndexOf("/"); +var fileName=lastSlash==-1?href:href.substr(lastSlash+1); +var html=['<span class="errorMessage">',msg,"</span>",'<div class="objectBox-sourceLink">',fileName," (line ",lineNo,")</div>"] +},onKeyDown:function(e){e=e||event; +var code=e.keyCode; +if(code!=9&&code!=16&&code!=17&&code!=18){isAutoCompleting=false +}if(code==13){this.enter(); +this.clear() +}else{if(code==27){setTimeout(this.clear,0) +}else{if(code==38){this.prevCommand() +}else{if(code==40){this.nextCommand() +}else{if(code==9){this.autocomplete(e.shiftKey) +}else{return +}}}}}cancelEvent(e,true); +return false +},onMultiLineKeyDown:function(e){e=e||event; +var code=e.keyCode; +if(code==13&&e.ctrlKey){this.enter() +}}}); +Firebug.registerModule(Firebug.CommandLine); +function getExpressionOffset(command){var bracketCount=0; +var start=command.length-1; +for(; +start>=0; +--start){var c=command[start]; +if((c==","||c==";"||c==" ")&&!bracketCount){break +}if(reOpenBracket.test(c)){if(bracketCount){--bracketCount +}else{break +}}else{if(reCloseBracket.test(c)){++bracketCount +}}}return start+1 +}var CommandLineAPI={$:function(id){return Firebug.browser.document.getElementById(id) +},$$:function(selector,context){context=context||Firebug.browser.document; +return Firebug.Selector?Firebug.Selector(selector,context):Firebug.Console.error("Firebug.Selector module not loaded.") +},$0:null,$1:null,dir:function(o){Firebug.Console.log(o,Firebug.context,"dir",Firebug.DOMPanel.DirTable) +},dirxml:function(o){if(instanceOf(o,"Window")){o=o.document.documentElement +}else{if(instanceOf(o,"Document")){o=o.documentElement +}}Firebug.Console.log(o,Firebug.context,"dirxml",Firebug.HTMLPanel.SoloElement) +}}; +var defineCommandLineAPI=function defineCommandLineAPI(){Firebug.CommandLine.API={}; +for(var m in CommandLineAPI){if(!Env.browser.window[m]){Firebug.CommandLine.API[m]=CommandLineAPI[m] +}}var stack=FirebugChrome.htmlSelectionStack; +if(stack){Firebug.CommandLine.API.$0=stack[0]; +Firebug.CommandLine.API.$1=stack[1] +}} +}}); +FBL.ns(function(){with(FBL){var ElementCache=Firebug.Lite.Cache.Element; +var cacheID=Firebug.Lite.Cache.ID; +var ignoreHTMLProps={sizcache:1,sizset:1}; +if(Firebug.ignoreFirebugElements){ignoreHTMLProps[cacheID]=1 +}Firebug.HTML=extend(Firebug.Module,{appendTreeNode:function(nodeArray,html){var reTrim=/^\s+|\s+$/g; +if(!nodeArray.length){nodeArray=[nodeArray] +}for(var n=0,node; +node=nodeArray[n]; +n++){if(node.nodeType==1){if(Firebug.ignoreFirebugElements&&node.firebugIgnore){continue +}var uid=ElementCache(node); +var child=node.childNodes; +var childLength=child.length; +var nodeName=node.nodeName.toLowerCase(); +var nodeVisible=isVisible(node); +var hasSingleTextChild=childLength==1&&node.firstChild.nodeType==3&&nodeName!="script"&&nodeName!="style"; +var nodeControl=!hasSingleTextChild&&childLength>0?('<div class="nodeControl"></div>'):""; +if(isIE&&nodeControl){html.push(nodeControl) +}if(typeof uid!="undefined"){html.push('<div class="objectBox-element" ','id="',uid,'">',!isIE&&nodeControl?nodeControl:"","<span ",cacheID,'="',uid,'" class="nodeBox',nodeVisible?"":" nodeHidden",'"><<span class="nodeTag">',nodeName,"</span>") +}else{html.push('<div class="objectBox-element"><span class="nodeBox',nodeVisible?"":" nodeHidden",'"><<span class="nodeTag">',nodeName,"</span>") +}for(var i=0; +i<node.attributes.length; +++i){var attr=node.attributes[i]; +if(!attr.specified||isIE&&(browserVersion-0<9)&&typeof attr.nodeValue!="string"||Firebug.ignoreFirebugElements&&ignoreHTMLProps.hasOwnProperty(attr.nodeName)){continue +}var name=attr.nodeName.toLowerCase(); +var value=name=="style"?formatStyles(node.style.cssText):attr.nodeValue; +html.push(' <span class="nodeName">',name,'</span>="<span class="nodeValue">',escapeHTML(value),"</span>"") +}if(hasSingleTextChild){var value=child[0].nodeValue.replace(reTrim,""); +if(value){html.push('><span class="nodeText">',escapeHTML(value),'</span></<span class="nodeTag">',nodeName,"</span>></span></div>") +}else{html.push("/></span></div>") +}}else{if(childLength>0){html.push("></span></div>") +}else{html.push("/></span></div>") +}}}else{if(node.nodeType==3){if(node.parentNode&&(node.parentNode.nodeName.toLowerCase()=="script"||node.parentNode.nodeName.toLowerCase()=="style")){var value=node.nodeValue.replace(reTrim,""); +if(isIE){var src=value+"\n" +}else{var src="\n"+value+"\n" +}var match=src.match(/\n/g); +var num=match?match.length:0; +var s=[],sl=0; +for(var c=1; +c<num; +c++){s[sl++]='<div line="'+c+'">'+c+"</div>" +}html.push('<div class="lineNo">',s.join(""),'</div><pre class="sourceCode">',escapeHTML(src),"</pre>") +}else{var value=node.nodeValue.replace(reTrim,""); +if(value){html.push('<div class="nodeText">',escapeHTML(value),"</div>") +}}}}}},appendTreeChildren:function(treeNode){var doc=Firebug.chrome.document; +var uid=treeNode.id; +var parentNode=ElementCache.get(uid); +if(parentNode.childNodes.length==0){return +}var treeNext=treeNode.nextSibling; +var treeParent=treeNode.parentNode; +var control=isIE?treeNode.previousSibling:treeNode.firstChild; +control.className="nodeControl nodeMaximized"; +var html=[]; +var children=doc.createElement("div"); +children.className="nodeChildren"; +this.appendTreeNode(parentNode.childNodes,html); +children.innerHTML=html.join(""); +treeParent.insertBefore(children,treeNext); +var closeElement=doc.createElement("div"); +closeElement.className="objectBox-element"; +closeElement.innerHTML='</<span class="nodeTag">'+parentNode.nodeName.toLowerCase()+"></span>"; +treeParent.insertBefore(closeElement,treeNext) +},removeTreeChildren:function(treeNode){var children=treeNode.nextSibling; +var closeTag=children.nextSibling; +var control=isIE?treeNode.previousSibling:treeNode.firstChild; +control.className="nodeControl"; +children.parentNode.removeChild(children); +closeTag.parentNode.removeChild(closeTag) +},isTreeNodeVisible:function(id){return $(id) +},select:function(el){var id=el&&ElementCache(el); +if(id){this.selectTreeNode(id) +}},selectTreeNode:function(id){id=""+id; +var node,stack=[]; +while(id&&!this.isTreeNodeVisible(id)){stack.push(id); +var node=ElementCache.get(id).parentNode; +if(node){id=ElementCache(node) +}else{break +}}stack.push(id); +while(stack.length>0){id=stack.pop(); +node=$(id); +if(stack.length>0&&ElementCache.get(id).childNodes.length>0){this.appendTreeChildren(node) +}}selectElement(node); +if(fbPanel1){fbPanel1.scrollTop=Math.round(node.offsetTop-fbPanel1.clientHeight/2) +}}}); +Firebug.registerModule(Firebug.HTML); +function HTMLPanel(){}HTMLPanel.prototype=extend(Firebug.Panel,{name:"HTML",title:"HTML",options:{hasSidePanel:true,isPreRendered:!Firebug.flexChromeEnabled,innerHTMLSync:true},create:function(){Firebug.Panel.create.apply(this,arguments); +this.panelNode.style.padding="4px 3px 1px 15px"; +this.panelNode.style.minWidth="500px"; +if(Env.Options.enablePersistent||Firebug.chrome.type!="popup"){this.createUI() +}if(this.sidePanelBar&&!this.sidePanelBar.selectedPanel){this.sidePanelBar.selectPanel("css") +}},destroy:function(){selectedElement=null; +fbPanel1=null; +selectedSidePanelTS=null; +selectedSidePanelTimer=null; +Firebug.Panel.destroy.apply(this,arguments) +},createUI:function(){var rootNode=Firebug.browser.document.documentElement; +var html=[]; +Firebug.HTML.appendTreeNode(rootNode,html); +this.panelNode.innerHTML=html.join("") +},initialize:function(){Firebug.Panel.initialize.apply(this,arguments); +addEvent(this.panelNode,"click",Firebug.HTML.onTreeClick); +fbPanel1=$("fbPanel1"); +if(!selectedElement){Firebug.context.persistedState.selectedHTMLElementId=Firebug.context.persistedState.selectedHTMLElementId&&ElementCache.get(Firebug.context.persistedState.selectedHTMLElementId)?Firebug.context.persistedState.selectedHTMLElementId:ElementCache(Firebug.browser.document.body); +Firebug.HTML.selectTreeNode(Firebug.context.persistedState.selectedHTMLElementId) +}addEvent(fbPanel1,"mousemove",Firebug.HTML.onListMouseMove); +addEvent($("fbContent"),"mouseout",Firebug.HTML.onListMouseMove); +addEvent(Firebug.chrome.node,"mouseout",Firebug.HTML.onListMouseMove) +},shutdown:function(){removeEvent(fbPanel1,"mousemove",Firebug.HTML.onListMouseMove); +removeEvent($("fbContent"),"mouseout",Firebug.HTML.onListMouseMove); +removeEvent(Firebug.chrome.node,"mouseout",Firebug.HTML.onListMouseMove); +removeEvent(this.panelNode,"click",Firebug.HTML.onTreeClick); +fbPanel1=null; +Firebug.Panel.shutdown.apply(this,arguments) +},reattach:function(){if(Firebug.context.persistedState.selectedHTMLElementId){Firebug.HTML.selectTreeNode(Firebug.context.persistedState.selectedHTMLElementId) +}},updateSelection:function(object){var id=ElementCache(object); +if(id){Firebug.HTML.selectTreeNode(id) +}}}); +Firebug.registerPanel(HTMLPanel); +var formatStyles=function(styles){return isIE?styles.replace(/([^\s]+)\s*:/g,function(m,g){return g.toLowerCase()+":" +}):styles +}; +var selectedElement=null; +var fbPanel1=null; +var selectedSidePanelTS,selectedSidePanelTimer; +var selectElement=function selectElement(e){if(e!=selectedElement){if(selectedElement){selectedElement.className="objectBox-element" +}e.className=e.className+" selectedElement"; +if(FBL.isFirefox){e.style.MozBorderRadius="2px" +}else{if(FBL.isSafari){e.style.WebkitBorderRadius="2px" +}}e.style.borderRadius="2px"; +selectedElement=e; +Firebug.context.persistedState.selectedHTMLElementId=e.id; +var target=ElementCache.get(e.id); +var sidePanelBar=Firebug.chrome.getPanel("HTML").sidePanelBar; +var selectedSidePanel=sidePanelBar?sidePanelBar.selectedPanel:null; +var stack=FirebugChrome.htmlSelectionStack; +stack.unshift(target); +if(stack.length>2){stack.pop() +}var lazySelect=function(){selectedSidePanelTS=new Date().getTime(); +if(selectedSidePanel){selectedSidePanel.select(target,true) +}}; +if(selectedSidePanelTimer){clearTimeout(selectedSidePanelTimer); +selectedSidePanelTimer=null +}if(new Date().getTime()-selectedSidePanelTS>100){setTimeout(lazySelect,0) +}else{selectedSidePanelTimer=setTimeout(lazySelect,150) +}}}; +Firebug.HTML.onTreeClick=function(e){e=e||event; +var targ; +if(e.target){targ=e.target +}else{if(e.srcElement){targ=e.srcElement +}}if(targ.nodeType==3){targ=targ.parentNode +}if(targ.className.indexOf("nodeControl")!=-1||targ.className=="nodeTag"){if(targ.className=="nodeTag"){var control=isIE?(targ.parentNode.previousSibling||targ):(targ.parentNode.previousSibling||targ); +selectElement(targ.parentNode.parentNode); +if(control.className.indexOf("nodeControl")==-1){return +}}else{control=targ +}FBL.cancelEvent(e); +var treeNode=isIE?control.nextSibling:control.parentNode; +if(control.className.indexOf(" nodeMaximized")!=-1){FBL.Firebug.HTML.removeTreeChildren(treeNode) +}else{FBL.Firebug.HTML.appendTreeChildren(treeNode) +}}else{if(targ.className=="nodeValue"||targ.className=="nodeName"){}}}; +function onListMouseOut(e){e=e||event||window; +var targ; +if(e.target){targ=e.target +}else{if(e.srcElement){targ=e.srcElement +}}if(targ.nodeType==3){targ=targ.parentNode +}if(hasClass(targ,"fbPanel")){FBL.Firebug.Inspector.hideBoxModel(); +hoverElement=null +}}var hoverElement=null; +var hoverElementTS=0; +Firebug.HTML.onListMouseMove=function onListMouseMove(e){try{e=e||event||window; +var targ; +if(e.target){targ=e.target +}else{if(e.srcElement){targ=e.srcElement +}}if(targ.nodeType==3){targ=targ.parentNode +}var found=false; +while(targ&&!found){if(!/\snodeBox\s|\sobjectBox-selector\s/.test(" "+targ.className+" ")){targ=targ.parentNode +}else{found=true +}}if(!targ){FBL.Firebug.Inspector.hideBoxModel(); +hoverElement=null; +return +}if(typeof targ.attributes[cacheID]=="undefined"){return +}var uid=targ.attributes[cacheID]; +if(!uid){return +}var el=ElementCache.get(uid.value); +var nodeName=el.nodeName.toLowerCase(); +if(FBL.isIE&&" meta title script link ".indexOf(" "+nodeName+" ")!=-1){return +}if(!/\snodeBox\s|\sobjectBox-selector\s/.test(" "+targ.className+" ")){return +}if(el.id=="FirebugUI"||" html head body br script link iframe ".indexOf(" "+nodeName+" ")!=-1){FBL.Firebug.Inspector.hideBoxModel(); +hoverElement=null; +return +}if((new Date().getTime()-hoverElementTS>40)&&hoverElement!=el){hoverElementTS=new Date().getTime(); +hoverElement=el; +FBL.Firebug.Inspector.drawBoxModel(el) +}}catch(E){}}; +Firebug.Reps={appendText:function(object,html){html.push(escapeHTML(objectToString(object))) +},appendNull:function(object,html){html.push('<span class="objectBox-null">',escapeHTML(objectToString(object)),"</span>") +},appendString:function(object,html){html.push('<span class="objectBox-string">"',escapeHTML(objectToString(object)),""</span>") +},appendInteger:function(object,html){html.push('<span class="objectBox-number">',escapeHTML(objectToString(object)),"</span>") +},appendFloat:function(object,html){html.push('<span class="objectBox-number">',escapeHTML(objectToString(object)),"</span>") +},appendFunction:function(object,html){var reName=/function ?(.*?)\(/; +var m=reName.exec(objectToString(object)); +var name=m&&m[1]?m[1]:"function"; +html.push('<span class="objectBox-function">',escapeHTML(name),"()</span>") +},appendObject:function(object,html){try{if(object==undefined){this.appendNull("undefined",html) +}else{if(object==null){this.appendNull("null",html) +}else{if(typeof object=="string"){this.appendString(object,html) +}else{if(typeof object=="number"){this.appendInteger(object,html) +}else{if(typeof object=="boolean"){this.appendInteger(object,html) +}else{if(typeof object=="function"){this.appendFunction(object,html) +}else{if(object.nodeType==1){this.appendSelector(object,html) +}else{if(typeof object=="object"){if(typeof object.length!="undefined"){this.appendArray(object,html) +}else{this.appendObjectFormatted(object,html) +}}else{this.appendText(object,html) +}}}}}}}}}catch(exc){}},appendObjectFormatted:function(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>") +},appendSelector:function(object,html){var uid=ElementCache(object); +var uidString=uid?[cacheID,'="',uid,'"'].join(""):""; +html.push('<span class="objectBox-selector"',uidString,">"); +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>") +},appendNode:function(node,html){if(node.nodeType==1){var uid=ElementCache(node); +var uidString=uid?[cacheID,'="',uid,'"'].join(""):""; +html.push('<div class="objectBox-element"',uidString,'">',"<span ",cacheID,'="',uid,'" class="nodeBox">','<<span class="nodeTag">',node.nodeName.toLowerCase(),"</span>"); +for(var i=0; +i<node.attributes.length; +++i){var attr=node.attributes[i]; +if(!attr.specified||attr.nodeName==cacheID){continue +}var name=attr.nodeName.toLowerCase(); +var value=name=="style"?node.style.cssText:attr.nodeValue; +html.push(' <span class="nodeName">',name,'</span>="<span class="nodeValue">',escapeHTML(value),"</span>"") +}if(node.firstChild){html.push('></div><div class="nodeChildren">'); +for(var child=node.firstChild; +child; +child=child.nextSibling){this.appendNode(child,html) +}html.push('</div><div class="objectBox-element"></<span class="nodeTag">',node.nodeName.toLowerCase(),"></span></span></div>") +}else{html.push("/></span></div>") +}}else{if(node.nodeType==3){var value=trim(node.nodeValue); +if(value){html.push('<div class="nodeText">',escapeHTML(value),"</div>") +}}}},appendArray:function(object,html){html.push('<span class="objectBox-array"><b>[</b> '); +for(var i=0,l=object.length,obj; +i<l; +++i){this.appendObject(object[i],html); +if(i<l-1){html.push(", ") +}}html.push(" <b>]</b></span>") +}} +}}); +FBL.ns(function(){with(FBL){var maxWidth=100,maxHeight=80; +var infoTipMargin=10; +var infoTipWindowPadding=25; +Firebug.InfoTip=extend(Firebug.Module,{dispatchName:"infoTip",tags:domplate({infoTipTag:DIV({"class":"infoTip"}),colorTag:DIV({style:"background: $rgbValue; width: 100px; height: 40px"}," "),imgTag:DIV({"class":"infoTipImageBox infoTipLoading"},IMG({"class":"infoTipImage",src:"$urlValue",repeat:"$repeat",onload:"$onLoadImage"}),IMG({"class":"infoTipBgImage",collapsed:true,src:"blank.gif"}),DIV({"class":"infoTipCaption"})),onLoadImage:function(event){var img=event.currentTarget||event.srcElement; +var innerBox=img.parentNode; +var caption=getElementByClass(innerBox,"infoTipCaption"); +var bgImg=getElementByClass(innerBox,"infoTipBgImage"); +if(!bgImg){return +}if(isIE){removeClass(innerBox,"infoTipLoading") +}var updateInfoTip=function(){var w=img.naturalWidth||img.width||10,h=img.naturalHeight||img.height||10; +var repeat=img.getAttribute("repeat"); +if(repeat=="repeat-x"||(w==1&&h>1)){collapse(img,true); +collapse(bgImg,false); +bgImg.style.background="url("+img.src+") repeat-x"; +bgImg.style.width=maxWidth+"px"; +if(h>maxHeight){bgImg.style.height=maxHeight+"px" +}else{bgImg.style.height=h+"px" +}}else{if(repeat=="repeat-y"||(h==1&&w>1)){collapse(img,true); +collapse(bgImg,false); +bgImg.style.background="url("+img.src+") repeat-y"; +bgImg.style.height=maxHeight+"px"; +if(w>maxWidth){bgImg.style.width=maxWidth+"px" +}else{bgImg.style.width=w+"px" +}}else{if(repeat=="repeat"||(w==1&&h==1)){collapse(img,true); +collapse(bgImg,false); +bgImg.style.background="url("+img.src+") repeat"; +bgImg.style.width=maxWidth+"px"; +bgImg.style.height=maxHeight+"px" +}else{if(w>maxWidth||h>maxHeight){if(w>h){img.style.width=maxWidth+"px"; +img.style.height=Math.round((h/w)*maxWidth)+"px" +}else{img.style.width=Math.round((w/h)*maxHeight)+"px"; +img.style.height=maxHeight+"px" +}}}}}caption.innerHTML=$STRF(w+" x "+h) +}; +if(isIE){setTimeout(updateInfoTip,0) +}else{updateInfoTip(); +removeClass(innerBox,"infoTipLoading") +}}}),initializeBrowser:function(browser){browser.onInfoTipMouseOut=bind(this.onMouseOut,this,browser); +browser.onInfoTipMouseMove=bind(this.onMouseMove,this,browser); +var doc=browser.document; +if(!doc){return +}addEvent(doc,"mouseover",browser.onInfoTipMouseMove); +addEvent(doc,"mouseout",browser.onInfoTipMouseOut); +addEvent(doc,"mousemove",browser.onInfoTipMouseMove); +return browser.infoTip=this.tags.infoTipTag.append({},getBody(doc)) +},uninitializeBrowser:function(browser){if(browser.infoTip){var doc=browser.document; +removeEvent(doc,"mouseover",browser.onInfoTipMouseMove); +removeEvent(doc,"mouseout",browser.onInfoTipMouseOut); +removeEvent(doc,"mousemove",browser.onInfoTipMouseMove); +browser.infoTip.parentNode.removeChild(browser.infoTip); +delete browser.infoTip; +delete browser.onInfoTipMouseMove +}},showInfoTip:function(infoTip,panel,target,x,y,rangeParent,rangeOffset){if(!Firebug.showInfoTips){return +}var scrollParent=getOverflowParent(target); +var scrollX=x+(scrollParent?scrollParent.scrollLeft:0); +if(panel.showInfoTip(infoTip,target,scrollX,y,rangeParent,rangeOffset)){var htmlElt=infoTip.ownerDocument.documentElement; +var panelWidth=htmlElt.clientWidth; +var panelHeight=htmlElt.clientHeight; +if(x+infoTip.offsetWidth+infoTipMargin>panelWidth){infoTip.style.left=Math.max(0,panelWidth-(infoTip.offsetWidth+infoTipMargin))+"px"; +infoTip.style.right="auto" +}else{infoTip.style.left=(x+infoTipMargin)+"px"; +infoTip.style.right="auto" +}if(y+infoTip.offsetHeight+infoTipMargin>panelHeight){infoTip.style.top=Math.max(0,panelHeight-(infoTip.offsetHeight+infoTipMargin))+"px"; +infoTip.style.bottom="auto" +}else{infoTip.style.top=(y+infoTipMargin)+"px"; +infoTip.style.bottom="auto" +}if(FBTrace.DBG_INFOTIP){FBTrace.sysout("infotip.showInfoTip; top: "+infoTip.style.top+", left: "+infoTip.style.left+", bottom: "+infoTip.style.bottom+", right:"+infoTip.style.right+", offsetHeight: "+infoTip.offsetHeight+", offsetWidth: "+infoTip.offsetWidth+", x: "+x+", panelWidth: "+panelWidth+", y: "+y+", panelHeight: "+panelHeight) +}infoTip.setAttribute("active","true") +}else{this.hideInfoTip(infoTip) +}},hideInfoTip:function(infoTip){if(infoTip){infoTip.removeAttribute("active") +}},onMouseOut:function(event,browser){if(!event.relatedTarget){this.hideInfoTip(browser.infoTip) +}},onMouseMove:function(event,browser){if(getAncestorByClass(event.target,"infoTip")){return +}if(browser.currentPanel){var x=event.clientX,y=event.clientY,target=event.target||event.srcElement; +this.showInfoTip(browser.infoTip,browser.currentPanel,target,x,y,event.rangeParent,event.rangeOffset) +}else{this.hideInfoTip(browser.infoTip) +}},populateColorInfoTip:function(infoTip,color){this.tags.colorTag.replace({rgbValue:color},infoTip); +return true +},populateImageInfoTip:function(infoTip,url,repeat){if(!repeat){repeat="no-repeat" +}this.tags.imgTag.replace({urlValue:url,repeat:repeat},infoTip); +return true +},disable:function(){},showPanel:function(browser,panel){if(panel){var infoTip=panel.panelBrowser.infoTip; +if(!infoTip){infoTip=this.initializeBrowser(panel.panelBrowser) +}this.hideInfoTip(infoTip) +}},showSidePanel:function(browser,panel){this.showPanel(browser,panel) +}}); +Firebug.registerModule(Firebug.InfoTip) +}}); +FBL.ns(function(){with(FBL){var CssParser=null; +CssParser=(function(){function rule(start,body_start,end){return{start:start||0,body_start:body_start||0,end:end||0,line:-1,selector:null,parent:null,children:[],addChild:function(start,body_start,end){var r=rule(start,body_start,end); +r.parent=this; +this.children.push(r); +return r +},lastChild:function(){return this.children[this.children.length-1] +}} +}function removeAll(str,re){var m; +while(m=str.match(re)){str=str.substring(m[0].length) +}return str +}function trim(str){return str.replace(/^\s+|\s+$/g,"") +}function normalizeSelector(selector){selector=selector.replace(/[\n\r]/g," "); +selector=trim(selector); +selector=selector.replace(/\s*,\s*/g,","); +return selector +}function preprocessRules(text,rule_node){for(var i=0,il=rule_node.children.length; +i<il; +i++){var r=rule_node.children[i],rule_start=text.substring(r.start,r.body_start),cur_len=rule_start.length; +rule_start=rule_start.replace(/[\n\r]/g," "); +rule_start=removeAll(rule_start,/^\s*\/\*.*?\*\/[\s\t]*/); +rule_start=rule_start.replace(/^[\s\t]+/,""); +r.start+=(cur_len-rule_start.length); +r.selector=normalizeSelector(rule_start) +}return rule_node +}function saveLineIndexes(text){var result=[0],i=0,il=text.length,ch,ch2; +while(i<il){ch=text.charAt(i); +if(ch=="\n"||ch=="\r"){if(ch=="\r"&&i<il-1&&text.charAt(i+1)=="\n"){i++ +}result.push(i+1) +}i++ +}return result +}function saveLineNumbers(text,rule_node,line_indexes,startLine){preprocessRules(text,rule_node); +startLine=startLine||0; +if(!line_indexes){var line_indexes=saveLineIndexes(text) +}for(var i=0,il=rule_node.children.length; +i<il; +i++){var r=rule_node.children[i]; +r.line=line_indexes.length+startLine; +for(var j=0,jl=line_indexes.length-1; +j<jl; +j++){var line_ix=line_indexes[j]; +if(r.start>=line_indexes[j]&&r.start<line_indexes[j+1]){r.line=j+1+startLine; +break +}}saveLineNumbers(text,r,line_indexes) +}return rule_node +}return{read:function(text,startLine){var rule_start=[],rule_body_start=[],rules=[],in_comment=0,root=rule(),cur_parent=root,last_rule=null,stack=[],ch,ch2; +stack.last=function(){return this[this.length-1] +}; +function hasStr(pos,substr){return text.substr(pos,substr.length)==substr +}for(var i=0,il=text.length; +i<il; +i++){ch=text.charAt(i); +ch2=i<il-1?text.charAt(i+1):""; +if(!rule_start.length){rule_start.push(i) +}switch(ch){case"@":if(!in_comment){if(hasStr(i,"@import")){var m=text.substr(i).match(/^@import\s*url\((['"])?.+?\1?\)\;?/); +if(m){cur_parent.addChild(i,i+7,i+m[0].length); +i+=m[0].length; +rule_start.pop() +}break +}}case"/":if(!in_comment&&ch2=="*"){in_comment++ +}break; +case"*":if(ch2=="/"){in_comment-- +}break; +case"{":if(!in_comment){rule_body_start.push(i); +cur_parent=cur_parent.addChild(rule_start.pop()); +stack.push(cur_parent) +}break; +case"}":if(!in_comment){var last_rule=stack.pop(); +rule_start.pop(); +last_rule.body_start=rule_body_start.pop(); +last_rule.end=i; +cur_parent=last_rule.parent||root +}break +}}return saveLineNumbers(text,root,null,startLine) +},normalizeSelector:normalizeSelector,findBySelector:function(rule_node,selector,source){var selector=normalizeSelector(selector),result=[]; +if(rule_node){for(var i=0,il=rule_node.children.length; +i<il; +i++){var r=rule_node.children[i]; +if(r.selector==selector){result.push(r) +}}}if(result.length){return result +}else{return null +}}} +})(); +FBL.CssParser=CssParser +}}); +FBL.ns(function(){with(FBL){var CssAnalyzer={}; +var CSSRuleMap={}; +var ElementCSSRulesMap={}; +var internalStyleSheetIndex=-1; +var reSelectorTag=/(^|\s)(?:\w+)/g; +var reSelectorClass=/\.[\w\d_-]+/g; +var reSelectorId=/#[\w\d_-]+/g; +var globalCSSRuleIndex; +var processAllStyleSheetsTimeout=null; +var externalStyleSheetURLs=[]; +var ElementCache=Firebug.Lite.Cache.Element; +var StyleSheetCache=Firebug.Lite.Cache.StyleSheet; +CssAnalyzer.externalStyleSheetWarning=domplate(Firebug.Rep,{tag:DIV({"class":"warning focusRow",style:"font-weight:normal;",role:"listitem"},SPAN("$object|STR"),A({href:"$href",target:"_blank"},"$link|STR"))}); +CssAnalyzer.processAllStyleSheets=function(doc,styleSheetIterator){try{processAllStyleSheets(doc,styleSheetIterator) +}catch(e){FBTrace.sysout("CssAnalyzer.processAllStyleSheets fails: ",e) +}}; +CssAnalyzer.getElementCSSRules=function(element){try{return getElementCSSRules(element) +}catch(e){FBTrace.sysout("CssAnalyzer.getElementCSSRules fails: ",e) +}}; +CssAnalyzer.getRuleData=function(ruleId){return CSSRuleMap[ruleId] +}; +CssAnalyzer.getRuleLine=function(){}; +CssAnalyzer.hasExternalStyleSheet=function(){return externalStyleSheetURLs.length>0 +}; +CssAnalyzer.parseStyleSheet=function(href){var sourceData=extractSourceData(href); +var parsedObj=CssParser.read(sourceData.source,sourceData.startLine); +var parsedRules=parsedObj.children; +for(var i=0; +i<parsedRules.length; +){if(parsedRules[i].selector.indexOf("@")!=-1){parsedRules.splice(i,1) +}else{i++ +}}return parsedRules +}; +var processAllStyleSheets=function(doc,styleSheetIterator){styleSheetIterator=styleSheetIterator||processStyleSheet; +globalCSSRuleIndex=-1; +var styleSheets=doc.styleSheets; +var importedStyleSheets=[]; +if(FBTrace.DBG_CSS){var start=new Date().getTime() +}for(var i=0,length=styleSheets.length; +i<length; +i++){try{var styleSheet=styleSheets[i]; +if("firebugIgnore" in styleSheet){continue +}var rules=isIE?styleSheet.rules:styleSheet.cssRules; +rules.length +}catch(e){externalStyleSheetURLs.push(styleSheet.href); +styleSheet.restricted=true; +var ssid=StyleSheetCache(styleSheet) +}styleSheetIterator(doc,styleSheet); +var importedStyleSheet,importedRules; +if(isIE){var imports=styleSheet.imports; +for(var j=0,importsLength=imports.length; +j<importsLength; +j++){try{importedStyleSheet=imports[j]; +importedRules=importedStyleSheet.rules; +importedRules.length +}catch(e){externalStyleSheetURLs.push(styleSheet.href); +importedStyleSheet.restricted=true; +var ssid=StyleSheetCache(importedStyleSheet) +}styleSheetIterator(doc,importedStyleSheet) +}}else{if(rules){for(var j=0,rulesLength=rules.length; +j<rulesLength; +j++){try{var rule=rules[j]; +importedStyleSheet=rule.styleSheet; +if(importedStyleSheet){importedRules=importedStyleSheet.cssRules; +importedRules.length +}else{break +}}catch(e){externalStyleSheetURLs.push(styleSheet.href); +importedStyleSheet.restricted=true; +var ssid=StyleSheetCache(importedStyleSheet) +}styleSheetIterator(doc,importedStyleSheet) +}}}}if(FBTrace.DBG_CSS){FBTrace.sysout("FBL.processAllStyleSheets","all stylesheet rules processed in "+(new Date().getTime()-start)+"ms") +}}; +var processStyleSheet=function(doc,styleSheet){if(styleSheet.restricted){return +}var rules=isIE?styleSheet.rules:styleSheet.cssRules; +var ssid=StyleSheetCache(styleSheet); +var href=styleSheet.href; +var shouldParseCSS=typeof CssParser!="undefined"&&!Firebug.disableResourceFetching; +if(shouldParseCSS){try{var parsedRules=CssAnalyzer.parseStyleSheet(href) +}catch(e){if(FBTrace.DBG_ERRORS){FBTrace.sysout("processStyleSheet FAILS",e.message||e) +}shouldParseCSS=false +}finally{var parsedRulesIndex=0; +var dontSupportGroupedRules=isIE&&browserVersion<9; +var group=[]; +var groupItem +}}for(var i=0,length=rules.length; +i<length; +i++){var rid=ssid+":"+i; +var rule=rules[i]; +var selector=rule.selectorText||""; +var lineNo=null; +if(!selector||selector.indexOf("@")!=-1){continue +}if(isIE){selector=selector.replace(reSelectorTag,function(s){return s.toLowerCase() +}) +}if(shouldParseCSS){var parsedRule=parsedRules[parsedRulesIndex]; +var parsedSelector=parsedRule.selector; +if(dontSupportGroupedRules&&parsedSelector.indexOf(",")!=-1&&group.length==0){group=parsedSelector.split(",") +}if(dontSupportGroupedRules&&group.length>0){groupItem=group.shift(); +if(CssParser.normalizeSelector(selector)==groupItem){lineNo=parsedRule.line +}if(group.length==0){parsedRulesIndex++ +}}else{if(CssParser.normalizeSelector(selector)==parsedRule.selector){lineNo=parsedRule.line; +parsedRulesIndex++ +}}}CSSRuleMap[rid]={styleSheetId:ssid,styleSheetIndex:i,order:++globalCSSRuleIndex,specificity:selector&&selector.indexOf(",")==-1?getCSSRuleSpecificity(selector):0,rule:rule,lineNo:lineNo,selector:selector,cssText:rule.style?rule.style.cssText:rule.cssText?rule.cssText:""}; +var elements=Firebug.Selector(selector,doc); +for(var j=0,elementsLength=elements.length; +j<elementsLength; +j++){var element=elements[j]; +var eid=ElementCache(element); +if(!ElementCSSRulesMap[eid]){ElementCSSRulesMap[eid]=[] +}ElementCSSRulesMap[eid].push(rid) +}}}; +var loadExternalStylesheet=function(doc,styleSheetIterator,styleSheet){var url=styleSheet.href; +styleSheet.firebugIgnore=true; +var source=Firebug.Lite.Proxy.load(url); +source=source.replace(/url\(([^\)]+)\)/g,function(a,name){var hasDomain=/\w+:\/\/./.test(name); +if(!hasDomain){name=name.replace(/^(["'])(.+)\1$/,"$2"); +var first=name.charAt(0); +if(first=="/"){var m=/^([^:]+:\/{1,3}[^\/]+)/.exec(url); +return m?"url("+m[1]+name+")":"url("+name+")" +}else{var path=url.replace(/[^\/]+\.[\w\d]+(\?.+|#.+)?$/g,""); +path=path+name; +var reBack=/[^\/]+\/\.\.\//; +while(reBack.test(path)){path=path.replace(reBack,"") +}return"url("+path+")" +}}return a +}); +var oldStyle=styleSheet.ownerNode; +if(!oldStyle){return +}if(!oldStyle.parentNode){return +}var style=createGlobalElement("style"); +style.setAttribute("charset","utf-8"); +style.setAttribute("type","text/css"); +style.innerHTML=source; +oldStyle.parentNode.insertBefore(style,oldStyle.nextSibling); +oldStyle.parentNode.removeChild(oldStyle); +doc.styleSheets[doc.styleSheets.length-1].externalURL=url; +console.log(url,"call "+externalStyleSheetURLs.length,source); +externalStyleSheetURLs.pop(); +if(processAllStyleSheetsTimeout){clearTimeout(processAllStyleSheetsTimeout) +}processAllStyleSheetsTimeout=setTimeout(function(){console.log("processing"); +FBL.processAllStyleSheets(doc,styleSheetIterator); +processAllStyleSheetsTimeout=null +},200) +}; +var getElementCSSRules=function(element){var eid=ElementCache(element); +var rules=ElementCSSRulesMap[eid]; +if(!rules){return +}var arr=[element]; +var Selector=Firebug.Selector; +var ruleId,rule; +for(var i=0,length=rules.length; +i<length; +i++){ruleId=rules[i]; +rule=CSSRuleMap[ruleId]; +if(rule.selector.indexOf(",")!=-1){var selectors=rule.selector.split(","); +var maxSpecificity=-1; +var sel,spec,mostSpecificSelector; +for(var j,len=selectors.length; +j<len; +j++){sel=selectors[j]; +if(Selector.matches(sel,arr).length==1){spec=getCSSRuleSpecificity(sel); +if(spec>maxSpecificity){maxSpecificity=spec; +mostSpecificSelector=sel +}}}rule.specificity=maxSpecificity +}}rules.sort(sortElementRules); +return rules +}; +var sortElementRules=function(a,b){var ruleA=CSSRuleMap[a]; +var ruleB=CSSRuleMap[b]; +var specificityA=ruleA.specificity; +var specificityB=ruleB.specificity; +if(specificityA>specificityB){return 1 +}else{if(specificityA<specificityB){return -1 +}else{return ruleA.order>ruleB.order?1:-1 +}}}; +var solveRulesTied=function(a,b){var ruleA=CSSRuleMap[a]; +var ruleB=CSSRuleMap[b]; +if(ruleA.specificity==ruleB.specificity){return ruleA.order>ruleB.order?1:-1 +}return null +}; +var getCSSRuleSpecificity=function(selector){var match=selector.match(reSelectorTag); +var tagCount=match?match.length:0; +match=selector.match(reSelectorClass); +var classCount=match?match.length:0; +match=selector.match(reSelectorId); +var idCount=match?match.length:0; +return tagCount+10*classCount+100*idCount +}; +var extractSourceData=function(href){var sourceData={source:null,startLine:0}; +if(href){sourceData.source=Firebug.Lite.Proxy.load(href) +}else{var index=0; +var ssIndex=++internalStyleSheetIndex; +var reStyleTag=/\<\s*style.*\>/gi; +var reEndStyleTag=/\<\/\s*style.*\>/gi; +var source=Firebug.Lite.Proxy.load(Env.browser.location.href); +source=source.replace(/\n\r|\r\n/g,"\n"); +var startLine=0; +do{var matchStyleTag=source.match(reStyleTag); +var i0=source.indexOf(matchStyleTag[0])+matchStyleTag[0].length; +for(var i=0; +i<i0; +i++){if(source.charAt(i)=="\n"){startLine++ +}}source=source.substr(i0); +index++ +}while(index<=ssIndex); +var matchEndStyleTag=source.match(reEndStyleTag); +var i1=source.indexOf(matchEndStyleTag[0]); +var extractedSource=source.substr(0,i1); +sourceData.source=extractedSource; +sourceData.startLine=startLine +}return sourceData +}; +FBL.CssAnalyzer=CssAnalyzer +}}); +(function(){this.getElementXPath=function(element){try{if(element&&element.id){return'//*[@id="'+element.id+'"]' +}else{return this.getElementTreeXPath(element) +}}catch(E){}}; +this.getElementTreeXPath=function(element){var paths=[]; +for(; +element&&element.nodeType==1; +element=element.parentNode){var index=0; +var nodeName=element.nodeName; +for(var sibling=element.previousSibling; +sibling; +sibling=sibling.previousSibling){if(sibling.nodeType!=1){continue +}if(sibling.nodeName==nodeName){++index +}}var tagName=element.nodeName.toLowerCase(); +var pathIndex=(index?"["+(index+1)+"]":""); +paths.splice(0,0,tagName+pathIndex) +}return paths.length?"/"+paths.join("/"):null +}; +this.getElementsByXPath=function(doc,xpath){var nodes=[]; +try{var result=doc.evaluate(xpath,doc,null,XPathResult.ANY_TYPE,null); +for(var item=result.iterateNext(); +item; +item=result.iterateNext()){nodes.push(item) +}}catch(exc){}return nodes +}; +this.getRuleMatchingElements=function(rule,doc){var css=rule.selectorText; +var xpath=this.cssToXPath(css); +return this.getElementsByXPath(doc,xpath) +} +}).call(FBL); +FBL.ns(function(){with(FBL){var toCamelCase=function toCamelCase(s){return s.replace(reSelectorCase,toCamelCaseReplaceFn) +}; +var toSelectorCase=function toSelectorCase(s){return s.replace(reCamelCase,"-$1").toLowerCase() +}; +var reCamelCase=/([A-Z])/g; +var reSelectorCase=/\-(.)/g; +var toCamelCaseReplaceFn=function toCamelCaseReplaceFn(m,g){return g.toUpperCase() +}; +var ElementCache=Firebug.Lite.Cache.Element; +var StyleSheetCache=Firebug.Lite.Cache.StyleSheet; +Firebug.SourceBoxPanel=Firebug.Panel; +var reSelectorTag=/(^|\s)(?:\w+)/g; +var domUtils=null; +var textContent=isIE?"innerText":"textContent"; +var CSSDomplateBase={isEditable:function(rule){return !rule.isSystemSheet +},isSelectorEditable:function(rule){return rule.isSelectorEditable&&this.isEditable(rule) +}}; +var CSSPropTag=domplate(CSSDomplateBase,{tag:DIV({"class":"cssProp focusRow",$disabledStyle:"$prop.disabled",$editGroup:"$rule|isEditable",$cssOverridden:"$prop.overridden",role:"option"},A({"class":"cssPropDisable"}," "),SPAN({"class":"cssPropName",$editable:"$rule|isEditable"},"$prop.name"),SPAN({"class":"cssColon"},":"),SPAN({"class":"cssPropValue",$editable:"$rule|isEditable"},"$prop.value$prop.important"),SPAN({"class":"cssSemi"},";"))}); +var CSSRuleTag=TAG("$rule.tag",{rule:"$rule"}); +var CSSImportRuleTag=domplate({tag:DIV({"class":"cssRule insertInto focusRow importRule",_repObject:"$rule.rule"},"@import "",A({"class":"objectLink",_repObject:"$rule.rule.styleSheet"},"$rule.rule.href"),"";")}); +var CSSStyleRuleTag=domplate(CSSDomplateBase,{tag:DIV({"class":"cssRule insertInto",$cssEditableRule:"$rule|isEditable",$editGroup:"$rule|isSelectorEditable",_repObject:"$rule.rule",ruleId:"$rule.id",role:"presentation"},DIV({"class":"cssHead focusRow",role:"listitem"},SPAN({"class":"cssSelector",$editable:"$rule|isSelectorEditable"},"$rule.selector")," {"),DIV({role:"group"},DIV({"class":"cssPropertyListBox",role:"listbox"},FOR("prop","$rule.props",TAG(CSSPropTag.tag,{rule:"$rule",prop:"$prop"})))),DIV({"class":"editable insertBefore",role:"presentation"},"}"))}); +var reSplitCSS=/(url\("?[^"\)]+?"?\))|(rgb\(.*?\))|(#[\dA-Fa-f]+)|(-?\d+(\.\d+)?(%|[a-z]{1,2})?)|([^,\s]+)|"(.*?)"/; +var reURL=/url\("?([^"\)]+)?"?\)/; +var reRepeat=/no-repeat|repeat-x|repeat-y|repeat/; +var sothinkInstalled=false; +var styleGroups={text:["font-family","font-size","font-weight","font-style","color","text-transform","text-decoration","letter-spacing","word-spacing","line-height","text-align","vertical-align","direction","column-count","column-gap","column-width"],background:["background-color","background-image","background-repeat","background-position","background-attachment","opacity"],box:["width","height","top","right","bottom","left","margin-top","margin-right","margin-bottom","margin-left","padding-top","padding-right","padding-bottom","padding-left","border-top-width","border-right-width","border-bottom-width","border-left-width","border-top-color","border-right-color","border-bottom-color","border-left-color","border-top-style","border-right-style","border-bottom-style","border-left-style","-moz-border-top-radius","-moz-border-right-radius","-moz-border-bottom-radius","-moz-border-left-radius","outline-top-width","outline-right-width","outline-bottom-width","outline-left-width","outline-top-color","outline-right-color","outline-bottom-color","outline-left-color","outline-top-style","outline-right-style","outline-bottom-style","outline-left-style"],layout:["position","display","visibility","z-index","overflow-x","overflow-y","overflow-clip","white-space","clip","float","clear","-moz-box-sizing"],other:["cursor","list-style-image","list-style-position","list-style-type","marker-offset","user-focus","user-select","user-modify","user-input"]}; +var styleGroupTitles={text:"Text",background:"Background",box:"Box Model",layout:"Layout",other:"Other"}; +Firebug.CSSModule=extend(Firebug.Module,{freeEdit:function(styleSheet,value){if(!styleSheet.editStyleSheet){var ownerNode=getStyleSheetOwnerNode(styleSheet); +styleSheet.disabled=true; +var url=CCSV("@mozilla.org/network/standard-url;1",Components.interfaces.nsIURL); +url.spec=styleSheet.href; +var editStyleSheet=ownerNode.ownerDocument.createElementNS("http://www.w3.org/1999/xhtml","style"); +unwrapObject(editStyleSheet).firebugIgnore=true; +editStyleSheet.setAttribute("type","text/css"); +editStyleSheet.setAttributeNS("http://www.w3.org/XML/1998/namespace","base",url.directory); +if(ownerNode.hasAttribute("media")){editStyleSheet.setAttribute("media",ownerNode.getAttribute("media")) +}ownerNode.parentNode.insertBefore(editStyleSheet,ownerNode.nextSibling); +styleSheet.editStyleSheet=editStyleSheet +}styleSheet.editStyleSheet.innerHTML=value; +if(FBTrace.DBG_CSS){FBTrace.sysout("css.saveEdit styleSheet.href:"+styleSheet.href+" got innerHTML:"+value+"\n") +}dispatch(this.fbListeners,"onCSSFreeEdit",[styleSheet,value]) +},insertRule:function(styleSheet,cssText,ruleIndex){if(FBTrace.DBG_CSS){FBTrace.sysout("Insert: "+ruleIndex+" "+cssText) +}var insertIndex=styleSheet.insertRule(cssText,ruleIndex); +dispatch(this.fbListeners,"onCSSInsertRule",[styleSheet,cssText,ruleIndex]); +return insertIndex +},deleteRule:function(styleSheet,ruleIndex){if(FBTrace.DBG_CSS){FBTrace.sysout("deleteRule: "+ruleIndex+" "+styleSheet.cssRules.length,styleSheet.cssRules) +}dispatch(this.fbListeners,"onCSSDeleteRule",[styleSheet,ruleIndex]); +styleSheet.deleteRule(ruleIndex) +},setProperty:function(rule,propName,propValue,propPriority){var style=rule.style||rule; +var baseText=style.cssText; +if(style.getPropertyValue){var prevValue=style.getPropertyValue(propName); +var prevPriority=style.getPropertyPriority(propName); +style.removeProperty(propName); +style.setProperty(propName,propValue,propPriority) +}else{style[toCamelCase(propName)]=propValue +}if(propName){dispatch(this.fbListeners,"onCSSSetProperty",[style,propName,propValue,propPriority,prevValue,prevPriority,rule,baseText]) +}},removeProperty:function(rule,propName,parent){var style=rule.style||rule; +var baseText=style.cssText; +if(style.getPropertyValue){var prevValue=style.getPropertyValue(propName); +var prevPriority=style.getPropertyPriority(propName); +style.removeProperty(propName) +}else{style[toCamelCase(propName)]="" +}if(propName){dispatch(this.fbListeners,"onCSSRemoveProperty",[style,propName,prevValue,prevPriority,rule,baseText]) +}}}); +Firebug.CSSStyleSheetPanel=function(){}; +Firebug.CSSStyleSheetPanel.prototype=extend(Firebug.SourceBoxPanel,{template:domplate({tag:DIV({"class":"cssSheet insertInto a11yCSSView"},FOR("rule","$rules",CSSRuleTag),DIV({"class":"cssSheet editable insertBefore"},""))}),refresh:function(){if(this.location){this.updateLocation(this.location) +}else{if(this.selection){this.updateSelection(this.selection) +}}},toggleEditing:function(){if(!this.stylesheetEditor){this.stylesheetEditor=new StyleSheetEditor(this.document) +}if(this.editing){Firebug.Editor.stopEditing() +}else{if(!this.location){return +}var styleSheet=this.location.editStyleSheet?this.location.editStyleSheet.sheet:this.location; +var css=getStyleSheetCSS(styleSheet,this.context); +this.stylesheetEditor.styleSheet=this.location; +Firebug.Editor.startEditing(this.panelNode,css,this.stylesheetEditor) +}},getStylesheetURL:function(rule){if(this.location.href){return this.location.href +}else{return this.context.window.location.href +}},getRuleByLine:function(styleSheet,line){if(!domUtils){return null +}var cssRules=styleSheet.cssRules; +for(var i=0; +i<cssRules.length; +++i){var rule=cssRules[i]; +if(rule instanceof CSSStyleRule){var ruleLine=domUtils.getRuleLine(rule); +if(ruleLine>=line){return rule +}}}},highlightRule:function(rule){var ruleElement=Firebug.getElementByRepObject(this.panelNode.firstChild,rule); +if(ruleElement){scrollIntoCenterView(ruleElement,this.panelNode); +setClassTimed(ruleElement,"jumpHighlight",this.context) +}},getStyleSheetRules:function(context,styleSheet){var isSystemSheet=isSystemStyleSheet(styleSheet); +function appendRules(cssRules){for(var i=0; +i<cssRules.length; +++i){var rule=cssRules[i]; +if(instanceOf(rule,"CSSStyleRule")){var props=this.getRuleProperties(context,rule); +var line=null; +var selector=rule.selectorText; +if(isIE){selector=selector.replace(reSelectorTag,function(s){return s.toLowerCase() +}) +}var ruleId=rule.selectorText+"/"+line; +rules.push({tag:CSSStyleRuleTag.tag,rule:rule,id:ruleId,selector:selector,props:props,isSystemSheet:isSystemSheet,isSelectorEditable:true}) +}else{if(instanceOf(rule,"CSSImportRule")){rules.push({tag:CSSImportRuleTag.tag,rule:rule}) +}else{if(instanceOf(rule,"CSSMediaRule")){appendRules.apply(this,[rule.cssRules]) +}else{if(FBTrace.DBG_ERRORS||FBTrace.DBG_CSS){FBTrace.sysout("css getStyleSheetRules failed to classify a rule ",rule) +}}}}}}var rules=[]; +appendRules.apply(this,[styleSheet.cssRules||styleSheet.rules]); +return rules +},parseCSSProps:function(style,inheritMode){var props=[]; +if(Firebug.expandShorthandProps){var count=style.length-1,index=style.length; +while(index--){var propName=style.item(count-index); +this.addProperty(propName,style.getPropertyValue(propName),!!style.getPropertyPriority(propName),false,inheritMode,props) +}}else{var lines=style.cssText.match(/(?:[^;\(]*(?:\([^\)]*?\))?[^;\(]*)*;?/g); +var propRE=/\s*([^:\s]*)\s*:\s*(.*?)\s*(! important)?;?$/; +var line,i=0; +var m; +while(line=lines[i++]){m=propRE.exec(line); +if(!m){continue +}if(m[2]){this.addProperty(m[1],m[2],!!m[3],false,inheritMode,props) +}}}return props +},getRuleProperties:function(context,rule,inheritMode){var props=this.parseCSSProps(rule.style,inheritMode); +var line; +var ruleId=rule.selectorText+"/"+line; +this.addOldProperties(context,ruleId,inheritMode,props); +sortProperties(props); +return props +},addOldProperties:function(context,ruleId,inheritMode,props){if(context.selectorMap&&context.selectorMap.hasOwnProperty(ruleId)){var moreProps=context.selectorMap[ruleId]; +for(var i=0; +i<moreProps.length; +++i){var prop=moreProps[i]; +this.addProperty(prop.name,prop.value,prop.important,true,inheritMode,props) +}}},addProperty:function(name,value,important,disabled,inheritMode,props){name=name.toLowerCase(); +if(inheritMode&&!inheritedStyleNames[name]){return +}name=this.translateName(name,value); +if(name){value=stripUnits(rgbToHex(value)); +important=important?" !important":""; +var prop={name:name,value:value,important:important,disabled:disabled}; +props.push(prop) +}},translateName:function(name,value){if((value=="-moz-initial"&&(name=="-moz-background-clip"||name=="-moz-background-origin"||name=="-moz-background-inline-policy"))||(value=="physical"&&(name=="margin-left-ltr-source"||name=="margin-left-rtl-source"||name=="margin-right-ltr-source"||name=="margin-right-rtl-source"))||(value=="physical"&&(name=="padding-left-ltr-source"||name=="padding-left-rtl-source"||name=="padding-right-ltr-source"||name=="padding-right-rtl-source"))){return null +}if(name=="margin-left-value"){return"margin-left" +}else{if(name=="margin-right-value"){return"margin-right" +}else{if(name=="margin-top-value"){return"margin-top" +}else{if(name=="margin-bottom-value"){return"margin-bottom" +}else{if(name=="padding-left-value"){return"padding-left" +}else{if(name=="padding-right-value"){return"padding-right" +}else{if(name=="padding-top-value"){return"padding-top" +}else{if(name=="padding-bottom-value"){return"padding-bottom" +}else{return name +}}}}}}}}},editElementStyle:function(){var rulesBox=$$(".cssElementRuleContainer",this.panelNode)[0]; +var styleRuleBox=rulesBox&&Firebug.getElementByRepObject(rulesBox,this.selection); +if(!styleRuleBox){var rule={rule:this.selection,inherited:false,selector:"element.style",props:[]}; +if(!rulesBox){styleRuleBox=this.template.cascadedTag.replace({rules:[rule],inherited:[],inheritLabel:"Inherited from"},this.panelNode); +styleRuleBox=$$(".cssElementRuleContainer",styleRuleBox)[0] +}else{styleRuleBox=this.template.ruleTag.insertBefore({rule:rule},rulesBox) +}styleRuleBox=$$(".insertInto",styleRuleBox)[0] +}Firebug.Editor.insertRowForObject(styleRuleBox) +},insertPropertyRow:function(row){Firebug.Editor.insertRowForObject(row) +},insertRule:function(row){var location=getAncestorByClass(row,"cssRule"); +if(!location){location=getChildByClass(this.panelNode,"cssSheet"); +Firebug.Editor.insertRowForObject(location) +}else{Firebug.Editor.insertRow(location,"before") +}},editPropertyRow:function(row){var propValueBox=getChildByClass(row,"cssPropValue"); +Firebug.Editor.startEditing(propValueBox) +},deletePropertyRow:function(row){var rule=Firebug.getRepObject(row); +var propName=getChildByClass(row,"cssPropName")[textContent]; +Firebug.CSSModule.removeProperty(rule,propName); +var ruleId=Firebug.getRepNode(row).getAttribute("ruleId"); +if(this.context.selectorMap&&this.context.selectorMap.hasOwnProperty(ruleId)){var map=this.context.selectorMap[ruleId]; +for(var i=0; +i<map.length; +++i){if(map[i].name==propName){map.splice(i,1); +break +}}}if(this.name=="stylesheet"){dispatch([Firebug.A11yModel],"onInlineEditorClose",[this,row.firstChild,true]) +}row.parentNode.removeChild(row); +this.markChange(this.name=="stylesheet") +},disablePropertyRow:function(row){toggleClass(row,"disabledStyle"); +var rule=Firebug.getRepObject(row); +var propName=getChildByClass(row,"cssPropName")[textContent]; +if(!this.context.selectorMap){this.context.selectorMap={} +}var ruleId=Firebug.getRepNode(row).getAttribute("ruleId"); +if(!(this.context.selectorMap.hasOwnProperty(ruleId))){this.context.selectorMap[ruleId]=[] +}var map=this.context.selectorMap[ruleId]; +var propValue=getChildByClass(row,"cssPropValue")[textContent]; +var parsedValue=parsePriority(propValue); +if(hasClass(row,"disabledStyle")){Firebug.CSSModule.removeProperty(rule,propName); +map.push({name:propName,value:parsedValue.value,important:parsedValue.priority}) +}else{Firebug.CSSModule.setProperty(rule,propName,parsedValue.value,parsedValue.priority); +var index=findPropByName(map,propName); +map.splice(index,1) +}this.markChange(this.name=="stylesheet") +},onMouseDown:function(event){var offset=event.clientX-this.panelNode.parentNode.offsetLeft; +if(!isLeftClick(event)||offset>20){return +}var target=event.target||event.srcElement; +if(hasClass(target,"textEditor")){return +}var row=getAncestorByClass(target,"cssProp"); +if(row&&hasClass(row,"editGroup")){this.disablePropertyRow(row); +cancelEvent(event) +}},onDoubleClick:function(event){var offset=event.clientX-this.panelNode.parentNode.offsetLeft; +if(!isLeftClick(event)||offset<=20){return +}var target=event.target||event.srcElement; +if(hasClass(target,"textEditorInner")){return +}var row=getAncestorByClass(target,"cssRule"); +if(row&&!getAncestorByClass(target,"cssPropName")&&!getAncestorByClass(target,"cssPropValue")){this.insertPropertyRow(row); +cancelEvent(event) +}},name:"stylesheet",title:"CSS",parentPanel:null,searchable:true,dependents:["css","stylesheet","dom","domSide","layout"],options:{hasToolButtons:true},create:function(){Firebug.Panel.create.apply(this,arguments); +this.onMouseDown=bind(this.onMouseDown,this); +this.onDoubleClick=bind(this.onDoubleClick,this); +if(this.name=="stylesheet"){this.onChangeSelect=bind(this.onChangeSelect,this); +var doc=Firebug.browser.document; +var selectNode=this.selectNode=createElement("select"); +CssAnalyzer.processAllStyleSheets(doc,function(doc,styleSheet){var key=StyleSheetCache.key(styleSheet); +var fileName=getFileName(styleSheet.href)||getFileName(doc.location.href); +var option=createElement("option",{value:key}); +option.appendChild(Firebug.chrome.document.createTextNode(fileName)); +selectNode.appendChild(option) +}); +this.toolButtonsNode.appendChild(selectNode) +}},onChangeSelect:function(event){event=event||window.event; +var target=event.srcElement||event.currentTarget; +var key=target.value; +var styleSheet=StyleSheetCache.get(key); +this.updateLocation(styleSheet) +},initialize:function(){Firebug.Panel.initialize.apply(this,arguments); +this.context=Firebug.chrome; +this.document=Firebug.chrome.document; +this.initializeNode(); +if(this.name=="stylesheet"){var styleSheets=Firebug.browser.document.styleSheets; +if(styleSheets.length>0){addEvent(this.selectNode,"change",this.onChangeSelect); +this.updateLocation(styleSheets[0]) +}}},shutdown:function(){Firebug.Editor.stopEditing(); +if(this.name=="stylesheet"){removeEvent(this.selectNode,"change",this.onChangeSelect) +}this.destroyNode(); +Firebug.Panel.shutdown.apply(this,arguments) +},destroy:function(state){Firebug.Panel.destroy.apply(this,arguments) +},initializeNode:function(oldPanelNode){addEvent(this.panelNode,"mousedown",this.onMouseDown); +addEvent(this.panelNode,"dblclick",this.onDoubleClick) +},destroyNode:function(){removeEvent(this.panelNode,"mousedown",this.onMouseDown); +removeEvent(this.panelNode,"dblclick",this.onDoubleClick) +},ishow:function(state){Firebug.Inspector.stopInspecting(true); +this.showToolbarButtons("fbCSSButtons",true); +if(this.context.loaded&&!this.location){restoreObjects(this,state); +if(!this.location){this.location=this.getDefaultLocation() +}if(state&&state.scrollTop){this.panelNode.scrollTop=state.scrollTop +}}},ihide:function(){this.showToolbarButtons("fbCSSButtons",false); +this.lastScrollTop=this.panelNode.scrollTop +},supportsObject:function(object){if(object instanceof CSSStyleSheet){return 1 +}else{if(object instanceof CSSStyleRule){return 2 +}else{if(object instanceof CSSStyleDeclaration){return 2 +}else{if(object instanceof SourceLink&&object.type=="css"&&reCSS.test(object.href)){return 2 +}else{return 0 +}}}}},updateLocation:function(styleSheet){if(!styleSheet){return +}if(styleSheet.editStyleSheet){styleSheet=styleSheet.editStyleSheet.sheet +}if(styleSheet.restricted){FirebugReps.Warning.tag.replace({object:"AccessRestricted"},this.panelNode); +CssAnalyzer.externalStyleSheetWarning.tag.append({object:"The stylesheet could not be loaded due to access restrictions. ",link:"more...",href:"http://getfirebug.com/wiki/index.php/Firebug_Lite_FAQ#I_keep_seeing_.22Access_to_restricted_URI_denied.22"},this.panelNode); +return +}var rules=this.getStyleSheetRules(this.context,styleSheet); +var result; +if(rules.length){result=this.template.tag.replace({rules:rules},this.panelNode) +}else{result=FirebugReps.Warning.tag.replace({object:"EmptyStyleSheet"},this.panelNode) +}},updateSelection:function(object){this.selection=null; +if(object instanceof CSSStyleDeclaration){object=object.parentRule +}if(object instanceof CSSStyleRule){this.navigate(object.parentStyleSheet); +this.highlightRule(object) +}else{if(object instanceof CSSStyleSheet){this.navigate(object) +}else{if(object instanceof SourceLink){try{var sourceLink=object; +var sourceFile=getSourceFileByHref(sourceLink.href,this.context); +if(sourceFile){clearNode(this.panelNode); +this.showSourceFile(sourceFile); +var lineNo=object.line; +if(lineNo){this.scrollToLine(lineNo,this.jumpHighlightFactory(lineNo,this.context)) +}}else{var stylesheet=getStyleSheetByHref(sourceLink.href,this.context); +if(stylesheet){this.navigate(stylesheet) +}else{if(FBTrace.DBG_CSS){FBTrace.sysout("css.updateSelection no sourceFile for "+sourceLink.href,sourceLink) +}}}}catch(exc){if(FBTrace.DBG_CSS){FBTrace.sysout("css.upDateSelection FAILS "+exc,exc) +}}}}}},updateOption:function(name,value){if(name=="expandShorthandProps"){this.refresh() +}},getLocationList:function(){var styleSheets=getAllStyleSheets(this.context); +return styleSheets +},getOptionsMenuItems:function(){return[{label:"Expand Shorthand Properties",type:"checkbox",checked:Firebug.expandShorthandProps,command:bindFixed(Firebug.togglePref,Firebug,"expandShorthandProps")},"-",{label:"Refresh",command:bind(this.refresh,this)}] +},getContextMenuItems:function(style,target){var items=[]; +if(this.infoTipType=="color"){items.push({label:"CopyColor",command:bindFixed(copyToClipboard,FBL,this.infoTipObject)}) +}else{if(this.infoTipType=="image"){items.push({label:"CopyImageLocation",command:bindFixed(copyToClipboard,FBL,this.infoTipObject)},{label:"OpenImageInNewTab",command:bindFixed(openNewTab,FBL,this.infoTipObject)}) +}}if(isElement(this.selection)){items.push({label:"EditStyle",command:bindFixed(this.editElementStyle,this)}) +}else{if(!isSystemStyleSheet(this.selection)){items.push({label:"NewRule",command:bindFixed(this.insertRule,this,target)}) +}}var cssRule=getAncestorByClass(target,"cssRule"); +if(cssRule&&hasClass(cssRule,"cssEditableRule")){items.push("-",{label:"NewProp",command:bindFixed(this.insertPropertyRow,this,target)}); +var propRow=getAncestorByClass(target,"cssProp"); +if(propRow){var propName=getChildByClass(propRow,"cssPropName")[textContent]; +var isDisabled=hasClass(propRow,"disabledStyle"); +items.push({label:$STRF("EditProp",[propName]),nol10n:true,command:bindFixed(this.editPropertyRow,this,propRow)},{label:$STRF("DeleteProp",[propName]),nol10n:true,command:bindFixed(this.deletePropertyRow,this,propRow)},{label:$STRF("DisableProp",[propName]),nol10n:true,type:"checkbox",checked:isDisabled,command:bindFixed(this.disablePropertyRow,this,propRow)}) +}}items.push("-",{label:"Refresh",command:bind(this.refresh,this)}); +return items +},browseObject:function(object){if(this.infoTipType=="image"){openNewTab(this.infoTipObject); +return true +}},showInfoTip:function(infoTip,target,x,y){var propValue=getAncestorByClass(target,"cssPropValue"); +if(propValue){var offset=getClientOffset(propValue); +var offsetX=x-offset.x; +var text=propValue[textContent]; +var charWidth=propValue.offsetWidth/text.length; +var charOffset=Math.floor(offsetX/charWidth); +var cssValue=parseCSSValue(text,charOffset); +if(cssValue){if(cssValue.value==this.infoTipValue){return true +}this.infoTipValue=cssValue.value; +if(cssValue.type=="rgb"||(!cssValue.type&&isColorKeyword(cssValue.value))){this.infoTipType="color"; +this.infoTipObject=cssValue.value; +return Firebug.InfoTip.populateColorInfoTip(infoTip,cssValue.value) +}else{if(cssValue.type=="url"){var propNameNode=getElementByClass(target.parentNode,"cssPropName"); +if(propNameNode&&isImageRule(propNameNode[textContent])){var rule=Firebug.getRepObject(target); +var baseURL=this.getStylesheetURL(rule); +var relURL=parseURLValue(cssValue.value); +var absURL=isDataURL(relURL)?relURL:absoluteURL(relURL,baseURL); +var repeat=parseRepeatValue(text); +this.infoTipType="image"; +this.infoTipObject=absURL; +return Firebug.InfoTip.populateImageInfoTip(infoTip,absURL,repeat) +}}}}}delete this.infoTipType; +delete this.infoTipValue; +delete this.infoTipObject +},getEditor:function(target,value){if(target==this.panelNode||hasClass(target,"cssSelector")||hasClass(target,"cssRule")||hasClass(target,"cssSheet")){if(!this.ruleEditor){this.ruleEditor=new CSSRuleEditor(this.document) +}return this.ruleEditor +}else{if(!this.editor){this.editor=new CSSEditor(this.document) +}return this.editor +}},getDefaultLocation:function(){try{var styleSheets=this.context.window.document.styleSheets; +if(styleSheets.length){var sheet=styleSheets[0]; +return(Firebug.filterSystemURLs&&isSystemURL(getURLForStyleSheet(sheet)))?null:sheet +}}catch(exc){if(FBTrace.DBG_LOCATIONS){FBTrace.sysout("css.getDefaultLocation FAILS "+exc,exc) +}}},getObjectDescription:function(styleSheet){var url=getURLForStyleSheet(styleSheet); +var instance=getInstanceForStyleSheet(styleSheet); +var baseDescription=splitURLBase(url); +if(instance){baseDescription.name=baseDescription.name+" #"+(instance+1) +}return baseDescription +},search:function(text,reverse){var curDoc=this.searchCurrentDoc(!Firebug.searchGlobal,text,reverse); +if(!curDoc&&Firebug.searchGlobal){return this.searchOtherDocs(text,reverse) +}return curDoc +},searchOtherDocs:function(text,reverse){var scanRE=Firebug.Search.getTestingRegex(text); +function scanDoc(styleSheet){for(var i=0; +i<styleSheet.cssRules.length; +i++){if(scanRE.test(styleSheet.cssRules[i].cssText)){return true +}}}if(this.navigateToNextDocument(scanDoc,reverse)){return this.searchCurrentDoc(true,text,reverse) +}},searchCurrentDoc:function(wrapSearch,text,reverse){if(!text){delete this.currentSearch; +return false +}var row; +if(this.currentSearch&&text==this.currentSearch.text){row=this.currentSearch.findNext(wrapSearch,false,reverse,Firebug.Search.isCaseSensitive(text)) +}else{if(this.editing){this.currentSearch=new TextSearch(this.stylesheetEditor.box); +row=this.currentSearch.find(text,reverse,Firebug.Search.isCaseSensitive(text)); +if(row){var sel=this.document.defaultView.getSelection(); +sel.removeAllRanges(); +sel.addRange(this.currentSearch.range); +scrollSelectionIntoView(this); +return true +}else{return false +}}else{function findRow(node){return node.nodeType==1?node:node.parentNode +}this.currentSearch=new TextSearch(this.panelNode,findRow); +row=this.currentSearch.find(text,reverse,Firebug.Search.isCaseSensitive(text)) +}}if(row){this.document.defaultView.getSelection().selectAllChildren(row); +scrollIntoCenterView(row,this.panelNode); +dispatch([Firebug.A11yModel],"onCSSSearchMatchFound",[this,text,row]); +return true +}else{dispatch([Firebug.A11yModel],"onCSSSearchMatchFound",[this,text,null]); +return false +}},getSearchOptionsMenuItems:function(){return[Firebug.Search.searchOptionMenu("search.Case_Sensitive","searchCaseSensitive"),Firebug.Search.searchOptionMenu("search.Multiple_Files","searchGlobal")] +}}); +function CSSElementPanel(){}CSSElementPanel.prototype=extend(Firebug.CSSStyleSheetPanel.prototype,{template:domplate({cascadedTag:DIV({"class":"a11yCSSView",role:"presentation"},DIV({role:"list","aria-label":$STR("aria.labels.style rules")},FOR("rule","$rules",TAG("$ruleTag",{rule:"$rule"}))),DIV({role:"list","aria-label":$STR("aria.labels.inherited style rules")},FOR("section","$inherited",H1({"class":"cssInheritHeader groupHeader focusRow",role:"listitem"},SPAN({"class":"cssInheritLabel"},"$inheritLabel"),TAG(FirebugReps.Element.shortTag,{object:"$section.element"})),DIV({role:"group"},FOR("rule","$section.rules",TAG("$ruleTag",{rule:"$rule"})))))),ruleTag:isIE?DIV({"class":"cssElementRuleContainer"},TAG(FirebugReps.SourceLink.tag,{object:"$rule.sourceLink"}),TAG(CSSStyleRuleTag.tag,{rule:"$rule"})):DIV({"class":"cssElementRuleContainer"},TAG(CSSStyleRuleTag.tag,{rule:"$rule"}),TAG(FirebugReps.SourceLink.tag,{object:"$rule.sourceLink"}))}),updateCascadeView:function(element){var rules=[],sections=[],usedProps={}; +this.getInheritedRules(element,sections,usedProps); +this.getElementRules(element,rules,usedProps); +if(rules.length||sections.length){var inheritLabel="Inherited from"; +var result=this.template.cascadedTag.replace({rules:rules,inherited:sections,inheritLabel:inheritLabel},this.panelNode) +}else{var result=FirebugReps.Warning.tag.replace({object:"EmptyElementCSS"},this.panelNode) +}if(CssAnalyzer.hasExternalStyleSheet()){CssAnalyzer.externalStyleSheetWarning.tag.append({object:"The results here may be inaccurate because some stylesheets could not be loaded due to access restrictions. ",link:"more...",href:"http://getfirebug.com/wiki/index.php/Firebug_Lite_FAQ#I_keep_seeing_.22This_element_has_no_style_rules.22"},this.panelNode) +}},getStylesheetURL:function(rule){if(rule&&rule.parentStyleSheet&&rule.parentStyleSheet.href){return rule.parentStyleSheet.href +}else{return this.selection.ownerDocument.location.href +}},getInheritedRules:function(element,sections,usedProps){var parent=element.parentNode; +if(parent&&parent.nodeType==1){this.getInheritedRules(parent,sections,usedProps); +var rules=[]; +this.getElementRules(parent,rules,usedProps,true); +if(rules.length){sections.splice(0,0,{element:parent,rules:rules}) +}}},getElementRules:function(element,rules,usedProps,inheritMode){var inspectedRules,displayedRules={}; +inspectedRules=CssAnalyzer.getElementCSSRules(element); +if(inspectedRules){for(var i=0,length=inspectedRules.length; +i<length; +++i){var ruleId=inspectedRules[i]; +var ruleData=CssAnalyzer.getRuleData(ruleId); +var rule=ruleData.rule; +var ssid=ruleData.styleSheetId; +var parentStyleSheet=StyleSheetCache.get(ssid); +var href=parentStyleSheet.externalURL?parentStyleSheet.externalURL:parentStyleSheet.href; +var instance=null; +var isSystemSheet=false; +if(!Firebug.showUserAgentCSS&&isSystemSheet){continue +}if(!href){href=element.ownerDocument.location.href +}var props=this.getRuleProperties(this.context,rule,inheritMode); +if(inheritMode&&!props.length){continue +}var line=ruleData.lineNo; +var ruleId=rule.selectorText+"/"+line; +var sourceLink=new SourceLink(href,line,"css",rule,instance); +this.markOverridenProps(props,usedProps,inheritMode); +rules.splice(0,0,{rule:rule,id:ruleId,selector:ruleData.selector,sourceLink:sourceLink,props:props,inherited:inheritMode,isSystemSheet:isSystemSheet}) +}}if(element.style){this.getStyleProperties(element,rules,usedProps,inheritMode) +}if(FBTrace.DBG_CSS){FBTrace.sysout("getElementRules "+rules.length+" rules for "+getElementXPath(element),rules) +}},markOverridenProps:function(props,usedProps,inheritMode){for(var i=0; +i<props.length; +++i){var prop=props[i]; +if(usedProps.hasOwnProperty(prop.name)){var deadProps=usedProps[prop.name]; +for(var j=0; +j<deadProps.length; +++j){var deadProp=deadProps[j]; +if(!deadProp.disabled&&!deadProp.wasInherited&&deadProp.important&&!prop.important){prop.overridden=true +}else{if(!prop.disabled){deadProp.overridden=true +}}}}else{usedProps[prop.name]=[] +}prop.wasInherited=inheritMode?true:false; +usedProps[prop.name].push(prop) +}},getStyleProperties:function(element,rules,usedProps,inheritMode){var props=this.parseCSSProps(element.style,inheritMode); +this.addOldProperties(this.context,getElementXPath(element),inheritMode,props); +sortProperties(props); +this.markOverridenProps(props,usedProps,inheritMode); +if(props.length){rules.splice(0,0,{rule:element,id:getElementXPath(element),selector:"element.style",props:props,inherited:inheritMode}) +}},name:"css",title:"Style",parentPanel:"HTML",order:0,initialize:function(){this.context=Firebug.chrome; +this.document=Firebug.chrome.document; +Firebug.CSSStyleSheetPanel.prototype.initialize.apply(this,arguments); +var selection=ElementCache.get(Firebug.context.persistedState.selectedHTMLElementId); +if(selection){this.select(selection,true) +}},ishow:function(state){},watchWindow:function(win){if(domUtils){var doc=win.document +}},unwatchWindow:function(win){var doc=win.document; +if(isAncestor(this.stateChangeEl,doc)){this.removeStateChangeHandlers() +}},supportsObject:function(object){return object instanceof Element?1:0 +},updateView:function(element){this.updateCascadeView(element); +if(domUtils){this.contentState=safeGetContentState(element); +this.addStateChangeHandlers(element) +}},updateSelection:function(element){if(!instanceOf(element,"Element")){return +}if(sothinkInstalled){FirebugReps.Warning.tag.replace({object:"SothinkWarning"},this.panelNode); +return +}if(!element){return +}this.updateView(element) +},updateOption:function(name,value){if(name=="showUserAgentCSS"||name=="expandShorthandProps"){this.refresh() +}},getOptionsMenuItems:function(){var ret=[{label:"Show User Agent CSS",type:"checkbox",checked:Firebug.showUserAgentCSS,command:bindFixed(Firebug.togglePref,Firebug,"showUserAgentCSS")},{label:"Expand Shorthand Properties",type:"checkbox",checked:Firebug.expandShorthandProps,command:bindFixed(Firebug.togglePref,Firebug,"expandShorthandProps")}]; +if(domUtils&&this.selection){var state=safeGetContentState(this.selection); +ret.push("-"); +ret.push({label:":active",type:"checkbox",checked:state&STATE_ACTIVE,command:bindFixed(this.updateContentState,this,STATE_ACTIVE,state&STATE_ACTIVE)}); +ret.push({label:":hover",type:"checkbox",checked:state&STATE_HOVER,command:bindFixed(this.updateContentState,this,STATE_HOVER,state&STATE_HOVER)}) +}return ret +},updateContentState:function(state,remove){domUtils.setContentState(remove?this.selection.ownerDocument.documentElement:this.selection,state); +this.refresh() +},addStateChangeHandlers:function(el){this.removeStateChangeHandlers(); +this.stateChangeEl=el +},removeStateChangeHandlers:function(){var sel=this.stateChangeEl; +if(sel){}},contentStateCheck:function(state){if(!state||this.contentState&state){var timeoutRunner=bindFixed(function(){var newState=safeGetContentState(this.selection); +if(newState!=this.contentState){this.context.invalidatePanels(this.name) +}},this); +setTimeout(timeoutRunner,0) +}}}); +function safeGetContentState(selection){try{return domUtils.getContentState(selection) +}catch(e){if(FBTrace.DBG_ERRORS){FBTrace.sysout("css.safeGetContentState; EXCEPTION",e) +}}}function CSSComputedElementPanel(){}CSSComputedElementPanel.prototype=extend(CSSElementPanel.prototype,{template:domplate({computedTag:DIV({"class":"a11yCSSView",role:"list","aria-label":$STR("aria.labels.computed styles")},FOR("group","$groups",H1({"class":"cssInheritHeader groupHeader focusRow",role:"listitem"},SPAN({"class":"cssInheritLabel"},"$group.title")),TABLE({width:"100%",role:"group"},TBODY({role:"presentation"},FOR("prop","$group.props",TR({"class":"focusRow computedStyleRow",role:"listitem"},TD({"class":"stylePropName",role:"presentation"},"$prop.name"),TD({"class":"stylePropValue",role:"presentation"},"$prop.value")))))))}),updateComputedView:function(element){var win=isIE?element.ownerDocument.parentWindow:element.ownerDocument.defaultView; +var style=isIE?element.currentStyle:win.getComputedStyle(element,""); +var groups=[]; +for(var groupName in styleGroups){var title=styleGroupTitles[groupName]; +var group={title:title,props:[]}; +groups.push(group); +var props=styleGroups[groupName]; +for(var i=0; +i<props.length; +++i){var propName=props[i]; +var propValue=style.getPropertyValue?style.getPropertyValue(propName):""+style[toCamelCase(propName)]; +if(propValue===undefined||propValue===null){continue +}propValue=stripUnits(rgbToHex(propValue)); +if(propValue){group.props.push({name:propName,value:propValue}) +}}}var result=this.template.computedTag.replace({groups:groups},this.panelNode) +},name:"computed",title:"Computed",parentPanel:"HTML",order:1,updateView:function(element){this.updateComputedView(element) +},getOptionsMenuItems:function(){return[{label:"Refresh",command:bind(this.refresh,this)}] +}}); +function CSSEditor(doc){this.initializeInline(doc) +}CSSEditor.prototype=domplate(Firebug.InlineEditor.prototype,{insertNewRow:function(target,insertWhere){var rule=Firebug.getRepObject(target); +var emptyProp={name:"",value:"",important:""}; +if(insertWhere=="before"){return CSSPropTag.tag.insertBefore({prop:emptyProp,rule:rule},target) +}else{return CSSPropTag.tag.insertAfter({prop:emptyProp,rule:rule},target) +}},saveEdit:function(target,value,previousValue){if(!value){return +}target.innerHTML=escapeForCss(value); +var row=getAncestorByClass(target,"cssProp"); +if(hasClass(row,"disabledStyle")){toggleClass(row,"disabledStyle") +}var rule=Firebug.getRepObject(target); +if(hasClass(target,"cssPropName")){if(value&&previousValue!=value){var propValue=getChildByClass(row,"cssPropValue")[textContent]; +var parsedValue=parsePriority(propValue); +if(propValue&&propValue!="undefined"){if(FBTrace.DBG_CSS){FBTrace.sysout("CSSEditor.saveEdit : "+previousValue+"->"+value+" = "+propValue+"\n") +}if(previousValue){Firebug.CSSModule.removeProperty(rule,previousValue) +}Firebug.CSSModule.setProperty(rule,value,parsedValue.value,parsedValue.priority) +}}else{if(!value){Firebug.CSSModule.removeProperty(rule,previousValue) +}}}else{if(getAncestorByClass(target,"cssPropValue")){var propName=getChildByClass(row,"cssPropName")[textContent]; +var propValue=getChildByClass(row,"cssPropValue")[textContent]; +if(FBTrace.DBG_CSS){FBTrace.sysout("CSSEditor.saveEdit propName=propValue: "+propName+" = "+propValue+"\n") +}if(value&&value!="null"){var parsedValue=parsePriority(value); +Firebug.CSSModule.setProperty(rule,propName,parsedValue.value,parsedValue.priority) +}else{if(previousValue&&previousValue!="null"){Firebug.CSSModule.removeProperty(rule,propName) +}}}}this.panel.markChange(this.panel.name=="stylesheet") +},advanceToNext:function(target,charCode){if(charCode==58&&hasClass(target,"cssPropName")){return true +}},getAutoCompleteRange:function(value,offset){if(hasClass(this.target,"cssPropName")){return{start:0,end:value.length-1} +}else{return parseCSSValue(value,offset) +}},getAutoCompleteList:function(preExpr,expr,postExpr){if(hasClass(this.target,"cssPropName")){return getCSSPropertyNames() +}else{var row=getAncestorByClass(this.target,"cssProp"); +var propName=getChildByClass(row,"cssPropName")[textContent]; +return getCSSKeywordsByProperty(propName) +}}}); +function CSSRuleEditor(doc){this.initializeInline(doc); +this.completeAsYouType=false +}CSSRuleEditor.uniquifier=0; +CSSRuleEditor.prototype=domplate(Firebug.InlineEditor.prototype,{insertNewRow:function(target,insertWhere){var emptyRule={selector:"",id:"",props:[],isSelectorEditable:true}; +if(insertWhere=="before"){return CSSStyleRuleTag.tag.insertBefore({rule:emptyRule},target) +}else{return CSSStyleRuleTag.tag.insertAfter({rule:emptyRule},target) +}},saveEdit:function(target,value,previousValue){if(FBTrace.DBG_CSS){FBTrace.sysout("CSSRuleEditor.saveEdit: '"+value+"' '"+previousValue+"'",target) +}target.innerHTML=escapeForCss(value); +if(value===previousValue){return +}var row=getAncestorByClass(target,"cssRule"); +var styleSheet=this.panel.location; +styleSheet=styleSheet.editStyleSheet?styleSheet.editStyleSheet.sheet:styleSheet; +var cssRules=styleSheet.cssRules; +var rule=Firebug.getRepObject(target),oldRule=rule; +var ruleIndex=cssRules.length; +if(rule||Firebug.getRepObject(row.nextSibling)){var searchRule=rule||Firebug.getRepObject(row.nextSibling); +for(ruleIndex=0; +ruleIndex<cssRules.length&&searchRule!=cssRules[ruleIndex]; +ruleIndex++){}}if(oldRule){Firebug.CSSModule.deleteRule(styleSheet,ruleIndex) +}if(value){var cssText=[value,"{"]; +var props=row.getElementsByClassName("cssProp"); +for(var i=0; +i<props.length; +i++){var propEl=props[i]; +if(!hasClass(propEl,"disabledStyle")){cssText.push(getChildByClass(propEl,"cssPropName")[textContent]); +cssText.push(":"); +cssText.push(getChildByClass(propEl,"cssPropValue")[textContent]); +cssText.push(";") +}}cssText.push("}"); +cssText=cssText.join(""); +try{var insertLoc=Firebug.CSSModule.insertRule(styleSheet,cssText,ruleIndex); +rule=cssRules[insertLoc]; +ruleIndex++ +}catch(err){if(FBTrace.DBG_CSS||FBTrace.DBG_ERRORS){FBTrace.sysout("CSS Insert Error: "+err,err) +}target.innerHTML=escapeForCss(previousValue); +row.repObject=undefined; +return +}}else{rule=undefined +}row.repObject=rule; +if(!oldRule){var ruleId="new/"+value+"/"+(++CSSRuleEditor.uniquifier); +row.setAttribute("ruleId",ruleId) +}this.panel.markChange(this.panel.name=="stylesheet") +}}); +function StyleSheetEditor(doc){this.box=this.tag.replace({},doc,this); +this.input=this.box.firstChild +}StyleSheetEditor.prototype=domplate(Firebug.BaseEditor,{multiLine:true,tag:DIV(TEXTAREA({"class":"styleSheetEditor fullPanelEditor",oninput:"$onInput"})),getValue:function(){return this.input.value +},setValue:function(value){return this.input.value=value +},show:function(target,panel,value,textSize,targetSize){this.target=target; +this.panel=panel; +this.panel.panelNode.appendChild(this.box); +this.input.value=value; +this.input.focus(); +var command=Firebug.chrome.$("cmd_toggleCSSEditing"); +command.setAttribute("checked",true) +},hide:function(){var command=Firebug.chrome.$("cmd_toggleCSSEditing"); +command.setAttribute("checked",false); +if(this.box.parentNode==this.panel.panelNode){this.panel.panelNode.removeChild(this.box) +}delete this.target; +delete this.panel; +delete this.styleSheet +},saveEdit:function(target,value,previousValue){Firebug.CSSModule.freeEdit(this.styleSheet,value) +},endEditing:function(){this.panel.refresh(); +return true +},onInput:function(){Firebug.Editor.update() +},scrollToLine:function(line,offset){this.startMeasuring(this.input); +var lineHeight=this.measureText().height; +this.stopMeasuring(); +this.input.scrollTop=(line*lineHeight)+offset +}}); +var rgbToHex=function rgbToHex(value){return value.replace(/\brgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)/gi,rgbToHexReplacer) +}; +var rgbToHexReplacer=function(_,r,g,b){return"#"+((1<<24)+(r<<16)+(g<<8)+(b<<0)).toString(16).substr(-6).toUpperCase() +}; +var stripUnits=function stripUnits(value){return value.replace(/(url\(.*?\)|[^0]\S*\s*)|0(%|em|ex|px|in|cm|mm|pt|pc)(\s|$)/gi,stripUnitsReplacer) +}; +var stripUnitsReplacer=function(_,skip,remove,whitespace){return skip||("0"+whitespace) +}; +function parsePriority(value){var rePriority=/(.*?)\s*(!important)?$/; +var m=rePriority.exec(value); +var propValue=m?m[1]:""; +var priority=m&&m[2]?"important":""; +return{value:propValue,priority:priority} +}function parseURLValue(value){var m=reURL.exec(value); +return m?m[1]:"" +}function parseRepeatValue(value){var m=reRepeat.exec(value); +return m?m[0]:"" +}function parseCSSValue(value,offset){var start=0; +var m; +while(1){m=reSplitCSS.exec(value); +if(m&&m.index+m[0].length<offset){value=value.substr(m.index+m[0].length); +start+=m.index+m[0].length; +offset-=m.index+m[0].length +}else{break +}}if(m){var type; +if(m[1]){type="url" +}else{if(m[2]||m[3]){type="rgb" +}else{if(m[4]){type="int" +}}}return{value:m[0],start:start+m.index,end:start+m.index+(m[0].length-1),type:type} +}}function findPropByName(props,name){for(var i=0; +i<props.length; +++i){if(props[i].name==name){return i +}}}function sortProperties(props){props.sort(function(a,b){return a.name>b.name?1:-1 +}) +}function getTopmostRuleLine(panelNode){for(var child=panelNode.firstChild; +child; +child=child.nextSibling){if(child.offsetTop+child.offsetHeight>panelNode.scrollTop){var rule=child.repObject; +if(rule){return{line:domUtils.getRuleLine(rule),offset:panelNode.scrollTop-child.offsetTop} +}}}return 0 +}function getStyleSheetCSS(sheet,context){if(sheet.ownerNode instanceof HTMLStyleElement){return sheet.ownerNode.innerHTML +}else{return context.sourceCache.load(sheet.href).join("") +}}function getStyleSheetOwnerNode(sheet){for(; +sheet&&!sheet.ownerNode; +sheet=sheet.parentStyleSheet){}return sheet.ownerNode +}function scrollSelectionIntoView(panel){var selCon=getSelectionController(panel); +selCon.scrollSelectionIntoView(nsISelectionController.SELECTION_NORMAL,nsISelectionController.SELECTION_FOCUS_REGION,true) +}function getSelectionController(panel){var browser=Firebug.chrome.getPanelBrowser(panel); +return browser.docShell.QueryInterface(nsIInterfaceRequestor).getInterface(nsISelectionDisplay).QueryInterface(nsISelectionController) +}Firebug.registerModule(Firebug.CSSModule); +Firebug.registerPanel(Firebug.CSSStyleSheetPanel); +Firebug.registerPanel(CSSElementPanel); +Firebug.registerPanel(CSSComputedElementPanel) +}}); +FBL.ns(function(){with(FBL){Firebug.Script=extend(Firebug.Module,{getPanel:function(){return Firebug.chrome?Firebug.chrome.getPanel("Script"):null +},selectSourceCode:function(index){this.getPanel().selectSourceCode(index) +}}); +Firebug.registerModule(Firebug.Script); +function ScriptPanel(){}ScriptPanel.prototype=extend(Firebug.Panel,{name:"Script",title:"Script",selectIndex:0,sourceIndex:-1,options:{hasToolButtons:true},create:function(){Firebug.Panel.create.apply(this,arguments); +this.onChangeSelect=bind(this.onChangeSelect,this); +var doc=Firebug.browser.document; +var scripts=doc.getElementsByTagName("script"); +var selectNode=this.selectNode=createElement("select"); +for(var i=0,script; +script=scripts[i]; +i++){if(Firebug.ignoreFirebugElements&&script.getAttribute("firebugIgnore")){continue +}var fileName=getFileName(script.src)||getFileName(doc.location.href); +var option=createElement("option",{value:i}); +option.appendChild(Firebug.chrome.document.createTextNode(fileName)); +selectNode.appendChild(option) +}this.toolButtonsNode.appendChild(selectNode) +},initialize:function(){this.selectSourceCode(this.selectIndex); +Firebug.Panel.initialize.apply(this,arguments); +addEvent(this.selectNode,"change",this.onChangeSelect) +},shutdown:function(){removeEvent(this.selectNode,"change",this.onChangeSelect); +Firebug.Panel.shutdown.apply(this,arguments) +},detach:function(oldChrome,newChrome){Firebug.Panel.detach.apply(this,arguments); +var oldPanel=oldChrome.getPanel("Script"); +var index=oldPanel.selectIndex; +this.selectNode.selectedIndex=index; +this.selectIndex=index; +this.sourceIndex=-1 +},onChangeSelect:function(event){var select=this.selectNode; +this.selectIndex=select.selectedIndex; +var option=select.options[select.selectedIndex]; +if(!option){return +}var selectedSourceIndex=parseInt(option.value); +this.renderSourceCode(selectedSourceIndex) +},selectSourceCode:function(index){var select=this.selectNode; +select.selectedIndex=index; +var option=select.options[index]; +if(!option){return +}var selectedSourceIndex=parseInt(option.value); +this.renderSourceCode(selectedSourceIndex) +},renderSourceCode:function(index){if(this.sourceIndex!=index){var renderProcess=function renderProcess(src){var html=[],hl=0; +src=isIE&&!isExternal?src+"\n":"\n"+src; +src=src.replace(/\n\r|\r\n/g,"\n"); +var match=src.match(/[\n]/g); +var lines=match?match.length:0; +html[hl++]='<div><div class="sourceBox" style="left:'; +html[hl++]=35+7*(lines+"").length; +html[hl++]='px;"><pre class="sourceCode">'; +html[hl++]=escapeHTML(src); +html[hl++]='</pre></div><div class="lineNo">'; +for(var l=1,lines; +l<=lines; +l++){html[hl++]='<div line="'; +html[hl++]=l; +html[hl++]='">'; +html[hl++]=l; +html[hl++]="</div>" +}html[hl++]="</div></div>"; +updatePanel(html) +}; +var updatePanel=function(html){self.panelNode.innerHTML=html.join(""); +setTimeout(function(){self.synchronizeUI() +},0) +}; +var onFailure=function(){FirebugReps.Warning.tag.replace({object:"AccessRestricted"},self.panelNode) +}; +var self=this; +var doc=Firebug.browser.document; +var script=doc.getElementsByTagName("script")[index]; +var url=getScriptURL(script); +var isExternal=url&&url!=doc.location.href; +try{if(Firebug.disableResourceFetching){renderProcess(Firebug.Lite.Proxy.fetchResourceDisabledMessage) +}else{if(isExternal){Ajax.request({url:url,onSuccess:renderProcess,onFailure:onFailure}) +}else{var src=script.innerHTML; +renderProcess(src) +}}}catch(e){onFailure() +}this.sourceIndex=index +}}}); +Firebug.registerPanel(ScriptPanel); +var getScriptURL=function getScriptURL(script){var reFile=/([^\/\?#]+)(#.+)?$/; +var rePath=/^(.*\/)/; +var reProtocol=/^\w+:\/\//; +var path=null; +var doc=Firebug.browser.document; +var file=reFile.exec(script.src); +if(file){var fileName=file[1]; +var fileOptions=file[2]; +if(reProtocol.test(script.src)){path=rePath.exec(script.src)[1] +}else{var r=rePath.exec(script.src); +var src=r?r[1]:script.src; +var backDir=/^((?:\.\.\/)+)(.*)/.exec(src); +var reLastDir=/^(.*\/)[^\/]+\/$/; +path=rePath.exec(doc.location.href)[1]; +if(backDir){var j=backDir[1].length/3; +var p; +while(j-->0){path=reLastDir.exec(path)[1] +}path+=backDir[2] +}else{if(src.indexOf("/")!=-1){if(/^\.\/./.test(src)){path+=src.substring(2) +}else{if(/^\/./.test(src)){var domain=/^(\w+:\/\/[^\/]+)/.exec(path); +path=domain[1]+src +}else{path+=src +}}}}}}var m=path&&path.match(/([^\/]+)\/$/)||null; +if(path&&m){return path+fileName +}}; +var getFileName=function getFileName(path){if(!path){return"" +}var match=path&&path.match(/[^\/]+(\?.*)?(#.*)?$/); +return match&&match[0]||path +} +}}); +FBL.ns(function(){with(FBL){var ElementCache=Firebug.Lite.Cache.Element; +var insertSliceSize=18; +var insertInterval=40; +var ignoreVars={__firebug__:1,"eval":1,java:1,sun:1,Packages:1,JavaArray:1,JavaMember:1,JavaObject:1,JavaClass:1,JavaPackage:1,_firebug:1,_FirebugConsole:1,_FirebugCommandLine:1}; +if(Firebug.ignoreFirebugElements){ignoreVars[Firebug.Lite.Cache.ID]=1 +}var memberPanelRep=isIE6?{"class":"memberLabel $member.type\\Label",href:"javacript:void(0)"}:{"class":"memberLabel $member.type\\Label"}; +var RowTag=TR({"class":"memberRow $member.open $member.type\\Row",$hasChildren:"$member.hasChildren",role:"presentation",level:"$member.level"},TD({"class":"memberLabelCell",style:"padding-left: $member.indent\\px",role:"presentation"},A(memberPanelRep,SPAN({},"$member.name"))),TD({"class":"memberValueCell",role:"presentation"},TAG("$member.tag",{object:"$member.value"}))); +var WatchRowTag=TR({"class":"watchNewRow",level:0},TD({"class":"watchEditCell",colspan:2},DIV({"class":"watchEditBox a11yFocusNoTab",role:"button",tabindex:"0","aria-label":$STR("press enter to add new watch expression")},$STR("NewWatch")))); +var SizerRow=TR({role:"presentation"},TD({width:"30%"}),TD({width:"70%"})); +var domTableClass=isIElt8?"domTable domTableIE":"domTable"; +var DirTablePlate=domplate(Firebug.Rep,{tag:TABLE({"class":domTableClass,cellpadding:0,cellspacing:0,onclick:"$onClick",role:"tree"},TBODY({role:"presentation"},SizerRow,FOR("member","$object|memberIterator",RowTag))),watchTag:TABLE({"class":domTableClass,cellpadding:0,cellspacing:0,_toggles:"$toggles",_domPanel:"$domPanel",onclick:"$onClick",role:"tree"},TBODY({role:"presentation"},SizerRow,WatchRowTag)),tableTag:TABLE({"class":domTableClass,cellpadding:0,cellspacing:0,_toggles:"$toggles",_domPanel:"$domPanel",onclick:"$onClick",role:"tree"},TBODY({role:"presentation"},SizerRow)),rowTag:FOR("member","$members",RowTag),memberIterator:function(object,level){return getMembers(object,level) +},onClick:function(event){if(!isLeftClick(event)){return +}var target=event.target||event.srcElement; +var row=getAncestorByClass(target,"memberRow"); +var label=getAncestorByClass(target,"memberLabel"); +if(label&&hasClass(row,"hasChildren")){var row=label.parentNode.parentNode; +this.toggleRow(row) +}else{var object=Firebug.getRepObject(target); +if(typeof(object)=="function"){Firebug.chrome.select(object,"script"); +cancelEvent(event) +}else{if(event.detail==2&&!object){var panel=row.parentNode.parentNode.domPanel; +if(panel){var rowValue=panel.getRowPropertyValue(row); +if(typeof(rowValue)=="boolean"){panel.setPropertyValue(row,!rowValue) +}else{panel.editProperty(row) +}cancelEvent(event) +}}}}return false +},toggleRow:function(row){var level=parseInt(row.getAttribute("level")); +var toggles=row.parentNode.parentNode.toggles; +if(hasClass(row,"opened")){removeClass(row,"opened"); +if(toggles){var path=getPath(row); +for(var i=0; +i<path.length; +++i){if(i==path.length-1){delete toggles[path[i]] +}else{toggles=toggles[path[i]] +}}}var rowTag=this.rowTag; +var tbody=row.parentNode; +setTimeout(function(){for(var firstRow=row.nextSibling; +firstRow; +firstRow=row.nextSibling){if(parseInt(firstRow.getAttribute("level"))<=level){break +}tbody.removeChild(firstRow) +}},row.insertTimeout?row.insertTimeout:0) +}else{setClass(row,"opened"); +if(toggles){var path=getPath(row); +for(var i=0; +i<path.length; +++i){var name=path[i]; +if(toggles.hasOwnProperty(name)){toggles=toggles[name] +}else{toggles=toggles[name]={} +}}}var value=row.lastChild.firstChild.repObject; +var members=getMembers(value,level+1); +var rowTag=this.rowTag; +var lastRow=row; +var delay=0; +while(members.length){with({slice:members.splice(0,insertSliceSize),isLast:!members.length}){setTimeout(function(){if(lastRow.parentNode){var result=rowTag.insertRows({members:slice},lastRow); +lastRow=result[1] +}if(isLast){row.removeAttribute("insertTimeout") +}},delay) +}delay+=insertInterval +}row.insertTimeout=delay +}}}); +Firebug.DOMBasePanel=function(){}; +Firebug.DOMBasePanel.prototype=extend(Firebug.Panel,{tag:DirTablePlate.tableTag,getRealObject:function(object){if(!object){return object +}if(object.wrappedJSObject){return object.wrappedJSObject +}return object +},rebuild:function(update,scrollTop){var members=getMembers(this.selection); +expandMembers(members,this.toggles,0,0); +this.showMembers(members,update,scrollTop); +if(!this.parentPanel){updateStatusBar(this) +}},showMembers:function(members,update,scrollTop){if(this.timeouts){for(var i=0; +i<this.timeouts.length; +++i){this.context.clearTimeout(this.timeouts[i]) +}delete this.timeouts +}if(!members.length){return this.showEmptyMembers() +}var panelNode=this.panelNode; +var priorScrollTop=scrollTop==undefined?panelNode.scrollTop:scrollTop; +var offscreen=update&&panelNode.firstChild; +var dest=offscreen?panelNode.ownerDocument:panelNode; +var table=this.tag.replace({domPanel:this,toggles:this.toggles},dest); +var tbody=table.lastChild; +var rowTag=DirTablePlate.rowTag; +var panel=this; +var result; +var timeouts=[]; +var delay=0; +var renderStart=new Date().getTime(); +while(members.length){with({slice:members.splice(0,insertSliceSize),isLast:!members.length}){timeouts.push(this.context.setTimeout(function(){if(!tbody.lastChild){return +}result=rowTag.insertRows({members:slice},tbody.lastChild); +if((panelNode.scrollHeight+panelNode.offsetHeight)>=priorScrollTop){panelNode.scrollTop=priorScrollTop +}},delay)); +delay+=insertInterval +}}if(offscreen){timeouts.push(this.context.setTimeout(function(){if(panelNode.firstChild){panelNode.replaceChild(table,panelNode.firstChild) +}else{panelNode.appendChild(table) +}panelNode.scrollTop=priorScrollTop +},delay)) +}else{timeouts.push(this.context.setTimeout(function(){panelNode.scrollTop=scrollTop==undefined?0:scrollTop +},delay)) +}this.timeouts=timeouts +},showEmptyMembers:function(){FirebugReps.Warning.tag.replace({object:"NoMembersWarning"},this.panelNode) +},findPathObject:function(object){var pathIndex=-1; +for(var i=0; +i<this.objectPath.length; +++i){if(this.getPathObject(i)===object){return i +}}return -1 +},getPathObject:function(index){var object=this.objectPath[index]; +if(object instanceof Property){return object.getObject() +}else{return object +}},getRowObject:function(row){var object=getRowOwnerObject(row); +return object?object:this.selection +},getRowPropertyValue:function(row){var object=this.getRowObject(row); +object=this.getRealObject(object); +if(object){var propName=getRowName(row); +if(object instanceof jsdIStackFrame){return Firebug.Debugger.evaluate(propName,this.context) +}else{return object[propName] +}}},onMouseMove:function(event){var target=event.srcElement||event.target; +var object=getAncestorByClass(target,"objectLink-element"); +object=object?object.repObject:null; +if(object&&instanceOf(object,"Element")&&object.nodeType==1){if(object!=lastHighlightedObject){Firebug.Inspector.drawBoxModel(object); +object=lastHighlightedObject +}}else{Firebug.Inspector.hideBoxModel() +}},create:function(){this.context=Firebug.browser; +this.objectPath=[]; +this.propertyPath=[]; +this.viewPath=[]; +this.pathIndex=-1; +this.toggles={}; +Firebug.Panel.create.apply(this,arguments); +this.panelNode.style.padding="0 1px" +},initialize:function(){Firebug.Panel.initialize.apply(this,arguments); +addEvent(this.panelNode,"mousemove",this.onMouseMove) +},shutdown:function(){removeEvent(this.panelNode,"mousemove",this.onMouseMove); +Firebug.Panel.shutdown.apply(this,arguments) +},ishow:function(state){if(this.context.loaded&&!this.selection){if(!state){this.select(null); +return +}if(state.viewPath){this.viewPath=state.viewPath +}if(state.propertyPath){this.propertyPath=state.propertyPath +}var defaultObject=this.getDefaultSelection(this.context); +var selectObject=defaultObject; +if(state.firstSelection){var restored=state.firstSelection(this.context); +if(restored){selectObject=restored; +this.objectPath=[defaultObject,restored] +}else{this.objectPath=[defaultObject] +}}else{this.objectPath=[defaultObject] +}if(this.propertyPath.length>1){for(var i=1; +i<this.propertyPath.length; +++i){var name=this.propertyPath[i]; +if(!name){continue +}var object=selectObject; +try{selectObject=object[name] +}catch(exc){selectObject=null +}if(selectObject){this.objectPath.push(new Property(object,name)) +}else{this.viewPath.splice(i); +this.propertyPath.splice(i); +this.objectPath.splice(i); +selectObject=this.getPathObject(this.objectPath.length-1); +break +}}}var selection=state.pathIndex<=this.objectPath.length-1?this.getPathObject(state.pathIndex):this.getPathObject(this.objectPath.length-1); +this.select(selection) +}},supportsObject:function(object){if(object==null){return 1000 +}if(typeof(object)=="undefined"){return 1000 +}else{if(object instanceof SourceLink){return 0 +}else{return 1 +}}},refresh:function(){this.rebuild(true) +},updateSelection:function(object){var previousIndex=this.pathIndex; +var previousView=previousIndex==-1?null:this.viewPath[previousIndex]; +var newPath=this.pathToAppend; +delete this.pathToAppend; +var pathIndex=this.findPathObject(object); +if(newPath||pathIndex==-1){this.toggles={}; +if(newPath){if(previousView){if(this.panelNode.scrollTop){previousView.scrollTop=this.panelNode.scrollTop +}var start=previousIndex+1,length=this.objectPath.length-start; +this.objectPath.splice(start,length); +this.propertyPath.splice(start,length); +this.viewPath.splice(start,length) +}var value=this.getPathObject(previousIndex); +if(!value){if(FBTrace.DBG_ERRORS){FBTrace.sysout("dom.updateSelection no pathObject for "+previousIndex+"\n") +}return +}for(var i=0,length=newPath.length; +i<length; +++i){var name=newPath[i]; +var object=value; +try{value=value[name] +}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("dom.updateSelection FAILS at path_i="+i+" for name:"+name+"\n") +}return +}++this.pathIndex; +this.objectPath.push(new Property(object,name)); +this.propertyPath.push(name); +this.viewPath.push({toggles:this.toggles,scrollTop:0}) +}}else{this.toggles={}; +var win=Firebug.browser.window; +if(object===win){this.pathIndex=0; +this.objectPath=[win]; +this.propertyPath=[null]; +this.viewPath=[{toggles:this.toggles,scrollTop:0}] +}else{this.pathIndex=1; +this.objectPath=[win,object]; +this.propertyPath=[null,null]; +this.viewPath=[{toggles:{},scrollTop:0},{toggles:this.toggles,scrollTop:0}] +}}this.panelNode.scrollTop=0; +this.rebuild() +}else{this.pathIndex=pathIndex; +var view=this.viewPath[pathIndex]; +this.toggles=view.toggles; +if(previousView&&this.panelNode.scrollTop){previousView.scrollTop=this.panelNode.scrollTop +}this.rebuild(false,view.scrollTop) +}},getObjectPath:function(object){return this.objectPath +},getDefaultSelection:function(){return Firebug.browser.window +}}); +var updateStatusBar=function(panel){var path=panel.propertyPath; +var index=panel.pathIndex; +var r=[]; +for(var i=0,l=path.length; +i<l; +i++){r.push(i==index?'<a class="fbHover fbButton fbBtnSelected" ':'<a class="fbHover fbButton" '); +r.push("pathIndex="); +r.push(i); +if(isIE6){r.push(' href="javascript:void(0)"') +}r.push(">"); +r.push(i==0?"window":path[i]||"Object"); +r.push("</a>"); +if(i<l-1){r.push('<span class="fbStatusSeparator">></span>') +}}panel.statusBarNode.innerHTML=r.join("") +}; +var DOMMainPanel=Firebug.DOMPanel=function(){}; +Firebug.DOMPanel.DirTable=DirTablePlate; +DOMMainPanel.prototype=extend(Firebug.DOMBasePanel.prototype,{onClickStatusBar:function(event){var target=event.srcElement||event.target; +var element=getAncestorByClass(target,"fbHover"); +if(element){var pathIndex=element.getAttribute("pathIndex"); +if(pathIndex){this.select(this.getPathObject(pathIndex)) +}}},selectRow:function(row,target){if(!target){target=row.lastChild.firstChild +}if(!target||!target.repObject){return +}this.pathToAppend=getPath(row); +var valueBox=row.lastChild.firstChild; +if(hasClass(valueBox,"objectBox-array")){var arrayIndex=FirebugReps.Arr.getItemIndex(target); +this.pathToAppend.push(arrayIndex) +}this.select(target.repObject,true) +},onClick:function(event){var target=event.srcElement||event.target; +var repNode=Firebug.getRepNode(target); +if(repNode){var row=getAncestorByClass(target,"memberRow"); +if(row){this.selectRow(row,repNode); +cancelEvent(event) +}}},name:"DOM",title:"DOM",searchable:true,statusSeparator:">",options:{hasToolButtons:true,hasStatusBar:true},create:function(){Firebug.DOMBasePanel.prototype.create.apply(this,arguments); +this.onClick=bind(this.onClick,this); +this.onClickStatusBar=bind(this.onClickStatusBar,this); +this.panelNode.style.padding="0 1px" +},initialize:function(oldPanelNode){Firebug.DOMBasePanel.prototype.initialize.apply(this,arguments); +addEvent(this.panelNode,"click",this.onClick); +this.ishow(); +addEvent(this.statusBarNode,"click",this.onClickStatusBar) +},shutdown:function(){removeEvent(this.panelNode,"click",this.onClick); +Firebug.DOMBasePanel.prototype.shutdown.apply(this,arguments) +}}); +Firebug.registerPanel(DOMMainPanel); +var getMembers=function getMembers(object,level){if(!level){level=0 +}var ordinals=[],userProps=[],userClasses=[],userFuncs=[],domProps=[],domFuncs=[],domConstants=[]; +try{var domMembers=getDOMMembers(object); +if(object.wrappedJSObject){var insecureObject=object.wrappedJSObject +}else{var insecureObject=object +}if(isIE&&isFunction(object)){addMember("user",userProps,"prototype",object.prototype,level) +}for(var name in insecureObject){if(ignoreVars[name]==1){continue +}var val; +try{val=insecureObject[name] +}catch(exc){if(FBTrace.DBG_ERRORS&&FBTrace.DBG_DOM){FBTrace.sysout("dom.getMembers cannot access "+name,exc) +}}var ordinal=parseInt(name); +if(ordinal||ordinal==0){addMember("ordinal",ordinals,name,val,level) +}else{if(isFunction(val)){if(isClassFunction(val)&&!(name in domMembers)){addMember("userClass",userClasses,name,val,level) +}else{if(name in domMembers){addMember("domFunction",domFuncs,name,val,level,domMembers[name]) +}else{addMember("userFunction",userFuncs,name,val,level) +}}}else{var prefix=""; +if(name in domMembers&&!(name in domConstantMap)){addMember("dom",domProps,(prefix+name),val,level,domMembers[name]) +}else{if(name in domConstantMap){addMember("dom",domConstants,(prefix+name),val,level) +}else{addMember("user",userProps,(prefix+name),val,level) +}}}}}}catch(exc){throw exc; +if(FBTrace.DBG_ERRORS&&FBTrace.DBG_DOM){FBTrace.sysout("dom.getMembers FAILS: ",exc) +}}function sortName(a,b){return a.name>b.name?1:-1 +}function sortOrder(a,b){return a.order>b.order?1:-1 +}var members=[]; +members.push.apply(members,ordinals); +Firebug.showUserProps=true; +Firebug.showUserFuncs=true; +Firebug.showDOMProps=true; +Firebug.showDOMFuncs=true; +Firebug.showDOMConstants=true; +if(Firebug.showUserProps){userProps.sort(sortName); +members.push.apply(members,userProps) +}if(Firebug.showUserFuncs){userClasses.sort(sortName); +members.push.apply(members,userClasses); +userFuncs.sort(sortName); +members.push.apply(members,userFuncs) +}if(Firebug.showDOMProps){domProps.sort(sortName); +members.push.apply(members,domProps) +}if(Firebug.showDOMFuncs){domFuncs.sort(sortName); +members.push.apply(members,domFuncs) +}if(Firebug.showDOMConstants){members.push.apply(members,domConstants) +}return members +}; +function expandMembers(members,toggles,offset,level){var expanded=0; +for(var i=offset; +i<members.length; +++i){var member=members[i]; +if(member.level>level){break +}if(toggles.hasOwnProperty(member.name)){member.open="opened"; +var newMembers=getMembers(member.value,level+1); +var args=[i+1,0]; +args.push.apply(args,newMembers); +members.splice.apply(members,args); +expanded+=newMembers.length; +i+=newMembers.length+expandMembers(members,toggles[member.name],i+1,level+1) +}}return expanded +}function isClassFunction(fn){try{for(var name in fn.prototype){return true +}}catch(exc){}return false +}FBL.ErrorCopy=function(message){this.message=message +}; +var addMember=function addMember(type,props,name,value,level,order){var rep=Firebug.getRep(value); +var tag=rep.shortTag?rep.shortTag:rep.tag; +var ErrorCopy=function(){}; +var valueType=typeof(value); +var hasChildren=hasProperties(value)&&!(value instanceof ErrorCopy)&&(isFunction(value)||(valueType=="object"&&value!=null)||(valueType=="string"&&value.length>Firebug.stringCropLength)); +props.push({name:name,value:value,type:type,rowClass:"memberRow-"+type,open:"",order:order,level:level,indent:level*16,hasChildren:hasChildren,tag:tag}) +}; +var getWatchRowIndex=function getWatchRowIndex(row){var index=-1; +for(; +row&&hasClass(row,"watchRow"); +row=row.previousSibling){++index +}return index +}; +var getRowName=function getRowName(row){var node=row.firstChild; +return node.textContent?node.textContent:node.innerText +}; +var getRowValue=function getRowValue(row){return row.lastChild.firstChild.repObject +}; +var getRowOwnerObject=function getRowOwnerObject(row){var parentRow=getParentRow(row); +if(parentRow){return getRowValue(parentRow) +}}; +var getParentRow=function getParentRow(row){var level=parseInt(row.getAttribute("level"))-1; +for(row=row.previousSibling; +row; +row=row.previousSibling){if(parseInt(row.getAttribute("level"))==level){return row +}}}; +var getPath=function getPath(row){var name=getRowName(row); +var path=[name]; +var level=parseInt(row.getAttribute("level"))-1; +for(row=row.previousSibling; +row; +row=row.previousSibling){if(parseInt(row.getAttribute("level"))==level){var name=getRowName(row); +path.splice(0,0,name); +--level +}}return path +}; +Firebug.DOM=extend(Firebug.Module,{getPanel:function(){return Firebug.chrome?Firebug.chrome.getPanel("DOM"):null +}}); +Firebug.registerModule(Firebug.DOM); +var lastHighlightedObject; +function DOMSidePanel(){}DOMSidePanel.prototype=extend(Firebug.DOMBasePanel.prototype,{selectRow:function(row,target){if(!target){target=row.lastChild.firstChild +}if(!target||!target.repObject){return +}this.pathToAppend=getPath(row); +var valueBox=row.lastChild.firstChild; +if(hasClass(valueBox,"objectBox-array")){var arrayIndex=FirebugReps.Arr.getItemIndex(target); +this.pathToAppend.push(arrayIndex) +}var object=target.repObject; +if(instanceOf(object,"Element")){Firebug.HTML.selectTreeNode(ElementCache(object)) +}else{Firebug.chrome.selectPanel("DOM"); +Firebug.chrome.getPanel("DOM").select(object,true) +}},onClick:function(event){var target=event.srcElement||event.target; +var repNode=Firebug.getRepNode(target); +if(repNode){var row=getAncestorByClass(target,"memberRow"); +if(row){this.selectRow(row,repNode); +cancelEvent(event) +}}},name:"DOMSidePanel",parentPanel:"HTML",title:"DOM",options:{hasToolButtons:true},isInitialized:false,create:function(){Firebug.DOMBasePanel.prototype.create.apply(this,arguments); +this.onClick=bind(this.onClick,this) +},initialize:function(){Firebug.DOMBasePanel.prototype.initialize.apply(this,arguments); +addEvent(this.panelNode,"click",this.onClick); +var selection=ElementCache.get(Firebug.context.persistedState.selectedHTMLElementId); +if(selection){this.select(selection,true) +}},shutdown:function(){removeEvent(this.panelNode,"click",this.onClick); +Firebug.DOMBasePanel.prototype.shutdown.apply(this,arguments) +},reattach:function(oldChrome){this.toggles=oldChrome.getPanel("DOMSidePanel").toggles +}}); +Firebug.registerPanel(DOMSidePanel) +}}); +FBL.FBTrace={}; +(function(){var traceOptions={DBG_TIMESTAMP:1,DBG_INITIALIZE:1,DBG_CHROME:1,DBG_ERRORS:1,DBG_DISPATCH:1,DBG_CSS:1}; +this.module=null; +this.initialize=function(){if(!this.messageQueue){this.messageQueue=[] +}for(var name in traceOptions){this[name]=traceOptions[name] +}}; +this.sysout=function(){return this.logFormatted(arguments,"") +}; +this.dumpProperties=function(title,object){return this.logFormatted("dumpProperties() not supported.","warning") +}; +this.dumpStack=function(){return this.logFormatted("dumpStack() not supported.","warning") +}; +this.flush=function(module){this.module=module; +var queue=this.messageQueue; +this.messageQueue=[]; +for(var i=0; +i<queue.length; +++i){this.writeMessage(queue[i][0],queue[i][1],queue[i][2]) +}}; +this.getPanel=function(){return this.module?this.module.getPanel():null +}; +this.logFormatted=function(objects,className){var html=this.DBG_TIMESTAMP?[getTimestamp()," | "]:[]; +var length=objects.length; +for(var i=0; +i<length; +++i){appendText(" ",html); +var object=objects[i]; +if(i==0){html.push("<b>"); +appendText(object,html); +html.push("</b>") +}else{appendText(object,html) +}}return this.logRow(html,className) +}; +this.logRow=function(message,className){var panel=this.getPanel(); +if(panel&&panel.panelNode){this.writeMessage(message,className) +}else{this.messageQueue.push([message,className]) +}return this.LOG_COMMAND +}; +this.writeMessage=function(message,className){var container=this.getPanel().containerNode; +var isScrolledToBottom=container.scrollTop+container.offsetHeight>=container.scrollHeight; +this.writeRow.call(this,message,className); +if(isScrolledToBottom){container.scrollTop=container.scrollHeight-container.offsetHeight +}}; +this.appendRow=function(row){var container=this.getPanel().panelNode; +container.appendChild(row) +}; +this.writeRow=function(message,className){var row=this.getPanel().panelNode.ownerDocument.createElement("div"); +row.className="logRow"+(className?" logRow-"+className:""); +row.innerHTML=message.join(""); +this.appendRow(row) +}; +function appendText(object,html){html.push(escapeHTML(objectToString(object))) +}function getTimestamp(){var now=new Date(); +var ms=""+(now.getMilliseconds()/1000).toFixed(3); +ms=ms.substr(2); +return now.toLocaleTimeString()+"."+ms +}var HTMLtoEntity={"<":"<",">":">","&":"&","'":"'",'"':"""}; +function replaceChars(ch){return HTMLtoEntity[ch] +}function escapeHTML(value){return(value+"").replace(/[<>&"']/g,replaceChars) +}function objectToString(object){try{return object+"" +}catch(exc){return null +}}}).apply(FBL.FBTrace); +FBL.ns(function(){with(FBL){if(!Env.Options.enableTrace){return +}Firebug.Trace=extend(Firebug.Module,{getPanel:function(){return Firebug.chrome?Firebug.chrome.getPanel("Trace"):null +},clear:function(){this.getPanel().panelNode.innerHTML="" +}}); +Firebug.registerModule(Firebug.Trace); +function TracePanel(){}TracePanel.prototype=extend(Firebug.Panel,{name:"Trace",title:"Trace",options:{hasToolButtons:true,innerHTMLSync:true},create:function(){Firebug.Panel.create.apply(this,arguments); +this.clearButton=new Button({caption:"Clear",title:"Clear FBTrace logs",owner:Firebug.Trace,onClick:Firebug.Trace.clear}) +},initialize:function(){Firebug.Panel.initialize.apply(this,arguments); +this.clearButton.initialize() +},shutdown:function(){this.clearButton.shutdown(); +Firebug.Panel.shutdown.apply(this,arguments) +}}); +Firebug.registerPanel(TracePanel) +}}); +FBL.ns(function(){with(FBL){var modules=[]; +var panelTypes=[]; +var panelTypeMap={}; +var parentPanelMap={}; +var registerModule=Firebug.registerModule; +var registerPanel=Firebug.registerPanel; +append(Firebug,{extend:function(fn){if(Firebug.chrome&&Firebug.chrome.addPanel){var namespace=ns(fn); +fn.call(namespace,FBL) +}else{setTimeout(function(){Firebug.extend(fn) +},100) +}},registerModule:function(){registerModule.apply(Firebug,arguments); +modules.push.apply(modules,arguments); +dispatch(modules,"initialize",[]); +if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.registerModule") +}},registerPanel:function(){registerPanel.apply(Firebug,arguments); +panelTypes.push.apply(panelTypes,arguments); +for(var i=0,panelType; +panelType=arguments[i]; +++i){if(panelType.prototype.name=="Dev"){continue +}panelTypeMap[panelType.prototype.name]=arguments[i]; +var parentPanelName=panelType.prototype.parentPanel; +if(parentPanelName){parentPanelMap[parentPanelName]=1 +}else{var panelName=panelType.prototype.name; +var chrome=Firebug.chrome; +chrome.addPanel(panelName); +var onTabClick=function onTabClick(){chrome.selectPanel(panelName); +return false +}; +chrome.addController([chrome.panelMap[panelName].tabNode,"mousedown",onTabClick]) +}}if(FBTrace.DBG_INITIALIZE){for(var i=0; +i<arguments.length; +++i){FBTrace.sysout("Firebug.registerPanel",arguments[i].prototype.name) +}}}}) +}}); +FBL.ns(function(){with(FBL){FirebugChrome.Skin={CSS:'.obscured{left:-999999px !important;}.collapsed{display:none;}[collapsed="true"]{display:none;}#fbCSS{padding:0 !important;}.cssPropDisable{float:left;display:block;width:2em;cursor:default;}.infoTip{z-index:2147483647;position:fixed;padding:2px 3px;border:1px solid #CBE087;background:LightYellow;font-family:Monaco,monospace;color:#000000;display:none;white-space:nowrap;pointer-events:none;}.infoTip[active="true"]{display:block;}.infoTipLoading{width:16px;height:16px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/loading_16.gif) no-repeat;}.infoTipImageBox{font-size:11px;min-width:100px;text-align:center;}.infoTipCaption{font-size:11px;font:Monaco,monospace;}.infoTipLoading > .infoTipImage,.infoTipLoading > .infoTipCaption{display:none;}h1.groupHeader{padding:2px 4px;margin:0 0 4px 0;border-top:1px solid #CCCCCC;border-bottom:1px solid #CCCCCC;background:#eee url(https://getfirebug.com/releases/lite/latest/skin/xp/group.gif) repeat-x;font-size:11px;font-weight:bold;_position:relative;}.inlineEditor,.fixedWidthEditor{z-index:2147483647;position:absolute;display:none;}.inlineEditor{margin-left:-6px;margin-top:-3px;}.textEditorInner,.fixedWidthEditor{margin:0 0 0 0 !important;padding:0;border:none !important;font:inherit;text-decoration:inherit;background-color:#FFFFFF;}.fixedWidthEditor{border-top:1px solid #888888 !important;border-bottom:1px solid #888888 !important;}.textEditorInner{position:relative;top:-7px;left:-5px;outline:none;resize:none;}.textEditorInner1{padding-left:11px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorBorders.png) repeat-y;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorBorders.gif) repeat-y;_overflow:hidden;}.textEditorInner2{position:relative;padding-right:2px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorBorders.png) repeat-y 100% 0;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorBorders.gif) repeat-y 100% 0;_position:fixed;}.textEditorTop1{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.png) no-repeat 100% 0;margin-left:11px;height:10px;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.gif) no-repeat 100% 0;_overflow:hidden;}.textEditorTop2{position:relative;left:-11px;width:11px;height:10px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.png) no-repeat;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.gif) no-repeat;}.textEditorBottom1{position:relative;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.png) no-repeat 100% 100%;margin-left:11px;height:12px;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.gif) no-repeat 100% 100%;}.textEditorBottom2{position:relative;left:-11px;width:11px;height:12px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.png) no-repeat 0 100%;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.gif) no-repeat 0 100%;}.panelNode-css{overflow-x:hidden;}.cssSheet > .insertBefore{height:1.5em;}.cssRule{position:relative;margin:0;padding:1em 0 0 6px;font-family:Monaco,monospace;color:#000000;}.cssRule:first-child{padding-top:6px;}.cssElementRuleContainer{position:relative;}.cssHead{padding-right:150px;}.cssProp{}.cssPropName{color:DarkGreen;}.cssPropValue{margin-left:8px;color:DarkBlue;}.cssOverridden span{text-decoration:line-through;}.cssInheritedRule{}.cssInheritLabel{margin-right:0.5em;font-weight:bold;}.cssRule .objectLink-sourceLink{top:0;}.cssProp.editGroup:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/disable.png) no-repeat 2px 1px;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/disable.gif) no-repeat 2px 1px;}.cssProp.editGroup.editing{background:none;}.cssProp.disabledStyle{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/disableHover.png) no-repeat 2px 1px;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/disableHover.gif) no-repeat 2px 1px;opacity:1;color:#CCCCCC;}.disabledStyle .cssPropName,.disabledStyle .cssPropValue{color:#CCCCCC;}.cssPropValue.editing + .cssSemi,.inlineExpander + .cssSemi{display:none;}.cssPropValue.editing{white-space:nowrap;}.stylePropName{font-weight:bold;padding:0 4px 4px 4px;width:50%;}.stylePropValue{width:50%;}.panelNode-net{overflow-x:hidden;}.netTable{width:100%;}.hideCategory-undefined .category-undefined,.hideCategory-html .category-html,.hideCategory-css .category-css,.hideCategory-js .category-js,.hideCategory-image .category-image,.hideCategory-xhr .category-xhr,.hideCategory-flash .category-flash,.hideCategory-txt .category-txt,.hideCategory-bin .category-bin{display:none;}.netHeadRow{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/group.gif) repeat-x #FFFFFF;}.netHeadCol{border-bottom:1px solid #CCCCCC;padding:2px 4px 2px 18px;font-weight:bold;}.netHeadLabel{white-space:nowrap;overflow:hidden;}.netHeaderRow{height:16px;}.netHeaderCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;background:#BBBBBB url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/tableHeader.gif) repeat-x;white-space:nowrap;}.netHeaderRow > .netHeaderCell:first-child > .netHeaderCellBox{padding:2px 14px 2px 18px;}.netHeaderCellBox{padding:2px 14px 2px 10px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.netHeaderCell:hover:active{background:#959595 url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/tableHeaderActive.gif) repeat-x;}.netHeaderSorted{background:#7D93B2 url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;}.netHeaderSorted > .netHeaderCellBox{border-right-color:#6B7C93;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/arrowDown.png) no-repeat right;}.netHeaderSorted.sortedAscending > .netHeaderCellBox{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/arrowUp.png);}.netHeaderSorted:hover:active{background:#536B90 url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;}.panelNode-net .netRowHeader{display:block;}.netRowHeader{cursor:pointer;display:none;height:15px;margin-right:0 !important;}.netRow .netRowHeader{background-position:5px 1px;}.netRow[breakpoint="true"] .netRowHeader{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/breakpoint.png);}.netRow[breakpoint="true"][disabledBreakpoint="true"] .netRowHeader{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/breakpointDisabled.png);}.netRow.category-xhr:hover .netRowHeader{background-color:#F6F6F6;}#netBreakpointBar{max-width:38px;}#netHrefCol > .netHeaderCellBox{border-left:0px;}.netRow .netRowHeader{width:3px;}.netInfoRow .netRowHeader{display:table-cell;}.netTable[hiddenCols~=netHrefCol] TD[id="netHrefCol"],.netTable[hiddenCols~=netHrefCol] TD.netHrefCol,.netTable[hiddenCols~=netStatusCol] TD[id="netStatusCol"],.netTable[hiddenCols~=netStatusCol] TD.netStatusCol,.netTable[hiddenCols~=netDomainCol] TD[id="netDomainCol"],.netTable[hiddenCols~=netDomainCol] TD.netDomainCol,.netTable[hiddenCols~=netSizeCol] TD[id="netSizeCol"],.netTable[hiddenCols~=netSizeCol] TD.netSizeCol,.netTable[hiddenCols~=netTimeCol] TD[id="netTimeCol"],.netTable[hiddenCols~=netTimeCol] TD.netTimeCol{display:none;}.netRow{background:LightYellow;}.netRow.loaded{background:#FFFFFF;}.netRow.loaded:hover{background:#EFEFEF;}.netCol{padding:0;vertical-align:top;border-bottom:1px solid #EFEFEF;white-space:nowrap;height:17px;}.netLabel{width:100%;}.netStatusCol{padding-left:10px;color:rgb(128,128,128);}.responseError > .netStatusCol{color:red;}.netDomainCol{padding-left:5px;}.netSizeCol{text-align:right;padding-right:10px;}.netHrefLabel{-moz-box-sizing:padding-box;overflow:hidden;z-index:10;position:absolute;padding-left:18px;padding-top:1px;max-width:15%;font-weight:bold;}.netFullHrefLabel{display:none;-moz-user-select:none;padding-right:10px;padding-bottom:3px;max-width:100%;background:#FFFFFF;z-index:200;}.netHrefCol:hover > .netFullHrefLabel{display:block;}.netRow.loaded:hover .netCol > .netFullHrefLabel{background-color:#EFEFEF;}.useA11y .a11yShowFullLabel{display:block;background-image:none !important;border:1px solid #CBE087;background-color:LightYellow;font-family:Monaco,monospace;color:#000000;font-size:10px;z-index:2147483647;}.netSizeLabel{padding-left:6px;}.netStatusLabel,.netDomainLabel,.netSizeLabel,.netBar{padding:1px 0 2px 0 !important;}.responseError{color:red;}.hasHeaders .netHrefLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.netLoadingIcon{position:absolute;border:0;margin-left:14px;width:16px;height:16px;background:transparent no-repeat 0 0;background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/loading_16.gif);display:inline-block;}.loaded .netLoadingIcon{display:none;}.netBar,.netSummaryBar{position:relative;border-right:50px solid transparent;}.netResolvingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarResolving.gif) repeat-x;z-index:60;}.netConnectingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarConnecting.gif) repeat-x;z-index:50;}.netBlockingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarWaiting.gif) repeat-x;z-index:40;}.netSendingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarSending.gif) repeat-x;z-index:30;}.netWaitingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarResponded.gif) repeat-x;z-index:20;min-width:1px;}.netReceivingBar{position:absolute;left:0;top:0;bottom:0;background:#38D63B url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarLoading.gif) repeat-x;z-index:10;}.netWindowLoadBar,.netContentLoadBar{position:absolute;left:0;top:0;bottom:0;width:1px;background-color:red;z-index:70;opacity:0.5;display:none;margin-bottom:-1px;}.netContentLoadBar{background-color:Blue;}.netTimeLabel{-moz-box-sizing:padding-box;position:absolute;top:1px;left:100%;padding-left:6px;color:#444444;min-width:16px;}.loaded .netReceivingBar,.loaded.netReceivingBar{background:#B6B6B6 url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarLoaded.gif) repeat-x;border-color:#B6B6B6;}.fromCache .netReceivingBar,.fromCache.netReceivingBar{background:#D6D6D6 url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarCached.gif) repeat-x;border-color:#D6D6D6;}.netSummaryRow .netTimeLabel,.loaded .netTimeLabel{background:transparent;}.timeInfoTip{width:150px; height:40px}.timeInfoTipBar,.timeInfoTipEventBar{position:relative;display:block;margin:0;opacity:1;height:15px;width:4px;}.timeInfoTipEventBar{width:1px !important;}.timeInfoTipCell.startTime{padding-right:8px;}.timeInfoTipCell.elapsedTime{text-align:right;padding-right:8px;}.sizeInfoLabelCol{font-weight:bold;padding-right:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;}.sizeInfoSizeCol{font-weight:bold;}.sizeInfoDetailCol{color:gray;text-align:right;}.sizeInfoDescCol{font-style:italic;}.netSummaryRow .netReceivingBar{background:#BBBBBB;border:none;}.netSummaryLabel{color:#222222;}.netSummaryRow{background:#BBBBBB !important;font-weight:bold;}.netSummaryRow .netBar{border-right-color:#BBBBBB;}.netSummaryRow > .netCol{border-top:1px solid #999999;border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;padding-top:1px;padding-bottom:2px;}.netSummaryRow > .netHrefCol:hover{background:transparent !important;}.netCountLabel{padding-left:18px;}.netTotalSizeCol{text-align:right;padding-right:10px;}.netTotalTimeCol{text-align:right;}.netCacheSizeLabel{position:absolute;z-index:1000;left:0;top:0;}.netLimitRow{background:rgb(255,255,225) !important;font-weight:normal;color:black;font-weight:normal;}.netLimitLabel{padding-left:18px;}.netLimitRow > .netCol{border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;vertical-align:middle !important;padding-top:2px;padding-bottom:2px;}.netLimitButton{font-size:11px;padding-top:1px;padding-bottom:1px;}.netInfoCol{border-top:1px solid #EEEEEE;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/group.gif) repeat-x #FFFFFF;}.netInfoBody{margin:10px 0 4px 10px;}.netInfoTabs{position:relative;padding-left:17px;}.netInfoTab{position:relative;top:-3px;margin-top:10px;padding:4px 6px;border:1px solid transparent;border-bottom:none;_border:none;font-weight:bold;color:#565656;cursor:pointer;}.netInfoTabSelected{cursor:default !important;border:1px solid #D7D7D7 !important;border-bottom:none !important;-moz-border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;background-color:#FFFFFF;}.logRow-netInfo.error .netInfoTitle{color:red;}.logRow-netInfo.loading .netInfoResponseText{font-style:italic;color:#888888;}.loading .netInfoResponseHeadersTitle{display:none;}.netInfoResponseSizeLimit{font-family:Lucida Grande,Tahoma,sans-serif;padding-top:10px;font-size:11px;}.netInfoText{display:none;margin:0;border:1px solid #D7D7D7;border-right:none;padding:8px;background-color:#FFFFFF;font-family:Monaco,monospace;white-space:pre-wrap;}.netInfoTextSelected{display:block;}.netInfoParamName{padding-right:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;vertical-align:top;text-align:right;white-space:nowrap;}.netInfoPostText .netInfoParamName{width:1px;}.netInfoParamValue{width:100%;}.netInfoHeadersText,.netInfoPostText,.netInfoPutText{padding-top:0;}.netInfoHeadersGroup,.netInfoPostParams,.netInfoPostSource{margin-bottom:4px;border-bottom:1px solid #D7D7D7;padding-top:8px;padding-bottom:2px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#565656;}.netInfoPostParamsTable,.netInfoPostPartsTable,.netInfoPostJSONTable,.netInfoPostXMLTable,.netInfoPostSourceTable{margin-bottom:10px;width:100%;}.netInfoPostContentType{color:#bdbdbd;padding-left:50px;font-weight:normal;}.netInfoHtmlPreview{border:0;width:100%;height:100%;}.netHeadersViewSource{color:#bdbdbd;margin-left:200px;font-weight:normal;}.netHeadersViewSource:hover{color:blue;cursor:pointer;}.netActivationRow,.netPageSeparatorRow{background:rgb(229,229,229) !important;font-weight:normal;color:black;}.netActivationLabel{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/infoIcon.png) no-repeat 3px 2px;padding-left:22px;}.netPageSeparatorRow{height:5px !important;}.netPageSeparatorLabel{padding-left:22px;height:5px !important;}.netPageRow{background-color:rgb(255,255,255);}.netPageRow:hover{background:#EFEFEF;}.netPageLabel{padding:1px 0 2px 18px !important;font-weight:bold;}.netActivationRow > .netCol{border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;padding-top:2px;padding-bottom:3px;}.twisty,.logRow-errorMessage > .hasTwisty > .errorTitle,.logRow-log > .objectBox-array.hasTwisty,.logRow-spy .spyHead .spyTitle,.logGroup > .logRow,.memberRow.hasChildren > .memberLabelCell > .memberLabel,.hasHeaders .netHrefLabel,.netPageRow > .netCol > .netPageTitle{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;min-height:12px;}.logRow-errorMessage > .hasTwisty.opened > .errorTitle,.logRow-log > .objectBox-array.hasTwisty.opened,.logRow-spy.opened .spyHead .spyTitle,.logGroup.opened > .logRow,.memberRow.hasChildren.opened > .memberLabelCell > .memberLabel,.nodeBox.highlightOpen > .nodeLabel > .twisty,.nodeBox.open > .nodeLabel > .twisty,.netRow.opened > .netCol > .netHrefLabel,.netPageRow.opened > .netCol > .netPageTitle{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/tree_close.gif);}.twisty{background-position:4px 4px;}* html .logRow-spy .spyHead .spyTitle,* html .logGroup .logGroupLabel,* html .hasChildren .memberLabelCell .memberLabel,* html .hasHeaders .netHrefLabel{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;}* html .opened .spyHead .spyTitle,* html .opened .logGroupLabel,* html .opened .memberLabelCell .memberLabel{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/tree_close.gif);background-repeat:no-repeat;background-position:2px 2px;}.panelNode-console{overflow-x:hidden;}.objectLink{text-decoration:none;}.objectLink:hover{cursor:pointer;text-decoration:underline;}.logRow{position:relative;margin:0;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFFFFF;overflow:hidden !important;}.useA11y .logRow:focus{border-bottom:1px solid #000000 !important;outline:none !important;background-color:#FFFFAD !important;}.useA11y .logRow:focus a.objectLink-sourceLink{background-color:#FFFFAD;}.useA11y .a11yFocus:focus,.useA11y .objectBox:focus{outline:2px solid #FF9933;background-color:#FFFFAD;}.useA11y .objectBox-null:focus,.useA11y .objectBox-undefined:focus{background-color:#888888 !important;}.useA11y .logGroup.opened > .logRow{border-bottom:1px solid #ffffff;}.logGroup{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/group.gif) repeat-x #FFFFFF;padding:0 !important;border:none !important;}.logGroupBody{display:none;margin-left:16px;border-left:1px solid #D7D7D7;border-top:1px solid #D7D7D7;background:#FFFFFF;}.logGroup > .logRow{background-color:transparent !important;font-weight:bold;}.logGroup.opened > .logRow{border-bottom:none;}.logGroup.opened > .logGroupBody{display:block;}.logRow-command > .objectBox-text{font-family:Monaco,monospace;color:#0000FF;white-space:pre-wrap;}.logRow-info,.logRow-warn,.logRow-error,.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-left:22px;background-repeat:no-repeat;background-position:4px 2px;}.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-top:0;padding-bottom:0;}.logRow-info,.logRow-info .objectLink-sourceLink{background-color:#FFFFFF;}.logRow-warn,.logRow-warningMessage,.logRow-warn .objectLink-sourceLink,.logRow-warningMessage .objectLink-sourceLink{background-color:cyan;}.logRow-error,.logRow-assert,.logRow-errorMessage,.logRow-error .objectLink-sourceLink,.logRow-errorMessage .objectLink-sourceLink{background-color:LightYellow;}.logRow-error,.logRow-assert,.logRow-errorMessage{color:#FF0000;}.logRow-info{}.logRow-warn,.logRow-warningMessage{}.logRow-error,.logRow-assert,.logRow-errorMessage{}.objectBox-string,.objectBox-text,.objectBox-number,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-string,.objectBox-text,.objectLink-textNode{white-space:pre-wrap;}.objectBox-number,.objectLink-styleRule,.objectLink-element,.objectLink-textNode{color:#000088;}.objectBox-string{color:#FF0000;}.objectLink-function,.objectBox-stackTrace,.objectLink-profile{color:DarkGreen;}.objectBox-null,.objectBox-undefined{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-exception{padding:0 2px 0 18px;color:red;}.objectLink-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.errorTitle{margin-top:0px;margin-bottom:1px;padding-top:2px;padding-bottom:2px;}.errorTrace{margin-left:17px;}.errorSourceBox{margin:2px 0;}.errorSource-none{display:none;}.errorSource-syntax > .errorBreak{visibility:hidden;}.errorSource{cursor:pointer;font-family:Monaco,monospace;color:DarkGreen;}.errorSource:hover{text-decoration:underline;}.errorBreak{cursor:pointer;display:none;margin:0 6px 0 0;width:13px;height:14px;vertical-align:bottom;opacity:0.1;}.hasBreakSwitch .errorBreak{display:inline;}.breakForError .errorBreak{opacity:1;}.assertDescription{margin:0;}.logRow-profile > .logRow > .objectBox-text{font-family:Lucida Grande,Tahoma,sans-serif;color:#000000;}.logRow-profile > .logRow > .objectBox-text:last-child{color:#555555;font-style:italic;}.logRow-profile.opened > .logRow{padding-bottom:4px;}.profilerRunning > .logRow{padding-left:22px !important;}.profileSizer{width:100%;overflow-x:auto;overflow-y:scroll;}.profileTable{border-bottom:1px solid #D7D7D7;padding:0 0 4px 0;}.profileTable tr[odd="1"]{background-color:#F5F5F5;vertical-align:middle;}.profileTable a{vertical-align:middle;}.profileTable td{padding:1px 4px 0 4px;}.headerCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;}.headerCellBox{padding:2px 4px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.headerCell:hover:active{}.headerSorted{}.headerSorted > .headerCellBox{border-right-color:#6B7C93;}.headerSorted.sortedAscending > .headerCellBox{}.headerSorted:hover:active{}.linkCell{text-align:right;}.linkCell > .objectLink-sourceLink{position:static;}.logRow-stackTrace{padding-top:0;background:#f8f8f8;}.logRow-stackTrace > .objectBox-stackFrame{position:relative;padding-top:2px;}.objectLink-object{font-family:Lucida Grande,sans-serif;font-weight:bold;color:DarkGreen;white-space:pre-wrap;}.objectProp-object{color:DarkGreen;}.objectProps{color:#000;font-weight:normal;}.objectPropName{color:#777;}.objectProps .objectProp-string{color:#f55;}.objectProps .objectProp-number{color:#55a;}.objectProps .objectProp-object{color:#585;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.selectorHidden > .selectorTag{color:#5F82D9;}.selectorHidden > .selectorId{color:#888888;}.selectorHidden > .selectorClass{color:#D86060;}.selectorValue{font-family:Lucida Grande,sans-serif;font-style:italic;color:#555555;}.panelNode.searching .logRow{display:none;}.logRow.matched{display:block !important;}.logRow.matching{position:absolute;left:-1000px;top:-1000px;max-width:0;max-height:0;overflow:hidden;}.objectLeftBrace,.objectRightBrace,.objectEqual,.objectComma,.arrayLeftBracket,.arrayRightBracket,.arrayComma{font-family:Monaco,monospace;}.objectLeftBrace,.objectRightBrace,.arrayLeftBracket,.arrayRightBracket{font-weight:bold;}.objectLeftBrace,.arrayLeftBracket{margin-right:4px;}.objectRightBrace,.arrayRightBracket{margin-left:4px;}.logRow-dir{padding:0;}.logRow-errorMessage .hasTwisty .errorTitle,.logRow-spy .spyHead .spyTitle,.logGroup .logRow{cursor:pointer;padding-left:18px;background-repeat:no-repeat;background-position:3px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle{background-position:2px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle:hover,.logRow-spy .spyHead .spyTitle:hover,.logGroup > .logRow:hover{text-decoration:underline;}.logRow-spy{padding:0 !important;}.logRow-spy,.logRow-spy .objectLink-sourceLink{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/group.gif) repeat-x #FFFFFF;padding-right:4px;right:0;}.logRow-spy.opened{padding-bottom:4px;border-bottom:none;}.spyTitle{color:#000000;font-weight:bold;-moz-box-sizing:padding-box;overflow:hidden;z-index:100;padding-left:18px;}.spyCol{padding:0;white-space:nowrap;height:16px;}.spyTitleCol:hover > .objectLink-sourceLink,.spyTitleCol:hover > .spyTime,.spyTitleCol:hover > .spyStatus,.spyTitleCol:hover > .spyTitle{display:none;}.spyFullTitle{display:none;-moz-user-select:none;max-width:100%;background-color:Transparent;}.spyTitleCol:hover > .spyFullTitle{display:block;}.spyStatus{padding-left:10px;color:rgb(128,128,128);}.spyTime{margin-left:4px;margin-right:4px;color:rgb(128,128,128);}.spyIcon{margin-right:4px;margin-left:4px;width:16px;height:16px;vertical-align:middle;background:transparent no-repeat 0 0;display:none;}.loading .spyHead .spyRow .spyIcon{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/loading_16.gif);display:block;}.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon{width:0;margin:0;}.logRow-spy.error .spyHead .spyRow .spyIcon{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/errorIcon-sm.png);display:block;background-position:2px 2px;}.logRow-spy .spyHead .netInfoBody{display:none;}.logRow-spy.opened .spyHead .netInfoBody{margin-top:10px;display:block;}.logRow-spy.error .spyTitle,.logRow-spy.error .spyStatus,.logRow-spy.error .spyTime{color:red;}.logRow-spy.loading .spyResponseText{font-style:italic;color:#888888;}.caption{font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#444444;}.warning{padding:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#888888;}.panelNode-dom{overflow-x:hidden !important;}.domTable{font-size:1em;width:100%;table-layout:fixed;background:#fff;}.domTableIE{width:auto;}.memberLabelCell{padding:2px 0 2px 0;vertical-align:top;}.memberValueCell{padding:1px 0 1px 5px;display:block;overflow:hidden;}.memberLabel{display:block;cursor:default;-moz-user-select:none;overflow:hidden;padding-left:18px;background-color:#FFFFFF;text-decoration:none;}.memberRow.hasChildren .memberLabelCell .memberLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.userLabel{color:#000000;font-weight:bold;}.userClassLabel{color:#E90000;font-weight:bold;}.userFunctionLabel{color:#025E2A;font-weight:bold;}.domLabel{color:#000000;}.domFunctionLabel{color:#025E2A;}.ordinalLabel{color:SlateBlue;font-weight:bold;}.scopesRow{padding:2px 18px;background-color:LightYellow;border-bottom:5px solid #BEBEBE;color:#666666;}.scopesLabel{background-color:LightYellow;}.watchEditCell{padding:2px 18px;background-color:LightYellow;border-bottom:1px solid #BEBEBE;color:#666666;}.editor-watchNewRow,.editor-memberRow{font-family:Monaco,monospace !important;}.editor-memberRow{padding:1px 0 !important;}.editor-watchRow{padding-bottom:0 !important;}.watchRow > .memberLabelCell{font-family:Monaco,monospace;padding-top:1px;padding-bottom:1px;}.watchRow > .memberLabelCell > .memberLabel{background-color:transparent;}.watchRow > .memberValueCell{padding-top:2px;padding-bottom:2px;}.watchRow > .memberLabelCell,.watchRow > .memberValueCell{background-color:#F5F5F5;border-bottom:1px solid #BEBEBE;}.watchToolbox{z-index:2147483647;position:absolute;right:0;padding:1px 2px;}#fbConsole{overflow-x:hidden !important;}#fbCSS{font:1em Monaco,monospace;padding:0 7px;}#fbstylesheetButtons select,#fbScriptButtons select{font:11px Lucida Grande,Tahoma,sans-serif;margin-top:1px;padding-left:3px;background:#fafafa;border:1px inset #fff;width:220px;outline:none;}.Selector{margin-top:10px}.CSSItem{margin-left:4%}.CSSText{padding-left:20px;}.CSSProperty{color:#005500;}.CSSValue{padding-left:5px; color:#000088;}#fbHTMLStatusBar{display:inline;}.fbToolbarButtons{display:none;}.fbStatusSeparator{display:block;float:left;padding-top:4px;}#fbStatusBarBox{display:none;}#fbToolbarContent{display:block;position:absolute;_position:absolute;top:0;padding-top:4px;height:23px;clip:rect(0,2048px,27px,0);}.fbTabMenuTarget{display:none !important;float:left;width:10px;height:10px;margin-top:6px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuTarget.png);}.fbTabMenuTarget:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuTargetHover.png);}.fbShadow{float:left;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/shadowAlpha.png) no-repeat bottom right !important;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/shadow2.gif) no-repeat bottom right;margin:10px 0 0 10px !important;margin:10px 0 0 5px;}.fbShadowContent{display:block;position:relative;background-color:#fff;border:1px solid #a9a9a9;top:-6px;left:-6px;}.fbMenu{display:none;position:absolute;font-size:11px;line-height:13px;z-index:2147483647;}.fbMenuContent{padding:2px;}.fbMenuSeparator{display:block;position:relative;padding:1px 18px 0;text-decoration:none;color:#000;cursor:default;background:#ACA899;margin:4px 0;}.fbMenuOption{display:block;position:relative;padding:2px 18px;text-decoration:none;color:#000;cursor:default;}.fbMenuOption:hover{color:#fff;background:#316AC5;}.fbMenuGroup{background:transparent url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuPin.png) no-repeat right 0;}.fbMenuGroup:hover{background:#316AC5 url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuPin.png) no-repeat right -17px;}.fbMenuGroupSelected{color:#fff;background:#316AC5 url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuPin.png) no-repeat right -17px;}.fbMenuChecked{background:transparent url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuCheckbox.png) no-repeat 4px 0;}.fbMenuChecked:hover{background:#316AC5 url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuCheckbox.png) no-repeat 4px -17px;}.fbMenuRadioSelected{background:transparent url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuRadio.png) no-repeat 4px 0;}.fbMenuRadioSelected:hover{background:#316AC5 url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuRadio.png) no-repeat 4px -17px;}.fbMenuShortcut{padding-right:85px;}.fbMenuShortcutKey{position:absolute;right:0;top:2px;width:77px;}#fbFirebugMenu{top:22px;left:0;}.fbMenuDisabled{color:#ACA899 !important;}#fbFirebugSettingsMenu{left:245px;top:99px;}#fbConsoleMenu{top:42px;left:48px;}.fbIconButton{display:block;}.fbIconButton{display:block;}.fbIconButton{display:block;float:left;height:20px;width:20px;color:#000;margin-right:2px;text-decoration:none;cursor:default;}.fbIconButton:hover{position:relative;top:-1px;left:-1px;margin-right:0;_margin-right:1px;color:#333;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbIconPressed{position:relative;margin-right:0;_margin-right:1px;top:0 !important;left:0 !important;height:19px;color:#333 !important;border:1px solid #bbb !important;border-bottom:1px solid #cfcfcf !important;border-right:1px solid #ddd !important;}#fbErrorPopup{position:absolute;right:0;bottom:0;height:19px;width:75px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #f1f2ee 0 0;z-index:999;}#fbErrorPopupContent{position:absolute;right:0;top:1px;height:18px;width:75px;_width:74px;border-left:1px solid #aca899;}#fbErrorIndicator{position:absolute;top:2px;right:5px;}.fbBtnInspectActive{background:#aaa;color:#fff !important;}.fbBody{margin:0;padding:0;overflow:hidden;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;background:#fff;}.clear{clear:both;}#fbMiniChrome{display:none;right:0;height:27px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #f1f2ee 0 0;margin-left:1px;}#fbMiniContent{display:block;position:relative;left:-1px;right:0;top:1px;height:25px;border-left:1px solid #aca899;}#fbToolbarSearch{float:right;border:1px solid #ccc;margin:0 5px 0 0;background:#fff url(https://getfirebug.com/releases/lite/latest/skin/xp/search.png) no-repeat 4px 2px !important;background:#fff url(https://getfirebug.com/releases/lite/latest/skin/xp/search.gif) no-repeat 4px 2px;padding-left:20px;font-size:11px;}#fbToolbarErrors{float:right;margin:1px 4px 0 0;font-size:11px;}#fbLeftToolbarErrors{float:left;margin:7px 0px 0 5px;font-size:11px;}.fbErrors{padding-left:20px;height:14px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/errorIcon.png) no-repeat !important;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/errorIcon.gif) no-repeat;color:#f00;font-weight:bold;}#fbMiniErrors{display:inline;display:none;float:right;margin:5px 2px 0 5px;}#fbMiniIcon{float:right;margin:3px 4px 0;height:20px;width:20px;float:right;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) 0 -135px;cursor:pointer;}#fbChrome{font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;position:absolute;_position:static;top:0;left:0;height:100%;width:100%;border-collapse:collapse;border-spacing:0;background:#fff;overflow:hidden;}#fbChrome > tbody > tr > td{padding:0;}#fbTop{height:49px;}#fbToolbar{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #f1f2ee 0 0;height:27px;font-size:11px;line-height:13px;}#fbPanelBarBox{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #dbd9c9 0 -27px;height:22px;}#fbContent{height:100%;vertical-align:top;}#fbBottom{height:18px;background:#fff;}#fbToolbarIcon{float:left;padding:0 5px 0;}#fbToolbarIcon a{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) 0 -135px;}#fbToolbarButtons{padding:0 2px 0 5px;}#fbToolbarButtons{padding:0 2px 0 5px;}.fbButton{text-decoration:none;display:block;float:left;color:#000;padding:4px 6px 4px 7px;cursor:default;}.fbButton:hover{color:#333;background:#f5f5ef url(https://getfirebug.com/releases/lite/latest/skin/xp/buttonBg.png);padding:3px 5px 3px 6px;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbBtnPressed{background:#e3e3db url(https://getfirebug.com/releases/lite/latest/skin/xp/buttonBgHover.png) !important;padding:3px 4px 2px 6px !important;margin:1px 0 0 1px !important;border:1px solid #ACA899 !important;border-color:#ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;}#fbStatusBarBox{top:4px;cursor:default;}.fbToolbarSeparator{overflow:hidden;border:1px solid;border-color:transparent #fff transparent #777;_border-color:#eee #fff #eee #777;height:7px;margin:6px 3px;float:left;}.fbBtnSelected{font-weight:bold;}.fbStatusBar{color:#aca899;}.fbStatusBar a{text-decoration:none;color:black;}.fbStatusBar a:hover{color:blue;cursor:pointer;}#fbWindowButtons{position:absolute;white-space:nowrap;right:0;top:0;height:17px;width:48px;padding:5px;z-index:6;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #f1f2ee 0 0;}#fbPanelBar1{width:1024px; z-index:8;left:0;white-space:nowrap;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;left:4px;}#fbPanelBar2Box{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;height:22px;width:300px; z-index:9;right:0;}#fbPanelBar2{position:absolute;width:290px; height:22px;padding-left:4px;}.fbPanel{display:none;}#fbPanelBox1,#fbPanelBox2{max-height:inherit;height:100%;font-size:1em;}#fbPanelBox2{background:#fff;}#fbPanelBox2{width:300px;background:#fff;}#fbPanel2{margin-left:6px;background:#fff;}#fbLargeCommandLine{display:none;position:absolute;z-index:9;top:27px;right:0;width:294px;height:201px;border-width:0;margin:0;padding:2px 0 0 2px;resize:none;outline:none;font-size:11px;overflow:auto;border-top:1px solid #B9B7AF;_right:-1px;_border-left:1px solid #fff;}#fbLargeCommandButtons{display:none;background:#ECE9D8;bottom:0;right:0;width:294px;height:21px;padding-top:1px;position:fixed;border-top:1px solid #ACA899;z-index:9;}#fbSmallCommandLineIcon{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/down.png) no-repeat;position:absolute;right:2px;bottom:3px;z-index:99;}#fbSmallCommandLineIcon:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/downHover.png) no-repeat;}.hide{overflow:hidden !important;position:fixed !important;display:none !important;visibility:hidden !important;}#fbCommand{height:18px;}#fbCommandBox{position:fixed;_position:absolute;width:100%;height:18px;bottom:0;overflow:hidden;z-index:9;background:#fff;border:0;border-top:1px solid #ccc;}#fbCommandIcon{position:absolute;color:#00f;top:2px;left:6px;display:inline;font:11px Monaco,monospace;z-index:10;}#fbCommandLine{position:absolute;width:100%;top:0;left:0;border:0;margin:0;padding:2px 0 2px 32px;font:11px Monaco,monospace;z-index:9;outline:none;}#fbLargeCommandLineIcon{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/up.png) no-repeat;position:absolute;right:1px;bottom:1px;z-index:10;}#fbLargeCommandLineIcon:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/upHover.png) no-repeat;}div.fbFitHeight{overflow:auto;position:relative;}.fbSmallButton{overflow:hidden;width:16px;height:16px;display:block;text-decoration:none;cursor:default;}#fbWindowButtons .fbSmallButton{float:right;}#fbWindow_btClose{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/min.png);}#fbWindow_btClose:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/minHover.png);}#fbWindow_btDetach{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/detach.png);}#fbWindow_btDetach:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/detachHover.png);}#fbWindow_btDeactivate{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/off.png);}#fbWindow_btDeactivate:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/offHover.png);}.fbTab{text-decoration:none;display:none;float:left;width:auto;float:left;cursor:default;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;line-height:13px;font-weight:bold;height:22px;color:#565656;}.fbPanelBar span{float:left;}.fbPanelBar .fbTabL,.fbPanelBar .fbTabR{height:22px;width:8px;}.fbPanelBar .fbTabText{padding:4px 1px 0;}a.fbTab:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) 0 -73px;}a.fbTab:hover .fbTabL{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) -16px -96px;}a.fbTab:hover .fbTabR{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) -24px -96px;}.fbSelectedTab{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #f1f2ee 0 -50px !important;color:#000;}.fbSelectedTab .fbTabL{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) 0 -96px !important;}.fbSelectedTab .fbTabR{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) -8px -96px !important;}#fbHSplitter{position:fixed;_position:absolute;left:0;top:0;width:100%;height:5px;overflow:hidden;cursor:n-resize !important;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/pixel_transparent.gif);z-index:9;}#fbHSplitter.fbOnMovingHSplitter{height:100%;z-index:100;}.fbVSplitter{background:#ece9d8;color:#000;border:1px solid #716f64;border-width:0 1px;border-left-color:#aca899;width:4px;cursor:e-resize;overflow:hidden;right:294px;text-decoration:none;z-index:10;position:absolute;height:100%;top:27px;}div.lineNo{font:1em/1.4545em Monaco,monospace;position:relative;float:left;top:0;left:0;margin:0 5px 0 0;padding:0 5px 0 10px;background:#eee;color:#888;border-right:1px solid #ccc;text-align:right;}.sourceBox{position:absolute;}.sourceCode{font:1em Monaco,monospace;overflow:hidden;white-space:pre;display:inline;}.nodeControl{margin-top:3px;margin-left:-14px;float:left;width:9px;height:9px;overflow:hidden;cursor:default;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/tree_open.gif);_float:none;_display:inline;_position:absolute;}div.nodeMaximized{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/tree_close.gif);}div.objectBox-element{padding:1px 3px;}.objectBox-selector{cursor:default;}.selectedElement{background:highlight;color:#fff !important;}.selectedElement span{color:#fff !important;}* html .selectedElement{position:relative;}@media screen and (-webkit-min-device-pixel-ratio:0){.selectedElement{background:#316AC5;color:#fff !important;}}.logRow *{font-size:1em;}.logRow{position:relative;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;zbackground-color:#FFFFFF;}.logRow-command{font-family:Monaco,monospace;color:blue;}.objectBox-string,.objectBox-text,.objectBox-number,.objectBox-function,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-null{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-string{color:red;}.objectBox-number{color:#000088;}.objectBox-function{color:DarkGreen;}.objectBox-object{color:DarkGreen;font-weight:bold;font-family:Lucida Grande,sans-serif;}.objectBox-array{color:#000;}.logRow-info,.logRow-error,.logRow-warn{background:#fff no-repeat 2px 2px;padding-left:20px;padding-bottom:3px;}.logRow-info{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/infoIcon.png) !important;background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/infoIcon.gif);}.logRow-warn{background-color:cyan;background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/warningIcon.png) !important;background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/warningIcon.gif);}.logRow-error{background-color:LightYellow;background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/errorIcon.png) !important;background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/errorIcon.gif);color:#f00;}.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:#0000FF;}.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{padding-left:26px;}.nodeTag{color:blue;cursor:pointer;}.nodeValue{color:#FF0000;font-weight:normal;}.nodeText,.nodeComment{margin:0 2px;vertical-align:top;}.nodeText{color:#333333;font-family:Monaco,monospace;}.nodeComment{color:DarkGreen;}.nodeHidden,.nodeHidden *{color:#888888;}.nodeHidden .nodeTag{color:#5F82D9;}.nodeHidden .nodeValue{color:#D86060;}.selectedElement .nodeHidden,.selectedElement .nodeHidden *{color:SkyBlue !important;}.log-object{}.property{position:relative;clear:both;height:15px;}.propertyNameCell{vertical-align:top;float:left;width:28%;position:absolute;left:0;z-index:0;}.propertyValueCell{float:right;width:68%;background:#fff;position:absolute;padding-left:5px;display:table-cell;right:0;z-index:1;}.propertyName{font-weight:bold;}.FirebugPopup{height:100% !important;}.FirebugPopup #fbWindowButtons{display:none !important;}.FirebugPopup #fbHSplitter{display:none !important;}',HTML:'<table id="fbChrome" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td id="fbTop" colspan="2"><div id="fbWindowButtons"><a id="fbWindow_btDeactivate" class="fbSmallButton fbHover" title="Deactivate Firebug for this web page"> </a><a id="fbWindow_btDetach" class="fbSmallButton fbHover" title="Open Firebug in popup window"> </a><a id="fbWindow_btClose" class="fbSmallButton fbHover" title="Minimize Firebug"> </a></div><div id="fbToolbar"><div id="fbToolbarContent"><span id="fbToolbarIcon"><a id="fbFirebugButton" class="fbIconButton" class="fbHover" target="_blank"> </a></span><span id="fbToolbarButtons"><span id="fbFixedButtons"><a id="fbChrome_btInspect" class="fbButton fbHover" title="Click an element in the page to inspect">Inspect</a></span><span id="fbConsoleButtons" class="fbToolbarButtons"><a id="fbConsole_btClear" class="fbButton fbHover" title="Clear the console">Clear</a></span></span><span id="fbStatusBarBox"><span class="fbToolbarSeparator"></span></span></div></div><div id="fbPanelBarBox"><div id="fbPanelBar1" class="fbPanelBar"><a id="fbConsoleTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Console</span><span class="fbTabMenuTarget"></span><span class="fbTabR"></span></a><a id="fbHTMLTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">HTML</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">CSS</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Script</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">DOM</span><span class="fbTabR"></span></a></div><div id="fbPanelBar2Box" class="hide"><div id="fbPanelBar2" class="fbPanelBar"></div></div></div><div id="fbHSplitter"> </div></td></tr><tr id="fbContent"><td id="fbPanelBox1"><div id="fbPanel1" class="fbFitHeight"><div id="fbConsole" class="fbPanel"></div><div id="fbHTML" class="fbPanel"></div></div></td><td id="fbPanelBox2" class="hide"><div id="fbVSplitter" class="fbVSplitter"> </div><div id="fbPanel2" class="fbFitHeight"><div id="fbHTML_Style" class="fbPanel"></div><div id="fbHTML_Layout" class="fbPanel"></div><div id="fbHTML_DOM" class="fbPanel"></div></div><textarea id="fbLargeCommandLine" class="fbFitHeight"></textarea><div id="fbLargeCommandButtons"><a id="fbCommand_btRun" class="fbButton fbHover">Run</a><a id="fbCommand_btClear" class="fbButton fbHover">Clear</a><a id="fbSmallCommandLineIcon" class="fbSmallButton fbHover"></a></div></td></tr><tr id="fbBottom" class="hide"><td id="fbCommand" colspan="2"><div id="fbCommandBox"><div id="fbCommandIcon">>>></div><input id="fbCommandLine" name="fbCommandLine" type="text"/><a id="fbLargeCommandLineIcon" class="fbSmallButton fbHover"></a></div></td></tr></tbody></table><span id="fbMiniChrome"><span id="fbMiniContent"><span id="fbMiniIcon" title="Open Firebug Lite"></span><span id="fbMiniErrors" class="fbErrors"></span></span></span>'} +}}); +FBL.initialize() +})(); \ No newline at end of file diff --git a/gui/franco/img/logo.png b/gui/franco/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..18d7f6b0117bc02103f6f100de07bbd79cbdf200 GIT binary patch literal 24194 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 literal 0 HcmV?d00001 diff --git a/gui/franco/login.html b/gui/franco/login.html new file mode 100644 index 0000000..29d5b0d --- /dev/null +++ b/gui/franco/login.html @@ -0,0 +1,41 @@ +<html> + <head> + <title>SkyliveX</title> + <script type="text/javascript" src="SkyliveX.js"></script> + <script type="text/javascript"> + function sendLogin() + { + SkyliveX.pushLogin(document.forms.loginform.user.value, document.forms.loginform.pass.value); + } + function notifycb(msg) + { + document.getElementById("res").innerHTML=msg; + } + function alertcb(msg) + { + document.getElementById("alert").innerHTML=msg; + } + </script> + <style> + #page { + background-color: #0000FF; + color: #FFFFFF; + text-align: center; + margin: 0 auto; + } + </style> + </head> + <body> + <div id="page"> + <b>SkyliveX 0.1.0 Login</b> + <div id="res"></div> + <div id="alert"></div> + <form id="login" name="loginform"> + Username: <input type="text" value="" name="user" placeholder="username"> + Password: <input type="password" value="" name="pass" placeholder="password"> + <input type="submit" value="Login" onClick="sendLogin();"> + </form> + </div> + </body> +</html> + diff --git a/gui/franco/maingui.html b/gui/franco/maingui.html new file mode 100644 index 0000000..5aa0503 --- /dev/null +++ b/gui/franco/maingui.html @@ -0,0 +1,108 @@ +<html> + <head> + <title>SkyliveX 0.1.0</title> + <script type="text/javascript" src="SkyliveX.js"></script> + <style> + #page { + background-color: #FFFFFF; + color: #000000; + text-align: center; + margin: 0 auto; + overflow:hidden; + } + #top { + height:40px; + border: 1px solid #000000; + width:auto; + position: absolute; + top: 8px; + right: 8px; + left: 8px; + } + + #left { + width: 330px; + position: absolute; + top:48px; + left: 8px; + right: 8px; + bottom: 8px; + border: 1px solid #FF0000; + } + #livearea { + border: 1px solid #00FF00; + position: relative; + } + + #toolsarea { + border: 1px solid #0000FF; + position: absolute; + bottom: 0px; + right: 0px; + left: 0px; + top: 242px; + } + #right { + position: absolute; + top: 48px; + left: 338px; + right: 8px; + bottom: 8px; + border: 1px solid #FF0FF0; + } + #chatarea { + overflow-y: auto; + border: 1px solid #00FF00; + position: absolute; + bottom: 70px; + top: 0px; + right: 130px; + left: 0px; + } + #chatlist { + overflow-y: auto; + width: 130px; + position: absolute; + border: 1px solid #00FF00; + bottom: 70px; + top: 0px; + right: 0px; + } + #chatinput { + position: absolute; + height: 70px; + bottom: 0px; + right: 0px; + left: 0px; + border: 1px solid #0000FF; + } + + </style> + </head> + <body> + <div id="page"> + <div id="top"> + </div> + <div id="left"> + <div id="livearea"> + <img src="http://live1.skylive.name/tele1/live640.jpg"></img> + </div> + <div id="toolsarea"> + TOOL + </div> + </div> + <div id="right"> + <div id="chatarea"> + </div> + <div id="chatlist"> + <p>user1</p> + <p>user2</p> + </div> + <div id="chatinput"> + <p>INPUT</p> + </div> + </div> + </div> + </body> +</html> + diff --git a/gui/franco/splash.html b/gui/franco/splash.html new file mode 100644 index 0000000..b3621ca --- /dev/null +++ b/gui/franco/splash.html @@ -0,0 +1,32 @@ +<html> + <head> + <title>SkyliveX</title> + <script type="text/javascript"> + function notifycb(c) + { + document.getElementById("loadstring").innerHTML=c; + } + </script> + <script type="text/javascript" src="SkyliveX.js"></script> + <style> + #loading { + color: #FFFFFF; + text-align: center; + margin: 0 auto; + } + #loading h3 { + background-color: #0000ff; + width:100%; + text-align: center; + padding-bottom:5px; + padding-top: 3px; + } + </style> + </head> + <body> + <div id="loading"> + <img src="img/logo.png"></img> + <h3 id="loadstring">Loading...</h3> + </div> + </body> +</html> -- 2.18.1