firebug-lite.js 471 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886
  1. (function(){
  2. /**************************************************************
  3. *
  4. * Firebug Lite 1.3.2
  5. *
  6. * Copyright (c) 2007, Parakey Inc.
  7. * Released under BSD license.
  8. * More information: http://getfirebug.com/firebuglite
  9. *
  10. **************************************************************/
  11. /*
  12. * CSS selectors powered by:
  13. *
  14. * Sizzle CSS Selector Engine - v1.0
  15. * Copyright 2009, The Dojo Foundation
  16. * Released under the MIT, BSD, and GPL Licenses.
  17. * More information: http://sizzlejs.com/
  18. */
  19. var FBL={};
  20. (function(){var productionDir="http://getfirebug.com/releases/lite/";
  21. var bookmarkletVersion=4;
  22. var reNotWhitespace=/[^\s]/;
  23. var reSplitFile=/:\/{1,3}(.*?)\/([^\/]*?)\/?($|\?.*)/;
  24. this.reJavascript=/\s*javascript:\s*(.*)/;
  25. this.reChrome=/chrome:\/\/([^\/]*)\//;
  26. this.reFile=/file:\/\/([^\/]*)\//;
  27. var userAgent=navigator.userAgent.toLowerCase();
  28. this.isFirefox=/firefox/.test(userAgent);
  29. this.isOpera=/opera/.test(userAgent);
  30. this.isSafari=/webkit/.test(userAgent);
  31. this.isIE=/msie/.test(userAgent)&&!/opera/.test(userAgent);
  32. this.isIE6=/msie 6/i.test(navigator.appVersion);
  33. this.browserVersion=(userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1];
  34. this.isIElt8=this.isIE&&(this.browserVersion-0<8);
  35. this.NS=null;
  36. this.pixelsPerInch=null;
  37. var namespaces=[];
  38. this.ns=function(fn){var ns={};
  39. namespaces.push(fn,ns);
  40. return ns
  41. };
  42. var FBTrace=null;
  43. this.initialize=function(){if(window.firebug&&firebug.firebuglite||window.console&&console.firebuglite){return
  44. }if(FBL.FBTrace){FBTrace=FBL.FBTrace
  45. }else{FBTrace=FBL.FBTrace={}
  46. }FBL.Ajax.initialize();
  47. var isChromeContext=window.Firebug&&typeof window.Firebug.SharedEnv=="object";
  48. if(isChromeContext){sharedEnv=window.Firebug.SharedEnv;
  49. delete window.Firebug.SharedEnv;
  50. FBL.Env=sharedEnv;
  51. FBL.Env.isChromeContext=true;
  52. FBTrace.messageQueue=FBL.Env.traceMessageQueue
  53. }else{FBL.NS=document.documentElement.namespaceURI;
  54. FBL.Env.browser=window;
  55. FBL.Env.destroy=destroyEnvironment;
  56. if(document.documentElement.getAttribute("debug")=="true"){FBL.Env.Options.startOpened=true
  57. }findLocation();
  58. var prefs=eval("("+FBL.readCookie("FirebugLite")+")");
  59. if(prefs){FBL.Env.Options.startOpened=prefs.startOpened;
  60. FBL.Env.Options.enableTrace=prefs.enableTrace;
  61. FBL.Env.Options.enablePersistent=prefs.enablePersistent;
  62. FBL.Env.Options.disableXHRListener=prefs.disableXHRListener
  63. }if(FBL.isFirefox&&typeof FBL.Env.browser.console=="object"&&FBL.Env.browser.console.firebug&&FBL.Env.Options.disableWhenFirebugActive){return
  64. }}if(FBL.Env.isDebugMode){FBL.Env.browser.FBL=FBL
  65. }this.isQuiksMode=FBL.Env.browser.document.compatMode=="BackCompat";
  66. this.isIEQuiksMode=this.isIE&&this.isQuiksMode;
  67. this.isIEStantandMode=this.isIE&&!this.isQuiksMode;
  68. this.noFixedPosition=this.isIE6||this.isIEQuiksMode;
  69. if(FBL.Env.Options.enableTrace){FBTrace.initialize()
  70. }if(FBTrace.DBG_INITIALIZE&&isChromeContext){FBTrace.sysout("FBL.initialize - persistent application","initialize chrome context")
  71. }if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FBL.initialize",namespaces.length/2+" namespaces BEGIN")
  72. }for(var i=0;
  73. i<namespaces.length;
  74. i+=2){var fn=namespaces[i];
  75. var ns=namespaces[i+1];
  76. fn.apply(ns)
  77. }if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FBL.initialize",namespaces.length/2+" namespaces END");
  78. FBTrace.sysout("FBL waitForDocument","waiting document load")
  79. }FBL.Firebug.loadPrefs(prefs);
  80. if(FBL.Env.Options.enablePersistent){if(isChromeContext){FBL.FirebugChrome.clone(FBL.Env.FirebugChrome)
  81. }else{FBL.Env.FirebugChrome=FBL.FirebugChrome;
  82. FBL.Env.traceMessageQueue=FBTrace.messageQueue
  83. }}waitForDocument()
  84. };
  85. var waitForDocument=function waitForDocument(){var doc=FBL.Env.browser.document;
  86. var body=doc.getElementsByTagName("body")[0];
  87. if(body){calculatePixelsPerInch(doc,body);
  88. onDocumentLoad()
  89. }else{setTimeout(waitForDocument,50)
  90. }};
  91. var onDocumentLoad=function onDocumentLoad(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FBL onDocumentLoad","document loaded")
  92. }if(FBL.isIE6){fixIE6BackgroundImageCache()
  93. }if(FBL.Env.Options.enablePersistent&&FBL.Env.isChromeContext){FBL.Firebug.initialize();
  94. if(!FBL.Env.isDevelopmentMode){sharedEnv.destroy();
  95. sharedEnv=null
  96. }}else{FBL.FirebugChrome.create()
  97. }};
  98. var sharedEnv;
  99. this.Env={Options:{saveCookies:false,saveWindowPosition:false,saveCommandLineHistory:false,startOpened:false,startInNewWindow:false,showIconWhenHidden:true,overrideConsole:true,ignoreFirebugElements:true,disableWhenFirebugActive:true,disableXHRListener: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};
  100. var destroyEnvironment=function destroyEnvironment(){setTimeout(function(){FBL=null
  101. },100)
  102. };
  103. var findLocation=function findLocation(){var reFirebugFile=/(firebug-lite(?:-\w+)?(?:\.js|\.jgz))(?:#(.+))?$/;
  104. var rePath=/^(.*\/)/;
  105. var reProtocol=/^\w+:\/\//;
  106. var path=null;
  107. var doc=document;
  108. var script=doc.getElementById("FirebugLite");
  109. if(script){file=reFirebugFile.exec(script.src);
  110. var version=script.getAttribute("FirebugLite");
  111. var number=version?parseInt(version):0;
  112. if(!version||!number||number<bookmarkletVersion){FBL.Env.bookmarkletOutdated=true
  113. }}else{for(var i=0,s=doc.getElementsByTagName("script"),si;
  114. si=s[i];
  115. i++){var file=null;
  116. if(si.nodeName.toLowerCase()=="script"&&(file=reFirebugFile.exec(si.src))){script=si;
  117. break
  118. }}}if(script){script.firebugIgnore=true
  119. }if(file){var fileName=file[1];
  120. var fileOptions=file[2];
  121. if(reProtocol.test(script.src)){path=rePath.exec(script.src)[1]
  122. }else{var r=rePath.exec(script.src);
  123. var src=r?r[1]:script.src;
  124. var backDir=/^((?:\.\.\/)+)(.*)/.exec(src);
  125. var reLastDir=/^(.*\/)[^\/]+\/$/;
  126. path=rePath.exec(location.href)[1];
  127. if(backDir){var j=backDir[1].length/3;
  128. var p;
  129. while(j-->0){path=reLastDir.exec(path)[1]
  130. }path+=backDir[2]
  131. }else{if(src.indexOf("/")!=-1){if(/^\.\/./.test(src)){path+=src.substring(2)
  132. }else{if(/^\/./.test(src)){var domain=/^(\w+:\/\/[^\/]+)/.exec(path);
  133. path=domain[1]+src
  134. }else{path+=src
  135. }}}}}}FBL.Env.isChromeExtension=script&&script.getAttribute("extension")=="Chrome";
  136. if(FBL.Env.isChromeExtension){path=productionDir;
  137. FBL.Env.bookmarkletOutdated=false;
  138. script={innerHTML:"{showIconWhenHidden:false}"}
  139. }var m=path&&path.match(/([^\/]+)\/$/)||null;
  140. if(path&&m){var Env=FBL.Env;
  141. Env.useLocalSkin=path.indexOf(location.protocol+"//"+location.host+"/")==0;
  142. if(fileName=="firebug-lite-dev.js"){Env.isDevelopmentMode=true;
  143. Env.isDebugMode=true
  144. }else{if(fileName=="firebug-lite-debug.js"){Env.isDebugMode=true
  145. }}if(Env.browser.document.documentElement.getAttribute("debug")=="true"){Env.Options.startOpened=true
  146. }if(fileOptions){var options=fileOptions.split(",");
  147. for(var i=0,length=options.length;
  148. i<length;
  149. i++){var option=options[i];
  150. var name,value;
  151. if(option.indexOf("=")!=-1){var parts=option.split("=");
  152. name=parts[0];
  153. value=eval(unescape(parts[1]))
  154. }else{name=option;
  155. value=true
  156. }if(name=="debug"){Env.isDebugMode=!!value
  157. }else{if(name in Env.Options){Env.Options[name]=value
  158. }else{Env[name]=value
  159. }}}}var innerOptions=FBL.trim(script.innerHTML);
  160. if(innerOptions){var innerOptionsObject=eval("("+innerOptions+")");
  161. for(var name in innerOptionsObject){var value=innerOptionsObject[name];
  162. if(name=="debug"){Env.isDebugMode=!!value
  163. }else{if(name in Env.Options){Env.Options[name]=value
  164. }else{Env[name]=value
  165. }}}}if(Env.isDebugMode){Env.Options.startOpened=true;
  166. Env.Options.enableTrace=true;
  167. Env.Options.disableWhenFirebugActive=false
  168. }var loc=Env.Location;
  169. var isProductionRelease=path.indexOf(productionDir)!=-1;
  170. loc.sourceDir=path;
  171. loc.baseDir=path.substr(0,path.length-m[1].length-1);
  172. loc.skinDir=(isProductionRelease?path:loc.baseDir)+"skin/"+Env.skin+"/";
  173. loc.skin=loc.skinDir+"firebug.html";
  174. loc.app=path+fileName
  175. }else{throw new Error("Firebug Error: Library path not found")
  176. }};
  177. this.bind=function(){var args=cloneArray(arguments),fn=args.shift(),object=args.shift();
  178. return function(){return fn.apply(object,arrayInsert(cloneArray(args),0,arguments))
  179. }
  180. };
  181. this.bindFixed=function(){var args=cloneArray(arguments),fn=args.shift(),object=args.shift();
  182. return function(){return fn.apply(object,args)
  183. }
  184. };
  185. this.extend=function(l,r){var newOb={};
  186. for(var n in l){newOb[n]=l[n]
  187. }for(var n in r){newOb[n]=r[n]
  188. }return newOb
  189. };
  190. this.descend=function(prototypeParent,childProperties){function protoSetter(){}protoSetter.prototype=prototypeParent;
  191. var newOb=new protoSetter();
  192. for(var n in childProperties){newOb[n]=childProperties[n]
  193. }return newOb
  194. };
  195. this.append=function(l,r){for(var n in r){l[n]=r[n]
  196. }return l
  197. };
  198. this.keys=function(map){var keys=[];
  199. try{for(var name in map){keys.push(name)
  200. }}catch(exc){}return keys
  201. };
  202. this.values=function(map){var values=[];
  203. try{for(var name in map){try{values.push(map[name])
  204. }catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("lib.values FAILED ",exc)
  205. }}}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("lib.values FAILED ",exc)
  206. }}return values
  207. };
  208. this.remove=function(list,item){for(var i=0;
  209. i<list.length;
  210. ++i){if(list[i]==item){list.splice(i,1);
  211. break
  212. }}};
  213. this.sliceArray=function(array,index){var slice=[];
  214. for(var i=index;
  215. i<array.length;
  216. ++i){slice.push(array[i])
  217. }return slice
  218. };
  219. function cloneArray(array,fn){var newArray=[];
  220. if(fn){for(var i=0;
  221. i<array.length;
  222. ++i){newArray.push(fn(array[i]))
  223. }}else{for(var i=0;
  224. i<array.length;
  225. ++i){newArray.push(array[i])
  226. }}return newArray
  227. }function extendArray(array,array2){var newArray=[];
  228. newArray.push.apply(newArray,array);
  229. newArray.push.apply(newArray,array2);
  230. return newArray
  231. }this.extendArray=extendArray;
  232. this.cloneArray=cloneArray;
  233. function arrayInsert(array,index,other){for(var i=0;
  234. i<other.length;
  235. ++i){array.splice(i+index,0,other[i])
  236. }return array
  237. }this.createStyleSheet=function(doc,url){var style=this.createElement("link");
  238. style.setAttribute("charset","utf-8");
  239. style.firebugIgnore=true;
  240. style.setAttribute("rel","stylesheet");
  241. style.setAttribute("type","text/css");
  242. style.setAttribute("href",url);
  243. return style
  244. };
  245. this.addStyleSheet=function(doc,style){var heads=doc.getElementsByTagName("head");
  246. if(heads.length){heads[0].appendChild(style)
  247. }else{doc.documentElement.appendChild(style)
  248. }};
  249. this.appendStylesheet=function(doc,uri){if(this.$(uri,doc)){return
  250. }var styleSheet=this.createStyleSheet(doc,uri);
  251. styleSheet.setAttribute("id",uri);
  252. this.addStyleSheet(doc,styleSheet)
  253. };
  254. this.addScript=function(doc,id,src){var element=doc.createElementNS("http://www.w3.org/1999/xhtml","html:script");
  255. element.setAttribute("type","text/javascript");
  256. element.setAttribute("id",id);
  257. if(!FBTrace.DBG_CONSOLE){FBL.unwrapObject(element).firebugIgnore=true
  258. }element.innerHTML=src;
  259. if(doc.documentElement){doc.documentElement.appendChild(element)
  260. }else{if(FBTrace.DBG_ERRORS){FBTrace.sysout("lib.addScript doc has no documentElement:",doc)
  261. }}return element
  262. };
  263. this.getStyle=this.isIE?function(el,name){return el.currentStyle[name]||el.style[name]||undefined
  264. }:function(el,name){return el.ownerDocument.defaultView.getComputedStyle(el,null)[name]||el.style[name]||undefined
  265. };
  266. var entityConversionLists=this.entityConversionLists={normal:{whitespace:{"\t":"\u200c\u2192","\n":"\u200c\u00b6","\r":"\u200c\u00ac"," ":"\u200c\u00b7"}},reverse:{whitespace:{"&Tab;":"\t","&NewLine;":"\n","\u200c\u2192":"\t","\u200c\u00b6":"\n","\u200c\u00ac":"\r","\u200c\u00b7":" "}}};
  267. var normal=entityConversionLists.normal,reverse=entityConversionLists.reverse;
  268. function addEntityMapToList(ccode,entity){var lists=Array.prototype.slice.call(arguments,2),len=lists.length,ch=String.fromCharCode(ccode);
  269. for(var i=0;
  270. i<len;
  271. i++){var list=lists[i];
  272. normal[list]=normal[list]||{};
  273. normal[list][ch]="&"+entity+";";
  274. reverse[list]=reverse[list]||{};
  275. reverse[list]["&"+entity+";"]=ch
  276. }}var e=addEntityMapToList,white="whitespace",text="text",attr="attributes",css="css",editor="editor";
  277. e(34,"quot",attr,css);
  278. e(38,"amp",attr,text,css);
  279. e(39,"apos",css);
  280. e(60,"lt",attr,text,css);
  281. e(62,"gt",attr,text,css);
  282. e(169,"copy",text,editor);
  283. e(174,"reg",text,editor);
  284. e(8482,"trade",text,editor);
  285. e(8210,"#8210",attr,text,editor);
  286. e(8211,"ndash",attr,text,editor);
  287. e(8212,"mdash",attr,text,editor);
  288. e(8213,"#8213",attr,text,editor);
  289. e(160,"nbsp",attr,text,white,editor);
  290. e(8194,"ensp",attr,text,white,editor);
  291. e(8195,"emsp",attr,text,white,editor);
  292. e(8201,"thinsp",attr,text,white,editor);
  293. e(8204,"zwnj",attr,text,white,editor);
  294. e(8205,"zwj",attr,text,white,editor);
  295. e(8206,"lrm",attr,text,white,editor);
  296. e(8207,"rlm",attr,text,white,editor);
  297. e(8203,"#8203",attr,text,white,editor);
  298. var entityConversionRegexes={normal:{},reverse:{}};
  299. var escapeEntitiesRegEx={normal:function(list){var chars=[];
  300. for(var ch in list){chars.push(ch)
  301. }return new RegExp("(["+chars.join("")+"])","gm")
  302. },reverse:function(list){var chars=[];
  303. for(var ch in list){chars.push(ch)
  304. }return new RegExp("("+chars.join("|")+")","gm")
  305. }};
  306. function getEscapeRegexp(direction,lists){var name="",re;
  307. var groups=[].concat(lists);
  308. for(i=0;
  309. i<groups.length;
  310. i++){name+=groups[i].group
  311. }re=entityConversionRegexes[direction][name];
  312. if(!re){var list={};
  313. if(groups.length>1){for(var i=0;
  314. i<groups.length;
  315. i++){var aList=entityConversionLists[direction][groups[i].group];
  316. for(var item in aList){list[item]=aList[item]
  317. }}}else{if(groups.length==1){list=entityConversionLists[direction][groups[0].group]
  318. }else{list={}
  319. }}re=entityConversionRegexes[direction][name]=escapeEntitiesRegEx[direction](list)
  320. }return re
  321. }function createSimpleEscape(name,direction){return function(value){var list=entityConversionLists[direction][name];
  322. return String(value).replace(getEscapeRegexp(direction,{group:name,list:list}),function(ch){return list[ch]
  323. })
  324. }
  325. }function escapeGroupsForEntities(str,lists){lists=[].concat(lists);
  326. var re=getEscapeRegexp("normal",lists),split=String(str).split(re),len=split.length,results=[],cur,r,i,ri=0,l,list,last="";
  327. if(!len){return[{str:String(str),group:"",name:""}]
  328. }for(i=0;
  329. i<len;
  330. i++){cur=split[i];
  331. if(cur==""){continue
  332. }for(l=0;
  333. l<lists.length;
  334. l++){list=lists[l];
  335. r=entityConversionLists.normal[list.group][cur];
  336. if(r){results[ri]={str:r,"class":list["class"],extra:list.extra[cur]?list["class"]+list.extra[cur]:""};
  337. break
  338. }}if(!r){results[ri]={str:cur,"class":"",extra:""}
  339. }ri++
  340. }return results
  341. }this.escapeGroupsForEntities=escapeGroupsForEntities;
  342. 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;
  343. if(!len){return str
  344. }lists=[].concat(lists);
  345. for(i=0;
  346. i<len;
  347. i++){cur=split[i];
  348. if(cur==""){continue
  349. }for(l=0;
  350. l<lists.length;
  351. l++){list=lists[l];
  352. r=entityConversionLists.reverse[list.group][cur];
  353. if(r){results[ri]=r;
  354. break
  355. }}if(!r){results[ri]=cur
  356. }ri++
  357. }return results.join("")||""
  358. }var escapeForTextNode=this.escapeForTextNode=createSimpleEscape("text","normal");
  359. var escapeForHtmlEditor=this.escapeForHtmlEditor=createSimpleEscape("editor","normal");
  360. var escapeForElementAttribute=this.escapeForElementAttribute=createSimpleEscape("attributes","normal");
  361. var escapeForCss=this.escapeForCss=createSimpleEscape("css","normal");
  362. var escapeForSourceLine=this.escapeForSourceLine=createSimpleEscape("text","normal");
  363. var unescapeWhitespace=createSimpleEscape("whitespace","reverse");
  364. this.unescapeForTextNode=function(str){if(Firebug.showTextNodesWithWhitespace){str=unescapeWhitespace(str)
  365. }if(!Firebug.showTextNodesWithEntities){str=escapeForElementAttribute(str)
  366. }return str
  367. };
  368. this.escapeNewLines=function(value){return value.replace(/\r/g,"\\r").replace(/\n/g,"\\n")
  369. };
  370. this.stripNewLines=function(value){return typeof(value)=="string"?value.replace(/[\r\n]/g," "):value
  371. };
  372. this.escapeJS=function(value){return value.replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace('"','\\"',"g")
  373. };
  374. function escapeHTMLAttribute(value){function replaceChars(ch){switch(ch){case"&":return"&amp;";
  375. case"'":return apos;
  376. case'"':return quot
  377. }return"?"
  378. }var apos="&#39;",quot="&quot;",around='"';
  379. if(value.indexOf('"')==-1){quot='"';
  380. apos="'"
  381. }else{if(value.indexOf("'")==-1){quot='"';
  382. around="'"
  383. }}return around+(String(value).replace(/[&'"]/g,replaceChars))+around
  384. }function escapeHTML(value){function replaceChars(ch){switch(ch){case"<":return"&lt;";
  385. case">":return"&gt;";
  386. case"&":return"&amp;";
  387. case"'":return"&#39;";
  388. case'"':return"&quot;"
  389. }return"?"
  390. }return String(value).replace(/[<>&"']/g,replaceChars)
  391. }this.escapeHTML=escapeHTML;
  392. this.cropString=function(text,limit){text=text+"";
  393. if(!limit){var halfLimit=50
  394. }else{var halfLimit=limit/2
  395. }if(text.length>limit){return this.escapeNewLines(text.substr(0,halfLimit)+"..."+text.substr(text.length-halfLimit))
  396. }else{return this.escapeNewLines(text)
  397. }};
  398. this.isWhitespace=function(text){return !reNotWhitespace.exec(text)
  399. };
  400. this.splitLines=function(text){var reSplitLines2=/.*(:?\r\n|\n|\r)?/mg;
  401. var lines;
  402. if(text.match){lines=text.match(reSplitLines2)
  403. }else{var str=text+"";
  404. lines=str.match(reSplitLines2)
  405. }lines.pop();
  406. return lines
  407. };
  408. this.safeToString=function(ob){if(this.isIE){return ob+""
  409. }try{if(ob&&"toString" in ob&&typeof ob.toString=="function"){return ob.toString()
  410. }}catch(exc){return ob+""
  411. }};
  412. this.hasProperties=function(ob){try{for(var name in ob){return true
  413. }}catch(exc){}return false
  414. };
  415. var reTrim=/^\s+|\s+$/g;
  416. this.trim=function(s){return s.replace(reTrim,"")
  417. };
  418. this.emptyFn=function(){};
  419. 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")
  420. };
  421. this.collapse=function(elt,collapsed){if(this.isIElt8){if(collapsed){this.setClass(elt,"collapsed")
  422. }else{this.removeClass(elt,"collapsed")
  423. }}else{elt.setAttribute("collapsed",collapsed?"true":"false")
  424. }};
  425. this.obscure=function(elt,obscured){if(obscured){this.setClass(elt,"obscured")
  426. }else{this.removeClass(elt,"obscured")
  427. }};
  428. this.hide=function(elt,hidden){elt.style.visibility=hidden?"hidden":"visible"
  429. };
  430. this.clearNode=function(node){var nodeName=" "+node.nodeName.toLowerCase()+" ";
  431. var ignoreTags=" table tbody thead tfoot th tr td ";
  432. if(this.isIE&&ignoreTags.indexOf(nodeName)!=-1){this.eraseNode(node)
  433. }else{node.innerHTML=""
  434. }};
  435. this.eraseNode=function(node){while(node.lastChild){node.removeChild(node.lastChild)
  436. }};
  437. this.iterateWindows=function(win,handler){if(!win||!win.document){return
  438. }handler(win);
  439. if(win==top||!win.frames){return
  440. }for(var i=0;
  441. i<win.frames.length;
  442. ++i){var subWin=win.frames[i];
  443. if(subWin!=win){this.iterateWindows(subWin,handler)
  444. }}};
  445. this.getRootWindow=function(win){for(;
  446. win;
  447. win=win.parent){if(!win.parent||win==win.parent||!this.instanceOf(win.parent,"Window")){return win
  448. }}return null
  449. };
  450. this.getClientOffset=function(elt){var addOffset=function addOffset(elt,coords,view){var p=elt.offsetParent;
  451. var style=isIE?elt.currentStyle:view.getComputedStyle(elt,"");
  452. if(elt.offsetLeft){coords.x+=elt.offsetLeft+parseInt(style.borderLeftWidth)
  453. }if(elt.offsetTop){coords.y+=elt.offsetTop+parseInt(style.borderTopWidth)
  454. }if(p){if(p.nodeType==1){addOffset(p,coords,view)
  455. }}else{var otherView=isIE?elt.ownerDocument.parentWindow:elt.ownerDocument.defaultView;
  456. if(otherView.frameElement){addOffset(otherView.frameElement,coords,otherView)
  457. }}};
  458. var isIE=this.isIE;
  459. var coords={x:0,y:0};
  460. if(elt){var view=isIE?elt.ownerDocument.parentWindow:elt.ownerDocument.defaultView;
  461. addOffset(elt,coords,view)
  462. }return coords
  463. };
  464. this.getViewOffset=function(elt,singleFrame){function addOffset(elt,coords,view){var p=elt.offsetParent;
  465. coords.x+=elt.offsetLeft-(p?p.scrollLeft:0);
  466. coords.y+=elt.offsetTop-(p?p.scrollTop:0);
  467. if(p){if(p.nodeType==1){var parentStyle=view.getComputedStyle(p,"");
  468. if(parentStyle.position!="static"){coords.x+=parseInt(parentStyle.borderLeftWidth);
  469. coords.y+=parseInt(parentStyle.borderTopWidth);
  470. if(p.localName=="TABLE"){coords.x+=parseInt(parentStyle.paddingLeft);
  471. coords.y+=parseInt(parentStyle.paddingTop)
  472. }else{if(p.localName=="BODY"){var style=view.getComputedStyle(elt,"");
  473. coords.x+=parseInt(style.marginLeft);
  474. coords.y+=parseInt(style.marginTop)
  475. }}}else{if(p.localName=="BODY"){coords.x+=parseInt(parentStyle.borderLeftWidth);
  476. coords.y+=parseInt(parentStyle.borderTopWidth)
  477. }}var parent=elt.parentNode;
  478. while(p!=parent){coords.x-=parent.scrollLeft;
  479. coords.y-=parent.scrollTop;
  480. parent=parent.parentNode
  481. }addOffset(p,coords,view)
  482. }}else{if(elt.localName=="BODY"){var style=view.getComputedStyle(elt,"");
  483. coords.x+=parseInt(style.borderLeftWidth);
  484. coords.y+=parseInt(style.borderTopWidth);
  485. var htmlStyle=view.getComputedStyle(elt.parentNode,"");
  486. coords.x-=parseInt(htmlStyle.paddingLeft);
  487. coords.y-=parseInt(htmlStyle.paddingTop)
  488. }if(elt.scrollLeft){coords.x+=elt.scrollLeft
  489. }if(elt.scrollTop){coords.y+=elt.scrollTop
  490. }var win=elt.ownerDocument.defaultView;
  491. if(win&&(!singleFrame&&win.frameElement)){addOffset(win.frameElement,coords,win)
  492. }}}var coords={x:0,y:0};
  493. if(elt){addOffset(elt,coords,elt.ownerDocument.defaultView)
  494. }return coords
  495. };
  496. this.getLTRBWH=function(elt){var bcrect,dims={left:0,top:0,right:0,bottom:0,width:0,height:0};
  497. if(elt){bcrect=elt.getBoundingClientRect();
  498. dims.left=bcrect.left;
  499. dims.top=bcrect.top;
  500. dims.right=bcrect.right;
  501. dims.bottom=bcrect.bottom;
  502. if(bcrect.width){dims.width=bcrect.width;
  503. dims.height=bcrect.height
  504. }else{dims.width=dims.right-dims.left;
  505. dims.height=dims.bottom-dims.top
  506. }}return dims
  507. };
  508. this.applyBodyOffsets=function(elt,clientRect){var od=elt.ownerDocument;
  509. if(!od.body){return clientRect
  510. }var style=od.defaultView.getComputedStyle(od.body,null);
  511. var pos=style.getPropertyValue("position");
  512. if(pos==="absolute"||pos==="relative"){var borderLeft=parseInt(style.getPropertyValue("border-left-width").replace("px",""),10)||0;
  513. var borderTop=parseInt(style.getPropertyValue("border-top-width").replace("px",""),10)||0;
  514. var paddingLeft=parseInt(style.getPropertyValue("padding-left").replace("px",""),10)||0;
  515. var paddingTop=parseInt(style.getPropertyValue("padding-top").replace("px",""),10)||0;
  516. var marginLeft=parseInt(style.getPropertyValue("margin-left").replace("px",""),10)||0;
  517. var marginTop=parseInt(style.getPropertyValue("margin-top").replace("px",""),10)||0;
  518. var offsetX=borderLeft+paddingLeft+marginLeft;
  519. var offsetY=borderTop+paddingTop+marginTop;
  520. clientRect.left-=offsetX;
  521. clientRect.top-=offsetY;
  522. clientRect.right-=offsetX;
  523. clientRect.bottom-=offsetY
  524. }return clientRect
  525. };
  526. this.getOffsetSize=function(elt){return{width:elt.offsetWidth,height:elt.offsetHeight}
  527. };
  528. this.getOverflowParent=function(element){for(var scrollParent=element.parentNode;
  529. scrollParent;
  530. scrollParent=scrollParent.offsetParent){if(scrollParent.scrollHeight>scrollParent.offsetHeight){return scrollParent
  531. }}};
  532. this.isScrolledToBottom=function(element){var onBottom=(element.scrollTop+element.offsetHeight)==element.scrollHeight;
  533. if(FBTrace.DBG_CONSOLE){FBTrace.sysout("isScrolledToBottom offsetHeight: "+element.offsetHeight+" onBottom:"+onBottom)
  534. }return onBottom
  535. };
  536. this.scrollToBottom=function(element){element.scrollTop=element.scrollHeight;
  537. if(FBTrace.DBG_CONSOLE){FBTrace.sysout("scrollToBottom reset scrollTop "+element.scrollTop+" = "+element.scrollHeight);
  538. if(element.scrollHeight==element.offsetHeight){FBTrace.sysout("scrollToBottom attempt to scroll non-scrollable element "+element,element)
  539. }}return(element.scrollTop==element.scrollHeight)
  540. };
  541. this.move=function(element,x,y){element.style.left=x+"px";
  542. element.style.top=y+"px"
  543. };
  544. this.resize=function(element,w,h){element.style.width=w+"px";
  545. element.style.height=h+"px"
  546. };
  547. this.linesIntoCenterView=function(element,scrollBox){if(!scrollBox){scrollBox=this.getOverflowParent(element)
  548. }if(!scrollBox){return
  549. }var offset=this.getClientOffset(element);
  550. var topSpace=offset.y-scrollBox.scrollTop;
  551. var bottomSpace=(scrollBox.scrollTop+scrollBox.clientHeight)-(offset.y+element.offsetHeight);
  552. if(topSpace<0||bottomSpace<0){var split=(scrollBox.clientHeight/2);
  553. var centerY=offset.y-split;
  554. scrollBox.scrollTop=centerY;
  555. topSpace=split;
  556. bottomSpace=split-element.offsetHeight
  557. }return{before:Math.round((topSpace/element.offsetHeight)+0.5),after:Math.round((bottomSpace/element.offsetHeight)+0.5)}
  558. };
  559. this.scrollIntoCenterView=function(element,scrollBox,notX,notY){if(!element){return
  560. }if(!scrollBox){scrollBox=this.getOverflowParent(element)
  561. }if(!scrollBox){return
  562. }var offset=this.getClientOffset(element);
  563. if(!notY){var topSpace=offset.y-scrollBox.scrollTop;
  564. var bottomSpace=(scrollBox.scrollTop+scrollBox.clientHeight)-(offset.y+element.offsetHeight);
  565. if(topSpace<0||bottomSpace<0){var centerY=offset.y-(scrollBox.clientHeight/2);
  566. scrollBox.scrollTop=centerY
  567. }}if(!notX){var leftSpace=offset.x-scrollBox.scrollLeft;
  568. var rightSpace=(scrollBox.scrollLeft+scrollBox.clientWidth)-(offset.x+element.clientWidth);
  569. if(leftSpace<0||rightSpace<0){var centerX=offset.x-(scrollBox.clientWidth/2);
  570. scrollBox.scrollLeft=centerX
  571. }}if(FBTrace.DBG_SOURCEFILES){FBTrace.sysout("lib.scrollIntoCenterView ","Element:"+element.innerHTML)
  572. }};
  573. var cssKeywordMap=null;
  574. var cssPropNames=null;
  575. var cssColorNames=null;
  576. var imageRules=null;
  577. this.getCSSKeywordsByProperty=function(propName){if(!cssKeywordMap){cssKeywordMap={};
  578. for(var name in this.cssInfo){var list=[];
  579. var types=this.cssInfo[name];
  580. for(var i=0;
  581. i<types.length;
  582. ++i){var keywords=this.cssKeywords[types[i]];
  583. if(keywords){list.push.apply(list,keywords)
  584. }}cssKeywordMap[name]=list
  585. }}return propName in cssKeywordMap?cssKeywordMap[propName]:[]
  586. };
  587. this.getCSSPropertyNames=function(){if(!cssPropNames){cssPropNames=[];
  588. for(var name in this.cssInfo){cssPropNames.push(name)
  589. }}return cssPropNames
  590. };
  591. this.isColorKeyword=function(keyword){if(keyword=="transparent"){return false
  592. }if(!cssColorNames){cssColorNames=[];
  593. var colors=this.cssKeywords.color;
  594. for(var i=0;
  595. i<colors.length;
  596. ++i){cssColorNames.push(colors[i].toLowerCase())
  597. }var systemColors=this.cssKeywords.systemColor;
  598. for(var i=0;
  599. i<systemColors.length;
  600. ++i){cssColorNames.push(systemColors[i].toLowerCase())
  601. }}return cssColorNames.indexOf?cssColorNames.indexOf(keyword.toLowerCase())!=-1:(" "+cssColorNames.join(" ")+" ").indexOf(" "+keyword.toLowerCase()+" ")!=-1
  602. };
  603. this.isImageRule=function(rule){if(!imageRules){imageRules=[];
  604. for(var i in this.cssInfo){var r=i.toLowerCase();
  605. var suffix="image";
  606. if(r.match(suffix+"$")==suffix||r=="background"){imageRules.push(r)
  607. }}}return imageRules.indexOf?imageRules.indexOf(rule.toLowerCase())!=-1:(" "+imageRules.join(" ")+" ").indexOf(" "+rule.toLowerCase()+" ")!=-1
  608. };
  609. this.copyTextStyles=function(fromNode,toNode,style){var view=this.isIE?fromNode.ownerDocument.parentWindow:fromNode.ownerDocument.defaultView;
  610. if(view){if(!style){style=this.isIE?fromNode.currentStyle:view.getComputedStyle(fromNode,"")
  611. }toNode.style.fontFamily=style.fontFamily;
  612. toNode.style.fontSize=style.fontSize;
  613. toNode.style.fontWeight=style.fontWeight;
  614. toNode.style.fontStyle=style.fontStyle;
  615. return style
  616. }};
  617. this.copyBoxStyles=function(fromNode,toNode,style){var view=this.isIE?fromNode.ownerDocument.parentWindow:fromNode.ownerDocument.defaultView;
  618. if(view){if(!style){style=this.isIE?fromNode.currentStyle:view.getComputedStyle(fromNode,"")
  619. }toNode.style.marginTop=style.marginTop;
  620. toNode.style.marginRight=style.marginRight;
  621. toNode.style.marginBottom=style.marginBottom;
  622. toNode.style.marginLeft=style.marginLeft;
  623. toNode.style.borderTopWidth=style.borderTopWidth;
  624. toNode.style.borderRightWidth=style.borderRightWidth;
  625. toNode.style.borderBottomWidth=style.borderBottomWidth;
  626. toNode.style.borderLeftWidth=style.borderLeftWidth;
  627. return style
  628. }};
  629. 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"};
  630. var styles={};
  631. for(var styleName in styleNames){styles[styleNames[styleName]]=parseInt(style.getPropertyCSSValue(styleName).cssText)||0
  632. }if(FBTrace.DBG_INSPECT){FBTrace.sysout("readBoxStyles ",styles)
  633. }return styles
  634. };
  635. this.getBoxFromStyles=function(style,element){var args=this.readBoxStyles(style);
  636. args.width=element.offsetWidth-(args.paddingLeft+args.paddingRight+args.borderLeft+args.borderRight);
  637. args.height=element.offsetHeight-(args.paddingTop+args.paddingBottom+args.borderTop+args.borderBottom);
  638. return args
  639. };
  640. this.getElementCSSSelector=function(element){var label=element.localName.toLowerCase();
  641. if(element.id){label+="#"+element.id
  642. }if(element.hasAttribute("class")){label+="."+element.getAttribute("class").split(" ")[0]
  643. }return label
  644. };
  645. this.getURLForStyleSheet=function(styleSheet){return(styleSheet.href?styleSheet.href:styleSheet.ownerNode.ownerDocument.URL)
  646. };
  647. this.getDocumentForStyleSheet=function(styleSheet){while(styleSheet.parentStyleSheet&&!styleSheet.ownerNode){styleSheet=styleSheet.parentStyleSheet
  648. }if(styleSheet.ownerNode){return styleSheet.ownerNode.ownerDocument
  649. }};
  650. this.getInstanceForStyleSheet=function(styleSheet,ownerDocument){if(FBL.isSystemStyleSheet(styleSheet)){return 0
  651. }if(FBTrace.DBG_CSS){FBTrace.sysout("getInstanceForStyleSheet: "+styleSheet.href+" "+styleSheet.media.mediaText+" "+(styleSheet.ownerNode&&FBL.getElementXPath(styleSheet.ownerNode)),ownerDocument)
  652. }ownerDocument=ownerDocument||FBL.getDocumentForStyleSheet(styleSheet);
  653. var ret=0,styleSheets=ownerDocument.styleSheets,href=styleSheet.href;
  654. for(var i=0;
  655. i<styleSheets.length;
  656. i++){var curSheet=styleSheets[i];
  657. if(FBTrace.DBG_CSS){FBTrace.sysout("getInstanceForStyleSheet: compare href "+i+" "+curSheet.href+" "+curSheet.media.mediaText+" "+(curSheet.ownerNode&&FBL.getElementXPath(curSheet.ownerNode)))
  658. }if(curSheet==styleSheet){break
  659. }if(curSheet.href==href){ret++
  660. }}return ret
  661. };
  662. var getElementType=this.getElementType=function(node){if(isElementXUL(node)){return"xul"
  663. }else{if(isElementSVG(node)){return"svg"
  664. }else{if(isElementMathML(node)){return"mathml"
  665. }else{if(isElementXHTML(node)){return"xhtml"
  666. }else{if(isElementHTML(node)){return"html"
  667. }}}}}};
  668. var getElementSimpleType=this.getElementSimpleType=function(node){if(isElementSVG(node)){return"svg"
  669. }else{if(isElementMathML(node)){return"mathml"
  670. }else{return"html"
  671. }}};
  672. var isElementHTML=this.isElementHTML=function(node){return node.nodeName==node.nodeName.toUpperCase()
  673. };
  674. var isElementXHTML=this.isElementXHTML=function(node){return node.nodeName==node.nodeName.toLowerCase()
  675. };
  676. var isElementMathML=this.isElementMathML=function(node){return node.namespaceURI=="http://www.w3.org/1998/Math/MathML"
  677. };
  678. var isElementSVG=this.isElementSVG=function(node){return node.namespaceURI=="http://www.w3.org/2000/svg"
  679. };
  680. var isElementXUL=this.isElementXUL=function(node){return node instanceof XULElement
  681. };
  682. this.isSelfClosing=function(element){if(isElementSVG(element)||isElementMathML(element)){return true
  683. }var tag=element.localName.toLowerCase();
  684. return(this.selfClosingTags.hasOwnProperty(tag))
  685. };
  686. this.getElementHTML=function(element){var self=this;
  687. function toHTML(elt){if(elt.nodeType==Node.ELEMENT_NODE){if(unwrapObject(elt).firebugIgnore){return
  688. }html.push("<",elt.nodeName.toLowerCase());
  689. for(var i=0;
  690. i<elt.attributes.length;
  691. ++i){var attr=elt.attributes[i];
  692. if(attr.localName.indexOf("firebug-")==0){continue
  693. }if(attr.localName.indexOf("-moz-math")==0){continue
  694. }html.push(" ",attr.nodeName,'="',escapeForElementAttribute(attr.nodeValue),'"')
  695. }if(elt.firstChild){html.push(">");
  696. var pureText=true;
  697. for(var child=element.firstChild;
  698. child;
  699. child=child.nextSibling){pureText=pureText&&(child.nodeType==Node.TEXT_NODE)
  700. }if(pureText){html.push(escapeForHtmlEditor(elt.textContent))
  701. }else{for(var child=elt.firstChild;
  702. child;
  703. child=child.nextSibling){toHTML(child)
  704. }}html.push("</",elt.nodeName.toLowerCase(),">")
  705. }else{if(isElementSVG(elt)||isElementMathML(elt)){html.push("/>")
  706. }else{if(self.isSelfClosing(elt)){html.push((isElementXHTML(elt))?"/>":">")
  707. }else{html.push("></",elt.nodeName.toLowerCase(),">")
  708. }}}}else{if(elt.nodeType==Node.TEXT_NODE){html.push(escapeForTextNode(elt.textContent))
  709. }else{if(elt.nodeType==Node.CDATA_SECTION_NODE){html.push("<![CDATA[",elt.nodeValue,"]]>")
  710. }else{if(elt.nodeType==Node.COMMENT_NODE){html.push("<!--",elt.nodeValue,"-->")
  711. }}}}}var html=[];
  712. toHTML(element);
  713. return html.join("")
  714. };
  715. this.getElementXML=function(element){function toXML(elt){if(elt.nodeType==Node.ELEMENT_NODE){if(unwrapObject(elt).firebugIgnore){return
  716. }xml.push("<",elt.nodeName.toLowerCase());
  717. for(var i=0;
  718. i<elt.attributes.length;
  719. ++i){var attr=elt.attributes[i];
  720. if(attr.localName.indexOf("firebug-")==0){continue
  721. }if(attr.localName.indexOf("-moz-math")==0){continue
  722. }xml.push(" ",attr.nodeName,'="',escapeForElementAttribute(attr.nodeValue),'"')
  723. }if(elt.firstChild){xml.push(">");
  724. for(var child=elt.firstChild;
  725. child;
  726. child=child.nextSibling){toXML(child)
  727. }xml.push("</",elt.nodeName.toLowerCase(),">")
  728. }else{xml.push("/>")
  729. }}else{if(elt.nodeType==Node.TEXT_NODE){xml.push(elt.nodeValue)
  730. }else{if(elt.nodeType==Node.CDATA_SECTION_NODE){xml.push("<![CDATA[",elt.nodeValue,"]]>")
  731. }else{if(elt.nodeType==Node.COMMENT_NODE){xml.push("<!--",elt.nodeValue,"-->")
  732. }}}}}var xml=[];
  733. toXML(element);
  734. return xml.join("")
  735. };
  736. this.hasClass=function(node,name){if(arguments.length==2){return(" "+node.className+" ").indexOf(" "+name+" ")!=-1
  737. }if(!node||node.nodeType!=1){return false
  738. }else{for(var i=1;
  739. i<arguments.length;
  740. ++i){var name=arguments[i];
  741. var re=new RegExp("(^|\\s)"+name+"($|\\s)");
  742. if(!re.exec(node.className)){return false
  743. }}return true
  744. }};
  745. this.old_hasClass=function(node,name){if(!node||node.nodeType!=1){return false
  746. }else{for(var i=1;
  747. i<arguments.length;
  748. ++i){var name=arguments[i];
  749. var re=new RegExp("(^|\\s)"+name+"($|\\s)");
  750. if(!re.exec(node.className)){return false
  751. }}return true
  752. }};
  753. this.setClass=function(node,name){if(node&&(" "+node.className+" ").indexOf(" "+name+" ")==-1){node.className+=" "+name
  754. }};
  755. this.getClassValue=function(node,name){var re=new RegExp(name+"-([^ ]+)");
  756. var m=re.exec(node.className);
  757. return m?m[1]:""
  758. };
  759. this.removeClass=function(node,name){if(node&&node.className){var index=node.className.indexOf(name);
  760. if(index>=0){var size=name.length;
  761. node.className=node.className.substr(0,index-1)+node.className.substr(index+size)
  762. }}};
  763. this.toggleClass=function(elt,name){if((" "+elt.className+" ").indexOf(" "+name+" ")!=-1){this.removeClass(elt,name)
  764. }else{this.setClass(elt,name)
  765. }};
  766. this.setClassTimed=function(elt,name,context,timeout){if(!timeout){timeout=1300
  767. }if(elt.__setClassTimeout){context.clearTimeout(elt.__setClassTimeout)
  768. }else{this.setClass(elt,name)
  769. }elt.__setClassTimeout=context.setTimeout(function(){delete elt.__setClassTimeout;
  770. FBL.removeClass(elt,name)
  771. },timeout)
  772. };
  773. this.cancelClassTimed=function(elt,name,context){if(elt.__setClassTimeout){FBL.removeClass(elt,name);
  774. context.clearTimeout(elt.__setClassTimeout);
  775. delete elt.__setClassTimeout
  776. }};
  777. this.$=function(id,doc){if(doc){return doc.getElementById(id)
  778. }else{return FBL.Firebug.chrome.document.getElementById(id)
  779. }};
  780. this.$$=function(selector,doc){if(doc||!FBL.Firebug.chrome){return FBL.Firebug.Selector(selector,doc)
  781. }else{return FBL.Firebug.Selector(selector,FBL.Firebug.chrome.document)
  782. }};
  783. this.getChildByClass=function(node){for(var i=1;
  784. i<arguments.length;
  785. ++i){var className=arguments[i];
  786. var child=node.firstChild;
  787. node=null;
  788. for(;
  789. child;
  790. child=child.nextSibling){if(this.hasClass(child,className)){node=child;
  791. break
  792. }}}return node
  793. };
  794. this.getAncestorByClass=function(node,className){for(var parent=node;
  795. parent;
  796. parent=parent.parentNode){if(this.hasClass(parent,className)){return parent
  797. }}return null
  798. };
  799. this.getElementsByClass=function(node,className){var result=[];
  800. for(var child=node.firstChild;
  801. child;
  802. child=child.nextSibling){if(this.hasClass(child,className)){result.push(child)
  803. }}return result
  804. };
  805. this.getElementByClass=function(node,className){var args=cloneArray(arguments);
  806. args.splice(0,1);
  807. for(var child=node.firstChild;
  808. child;
  809. child=child.nextSibling){var args1=cloneArray(args);
  810. args1.unshift(child);
  811. if(FBL.hasClass.apply(null,args1)){return child
  812. }else{var found=FBL.getElementByClass.apply(null,args1);
  813. if(found){return found
  814. }}}return null
  815. };
  816. this.isAncestor=function(node,potentialAncestor){for(var parent=node;
  817. parent;
  818. parent=parent.parentNode){if(parent==potentialAncestor){return true
  819. }}return false
  820. };
  821. this.getNextElement=function(node){while(node&&node.nodeType!=1){node=node.nextSibling
  822. }return node
  823. };
  824. this.getPreviousElement=function(node){while(node&&node.nodeType!=1){node=node.previousSibling
  825. }return node
  826. };
  827. this.getBody=function(doc){if(doc.body){return doc.body
  828. }var body=doc.getElementsByTagName("body")[0];
  829. if(body){return body
  830. }return doc.firstChild
  831. };
  832. this.findNextDown=function(node,criteria){if(!node){return null
  833. }for(var child=node.firstChild;
  834. child;
  835. child=child.nextSibling){if(criteria(child)){return child
  836. }var next=this.findNextDown(child,criteria);
  837. if(next){return next
  838. }}};
  839. this.findPreviousUp=function(node,criteria){if(!node){return null
  840. }for(var child=node.lastChild;
  841. child;
  842. child=child.previousSibling){var next=this.findPreviousUp(child,criteria);
  843. if(next){return next
  844. }if(criteria(child)){return child
  845. }}};
  846. this.findNext=function(node,criteria,upOnly,maxRoot){if(!node){return null
  847. }if(!upOnly){var next=this.findNextDown(node,criteria);
  848. if(next){return next
  849. }}for(var sib=node.nextSibling;
  850. sib;
  851. sib=sib.nextSibling){if(criteria(sib)){return sib
  852. }var next=this.findNextDown(sib,criteria);
  853. if(next){return next
  854. }}if(node.parentNode&&node.parentNode!=maxRoot){return this.findNext(node.parentNode,criteria,true)
  855. }};
  856. this.findPrevious=function(node,criteria,downOnly,maxRoot){if(!node){return null
  857. }for(var sib=node.previousSibling;
  858. sib;
  859. sib=sib.previousSibling){var prev=this.findPreviousUp(sib,criteria);
  860. if(prev){return prev
  861. }if(criteria(sib)){return sib
  862. }}if(!downOnly){var next=this.findPreviousUp(node,criteria);
  863. if(next){return next
  864. }}if(node.parentNode&&node.parentNode!=maxRoot){if(criteria(node.parentNode)){return node.parentNode
  865. }return this.findPrevious(node.parentNode,criteria,true)
  866. }};
  867. this.getNextByClass=function(root,state){var iter=function iter(node){return node.nodeType==1&&FBL.hasClass(node,state)
  868. };
  869. return this.findNext(root,iter)
  870. };
  871. this.getPreviousByClass=function(root,state){var iter=function iter(node){return node.nodeType==1&&FBL.hasClass(node,state)
  872. };
  873. return this.findPrevious(root,iter)
  874. };
  875. this.isElement=function(o){try{return o&&this.instanceOf(o,"Element")
  876. }catch(ex){return false
  877. }};
  878. var appendFragment=null;
  879. this.appendInnerHTML=function(element,html,referenceElement){referenceElement=referenceElement||null;
  880. var doc=element.ownerDocument;
  881. if(doc.createRange){var range=doc.createRange();
  882. range.selectNodeContents(element);
  883. var fragment=range.createContextualFragment(html);
  884. var firstChild=fragment.firstChild;
  885. element.insertBefore(fragment,referenceElement)
  886. }else{if(!appendFragment||appendFragment.ownerDocument!=doc){appendFragment=doc.createDocumentFragment()
  887. }var div=doc.createElement("div");
  888. div.innerHTML=html;
  889. var firstChild=div.firstChild;
  890. while(div.firstChild){appendFragment.appendChild(div.firstChild)
  891. }element.insertBefore(appendFragment,referenceElement);
  892. div=null
  893. }return firstChild
  894. };
  895. this.createElement=function(tagName,properties){properties=properties||{};
  896. var doc=properties.document||FBL.Firebug.chrome.document;
  897. var element=doc.createElement(tagName);
  898. for(var name in properties){if(name!="document"){element[name]=properties[name]
  899. }}return element
  900. };
  901. this.createGlobalElement=function(tagName,properties){properties=properties||{};
  902. var doc=FBL.Env.browser.document;
  903. var element=this.NS&&doc.createElementNS?doc.createElementNS(FBL.NS,tagName):doc.createElement(tagName);
  904. for(var name in properties){var propname=name;
  905. if(FBL.isIE&&name=="class"){propname="className"
  906. }if(name!="document"){element.setAttribute(propname,properties[name])
  907. }}return element
  908. };
  909. this.safeGetWindowLocation=function(window){try{if(window){if(window.closed){return"(window.closed)"
  910. }if("location" in window){return window.location+""
  911. }else{return"(no window.location)"
  912. }}else{return"(no context.window)"
  913. }}catch(exc){if(FBTrace.DBG_WINDOWS||FBTrace.DBG_ERRORS){FBTrace.sysout("TabContext.getWindowLocation failed "+exc,exc)
  914. }FBTrace.sysout("TabContext.getWindowLocation failed window:",window);
  915. return"(getWindowLocation: "+exc+")"
  916. }};
  917. this.isLeftClick=function(event){return(this.isIE&&event.type!="click"&&event.type!="dblclick"?event.button==1:event.button==0)&&this.noKeyModifiers(event)
  918. };
  919. this.isMiddleClick=function(event){return(this.isIE&&event.type!="click"&&event.type!="dblclick"?event.button==4:event.button==1)&&this.noKeyModifiers(event)
  920. };
  921. this.isRightClick=function(event){return(this.isIE&&event.type!="click"&&event.type!="dblclick"?event.button==2:event.button==2)&&this.noKeyModifiers(event)
  922. };
  923. this.noKeyModifiers=function(event){return !event.ctrlKey&&!event.shiftKey&&!event.altKey&&!event.metaKey
  924. };
  925. this.isControlClick=function(event){return(this.isIE&&event.type!="click"&&event.type!="dblclick"?event.button==1:event.button==0)&&this.isControl(event)
  926. };
  927. this.isShiftClick=function(event){return(this.isIE&&event.type!="click"&&event.type!="dblclick"?event.button==1:event.button==0)&&this.isShift(event)
  928. };
  929. this.isControl=function(event){return(event.metaKey||event.ctrlKey)&&!event.shiftKey&&!event.altKey
  930. };
  931. this.isAlt=function(event){return event.altKey&&!event.ctrlKey&&!event.shiftKey&&!event.metaKey
  932. };
  933. this.isAltClick=function(event){return(this.isIE&&event.type!="click"&&event.type!="dblclick"?event.button==1:event.button==0)&&this.isAlt(event)
  934. };
  935. this.isControlShift=function(event){return(event.metaKey||event.ctrlKey)&&event.shiftKey&&!event.altKey
  936. };
  937. this.isShift=function(event){return event.shiftKey&&!event.metaKey&&!event.ctrlKey&&!event.altKey
  938. };
  939. this.addEvent=function(object,name,handler,useCapture){if(object.addEventListener){object.addEventListener(name,handler,useCapture)
  940. }else{object.attachEvent("on"+name,handler)
  941. }};
  942. this.removeEvent=function(object,name,handler,useCapture){try{if(object.removeEventListener){object.removeEventListener(name,handler,useCapture)
  943. }else{object.detachEvent("on"+name,handler)
  944. }}catch(e){if(FBTrace.DBG_ERRORS){FBTrace.sysout("FBL.removeEvent error: ",object,name)
  945. }}};
  946. this.cancelEvent=function(e,preventDefault){if(!e){return
  947. }if(preventDefault){if(e.preventDefault){e.preventDefault()
  948. }else{e.returnValue=false
  949. }}if(e.stopPropagation){e.stopPropagation()
  950. }else{e.cancelBubble=true
  951. }};
  952. this.addGlobalEvent=function(name,handler){var doc=this.Firebug.browser.document;
  953. var frames=this.Firebug.browser.window.frames;
  954. this.addEvent(doc,name,handler);
  955. if(this.Firebug.chrome.type=="popup"){this.addEvent(this.Firebug.chrome.document,name,handler)
  956. }for(var i=0,frame;
  957. frame=frames[i];
  958. i++){try{this.addEvent(frame.document,name,handler)
  959. }catch(E){}}};
  960. this.removeGlobalEvent=function(name,handler){var doc=this.Firebug.browser.document;
  961. var frames=this.Firebug.browser.window.frames;
  962. this.removeEvent(doc,name,handler);
  963. if(this.Firebug.chrome.type=="popup"){this.removeEvent(this.Firebug.chrome.document,name,handler)
  964. }for(var i=0,frame;
  965. frame=frames[i];
  966. i++){try{this.removeEvent(frame.document,name,handler)
  967. }catch(E){}}};
  968. this.dispatch=function(listeners,name,args){if(!listeners){return
  969. }try{if(typeof listeners.length!="undefined"){if(FBTrace.DBG_DISPATCH){FBTrace.sysout("FBL.dispatch",name+" to "+listeners.length+" listeners")
  970. }for(var i=0;
  971. i<listeners.length;
  972. ++i){var listener=listeners[i];
  973. if(listener[name]){listener[name].apply(listener,args)
  974. }}}else{if(FBTrace.DBG_DISPATCH){FBTrace.sysout("FBL.dispatch",name+" to listeners of an object")
  975. }for(var prop in listeners){var listener=listeners[prop];
  976. if(listener[name]){listener[name].apply(listener,args)
  977. }}}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout(" Exception in lib.dispatch "+name,exc)
  978. }}};
  979. var disableTextSelectionHandler=function(event){FBL.cancelEvent(event,true);
  980. return false
  981. };
  982. this.disableTextSelection=function(e){if(typeof e.onselectstart!="undefined"){this.addEvent(e,"selectstart",disableTextSelectionHandler)
  983. }else{e.style.cssText="user-select: none; -khtml-user-select: none; -moz-user-select: none;";
  984. if(!this.isFirefox){this.addEvent(e,"mousedown",disableTextSelectionHandler)
  985. }}e.style.cursor="default"
  986. };
  987. this.restoreTextSelection=function(e){if(typeof e.onselectstart!="undefined"){this.removeEvent(e,"selectstart",disableTextSelectionHandler)
  988. }else{e.style.cssText="cursor: default;";
  989. if(!this.isFirefox){this.removeEvent(e,"mousedown",disableTextSelectionHandler)
  990. }}};
  991. 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"]};
  992. this.getEventFamily=function(eventType){if(!this.families){this.families={};
  993. for(var family in eventTypes){var types=eventTypes[family];
  994. for(var i=0;
  995. i<types.length;
  996. ++i){this.families[types[i]]=family
  997. }}}return this.families[eventType]
  998. };
  999. this.getFileName=function(url){var split=this.splitURLBase(url);
  1000. return split.name
  1001. };
  1002. this.splitURLBase=function(url){if(this.isDataURL(url)){return this.splitDataURL(url)
  1003. }return this.splitURLTrue(url)
  1004. };
  1005. this.splitDataURL=function(url){var mark=url.indexOf(":",3);
  1006. if(mark!=4){return false
  1007. }var point=url.indexOf(",",mark+1);
  1008. if(point<mark){return false
  1009. }var props={encodedContent:url.substr(point+1)};
  1010. var metadataBuffer=url.substr(mark+1,point);
  1011. var metadata=metadataBuffer.split(";");
  1012. for(var i=0;
  1013. i<metadata.length;
  1014. i++){var nv=metadata[i].split("=");
  1015. if(nv.length==2){props[nv[0]]=nv[1]
  1016. }}if(props.hasOwnProperty("fileName")){var caller_URL=decodeURIComponent(props.fileName);
  1017. var caller_split=this.splitURLTrue(caller_URL);
  1018. if(props.hasOwnProperty("baseLineNumber")){props.path=caller_split.path;
  1019. props.line=props.baseLineNumber;
  1020. var hint=decodeURIComponent(props.encodedContent.substr(0,200)).replace(/\s*$/,"");
  1021. props.name="eval->"+hint
  1022. }else{props.name=caller_split.name;
  1023. props.path=caller_split.path
  1024. }}else{if(!props.hasOwnProperty("path")){props.path="data:"
  1025. }if(!props.hasOwnProperty("name")){props.name=decodeURIComponent(props.encodedContent.substr(0,200)).replace(/\s*$/,"")
  1026. }}return props
  1027. };
  1028. this.splitURLTrue=function(url){var m=reSplitFile.exec(url);
  1029. if(!m){return{name:url,path:url}
  1030. }else{if(!m[2]){return{path:m[1],name:m[1]}
  1031. }else{return{path:m[1],name:m[2]+m[3]}
  1032. }}};
  1033. this.getFileExtension=function(url){if(!url){return null
  1034. }var queryString=url.indexOf("?");
  1035. if(queryString!=-1){url=url.substr(0,queryString)
  1036. }var lastDot=url.lastIndexOf(".");
  1037. return url.substr(lastDot+1)
  1038. };
  1039. this.isSystemURL=function(url){if(!url){return true
  1040. }if(url.length==0){return true
  1041. }if(url[0]=="h"){return false
  1042. }if(url.substr(0,9)=="resource:"){return true
  1043. }else{if(url.substr(0,16)=="chrome://firebug"){return true
  1044. }else{if(url=="XPCSafeJSObjectWrapper.cpp"){return true
  1045. }else{if(url.substr(0,6)=="about:"){return true
  1046. }else{if(url.indexOf("firebug-service.js")!=-1){return true
  1047. }else{return false
  1048. }}}}}};
  1049. this.isSystemPage=function(win){try{var doc=win.document;
  1050. if(!doc){return false
  1051. }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
  1052. }return FBL.isSystemURL(win.location.href)
  1053. }catch(exc){ERROR("tabWatcher.isSystemPage document not ready:"+exc);
  1054. return false
  1055. }};
  1056. this.isSystemStyleSheet=function(sheet){var href=sheet&&sheet.href;
  1057. return href&&FBL.isSystemURL(href)
  1058. };
  1059. this.getURIHost=function(uri){try{if(uri){return uri.host
  1060. }else{return""
  1061. }}catch(exc){return""
  1062. }};
  1063. this.isLocalURL=function(url){if(url.substr(0,5)=="file:"){return true
  1064. }else{if(url.substr(0,8)=="wyciwyg:"){return true
  1065. }else{return false
  1066. }}};
  1067. this.isDataURL=function(url){return(url&&url.substr(0,5)=="data:")
  1068. };
  1069. this.getLocalPath=function(url){if(this.isLocalURL(url)){var fileHandler=ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
  1070. var file=fileHandler.getFileFromURLSpec(url);
  1071. return file.path
  1072. }};
  1073. this.getURLFromLocalFile=function(file){var fileHandler=ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
  1074. var URL=fileHandler.getURLSpecFromFile(file);
  1075. return URL
  1076. };
  1077. this.getDataURLForContent=function(content,url){var uri="data:text/html;";
  1078. uri+="fileName="+encodeURIComponent(url)+",";
  1079. uri+=encodeURIComponent(content);
  1080. return uri
  1081. },this.getDomain=function(url){var m=/[^:]+:\/{1,3}([^\/]+)/.exec(url);
  1082. return m?m[1]:""
  1083. };
  1084. this.getURLPath=function(url){var m=/[^:]+:\/{1,3}[^\/]+(\/.*?)$/.exec(url);
  1085. return m?m[1]:""
  1086. };
  1087. this.getPrettyDomain=function(url){var m=/[^:]+:\/{1,3}(www\.)?([^\/]+)/.exec(url);
  1088. return m?m[2]:""
  1089. };
  1090. this.absoluteURL=function(url,baseURL){return this.absoluteURLWithDots(url,baseURL).replace("/./","/","g")
  1091. };
  1092. this.absoluteURLWithDots=function(url,baseURL){if(url[0]=="?"){return baseURL+url
  1093. }var reURL=/(([^:]+:)\/{1,2}[^\/]*)(.*?)$/;
  1094. var m=reURL.exec(url);
  1095. if(m){return url
  1096. }var m=reURL.exec(baseURL);
  1097. if(!m){return""
  1098. }var head=m[1];
  1099. var tail=m[3];
  1100. if(url.substr(0,2)=="//"){return m[2]+url
  1101. }else{if(url[0]=="/"){return head+url
  1102. }else{if(tail[tail.length-1]=="/"){return baseURL+url
  1103. }else{var parts=tail.split("/");
  1104. return head+parts.slice(0,parts.length-1).join("/")+"/"+url
  1105. }}}};
  1106. this.normalizeURL=function(url){if(!url){return""
  1107. }if(url.length<255){url=url.replace(/[^\/]+\/\.\.\//,"","g");
  1108. url=url.replace(/#.*/,"");
  1109. url=url.replace(/file:\/([^\/])/g,"file:///$1");
  1110. if(url.indexOf("chrome:")==0){var m=reChromeCase.exec(url);
  1111. if(m){url="chrome://"+m[1].toLowerCase()+"/"+m[2]
  1112. }}}return url
  1113. };
  1114. this.denormalizeURL=function(url){return url.replace(/file:\/\/\//g,"file:/")
  1115. };
  1116. this.parseURLParams=function(url){var q=url?url.indexOf("?"):-1;
  1117. if(q==-1){return[]
  1118. }var search=url.substr(q+1);
  1119. var h=search.lastIndexOf("#");
  1120. if(h!=-1){search=search.substr(0,h)
  1121. }if(!search){return[]
  1122. }return this.parseURLEncodedText(search)
  1123. };
  1124. this.parseURLEncodedText=function(text){var maxValueLength=25000;
  1125. var params=[];
  1126. text=text.replace(/\+/g," ");
  1127. var args=text.split("&");
  1128. for(var i=0;
  1129. i<args.length;
  1130. ++i){try{var parts=args[i].split("=");
  1131. if(parts.length==2){if(parts[1].length>maxValueLength){parts[1]=this.$STR("LargeData")
  1132. }params.push({name:decodeURIComponent(parts[0]),value:decodeURIComponent(parts[1])})
  1133. }else{params.push({name:decodeURIComponent(parts[0]),value:""})
  1134. }}catch(e){if(FBTrace.DBG_ERRORS){FBTrace.sysout("parseURLEncodedText EXCEPTION ",e);
  1135. FBTrace.sysout("parseURLEncodedText EXCEPTION URI",args[i])
  1136. }}}params.sort(function(a,b){return a.name<=b.name?-1:1
  1137. });
  1138. return params
  1139. };
  1140. this.parseURLParamsArray=function(url){var q=url?url.indexOf("?"):-1;
  1141. if(q==-1){return[]
  1142. }var search=url.substr(q+1);
  1143. var h=search.lastIndexOf("#");
  1144. if(h!=-1){search=search.substr(0,h)
  1145. }if(!search){return[]
  1146. }return this.parseURLEncodedTextArray(search)
  1147. };
  1148. this.parseURLEncodedTextArray=function(text){var maxValueLength=25000;
  1149. var params=[];
  1150. text=text.replace(/\+/g," ");
  1151. var args=text.split("&");
  1152. for(var i=0;
  1153. i<args.length;
  1154. ++i){try{var parts=args[i].split("=");
  1155. if(parts.length==2){if(parts[1].length>maxValueLength){parts[1]=this.$STR("LargeData")
  1156. }params.push({name:decodeURIComponent(parts[0]),value:[decodeURIComponent(parts[1])]})
  1157. }else{params.push({name:decodeURIComponent(parts[0]),value:[""]})
  1158. }}catch(e){if(FBTrace.DBG_ERRORS){FBTrace.sysout("parseURLEncodedText EXCEPTION ",e);
  1159. FBTrace.sysout("parseURLEncodedText EXCEPTION URI",args[i])
  1160. }}}params.sort(function(a,b){return a.name<=b.name?-1:1
  1161. });
  1162. return params
  1163. };
  1164. this.reEncodeURL=function(file,text){var lines=text.split("\n");
  1165. var params=this.parseURLEncodedText(lines[lines.length-1]);
  1166. var args=[];
  1167. for(var i=0;
  1168. i<params.length;
  1169. ++i){args.push(encodeURIComponent(params[i].name)+"="+encodeURIComponent(params[i].value))
  1170. }var url=file.href;
  1171. url+=(url.indexOf("?")==-1?"?":"&")+args.join("&");
  1172. return url
  1173. };
  1174. this.getResource=function(aURL){try{var channel=ioService.newChannel(aURL,null,null);
  1175. var input=channel.open();
  1176. return FBL.readFromStream(input)
  1177. }catch(e){if(FBTrace.DBG_ERRORS){FBTrace.sysout("lib.getResource FAILS for "+aURL,e)
  1178. }}};
  1179. this.parseJSONString=function(jsonString,originURL){var regex=new RegExp(/^\/\*-secure-([\s\S]*)\*\/\s*$/);
  1180. var matches=regex.exec(jsonString);
  1181. if(matches){jsonString=matches[1];
  1182. if(jsonString[0]=="\\"&&jsonString[1]=="n"){jsonString=jsonString.substr(2)
  1183. }if(jsonString[jsonString.length-2]=="\\"&&jsonString[jsonString.length-1]=="n"){jsonString=jsonString.substr(0,jsonString.length-2)
  1184. }}if(jsonString.indexOf("&&&START&&&")){regex=new RegExp(/&&&START&&& (.+) &&&END&&&/);
  1185. matches=regex.exec(jsonString);
  1186. if(matches){jsonString=matches[1]
  1187. }}jsonString="("+jsonString+")";
  1188. var jsonObject=null;
  1189. try{jsonObject=Firebug.context.evaluate(jsonString,null,null,function(){return null
  1190. })
  1191. }catch(e){if(FBTrace.DBG_ERRORS||FBTrace.DBG_JSONVIEWER){FBTrace.sysout("jsonviewer.parseJSON EXCEPTION",e)
  1192. }return null
  1193. }return jsonObject
  1194. };
  1195. this.objectToString=function(object){try{return object+""
  1196. }catch(exc){return null
  1197. }};
  1198. this.setSelectionRange=function(input,start,length){if(input.createTextRange){var range=input.createTextRange();
  1199. range.moveStart("character",start);
  1200. range.moveEnd("character",length-input.value.length);
  1201. range.select()
  1202. }else{if(input.setSelectionRange){input.setSelectionRange(start,length);
  1203. input.focus()
  1204. }}};
  1205. this.getInputSelectionStart=function(input){if(document.selection){var range=input.ownerDocument.selection.createRange();
  1206. var text=range.text;
  1207. if(text){return input.value.indexOf(text)
  1208. }else{range.moveStart("character",-input.value.length);
  1209. return range.text.length
  1210. }}else{if(typeof input.selectionStart!="undefined"){return input.selectionStart
  1211. }}return 0
  1212. };
  1213. function onOperaTabBlur(e){if(this.lastKey==9){this.focus()
  1214. }}function onOperaTabKeyDown(e){this.lastKey=e.keyCode
  1215. }function onOperaTabFocus(e){this.lastKey=null
  1216. }this.fixOperaTabKey=function(el){el.onfocus=onOperaTabFocus;
  1217. el.onblur=onOperaTabBlur;
  1218. el.onkeydown=onOperaTabKeyDown
  1219. };
  1220. this.Property=function(object,name){this.object=object;
  1221. this.name=name;
  1222. this.getObject=function(){return object[name]
  1223. }
  1224. };
  1225. this.ErrorCopy=function(message){this.message=message
  1226. };
  1227. function EventCopy(event){for(var name in event){try{this[name]=event[name]
  1228. }catch(exc){}}}this.EventCopy=EventCopy;
  1229. var toString=Object.prototype.toString;
  1230. var reFunction=/^\s*function(\s+[\w_$][\w\d_$]*)?\s*\(/;
  1231. this.isArray=function(object){return toString.call(object)==="[object Array]"
  1232. };
  1233. this.isFunction=function(object){if(!object){return false
  1234. }return toString.call(object)==="[object Function]"||this.isIE&&typeof object!="string"&&reFunction.test(""+object)
  1235. };
  1236. this.instanceOf=function(object,className){if(!object||typeof object!="object"){return false
  1237. }if(object.ownerDocument){var win=object.ownerDocument.defaultView||object.ownerDocument.parentWindow;
  1238. if(className in win&&object instanceof win[className]){return true
  1239. }}else{var win=Firebug.browser.window;
  1240. if(className in win){return object instanceof win[className]
  1241. }}var cache=instanceCheckMap[className];
  1242. if(!cache){return false
  1243. }for(var n in cache){var obj=cache[n];
  1244. var type=typeof obj;
  1245. obj=type=="object"?obj:[obj];
  1246. for(var name in obj){if(!obj.hasOwnProperty(name)){continue
  1247. }var value=obj[name];
  1248. if(n=="property"&&!(value in object)||n=="method"&&!this.isFunction(object[value])||n=="value"&&(""+object[name]).toLowerCase()!=(""+value).toLowerCase()){return false
  1249. }}}return true
  1250. };
  1251. 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"]}};
  1252. var domMemberMap2={};
  1253. var domMemberMap2Sandbox=null;
  1254. var getDomMemberMap2=function(name){if(!domMemberMap2Sandbox){var doc=Firebug.chrome.document;
  1255. var frame=doc.createElement("iframe");
  1256. frame.id="FirebugSandbox";
  1257. frame.style.display="none";
  1258. frame.src="about:blank";
  1259. doc.body.appendChild(frame);
  1260. domMemberMap2Sandbox=frame.window||frame.contentWindow
  1261. }var props=[];
  1262. var object=null;
  1263. if(name=="Window"){object=domMemberMap2Sandbox.window
  1264. }else{if(name=="Document"){object=domMemberMap2Sandbox.document
  1265. }else{if(name=="HTMLScriptElement"){object=domMemberMap2Sandbox.document.createElement("script")
  1266. }else{if(name=="HTMLAnchorElement"){object=domMemberMap2Sandbox.document.createElement("a")
  1267. }else{if(name.indexOf("Element")!=-1){object=domMemberMap2Sandbox.document.createElement("div")
  1268. }}}}}if(object){for(var n in object){props.push(n)
  1269. }}return props;
  1270. return extendArray(props,domMemberMap[name])
  1271. };
  1272. this.getDOMMembers=function(object){if(!domMemberCache){FBL.domMemberCache=domMemberCache={};
  1273. for(var name in domMemberMap){var builtins=getDomMemberMap2(name);
  1274. var cache=domMemberCache[name]={};
  1275. for(var i=0;
  1276. i<builtins.length;
  1277. ++i){cache[builtins[i]]=i
  1278. }}}try{if(this.instanceOf(object,"Window")){return domMemberCache.Window
  1279. }else{if(this.instanceOf(object,"Document")||this.instanceOf(object,"XMLDocument")){return domMemberCache.Document
  1280. }else{if(this.instanceOf(object,"Location")){return domMemberCache.Location
  1281. }else{if(this.instanceOf(object,"HTMLImageElement")){return domMemberCache.HTMLImageElement
  1282. }else{if(this.instanceOf(object,"HTMLAnchorElement")){return domMemberCache.HTMLAnchorElement
  1283. }else{if(this.instanceOf(object,"HTMLInputElement")){return domMemberCache.HTMLInputElement
  1284. }else{if(this.instanceOf(object,"HTMLButtonElement")){return domMemberCache.HTMLButtonElement
  1285. }else{if(this.instanceOf(object,"HTMLFormElement")){return domMemberCache.HTMLFormElement
  1286. }else{if(this.instanceOf(object,"HTMLBodyElement")){return domMemberCache.HTMLBodyElement
  1287. }else{if(this.instanceOf(object,"HTMLHtmlElement")){return domMemberCache.HTMLHtmlElement
  1288. }else{if(this.instanceOf(object,"HTMLScriptElement")){return domMemberCache.HTMLScriptElement
  1289. }else{if(this.instanceOf(object,"HTMLTableElement")){return domMemberCache.HTMLTableElement
  1290. }else{if(this.instanceOf(object,"HTMLTableRowElement")){return domMemberCache.HTMLTableRowElement
  1291. }else{if(this.instanceOf(object,"HTMLTableCellElement")){return domMemberCache.HTMLTableCellElement
  1292. }else{if(this.instanceOf(object,"HTMLIFrameElement")){return domMemberCache.HTMLIFrameElement
  1293. }else{if(this.instanceOf(object,"SVGSVGElement")){return domMemberCache.SVGSVGElement
  1294. }else{if(this.instanceOf(object,"SVGElement")){return domMemberCache.SVGElement
  1295. }else{if(this.instanceOf(object,"Element")){return domMemberCache.Element
  1296. }else{if(this.instanceOf(object,"Text")||this.instanceOf(object,"CDATASection")){return domMemberCache.Text
  1297. }else{if(this.instanceOf(object,"Attr")){return domMemberCache.Attr
  1298. }else{if(this.instanceOf(object,"Node")){return domMemberCache.Node
  1299. }else{if(this.instanceOf(object,"Event")||this.instanceOf(object,"EventCopy")){return domMemberCache.Event
  1300. }else{return{}
  1301. }}}}}}}}}}}}}}}}}}}}}}}catch(E){if(FBTrace.DBG_ERRORS){FBTrace.sysout("lib.getDOMMembers FAILED ",E)
  1302. }return{}
  1303. }};
  1304. this.isDOMMember=function(object,propName){var members=this.getDOMMembers(object);
  1305. return members&&propName in members
  1306. };
  1307. var domMemberCache=null;
  1308. var domMemberMap={};
  1309. 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"];
  1310. domMemberMap.Location=["href","protocol","host","hostname","port","pathname","search","hash","assign","reload","replace"];
  1311. 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"];
  1312. 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"]);
  1313. 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"]);
  1314. domMemberMap.SVGElement=extendArray(domMemberMap.Element,["x","y","width","height","rx","ry","transform","href","ownerSVGElement","viewportElement","farthestViewportElement","nearestViewportElement","getBBox","getCTM","getScreenCTM","getTransformToElement","getPresentationAttribute","preserveAspectRatio"]);
  1315. 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"]);
  1316. domMemberMap.HTMLImageElement=extendArray(domMemberMap.Element,["src","naturalWidth","naturalHeight","width","height","x","y","name","alt","longDesc","lowsrc","border","complete","hspace","vspace","isMap","useMap"]);
  1317. domMemberMap.HTMLAnchorElement=extendArray(domMemberMap.Element,["name","target","accessKey","href","protocol","host","hostname","port","pathname","search","hash","hreflang","coords","shape","text","type","rel","rev","charset"]);
  1318. domMemberMap.HTMLIFrameElement=extendArray(domMemberMap.Element,["contentDocument","contentWindow","frameBorder","height","longDesc","marginHeight","marginWidth","name","scrolling","src","width"]);
  1319. 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"]);
  1320. domMemberMap.HTMLTableRowElement=extendArray(domMemberMap.Element,["bgColor","cells","ch","chOff","rowIndex","sectionRowIndex","vAlign","deleteCell","insertCell"]);
  1321. domMemberMap.HTMLTableCellElement=extendArray(domMemberMap.Element,["abbr","axis","bgColor","cellIndex","ch","chOff","colSpan","headers","height","noWrap","rowSpan","scope","vAlign","width"]);
  1322. domMemberMap.HTMLScriptElement=extendArray(domMemberMap.Element,["src"]);
  1323. domMemberMap.HTMLButtonElement=extendArray(domMemberMap.Element,["accessKey","disabled","form","name","type","value","click"]);
  1324. 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"]);
  1325. domMemberMap.HTMLFormElement=extendArray(domMemberMap.Element,["acceptCharset","action","author","elements","encoding","enctype","entry_id","length","method","name","post","target","text","url","reset","submit"]);
  1326. domMemberMap.HTMLBodyElement=extendArray(domMemberMap.Element,["aLink","background","bgColor","link","text","vLink"]);
  1327. domMemberMap.HTMLHtmlElement=extendArray(domMemberMap.Element,["version"]);
  1328. domMemberMap.Text=extendArray(domMemberMap.Node,["data","length","appendData","deleteData","insertData","replaceData","splitText","substringData"]);
  1329. domMemberMap.Attr=extendArray(domMemberMap.Node,["name","value","specified","ownerElement"]);
  1330. 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"];
  1331. 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};
  1332. 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":[]};
  1333. 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};
  1334. 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"]};
  1335. this.nonEditableTags={HTML:1,HEAD:1,html:1,head:1};
  1336. this.innerEditableTags={BODY:1,body:1};
  1337. this.selfClosingTags={meta:1,link:1,area:1,base:1,col:1,input:1,img:1,br:1,hr:1,param:1,embed:1};
  1338. 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};
  1339. 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}
  1340. }this.Ajax={requests:[],transport:null,states:["Uninitialized","Loading","Loaded","Interactive","Complete"],initialize:function(){this.transport=this.getXHRObject()
  1341. },getXHRObject:function(){var xhrObj=false;
  1342. try{xhrObj=new XMLHttpRequest()
  1343. }catch(e){var progid=["MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
  1344. for(var i=0;
  1345. i<progid.length;
  1346. ++i){try{xhrObj=new ActiveXObject(progid[i])
  1347. }catch(e){continue
  1348. }break
  1349. }}finally{return xhrObj
  1350. }},request:function(options){var o=FBL.extend({type:"get",async:true,dataType:"text",contentType:"application/x-www-form-urlencoded"},options||{});
  1351. this.requests.push(o);
  1352. var s=this.getState();
  1353. if(s=="Uninitialized"||s=="Complete"||s=="Loaded"){this.sendRequest()
  1354. }},serialize:function(data){var r=[""],rl=0;
  1355. if(data){if(typeof data=="string"){r[rl++]=data
  1356. }else{if(data.innerHTML&&data.elements){for(var i=0,el,l=(el=data.elements).length;
  1357. i<l;
  1358. i++){if(el[i].name){r[rl++]=encodeURIComponent(el[i].name);
  1359. r[rl++]="=";
  1360. r[rl++]=encodeURIComponent(el[i].value);
  1361. r[rl++]="&"
  1362. }}}else{for(var param in data){r[rl++]=encodeURIComponent(param);
  1363. r[rl++]="=";
  1364. r[rl++]=encodeURIComponent(data[param]);
  1365. r[rl++]="&"
  1366. }}}}return r.join("").replace(/&$/,"")
  1367. },sendRequest:function(){var t=FBL.Ajax.transport,r=FBL.Ajax.requests.shift(),data;
  1368. t.open(r.type,r.url,r.async);
  1369. t.setRequestHeader("X-Requested-With","XMLHttpRequest");
  1370. if(data=FBL.Ajax.serialize(r.data)){t.setRequestHeader("Content-Type",r.contentType)
  1371. }t.onreadystatechange=function(){FBL.Ajax.onStateChange(r)
  1372. };
  1373. t.send(data)
  1374. },onStateChange:function(options){var fn,o=options,t=this.transport;
  1375. var state=this.getState(t);
  1376. if(fn=o["on"+state]){fn(this.getResponse(o),o)
  1377. }if(state=="Complete"){var success=t.status==200,response=this.getResponse(o);
  1378. if(fn=o.onUpdate){fn(response,o)
  1379. }if(fn=o["on"+(success?"Success":"Failure")]){fn(response,o)
  1380. }t.onreadystatechange=FBL.emptyFn;
  1381. if(this.requests.length>0){setTimeout(this.sendRequest,10)
  1382. }}},getResponse:function(options){var t=this.transport,type=options.dataType;
  1383. if(t.status!=200){return t.statusText
  1384. }else{if(type=="text"){return t.responseText
  1385. }else{if(type=="html"){return t.responseText
  1386. }else{if(type=="xml"){return t.responseXML
  1387. }else{if(type=="json"){return eval("("+t.responseText+")")
  1388. }}}}}},getState:function(){return this.states[this.transport.readyState]
  1389. }};
  1390. this.createCookie=function(name,value,days){if("cookie" in document){if(days){var date=new Date();
  1391. date.setTime(date.getTime()+(days*24*60*60*1000));
  1392. var expires="; expires="+date.toGMTString()
  1393. }else{var expires=""
  1394. }document.cookie=name+"="+value+expires+"; path=/"
  1395. }};
  1396. this.readCookie=function(name){if("cookie" in document){var nameEQ=name+"=";
  1397. var ca=document.cookie.split(";");
  1398. for(var i=0;
  1399. i<ca.length;
  1400. i++){var c=ca[i];
  1401. while(c.charAt(0)==" "){c=c.substring(1,c.length)
  1402. }if(c.indexOf(nameEQ)==0){return c.substring(nameEQ.length,c.length)
  1403. }}}return null
  1404. };
  1405. this.removeCookie=function(name){this.createCookie(name,"",-1)
  1406. };
  1407. var fixIE6BackgroundImageCache=function(doc){doc=doc||document;
  1408. try{doc.execCommand("BackgroundImageCache",false,true)
  1409. }catch(E){}};
  1410. var resetStyle="margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
  1411. var calculatePixelsPerInch=function calculatePixelsPerInch(doc,body){var inch=FBL.createGlobalElement("div");
  1412. inch.style.cssText=resetStyle+"width:1in; height:1in; position:absolute; top:-1234px; left:-1234px;";
  1413. body.appendChild(inch);
  1414. FBL.pixelsPerInch={x:inch.offsetWidth,y:inch.offsetHeight};
  1415. body.removeChild(inch)
  1416. };
  1417. this.SourceLink=function(url,line,type,object,instance){this.href=url;
  1418. this.instance=instance;
  1419. this.line=line;
  1420. this.type=type;
  1421. this.object=object
  1422. };
  1423. this.SourceLink.prototype={toString:function(){return this.href
  1424. },toJSON:function(){return'{"href":"'+this.href+'", '+(this.line?('"line":'+this.line+","):"")+(this.type?(' "type":"'+this.type+'",'):"")+"}"
  1425. }};
  1426. this.SourceText=function(lines,owner){this.lines=lines;
  1427. this.owner=owner
  1428. };
  1429. this.SourceText.getLineAsHTML=function(lineNo){return escapeForSourceLine(this.lines[lineNo-1])
  1430. }
  1431. }).apply(FBL);
  1432. 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"'};
  1433. FBL.$STR=function(name){return oSTR.hasOwnProperty(name)?oSTR[name]:name
  1434. };
  1435. FBL.$STRF=function(name,args){if(!oSTR.hasOwnProperty(name)){return name
  1436. }var format=oSTR[name];
  1437. var objIndex=0;
  1438. var parts=parseFormat(format);
  1439. var trialIndex=objIndex;
  1440. var objects=args;
  1441. for(var i=0;
  1442. i<parts.length;
  1443. i++){var part=parts[i];
  1444. if(part&&typeof(part)=="object"){if(++trialIndex>objects.length){format="";
  1445. objIndex=-1;
  1446. parts.length=0;
  1447. break
  1448. }}}var result=[];
  1449. for(var i=0;
  1450. i<parts.length;
  1451. ++i){var part=parts[i];
  1452. if(part&&typeof(part)=="object"){result.push(""+args.shift())
  1453. }else{result.push(part)
  1454. }}return result.join("")
  1455. };
  1456. var parseFormat=function parseFormat(format){var parts=[];
  1457. if(format.length<=0){return parts
  1458. }var reg=/((^%|.%)(\d+)?(\.)([a-zA-Z]))|((^%|.%)([a-zA-Z]))/;
  1459. for(var m=reg.exec(format);
  1460. m;
  1461. m=reg.exec(format)){if(m[0].substr(0,2)=="%%"){parts.push(format.substr(0,m.index));
  1462. parts.push(m[0].substr(1))
  1463. }else{var type=m[8]?m[8]:m[5];
  1464. var precision=m[3]?parseInt(m[3]):(m[4]=="."?-1:0);
  1465. var rep=null;
  1466. switch(type){case"s":rep=FirebugReps.Text;
  1467. break;
  1468. case"f":case"i":case"d":rep=FirebugReps.Number;
  1469. break;
  1470. case"o":rep=null;
  1471. break
  1472. }parts.push(format.substr(0,m[0][0]=="%"?m.index:m.index+1));
  1473. parts.push({rep:rep,precision:precision,type:("%"+type)})
  1474. }format=format.substr(m.index+m[0].length)
  1475. }parts.push(format);
  1476. return parts
  1477. }
  1478. }});
  1479. FBL.ns(function(){with(FBL){var modules=[];
  1480. var panelTypes=[];
  1481. var panelTypeMap={};
  1482. var reps=[];
  1483. var parentPanelMap={};
  1484. window.Firebug=FBL.Firebug={version:"Firebug Lite 1.3.2",revision:"$Revision: 9760 $",modules:modules,panelTypes:panelTypes,panelTypeMap:panelTypeMap,reps:reps,initialize:function(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.initialize","initializing application")
  1485. }Firebug.browser=new Context(Env.browser);
  1486. Firebug.context=Firebug.browser;
  1487. cacheDocument();
  1488. if(Firebug.Inspector){Firebug.Inspector.create()
  1489. }if(FBL.processAllStyleSheets){processAllStyleSheets(Firebug.browser.document)
  1490. }FirebugChrome.initialize();
  1491. dispatch(modules,"initialize",[]);
  1492. if(Env.onLoad){var onLoad=Env.onLoad;
  1493. delete Env.onLoad;
  1494. setTimeout(onLoad,200)
  1495. }},shutdown:function(){if(Firebug.Inspector){Firebug.Inspector.destroy()
  1496. }dispatch(modules,"shutdown",[]);
  1497. var chromeMap=FirebugChrome.chromeMap;
  1498. for(var name in chromeMap){if(chromeMap.hasOwnProperty(name)){chromeMap[name].destroy()
  1499. }}Firebug.Lite.Cache.Element.clear();
  1500. Firebug.Lite.Cache.StyleSheet.clear();
  1501. Firebug.browser=null;
  1502. Firebug.context=null
  1503. },registerModule:function(){modules.push.apply(modules,arguments);
  1504. if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.registerModule")
  1505. }},registerPanel:function(){panelTypes.push.apply(panelTypes,arguments);
  1506. for(var i=0,panelType;
  1507. panelType=arguments[i];
  1508. ++i){panelTypeMap[panelType.prototype.name]=arguments[i];
  1509. if(panelType.prototype.parentPanel){parentPanelMap[panelType.prototype.parentPanel]=1
  1510. }}if(FBTrace.DBG_INITIALIZE){for(var i=0;
  1511. i<arguments.length;
  1512. ++i){FBTrace.sysout("Firebug.registerPanel",arguments[i].prototype.name)
  1513. }}},registerRep:function(){reps.push.apply(reps,arguments)
  1514. },unregisterRep:function(){for(var i=0;
  1515. i<arguments.length;
  1516. ++i){remove(reps,arguments[i])
  1517. }},setDefaultReps:function(funcRep,rep){FBL.defaultRep=rep;
  1518. FBL.defaultFuncRep=funcRep
  1519. },getRep:function(object){var type=typeof object;
  1520. if(isIE&&isFunction(object)){type="function"
  1521. }for(var i=0;
  1522. i<reps.length;
  1523. ++i){var rep=reps[i];
  1524. try{if(rep.supportsObject(object,type)){if(FBTrace.DBG_DOM){FBTrace.sysout("getRep type: "+type+" object: "+object,rep)
  1525. }return rep
  1526. }}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("firebug.getRep FAILS: ",exc.message||exc);
  1527. FBTrace.sysout("firebug.getRep reps["+i+"/"+reps.length+"]: Rep="+reps[i].className)
  1528. }}}return(type=="function")?defaultFuncRep:defaultRep
  1529. },getRepObject:function(node){var target=null;
  1530. for(var child=node;
  1531. child;
  1532. child=child.parentNode){if(hasClass(child,"repTarget")){target=child
  1533. }if(child.repObject){if(!target&&hasClass(child,"repIgnore")){break
  1534. }else{return child.repObject
  1535. }}}},getRepNode:function(node){for(var child=node;
  1536. child;
  1537. child=child.parentNode){if(child.repObject){return child
  1538. }}},getElementByRepObject:function(element,object){for(var child=element.firstChild;
  1539. child;
  1540. child=child.nextSibling){if(child.repObject==object){return child
  1541. }}},getPref:function(name){return Firebug[name]
  1542. },setPref:function(name,value){Firebug[name]=value;
  1543. this.savePrefs()
  1544. },setPrefs:function(prefs){for(var name in prefs){if(prefs.hasOwnProperty(name)){Firebug[name]=prefs[name]
  1545. }}this.savePrefs()
  1546. },restorePrefs:function(){var Options=Env.Options;
  1547. for(var name in Options){Firebug[name]=Options[name]
  1548. }},loadPrefs:function(prefs){this.restorePrefs();
  1549. prefs=prefs||eval("("+readCookie("FirebugLite")+")");
  1550. for(var name in prefs){if(prefs.hasOwnProperty(name)){Firebug[name]=prefs[name]
  1551. }}},savePrefs:function(){var json=["{"],jl=0;
  1552. var Options=Env.Options;
  1553. for(var name in Options){if(Options.hasOwnProperty(name)){var value=Firebug[name];
  1554. json[++jl]='"';
  1555. json[++jl]=name;
  1556. var type=typeof value;
  1557. if(type=="boolean"||type=="number"){json[++jl]='":';
  1558. json[++jl]=value;
  1559. json[++jl]=","
  1560. }else{json[++jl]='":"';
  1561. json[++jl]=value;
  1562. json[++jl]='",'
  1563. }}}json.length=jl--;
  1564. json[++jl]="}";
  1565. createCookie("FirebugLite",json.join(""))
  1566. },erasePrefs:function(){removeCookie("FirebugLite")
  1567. }};
  1568. Firebug.restorePrefs();
  1569. if(!Env.Options.enablePersistent||Env.Options.enablePersistent&&Env.isChromeContext||Env.isDebugMode){Env.browser.window.Firebug=FBL.Firebug
  1570. }FBL.cacheDocument=function cacheDocument(){var ElementCache=Firebug.Lite.Cache.Element;
  1571. var els=Firebug.browser.document.getElementsByTagName("*");
  1572. for(var i=0,l=els.length,el;
  1573. i<l;
  1574. i++){el=els[i];
  1575. ElementCache(el)
  1576. }};
  1577. Firebug.Listener=function(){this.fbListeners=null
  1578. };
  1579. Firebug.Listener.prototype={addListener:function(listener){if(!this.fbListeners){this.fbListeners=[]
  1580. }this.fbListeners.push(listener)
  1581. },removeListener:function(listener){remove(this.fbListeners,listener)
  1582. }};
  1583. 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){}});
  1584. 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);
  1585. this.panelBarNode=$("fbPanelBar1");
  1586. this.sidePanelBarBoxNode=$("fbPanelBar2");
  1587. if(this.hasSidePanel){this.sidePanelBar=extend({},PanelBar);
  1588. this.sidePanelBar.create(this)
  1589. }var options=this.options=extend(Firebug.Panel.options,this.options);
  1590. var panelId="fb"+this.name;
  1591. if(options.isPreRendered){this.panelNode=$(panelId);
  1592. this.tabNode=$(panelId+"Tab");
  1593. this.tabNode.style.display="block";
  1594. if(options.hasToolButtons){this.toolButtonsNode=$(panelId+"Buttons")
  1595. }if(options.hasStatusBar){this.statusBarBox=$("fbStatusBarBox");
  1596. this.statusBarNode=$(panelId+"StatusBar")
  1597. }}else{var containerSufix=this.parentPanel?"2":"1";
  1598. var panelNode=this.panelNode=createElement("div",{id:panelId,className:"fbPanel"});
  1599. $("fbPanel"+containerSufix).appendChild(panelNode);
  1600. var tabHTML='<span class="fbTabL"></span><span class="fbTabText">'+this.title+'</span><span class="fbTabR"></span>';
  1601. var tabNode=this.tabNode=createElement("a",{id:panelId+"Tab",className:"fbTab fbHover",innerHTML:tabHTML});
  1602. if(isIE6){tabNode.href="javascript:void(0)"
  1603. }var panelBarNode=this.parentPanel?Firebug.chrome.getPanel(this.parentPanel).sidePanelBarNode:this.panelBarNode;
  1604. panelBarNode.appendChild(tabNode);
  1605. tabNode.style.display="block";
  1606. if(options.hasToolButtons){this.toolButtonsNode=createElement("span",{id:panelId+"Buttons",className:"fbToolbarButtons"});
  1607. $("fbToolbarButtons").appendChild(this.toolButtonsNode)
  1608. }if(options.hasStatusBar){this.statusBarBox=$("fbStatusBarBox");
  1609. this.statusBarNode=createElement("span",{id:panelId+"StatusBar",className:"fbToolbarButtons fbStatusBar"});
  1610. this.statusBarBox.appendChild(this.statusBarNode)
  1611. }}this.containerNode=this.panelNode.parentNode;
  1612. if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.Panel.create",this.name)
  1613. }this.onContextMenu=bind(this.onContextMenu,this)
  1614. },destroy:function(state){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.Panel.destroy",this.name)
  1615. }if(this.hasSidePanel){this.sidePanelBar.destroy();
  1616. this.sidePanelBar=null
  1617. }this.options=null;
  1618. this.name=null;
  1619. this.parentPanel=null;
  1620. this.tabNode=null;
  1621. this.panelNode=null;
  1622. this.containerNode=null;
  1623. this.toolButtonsNode=null;
  1624. this.statusBarBox=null;
  1625. this.statusBarNode=null
  1626. },initialize:function(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.Panel.initialize",this.name)
  1627. }if(this.hasSidePanel){this.sidePanelBar.initialize()
  1628. }var options=this.options=extend(Firebug.Panel.options,this.options);
  1629. var panelId="fb"+this.name;
  1630. this.panelNode=$(panelId);
  1631. this.tabNode=$(panelId+"Tab");
  1632. this.tabNode.style.display="block";
  1633. if(options.hasStatusBar){this.statusBarBox=$("fbStatusBarBox");
  1634. this.statusBarNode=$(panelId+"StatusBar")
  1635. }if(options.hasToolButtons){this.toolButtonsNode=$(panelId+"Buttons")
  1636. }this.containerNode=this.panelNode.parentNode;
  1637. this.containerNode.scrollTop=this.lastScrollTop;
  1638. addEvent(this.containerNode,"contextmenu",this.onContextMenu);
  1639. Firebug.chrome.currentPanel=Firebug.chrome.selectedPanel&&Firebug.chrome.selectedPanel.sidePanelBar?Firebug.chrome.selectedPanel.sidePanelBar.selectedPanel:Firebug.chrome.selectedPanel;
  1640. Firebug.showInfoTips=true;
  1641. Firebug.InfoTip.initializeBrowser(Firebug.chrome)
  1642. },shutdown:function(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.Panel.shutdown",this.name)
  1643. }Firebug.InfoTip.uninitializeBrowser(Firebug.chrome);
  1644. if(Firebug.chrome.largeCommandLineVisible){Firebug.chrome.hideLargeCommandLine()
  1645. }if(this.hasSidePanel){}this.lastScrollTop=this.containerNode.scrollTop;
  1646. removeEvent(this.containerNode,"contextmenu",this.onContextMenu)
  1647. },detach:function(oldChrome,newChrome){if(oldChrome.selectedPanel.name==this.name){this.lastScrollTop=oldChrome.selectedPanel.containerNode.scrollTop
  1648. }},reattach:function(doc){if(this.options.innerHTMLSync){this.synchronizeUI()
  1649. }},synchronizeUI:function(){this.containerNode.scrollTop=this.lastScrollTop||0
  1650. },show:function(state){var options=this.options;
  1651. if(options.hasStatusBar){this.statusBarBox.style.display="inline";
  1652. this.statusBarNode.style.display="inline"
  1653. }if(options.hasToolButtons){this.toolButtonsNode.style.display="inline"
  1654. }this.panelNode.style.display="block";
  1655. this.visible=true;
  1656. if(!this.parentPanel){Firebug.chrome.layout(this)
  1657. }},hide:function(state){var options=this.options;
  1658. if(options.hasStatusBar){this.statusBarBox.style.display="none";
  1659. this.statusBarNode.style.display="none"
  1660. }if(options.hasToolButtons){this.toolButtonsNode.style.display="none"
  1661. }this.panelNode.style.display="none";
  1662. this.visible=false
  1663. },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)
  1664. }return
  1665. }var buttons=this.context.browser.chrome.$(buttonsId);
  1666. if(buttons){collapse(buttons,show?"false":"true")
  1667. }}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.dumpProperties("firebug.Panel showToolbarButtons FAILS",exc);
  1668. if(!this.context.browser){FBTrace.dumpStack("firebug.Panel showToolbarButtons no browser")
  1669. }}}},supportsObject:function(object){return 0
  1670. },hasObject:function(object){return false
  1671. },select:function(object,forceUpdate){if(!object){object=this.getDefaultSelection(this.context)
  1672. }if(FBTrace.DBG_PANELS){FBTrace.sysout("firebug.select "+this.name+" forceUpdate: "+forceUpdate+" "+object+((object==this.selection)?"==":"!=")+this.selection)
  1673. }if(forceUpdate||object!=this.selection){this.selection=object;
  1674. this.updateSelection(object)
  1675. }},updateSelection:function(object){},markChange:function(skipSelf){if(this.dependents){if(skipSelf){for(var i=0;
  1676. i<this.dependents.length;
  1677. ++i){var panelName=this.dependents[i];
  1678. if(panelName!=this.name){this.context.invalidatePanels(panelName)
  1679. }}}else{this.context.invalidatePanels.apply(this.context,this.dependents)
  1680. }}},startInspecting:function(){},stopInspecting:function(object,cancelled){},search:function(text,reverse){},getSearchOptionsMenuItems:function(){return[Firebug.Search.searchOptionMenu("search.Case Sensitive","searchCaseSensitive")]
  1681. },navigateToNextDocument:function(match,reverse){var self=this;
  1682. function compare(a,b){var locA=self.getObjectDescription(a);
  1683. var locB=self.getObjectDescription(b);
  1684. if(locA.path>locB.path){return 1
  1685. }if(locA.path<locB.path){return -1
  1686. }if(locA.name>locB.name){return 1
  1687. }if(locA.name<locB.name){return -1
  1688. }return 0
  1689. }var allLocs=this.getLocationList().sort(compare);
  1690. for(var curPos=0;
  1691. curPos<allLocs.length&&allLocs[curPos]!=this.location;
  1692. curPos++){}function transformIndex(index){if(reverse){var intermediate=curPos-index-1;
  1693. return(intermediate<0?allLocs.length:0)+intermediate
  1694. }else{return(curPos+index+1)%allLocs.length
  1695. }}for(var next=0;
  1696. next<allLocs.length-1;
  1697. next++){var object=allLocs[transformIndex(next)];
  1698. if(match(object)){this.navigate(object);
  1699. return object
  1700. }}},getOptionsMenuItems:function(){return null
  1701. },getContextMenuItems:function(object,target){return[]
  1702. },getBreakOnMenuItems:function(){return[]
  1703. },getEditor:function(target,value){},getDefaultSelection:function(){return null
  1704. },browseObject:function(object){},getPopupObject:function(target){return Firebug.getRepObject(target)
  1705. },getTooltipObject:function(target){return Firebug.getRepObject(target)
  1706. },showInfoTip:function(infoTip,x,y){},getObjectPath:function(object){return null
  1707. },getLocationList:function(){return null
  1708. },getDefaultLocation:function(){return null
  1709. },getObjectLocation:function(object){return""
  1710. },getObjectDescription:function(object){var url=this.getObjectLocation(object);
  1711. return FBL.splitURLBase(url)
  1712. },highlight:function(show){var tab=this.getTab();
  1713. if(!tab){return
  1714. }if(show){tab.setAttribute("highlight","true")
  1715. }else{tab.removeAttribute("highlight")
  1716. }},getTab:function(){var chrome=Firebug.chrome;
  1717. var tab=chrome.$("fbPanelBar2").getTab(this.name);
  1718. if(!tab){tab=chrome.$("fbPanelBar1").getTab(this.name)
  1719. }return tab
  1720. },breakOnNext:function(armed){},shouldBreakOnNext:function(){return false
  1721. },getBreakOnNextTooltip:function(enabled){return null
  1722. },onContextMenu:function(event){if(!this.getContextMenuItems){return
  1723. }cancelEvent(event,true);
  1724. var target=event.target||event.srcElement;
  1725. var menu=this.getContextMenuItems(this.selection,target);
  1726. if(!menu){return
  1727. }var contextMenu=new Menu({id:"fbPanelContextMenu",items:menu});
  1728. contextMenu.show(event.clientX,event.clientY);
  1729. return true
  1730. }};
  1731. Firebug.MeasureBox={startMeasuring:function(target){if(!this.measureBox){this.measureBox=target.ownerDocument.createElement("span");
  1732. this.measureBox.className="measureBox"
  1733. }copyTextStyles(target,this.measureBox);
  1734. target.ownerDocument.body.appendChild(this.measureBox)
  1735. },getMeasuringElement:function(){return this.measureBox
  1736. },measureText:function(value){this.measureBox.innerHTML=value?escapeForSourceLine(value):"m";
  1737. return{width:this.measureBox.offsetWidth,height:this.measureBox.offsetHeight-1}
  1738. },measureInputText:function(value){value=value?escapeForTextNode(value):"m";
  1739. if(!Firebug.showTextNodesWithWhitespace){value=value.replace(/\t/g,"mmmmmm").replace(/\ /g,"m")
  1740. }this.measureBox.innerHTML=value;
  1741. return{width:this.measureBox.offsetWidth,height:this.measureBox.offsetHeight-1}
  1742. },getBox:function(target){var style=this.measureBox.ownerDocument.defaultView.getComputedStyle(this.measureBox,"");
  1743. var box=getBoxFromStyles(style,this.measureBox);
  1744. return box
  1745. },stopMeasuring:function(){this.measureBox.parentNode.removeChild(this.measureBox)
  1746. }};
  1747. if(FBL.domplate){Firebug.Rep=domplate({className:"",inspectable:true,supportsObject:function(object,type){return false
  1748. },inspectObject:function(object,context){Firebug.chrome.select(object)
  1749. },browseObject:function(object,context){},persistObject:function(object,context){},getRealObject:function(object,context){return object
  1750. },getTitle:function(object){var label=safeToString(object);
  1751. var re=/\[object (.*?)\]/;
  1752. var m=re.exec(label);
  1753. if(m){return m[1]
  1754. }else{if(isIE&&(label=="[object]"||typeof object=="object"&&typeof label=="undefined")){return"Object"
  1755. }else{return label
  1756. }}},getTooltip:function(object){return null
  1757. },getContextMenuItems:function(object,target,context){return[]
  1758. },STR:function(name){return $STR(name)
  1759. },cropString:function(text){return cropString(text)
  1760. },cropMultipleLines:function(text,limit){return cropMultipleLines(text,limit)
  1761. },toLowerCase:function(text){return text?text.toLowerCase():text
  1762. },plural:function(n){return n==1?"":"s"
  1763. }})
  1764. }}});
  1765. FBL.ns(function(){with(FBL){FBL.Controller={controllers:null,controllerContext:null,initialize:function(context){this.controllers=[];
  1766. this.controllerContext=context||Firebug.chrome
  1767. },shutdown:function(){this.removeControllers()
  1768. },addController:function(){for(var i=0,arg;
  1769. arg=arguments[i];
  1770. i++){if(typeof arg[0]=="string"){arg[0]=$$(arg[0],this.controllerContext)
  1771. }var handler=arg[2];
  1772. arg[2]=bind(handler,this);
  1773. arg[3]=handler;
  1774. this.controllers.push(arg);
  1775. addEvent.apply(this,arg)
  1776. }},removeController:function(){for(var i=0,arg;
  1777. arg=arguments[i];
  1778. i++){for(var j=0,c;
  1779. c=this.controllers[j];
  1780. j++){if(arg[0]==c[0]&&arg[1]==c[1]&&arg[2]==c[3]){removeEvent.apply(this,c)
  1781. }}}},removeControllers:function(){for(var i=0,c;
  1782. c=this.controllers[i];
  1783. i++){removeEvent.apply(this,c)
  1784. }}};
  1785. FBL.PanelBar={panelMap:null,selectedPanel:null,parentPanelName:null,create:function(ownerPanel){this.panelMap={};
  1786. this.ownerPanel=ownerPanel;
  1787. if(ownerPanel){ownerPanel.sidePanelBarNode=createElement("span");
  1788. ownerPanel.sidePanelBarNode.style.display="none";
  1789. ownerPanel.sidePanelBarBoxNode.appendChild(ownerPanel.sidePanelBarNode)
  1790. }var panels=Firebug.panelTypes;
  1791. for(var i=0,p;
  1792. p=panels[i];
  1793. i++){if(!ownerPanel&&!p.prototype.parentPanel||ownerPanel&&p.prototype.parentPanel&&ownerPanel.name==p.prototype.parentPanel){this.addPanel(p.prototype.name)
  1794. }}},destroy:function(){PanelBar.shutdown.call(this);
  1795. for(var name in this.panelMap){this.removePanel(name);
  1796. var panel=this.panelMap[name];
  1797. panel.destroy();
  1798. this.panelMap[name]=null;
  1799. delete this.panelMap[name]
  1800. }this.panelMap=null;
  1801. this.ownerPanel=null
  1802. },initialize:function(){if(this.ownerPanel){this.ownerPanel.sidePanelBarNode.style.display="inline"
  1803. }for(var name in this.panelMap){(function(self,name){var onTabClick=function onTabClick(){self.selectPanel(name);
  1804. return false
  1805. };
  1806. Firebug.chrome.addController([self.panelMap[name].tabNode,"mousedown",onTabClick])
  1807. })(this,name)
  1808. }},shutdown:function(){var selectedPanel=this.selectedPanel;
  1809. if(selectedPanel){removeClass(selectedPanel.tabNode,"fbSelectedTab");
  1810. selectedPanel.hide();
  1811. selectedPanel.shutdown()
  1812. }if(this.ownerPanel){this.ownerPanel.sidePanelBarNode.style.display="none"
  1813. }this.selectedPanel=null
  1814. },addPanel:function(panelName,parentPanel){var PanelType=Firebug.panelTypeMap[panelName];
  1815. var panel=this.panelMap[panelName]=new PanelType();
  1816. panel.create()
  1817. },removePanel:function(panelName){var panel=this.panelMap[panelName];
  1818. if(panel.hasOwnProperty(panelName)){panel.destroy()
  1819. }},selectPanel:function(panelName){var selectedPanel=this.selectedPanel;
  1820. var panel=this.panelMap[panelName];
  1821. if(panel&&selectedPanel!=panel){if(selectedPanel){removeClass(selectedPanel.tabNode,"fbSelectedTab");
  1822. selectedPanel.shutdown();
  1823. selectedPanel.hide()
  1824. }if(!panel.parentPanel){FirebugChrome.selectedPanelName=panelName
  1825. }this.selectedPanel=panel;
  1826. setClass(panel.tabNode,"fbSelectedTab");
  1827. panel.show();
  1828. panel.initialize()
  1829. }},getPanel:function(panelName){var panel=this.panelMap[panelName];
  1830. return panel
  1831. }};
  1832. FBL.Button=function(options){options=options||{};
  1833. append(this,options);
  1834. this.state="unpressed";
  1835. this.display="unpressed";
  1836. if(this.element){this.container=this.element.parentNode
  1837. }else{this.shouldDestroy=true;
  1838. this.container=this.owner.getPanel().toolButtonsNode;
  1839. this.element=createElement("a",{className:this.baseClassName+" "+this.className+" fbHover",innerHTML:this.caption});
  1840. if(this.title){this.element.title=this.title
  1841. }this.container.appendChild(this.element)
  1842. }};
  1843. 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();
  1844. if(this.shouldDestroy){this.container.removeChild(this.element)
  1845. }this.element=null;
  1846. this.container=null;
  1847. this.owner=null
  1848. },initialize:function(){Controller.initialize.apply(this);
  1849. var element=this.element;
  1850. this.addController([element,"mousedown",this.handlePress]);
  1851. if(this.type=="normal"){this.addController([element,"mouseup",this.handleUnpress],[element,"mouseout",this.handleUnpress],[element,"click",this.handleClick])
  1852. }},shutdown:function(){Controller.shutdown.apply(this)
  1853. },restore:function(){this.changeState("unpressed")
  1854. },changeState:function(state){this.state=state;
  1855. this.changeDisplay(state)
  1856. },changeDisplay:function(display){if(display!=this.display){if(display=="pressed"){setClass(this.element,this.pressedClassName)
  1857. }else{if(display=="unpressed"){removeClass(this.element,this.pressedClassName)
  1858. }}this.display=display
  1859. }},handlePress:function(event){cancelEvent(event,true);
  1860. if(this.type=="normal"){this.changeDisplay("pressed");
  1861. this.beforeClick=true
  1862. }else{if(this.type=="toggle"){if(this.state=="pressed"){this.changeState("unpressed");
  1863. if(this.onUnpress){this.onUnpress.apply(this.owner,arguments)
  1864. }}else{this.changeState("pressed");
  1865. if(this.onPress){this.onPress.apply(this.owner,arguments)
  1866. }}if(this.onClick){this.onClick.apply(this.owner,arguments)
  1867. }}}return false
  1868. },handleUnpress:function(event){cancelEvent(event,true);
  1869. if(this.beforeClick){this.changeDisplay("unpressed")
  1870. }return false
  1871. },handleClick:function(event){cancelEvent(event,true);
  1872. if(this.type=="normal"){if(this.onClick){this.onClick.apply(this.owner)
  1873. }this.changeState("unpressed")
  1874. }this.beforeClick=false;
  1875. return false
  1876. }});
  1877. FBL.IconButton=function(){Button.apply(this,arguments)
  1878. };
  1879. IconButton.prototype=extend(Button.prototype,{baseClassName:"fbIconButton",pressedClassName:"fbIconPressed"});
  1880. var menuItemProps={"class":"$item.className",type:"$item.type",value:"$item.value",_command:"$item.command"};
  1881. if(isIE6){menuItemProps.href="javascript:void(0)"
  1882. }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=[];
  1883. for(var i=0,length=items.length;
  1884. i<length;
  1885. i++){var item=items[i];
  1886. if(typeof item=="string"&&item.indexOf("-")==0){result.push({tag:this.separatorTag});
  1887. continue
  1888. }item=extend(item,{});
  1889. item.type=item.type||"";
  1890. item.value=item.value||"";
  1891. var type=item.type;
  1892. item.tag=this.itemTag;
  1893. var className=item.className||"";
  1894. className+="fbMenuOption fbHover ";
  1895. if(type=="checkbox"){className+="fbMenuCheckBox ";
  1896. item.tag=this.checkBoxTag
  1897. }else{if(type=="radiobutton"){className+="fbMenuRadioButton ";
  1898. item.tag=this.radioButtonTag
  1899. }else{if(type=="group"){className+="fbMenuGroup ";
  1900. item.tag=this.groupTag
  1901. }else{if(type=="shortcut"){className+="fbMenuShortcut ";
  1902. item.tag=this.shortcutTag
  1903. }}}}if(item.checked){className+="fbMenuChecked "
  1904. }else{if(item.selected){className+="fbMenuRadioSelected "
  1905. }}if(item.disabled){className+="fbMenuDisabled "
  1906. }item.className=className;
  1907. item.label=$STR(item.label);
  1908. result.push(item)
  1909. }return result
  1910. }})
  1911. }FBL.Menu=function(options){if(!options.element){if(options.getItems){options.items=options.getItems()
  1912. }options.element=MenuPlate.tag.append({object:options},getElementByClass(Firebug.chrome.document,"fbBody"),MenuPlate)
  1913. }append(this,options);
  1914. if(typeof this.element=="string"){this.id=this.element;
  1915. this.element=$(this.id)
  1916. }else{if(this.id){this.element.id=this.id
  1917. }}this.element.firebugIgnore=true;
  1918. this.elementStyle=this.element.style;
  1919. this.isVisible=false;
  1920. this.handleMouseDown=bind(this.handleMouseDown,this);
  1921. this.handleMouseOver=bind(this.handleMouseOver,this);
  1922. this.handleMouseOut=bind(this.handleMouseOut,this);
  1923. this.handleWindowMouseDown=bind(this.handleWindowMouseDown,this)
  1924. };
  1925. var menuMap={};
  1926. Menu.prototype=extend(Controller,{destroy:function(){this.hide();
  1927. if(this.parentMenu){this.parentMenu.childMenu=null
  1928. }this.element.parentNode.removeChild(this.element);
  1929. this.element=null;
  1930. this.elementStyle=null;
  1931. this.parentMenu=null;
  1932. this.parentTarget=null
  1933. },initialize:function(){Controller.initialize.call(this);
  1934. this.addController([this.element,"mousedown",this.handleMouseDown],[this.element,"mouseover",this.handleMouseOver])
  1935. },shutdown:function(){Controller.shutdown.call(this)
  1936. },show:function(x,y){this.initialize();
  1937. if(this.isVisible){return
  1938. }x=x||0;
  1939. y=y||0;
  1940. if(this.parentMenu){var oldChildMenu=this.parentMenu.childMenu;
  1941. if(oldChildMenu&&oldChildMenu!=this){oldChildMenu.destroy()
  1942. }this.parentMenu.childMenu=this
  1943. }else{addEvent(Firebug.chrome.document,"mousedown",this.handleWindowMouseDown)
  1944. }this.elementStyle.display="block";
  1945. this.elementStyle.visibility="hidden";
  1946. var size=Firebug.chrome.getSize();
  1947. x=Math.min(x,size.width-this.element.clientWidth-10);
  1948. x=Math.max(x,0);
  1949. y=Math.min(y,size.height-this.element.clientHeight-10);
  1950. y=Math.max(y,0);
  1951. this.elementStyle.left=x+"px";
  1952. this.elementStyle.top=y+"px";
  1953. this.elementStyle.visibility="visible";
  1954. this.isVisible=true;
  1955. if(isFunction(this.onShow)){this.onShow.apply(this,arguments)
  1956. }},hide:function(){this.clearHideTimeout();
  1957. this.clearShowChildTimeout();
  1958. if(!this.isVisible){return
  1959. }this.elementStyle.display="none";
  1960. if(this.childMenu){this.childMenu.destroy();
  1961. this.childMenu=null
  1962. }if(this.parentTarget){removeClass(this.parentTarget,"fbMenuGroupSelected")
  1963. }this.isVisible=false;
  1964. this.shutdown();
  1965. if(isFunction(this.onHide)){this.onHide.apply(this,arguments)
  1966. }},showChildMenu:function(target){var id=target.getAttribute("child");
  1967. var parent=this;
  1968. var target=target;
  1969. this.showChildTimeout=Firebug.chrome.window.setTimeout(function(){var box=Firebug.chrome.getElementBox(target);
  1970. var childMenuObject=menuMap.hasOwnProperty(id)?menuMap[id]:{element:$(id)};
  1971. var childMenu=new Menu(extend(childMenuObject,{parentMenu:parent,parentTarget:target}));
  1972. var offsetLeft=isIE6?-1:-6;
  1973. childMenu.show(box.left+box.width+offsetLeft,box.top-6);
  1974. setClass(target,"fbMenuGroupSelected")
  1975. },350)
  1976. },clearHideTimeout:function(){if(this.hideTimeout){Firebug.chrome.window.clearTimeout(this.hideTimeout);
  1977. delete this.hideTimeout
  1978. }},clearShowChildTimeout:function(){if(this.showChildTimeout){Firebug.chrome.window.clearTimeout(this.showChildTimeout);
  1979. this.showChildTimeout=null
  1980. }},handleMouseDown:function(event){cancelEvent(event,true);
  1981. var topParent=this;
  1982. while(topParent.parentMenu){topParent=topParent.parentMenu
  1983. }var target=event.target||event.srcElement;
  1984. target=getAncestorByClass(target,"fbMenuOption");
  1985. if(!target||hasClass(target,"fbMenuGroup")){return false
  1986. }if(target&&!hasClass(target,"fbMenuDisabled")){var type=target.getAttribute("type");
  1987. if(type=="checkbox"){var checked=target.getAttribute("checked");
  1988. var value=target.getAttribute("value");
  1989. var wasChecked=hasClass(target,"fbMenuChecked");
  1990. if(wasChecked){removeClass(target,"fbMenuChecked");
  1991. target.setAttribute("checked","")
  1992. }else{setClass(target,"fbMenuChecked");
  1993. target.setAttribute("checked","true")
  1994. }if(isFunction(this.onCheck)){this.onCheck.call(this,target,value,!wasChecked)
  1995. }}if(type=="radiobutton"){var selectedRadios=getElementsByClass(target.parentNode,"fbMenuRadioSelected");
  1996. var group=target.getAttribute("group");
  1997. for(var i=0,length=selectedRadios.length;
  1998. i<length;
  1999. i++){radio=selectedRadios[i];
  2000. if(radio.getAttribute("group")==group){removeClass(radio,"fbMenuRadioSelected");
  2001. radio.setAttribute("selected","")
  2002. }}setClass(target,"fbMenuRadioSelected");
  2003. target.setAttribute("selected","true")
  2004. }var handler=null;
  2005. var cmd=target.command;
  2006. if(isFunction(cmd)){handler=cmd
  2007. }else{if(typeof cmd=="string"){handler=this[cmd]
  2008. }}var closeMenu=true;
  2009. if(handler){closeMenu=handler.call(this,target)!==false
  2010. }if(closeMenu){topParent.hide()
  2011. }}return false
  2012. },handleWindowMouseDown:function(event){var target=event.target||event.srcElement;
  2013. target=getAncestorByClass(target,"fbMenu");
  2014. if(!target){removeEvent(Firebug.chrome.document,"mousedown",this.handleWindowMouseDown);
  2015. this.hide()
  2016. }},handleMouseOver:function(event){this.clearHideTimeout();
  2017. this.clearShowChildTimeout();
  2018. var target=event.target||event.srcElement;
  2019. target=getAncestorByClass(target,"fbMenuOption");
  2020. if(!target){return
  2021. }var childMenu=this.childMenu;
  2022. if(childMenu){removeClass(childMenu.parentTarget,"fbMenuGroupSelected");
  2023. if(childMenu.parentTarget!=target&&childMenu.isVisible){childMenu.clearHideTimeout();
  2024. childMenu.hideTimeout=Firebug.chrome.window.setTimeout(function(){childMenu.destroy()
  2025. },300)
  2026. }}if(hasClass(target,"fbMenuGroup")){this.showChildMenu(target)
  2027. }}});
  2028. append(Menu,{register:function(object){menuMap[object.id]=object
  2029. },check:function(element){setClass(element,"fbMenuChecked");
  2030. element.setAttribute("checked","true")
  2031. },uncheck:function(element){removeClass(element,"fbMenuChecked");
  2032. element.setAttribute("checked","")
  2033. },disable:function(element){setClass(element,"fbMenuDisabled")
  2034. },enable:function(element){removeClass(element,"fbMenuDisabled")
  2035. }});
  2036. function StatusBar(){}StatusBar.prototype=extend(Controller,{})
  2037. }});
  2038. FBL.ns(function(){with(FBL){var refreshDelay=300;
  2039. var shouldFixElementFromPoint=isOpera||isSafari&&browserVersion<"532";
  2040. var evalError="___firebug_evaluation_error___";
  2041. var pixelsPerInch;
  2042. var resetStyle="margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
  2043. var offscreenStyle=resetStyle+"top:-1234px; left:-1234px;";
  2044. FBL.Context=function(win){this.window=win.window;
  2045. this.document=win.document;
  2046. this.browser=Env.browser;
  2047. if(isIE&&!this.window.eval){this.window.execScript("null");
  2048. if(!this.window.eval){throw new Error("Firebug Error: eval() method not found in this window")
  2049. }}this.eval=this.window.eval("new Function('try{ return window.eval.apply(window,arguments) }catch(E){ E."+evalError+"=true; return E }')")
  2050. };
  2051. FBL.Context.prototype={browser:null,loaded:true,setTimeout:function(fn,delay){var win=this.window;
  2052. if(win.setTimeout==this.setTimeout){throw new Error("setTimeout recursion")
  2053. }var timeout=win.setTimeout.apply?win.setTimeout.apply(win,arguments):win.setTimeout(fn,delay);
  2054. if(!this.timeouts){this.timeouts={}
  2055. }this.timeouts[timeout]=1;
  2056. return timeout
  2057. },clearTimeout:function(timeout){clearTimeout(timeout);
  2058. if(this.timeouts){delete this.timeouts[timeout]
  2059. }},setInterval:function(fn,delay){var win=this.window;
  2060. var timeout=win.setInterval.apply?win.setInterval.apply(win,arguments):win.setInterval(fn,delay);
  2061. if(!this.intervals){this.intervals={}
  2062. }this.intervals[timeout]=1;
  2063. return timeout
  2064. },clearInterval:function(timeout){clearInterval(timeout);
  2065. if(this.intervals){delete this.intervals[timeout]
  2066. }},invalidatePanels:function(){if(!this.invalidPanels){this.invalidPanels={}
  2067. }for(var i=0;
  2068. i<arguments.length;
  2069. ++i){var panelName=arguments[i];
  2070. if(!Firebug.chrome||!Firebug.chrome.selectedPanel){return
  2071. }var panel=Firebug.chrome.selectedPanel.sidePanelBar?Firebug.chrome.selectedPanel.sidePanelBar.getPanel(panelName,true):null;
  2072. if(panel&&!panel.noRefresh){this.invalidPanels[panelName]=1
  2073. }}if(this.refreshTimeout){this.clearTimeout(this.refreshTimeout);
  2074. delete this.refreshTimeout
  2075. }this.refreshTimeout=this.setTimeout(bindFixed(function(){var invalids=[];
  2076. for(var panelName in this.invalidPanels){var panel=Firebug.chrome.selectedPanel.sidePanelBar?Firebug.chrome.selectedPanel.sidePanelBar.getPanel(panelName,true):null;
  2077. if(panel){if(panel.visible&&!panel.editing){panel.refresh()
  2078. }else{panel.needsRefresh=true
  2079. }if(panel.editing){invalids.push(panelName)
  2080. }}}delete this.invalidPanels;
  2081. delete this.refreshTimeout;
  2082. if(invalids.length){this.invalidatePanels.apply(this,invalids)
  2083. }},this),refreshDelay)
  2084. },evaluate:function(expr,context,api,errorHandler){expr=stripNewLines(expr);
  2085. context=context||"window";
  2086. var cmd,result;
  2087. if(context=="window"){cmd=api?"with("+api+"){ ("+expr+") }":"("+expr+")";
  2088. result=this.eval(cmd);
  2089. if(result&&result[evalError]){cmd=api?"with("+api+"){ "+expr+" }":expr;
  2090. result=this.eval(cmd)
  2091. }}else{cmd=api?"(function(arguments){ with("+api+"){ return ("+expr+") } }).call("+context+",undefined)":"(function(arguments){ return ("+expr+") }).call("+context+",undefined)";
  2092. result=this.eval(cmd);
  2093. if(result&&result[evalError]){cmd=api?"(function(arguments){ with("+api+"){ "+expr+" } }).call("+context+",undefined)":"(function(arguments){ "+expr+" }).call("+context+",undefined)";
  2094. result=this.eval(cmd)
  2095. }}if(result&&result[evalError]){var msg=result.name?(result.name+": "):"";
  2096. msg+=result.message||result;
  2097. if(errorHandler){result=errorHandler(msg)
  2098. }else{result=msg
  2099. }}return result
  2100. },getWindowSize:function(){var width=0,height=0,el;
  2101. if(typeof this.window.innerWidth=="number"){width=this.window.innerWidth;
  2102. height=this.window.innerHeight
  2103. }else{if((el=this.document.documentElement)&&(el.clientHeight||el.clientWidth)){width=el.clientWidth;
  2104. height=el.clientHeight
  2105. }else{if((el=this.document.body)&&(el.clientHeight||el.clientWidth)){width=el.clientWidth;
  2106. height=el.clientHeight
  2107. }}}return{width:width,height:height}
  2108. },getWindowScrollSize:function(){var width=0,height=0,el;
  2109. if(!isIEQuiksMode&&(el=this.document.documentElement)&&(el.scrollHeight||el.scrollWidth)){width=el.scrollWidth;
  2110. height=el.scrollHeight
  2111. }if((el=this.document.body)&&(el.scrollHeight||el.scrollWidth)&&(el.scrollWidth>width||el.scrollHeight>height)){width=el.scrollWidth;
  2112. height=el.scrollHeight
  2113. }return{width:width,height:height}
  2114. },getWindowScrollPosition:function(){var top=0,left=0,el;
  2115. if(typeof this.window.pageYOffset=="number"){top=this.window.pageYOffset;
  2116. left=this.window.pageXOffset
  2117. }else{if((el=this.document.body)&&(el.scrollTop||el.scrollLeft)){top=el.scrollTop;
  2118. left=el.scrollLeft
  2119. }else{if((el=this.document.documentElement)&&(el.scrollTop||el.scrollLeft)){top=el.scrollTop;
  2120. left=el.scrollLeft
  2121. }}}return{top:top,left:left}
  2122. },getElementFromPoint:function(x,y){if(shouldFixElementFromPoint){var scroll=this.getWindowScrollPosition();
  2123. return this.document.elementFromPoint(x+scroll.left,y+scroll.top)
  2124. }else{return this.document.elementFromPoint(x,y)
  2125. }},getElementPosition:function(el){var left=0;
  2126. var top=0;
  2127. do{left+=el.offsetLeft;
  2128. top+=el.offsetTop
  2129. }while(el=el.offsetParent);
  2130. return{left:left,top:top}
  2131. },getElementBox:function(el){var result={};
  2132. if(el.getBoundingClientRect){var rect=el.getBoundingClientRect();
  2133. var offset=isIE?this.document.body.clientTop||this.document.documentElement.clientTop:0;
  2134. var scroll=this.getWindowScrollPosition();
  2135. result.top=Math.round(rect.top-offset+scroll.top);
  2136. result.left=Math.round(rect.left-offset+scroll.left);
  2137. result.height=Math.round(rect.bottom-rect.top);
  2138. result.width=Math.round(rect.right-rect.left)
  2139. }else{var position=this.getElementPosition(el);
  2140. result.top=position.top;
  2141. result.left=position.left;
  2142. result.height=el.offsetHeight;
  2143. result.width=el.offsetWidth
  2144. }return result
  2145. },getMeasurement:function(el,name){var result={value:0,unit:"px"};
  2146. var cssValue=this.getStyle(el,name);
  2147. if(!cssValue){return result
  2148. }if(cssValue.toLowerCase()=="auto"){return result
  2149. }var reMeasure=/(\d+\.?\d*)(.*)/;
  2150. var m=cssValue.match(reMeasure);
  2151. if(m){result.value=m[1]-0;
  2152. result.unit=m[2].toLowerCase()
  2153. }return result
  2154. },getMeasurementInPixels:function(el,name){if(!el){return null
  2155. }var m=this.getMeasurement(el,name);
  2156. var value=m.value;
  2157. var unit=m.unit;
  2158. if(unit=="px"){return value
  2159. }else{if(unit=="pt"){return this.pointsToPixels(name,value)
  2160. }}if(unit=="em"){return this.emToPixels(el,value)
  2161. }else{if(unit=="%"){return this.percentToPixels(el,value)
  2162. }}},getMeasurementBox1:function(el,name){var sufixes=["Top","Left","Bottom","Right"];
  2163. var result=[];
  2164. for(var i=0,sufix;
  2165. sufix=sufixes[i];
  2166. i++){result[i]=Math.round(this.getMeasurementInPixels(el,name+sufix))
  2167. }return{top:result[0],left:result[1],bottom:result[2],right:result[3]}
  2168. },getMeasurementBox:function(el,name){var result=[];
  2169. var sufixes=name=="border"?["TopWidth","LeftWidth","BottomWidth","RightWidth"]:["Top","Left","Bottom","Right"];
  2170. if(isIE){var propName,cssValue;
  2171. var autoMargin=null;
  2172. for(var i=0,sufix;
  2173. sufix=sufixes[i];
  2174. i++){propName=name+sufix;
  2175. cssValue=el.currentStyle[propName]||el.style[propName];
  2176. if(cssValue=="auto"){if(!autoMargin){autoMargin=this.getCSSAutoMarginBox(el)
  2177. }result[i]=autoMargin[sufix.toLowerCase()]
  2178. }else{result[i]=this.getMeasurementInPixels(el,propName)
  2179. }}}else{for(var i=0,sufix;
  2180. sufix=sufixes[i];
  2181. i++){result[i]=this.getMeasurementInPixels(el,name+sufix)
  2182. }}return{top:result[0],left:result[1],bottom:result[2],right:result[3]}
  2183. },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}
  2184. }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}
  2185. }var offsetTop=0;
  2186. if(false&&isIEStantandMode){var scrollSize=Firebug.browser.getWindowScrollSize();
  2187. offsetTop=scrollSize.height
  2188. }var box=this.document.createElement("div");
  2189. box.style.cssText="margin:0; padding:1px; border: 0; visibility: hidden;";
  2190. var clone=el.cloneNode(false);
  2191. var text=this.document.createTextNode("&nbsp;");
  2192. clone.appendChild(text);
  2193. box.appendChild(clone);
  2194. this.document.body.appendChild(box);
  2195. var marginTop=clone.offsetTop-box.offsetTop-1;
  2196. var marginBottom=box.offsetHeight-clone.offsetHeight-2-marginTop;
  2197. var marginLeft=clone.offsetLeft-box.offsetLeft-1;
  2198. var marginRight=box.offsetWidth-clone.offsetWidth-2-marginLeft;
  2199. this.document.body.removeChild(box);
  2200. return{top:marginTop+offsetTop,left:marginLeft,bottom:marginBottom-offsetTop,right:marginRight}
  2201. },getFontSizeInPixels:function(el){var size=this.getMeasurement(el,"fontSize");
  2202. if(size.unit=="px"){return size.value
  2203. }var computeDirtyFontSize=function(el,calibration){var div=this.document.createElement("div");
  2204. var divStyle=offscreenStyle;
  2205. if(calibration){divStyle+=" font-size:"+calibration+"px;"
  2206. }div.style.cssText=divStyle;
  2207. div.innerHTML="A";
  2208. el.appendChild(div);
  2209. var value=div.offsetHeight;
  2210. el.removeChild(div);
  2211. return value
  2212. };
  2213. var rate=200/225;
  2214. var value=computeDirtyFontSize(el);
  2215. return value*rate
  2216. },pointsToPixels:function(name,value,returnFloat){var axis=/Top$|Bottom$/.test(name)?"y":"x";
  2217. var result=value*pixelsPerInch[axis]/72;
  2218. return returnFloat?result:Math.round(result)
  2219. },emToPixels:function(el,value){if(!el){return null
  2220. }var fontSize=this.getFontSizeInPixels(el);
  2221. return Math.round(value*fontSize)
  2222. },exToPixels:function(el,value){if(!el){return null
  2223. }var div=this.document.createElement("div");
  2224. div.style.cssText=offscreenStyle+"width:"+value+"ex;";
  2225. el.appendChild(div);
  2226. var value=div.offsetWidth;
  2227. el.removeChild(div);
  2228. return value
  2229. },percentToPixels:function(el,value){if(!el){return null
  2230. }var div=this.document.createElement("div");
  2231. div.style.cssText=offscreenStyle+"width:"+value+"%;";
  2232. el.appendChild(div);
  2233. var value=div.offsetWidth;
  2234. el.removeChild(div);
  2235. return value
  2236. },getStyle:isIE?function(el,name){return el.currentStyle[name]||el.style[name]||undefined
  2237. }:function(el,name){return this.document.defaultView.getComputedStyle(el,null)[name]||el.style[name]||undefined
  2238. }}
  2239. }});
  2240. FBL.ns(function(){with(FBL){var WindowDefaultOptions={type:"frame",id:"FirebugUI",height:250},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;
  2241. FBL.FirebugChrome={isOpen:false,height:250,sidePanelWidth:350,selectedPanelName:"Console",selectedHTMLElementId:null,chromeMap:{},htmlSelectionStack:[],consoleMessageQueue:[],create:function(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FirebugChrome.create","creating chrome window")
  2242. }createChromeWindow()
  2243. },initialize:function(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FirebugChrome.initialize","initializing chrome window")
  2244. }if(Env.chrome.type=="frame"||Env.chrome.type=="div"){ChromeMini.create(Env.chrome)
  2245. }var chrome=Firebug.chrome=new Chrome(Env.chrome);
  2246. FirebugChrome.chromeMap[chrome.type]=chrome;
  2247. addGlobalEvent("keydown",onGlobalKeyDown);
  2248. if(Env.Options.enablePersistent&&chrome.type=="popup"){var frame=FirebugChrome.chromeMap.frame;
  2249. if(frame){frame.close()
  2250. }chrome.initialize()
  2251. }},clone:function(FBChrome){for(var name in FBChrome){var prop=FBChrome[name];
  2252. if(FBChrome.hasOwnProperty(name)&&!isFunction(prop)){this[name]=prop
  2253. }}}};
  2254. var createChromeWindow=function(options){options=extend(WindowDefaultOptions,options||{});
  2255. 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
  2256. }node.style.border="0";
  2257. node.style.visibility="hidden";
  2258. node.style.zIndex="2147483647";
  2259. node.style.position=noFixedPosition?"absolute":"fixed";
  2260. node.style.width="100%";
  2261. node.style.left="0";
  2262. node.style.bottom=noFixedPosition?"-1px":"0";
  2263. node.style.height=options.height+"px";
  2264. if(isFirefox){node.style.display="none"
  2265. }},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;}";
  2266. style.type="text/css";
  2267. if(style.styleSheet){style.styleSheet.cssText=rules
  2268. }else{style.appendChild(context.document.createTextNode(rules))
  2269. }document.getElementsByTagName("head")[0].appendChild(style);
  2270. node.className="fbBody";
  2271. node.style.overflow="hidden";
  2272. node.innerHTML=getChromeDivTemplate();
  2273. if(isIE){setTimeout(function(){node.firstChild.style.height="1px";
  2274. node.firstChild.style.position="static"
  2275. },0)
  2276. }formatNode(node);
  2277. body.appendChild(node);
  2278. chrome.window=window;
  2279. chrome.document=document;
  2280. onChromeLoad(chrome)
  2281. };
  2282. try{if(type=="div"){createChromeDiv();
  2283. return
  2284. }else{if(isChromeFrame){var node=chrome.node=createGlobalElement("iframe");
  2285. node.setAttribute("src",url);
  2286. node.setAttribute("frameBorder","0");
  2287. formatNode(node);
  2288. body.appendChild(node);
  2289. node.id=options.id
  2290. }else{var height=FirebugChrome.height||options.height,options=["true,top=",Math.max(screen.availHeight-height-61,0),",left=0,height=",height,",width=",screen.availWidth-10,",resizable"].join(""),node=chrome.node=context.window.open(url,"popup",options);
  2291. if(node){try{node.focus()
  2292. }catch(E){alert("Firebug Error: Firebug popup was blocked.");
  2293. return
  2294. }}else{alert("Firebug Error: Firebug popup was blocked.");
  2295. return
  2296. }}}if(!useLocalSkin){var tpl=getChromeTemplate(!isChromeFrame),doc=isChromeFrame?node.contentWindow.document:node.document;
  2297. doc.write(tpl);
  2298. doc.close()
  2299. }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;
  2300. chrome.document=win.document;
  2301. setTimeout(function(){onChromeLoad(chrome)
  2302. },0)
  2303. }else{setTimeout(waitForWindow,waitDelay)
  2304. }};
  2305. waitForWindow()
  2306. }catch(e){var msg=e.message||e;
  2307. if(/access/i.test(msg)){if(isChromeFrame){body.removeChild(node)
  2308. }else{if(type=="popup"){node.close()
  2309. }}createChromeDiv()
  2310. }else{alert("Firebug Error: Firebug GUI could not be created.")
  2311. }}};
  2312. var onChromeLoad=function onChromeLoad(chrome){Env.chrome=chrome;
  2313. if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Chrome onChromeLoad","chrome window loaded")
  2314. }if(Env.Options.enablePersistent){Env.FirebugChrome=FirebugChrome;
  2315. chrome.window.Firebug=chrome.window.Firebug||{};
  2316. chrome.window.Firebug.SharedEnv=Env;
  2317. if(Env.isDevelopmentMode){Env.browser.window.FBDev.loadChromeApplication(chrome)
  2318. }else{var doc=chrome.document;
  2319. var script=doc.createElement("script");
  2320. script.src=Env.Location.app+"#remote,persist";
  2321. doc.getElementsByTagName("head")[0].appendChild(script)
  2322. }}else{if(chrome.type=="frame"||chrome.type=="div"){setTimeout(function(){FBL.Firebug.initialize()
  2323. },0)
  2324. }else{if(chrome.type=="popup"){var oldChrome=FirebugChrome.chromeMap.frame;
  2325. var newChrome=new Chrome(chrome);
  2326. dispatch(newChrome.panelMap,"detach",[oldChrome,newChrome]);
  2327. if(oldChrome){oldChrome.close()
  2328. }newChrome.reattach(oldChrome,newChrome)
  2329. }}}};
  2330. var getChromeDivTemplate=function(){return FirebugChrome.Skin.HTML
  2331. };
  2332. var getChromeTemplate=function(isPopup){var tpl=FirebugChrome.Skin;
  2333. var r=[],i=-1;
  2334. r[++i]='<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">';
  2335. r[++i]="<html><head><title>";
  2336. r[++i]=Firebug.version;
  2337. r[++i]="</title><style>html,body{margin:0;padding:0;overflow:hidden;}";
  2338. r[++i]=tpl.CSS;
  2339. r[++i]="</style>";
  2340. r[++i]='</head><body class="fbBody'+(isPopup?" FirebugPopup":"")+'">';
  2341. r[++i]=tpl.HTML;
  2342. r[++i]="</body></html>";
  2343. return r.join("")
  2344. };
  2345. var Chrome=function Chrome(chrome){var type=chrome.type;
  2346. var Base=type=="frame"||type=="div"?ChromeFrameBase:ChromePopupBase;
  2347. append(this,Base);
  2348. append(this,chrome);
  2349. append(this,new Context(chrome.window));
  2350. FirebugChrome.chromeMap[type]=this;
  2351. Firebug.chrome=this;
  2352. Env.chrome=chrome.window;
  2353. this.commandLineVisible=false;
  2354. this.sidePanelVisible=false;
  2355. this.create();
  2356. return this
  2357. };
  2358. var ChromeBase={};
  2359. append(ChromeBase,Controller);
  2360. append(ChromeBase,PanelBar);
  2361. append(ChromeBase,{node:null,type:null,document:null,window:null,sidePanelVisible:false,commandLineVisible:false,largeCommandLineVisible:false,inspectButton:null,create:function(){PanelBar.create.call(this);
  2362. if(Firebug.Inspector){this.inspectButton=new Button({type:"toggle",element:$("fbChrome_btInspect"),owner:Firebug.Inspector,onPress:Firebug.Inspector.startInspecting,onUnpress:Firebug.Inspector.stopInspecting})
  2363. }},destroy:function(){if(Firebug.Inspector){this.inspectButton.destroy()
  2364. }PanelBar.destroy.call(this);
  2365. this.shutdown()
  2366. },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()
  2367. },toggleChrome:function(){Firebug.chrome.toggle()
  2368. },openPopup:function(){Firebug.chrome.toggle(true,true)
  2369. },toggleInspect:function(){Firebug.Inspector.toggleInspect()
  2370. },focusCommandLine:function(){Firebug.chrome.focusCommandLine()
  2371. },visitWebsite:function(){this.visit("http://getfirebug.com/lite.html")
  2372. },visitDiscussionGroup:function(){this.visit("http://groups.google.com/group/firebug")
  2373. },visitIssueTracker:function(){this.visit("http://code.google.com/p/fbug/issues/list")
  2374. },visit:function(url){window.open(url)
  2375. }});
  2376. var firebugOptionsMenu={id:"fbFirebugOptionsMenu",getItems:function(){var cookiesDisabled=!Firebug.saveCookies;
  2377. return[{label:"Save Options in Cookies",type:"checkbox",value:"saveCookies",checked:Firebug.saveCookies,command:"saveOptions"},"-",{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:"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}]
  2378. },onCheck:function(target,value,checked){Firebug.setPref(value,checked)
  2379. },saveOptions:function(target){var saveEnabled=target.getAttribute("checked");
  2380. if(!saveEnabled){this.restorePrefs()
  2381. }this.updateMenu(target);
  2382. return false
  2383. },restorePrefs:function(target){Firebug.restorePrefs();
  2384. if(Firebug.saveCookies){Firebug.savePrefs()
  2385. }else{Firebug.erasePrefs()
  2386. }if(target){this.updateMenu(target)
  2387. }return false
  2388. },updateMenu:function(target){var options=getElementsByClass(target.parentNode,"fbMenuOption");
  2389. var firstOption=options[0];
  2390. var enabled=Firebug.saveCookies;
  2391. if(enabled){Menu.check(firstOption)
  2392. }else{Menu.uncheck(firstOption)
  2393. }if(enabled){Menu.check(options[0])
  2394. }else{Menu.uncheck(options[0])
  2395. }for(var i=1,length=options.length;
  2396. i<length;
  2397. i++){var option=options[i];
  2398. var value=option.getAttribute("value");
  2399. var pref=Firebug[value];
  2400. if(pref){Menu.check(option)
  2401. }else{Menu.uncheck(option)
  2402. }if(enabled){Menu.enable(option)
  2403. }else{Menu.disable(option)
  2404. }}}};
  2405. Menu.register(firebugOptionsMenu);
  2406. var menu=firebugMenu;
  2407. var testMenuClick=function(event){cancelEvent(event,true);
  2408. var target=event.target||event.srcElement;
  2409. if(menu.isVisible){menu.hide()
  2410. }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};
  2411. menu.show(box.left+offsetLeft-offset.left,box.top+box.height-5-offset.top)
  2412. }return false
  2413. };
  2414. var iconButton=new IconButton({type:"toggle",element:$("fbFirebugButton"),onClick:testMenuClick});
  2415. iconButton.initialize()
  2416. },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")
  2417. }if(Firebug.Console){Firebug.Console.flush()
  2418. }if(Firebug.Trace){FBTrace.flush(Firebug.Trace)
  2419. }if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.chrome.initialize","initializing chrome application")
  2420. }Controller.initialize.call(this);
  2421. PanelBar.initialize.call(this);
  2422. fbTop=$("fbTop");
  2423. fbContent=$("fbContent");
  2424. fbContentStyle=fbContent.style;
  2425. fbBottom=$("fbBottom");
  2426. fbBtnInspect=$("fbBtnInspect");
  2427. fbToolbar=$("fbToolbar");
  2428. fbPanelBox1=$("fbPanelBox1");
  2429. fbPanelBox1Style=fbPanelBox1.style;
  2430. fbPanelBox2=$("fbPanelBox2");
  2431. fbPanelBox2Style=fbPanelBox2.style;
  2432. fbPanelBar2Box=$("fbPanelBar2Box");
  2433. fbPanelBar2BoxStyle=fbPanelBar2Box.style;
  2434. fbHSplitter=$("fbHSplitter");
  2435. fbVSplitter=$("fbVSplitter");
  2436. fbVSplitterStyle=fbVSplitter.style;
  2437. fbPanel1=$("fbPanel1");
  2438. fbPanel1Style=fbPanel1.style;
  2439. fbPanel2=$("fbPanel2");
  2440. fbPanel2Style=fbPanel2.style;
  2441. fbConsole=$("fbConsole");
  2442. fbConsoleStyle=fbConsole.style;
  2443. fbHTML=$("fbHTML");
  2444. fbCommandLine=$("fbCommandLine");
  2445. fbLargeCommandLine=$("fbLargeCommandLine");
  2446. fbLargeCommandButtons=$("fbLargeCommandButtons");
  2447. topHeight=fbTop.offsetHeight;
  2448. topPartialHeight=fbToolbar.offsetHeight;
  2449. disableTextSelection($("fbToolbar"));
  2450. disableTextSelection($("fbPanelBarBox"));
  2451. disableTextSelection($("fbPanelBar1"));
  2452. disableTextSelection($("fbPanelBar2"));
  2453. if(isIE6&&Firebug.Selector){var as=$$(".fbHover");
  2454. for(var i=0,a;
  2455. a=as[i];
  2456. i++){a.setAttribute("href","javascript:void(0)")
  2457. }}if(Firebug.Inspector){this.inspectButton.initialize()
  2458. }this.addController([$("fbLargeCommandLineIcon"),"click",this.showLargeCommandLine]);
  2459. var self=this;
  2460. setTimeout(function(){self.selectPanel(FirebugChrome.selectedPanelName);
  2461. if(FirebugChrome.selectedPanelName=="Console"&&Firebug.CommandLine){Firebug.chrome.focusCommandLine()
  2462. }},0);
  2463. var onPanelMouseDown=function onPanelMouseDown(event){var target=event.target||event.srcElement;
  2464. if(FBL.isLeftClick(event)){var editable=FBL.getAncestorByClass(target,"editable");
  2465. if(editable){Firebug.Editor.startEditing(editable);
  2466. FBL.cancelEvent(event)
  2467. }else{if(!hasClass(target,"textEditorInner")){Firebug.Editor.stopEditing()
  2468. }}}else{if(FBL.isMiddleClick(event)&&Firebug.getRepNode(target)){FBL.cancelEvent(event)
  2469. }}};
  2470. Firebug.getElementPanel=function(element){var panelNode=getAncestorByClass(element,"fbPanel");
  2471. var id=panelNode.id.substr(2);
  2472. var panel=Firebug.chrome.panelMap[id];
  2473. if(!panel){if(Firebug.chrome.selectedPanel.sidePanelBar){panel=Firebug.chrome.selectedPanel.sidePanelBar.panelMap[id]
  2474. }}return panel
  2475. };
  2476. var onKeyCodeListenersMap=[];
  2477. var onKeyCodeListen=function(event){for(var keyCode in onKeyCodeListenersMap){var listeners=onKeyCodeListenersMap[keyCode];
  2478. for(var i=0,listener;
  2479. listener=listeners[i];
  2480. i++){var filter=listener.filter||FBL.noKeyModifiers;
  2481. if(event.keyCode==keyCode&&(!filter||filter(event))){listener.listener();
  2482. FBL.cancelEvent(event,true);
  2483. return false
  2484. }}}};
  2485. addEvent(Firebug.chrome.document,"keydown",onKeyCodeListen);
  2486. Firebug.chrome.keyCodeListen=function(key,filter,listener,capture){var keyCode=KeyEvent["DOM_VK_"+key];
  2487. if(!onKeyCodeListenersMap[keyCode]){onKeyCodeListenersMap[keyCode]=[]
  2488. }onKeyCodeListenersMap[keyCode].push({filter:filter,listener:listener});
  2489. return keyCode
  2490. };
  2491. Firebug.chrome.keyIgnore=function(keyCode){onKeyCodeListenersMap[keyCode]=null;
  2492. delete onKeyCodeListenersMap[keyCode]
  2493. };
  2494. this.addController([fbPanel1,"mousedown",onPanelMouseDown],[fbPanel2,"mousedown",onPanelMouseDown]);
  2495. if(FBL.domplate){this.testMenu()
  2496. }},shutdown:function(){if(Firebug.Inspector){this.inspectButton.shutdown()
  2497. }restoreTextSelection($("fbToolbar"));
  2498. restoreTextSelection($("fbPanelBarBox"));
  2499. restoreTextSelection($("fbPanelBar1"));
  2500. restoreTextSelection($("fbPanelBar2"));
  2501. Controller.shutdown.call(this);
  2502. PanelBar.shutdown.call(this);
  2503. fbTop=null;
  2504. fbContent=null;
  2505. fbContentStyle=null;
  2506. fbBottom=null;
  2507. fbBtnInspect=null;
  2508. fbToolbar=null;
  2509. fbPanelBox1=null;
  2510. fbPanelBox1Style=null;
  2511. fbPanelBox2=null;
  2512. fbPanelBox2Style=null;
  2513. fbPanelBar2Box=null;
  2514. fbPanelBar2BoxStyle=null;
  2515. fbHSplitter=null;
  2516. fbVSplitter=null;
  2517. fbVSplitterStyle=null;
  2518. fbPanel1=null;
  2519. fbPanel1Style=null;
  2520. fbPanel2=null;
  2521. fbConsole=null;
  2522. fbConsoleStyle=null;
  2523. fbHTML=null;
  2524. fbCommandLine=null;
  2525. fbLargeCommandLine=null;
  2526. fbLargeCommandButtons=null;
  2527. topHeight=null;
  2528. topPartialHeight=null
  2529. },toggle:function(forceOpen,popup){if(popup){this.detach()
  2530. }else{if(isOpera&&Firebug.chrome.type=="popup"&&Firebug.chrome.node.closed){var frame=FirebugChrome.chromeMap.frame;
  2531. frame.reattach();
  2532. FirebugChrome.chromeMap.popup=null;
  2533. frame.open();
  2534. return
  2535. }if(Firebug.chrome.type=="popup"){return
  2536. }var shouldOpen=forceOpen||!FirebugChrome.isOpen;
  2537. if(shouldOpen){this.open()
  2538. }else{this.close()
  2539. }}},detach:function(){if(!FirebugChrome.chromeMap.popup){createChromeWindow({type:"popup"})
  2540. }},reattach:function(oldChrome,newChrome){Firebug.browser.window.Firebug=Firebug;
  2541. var newPanelMap=newChrome.panelMap;
  2542. var oldPanelMap=oldChrome.panelMap;
  2543. var panel;
  2544. for(var name in newPanelMap){panel=newPanelMap[name];
  2545. if(panel.options.innerHTMLSync){panel.panelNode.innerHTML=oldPanelMap[name].panelNode.innerHTML
  2546. }}Firebug.chrome=newChrome;
  2547. if(newChrome.type=="popup"){newChrome.initialize()
  2548. }else{FirebugChrome.selectedPanelName=oldChrome.selectedPanel.name
  2549. }dispatch(newPanelMap,"reattach",[oldChrome,newChrome])
  2550. },draw:function(){var size=this.getSize();
  2551. 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?FirebugChrome.sidePanelWidth:0,width=Math.max(size.width-sideWidthValue,0)+"px";
  2552. fbPanelBox1Style.height=height;
  2553. fbPanel1Style.height=height;
  2554. if(isIE||isOpera){fbVSplitterStyle.height=Math.max(y-topPartialHeight-commandLineHeight,0)+"px"
  2555. }fbPanelBox1Style.width=width;
  2556. fbPanel1Style.width=width;
  2557. if(Firebug.chrome.sidePanelVisible){sideWidthValue=Math.max(sideWidthValue-6,0);
  2558. var sideWidth=sideWidthValue+"px";
  2559. fbPanelBox2Style.width=sideWidth;
  2560. fbVSplitterStyle.right=sideWidth;
  2561. if(Firebug.chrome.largeCommandLineVisible){fbLargeCommandLine=$("fbLargeCommandLine");
  2562. fbLargeCommandLine.style.height=heightValue-4+"px";
  2563. fbLargeCommandLine.style.width=sideWidthValue-2+"px";
  2564. fbLargeCommandButtons=$("fbLargeCommandButtons");
  2565. fbLargeCommandButtons.style.width=sideWidth
  2566. }else{fbPanel2Style.height=height;
  2567. fbPanel2Style.width=sideWidth;
  2568. fbPanelBar2BoxStyle.width=sideWidth
  2569. }}},getSize:function(){return this.type=="div"?{height:this.node.offsetHeight,width:this.node.offsetWidth}:this.getWindowSize()
  2570. },resize:function(){var self=this;
  2571. setTimeout(function(){self.draw();
  2572. if(noFixedPosition&&(self.type=="frame"||self.type=="div")){self.fixIEPosition()
  2573. }},0)
  2574. },layout:function(panel){if(FBTrace.DBG_CHROME){FBTrace.sysout("Chrome.layout","")
  2575. }var options=panel.options;
  2576. changeCommandLineVisibility(options.hasCommandLine);
  2577. changeSidePanelVisibility(panel.hasSidePanel);
  2578. Firebug.chrome.draw()
  2579. },showLargeCommandLine:function(hideToggleIcon){var chrome=Firebug.chrome;
  2580. if(!chrome.largeCommandLineVisible){chrome.largeCommandLineVisible=true;
  2581. if(chrome.selectedPanel.options.hasCommandLine){if(Firebug.CommandLine){Firebug.CommandLine.blur()
  2582. }changeCommandLineVisibility(false)
  2583. }changeSidePanelVisibility(true);
  2584. fbLargeCommandLine.style.display="block";
  2585. fbLargeCommandButtons.style.display="block";
  2586. fbPanel2Style.display="none";
  2587. fbPanelBar2BoxStyle.display="none";
  2588. chrome.draw();
  2589. fbLargeCommandLine.focus();
  2590. if(Firebug.CommandLine){Firebug.CommandLine.setMultiLine(true)
  2591. }}},hideLargeCommandLine:function(){if(Firebug.chrome.largeCommandLineVisible){Firebug.chrome.largeCommandLineVisible=false;
  2592. if(Firebug.CommandLine){Firebug.CommandLine.setMultiLine(false)
  2593. }fbLargeCommandLine.blur();
  2594. fbPanel2Style.display="block";
  2595. fbPanelBar2BoxStyle.display="block";
  2596. fbLargeCommandLine.style.display="none";
  2597. fbLargeCommandButtons.style.display="none";
  2598. changeSidePanelVisibility(false);
  2599. if(Firebug.chrome.selectedPanel.options.hasCommandLine){changeCommandLineVisibility(true)
  2600. }Firebug.chrome.draw()
  2601. }},focusCommandLine:function(){var selectedPanelName=this.selectedPanel.name,panelToSelect;
  2602. if(focusCommandLineState==0||selectedPanelName!="Console"){focusCommandLineState=0;
  2603. lastFocusedPanelName=selectedPanelName;
  2604. panelToSelect="Console"
  2605. }if(focusCommandLineState==1){panelToSelect=lastFocusedPanelName
  2606. }this.selectPanel(panelToSelect);
  2607. try{if(Firebug.CommandLine){if(panelToSelect=="Console"){Firebug.CommandLine.focus()
  2608. }else{Firebug.CommandLine.blur()
  2609. }}}catch(e){}focusCommandLineState=++focusCommandLineState%2
  2610. }});
  2611. var ChromeFrameBase=extend(ChromeBase,{create:function(){ChromeBase.create.call(this);
  2612. if(isFirefox){this.node.style.display="block"
  2613. }if(Env.Options.startInNewWindow){this.close();
  2614. this.toggle(true,true);
  2615. return
  2616. }if(Env.Options.startOpened){this.open()
  2617. }else{this.close()
  2618. }},destroy:function(){removeGlobalEvent("keydown",onGlobalKeyDown);
  2619. ChromeBase.destroy.call(this);
  2620. this.document=null;
  2621. delete this.document;
  2622. this.window=null;
  2623. delete this.window;
  2624. this.node.parentNode.removeChild(this.node);
  2625. this.node=null;
  2626. delete this.node
  2627. },initialize:function(){ChromeBase.initialize.call(this);
  2628. this.addController([Firebug.browser.window,"resize",this.resize],[$("fbWindow_btClose"),"click",this.close],[$("fbWindow_btDetach"),"click",this.detach],[$("fbWindow_btDeactivate"),"click",this.deactivate]);
  2629. if(!Env.Options.enablePersistent){this.addController([Firebug.browser.window,"unload",Firebug.shutdown])
  2630. }if(noFixedPosition){this.addController([Firebug.browser.window,"scroll",this.fixIEPosition])
  2631. }fbVSplitter.onmousedown=onVSplitterMouseDown;
  2632. fbHSplitter.onmousedown=onHSplitterMouseDown;
  2633. this.isInitialized=true
  2634. },shutdown:function(){fbVSplitter.onmousedown=null;
  2635. fbHSplitter.onmousedown=null;
  2636. ChromeBase.shutdown.apply(this);
  2637. this.isInitialized=false
  2638. },reattach:function(){var frame=FirebugChrome.chromeMap.frame;
  2639. ChromeBase.reattach(FirebugChrome.chromeMap.popup,this)
  2640. },open:function(){if(!FirebugChrome.isOpen){FirebugChrome.isOpen=true;
  2641. if(Env.isChromeExtension){localStorage.setItem("Firebug","1,1")
  2642. }var node=this.node;
  2643. node.style.visibility="hidden";
  2644. if(Firebug.showIconWhenHidden){if(ChromeMini.isInitialized){ChromeMini.shutdown()
  2645. }}else{node.style.display="block"
  2646. }var main=$("fbChrome");
  2647. main.style.display="";
  2648. var self=this;
  2649. setTimeout(function(){node.style.visibility="visible";
  2650. self.initialize();
  2651. if(noFixedPosition){self.fixIEPosition()
  2652. }self.draw()
  2653. },10)
  2654. }},close:function(){if(FirebugChrome.isOpen||!this.isInitialized){if(this.isInitialized){this.shutdown()
  2655. }FirebugChrome.isOpen=false;
  2656. if(Env.isChromeExtension){localStorage.setItem("Firebug","1,0")
  2657. }var node=this.node;
  2658. if(Firebug.showIconWhenHidden){node.style.visibility="hidden";
  2659. var main=$("fbChrome",FirebugChrome.chromeMap.frame.document);
  2660. main.style.display="none";
  2661. ChromeMini.initialize();
  2662. node.style.visibility="visible"
  2663. }else{node.style.display="none"
  2664. }}},deactivate:function(){if(Env.isChromeExtension){localStorage.removeItem("Firebug");
  2665. Firebug.GoogleChrome.dispatch("FB_deactivate");
  2666. Firebug.chrome.close()
  2667. }else{Firebug.shutdown()
  2668. }},fixIEPosition:function(){var doc=this.document;
  2669. var offset=isIE?doc.body.clientTop||doc.documentElement.clientTop:0;
  2670. var size=Firebug.browser.getWindowSize();
  2671. var scroll=Firebug.browser.getWindowScrollPosition();
  2672. var maxHeight=size.height;
  2673. var height=this.node.offsetHeight;
  2674. var bodyStyle=doc.body.currentStyle;
  2675. this.node.style.top=maxHeight-height+scroll.top+"px";
  2676. if((this.type=="frame"||this.type=="div")&&(bodyStyle.marginLeft||bodyStyle.marginRight)){this.node.style.width=size.width+"px"
  2677. }if(fbVSplitterStyle){fbVSplitterStyle.right=FirebugChrome.sidePanelWidth+"px"
  2678. }this.draw()
  2679. }});
  2680. var ChromeMini=extend(Controller,{create:function(chrome){append(this,chrome);
  2681. this.type="mini"
  2682. },initialize:function(){Controller.initialize.apply(this);
  2683. var doc=FirebugChrome.chromeMap.frame.document;
  2684. var mini=$("fbMiniChrome",doc);
  2685. mini.style.display="block";
  2686. var miniIcon=$("fbMiniIcon",doc);
  2687. var width=miniIcon.offsetWidth+10;
  2688. miniIcon.title="Open "+Firebug.version;
  2689. var errors=$("fbMiniErrors",doc);
  2690. if(errors.offsetWidth){width+=errors.offsetWidth+10
  2691. }var node=this.node;
  2692. node.style.height="27px";
  2693. node.style.width=width+"px";
  2694. node.style.left="";
  2695. node.style.right=0;
  2696. if(this.node.nodeName.toLowerCase()=="iframe"){node.setAttribute("allowTransparency","true");
  2697. this.document.body.style.backgroundColor="transparent"
  2698. }else{node.style.background="transparent"
  2699. }if(noFixedPosition){this.fixIEPosition()
  2700. }this.addController([$("fbMiniIcon",doc),"click",onMiniIconClick]);
  2701. if(noFixedPosition){this.addController([Firebug.browser.window,"scroll",this.fixIEPosition])
  2702. }this.isInitialized=true
  2703. },shutdown:function(){var node=this.node;
  2704. node.style.height=FirebugChrome.height+"px";
  2705. node.style.width="100%";
  2706. node.style.left=0;
  2707. node.style.right="";
  2708. if(this.node.nodeName.toLowerCase()=="iframe"){node.setAttribute("allowTransparency","false");
  2709. this.document.body.style.backgroundColor="#fff"
  2710. }else{node.style.background="#fff"
  2711. }if(noFixedPosition){this.fixIEPosition()
  2712. }var doc=FirebugChrome.chromeMap.frame.document;
  2713. var mini=$("fbMiniChrome",doc);
  2714. mini.style.display="none";
  2715. Controller.shutdown.apply(this);
  2716. this.isInitialized=false
  2717. },draw:function(){},fixIEPosition:ChromeFrameBase.fixIEPosition});
  2718. var ChromePopupBase=extend(ChromeBase,{initialize:function(){setClass(this.document.body,"FirebugPopup");
  2719. ChromeBase.initialize.call(this);
  2720. this.addController([Firebug.chrome.window,"resize",this.resize],[Firebug.chrome.window,"unload",this.destroy]);
  2721. if(Env.Options.enablePersistent){this.persist=bind(this.persist,this);
  2722. addEvent(Firebug.browser.window,"unload",this.persist)
  2723. }else{this.addController([Firebug.browser.window,"unload",this.close])
  2724. }fbVSplitter.onmousedown=onVSplitterMouseDown
  2725. },destroy:function(){var frame=FirebugChrome.chromeMap.frame;
  2726. if(frame){dispatch(frame.panelMap,"detach",[this,frame]);
  2727. frame.reattach(this,frame)
  2728. }if(Env.Options.enablePersistent){removeEvent(Firebug.browser.window,"unload",this.persist)
  2729. }ChromeBase.destroy.apply(this);
  2730. FirebugChrome.chromeMap.popup=null;
  2731. this.node.close()
  2732. },persist:function(){persistTimeStart=new Date().getTime();
  2733. removeEvent(Firebug.browser.window,"unload",this.persist);
  2734. Firebug.Inspector.destroy();
  2735. Firebug.browser.window.FirebugOldBrowser=true;
  2736. var persistTimeStart=new Date().getTime();
  2737. var waitMainWindow=function(){var doc,head;
  2738. try{if(window.opener&&!window.opener.FirebugOldBrowser&&(doc=window.opener.document)){try{if(Env.isDebugMode){window.FBL=FBL
  2739. }window.Firebug=Firebug;
  2740. window.opener.Firebug=Firebug;
  2741. Env.browser=window.opener;
  2742. Firebug.browser=Firebug.context=new Context(Env.browser);
  2743. registerConsole();
  2744. var persistDelay=new Date().getTime()-persistTimeStart;
  2745. var chrome=Firebug.chrome;
  2746. addEvent(Firebug.browser.window,"unload",chrome.persist);
  2747. FBL.cacheDocument();
  2748. Firebug.Inspector.create();
  2749. var htmlPanel=chrome.getPanel("HTML");
  2750. htmlPanel.createUI();
  2751. Firebug.Console.logFormatted(["Firebug could not capture console calls during "+persistDelay+"ms"],Firebug.context,"info")
  2752. }catch(pE){alert("persist error: "+(pE.message||pE))
  2753. }}else{window.setTimeout(waitMainWindow,0)
  2754. }}catch(E){window.close()
  2755. }};
  2756. waitMainWindow()
  2757. },close:function(){this.destroy()
  2758. }});
  2759. var changeCommandLineVisibility=function changeCommandLineVisibility(visibility){var last=Firebug.chrome.commandLineVisible;
  2760. var visible=Firebug.chrome.commandLineVisible=typeof visibility=="boolean"?visibility:!Firebug.chrome.commandLineVisible;
  2761. if(visible!=last){if(visible){fbBottom.className="";
  2762. if(Firebug.CommandLine){Firebug.CommandLine.activate()
  2763. }}else{if(Firebug.CommandLine){Firebug.CommandLine.deactivate()
  2764. }fbBottom.className="hide"
  2765. }}};
  2766. var changeSidePanelVisibility=function changeSidePanelVisibility(visibility){var last=Firebug.chrome.sidePanelVisible;
  2767. Firebug.chrome.sidePanelVisible=typeof visibility=="boolean"?visibility:!Firebug.chrome.sidePanelVisible;
  2768. if(Firebug.chrome.sidePanelVisible!=last){fbPanelBox2.className=Firebug.chrome.sidePanelVisible?"":"hide";
  2769. fbPanelBar2Box.className=Firebug.chrome.sidePanelVisible?"":"hide"
  2770. }};
  2771. var onGlobalKeyDown=function onGlobalKeyDown(event){var keyCode=event.keyCode;
  2772. var shiftKey=event.shiftKey;
  2773. var ctrlKey=event.ctrlKey;
  2774. if(keyCode==123&&(!isFirefox&&!shiftKey||shiftKey&&isFirefox)){Firebug.chrome.toggle(false,ctrlKey);
  2775. cancelEvent(event,true);
  2776. if(Env.isChromeExtension){Firebug.GoogleChrome.dispatch("FB_enableIcon")
  2777. }}else{if(keyCode==67&&ctrlKey&&shiftKey){Firebug.Inspector.toggleInspect();
  2778. cancelEvent(event,true)
  2779. }else{if(keyCode==76&&ctrlKey&&shiftKey){Firebug.chrome.focusCommandLine();
  2780. cancelEvent(event,true)
  2781. }}}};
  2782. var onMiniIconClick=function onMiniIconClick(event){Firebug.chrome.toggle(false,event.ctrlKey);
  2783. cancelEvent(event,true)
  2784. };
  2785. var onHSplitterMouseDown=function onHSplitterMouseDown(event){addGlobalEvent("mousemove",onHSplitterMouseMove);
  2786. addGlobalEvent("mouseup",onHSplitterMouseUp);
  2787. if(isIE){addEvent(Firebug.browser.document.documentElement,"mouseleave",onHSplitterMouseUp)
  2788. }fbHSplitter.className="fbOnMovingHSplitter";
  2789. return false
  2790. };
  2791. var onHSplitterMouseMove=function onHSplitterMouseMove(event){cancelEvent(event,true);
  2792. var clientY=event.clientY;
  2793. var win=isIE?event.srcElement.ownerDocument.parentWindow:event.target.ownerDocument&&event.target.ownerDocument.defaultView;
  2794. if(!win){return
  2795. }if(win!=win.parent){var frameElement=win.frameElement;
  2796. if(frameElement){var framePos=Firebug.browser.getElementPosition(frameElement).top;
  2797. clientY+=framePos;
  2798. if(frameElement.style.position!="fixed"){clientY-=Firebug.browser.getWindowScrollPosition().top
  2799. }}}if(isOpera&&isQuiksMode&&win.frameElement.id=="FirebugUI"){clientY=Firebug.browser.getWindowSize().height-win.frameElement.offsetHeight+clientY
  2800. }onHSplitterMouseMoveBuffer=clientY;
  2801. if(new Date().getTime()-lastHSplitterMouseMove>chromeRedrawSkipRate){lastHSplitterMouseMove=new Date().getTime();
  2802. handleHSplitterMouseMove()
  2803. }else{if(!onHSplitterMouseMoveTimer){onHSplitterMouseMoveTimer=setTimeout(handleHSplitterMouseMove,chromeRedrawSkipRate)
  2804. }}cancelEvent(event,true);
  2805. return false
  2806. };
  2807. var handleHSplitterMouseMove=function(){if(onHSplitterMouseMoveTimer){clearTimeout(onHSplitterMouseMoveTimer);
  2808. onHSplitterMouseMoveTimer=null
  2809. }var clientY=onHSplitterMouseMoveBuffer;
  2810. var windowSize=Firebug.browser.getWindowSize();
  2811. var scrollSize=Firebug.browser.getWindowScrollSize();
  2812. var commandLineHeight=Firebug.chrome.commandLineVisible?fbCommandLine.offsetHeight:0;
  2813. var fixedHeight=topHeight+commandLineHeight;
  2814. var chromeNode=Firebug.chrome.node;
  2815. var scrollbarSize=!isIE&&(scrollSize.width>windowSize.width)?17:0;
  2816. var height=windowSize.height;
  2817. var chromeHeight=Math.max(height-clientY+5-scrollbarSize,fixedHeight);
  2818. chromeHeight=Math.min(chromeHeight,windowSize.height-scrollbarSize);
  2819. FirebugChrome.height=chromeHeight;
  2820. chromeNode.style.height=chromeHeight+"px";
  2821. if(noFixedPosition){Firebug.chrome.fixIEPosition()
  2822. }Firebug.chrome.draw()
  2823. };
  2824. var onHSplitterMouseUp=function onHSplitterMouseUp(event){removeGlobalEvent("mousemove",onHSplitterMouseMove);
  2825. removeGlobalEvent("mouseup",onHSplitterMouseUp);
  2826. if(isIE){removeEvent(Firebug.browser.document.documentElement,"mouseleave",onHSplitterMouseUp)
  2827. }fbHSplitter.className="";
  2828. Firebug.chrome.draw();
  2829. return false
  2830. };
  2831. var onVSplitterMouseDown=function onVSplitterMouseDown(event){addGlobalEvent("mousemove",onVSplitterMouseMove);
  2832. addGlobalEvent("mouseup",onVSplitterMouseUp);
  2833. return false
  2834. };
  2835. var onVSplitterMouseMove=function onVSplitterMouseMove(event){if(new Date().getTime()-lastVSplitterMouseMove>chromeRedrawSkipRate){var target=event.target||event.srcElement;
  2836. if(target&&target.ownerDocument){var clientX=event.clientX;
  2837. var win=document.all?event.srcElement.ownerDocument.parentWindow:event.target.ownerDocument.defaultView;
  2838. if(win!=win.parent){clientX+=win.frameElement?win.frameElement.offsetLeft:0
  2839. }var size=Firebug.chrome.getSize();
  2840. var x=Math.max(size.width-clientX+3,6);
  2841. FirebugChrome.sidePanelWidth=x;
  2842. Firebug.chrome.draw()
  2843. }lastVSplitterMouseMove=new Date().getTime()
  2844. }cancelEvent(event,true);
  2845. return false
  2846. };
  2847. var onVSplitterMouseUp=function onVSplitterMouseUp(event){removeGlobalEvent("mousemove",onVSplitterMouseMove);
  2848. removeGlobalEvent("mouseup",onVSplitterMouseUp);
  2849. Firebug.chrome.draw()
  2850. }
  2851. }});
  2852. FBL.ns(function(){with(FBL){Firebug.Lite={}
  2853. }});
  2854. FBL.ns(function(){with(FBL){Firebug.Lite.Browser=function(window){this.contentWindow=window;
  2855. this.contentDocument=window.document;
  2856. this.currentURI={spec:window.location.href}
  2857. };
  2858. Firebug.Lite.Browser.prototype={toString:function(){return"Firebug.Lite.Browser"
  2859. }}
  2860. }});
  2861. FBL.ns(function(){with(FBL){Firebug.Lite.Cache={ID:"firebug"+new Date().getTime()};
  2862. var cacheUID=0;
  2863. var createCache=function(){var map={};
  2864. var CID=Firebug.Lite.Cache.ID;
  2865. var supportsDeleteExpando=!document.all;
  2866. var cacheFunction=function(element){return cacheAPI.set(element)
  2867. };
  2868. var cacheAPI={get:function(key){return map.hasOwnProperty(key)?map[key]:null
  2869. },set:function(element){var id=element[CID];
  2870. if(!id){id=++cacheUID;
  2871. element[CID]=id
  2872. }if(!map.hasOwnProperty(id)){map[id]=element
  2873. }return id
  2874. },unset:function(element){var id=element[CID];
  2875. if(supportsDeleteExpando){delete element[CID]
  2876. }else{if(element.removeAttribute){element.removeAttribute(CID)
  2877. }}delete map[id]
  2878. },key:function(element){return element[CID]
  2879. },has:function(element){return map.hasOwnProperty(element[CID])
  2880. },clear:function(){for(var id in map){var element=map[id];
  2881. cacheAPI.unset(element)
  2882. }}};
  2883. FBL.append(cacheFunction,cacheAPI);
  2884. return cacheFunction
  2885. };
  2886. Firebug.Lite.Cache.StyleSheet=createCache();
  2887. Firebug.Lite.Cache.Element=createCache()
  2888. }});
  2889. FBL.ns(function(){with(FBL){Firebug.Lite.Proxy={_callbacks:{},load:function(url){var resourceDomain=getDomain(url);
  2890. var isLocalResource=!resourceDomain||resourceDomain==Firebug.context.window.location.host;
  2891. return isLocalResource?fetchResource(url):fetchProxyResource(url)
  2892. },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;
  2893. Firebug.Lite.Proxy._callbacks[uid]=function(data){if(callback){callback(data)
  2894. }script.parentNode.removeChild(script);
  2895. delete Firebug.Lite.Proxy._callbacks[uid]
  2896. };
  2897. script.src=jsonpURL;
  2898. if(doc.documentElement){doc.documentElement.appendChild(script)
  2899. }},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";
  2900. this.loadJSONP(yql,function(data){var source=data.results[0];
  2901. var match=/<body>\s+<p>([\s\S]+)<\/p>\s+<\/body>$/.exec(source);
  2902. if(match){source=match[1]
  2903. }console.log(source)
  2904. })
  2905. }};
  2906. var fetchResource=function(url){var xhr=FBL.Ajax.getXHRObject();
  2907. xhr.open("get",url,false);
  2908. xhr.send();
  2909. return xhr.responseText
  2910. };
  2911. var fetchProxyResource=function(url){var proxyURL=Env.Location.baseDir+"plugin/proxy/proxy.php?url="+encodeURIComponent(url);
  2912. var response=fetchResource(proxyURL);
  2913. try{var data=eval("("+response+")")
  2914. }catch(E){return"ERROR: Firebug Lite Proxy plugin returned an invalid response."
  2915. }return data?data.contents:""
  2916. }
  2917. }});
  2918. FBL.ns(function(){with(FBL){Firebug.Lite.Script=function(window){this.fileName=null;
  2919. this.isValid=null;
  2920. this.baseLineNumber=null;
  2921. this.lineExtent=null;
  2922. this.tag=null;
  2923. this.functionName=null;
  2924. this.functionSource=null
  2925. };
  2926. Firebug.Lite.Script.prototype={isLineExecutable:function(){},pcToLine:function(){},lineToPc:function(){},toString:function(){return"Firebug.Lite.Script"
  2927. }}
  2928. }});
  2929. FBL.ns(function(){with(FBL){Firebug.Lite.Style={}
  2930. }});
  2931. FBL.ns(function(){with(FBL){var chunker=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,done=0,toString=Object.prototype.toString,hasDuplicate=false,baseHasDuplicate=true;
  2932. [0,0].sort(function(){baseHasDuplicate=false;
  2933. return 0
  2934. });
  2935. var Sizzle=function(selector,context,results,seed){results=results||[];
  2936. var origContext=context=context||document;
  2937. if(context.nodeType!==1&&context.nodeType!==9){return[]
  2938. }if(!selector||typeof selector!=="string"){return results
  2939. }var parts=[],m,set,checkSet,check,mode,extra,prune=true,contextXML=isXML(context),soFar=selector;
  2940. while((chunker.exec(""),m=chunker.exec(soFar))!==null){soFar=m[3];
  2941. parts.push(m[1]);
  2942. if(m[2]){extra=m[3];
  2943. break
  2944. }}if(parts.length>1&&origPOS.exec(selector)){if(parts.length===2&&Expr.relative[parts[0]]){set=posProcess(parts[0]+parts[1],context)
  2945. }else{set=Expr.relative[parts[0]]?[context]:Sizzle(parts.shift(),context);
  2946. while(parts.length){selector=parts.shift();
  2947. if(Expr.relative[selector]){selector+=parts.shift()
  2948. }set=posProcess(selector,set)
  2949. }}}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);
  2950. context=ret.expr?Sizzle.filter(ret.expr,ret.set)[0]:ret.set[0]
  2951. }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);
  2952. set=ret.expr?Sizzle.filter(ret.expr,ret.set):ret.set;
  2953. if(parts.length>0){checkSet=makeArray(set)
  2954. }else{prune=false
  2955. }while(parts.length){var cur=parts.pop(),pop=cur;
  2956. if(!Expr.relative[cur]){cur=""
  2957. }else{pop=parts.pop()
  2958. }if(pop==null){pop=context
  2959. }Expr.relative[cur](checkSet,pop,contextXML)
  2960. }}else{checkSet=parts=[]
  2961. }}if(!checkSet){checkSet=set
  2962. }if(!checkSet){throw"Syntax error, unrecognized expression: "+(cur||selector)
  2963. }if(toString.call(checkSet)==="[object Array]"){if(!prune){results.push.apply(results,checkSet)
  2964. }else{if(context&&context.nodeType===1){for(var i=0;
  2965. checkSet[i]!=null;
  2966. i++){if(checkSet[i]&&(checkSet[i]===true||checkSet[i].nodeType===1&&contains(context,checkSet[i]))){results.push(set[i])
  2967. }}}else{for(var i=0;
  2968. checkSet[i]!=null;
  2969. i++){if(checkSet[i]&&checkSet[i].nodeType===1){results.push(set[i])
  2970. }}}}}else{makeArray(checkSet,results)
  2971. }if(extra){Sizzle(extra,origContext,results,seed);
  2972. Sizzle.uniqueSort(results)
  2973. }return results
  2974. };
  2975. Sizzle.uniqueSort=function(results){if(sortOrder){hasDuplicate=baseHasDuplicate;
  2976. results.sort(sortOrder);
  2977. if(hasDuplicate){for(var i=1;
  2978. i<results.length;
  2979. i++){if(results[i]===results[i-1]){results.splice(i--,1)
  2980. }}}}return results
  2981. };
  2982. Sizzle.matches=function(expr,set){return Sizzle(expr,null,null,set)
  2983. };
  2984. Sizzle.find=function(expr,context,isXML){var set,match;
  2985. if(!expr){return[]
  2986. }for(var i=0,l=Expr.order.length;
  2987. i<l;
  2988. i++){var type=Expr.order[i],match;
  2989. if((match=Expr.leftMatch[type].exec(expr))){var left=match[1];
  2990. match.splice(1,1);
  2991. if(left.substr(left.length-1)!=="\\"){match[1]=(match[1]||"").replace(/\\/g,"");
  2992. set=Expr.find[type](match,context,isXML);
  2993. if(set!=null){expr=expr.replace(Expr.match[type],"");
  2994. break
  2995. }}}}if(!set){set=context.getElementsByTagName("*")
  2996. }return{set:set,expr:expr}
  2997. };
  2998. Sizzle.filter=function(expr,set,inplace,not){var old=expr,result=[],curLoop=set,match,anyFound,isXMLFilter=set&&set[0]&&isXML(set[0]);
  2999. 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;
  3000. anyFound=false;
  3001. if(curLoop==result){result=[]
  3002. }if(Expr.preFilter[type]){match=Expr.preFilter[type](match,curLoop,inplace,result,not,isXMLFilter);
  3003. if(!match){anyFound=found=true
  3004. }else{if(match===true){continue
  3005. }}}if(match){for(var i=0;
  3006. (item=curLoop[i])!=null;
  3007. i++){if(item){found=filter(item,match,i,curLoop);
  3008. var pass=not^!!found;
  3009. if(inplace&&found!=null){if(pass){anyFound=true
  3010. }else{curLoop[i]=false
  3011. }}else{if(pass){result.push(item);
  3012. anyFound=true
  3013. }}}}}if(found!==undefined){if(!inplace){curLoop=result
  3014. }expr=expr.replace(Expr.match[type],"");
  3015. if(!anyFound){return[]
  3016. }break
  3017. }}}if(expr==old){if(anyFound==null){throw"Syntax error, unrecognized expression: "+expr
  3018. }else{break
  3019. }}old=expr
  3020. }return curLoop
  3021. };
  3022. 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")
  3023. }},relative:{"+":function(checkSet,part,isXML){var isPartStr=typeof part==="string",isTag=isPartStr&&!/\W/.test(part),isPartStrNotTag=isPartStr&&!isTag;
  3024. if(isTag&&!isXML){part=part.toUpperCase()
  3025. }for(var i=0,l=checkSet.length,elem;
  3026. i<l;
  3027. i++){if((elem=checkSet[i])){while((elem=elem.previousSibling)&&elem.nodeType!==1){}checkSet[i]=isPartStrNotTag||elem&&elem.nodeName===part?elem||false:elem===part
  3028. }}if(isPartStrNotTag){Sizzle.filter(part,checkSet,true)
  3029. }},">":function(checkSet,part,isXML){var isPartStr=typeof part==="string";
  3030. if(isPartStr&&!/\W/.test(part)){part=isXML?part:part.toUpperCase();
  3031. for(var i=0,l=checkSet.length;
  3032. i<l;
  3033. i++){var elem=checkSet[i];
  3034. if(elem){var parent=elem.parentNode;
  3035. checkSet[i]=parent.nodeName===part?parent:false
  3036. }}}else{for(var i=0,l=checkSet.length;
  3037. i<l;
  3038. i++){var elem=checkSet[i];
  3039. if(elem){checkSet[i]=isPartStr?elem.parentNode:elem.parentNode===part
  3040. }}if(isPartStr){Sizzle.filter(part,checkSet,true)
  3041. }}},"":function(checkSet,part,isXML){var doneName=done++,checkFn=dirCheck;
  3042. if(!/\W/.test(part)){var nodeCheck=part=isXML?part:part.toUpperCase();
  3043. checkFn=dirNodeCheck
  3044. }checkFn("parentNode",part,doneName,checkSet,nodeCheck,isXML)
  3045. },"~":function(checkSet,part,isXML){var doneName=done++,checkFn=dirCheck;
  3046. if(typeof part==="string"&&!/\W/.test(part)){var nodeCheck=part=isXML?part:part.toUpperCase();
  3047. checkFn=dirNodeCheck
  3048. }checkFn("previousSibling",part,doneName,checkSet,nodeCheck,isXML)
  3049. }},find:{ID:function(match,context,isXML){if(typeof context.getElementById!=="undefined"&&!isXML){var m=context.getElementById(match[1]);
  3050. return m?[m]:[]
  3051. }},NAME:function(match,context,isXML){if(typeof context.getElementsByName!=="undefined"){var ret=[],results=context.getElementsByName(match[1]);
  3052. for(var i=0,l=results.length;
  3053. i<l;
  3054. i++){if(results[i].getAttribute("name")===match[1]){ret.push(results[i])
  3055. }}return ret.length===0?null:ret
  3056. }},TAG:function(match,context){return context.getElementsByTagName(match[1])
  3057. }},preFilter:{CLASS:function(match,curLoop,inplace,result,not,isXML){match=" "+match[1].replace(/\\/g,"")+" ";
  3058. if(isXML){return match
  3059. }for(var i=0,elem;
  3060. (elem=curLoop[i])!=null;
  3061. i++){if(elem){if(not^(elem.className&&(" "+elem.className+" ").indexOf(match)>=0)){if(!inplace){result.push(elem)
  3062. }}else{if(inplace){curLoop[i]=false
  3063. }}}}return false
  3064. },ID:function(match){return match[1].replace(/\\/g,"")
  3065. },TAG:function(match,curLoop){for(var i=0;
  3066. curLoop[i]===false;
  3067. i++){}return curLoop[i]&&isXML(curLoop[i])?match[1]:match[1].toUpperCase()
  3068. },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]);
  3069. match[2]=(test[1]+(test[2]||1))-0;
  3070. match[3]=test[3]-0
  3071. }match[0]=done++;
  3072. return match
  3073. },ATTR:function(match,curLoop,inplace,result,not,isXML){var name=match[1].replace(/\\/g,"");
  3074. if(!isXML&&Expr.attrMap[name]){match[1]=Expr.attrMap[name]
  3075. }if(match[2]==="~="){match[4]=" "+match[4]+" "
  3076. }return match
  3077. },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)
  3078. }else{var ret=Sizzle.filter(match[3],curLoop,inplace,true^not);
  3079. if(!inplace){result.push.apply(result,ret)
  3080. }return false
  3081. }}else{if(Expr.match.POS.test(match[0])||Expr.match.CHILD.test(match[0])){return true
  3082. }}return match
  3083. },POS:function(match){match.unshift(true);
  3084. return match
  3085. }},filters:{enabled:function(elem){return elem.disabled===false&&elem.type!=="hidden"
  3086. },disabled:function(elem){return elem.disabled===true
  3087. },checked:function(elem){return elem.checked===true
  3088. },selected:function(elem){elem.parentNode.selectedIndex;
  3089. return elem.selected===true
  3090. },parent:function(elem){return !!elem.firstChild
  3091. },empty:function(elem){return !elem.firstChild
  3092. },has:function(elem,i,match){return !!Sizzle(match[3],elem).length
  3093. },header:function(elem){return/h\d/i.test(elem.nodeName)
  3094. },text:function(elem){return"text"===elem.type
  3095. },radio:function(elem){return"radio"===elem.type
  3096. },checkbox:function(elem){return"checkbox"===elem.type
  3097. },file:function(elem){return"file"===elem.type
  3098. },password:function(elem){return"password"===elem.type
  3099. },submit:function(elem){return"submit"===elem.type
  3100. },image:function(elem){return"image"===elem.type
  3101. },reset:function(elem){return"reset"===elem.type
  3102. },button:function(elem){return"button"===elem.type||elem.nodeName.toUpperCase()==="BUTTON"
  3103. },input:function(elem){return/input|select|textarea|button/i.test(elem.nodeName)
  3104. }},setFilters:{first:function(elem,i){return i===0
  3105. },last:function(elem,i,match,array){return i===array.length-1
  3106. },even:function(elem,i){return i%2===0
  3107. },odd:function(elem,i){return i%2===1
  3108. },lt:function(elem,i,match){return i<match[3]-0
  3109. },gt:function(elem,i,match){return i>match[3]-0
  3110. },nth:function(elem,i,match){return match[3]-0==i
  3111. },eq:function(elem,i,match){return match[3]-0==i
  3112. }},filter:{PSEUDO:function(elem,match,i,array){var name=match[1],filter=Expr.filters[name];
  3113. if(filter){return filter(elem,i,match,array)
  3114. }else{if(name==="contains"){return(elem.textContent||elem.innerText||"").indexOf(match[3])>=0
  3115. }else{if(name==="not"){var not=match[3];
  3116. for(var i=0,l=not.length;
  3117. i<l;
  3118. i++){if(not[i]===elem){return false
  3119. }}return true
  3120. }}}},CHILD:function(elem,match){var type=match[1],node=elem;
  3121. switch(type){case"only":case"first":while((node=node.previousSibling)){if(node.nodeType===1){return false
  3122. }}if(type=="first"){return true
  3123. }node=elem;
  3124. case"last":while((node=node.nextSibling)){if(node.nodeType===1){return false
  3125. }}return true;
  3126. case"nth":var first=match[2],last=match[3];
  3127. if(first==1&&last==0){return true
  3128. }var doneName=match[0],parent=elem.parentNode;
  3129. if(parent&&(parent.sizcache!==doneName||!elem.nodeIndex)){var count=0;
  3130. for(node=parent.firstChild;
  3131. node;
  3132. node=node.nextSibling){if(node.nodeType===1){node.nodeIndex=++count
  3133. }}parent.sizcache=doneName
  3134. }var diff=elem.nodeIndex-last;
  3135. if(first==0){return diff==0
  3136. }else{return(diff%first==0&&diff/first>=0)
  3137. }}},ID:function(elem,match){return elem.nodeType===1&&elem.getAttribute("id")===match
  3138. },TAG:function(elem,match){return(match==="*"&&elem.nodeType===1)||elem.nodeName===match
  3139. },CLASS:function(elem,match){return(" "+(elem.className||elem.getAttribute("class"))+" ").indexOf(match)>-1
  3140. },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];
  3141. 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
  3142. },POS:function(elem,match,i,array){var name=match[2],filter=Expr.setFilters[name];
  3143. if(filter){return filter(elem,i,match,array)
  3144. }}}};
  3145. var origPOS=Expr.match.POS;
  3146. for(var type in Expr.match){Expr.match[type]=new RegExp(Expr.match[type].source+/(?![^\[]*\])(?![^\(]*\))/.source);
  3147. Expr.leftMatch[type]=new RegExp(/(^(?:.|\r|\n)*?)/.source+Expr.match[type].source)
  3148. }var makeArray=function(array,results){array=Array.prototype.slice.call(array,0);
  3149. if(results){results.push.apply(results,array);
  3150. return results
  3151. }return array
  3152. };
  3153. try{Array.prototype.slice.call(document.documentElement.childNodes,0)
  3154. }catch(e){makeArray=function(array,results){var ret=results||[];
  3155. if(toString.call(array)==="[object Array]"){Array.prototype.push.apply(ret,array)
  3156. }else{if(typeof array.length==="number"){for(var i=0,l=array.length;
  3157. i<l;
  3158. i++){ret.push(array[i])
  3159. }}else{for(var i=0;
  3160. array[i];
  3161. i++){ret.push(array[i])
  3162. }}}return ret
  3163. }
  3164. }var sortOrder;
  3165. if(document.documentElement.compareDocumentPosition){sortOrder=function(a,b){if(!a.compareDocumentPosition||!b.compareDocumentPosition){if(a==b){hasDuplicate=true
  3166. }return 0
  3167. }var ret=a.compareDocumentPosition(b)&4?-1:a===b?0:1;
  3168. if(ret===0){hasDuplicate=true
  3169. }return ret
  3170. }
  3171. }else{if("sourceIndex" in document.documentElement){sortOrder=function(a,b){if(!a.sourceIndex||!b.sourceIndex){if(a==b){hasDuplicate=true
  3172. }return 0
  3173. }var ret=a.sourceIndex-b.sourceIndex;
  3174. if(ret===0){hasDuplicate=true
  3175. }return ret
  3176. }
  3177. }else{if(document.createRange){sortOrder=function(a,b){if(!a.ownerDocument||!b.ownerDocument){if(a==b){hasDuplicate=true
  3178. }return 0
  3179. }var aRange=a.ownerDocument.createRange(),bRange=b.ownerDocument.createRange();
  3180. aRange.setStart(a,0);
  3181. aRange.setEnd(a,0);
  3182. bRange.setStart(b,0);
  3183. bRange.setEnd(b,0);
  3184. var ret=aRange.compareBoundaryPoints(Range.START_TO_END,bRange);
  3185. if(ret===0){hasDuplicate=true
  3186. }return ret
  3187. }
  3188. }}}(function(){var form=document.createElement("div"),id="script"+(new Date).getTime();
  3189. form.innerHTML="<a name='"+id+"'/>";
  3190. var root=document.documentElement;
  3191. root.insertBefore(form,root.firstChild);
  3192. if(!!document.getElementById(id)){Expr.find.ID=function(match,context,isXML){if(typeof context.getElementById!=="undefined"&&!isXML){var m=context.getElementById(match[1]);
  3193. return m?m.id===match[1]||typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id").nodeValue===match[1]?[m]:undefined:[]
  3194. }};
  3195. Expr.filter.ID=function(elem,match){var node=typeof elem.getAttributeNode!=="undefined"&&elem.getAttributeNode("id");
  3196. return elem.nodeType===1&&node&&node.nodeValue===match
  3197. }
  3198. }root.removeChild(form);
  3199. root=form=null
  3200. })();
  3201. (function(){var div=document.createElement("div");
  3202. div.appendChild(document.createComment(""));
  3203. if(div.getElementsByTagName("*").length>0){Expr.find.TAG=function(match,context){var results=context.getElementsByTagName(match[1]);
  3204. if(match[1]==="*"){var tmp=[];
  3205. for(var i=0;
  3206. results[i];
  3207. i++){if(results[i].nodeType===1){tmp.push(results[i])
  3208. }}results=tmp
  3209. }return results
  3210. }
  3211. }div.innerHTML="<a href='#'></a>";
  3212. if(div.firstChild&&typeof div.firstChild.getAttribute!=="undefined"&&div.firstChild.getAttribute("href")!=="#"){Expr.attrHandle.href=function(elem){return elem.getAttribute("href",2)
  3213. }
  3214. }div=null
  3215. })();
  3216. if(document.querySelectorAll){(function(){var oldSizzle=Sizzle,div=document.createElement("div");
  3217. div.innerHTML="<p class='TEST'></p>";
  3218. if(div.querySelectorAll&&div.querySelectorAll(".TEST").length===0){return
  3219. }Sizzle=function(query,context,extra,seed){context=context||document;
  3220. if(!seed&&context.nodeType===9&&!isXML(context)){try{return makeArray(context.querySelectorAll(query),extra)
  3221. }catch(e){}}return oldSizzle(query,context,extra,seed)
  3222. };
  3223. for(var prop in oldSizzle){Sizzle[prop]=oldSizzle[prop]
  3224. }div=null
  3225. })()
  3226. }if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var div=document.createElement("div");
  3227. div.innerHTML="<div class='test e'></div><div class='test'></div>";
  3228. if(div.getElementsByClassName("e").length===0){return
  3229. }div.lastChild.className="e";
  3230. if(div.getElementsByClassName("e").length===1){return
  3231. }Expr.order.splice(1,0,"CLASS");
  3232. Expr.find.CLASS=function(match,context,isXML){if(typeof context.getElementsByClassName!=="undefined"&&!isXML){return context.getElementsByClassName(match[1])
  3233. }};
  3234. div=null
  3235. })()
  3236. }function dirNodeCheck(dir,cur,doneName,checkSet,nodeCheck,isXML){var sibDir=dir=="previousSibling"&&!isXML;
  3237. for(var i=0,l=checkSet.length;
  3238. i<l;
  3239. i++){var elem=checkSet[i];
  3240. if(elem){if(sibDir&&elem.nodeType===1){elem.sizcache=doneName;
  3241. elem.sizset=i
  3242. }elem=elem[dir];
  3243. var match=false;
  3244. while(elem){if(elem.sizcache===doneName){match=checkSet[elem.sizset];
  3245. break
  3246. }if(elem.nodeType===1&&!isXML){elem.sizcache=doneName;
  3247. elem.sizset=i
  3248. }if(elem.nodeName===cur){match=elem;
  3249. break
  3250. }elem=elem[dir]
  3251. }checkSet[i]=match
  3252. }}}function dirCheck(dir,cur,doneName,checkSet,nodeCheck,isXML){var sibDir=dir=="previousSibling"&&!isXML;
  3253. for(var i=0,l=checkSet.length;
  3254. i<l;
  3255. i++){var elem=checkSet[i];
  3256. if(elem){if(sibDir&&elem.nodeType===1){elem.sizcache=doneName;
  3257. elem.sizset=i
  3258. }elem=elem[dir];
  3259. var match=false;
  3260. while(elem){if(elem.sizcache===doneName){match=checkSet[elem.sizset];
  3261. break
  3262. }if(elem.nodeType===1){if(!isXML){elem.sizcache=doneName;
  3263. elem.sizset=i
  3264. }if(typeof cur!=="string"){if(elem===cur){match=true;
  3265. break
  3266. }}else{if(Sizzle.filter(cur,[elem]).length>0){match=elem;
  3267. break
  3268. }}}elem=elem[dir]
  3269. }checkSet[i]=match
  3270. }}}var contains=document.compareDocumentPosition?function(a,b){return a.compareDocumentPosition(b)&16
  3271. }:function(a,b){return a!==b&&(a.contains?a.contains(b):true)
  3272. };
  3273. var isXML=function(elem){return elem.nodeType===9&&elem.documentElement.nodeName!=="HTML"||!!elem.ownerDocument&&elem.ownerDocument.documentElement.nodeName!=="HTML"
  3274. };
  3275. var posProcess=function(selector,context){var tmpSet=[],later="",match,root=context.nodeType?[context]:context;
  3276. while((match=Expr.match.PSEUDO.exec(selector))){later+=match[0];
  3277. selector=selector.replace(Expr.match.PSEUDO,"")
  3278. }selector=Expr.relative[selector]?selector+"*":selector;
  3279. for(var i=0,l=root.length;
  3280. i<l;
  3281. i++){Sizzle(selector,root[i],tmpSet)
  3282. }return Sizzle.filter(later,tmpSet)
  3283. };
  3284. Firebug.Selector=Sizzle
  3285. }});
  3286. function DomplateTag(tagName){this.tagName=tagName
  3287. }function DomplateEmbed(){}function DomplateLoop(){}(function(){var womb=null;
  3288. var domplate=FBL.domplate=function(){var lastSubject;
  3289. for(var i=0;
  3290. i<arguments.length;
  3291. ++i){lastSubject=lastSubject?copyObject(lastSubject,arguments[i]):arguments[i]
  3292. }for(var name in lastSubject){var val=lastSubject[name];
  3293. if(isTag(val)){val.tag.subject=lastSubject
  3294. }}return lastSubject
  3295. };
  3296. domplate.context=function(context,fn){var lastContext=domplate.lastContext;
  3297. domplate.topContext=context;
  3298. fn.apply(context);
  3299. domplate.topContext=lastContext
  3300. };
  3301. FBL.TAG=function(){var embed=new DomplateEmbed();
  3302. return embed.merge(arguments)
  3303. };
  3304. FBL.FOR=function(){var loop=new DomplateLoop();
  3305. return loop.merge(arguments)
  3306. };
  3307. DomplateTag.prototype={merge:function(args,oldTag){if(oldTag){this.tagName=oldTag.tagName
  3308. }this.context=oldTag?oldTag.context:null;
  3309. this.subject=oldTag?oldTag.subject:null;
  3310. this.attrs=oldTag?copyObject(oldTag.attrs):{};
  3311. this.classes=oldTag?copyObject(oldTag.classes):{};
  3312. this.props=oldTag?copyObject(oldTag.props):null;
  3313. this.listeners=oldTag?copyArray(oldTag.listeners):null;
  3314. this.children=oldTag?copyArray(oldTag.children):[];
  3315. this.vars=oldTag?copyArray(oldTag.vars):[];
  3316. var attrs=args.length?args[0]:null;
  3317. var hasAttrs=typeof(attrs)=="object"&&!isTag(attrs);
  3318. this.children=[];
  3319. if(domplate.topContext){this.context=domplate.topContext
  3320. }if(args.length){parseChildren(args,hasAttrs?1:0,this.vars,this.children)
  3321. }if(hasAttrs){this.parseAttrs(attrs)
  3322. }return creator(this,DomplateTag)
  3323. },parseAttrs:function(args){for(var name in args){var val=parseValue(args[name]);
  3324. readPartNames(val,this.vars);
  3325. if(name.indexOf("on")==0){var eventName=name.substr(2);
  3326. if(!this.listeners){this.listeners=[]
  3327. }this.listeners.push(eventName,val)
  3328. }else{if(name.indexOf("_")==0){var propName=name.substr(1);
  3329. if(!this.props){this.props={}
  3330. }this.props[propName]=val
  3331. }else{if(name.indexOf("$")==0){var className=name.substr(1);
  3332. if(!this.classes){this.classes={}
  3333. }this.classes[className]=val
  3334. }else{if(name=="class"&&this.attrs.hasOwnProperty(name)){this.attrs[name]+=" "+val
  3335. }else{this.attrs[name]=val
  3336. }}}}}},compile:function(){if(this.renderMarkup){return
  3337. }this.compileMarkup();
  3338. this.compileDOM()
  3339. },compileMarkup:function(){this.markupArgs=[];
  3340. var topBlock=[],topOuts=[],blocks=[],info={args:this.markupArgs,argIndex:0};
  3341. this.generateMarkup(topBlock,topOuts,blocks,info);
  3342. this.addCode(topBlock,topOuts,blocks);
  3343. var fnBlock=["r=(function (__code__, __context__, __in__, __out__"];
  3344. for(var i=0;
  3345. i<info.argIndex;
  3346. ++i){fnBlock.push(", s",i)
  3347. }fnBlock.push(") {");
  3348. if(this.subject){fnBlock.push("with (this) {")
  3349. }if(this.context){fnBlock.push("with (__context__) {")
  3350. }fnBlock.push("with (__in__) {");
  3351. fnBlock.push.apply(fnBlock,blocks);
  3352. if(this.subject){fnBlock.push("}")
  3353. }if(this.context){fnBlock.push("}")
  3354. }fnBlock.push("}})");
  3355. function __link__(tag,code,outputs,args){if(!tag||!tag.tag){return
  3356. }tag.tag.compile();
  3357. var tagOutputs=[];
  3358. var markupArgs=[code,tag.tag.context,args,tagOutputs];
  3359. markupArgs.push.apply(markupArgs,tag.tag.markupArgs);
  3360. tag.tag.renderMarkup.apply(tag.tag.subject,markupArgs);
  3361. outputs.push(tag);
  3362. outputs.push(tagOutputs)
  3363. }function __escape__(value){function replaceChars(ch){switch(ch){case"<":return"&lt;";
  3364. case">":return"&gt;";
  3365. case"&":return"&amp;";
  3366. case"'":return"&#39;";
  3367. case'"':return"&quot;"
  3368. }return"?"
  3369. }return String(value).replace(/[<>&"']/g,replaceChars)
  3370. }function __loop__(iter,outputs,fn){var iterOuts=[];
  3371. outputs.push(iterOuts);
  3372. if(iter instanceof Array){iter=new ArrayIterator(iter)
  3373. }try{while(1){var value=iter.next();
  3374. var itemOuts=[0,0];
  3375. iterOuts.push(itemOuts);
  3376. fn.apply(this,[value,itemOuts])
  3377. }}catch(exc){if(exc!=StopIteration){throw exc
  3378. }}}var js=fnBlock.join("");
  3379. var r=null;
  3380. eval(js);
  3381. this.renderMarkup=r
  3382. },getVarNames:function(args){if(this.vars){args.push.apply(args,this.vars)
  3383. }for(var i=0;
  3384. i<this.children.length;
  3385. ++i){var child=this.children[i];
  3386. if(isTag(child)){child.tag.getVarNames(args)
  3387. }else{if(child instanceof Parts){for(var i=0;
  3388. i<child.parts.length;
  3389. ++i){if(child.parts[i] instanceof Variable){var name=child.parts[i].name;
  3390. var names=name.split(".");
  3391. args.push(names[0])
  3392. }}}}}},generateMarkup:function(topBlock,topOuts,blocks,info){topBlock.push(',"<',this.tagName,'"');
  3393. for(var name in this.attrs){if(name!="class"){var val=this.attrs[name];
  3394. topBlock.push(', " ',name,'=\\""');
  3395. addParts(val,",",topBlock,info,true);
  3396. topBlock.push(', "\\""')
  3397. }}if(this.listeners){for(var i=0;
  3398. i<this.listeners.length;
  3399. i+=2){readPartNames(this.listeners[i+1],topOuts)
  3400. }}if(this.props){for(var name in this.props){readPartNames(this.props[name],topOuts)
  3401. }}if(this.attrs.hasOwnProperty("class")||this.classes){topBlock.push(', " class=\\""');
  3402. if(this.attrs.hasOwnProperty("class")){addParts(this.attrs["class"],",",topBlock,info,true)
  3403. }topBlock.push(', " "');
  3404. for(var name in this.classes){topBlock.push(", (");
  3405. addParts(this.classes[name],"",topBlock,info);
  3406. topBlock.push(' ? "',name,'" + " " : "")')
  3407. }topBlock.push(', "\\""')
  3408. }topBlock.push(',">"');
  3409. this.generateChildMarkup(topBlock,topOuts,blocks,info);
  3410. topBlock.push(',"</',this.tagName,'>"')
  3411. },generateChildMarkup:function(topBlock,topOuts,blocks,info){for(var i=0;
  3412. i<this.children.length;
  3413. ++i){var child=this.children[i];
  3414. if(isTag(child)){child.tag.generateMarkup(topBlock,topOuts,blocks,info)
  3415. }else{addParts(child,",",topBlock,info,true)
  3416. }}},addCode:function(topBlock,topOuts,blocks){if(topBlock.length){blocks.push('__code__.push(""',topBlock.join(""),");")
  3417. }if(topOuts.length){blocks.push("__out__.push(",topOuts.join(","),");")
  3418. }topBlock.splice(0,topBlock.length);
  3419. topOuts.splice(0,topOuts.length)
  3420. },addLocals:function(blocks){var varNames=[];
  3421. this.getVarNames(varNames);
  3422. var map={};
  3423. for(var i=0;
  3424. i<varNames.length;
  3425. ++i){var name=varNames[i];
  3426. if(map.hasOwnProperty(name)){continue
  3427. }map[name]=1;
  3428. var names=name.split(".");
  3429. blocks.push("var ",names[0]+" = __in__."+names[0]+";")
  3430. }},compileDOM:function(){var path=[];
  3431. var blocks=[];
  3432. this.domArgs=[];
  3433. path.embedIndex=0;
  3434. path.loopIndex=0;
  3435. path.staticIndex=0;
  3436. path.renderIndex=0;
  3437. var nodeCount=this.generateDOM(path,blocks,this.domArgs);
  3438. var fnBlock=["r=(function (root, context, o"];
  3439. for(var i=0;
  3440. i<path.staticIndex;
  3441. ++i){fnBlock.push(", ","s"+i)
  3442. }for(var i=0;
  3443. i<path.renderIndex;
  3444. ++i){fnBlock.push(", ","d"+i)
  3445. }fnBlock.push(") {");
  3446. for(var i=0;
  3447. i<path.loopIndex;
  3448. ++i){fnBlock.push("var l",i," = 0;")
  3449. }for(var i=0;
  3450. i<path.embedIndex;
  3451. ++i){fnBlock.push("var e",i," = 0;")
  3452. }if(this.subject){fnBlock.push("with (this) {")
  3453. }if(this.context){fnBlock.push("with (context) {")
  3454. }fnBlock.push(blocks.join(""));
  3455. if(this.subject){fnBlock.push("}")
  3456. }if(this.context){fnBlock.push("}")
  3457. }fnBlock.push("return ",nodeCount,";");
  3458. fnBlock.push("})");
  3459. function __bind__(object,fn){return function(event){return fn.apply(object,[event])
  3460. }
  3461. }function __link__(node,tag,args){if(!tag||!tag.tag){return
  3462. }tag.tag.compile();
  3463. var domArgs=[node,tag.tag.context,0];
  3464. domArgs.push.apply(domArgs,tag.tag.domArgs);
  3465. domArgs.push.apply(domArgs,args);
  3466. return tag.tag.renderDOM.apply(tag.tag.subject,domArgs)
  3467. }var self=this;
  3468. function __loop__(iter,fn){var nodeCount=0;
  3469. for(var i=0;
  3470. i<iter.length;
  3471. ++i){iter[i][0]=i;
  3472. iter[i][1]=nodeCount;
  3473. nodeCount+=fn.apply(this,iter[i])
  3474. }return nodeCount
  3475. }function __path__(parent,offset){var root=parent;
  3476. for(var i=2;
  3477. i<arguments.length;
  3478. ++i){var index=arguments[i];
  3479. if(i==3){index+=offset
  3480. }if(index==-1){parent=parent.parentNode
  3481. }else{parent=parent.childNodes[index]
  3482. }}return parent
  3483. }var js=fnBlock.join("");
  3484. var r=null;
  3485. eval(js);
  3486. this.renderDOM=r
  3487. },generateDOM:function(path,blocks,args){if(this.listeners||this.props){this.generateNodePath(path,blocks)
  3488. }if(this.listeners){for(var i=0;
  3489. i<this.listeners.length;
  3490. i+=2){var val=this.listeners[i+1];
  3491. var arg=generateArg(val,path,args);
  3492. blocks.push('addEvent(node, "',this.listeners[i],'", __bind__(this, ',arg,"), false);")
  3493. }}if(this.props){for(var name in this.props){var val=this.props[name];
  3494. var arg=generateArg(val,path,args);
  3495. blocks.push("node.",name," = ",arg,";")
  3496. }}this.generateChildDOM(path,blocks,args);
  3497. return 1
  3498. },generateNodePath:function(path,blocks){blocks.push("var node = __path__(root, o");
  3499. for(var i=0;
  3500. i<path.length;
  3501. ++i){blocks.push(",",path[i])
  3502. }blocks.push(");")
  3503. },generateChildDOM:function(path,blocks,args){path.push(0);
  3504. for(var i=0;
  3505. i<this.children.length;
  3506. ++i){var child=this.children[i];
  3507. if(isTag(child)){path[path.length-1]+="+"+child.tag.generateDOM(path,blocks,args)
  3508. }else{path[path.length-1]+="+1"
  3509. }}path.pop()
  3510. }};
  3511. DomplateEmbed.prototype=copyObject(DomplateTag.prototype,{merge:function(args,oldTag){this.value=oldTag?oldTag.value:parseValue(args[0]);
  3512. this.attrs=oldTag?oldTag.attrs:{};
  3513. this.vars=oldTag?copyArray(oldTag.vars):[];
  3514. var attrs=args[1];
  3515. for(var name in attrs){var val=parseValue(attrs[name]);
  3516. this.attrs[name]=val;
  3517. readPartNames(val,this.vars)
  3518. }return creator(this,DomplateEmbed)
  3519. },getVarNames:function(names){if(this.value instanceof Parts){names.push(this.value.parts[0].name)
  3520. }if(this.vars){names.push.apply(names,this.vars)
  3521. }},generateMarkup:function(topBlock,topOuts,blocks,info){this.addCode(topBlock,topOuts,blocks);
  3522. blocks.push("__link__(");
  3523. addParts(this.value,"",blocks,info);
  3524. blocks.push(", __code__, __out__, {");
  3525. var lastName=null;
  3526. for(var name in this.attrs){if(lastName){blocks.push(",")
  3527. }lastName=name;
  3528. var val=this.attrs[name];
  3529. blocks.push('"',name,'":');
  3530. addParts(val,"",blocks,info)
  3531. }blocks.push("});")
  3532. },generateDOM:function(path,blocks,args){var embedName="e"+path.embedIndex++;
  3533. this.generateNodePath(path,blocks);
  3534. var valueName="d"+path.renderIndex++;
  3535. var argsName="d"+path.renderIndex++;
  3536. blocks.push(embedName+" = __link__(node, ",valueName,", ",argsName,");");
  3537. return embedName
  3538. }});
  3539. DomplateLoop.prototype=copyObject(DomplateTag.prototype,{merge:function(args,oldTag){this.varName=oldTag?oldTag.varName:args[0];
  3540. this.iter=oldTag?oldTag.iter:parseValue(args[1]);
  3541. this.vars=[];
  3542. this.children=oldTag?copyArray(oldTag.children):[];
  3543. var offset=Math.min(args.length,2);
  3544. parseChildren(args,offset,this.vars,this.children);
  3545. return creator(this,DomplateLoop)
  3546. },getVarNames:function(names){if(this.iter instanceof Parts){names.push(this.iter.parts[0].name)
  3547. }DomplateTag.prototype.getVarNames.apply(this,[names])
  3548. },generateMarkup:function(topBlock,topOuts,blocks,info){this.addCode(topBlock,topOuts,blocks);
  3549. var iterName;
  3550. if(this.iter instanceof Parts){var part=this.iter.parts[0];
  3551. iterName=part.name;
  3552. if(part.format){for(var i=0;
  3553. i<part.format.length;
  3554. ++i){iterName=part.format[i]+"("+iterName+")"
  3555. }}}else{iterName=this.iter
  3556. }blocks.push("__loop__.apply(this, [",iterName,", __out__, function(",this.varName,", __out__) {");
  3557. this.generateChildMarkup(topBlock,topOuts,blocks,info);
  3558. this.addCode(topBlock,topOuts,blocks);
  3559. blocks.push("}]);")
  3560. },generateDOM:function(path,blocks,args){var iterName="d"+path.renderIndex++;
  3561. var counterName="i"+path.loopIndex;
  3562. var loopName="l"+path.loopIndex++;
  3563. if(!path.length){path.push(-1,0)
  3564. }var preIndex=path.renderIndex;
  3565. path.renderIndex=0;
  3566. var nodeCount=0;
  3567. var subBlocks=[];
  3568. var basePath=path[path.length-1];
  3569. for(var i=0;
  3570. i<this.children.length;
  3571. ++i){path[path.length-1]=basePath+"+"+loopName+"+"+nodeCount;
  3572. var child=this.children[i];
  3573. if(isTag(child)){nodeCount+="+"+child.tag.generateDOM(path,subBlocks,args)
  3574. }else{nodeCount+="+1"
  3575. }}path[path.length-1]=basePath+"+"+loopName;
  3576. blocks.push(loopName," = __loop__.apply(this, [",iterName,", function(",counterName,",",loopName);
  3577. for(var i=0;
  3578. i<path.renderIndex;
  3579. ++i){blocks.push(",d"+i)
  3580. }blocks.push(") {");
  3581. blocks.push(subBlocks.join(""));
  3582. blocks.push("return ",nodeCount,";");
  3583. blocks.push("}]);");
  3584. path.renderIndex=preIndex;
  3585. return loopName
  3586. }});
  3587. function Variable(name,format){this.name=name;
  3588. this.format=format
  3589. }function Parts(parts){this.parts=parts
  3590. }function parseParts(str){var re=/\$([_A-Za-z][_A-Za-z0-9.|]*)/g;
  3591. var index=0;
  3592. var parts=[];
  3593. var m;
  3594. while(m=re.exec(str)){var pre=str.substr(index,(re.lastIndex-m[0].length)-index);
  3595. if(pre){parts.push(pre)
  3596. }var expr=m[1].split("|");
  3597. parts.push(new Variable(expr[0],expr.slice(1)));
  3598. index=re.lastIndex
  3599. }if(!index){return str
  3600. }var post=str.substr(index);
  3601. if(post){parts.push(post)
  3602. }return new Parts(parts)
  3603. }function parseValue(val){return typeof(val)=="string"?parseParts(val):val
  3604. }function parseChildren(args,offset,vars,children){for(var i=offset;
  3605. i<args.length;
  3606. ++i){var val=parseValue(args[i]);
  3607. children.push(val);
  3608. readPartNames(val,vars)
  3609. }}function readPartNames(val,vars){if(val instanceof Parts){for(var i=0;
  3610. i<val.parts.length;
  3611. ++i){var part=val.parts[i];
  3612. if(part instanceof Variable){vars.push(part.name)
  3613. }}}}function generateArg(val,path,args){if(val instanceof Parts){var vals=[];
  3614. for(var i=0;
  3615. i<val.parts.length;
  3616. ++i){var part=val.parts[i];
  3617. if(part instanceof Variable){var varName="d"+path.renderIndex++;
  3618. if(part.format){for(var j=0;
  3619. j<part.format.length;
  3620. ++j){varName=part.format[j]+"("+varName+")"
  3621. }}vals.push(varName)
  3622. }else{vals.push('"'+part.replace(/"/g,'\\"')+'"')
  3623. }}return vals.join("+")
  3624. }else{args.push(val);
  3625. return"s"+path.staticIndex++
  3626. }}function addParts(val,delim,block,info,escapeIt){var vals=[];
  3627. if(val instanceof Parts){for(var i=0;
  3628. i<val.parts.length;
  3629. ++i){var part=val.parts[i];
  3630. if(part instanceof Variable){var partName=part.name;
  3631. if(part.format){for(var j=0;
  3632. j<part.format.length;
  3633. ++j){partName=part.format[j]+"("+partName+")"
  3634. }}if(escapeIt){vals.push("__escape__("+partName+")")
  3635. }else{vals.push(partName)
  3636. }}else{vals.push('"'+part+'"')
  3637. }}}else{if(isTag(val)){info.args.push(val);
  3638. vals.push("s"+info.argIndex++)
  3639. }else{vals.push('"'+val+'"')
  3640. }}var parts=vals.join(delim);
  3641. if(parts){block.push(delim,parts)
  3642. }}function isTag(obj){return(typeof(obj)=="function"||obj instanceof Function)&&!!obj.tag
  3643. }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);");
  3644. fn.tag=tag;
  3645. fn.cons=cons;
  3646. extend(fn,Renderer);
  3647. return fn
  3648. }function copyArray(oldArray){var ary=[];
  3649. if(oldArray){for(var i=0;
  3650. i<oldArray.length;
  3651. ++i){ary.push(oldArray[i])
  3652. }}return ary
  3653. }function copyObject(l,r){var m={};
  3654. extend(m,l);
  3655. extend(m,r);
  3656. return m
  3657. }function extend(l,r){for(var n in r){l[n]=r[n]
  3658. }}function addEvent(object,name,handler){if(document.all){object.attachEvent("on"+name,handler)
  3659. }else{object.addEventListener(name,handler,false)
  3660. }}function ArrayIterator(array){var index=-1;
  3661. this.next=function(){if(++index>=array.length){throw StopIteration
  3662. }return array[index]
  3663. }
  3664. }function StopIteration(){}FBL.$break=function(){throw StopIteration
  3665. };
  3666. var Renderer={renderHTML:function(args,outputs,self){var code=[];
  3667. var markupArgs=[code,this.tag.context,args,outputs];
  3668. markupArgs.push.apply(markupArgs,this.tag.markupArgs);
  3669. this.tag.renderMarkup.apply(self?self:this.tag.subject,markupArgs);
  3670. return code.join("")
  3671. },insertRows:function(args,before,self){this.tag.compile();
  3672. var outputs=[];
  3673. var html=this.renderHTML(args,outputs,self);
  3674. var doc=before.ownerDocument;
  3675. var div=doc.createElement("div");
  3676. div.innerHTML="<table><tbody>"+html+"</tbody></table>";
  3677. var tbody=div.firstChild.firstChild;
  3678. var parent=before.tagName=="TR"?before.parentNode:before;
  3679. var after=before.tagName=="TR"?before.nextSibling:null;
  3680. var firstRow=tbody.firstChild,lastRow;
  3681. while(tbody.firstChild){lastRow=tbody.firstChild;
  3682. if(after){parent.insertBefore(lastRow,after)
  3683. }else{parent.appendChild(lastRow)
  3684. }}var offset=0;
  3685. if(before.tagName=="TR"){var node=firstRow.parentNode.firstChild;
  3686. for(;
  3687. node&&node!=firstRow;
  3688. node=node.nextSibling){++offset
  3689. }}var domArgs=[firstRow,this.tag.context,offset];
  3690. domArgs.push.apply(domArgs,this.tag.domArgs);
  3691. domArgs.push.apply(domArgs,outputs);
  3692. this.tag.renderDOM.apply(self?self:this.tag.subject,domArgs);
  3693. return[firstRow,lastRow]
  3694. },insertBefore:function(args,before,self){return this.insertNode(args,before.ownerDocument,before,false,self)
  3695. },insertAfter:function(args,after,self){return this.insertNode(args,after.ownerDocument,after,true,self)
  3696. },insertNode:function(args,doc,element,isAfter,self){if(!args){args={}
  3697. }this.tag.compile();
  3698. var outputs=[];
  3699. var html=this.renderHTML(args,outputs,self);
  3700. var doc=element.ownerDocument;
  3701. if(!womb||womb.ownerDocument!=doc){womb=doc.createElement("div")
  3702. }womb.innerHTML=html;
  3703. var root=womb.firstChild;
  3704. if(isAfter){while(womb.firstChild){if(element.nextSibling){element.parentNode.insertBefore(womb.firstChild,element.nextSibling)
  3705. }else{element.parentNode.appendChild(womb.firstChild)
  3706. }}}else{while(womb.lastChild){element.parentNode.insertBefore(womb.lastChild,element)
  3707. }}var domArgs=[root,this.tag.context,0];
  3708. domArgs.push.apply(domArgs,this.tag.domArgs);
  3709. domArgs.push.apply(domArgs,outputs);
  3710. this.tag.renderDOM.apply(self?self:this.tag.subject,domArgs);
  3711. return root
  3712. },replace:function(args,parent,self){this.tag.compile();
  3713. var outputs=[];
  3714. var html=this.renderHTML(args,outputs,self);
  3715. var root;
  3716. if(parent.nodeType==1){parent.innerHTML=html;
  3717. root=parent.firstChild
  3718. }else{if(!parent||parent.nodeType!=9){parent=document
  3719. }if(!womb||womb.ownerDocument!=parent){womb=parent.createElement("div")
  3720. }womb.innerHTML=html;
  3721. root=womb.firstChild
  3722. }var domArgs=[root,this.tag.context,0];
  3723. domArgs.push.apply(domArgs,this.tag.domArgs);
  3724. domArgs.push.apply(domArgs,outputs);
  3725. this.tag.renderDOM.apply(self?self:this.tag.subject,domArgs);
  3726. return root
  3727. },append:function(args,parent,self){this.tag.compile();
  3728. var outputs=[];
  3729. var html=this.renderHTML(args,outputs,self);
  3730. if(!womb||womb.ownerDocument!=parent.ownerDocument){womb=parent.ownerDocument.createElement("div")
  3731. }womb.innerHTML=html;
  3732. var root=womb.firstChild;
  3733. while(womb.firstChild){parent.appendChild(womb.firstChild)
  3734. }womb=null;
  3735. var domArgs=[root,this.tag.context,0];
  3736. domArgs.push.apply(domArgs,this.tag.domArgs);
  3737. domArgs.push.apply(domArgs,outputs);
  3738. this.tag.renderDOM.apply(self?self:this.tag.subject,domArgs);
  3739. return root
  3740. }};
  3741. function defineTags(){for(var i=0;
  3742. i<arguments.length;
  3743. ++i){var tagName=arguments[i];
  3744. var fn=new Function("var newTag = new arguments.callee.DomplateTag('"+tagName+"'); return newTag.merge(arguments);");
  3745. fn.DomplateTag=DomplateTag;
  3746. var fnName=tagName.toUpperCase();
  3747. FBL[fnName]=fn
  3748. }}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")
  3749. })();
  3750. var FirebugReps=FBL.ns(function(){with(FBL){var OBJECTBOX=this.OBJECTBOX=SPAN({"class":"objectBox objectBox-$className"});
  3751. var OBJECTBLOCK=this.OBJECTBLOCK=DIV({"class":"objectBox objectBox-$className"});
  3752. var OBJECTLINK=this.OBJECTLINK=isIE6?A({"class":"objectLink objectLink-$className a11yFocus",href:"javascript:void(0)",_repObject:"$object"}):A({"class":"objectLink objectLink-$className a11yFocus",_repObject:"$object"});
  3753. this.Undefined=domplate(Firebug.Rep,{tag:OBJECTBOX("undefined"),className:"undefined",supportsObject:function(object,type){return type=="undefined"
  3754. }});
  3755. this.Null=domplate(Firebug.Rep,{tag:OBJECTBOX("null"),className:"null",supportsObject:function(object,type){return object==null
  3756. }});
  3757. this.Nada=domplate(Firebug.Rep,{tag:SPAN(""),className:"nada"});
  3758. this.Number=domplate(Firebug.Rep,{tag:OBJECTBOX("$object"),className:"number",supportsObject:function(object,type){return type=="boolean"||type=="number"
  3759. }});
  3760. this.String=domplate(Firebug.Rep,{tag:OBJECTBOX("&quot;$object&quot;"),shortTag:OBJECTBOX("&quot;$object|cropString&quot;"),className:"string",supportsObject:function(object,type){return type=="string"
  3761. }});
  3762. this.Text=domplate(Firebug.Rep,{tag:OBJECTBOX("$object"),shortTag:OBJECTBOX("$object|cropString"),className:"text"});
  3763. this.Caption=domplate(Firebug.Rep,{tag:SPAN({"class":"caption"},"$object")});
  3764. this.Warning=domplate(Firebug.Rep,{tag:DIV({"class":"warning focusRow",role:"listitem"},"$object|STR")});
  3765. this.Func=domplate(Firebug.Rep,{tag:OBJECTLINK("$object|summarizeFunction"),summarizeFunction:function(fn){var fnRegex=/function ([^(]+\([^)]*\)) \{/;
  3766. var fnText=safeToString(fn);
  3767. var m=fnRegex.exec(fnText);
  3768. return m?m[1]:"function()"
  3769. },copySource:function(fn){copyToClipboard(safeToString(fn))
  3770. },monitor:function(fn,script,monitored){if(monitored){Firebug.Debugger.unmonitorScript(fn,script,"monitor")
  3771. }else{Firebug.Debugger.monitorScript(fn,script,"monitor")
  3772. }},className:"function",supportsObject:function(object,type){return isFunction(object)
  3773. },inspectObject:function(fn,context){var sourceLink=findSourceForFunction(fn,context);
  3774. if(sourceLink){Firebug.chrome.select(sourceLink)
  3775. }if(FBTrace.DBG_FUNCTION_NAME){FBTrace.sysout("reps.function.inspectObject selected sourceLink is ",sourceLink)
  3776. }},getTooltip:function(fn,context){var script=findScriptForFunctionInContext(context,fn);
  3777. if(script){return $STRF("Line",[normalizeURL(script.fileName),script.baseLineNumber])
  3778. }else{if(fn.toString){return fn.toString()
  3779. }}},getTitle:function(fn,context){var name=fn.name?fn.name:"function";
  3780. return name+"()"
  3781. },getContextMenuItems:function(fn,target,context,script){if(!script){script=findScriptForFunctionInContext(context,fn)
  3782. }if(!script){return
  3783. }var scriptInfo=getSourceFileAndLineByScript(context,script);
  3784. var monitored=scriptInfo?fbs.isMonitored(scriptInfo.sourceFile.href,scriptInfo.lineNo):false;
  3785. var name=script?getFunctionName(script,context):fn.name;
  3786. 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)}]
  3787. }});
  3788. 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"},"&quot;$object&quot;"),propObjectTag:SPAN({"class":"objectProp-object"},"$object"),propIterator:function(object){var maxLength=55;
  3789. if(!object){return[]
  3790. }var props=[];
  3791. var length=0;
  3792. var numProperties=0;
  3793. var numPropertiesShown=0;
  3794. var maxLengthReached=false;
  3795. var lib=this;
  3796. var propRepsMap={"boolean":this.propNumberTag,number:this.propNumberTag,string:this.propStringTag,object:this.propObjectTag};
  3797. try{var title=Firebug.Rep.getTitle(object);
  3798. length+=title.length;
  3799. for(var name in object){var value;
  3800. try{value=object[name]
  3801. }catch(exc){continue
  3802. }var type=typeof(value);
  3803. if(type=="boolean"||type=="number"||(type=="string"&&value)||(type=="object"&&value&&value.toString)){var tag=propRepsMap[type];
  3804. var value=(type=="object")?Firebug.getRep(value).getTitle(value):value+"";
  3805. length+=name.length+value.length+4;
  3806. if(length<=maxLength){props.push({tag:tag,name:name,object:value,equal:"=",delim:", "});
  3807. numPropertiesShown++
  3808. }else{maxLengthReached=true
  3809. }}numProperties++;
  3810. if(maxLengthReached&&numProperties>numPropertiesShown){break
  3811. }}if(numProperties>numPropertiesShown){props.push({object:"...",tag:FirebugReps.Caption.tag,name:"",equal:"",delim:""})
  3812. }else{if(props.length>0){props[props.length-1].delim=""
  3813. }}}catch(exc){}return props
  3814. },fb_1_6_propIterator:function(object,max){max=max||3;
  3815. if(!object){return[]
  3816. }var props=[];
  3817. var len=0,count=0;
  3818. try{for(var name in object){var value;
  3819. try{value=object[name]
  3820. }catch(exc){continue
  3821. }var t=typeof(value);
  3822. if(t=="boolean"||t=="number"||(t=="string"&&value)||(t=="object"&&value&&value.toString)){var rep=Firebug.getRep(value);
  3823. var tag=rep.shortTag||rep.tag;
  3824. if(t=="object"){value=rep.getTitle(value);
  3825. tag=rep.titleTag
  3826. }count++;
  3827. if(count<=max){props.push({tag:tag,name:name,object:value,equal:"=",delim:", "})
  3828. }else{break
  3829. }}}if(count>max){props[Math.max(1,max-1)]={object:"more...",tag:FirebugReps.Caption.tag,name:"",equal:"",delim:""}
  3830. }else{if(props.length>0){props[props.length-1].delim=""
  3831. }}}catch(exc){}return props
  3832. },className:"object",supportsObject:function(object,type){return true
  3833. }});
  3834. 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=[];
  3835. for(var i=0;
  3836. i<array.length;
  3837. ++i){var value=array[i];
  3838. var rep=Firebug.getRep(value);
  3839. var tag=rep.shortTag?rep.shortTag:rep.tag;
  3840. var delim=(i==array.length-1?"":", ");
  3841. items.push({object:value,tag:tag,delim:delim})
  3842. }return items
  3843. },shortArrayIterator:function(array){var items=[];
  3844. for(var i=0;
  3845. i<array.length&&i<3;
  3846. ++i){var value=array[i];
  3847. var rep=Firebug.getRep(value);
  3848. var tag=rep.shortTag?rep.shortTag:rep.tag;
  3849. var delim=(i==array.length-1?"":", ");
  3850. items.push({object:value,tag:tag,delim:delim})
  3851. }if(array.length>3){items.push({object:(array.length-3)+" more...",tag:FirebugReps.Caption.tag,delim:""})
  3852. }return items
  3853. },shortPropIterator:this.Obj.propIterator,getItemIndex:function(child){var arrayIndex=0;
  3854. for(child=child.previousSibling;
  3855. child;
  3856. child=child.previousSibling){if(child.repObject){++arrayIndex
  3857. }}return arrayIndex
  3858. },className:"array",supportsObject:function(object){return this.isArray(object)
  3859. },isArray:function(obj){try{if(!obj){return false
  3860. }else{if(isIE&&!isFunction(obj)&&typeof obj=="object"&&isFinite(obj.length)&&obj.nodeType!=8){return true
  3861. }else{if(isFinite(obj.length)&&isFunction(obj.splice)){return true
  3862. }else{if(isFinite(obj.length)&&isFunction(obj.callee)){return true
  3863. }else{if(instanceOf(obj,"HTMLCollection")){return true
  3864. }else{if(instanceOf(obj,"NodeList")){return true
  3865. }else{return false
  3866. }}}}}}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("isArray FAILS:",exc);
  3867. FBTrace.sysout("isArray Fails on obj",obj)
  3868. }}return false
  3869. },getTitle:function(object,context){return"["+object.length+"]"
  3870. }});
  3871. this.Property=domplate(Firebug.Rep,{supportsObject:function(object){return object instanceof Property
  3872. },getRealObject:function(prop,context){return prop.object[prop.name]
  3873. },getTitle:function(prop,context){return prop.name
  3874. }});
  3875. this.NetFile=domplate(this.Obj,{supportsObject:function(object){return object instanceof Firebug.NetFile
  3876. },browseObject:function(file,context){openNewTab(file.href);
  3877. return true
  3878. },getRealObject:function(file,context){return null
  3879. }});
  3880. this.Except=domplate(Firebug.Rep,{tag:OBJECTBOX({_repObject:"$object"},"$object.message"),className:"exception",supportsObject:function(object){return object instanceof ErrorCopy
  3881. }});
  3882. this.Element=domplate(Firebug.Rep,{tag:OBJECTLINK("&lt;",SPAN({"class":"nodeTag"},"$object.nodeName|toLowerCase"),FOR("attr","$object|attrIterator","&nbsp;$attr.nodeName=&quot;",SPAN({"class":"nodeValue"},"$attr.nodeValue"),"&quot;"),"&gt;"),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"
  3883. },getSelectorTag:function(elt){return elt.nodeName.toLowerCase()
  3884. },getSelectorId:function(elt){return elt.id?"#"+elt.id:""
  3885. },getSelectorClass:function(elt){return elt.className?"."+elt.className.split(" ")[0]:""
  3886. },getValue:function(elt){return"";
  3887. var value;
  3888. if(elt instanceof HTMLImageElement){value=getFileName(elt.src)
  3889. }else{if(elt instanceof HTMLAnchorElement){value=getFileName(elt.href)
  3890. }else{if(elt instanceof HTMLInputElement){value=elt.value
  3891. }else{if(elt instanceof HTMLFormElement){value=getFileName(elt.action)
  3892. }else{if(elt instanceof HTMLScriptElement){value=getFileName(elt.src)
  3893. }}}}}return value?" "+cropString(value,20):""
  3894. },attrIterator:function(elt){var attrs=[];
  3895. var idAttr,classAttr;
  3896. if(elt.attributes){for(var i=0;
  3897. i<elt.attributes.length;
  3898. ++i){var attr=elt.attributes[i];
  3899. if(attr.nodeName&&attr.nodeName.indexOf("firebug-")!=-1){continue
  3900. }else{if(attr.nodeName=="id"){idAttr=attr
  3901. }else{if(attr.nodeName=="class"){classAttr=attr
  3902. }else{attrs.push(attr)
  3903. }}}}}if(classAttr){attrs.splice(0,0,classAttr)
  3904. }if(idAttr){attrs.splice(0,0,idAttr)
  3905. }return attrs
  3906. },shortAttrIterator:function(elt){var attrs=[];
  3907. if(elt.attributes){for(var i=0;
  3908. i<elt.attributes.length;
  3909. ++i){var attr=elt.attributes[i];
  3910. if(attr.nodeName=="id"||attr.nodeName=="class"){attrs.push(attr)
  3911. }}}return attrs
  3912. },getHidden:function(elt){return isVisible(elt)?"":"nodeHidden"
  3913. },getXPath:function(elt){return getElementTreeXPath(elt)
  3914. },getNodeText:function(element){var text=element.textContent;
  3915. if(Firebug.showFullTextNodes){return text
  3916. }else{return cropString(text,50)
  3917. }},getNodeTextGroups:function(element){var text=element.textContent;
  3918. if(!Firebug.showFullTextNodes){text=cropString(text,50)
  3919. }var escapeGroups=[];
  3920. if(Firebug.showTextNodesWithWhitespace){escapeGroups.push({group:"whitespace","class":"nodeWhiteSpace",extra:{"\t":"_Tab","\n":"_Para"," ":"_Space"}})
  3921. }if(Firebug.showTextNodesWithEntities){escapeGroups.push({group:"text","class":"nodeTextEntity",extra:{}})
  3922. }if(escapeGroups.length){return escapeGroupsForEntities(text,escapeGroups)
  3923. }else{return[{str:text,"class":"",extra:""}]
  3924. }},copyHTML:function(elt){var html=getElementXML(elt);
  3925. copyToClipboard(html)
  3926. },copyInnerHTML:function(elt){copyToClipboard(elt.innerHTML)
  3927. },copyXPath:function(elt){var xpath=getElementXPath(elt);
  3928. copyToClipboard(xpath)
  3929. },persistor:function(context,xpath){var elts=xpath?getElementsByXPath(context.window.document,xpath):null;
  3930. return elts&&elts.length?elts[0]:null
  3931. },className:"element",supportsObject:function(object){return instanceOf(object,"Element")
  3932. },browseObject:function(elt,context){var tag=elt.nodeName.toLowerCase();
  3933. if(tag=="script"){openNewTab(elt.src)
  3934. }else{if(tag=="link"){openNewTab(elt.href)
  3935. }else{if(tag=="a"){openNewTab(elt.href)
  3936. }else{if(tag=="img"){openNewTab(elt.src)
  3937. }}}}return true
  3938. },persistObject:function(elt,context){var xpath=getElementXPath(elt);
  3939. return bind(this.persistor,top,xpath)
  3940. },getTitle:function(element,context){return getElementCSSSelector(element)
  3941. },getTooltip:function(elt){return this.getXPath(elt)
  3942. },getContextMenuItems:function(elt,target,context){var monitored=areEventsMonitored(elt,null,context);
  3943. 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)}]
  3944. }});
  3945. this.TextNode=domplate(Firebug.Rep,{tag:OBJECTLINK("&lt;",SPAN({"class":"nodeTag"},"TextNode"),"&nbsp;textContent=&quot;",SPAN({"class":"nodeValue"},"$object.textContent|cropString"),"&quot;","&gt;"),className:"textNode",supportsObject:function(object){return object instanceof Text
  3946. }});
  3947. this.Document=domplate(Firebug.Rep,{tag:OBJECTLINK("Document ",SPAN({"class":"objectPropValue"},"$object|getLocation")),getLocation:function(doc){return doc.location?getFileName(doc.location.href):""
  3948. },className:"object",supportsObject:function(object){return instanceOf(object,"Document")
  3949. },browseObject:function(doc,context){openNewTab(doc.location.href);
  3950. return true
  3951. },persistObject:function(doc,context){return this.persistor
  3952. },persistor:function(context){return context.window.document
  3953. },getTitle:function(win,context){return"document"
  3954. },getTooltip:function(doc){return doc.location.href
  3955. }});
  3956. this.StyleSheet=domplate(Firebug.Rep,{tag:OBJECTLINK("StyleSheet ",SPAN({"class":"objectPropValue"},"$object|getLocation")),getLocation:function(styleSheet){return getFileName(styleSheet.href)
  3957. },copyURL:function(styleSheet){copyToClipboard(styleSheet.href)
  3958. },openInTab:function(styleSheet){openNewTab(styleSheet.href)
  3959. },className:"object",supportsObject:function(object){return instanceOf(object,"CSSStyleSheet")
  3960. },browseObject:function(styleSheet,context){openNewTab(styleSheet.href);
  3961. return true
  3962. },persistObject:function(styleSheet,context){return bind(this.persistor,top,styleSheet.href)
  3963. },getTooltip:function(styleSheet){return styleSheet.href
  3964. },getContextMenuItems:function(styleSheet,target,context){return[{label:"CopyLocation",command:bindFixed(this.copyURL,this,styleSheet)},"-",{label:"OpenInTab",command:bindFixed(this.openInTab,this,styleSheet)}]
  3965. },persistor:function(context,href){return getStyleSheetByHref(href,context)
  3966. }});
  3967. 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):""
  3968. }catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("reps.Window window closed?")
  3969. }}},className:"object",supportsObject:function(object){return instanceOf(object,"Window")
  3970. },browseObject:function(win,context){openNewTab(win.location.href);
  3971. return true
  3972. },persistObject:function(win,context){return this.persistor
  3973. },persistor:function(context){return context.window
  3974. },getTitle:function(win,context){return"window"
  3975. },getTooltip:function(win){if(win&&!win.closed){return win.location.href
  3976. }}});
  3977. this.Event=domplate(Firebug.Rep,{tag:TAG("$copyEventTag",{object:"$object|copyEvent"}),copyEventTag:OBJECTLINK("$object|summarizeEvent"),summarizeEvent:function(event){var info=[event.type," "];
  3978. var eventFamily=getEventFamily(event.type);
  3979. if(eventFamily=="mouse"){info.push("clientX=",event.clientX,", clientY=",event.clientY)
  3980. }else{if(eventFamily=="key"){info.push("charCode=",event.charCode,", keyCode=",event.keyCode)
  3981. }}return info.join("")
  3982. },copyEvent:function(event){return new EventCopy(event)
  3983. },className:"object",supportsObject:function(object){return instanceOf(object,"Event")||instanceOf(object,"EventCopy")
  3984. },getTitle:function(event,context){return"Event "+event.type
  3985. }});
  3986. this.SourceLink=domplate(Firebug.Rep,{tag:OBJECTLINK({$collapsed:"$object|hideSourceLink"},"$object|getSourceLinkTitle"),hideSourceLink:function(sourceLink){return sourceLink?sourceLink.href.indexOf("XPCSafeJSObjectWrapper")!=-1:true
  3987. },getSourceLinkTitle:function(sourceLink){if(!sourceLink){return""
  3988. }try{var fileName=getFileName(sourceLink.href);
  3989. fileName=decodeURIComponent(fileName);
  3990. fileName=cropString(fileName,17)
  3991. }catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("reps.getSourceLinkTitle decodeURIComponent fails for '"+fileName+"': "+exc,exc)
  3992. }}return typeof sourceLink.line=="number"?fileName+" (line "+sourceLink.line+")":fileName
  3993. },copyLink:function(sourceLink){copyToClipboard(sourceLink.href)
  3994. },openInTab:function(sourceLink){openNewTab(sourceLink.href)
  3995. },className:"sourceLink",supportsObject:function(object){return object instanceof SourceLink
  3996. },getTooltip:function(sourceLink){return decodeURI(sourceLink.href)
  3997. },inspectObject:function(sourceLink,context){if(sourceLink.type=="js"){var scriptFile=getSourceFileByHref(sourceLink.href,context);
  3998. if(scriptFile){return Firebug.chrome.select(sourceLink)
  3999. }}else{if(sourceLink.type=="css"){if(sourceLink.object){Firebug.chrome.select(sourceLink.object);
  4000. return
  4001. }var stylesheet=getStyleSheetByHref(sourceLink.href,context);
  4002. if(stylesheet){var ownerNode=stylesheet.ownerNode;
  4003. if(ownerNode){Firebug.chrome.select(sourceLink,"html");
  4004. return
  4005. }var panel=context.getPanel("stylesheet");
  4006. if(panel&&panel.getRuleByLine(stylesheet,sourceLink.line)){return Firebug.chrome.select(sourceLink)
  4007. }}}}viewSource(sourceLink.href,sourceLink.line)
  4008. },browseObject:function(sourceLink,context){openNewTab(sourceLink.href);
  4009. return true
  4010. },getContextMenuItems:function(sourceLink,target,context){return[{label:"CopyLocation",command:bindFixed(this.copyLink,this,sourceLink)},"-",{label:"OpenInTab",command:bindFixed(this.openInTab,this,sourceLink)}]
  4011. }});
  4012. this.SourceFile=domplate(this.SourceLink,{tag:OBJECTLINK({$collapsed:"$object|hideSourceLink"},"$object|getSourceLinkTitle"),persistor:function(context,href){return getSourceFileByHref(href,context)
  4013. },className:"sourceFile",supportsObject:function(object){return object instanceof SourceFile
  4014. },persistObject:function(sourceFile){return bind(this.persistor,top,sourceFile.href)
  4015. },browseObject:function(sourceLink,context){},getTooltip:function(sourceFile){return sourceFile.href
  4016. }});
  4017. 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"
  4018. },getSourceLinkTitle:function(frame){var fileName=cropString(getFileName(frame.href),20);
  4019. return fileName+(frame.lineNo?" (line "+frame.lineNo+")":"");
  4020. var fileName=cropString(getFileName(frame.href),17);
  4021. return $STRF("Line",[fileName,frame.lineNo])
  4022. },argIterator:function(frame){if(!frame.args){return[]
  4023. }var items=[];
  4024. for(var i=0;
  4025. i<frame.args.length;
  4026. ++i){var arg=frame.args[i];
  4027. if(!arg){break
  4028. }var rep=Firebug.getRep(arg.value);
  4029. var tag=rep.shortTag?rep.shortTag:rep.tag;
  4030. var delim=(i==frame.args.length-1?"":", ");
  4031. items.push({name:arg.name,value:arg.value,tag:tag,delim:delim})
  4032. }return items
  4033. },className:"stackFrame",supportsObject:function(object){return object instanceof StackFrame
  4034. },inspectObject:function(stackFrame,context){var sourceLink=new SourceLink(stackFrame.href,stackFrame.lineNo,"js");
  4035. Firebug.chrome.select(sourceLink)
  4036. },getTooltip:function(stackFrame,context){return $STRF("Line",[stackFrame.href,stackFrame.lineNo])
  4037. }});
  4038. 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
  4039. }});
  4040. this.jsdStackFrame=domplate(Firebug.Rep,{inspectable:false,supportsObject:function(object){return(object instanceof jsdIStackFrame)&&(object.isValid)
  4041. },getTitle:function(frame,context){if(!frame.isValid){return"(invalid frame)"
  4042. }return getFunctionName(frame.script,context)
  4043. },getTooltip:function(frame,context){if(!frame.isValid){return"(invalid frame)"
  4044. }var sourceInfo=FBL.getSourceFileAndLineByScript(context,frame.script,frame);
  4045. if(sourceInfo){return $STRF("Line",[sourceInfo.sourceFile.href,sourceInfo.lineNo])
  4046. }else{return $STRF("Line",[frame.script.fileName,frame.line])
  4047. }},getContextMenuItems:function(frame,target,context){var fn=frame.script.functionObject.getWrappedValue();
  4048. return FirebugReps.Func.getContextMenuItems(fn,target,context,frame.script)
  4049. }});
  4050. 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
  4051. },hasStackTrace:function(error){var url=error.href.toString();
  4052. var fromCommandLine=(url.indexOf("XPCSafeJSObjectWrapper")!=-1);
  4053. return !fromCommandLine&&error.trace
  4054. },hasBreakSwitch:function(error){return error.href&&error.lineNo>0
  4055. },hasErrorBreak:function(error){return fbs.hasErrorBreakpoint(error.href,error.lineNo)
  4056. },getMessage:function(message){var re=/\[Exception... "(.*?)" nsresult:/;
  4057. var m=re.exec(message);
  4058. return m?m[1]:message
  4059. },getLine:function(error){if(error.category=="js"){if(error.source){return cropString(error.source,80)
  4060. }else{if(error.href&&error.href.indexOf("XPCSafeJSObjectWrapper")==-1){return cropString(error.getSourceLine(),80)
  4061. }}}},getSourceLink:function(error){var ext=error.category=="css"?"css":"js";
  4062. return error.lineNo?new SourceLink(error.href,error.lineNo,ext):null
  4063. },getSourceType:function(error){if(error.source){return"syntax"
  4064. }else{if(error.lineNo==1&&getFileExtension(error.href)!="js"){return"none"
  4065. }else{if(error.category=="css"){return"none"
  4066. }else{if(!error.href||!error.lineNo){return"none"
  4067. }else{return"exec"
  4068. }}}}},onToggleError:function(event){var target=event.currentTarget;
  4069. if(hasClass(event.target,"errorBreak")){this.breakOnThisError(target.repObject)
  4070. }else{if(hasClass(event.target,"errorSource")){var panel=Firebug.getElementPanel(event.target);
  4071. this.inspectObject(target.repObject,panel.context)
  4072. }else{if(hasClass(event.target,"errorTitle")){var traceBox=target.childNodes[1];
  4073. toggleClass(target,"opened");
  4074. event.target.setAttribute("aria-checked",hasClass(target,"opened"));
  4075. if(hasClass(target,"opened")){if(target.stackTrace){var node=FirebugReps.StackTrace.tag.append({object:target.stackTrace},traceBox)
  4076. }if(Firebug.A11yModel.enabled){var panel=Firebug.getElementPanel(event.target);
  4077. dispatch([Firebug.A11yModel],"onLogRowContentCreated",[panel,traceBox])
  4078. }}else{clearNode(traceBox)
  4079. }}}}},copyError:function(error){var message=[this.getMessage(error.message),error.href,"Line "+error.lineNo];
  4080. copyToClipboard(message.join("\n"))
  4081. },breakOnThisError:function(error){if(this.hasErrorBreak(error)){Firebug.Debugger.clearErrorBreakpoint(error.href,error.lineNo)
  4082. }else{Firebug.Debugger.setErrorBreakpoint(error.href,error.lineNo)
  4083. }},className:"errorMessage",inspectable:false,supportsObject:function(object){return object instanceof ErrorMessage
  4084. },inspectObject:function(error,context){var sourceLink=this.getSourceLink(error);
  4085. FirebugReps.SourceLink.inspectObject(sourceLink,context)
  4086. },getContextMenuItems:function(error,target,context){var breakOnThisError=this.hasErrorBreak(error);
  4087. var items=[{label:"CopyError",command:bindFixed(this.copyError,this,error)}];
  4088. if(error.category=="css"){items.push("-",{label:"BreakOnThisError",type:"checkbox",checked:breakOnThisError,command:bindFixed(this.breakOnThisError,this,error)},optionMenu("BreakOnAllErrors","breakOnErrors"))
  4089. }return items
  4090. }});
  4091. this.Assert=domplate(Firebug.Rep,{tag:DIV(DIV({"class":"errorTitle"}),DIV({"class":"assertDescription"})),className:"assert",inspectObject:function(error,context){var sourceLink=this.getSourceLink(error);
  4092. Firebug.chrome.select(sourceLink)
  4093. },getContextMenuItems:function(error,target,context){var breakOnThisError=this.hasErrorBreak(error);
  4094. 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)}]
  4095. }});
  4096. 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;
  4097. var list=[];
  4098. for(var i=0;
  4099. i<sourceText.lines.length;
  4100. ++i){var lineNo=(i+1)+"";
  4101. while(lineNo.length<maxLineNoChars){lineNo=" "+lineNo
  4102. }list.push({lineNo:lineNo,text:sourceText.lines[i]})
  4103. }return list
  4104. },getHTML:function(sourceText){return getSourceLineRange(sourceText,1,sourceText.lines.length)
  4105. }});
  4106. this.nsIDOMHistory=domplate(Firebug.Rep,{tag:OBJECTBOX({onclick:"$showHistory"},OBJECTLINK("$object|summarizeHistory")),className:"nsIDOMHistory",summarizeHistory:function(history){try{var items=history.length;
  4107. return items+" history entries"
  4108. }catch(exc){return"object does not support history (nsIDOMHistory)"
  4109. }},showHistory:function(history){try{var items=history.length;
  4110. Firebug.chrome.select(history)
  4111. }catch(exc){}},supportsObject:function(object,type){return(object instanceof Ci.nsIDOMHistory)
  4112. }});
  4113. this.ApplicationCache=domplate(Firebug.Rep,{tag:OBJECTBOX({onclick:"$showApplicationCache"},OBJECTLINK("$object|summarizeCache")),summarizeCache:function(applicationCache){try{return applicationCache.length+" items in offline cache"
  4114. }catch(exc){return"https://bugzilla.mozilla.org/show_bug.cgi?id=422264"
  4115. }},showApplicationCache:function(event){openNewTab("https://bugzilla.mozilla.org/show_bug.cgi?id=422264")
  4116. },className:"applicationCache",supportsObject:function(object,type){if(Ci.nsIDOMOfflineResourceList){return(object instanceof Ci.nsIDOMOfflineResourceList)
  4117. }}});
  4118. this.Storage=domplate(Firebug.Rep,{tag:OBJECTBOX({onclick:"$show"},OBJECTLINK("$object|summarize")),summarize:function(storage){return storage.length+" items in Storage"
  4119. },show:function(storage){openNewTab("http://dev.w3.org/html5/webstorage/#storage-0")
  4120. },className:"Storage",supportsObject:function(object,type){return(object instanceof Storage)
  4121. }});
  4122. 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);
  4123. Firebug.setDefaultReps(this.Func,this.Obj)
  4124. }});
  4125. FBL.ns(function(){with(FBL){var saveTimeout=400;
  4126. var pageAmount=10;
  4127. var currentTarget=null;
  4128. var currentGroup=null;
  4129. var currentPanel=null;
  4130. var currentEditor=null;
  4131. var defaultEditor=null;
  4132. var originalClassName=null;
  4133. var originalValue=null;
  4134. var defaultValue=null;
  4135. var previousValue=null;
  4136. var invalidEditor=false;
  4137. var ignoreNextInput=false;
  4138. Firebug.Editor=extend(Firebug.Module,{supportsStopEvent:true,dispatchName:"editor",tabCharacter:" ",startEditing:function(target,value,editor){this.stopEditing();
  4139. if(hasClass(target,"insertBefore")||hasClass(target,"insertAfter")){return
  4140. }var panel=Firebug.getElementPanel(target);
  4141. if(!panel.editable){return
  4142. }if(FBTrace.DBG_EDITOR){FBTrace.sysout("editor.startEditing "+value,target)
  4143. }defaultValue=target.getAttribute("defaultValue");
  4144. if(value==undefined){var textContent=isIE?"innerText":"textContent";
  4145. value=target[textContent];
  4146. if(value==defaultValue){value=""
  4147. }}originalValue=previousValue=value;
  4148. invalidEditor=false;
  4149. currentTarget=target;
  4150. currentPanel=panel;
  4151. currentGroup=getAncestorByClass(target,"editGroup");
  4152. currentPanel.editing=true;
  4153. var panelEditor=currentPanel.getEditor(target,value);
  4154. currentEditor=editor?editor:panelEditor;
  4155. if(!currentEditor){currentEditor=getDefaultEditor(currentPanel)
  4156. }var inlineParent=getInlineParent(target);
  4157. var targetSize=getOffsetSize(inlineParent);
  4158. setClass(panel.panelNode,"editing");
  4159. setClass(target,"editing");
  4160. if(currentGroup){setClass(currentGroup,"editing")
  4161. }currentEditor.show(target,currentPanel,value,targetSize);
  4162. currentEditor.beginEditing(target,value);
  4163. if(FBTrace.DBG_EDITOR){FBTrace.sysout("Editor start panel "+currentPanel.name)
  4164. }this.attachListeners(currentEditor,panel.context)
  4165. },stopEditing:function(cancel){if(!currentTarget){return
  4166. }if(FBTrace.DBG_EDITOR){FBTrace.sysout("editor.stopEditing cancel:"+cancel+" saveTimeout: "+this.saveTimeout)
  4167. }clearTimeout(this.saveTimeout);
  4168. delete this.saveTimeout;
  4169. this.detachListeners(currentEditor,currentPanel.context);
  4170. removeClass(currentPanel.panelNode,"editing");
  4171. removeClass(currentTarget,"editing");
  4172. if(currentGroup){removeClass(currentGroup,"editing")
  4173. }var value=currentEditor.getValue();
  4174. if(value==defaultValue){value=""
  4175. }var removeGroup=currentEditor.endEditing(currentTarget,value,cancel);
  4176. try{if(cancel){if(value!=originalValue){this.saveEditAndNotifyListeners(currentTarget,originalValue,previousValue)
  4177. }if(removeGroup&&!originalValue&&currentGroup){currentGroup.parentNode.removeChild(currentGroup)
  4178. }}else{if(!value){this.saveEditAndNotifyListeners(currentTarget,null,previousValue);
  4179. if(removeGroup&&currentGroup){currentGroup.parentNode.removeChild(currentGroup)
  4180. }}else{this.save(value)
  4181. }}}catch(exc){}currentEditor.hide();
  4182. currentPanel.editing=false;
  4183. currentTarget=null;
  4184. currentGroup=null;
  4185. currentPanel=null;
  4186. currentEditor=null;
  4187. originalValue=null;
  4188. invalidEditor=false;
  4189. return value
  4190. },cancelEditing:function(){return this.stopEditing(true)
  4191. },update:function(saveNow){if(this.saveTimeout){clearTimeout(this.saveTimeout)
  4192. }invalidEditor=true;
  4193. currentEditor.layout();
  4194. if(saveNow){this.save()
  4195. }else{var context=currentPanel.context;
  4196. this.saveTimeout=context.setTimeout(bindFixed(this.save,this),saveTimeout);
  4197. if(FBTrace.DBG_EDITOR){FBTrace.sysout("editor.update saveTimeout: "+this.saveTimeout)
  4198. }}},save:function(value){if(!invalidEditor){return
  4199. }if(value==undefined){value=currentEditor.getValue()
  4200. }if(FBTrace.DBG_EDITOR){FBTrace.sysout("editor.save saveTimeout: "+this.saveTimeout+" currentPanel: "+(currentPanel?currentPanel.name:"null"))
  4201. }try{this.saveEditAndNotifyListeners(currentTarget,value,previousValue);
  4202. previousValue=value;
  4203. invalidEditor=false
  4204. }catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("editor.save FAILS "+exc,exc)
  4205. }}},saveEditAndNotifyListeners:function(currentTarget,value,previousValue){currentEditor.saveEdit(currentTarget,value,previousValue)
  4206. },setEditTarget:function(element){if(!element){dispatch([Firebug.A11yModel],"onInlineEditorClose",[currentPanel,currentTarget,true]);
  4207. this.stopEditing()
  4208. }else{if(hasClass(element,"insertBefore")){this.insertRow(element,"before")
  4209. }else{if(hasClass(element,"insertAfter")){this.insertRow(element,"after")
  4210. }else{this.startEditing(element)
  4211. }}}},tabNextEditor:function(){if(!currentTarget){return
  4212. }var value=currentEditor.getValue();
  4213. var nextEditable=currentTarget;
  4214. do{nextEditable=!value&&currentGroup?getNextOutsider(nextEditable,currentGroup):getNextByClass(nextEditable,"editable")
  4215. }while(nextEditable&&!nextEditable.offsetHeight);
  4216. this.setEditTarget(nextEditable)
  4217. },tabPreviousEditor:function(){if(!currentTarget){return
  4218. }var value=currentEditor.getValue();
  4219. var prevEditable=currentTarget;
  4220. do{prevEditable=!value&&currentGroup?getPreviousOutsider(prevEditable,currentGroup):getPreviousByClass(prevEditable,"editable")
  4221. }while(prevEditable&&!prevEditable.offsetHeight);
  4222. this.setEditTarget(prevEditable)
  4223. },insertRow:function(relative,insertWhere){var group=relative||getAncestorByClass(currentTarget,"editGroup")||currentTarget;
  4224. var value=this.stopEditing();
  4225. currentPanel=Firebug.getElementPanel(group);
  4226. currentEditor=currentPanel.getEditor(group,value);
  4227. if(!currentEditor){currentEditor=getDefaultEditor(currentPanel)
  4228. }currentGroup=currentEditor.insertNewRow(group,insertWhere);
  4229. if(!currentGroup){return
  4230. }var editable=hasClass(currentGroup,"editable")?currentGroup:getNextByClass(currentGroup,"editable");
  4231. if(editable){this.setEditTarget(editable)
  4232. }},insertRowForObject:function(relative){var container=getAncestorByClass(relative,"insertInto");
  4233. if(container){relative=getChildByClass(container,"insertBefore");
  4234. if(relative){this.insertRow(relative,"before")
  4235. }}},attachListeners:function(editor,context){var win=isIE?currentTarget.ownerDocument.parentWindow:currentTarget.ownerDocument.defaultView;
  4236. addEvent(win,"resize",this.onResize);
  4237. addEvent(win,"blur",this.onBlur);
  4238. var chrome=Firebug.chrome;
  4239. this.listeners=[chrome.keyCodeListen("ESCAPE",null,bind(this.cancelEditing,this))];
  4240. 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)))
  4241. }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)))
  4242. }else{if(currentEditor.multiLine){this.listeners.push(chrome.keyCodeListen("TAB",null,insertTab))
  4243. }else{this.listeners.push(chrome.keyCodeListen("RETURN",null,bindFixed(this.stopEditing,this)));
  4244. if(currentEditor.tabCompletion){this.listeners.push(chrome.keyCodeListen("TAB",null,bind(editor.completeValue,editor,1)),chrome.keyCodeListen("TAB",isShift,bind(editor.completeValue,editor,-1)))
  4245. }}}},detachListeners:function(editor,context){if(!this.listeners){return
  4246. }var win=isIE?currentTarget.ownerDocument.parentWindow:currentTarget.ownerDocument.defaultView;
  4247. removeEvent(win,"resize",this.onResize);
  4248. removeEvent(win,"blur",this.onBlur);
  4249. var chrome=Firebug.chrome;
  4250. if(chrome){for(var i=0;
  4251. i<this.listeners.length;
  4252. ++i){chrome.keyIgnore(this.listeners[i])
  4253. }}delete this.listeners
  4254. },onResize:function(event){currentEditor.layout(true)
  4255. },onBlur:function(event){if(currentEditor.enterOnBlur&&isAncestor(event.target,currentEditor.box)){this.stopEditing()
  4256. }},initialize:function(){Firebug.Module.initialize.apply(this,arguments);
  4257. this.onResize=bindFixed(this.onResize,this);
  4258. this.onBlur=bind(this.onBlur,this)
  4259. },disable:function(){this.stopEditing()
  4260. },showContext:function(browser,context){this.stopEditing()
  4261. },showPanel:function(browser,panel){this.stopEditing()
  4262. }});
  4263. 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=[];
  4264. items.push({label:"Cut",commandID:"cmd_cut"});
  4265. items.push({label:"Copy",commandID:"cmd_copy"});
  4266. items.push({label:"Paste",commandID:"cmd_paste"});
  4267. return items
  4268. },beginEditing:function(target,value){},saveEdit:function(target,value,previousValue){},endEditing:function(target,value,cancel){return true
  4269. },insertNewRow:function(target,insertWhere){}});
  4270. var inlineEditorAttributes={"class":"textEditorInner",type:"text",spellcheck:"false",onkeypress:"$onKeyPress",onoverflow:"$onOverflow",oncontextmenu:"$onContextMenu"};
  4271. if(isIE){inlineEditorAttributes.onpropertychange="$onInput";
  4272. inlineEditorAttributes.onkeydown="$onKeyDown"
  4273. }else{inlineEditorAttributes.oninput="$onInput"
  4274. }Firebug.InlineEditor=function(doc){this.initializeInline(doc)
  4275. };
  4276. 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;
  4277. this.completeAsYouType=true;
  4278. this.tabNavigation=true;
  4279. this.multiLine=false;
  4280. this.tabCompletion=false;
  4281. this.arrowCompletion=true;
  4282. this.noWrap=true;
  4283. this.numeric=false
  4284. },destroy:function(){this.destroyInput()
  4285. },initializeInline:function(doc){if(FBTrace.DBG_EDITOR){FBTrace.sysout("Firebug.InlineEditor initializeInline()")
  4286. }this.box=this.tag.append({},doc.body,this);
  4287. this.input=this.box.getElementsByTagName("input")[0];
  4288. if(isIElt8){this.input.style.top="-8px"
  4289. }this.expander=this.expanderTag.replace({},doc,this);
  4290. this.initialize()
  4291. },destroyInput:function(){},getValue:function(){return this.input.value
  4292. },setValue:function(value){return this.input.value=stripNewLines(value)
  4293. },show:function(target,panel,value,targetSize){this.target=target;
  4294. this.panel=panel;
  4295. this.targetSize=targetSize;
  4296. var innerHTML=target.innerHTML;
  4297. var isEmptyElement=!innerHTML;
  4298. if(isEmptyElement){target.innerHTML="."
  4299. }this.targetOffset={x:target.offsetLeft,y:target.offsetTop};
  4300. if(isEmptyElement){target.innerHTML=innerHTML
  4301. }this.originalClassName=this.box.className;
  4302. var classNames=target.className.split(" ");
  4303. for(var i=0;
  4304. i<classNames.length;
  4305. ++i){setClass(this.box,"editor-"+classNames[i])
  4306. }copyTextStyles(target,this.box);
  4307. this.setValue(value);
  4308. if(this.fixedWidth){this.updateLayout(true)
  4309. }else{this.startMeasuring(target);
  4310. this.textSize=this.measureInputText(value);
  4311. var parent=this.input.parentNode;
  4312. if(hasClass(parent,"textEditorInner2")){var yDiff=this.textSize.height-this.shadowExpand;
  4313. if(isIE6){yDiff-=2
  4314. }parent.style.height=yDiff+"px";
  4315. parent.parentNode.style.height=yDiff+"px"
  4316. }this.updateLayout(true)
  4317. }this.getAutoCompleter().reset();
  4318. if(isIElt8){panel.panelNode.appendChild(this.box)
  4319. }else{target.offsetParent.appendChild(this.box)
  4320. }if(isIE){this.input.style.fontFamily="Monospace";
  4321. this.input.style.fontSize="11px"
  4322. }if(!this.fixedWidth){copyBoxStyles(target,this.expander);
  4323. target.parentNode.replaceChild(this.expander,target);
  4324. collapse(target,true);
  4325. this.expander.parentNode.insertBefore(target,this.expander)
  4326. }this.box.style.display="block";
  4327. var self=this;
  4328. setTimeout(function(){self.input.focus();
  4329. self.input.select()
  4330. },0)
  4331. },hide:function(){this.box.className=this.originalClassName;
  4332. if(!this.fixedWidth){this.stopMeasuring();
  4333. collapse(this.target,false);
  4334. if(this.expander.parentNode){this.expander.parentNode.removeChild(this.expander)
  4335. }}if(this.box.parentNode){this.input.blur();
  4336. this.box.parentNode.removeChild(this.box)
  4337. }delete this.target;
  4338. delete this.panel
  4339. },layout:function(forceAll){if(!this.fixedWidth){this.textSize=this.measureInputText(this.input.value)
  4340. }if(forceAll){this.targetOffset=getClientOffset(this.expander)
  4341. }this.updateLayout(false,forceAll)
  4342. },beginEditing:function(target,value){},saveEdit:function(target,value,previousValue){},endEditing:function(target,value,cancel){return true
  4343. },insertNewRow:function(target,insertWhere){},advanceToNext:function(target,charCode){return false
  4344. },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)
  4345. }return this.autoCompleter
  4346. },completeValue:function(amt){var selectRangeCallback=this.getAutoCompleter().complete(currentPanel.context,this.input,true,amt<0);
  4347. if(selectRangeCallback){Firebug.Editor.update(true);
  4348. if(isSafari){setTimeout(selectRangeCallback,0)
  4349. }else{selectRangeCallback()
  4350. }}else{this.incrementValue(amt)
  4351. }},incrementValue:function(amt){var value=this.input.value;
  4352. if(isIE){var start=getInputSelectionStart(this.input),end=start
  4353. }else{var start=this.input.selectionStart,end=this.input.selectionEnd
  4354. }var range=this.getAutoCompleteRange(value,start);
  4355. if(!range||range.type!="int"){range={start:0,end:value.length-1}
  4356. }var expr=value.substr(range.start,range.end-range.start+1);
  4357. preExpr=value.substr(0,range.start);
  4358. postExpr=value.substr(range.end+1);
  4359. var intValue=parseInt(expr);
  4360. if(!!intValue||intValue==0){var m=/\d+/.exec(expr);
  4361. var digitPost=expr.substr(m.index+m[0].length);
  4362. var completion=intValue-amt;
  4363. this.input.value=preExpr+completion+digitPost+postExpr;
  4364. setSelectionRange(this.input,start,end);
  4365. Firebug.Editor.update(true);
  4366. return true
  4367. }else{return false
  4368. }},onKeyPress:function(event){if(event.keyCode==27&&!this.completeAsYouType){var reverted=this.getAutoCompleter().revert(this.input);
  4369. if(reverted){cancelEvent(event)
  4370. }}else{if(event.charCode&&this.advanceToNext(this.target,event.charCode)){Firebug.Editor.tabNextEditor();
  4371. cancelEvent(event)
  4372. }else{if(this.numeric&&event.charCode&&(event.charCode<48||event.charCode>57)&&event.charCode!=45&&event.charCode!=46){FBL.cancelEvent(event)
  4373. }else{this.ignoreNextInput=event.keyCode==8
  4374. }}}},onOverflow:function(){this.updateLayout(false,false,3)
  4375. },onKeyDown:function(event){if(event.keyCode>46||event.keyCode==32||event.keyCode==8){this.keyDownPressed=true
  4376. }},onInput:function(event){if(isIE){if(event.propertyName!="value"||!isVisible(this.input)||!this.keyDownPressed){return
  4377. }this.keyDownPressed=false
  4378. }var selectRangeCallback;
  4379. if(this.ignoreNextInput){this.ignoreNextInput=false;
  4380. this.getAutoCompleter().reset()
  4381. }else{if(this.completeAsYouType){selectRangeCallback=this.getAutoCompleter().complete(currentPanel.context,this.input,false)
  4382. }else{this.getAutoCompleter().reset()
  4383. }}Firebug.Editor.update();
  4384. if(selectRangeCallback){if(isSafari){setTimeout(selectRangeCallback,0)
  4385. }else{selectRangeCallback()
  4386. }}},onContextMenu:function(event){cancelEvent(event);
  4387. var popup=$("fbInlineEditorPopup");
  4388. FBL.eraseNode(popup);
  4389. var target=event.target||event.srcElement;
  4390. var menu=this.getContextMenuItems(target);
  4391. if(menu){for(var i=0;
  4392. i<menu.length;
  4393. ++i){FBL.createMenuItem(popup,menu[i])
  4394. }}if(!popup.firstChild){return false
  4395. }popup.openPopupAtScreen(event.screenX,event.screenY,true);
  4396. return true
  4397. },updateLayout:function(initial,forceAll,extraWidth){if(this.fixedWidth){this.box.style.left=(this.targetOffset.x)+"px";
  4398. this.box.style.top=(this.targetOffset.y)+"px";
  4399. var w=this.target.offsetWidth;
  4400. var h=this.target.offsetHeight;
  4401. this.input.style.width=w+"px";
  4402. this.input.style.height=(h-3)+"px"
  4403. }else{if(initial||forceAll){this.box.style.left=this.targetOffset.x+"px";
  4404. this.box.style.top=this.targetOffset.y+"px"
  4405. }var approxTextWidth=this.textSize.width;
  4406. var maxWidth=(currentPanel.panelNode.scrollWidth-this.targetOffset.x)-this.outerMargin;
  4407. var wrapped=initial?this.noWrap&&this.targetSize.height>this.textSize.height+3:this.noWrap&&approxTextWidth>maxWidth;
  4408. if(wrapped){var style=isIE?this.target.currentStyle:this.target.ownerDocument.defaultView.getComputedStyle(this.target,"");
  4409. targetMargin=parseInt(style.marginLeft)+parseInt(style.marginRight);
  4410. approxTextWidth=maxWidth-targetMargin;
  4411. this.input.style.width="100%";
  4412. this.box.style.width=approxTextWidth+"px"
  4413. }else{var charWidth=this.measureInputText("m").width;
  4414. if(extraWidth){charWidth*=extraWidth
  4415. }var inputWidth=approxTextWidth+charWidth;
  4416. if(initial){if(isIE){var xDiff=13;
  4417. this.box.style.width=(inputWidth+xDiff)+"px"
  4418. }else{this.box.style.width="auto"
  4419. }}else{var xDiff=isIE?13:this.box.scrollWidth-this.input.offsetWidth;
  4420. this.box.style.width=(inputWidth+xDiff)+"px"
  4421. }this.input.style.width=inputWidth+"px"
  4422. }this.expander.style.width=approxTextWidth+"px";
  4423. this.expander.style.height=Math.max(this.textSize.height-3,0)+"px"
  4424. }if(forceAll){scrollIntoCenterView(this.box,null,true)
  4425. }}});
  4426. Firebug.AutoCompleter=function(getExprOffset,getRange,evaluator,selectMode,caseSensitive){var candidates=null;
  4427. var originalValue=null;
  4428. var originalOffset=-1;
  4429. var lastExpr=null;
  4430. var lastOffset=-1;
  4431. var exprOffset=0;
  4432. var lastIndex=0;
  4433. var preParsed=null;
  4434. var preExpr=null;
  4435. var postExpr=null;
  4436. this.revert=function(textBox){if(originalOffset!=-1){textBox.value=originalValue;
  4437. setSelectionRange(textBox,originalOffset,originalOffset);
  4438. this.reset();
  4439. return true
  4440. }else{this.reset();
  4441. return false
  4442. }};
  4443. this.reset=function(){candidates=null;
  4444. originalValue=null;
  4445. originalOffset=-1;
  4446. lastExpr=null;
  4447. lastOffset=0;
  4448. exprOffset=0
  4449. };
  4450. this.complete=function(context,textBox,cycle,reverse){var value=textBox.value;
  4451. var offset=getInputSelectionStart(textBox);
  4452. if(isSafari&&!cycle&&offset>=0){offset++
  4453. }if(!selectMode&&originalOffset!=-1){offset=originalOffset
  4454. }if(!candidates||!cycle||offset!=lastOffset){originalOffset=offset;
  4455. originalValue=value;
  4456. var parseStart=getExprOffset?getExprOffset(value,offset,context):0;
  4457. preParsed=value.substr(0,parseStart);
  4458. var parsed=value.substr(parseStart);
  4459. var range=getRange?getRange(parsed,offset-parseStart,context):null;
  4460. if(!range){range={start:0,end:parsed.length-1}
  4461. }var expr=parsed.substr(range.start,range.end-range.start+1);
  4462. preExpr=parsed.substr(0,range.start);
  4463. postExpr=parsed.substr(range.end+1);
  4464. exprOffset=parseStart+range.start;
  4465. if(!cycle){if(!expr){return
  4466. }else{if(lastExpr&&lastExpr.indexOf(expr)!=0){candidates=null
  4467. }else{if(lastExpr&&lastExpr.length>=expr.length){candidates=null;
  4468. lastExpr=expr;
  4469. return
  4470. }}}}lastExpr=expr;
  4471. lastOffset=offset;
  4472. var searchExpr;
  4473. if(expr&&offset!=parseStart+range.end+1){if(cycle){offset=range.start;
  4474. searchExpr=expr;
  4475. expr=""
  4476. }else{return
  4477. }}var values=evaluator(preExpr,expr,postExpr,context);
  4478. if(!values){return
  4479. }if(expr){candidates=[];
  4480. if(caseSensitive){for(var i=0;
  4481. i<values.length;
  4482. ++i){var name=values[i];
  4483. if(name.indexOf&&name.indexOf(expr)==0){candidates.push(name)
  4484. }}}else{var lowerExpr=caseSensitive?expr:expr.toLowerCase();
  4485. for(var i=0;
  4486. i<values.length;
  4487. ++i){var name=values[i];
  4488. if(name.indexOf&&name.toLowerCase().indexOf(lowerExpr)==0){candidates.push(name)
  4489. }}}lastIndex=reverse?candidates.length-1:0
  4490. }else{if(searchExpr){var searchIndex=-1;
  4491. if(caseSensitive){searchIndex=values.indexOf(expr)
  4492. }else{var lowerExpr=searchExpr.toLowerCase();
  4493. for(var i=0;
  4494. i<values.length;
  4495. ++i){var name=values[i];
  4496. if(name&&name.toLowerCase().indexOf(lowerExpr)==0){searchIndex=i;
  4497. break
  4498. }}}if(searchIndex==-1){return this.reset()
  4499. }expr=searchExpr;
  4500. candidates=cloneArray(values);
  4501. lastIndex=searchIndex
  4502. }else{expr="";
  4503. candidates=[];
  4504. for(var i=0;
  4505. i<values.length;
  4506. ++i){if(values[i].substr){candidates.push(values[i])
  4507. }}lastIndex=-1
  4508. }}}if(cycle){expr=lastExpr;
  4509. lastIndex+=reverse?-1:1
  4510. }if(!candidates.length){return
  4511. }if(lastIndex>=candidates.length){lastIndex=0
  4512. }else{if(lastIndex<0){lastIndex=candidates.length-1
  4513. }}var completion=candidates[lastIndex];
  4514. var preCompletion=expr.substr(0,offset-exprOffset);
  4515. var postCompletion=completion.substr(offset-exprOffset);
  4516. textBox.value=preParsed+preExpr+preCompletion+postCompletion+postExpr;
  4517. var offsetEnd=preParsed.length+preExpr.length+completion.length;
  4518. return function(){if(selectMode){setSelectionRange(textBox,offset,offsetEnd)
  4519. }else{setSelectionRange(textBox,offsetEnd,offsetEnd)
  4520. }}
  4521. }
  4522. };
  4523. var getDefaultEditor=function getDefaultEditor(panel){if(!defaultEditor){var doc=panel.document;
  4524. defaultEditor=new Firebug.InlineEditor(doc)
  4525. }return defaultEditor
  4526. };
  4527. var getOutsider=function getOutsider(element,group,stepper){var parentGroup=getAncestorByClass(group.parentNode,"editGroup");
  4528. var next;
  4529. do{next=stepper(next||element)
  4530. }while(isAncestor(next,group)||isGroupInsert(next,parentGroup));
  4531. return next
  4532. };
  4533. var isGroupInsert=function isGroupInsert(next,group){return(!group||isAncestor(next,group))&&(hasClass(next,"insertBefore")||hasClass(next,"insertAfter"))
  4534. };
  4535. var getNextOutsider=function getNextOutsider(element,group){return getOutsider(element,group,bind(getNextByClass,FBL,"editable"))
  4536. };
  4537. var getPreviousOutsider=function getPreviousOutsider(element,group){return getOutsider(element,group,bind(getPreviousByClass,FBL,"editable"))
  4538. };
  4539. var getInlineParent=function getInlineParent(element){var lastInline=element;
  4540. for(;
  4541. element;
  4542. element=element.parentNode){var s=isIE?element.currentStyle:element.ownerDocument.defaultView.getComputedStyle(element,"");
  4543. if(s.display!="inline"){return lastInline
  4544. }else{lastInline=element
  4545. }}return null
  4546. };
  4547. var insertTab=function insertTab(){insertTextIntoElement(currentEditor.input,Firebug.Editor.tabCharacter)
  4548. };
  4549. Firebug.registerModule(Firebug.Editor)
  4550. }});
  4551. FBL.ns(function(){with(FBL){var ElementCache=Firebug.Lite.Cache.Element;
  4552. var inspectorTS,inspectorTimer,isInspecting;
  4553. Firebug.Inspector={create:function(){offlineFragment=Env.browser.document.createDocumentFragment();
  4554. createBoxModelInspector();
  4555. createOutlineInspector()
  4556. },destroy:function(){destroyBoxModelInspector();
  4557. destroyOutlineInspector();
  4558. offlineFragment=null
  4559. },toggleInspect:function(){if(isInspecting){this.stopInspecting()
  4560. }else{Firebug.chrome.inspectButton.changeState("pressed");
  4561. this.startInspecting()
  4562. }},startInspecting:function(){isInspecting=true;
  4563. Firebug.chrome.selectPanel("HTML");
  4564. createInspectorFrame();
  4565. var size=Firebug.browser.getWindowScrollSize();
  4566. fbInspectFrame.style.width=size.width+"px";
  4567. fbInspectFrame.style.height=size.height+"px";
  4568. addEvent(fbInspectFrame,"mousemove",Firebug.Inspector.onInspecting);
  4569. addEvent(fbInspectFrame,"mousedown",Firebug.Inspector.onInspectingClick)
  4570. },stopInspecting:function(){isInspecting=false;
  4571. if(outlineVisible){this.hideOutline()
  4572. }removeEvent(fbInspectFrame,"mousemove",Firebug.Inspector.onInspecting);
  4573. removeEvent(fbInspectFrame,"mousedown",Firebug.Inspector.onInspectingClick);
  4574. destroyInspectorFrame();
  4575. Firebug.chrome.inspectButton.restore();
  4576. if(Firebug.chrome.type=="popup"){Firebug.chrome.node.focus()
  4577. }},onInspectingClick:function(e){fbInspectFrame.style.display="none";
  4578. var targ=Firebug.browser.getElementFromPoint(e.clientX,e.clientY);
  4579. fbInspectFrame.style.display="block";
  4580. var id=targ.id;
  4581. if(id&&/^fbOutline\w$/.test(id)){return
  4582. }if(id=="FirebugUI"){return
  4583. }while(targ.nodeType!=1){targ=targ.parentNode
  4584. }Firebug.Inspector.stopInspecting()
  4585. },onInspecting:function(e){if(new Date().getTime()-lastInspecting>30){fbInspectFrame.style.display="none";
  4586. var targ=Firebug.browser.getElementFromPoint(e.clientX,e.clientY);
  4587. fbInspectFrame.style.display="block";
  4588. var id=targ.id;
  4589. if(id&&/^fbOutline\w$/.test(id)){return
  4590. }if(id=="FirebugUI"){return
  4591. }while(targ.nodeType!=1){targ=targ.parentNode
  4592. }if(targ.nodeName.toLowerCase()=="body"){return
  4593. }Firebug.Inspector.drawOutline(targ);
  4594. if(ElementCache(targ)){var target=""+ElementCache.key(targ);
  4595. var lazySelect=function(){inspectorTS=new Date().getTime();
  4596. Firebug.HTML.selectTreeNode(""+ElementCache.key(targ))
  4597. };
  4598. if(inspectorTimer){clearTimeout(inspectorTimer);
  4599. inspectorTimer=null
  4600. }if(new Date().getTime()-inspectorTS>200){setTimeout(lazySelect,0)
  4601. }else{inspectorTimer=setTimeout(lazySelect,300)
  4602. }}lastInspecting=new Date().getTime()
  4603. }},onInspectingBody:function(e){if(new Date().getTime()-lastInspecting>30){var targ=e.target;
  4604. var id=targ.id;
  4605. if(id&&/^fbOutline\w$/.test(id)){return
  4606. }if(id=="FirebugUI"){return
  4607. }while(targ.nodeType!=1){targ=targ.parentNode
  4608. }if(targ.nodeName.toLowerCase()=="body"){return
  4609. }Firebug.Inspector.drawOutline(targ);
  4610. if(ElementCache.has(targ)){FBL.Firebug.HTML.selectTreeNode(""+ElementCache.key(targ))
  4611. }lastInspecting=new Date().getTime()
  4612. }},drawOutline:function(el){var border=2;
  4613. var scrollbarSize=17;
  4614. var windowSize=Firebug.browser.getWindowSize();
  4615. var scrollSize=Firebug.browser.getWindowScrollSize();
  4616. var scrollPosition=Firebug.browser.getWindowScrollPosition();
  4617. var box=Firebug.browser.getElementBox(el);
  4618. var top=box.top;
  4619. var left=box.left;
  4620. var height=box.height;
  4621. var width=box.width;
  4622. var freeHorizontalSpace=scrollPosition.left+windowSize.width-left-width-(!isIE&&scrollSize.height>windowSize.height?scrollbarSize:0);
  4623. var freeVerticalSpace=scrollPosition.top+windowSize.height-top-height-(!isIE&&scrollSize.width>windowSize.width?scrollbarSize:0);
  4624. var numVerticalBorders=freeVerticalSpace>0?2:1;
  4625. var o=outlineElements;
  4626. var style;
  4627. style=o.fbOutlineT.style;
  4628. style.top=top-border+"px";
  4629. style.left=left+"px";
  4630. style.height=border+"px";
  4631. style.width=width+"px";
  4632. style=o.fbOutlineL.style;
  4633. style.top=top-border+"px";
  4634. style.left=left-border+"px";
  4635. style.height=height+numVerticalBorders*border+"px";
  4636. style.width=border+"px";
  4637. style=o.fbOutlineB.style;
  4638. if(freeVerticalSpace>0){style.top=top+height+"px";
  4639. style.left=left+"px";
  4640. style.width=width+"px"
  4641. }else{style.top=-2*border+"px";
  4642. style.left=-2*border+"px";
  4643. style.width=border+"px"
  4644. }style=o.fbOutlineR.style;
  4645. if(freeHorizontalSpace>0){style.top=top-border+"px";
  4646. style.left=left+width+"px";
  4647. style.height=height+numVerticalBorders*border+"px";
  4648. style.width=(freeHorizontalSpace<border?freeHorizontalSpace:border)+"px"
  4649. }else{style.top=-2*border+"px";
  4650. style.left=-2*border+"px";
  4651. style.height=border+"px";
  4652. style.width=border+"px"
  4653. }if(!outlineVisible){this.showOutline()
  4654. }},hideOutline:function(){if(!outlineVisible){return
  4655. }for(var name in outline){offlineFragment.appendChild(outlineElements[name])
  4656. }outlineVisible=false
  4657. },showOutline:function(){if(outlineVisible){return
  4658. }if(boxModelVisible){this.hideBoxModel()
  4659. }for(var name in outline){Firebug.browser.document.getElementsByTagName("body")[0].appendChild(outlineElements[name])
  4660. }outlineVisible=true
  4661. },drawBoxModel:function(el){if(!el||!el.parentNode){return
  4662. }var box=Firebug.browser.getElementBox(el);
  4663. var windowSize=Firebug.browser.getWindowSize();
  4664. var scrollPosition=Firebug.browser.getWindowScrollPosition();
  4665. var offsetHeight=Firebug.chrome.type=="frame"?FirebugChrome.height:0;
  4666. 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
  4667. }var top=box.top;
  4668. var left=box.left;
  4669. var height=box.height;
  4670. var width=box.width;
  4671. var margin=Firebug.browser.getMeasurementBox(el,"margin");
  4672. var padding=Firebug.browser.getMeasurementBox(el,"padding");
  4673. var border=Firebug.browser.getMeasurementBox(el,"border");
  4674. boxModelStyle.top=top-margin.top+"px";
  4675. boxModelStyle.left=left-margin.left+"px";
  4676. boxModelStyle.height=height+margin.top+margin.bottom+"px";
  4677. boxModelStyle.width=width+margin.left+margin.right+"px";
  4678. boxBorderStyle.top=margin.top+"px";
  4679. boxBorderStyle.left=margin.left+"px";
  4680. boxBorderStyle.height=height+"px";
  4681. boxBorderStyle.width=width+"px";
  4682. boxPaddingStyle.top=margin.top+border.top+"px";
  4683. boxPaddingStyle.left=margin.left+border.left+"px";
  4684. boxPaddingStyle.height=height-border.top-border.bottom+"px";
  4685. boxPaddingStyle.width=width-border.left-border.right+"px";
  4686. boxContentStyle.top=margin.top+border.top+padding.top+"px";
  4687. boxContentStyle.left=margin.left+border.left+padding.left+"px";
  4688. boxContentStyle.height=height-border.top-padding.top-padding.bottom-border.bottom+"px";
  4689. boxContentStyle.width=width-border.left-padding.left-padding.right-border.right+"px";
  4690. if(!boxModelVisible){this.showBoxModel()
  4691. }},hideBoxModel:function(){if(!boxModelVisible){return
  4692. }offlineFragment.appendChild(boxModel);
  4693. boxModelVisible=false
  4694. },showBoxModel:function(){if(boxModelVisible){return
  4695. }if(outlineVisible){this.hideOutline()
  4696. }Firebug.browser.document.getElementsByTagName("body")[0].appendChild(boxModel);
  4697. boxModelVisible=true
  4698. }};
  4699. var offlineFragment=null;
  4700. var boxModelVisible=false;
  4701. var boxModel,boxModelStyle,boxMargin,boxMarginStyle,boxBorder,boxBorderStyle,boxPadding,boxPaddingStyle,boxContent,boxContentStyle;
  4702. var resetStyle="margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
  4703. var offscreenStyle=resetStyle+"top:-1234px; left:-1234px;";
  4704. var inspectStyle=resetStyle+"z-index: 2147483500;";
  4705. var inspectFrameStyle=resetStyle+"z-index: 2147483550; top:0; left:0; background:url("+Env.Location.skinDir+"pixel_transparent.gif);";
  4706. var inspectModelOpacity=isIE?"filter:alpha(opacity=80);":"opacity:0.8;";
  4707. var inspectModelStyle=inspectStyle+inspectModelOpacity;
  4708. var inspectMarginStyle=inspectStyle+"background: #EDFF64; height:100%; width:100%;";
  4709. var inspectBorderStyle=inspectStyle+"background: #666;";
  4710. var inspectPaddingStyle=inspectStyle+"background: SlateBlue;";
  4711. var inspectContentStyle=inspectStyle+"background: SkyBlue;";
  4712. var outlineStyle={fbHorizontalLine:"background: #3875D7;height: 2px;",fbVerticalLine:"background: #3875D7;width: 2px;"};
  4713. var lastInspecting=0;
  4714. var fbInspectFrame=null;
  4715. var outlineVisible=false;
  4716. var outlineElements={};
  4717. var outline={fbOutlineT:"fbHorizontalLine",fbOutlineL:"fbVerticalLine",fbOutlineB:"fbHorizontalLine",fbOutlineR:"fbVerticalLine"};
  4718. var getInspectingTarget=function(){};
  4719. var createInspectorFrame=function createInspectorFrame(){fbInspectFrame=createGlobalElement("div");
  4720. fbInspectFrame.id="fbInspectFrame";
  4721. fbInspectFrame.firebugIgnore=true;
  4722. fbInspectFrame.style.cssText=inspectFrameStyle;
  4723. Firebug.browser.document.getElementsByTagName("body")[0].appendChild(fbInspectFrame)
  4724. };
  4725. var destroyInspectorFrame=function destroyInspectorFrame(){if(fbInspectFrame){Firebug.browser.document.getElementsByTagName("body")[0].removeChild(fbInspectFrame);
  4726. fbInspectFrame=null
  4727. }};
  4728. var createOutlineInspector=function createOutlineInspector(){for(var name in outline){var el=outlineElements[name]=createGlobalElement("div");
  4729. el.id=name;
  4730. el.firebugIgnore=true;
  4731. el.style.cssText=inspectStyle+outlineStyle[outline[name]];
  4732. offlineFragment.appendChild(el)
  4733. }};
  4734. var destroyOutlineInspector=function destroyOutlineInspector(){for(var name in outline){var el=outlineElements[name];
  4735. el.parentNode.removeChild(el)
  4736. }};
  4737. var createBoxModelInspector=function createBoxModelInspector(){boxModel=createGlobalElement("div");
  4738. boxModel.id="fbBoxModel";
  4739. boxModel.firebugIgnore=true;
  4740. boxModelStyle=boxModel.style;
  4741. boxModelStyle.cssText=inspectModelStyle;
  4742. boxMargin=createGlobalElement("div");
  4743. boxMargin.id="fbBoxMargin";
  4744. boxMarginStyle=boxMargin.style;
  4745. boxMarginStyle.cssText=inspectMarginStyle;
  4746. boxModel.appendChild(boxMargin);
  4747. boxBorder=createGlobalElement("div");
  4748. boxBorder.id="fbBoxBorder";
  4749. boxBorderStyle=boxBorder.style;
  4750. boxBorderStyle.cssText=inspectBorderStyle;
  4751. boxModel.appendChild(boxBorder);
  4752. boxPadding=createGlobalElement("div");
  4753. boxPadding.id="fbBoxPadding";
  4754. boxPaddingStyle=boxPadding.style;
  4755. boxPaddingStyle.cssText=inspectPaddingStyle;
  4756. boxModel.appendChild(boxPadding);
  4757. boxContent=createGlobalElement("div");
  4758. boxContent.id="fbBoxContent";
  4759. boxContentStyle=boxContent.style;
  4760. boxContentStyle.cssText=inspectContentStyle;
  4761. boxModel.appendChild(boxContent);
  4762. offlineFragment.appendChild(boxModel)
  4763. };
  4764. var destroyBoxModelInspector=function destroyBoxModelInspector(){boxModel.parentNode.removeChild(boxModel)
  4765. }
  4766. }});
  4767. FBL.ns(function(){with(FBL){var consoleQueue=[];
  4768. var lastHighlightedObject;
  4769. var FirebugContext=Env.browser;
  4770. var maxQueueRequests=500;
  4771. Firebug.ConsoleBase={log:function(object,context,className,rep,noThrottle,sourceLink){return this.logRow(appendObject,object,context,className,rep,sourceLink,noThrottle)
  4772. },logFormatted:function(objects,context,className,noThrottle,sourceLink){return this.logRow(appendFormatted,objects,context,className,null,sourceLink,noThrottle)
  4773. },openGroup:function(objects,context,className,rep,noThrottle,sourceLink,noPush){return this.logRow(appendOpenGroup,objects,context,className,rep,sourceLink,noThrottle)
  4774. },closeGroup:function(context,noThrottle){return this.logRow(appendCloseGroup,null,context,null,null,null,noThrottle,true)
  4775. },logRow:function(appender,objects,context,className,rep,sourceLink,noThrottle,noRow){noThrottle=true;
  4776. if(!context){context=FirebugContext
  4777. }if(FBTrace.DBG_ERRORS&&!context){FBTrace.sysout("Console.logRow has no context, skipping objects",objects)
  4778. }if(!context){return
  4779. }if(noThrottle||!context){var panel=this.getPanel(context);
  4780. if(panel){var row=panel.append(appender,objects,className,rep,sourceLink,noRow);
  4781. var container=panel.panelNode;
  4782. return row
  4783. }else{consoleQueue.push([appender,objects,context,className,rep,sourceLink,noThrottle,noRow])
  4784. }}else{if(!context.throttle){return
  4785. }var args=[appender,objects,context,className,rep,sourceLink,true,noRow];
  4786. context.throttle(this.logRow,this,args)
  4787. }},appendFormatted:function(args,row,context){if(!context){context=FirebugContext
  4788. }var panel=this.getPanel(context);
  4789. panel.appendFormatted(args,row)
  4790. },clear:function(context){if(!context){context=Firebug.context
  4791. }var panel=this.getPanel(context,true);
  4792. if(panel){panel.clear()
  4793. }},getPanel:function(context,noCreate){return Firebug.chrome?Firebug.chrome.getPanel("Console"):null
  4794. }};
  4795. var ActivableConsole=extend(Firebug.ConsoleBase,{isAlwaysEnabled:function(){return true
  4796. }});
  4797. Firebug.Console=Firebug.Console=extend(ActivableConsole,{dispatchName:"console",error:function(){Firebug.Console.logFormatted(arguments,Firebug.browser,"error")
  4798. },flush:function(){dispatch(this.fbListeners,"flush",[]);
  4799. for(var i=0,length=consoleQueue.length;
  4800. i<length;
  4801. i++){var args=consoleQueue[i];
  4802. this.logRow.apply(this,args)
  4803. }},showPanel:function(browser,panel){},getFirebugConsoleElement:function(context,win){var element=win.document.getElementById("_firebugConsole");
  4804. if(!element){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("getFirebugConsoleElement forcing element")
  4805. }var elementForcer="(function(){var r=null; try { r = window._getFirebugConsoleElement();}catch(exc){r=exc;} return r;})();";
  4806. if(context.stopped){Firebug.Console.injector.evaluateConsoleScript(context)
  4807. }else{var r=Firebug.CommandLine.evaluateInWebPage(elementForcer,context,win)
  4808. }if(FBTrace.DBG_CONSOLE){FBTrace.sysout("getFirebugConsoleElement forcing element result "+r,r)
  4809. }var element=win.document.getElementById("_firebugConsole");
  4810. if(!element){if(FBTrace.DBG_ERRORS){FBTrace.sysout("console.getFirebugConsoleElement: no _firebugConsole in win:",win)
  4811. }Firebug.Console.logFormatted(["Firebug cannot find _firebugConsole element",r,win],context,"error",true)
  4812. }}return element
  4813. },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))
  4814. }if(win){return this.injector.attachIfNeeded(context,win)
  4815. }else{var attached=true;
  4816. for(var i=0;
  4817. i<context.windows.length;
  4818. i++){attached=attached&&this.injector.attachIfNeeded(context,context.windows[i])
  4819. }if(context.windows.indexOf(context.window)==-1){FBTrace.sysout("isReadyElsePreparing ***************** context.window not in context.windows")
  4820. }if(FBTrace.DBG_CONSOLE){FBTrace.sysout("console.isReadyElsePreparing attached to "+context.windows.length+" and returns "+attached)
  4821. }return attached
  4822. }},initialize:function(){this.panelName="console"
  4823. },enable:function(){if(Firebug.Console.isAlwaysEnabled()){this.watchForErrors()
  4824. }},disable:function(){if(Firebug.Console.isAlwaysEnabled()){this.unwatchForErrors()
  4825. }},initContext:function(context,persistedState){Firebug.ActivableModule.initContext.apply(this,arguments);
  4826. context.consoleReloadWarning=true
  4827. },loadedContext:function(context){for(var url in context.sourceFileMap){return
  4828. }this.clearReloadWarning(context)
  4829. },clearReloadWarning:function(context){if(context.consoleReloadWarning){var panel=context.getPanel(this.panelName);
  4830. panel.clearReloadWarning();
  4831. delete context.consoleReloadWarning
  4832. }},togglePersist:function(context){var panel=context.getPanel(this.panelName);
  4833. panel.persistContent=panel.persistContent?false:true;
  4834. Firebug.chrome.setGlobalAttribute("cmd_togglePersistConsole","checked",panel.persistContent)
  4835. },showContext:function(browser,context){Firebug.chrome.setGlobalAttribute("cmd_clearConsole","disabled",!context);
  4836. Firebug.ActivableModule.showContext.apply(this,arguments)
  4837. },destroyContext:function(context,persistedState){Firebug.Console.injector.detachConsole(context,context.window)
  4838. },onPanelEnable:function(panelName){if(panelName!=this.panelName){return
  4839. }if(FBTrace.DBG_CONSOLE){FBTrace.sysout("console.onPanelEnable**************")
  4840. }this.watchForErrors();
  4841. Firebug.Debugger.addDependentModule(this)
  4842. },onPanelDisable:function(panelName){if(panelName!=this.panelName){return
  4843. }if(FBTrace.DBG_CONSOLE){FBTrace.sysout("console.onPanelDisable**************")
  4844. }Firebug.Debugger.removeDependentModule(this);
  4845. this.unwatchForErrors();
  4846. this.clear()
  4847. },onSuspendFirebug:function(){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("console.onSuspendFirebug\n")
  4848. }if(Firebug.Console.isAlwaysEnabled()){this.unwatchForErrors()
  4849. }},onResumeFirebug:function(){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("console.onResumeFirebug\n")
  4850. }if(Firebug.Console.isAlwaysEnabled()){this.watchForErrors()
  4851. }},watchForErrors:function(){Firebug.Errors.checkEnabled();
  4852. $("fbStatusIcon").setAttribute("console","on")
  4853. },unwatchForErrors:function(){Firebug.Errors.checkEnabled();
  4854. $("fbStatusIcon").removeAttribute("console")
  4855. },onMonitorScript:function(context,frame){Firebug.Console.log(frame,context)
  4856. },onFunctionCall:function(context,frame,depth,calling){if(calling){Firebug.Console.openGroup([frame,"depth:"+depth],context)
  4857. }else{Firebug.Console.closeGroup(context)
  4858. }},logRow:function(appender,objects,context,className,rep,sourceLink,noThrottle,noRow){if(!context){context=FirebugContext
  4859. }if(FBTrace.DBG_WINDOWS&&!context){FBTrace.sysout("Console.logRow: no context \n")
  4860. }if(this.isAlwaysEnabled()){return Firebug.ConsoleBase.logRow.apply(this,arguments)
  4861. }}});
  4862. Firebug.ConsoleListener={log:function(context,object,className,sourceLink){},logFormatted:function(context,objects,className,sourceLink){}};
  4863. Firebug.ConsolePanel=function(){};
  4864. 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();
  4865. if(noRow){appender.apply(this,[objects])
  4866. }else{var row=this.createRow("logRow",className);
  4867. appender.apply(this,[objects,row,rep]);
  4868. if(sourceLink){FirebugReps.SourceLink.tag.append({object:sourceLink},row)
  4869. }container.appendChild(row);
  4870. this.filterLogRow(row,this.wasScrolledToBottom);
  4871. if(this.wasScrolledToBottom){scrollToBottom(this.panelNode)
  4872. }return row
  4873. }},clear:function(){if(this.panelNode){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("ConsolePanel.clear")
  4874. }clearNode(this.panelNode);
  4875. this.insertLogLimit(this.context)
  4876. }},insertLogLimit:function(){var row=this.createRow("limitRow");
  4877. var limitInfo={totalCount:0,limitPrefsTitle:$STRF("LimitPrefsTitle",[Firebug.prefDomain+".console.logLimit"])};
  4878. return;
  4879. var netLimitRep=Firebug.NetMonitor.NetLimit;
  4880. var nodes=netLimitRep.createTable(row,limitInfo);
  4881. this.limit=nodes[1];
  4882. var container=this.panelNode;
  4883. container.insertBefore(nodes[0],container.firstChild)
  4884. },insertReloadWarning:function(){this.warningRow=this.append(appendObject,$STR("message.Reload to activate window console"),"info")
  4885. },clearReloadWarning:function(){if(this.warningRow){this.warningRow.parentNode.removeChild(this.warningRow);
  4886. delete this.warningRow
  4887. }},appendObject:function(object,row,rep){if(!rep){rep=Firebug.getRep(object)
  4888. }return rep.tag.append({object:object},row)
  4889. },appendFormatted:function(objects,row,rep){if(!objects||!objects.length){return
  4890. }function logText(text,row){var node=row.ownerDocument.createTextNode(text);
  4891. row.appendChild(node)
  4892. }var format=objects[0];
  4893. var objIndex=0;
  4894. if(typeof(format)!="string"){format="";
  4895. objIndex=-1
  4896. }else{if(objects.length===1){if(format.length<1){logText("(an empty string)",row);
  4897. return
  4898. }}}var parts=parseFormat(format);
  4899. var trialIndex=objIndex;
  4900. for(var i=0;
  4901. i<parts.length;
  4902. i++){var part=parts[i];
  4903. if(part&&typeof(part)=="object"){if(++trialIndex>objects.length){format="";
  4904. objIndex=-1;
  4905. parts.length=0;
  4906. break
  4907. }}}for(var i=0;
  4908. i<parts.length;
  4909. ++i){var part=parts[i];
  4910. if(part&&typeof(part)=="object"){var object=objects[++objIndex];
  4911. if(typeof(object)!="undefined"){this.appendObject(object,row,part.rep)
  4912. }else{this.appendObject(part.type,row,FirebugReps.Text)
  4913. }}else{FirebugReps.Text.tag.append({object:part},row)
  4914. }}for(var i=objIndex+1;
  4915. i<objects.length;
  4916. ++i){logText(" ",row);
  4917. var object=objects[i];
  4918. if(typeof(object)=="string"){FirebugReps.Text.tag.append({object:object},row)
  4919. }else{this.appendObject(object,row)
  4920. }}},appendOpenGroup:function(objects,row,rep){if(!this.groups){this.groups=[]
  4921. }setClass(row,"logGroup");
  4922. setClass(row,"opened");
  4923. var innerRow=this.createRow("logRow");
  4924. setClass(innerRow,"logGroupLabel");
  4925. if(rep){rep.tag.replace({objects:objects},innerRow)
  4926. }else{this.appendFormatted(objects,innerRow,rep)
  4927. }row.appendChild(innerRow);
  4928. var groupBody=this.createRow("logGroupBody");
  4929. row.appendChild(groupBody);
  4930. groupBody.setAttribute("role","group");
  4931. this.groups.push(groupBody);
  4932. addEvent(innerRow,"mousedown",function(event){if(isLeftClick(event)){var target=event.target||event.srcElement;
  4933. target=getAncestorByClass(target,"logGroupLabel");
  4934. var groupRow=target.parentNode;
  4935. if(hasClass(groupRow,"opened")){removeClass(groupRow,"opened");
  4936. target.setAttribute("aria-expanded","false")
  4937. }else{setClass(groupRow,"opened");
  4938. target.setAttribute("aria-expanded","true")
  4939. }}})
  4940. },appendCloseGroup:function(object,row,rep){if(this.groups){this.groups.pop()
  4941. }},onMouseMove:function(event){var target=event.srcElement||event.target;
  4942. var object=getAncestorByClass(target,"objectLink-element");
  4943. object=object?object.repObject:null;
  4944. if(object&&instanceOf(object,"Element")&&object.nodeType==1){if(object!=lastHighlightedObject){Firebug.Inspector.drawBoxModel(object);
  4945. object=lastHighlightedObject
  4946. }}else{Firebug.Inspector.hideBoxModel()
  4947. }},onMouseDown:function(event){var target=event.srcElement||event.target;
  4948. var object=getAncestorByClass(target,"objectLink");
  4949. var repObject=object?object.repObject:null;
  4950. if(!repObject){return
  4951. }if(hasClass(object,"objectLink-object")){Firebug.chrome.selectPanel("DOM");
  4952. Firebug.chrome.getPanel("DOM").select(repObject,true)
  4953. }else{if(hasClass(object,"objectLink-element")){Firebug.chrome.selectPanel("HTML");
  4954. Firebug.chrome.getPanel("HTML").select(repObject,true)
  4955. }}},name:"Console",title:"Console",options:{hasCommandLine:true,hasToolButtons:true,isPreRendered:true},create:function(){Firebug.Panel.create.apply(this,arguments);
  4956. this.context=Firebug.browser.window;
  4957. this.document=Firebug.chrome.document;
  4958. this.onMouseMove=bind(this.onMouseMove,this);
  4959. this.onMouseDown=bind(this.onMouseDown,this);
  4960. this.clearButton=new Button({element:$("fbConsole_btClear"),owner:Firebug.Console,onClick:Firebug.Console.clear})
  4961. },initialize:function(){Firebug.Panel.initialize.apply(this,arguments);
  4962. if(!this.persistedContent&&Firebug.Console.isAlwaysEnabled()){this.insertLogLimit(this.context);
  4963. this.updateMaxLimit();
  4964. if(this.context.consoleReloadWarning){this.insertReloadWarning()
  4965. }}addEvent(this.panelNode,"mouseover",this.onMouseMove);
  4966. addEvent(this.panelNode,"mousedown",this.onMouseDown);
  4967. this.clearButton.initialize()
  4968. },initializeNode:function(){if(FBTrace.DBG_CONSOLE){this.onScroller=bind(this.onScroll,this);
  4969. addEvent(this.panelNode,"scroll",this.onScroller)
  4970. }this.onResizer=bind(this.onResize,this);
  4971. this.resizeEventTarget=Firebug.chrome.$("fbContentBox");
  4972. addEvent(this.resizeEventTarget,"resize",this.onResizer)
  4973. },destroyNode:function(){if(this.onScroller){removeEvent(this.panelNode,"scroll",this.onScroller)
  4974. }},shutdown:function(){this.clearButton.shutdown();
  4975. removeEvent(this.panelNode,"mousemove",this.onMouseMove);
  4976. removeEvent(this.panelNode,"mousedown",this.onMouseDown);
  4977. this.destroyNode();
  4978. Firebug.Panel.shutdown.apply(this,arguments)
  4979. },ishow:function(state){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("Console.panel show; "+this.context.getName(),state)
  4980. }var enabled=Firebug.Console.isAlwaysEnabled();
  4981. if(enabled){Firebug.Console.disabledPanelPage.hide(this);
  4982. this.showCommandLine(true);
  4983. this.showToolbarButtons("fbConsoleButtons",true);
  4984. Firebug.chrome.setGlobalAttribute("cmd_togglePersistConsole","checked",this.persistContent);
  4985. if(state&&state.wasScrolledToBottom){this.wasScrolledToBottom=state.wasScrolledToBottom;
  4986. delete state.wasScrolledToBottom
  4987. }if(this.wasScrolledToBottom){scrollToBottom(this.panelNode)
  4988. }if(FBTrace.DBG_CONSOLE){FBTrace.sysout("console.show ------------------ wasScrolledToBottom: "+this.wasScrolledToBottom+", "+this.context.getName())
  4989. }}else{this.hide(state);
  4990. Firebug.Console.disabledPanelPage.show(this)
  4991. }},ihide:function(state){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("Console.panel hide; "+this.context.getName(),state)
  4992. }this.showToolbarButtons("fbConsoleButtons",false);
  4993. this.showCommandLine(false);
  4994. if(FBTrace.DBG_CONSOLE){FBTrace.sysout("console.hide ------------------ wasScrolledToBottom: "+this.wasScrolledToBottom+", "+this.context.getName())
  4995. }},destroy:function(state){if(this.panelNode.offsetHeight){this.wasScrolledToBottom=isScrolledToBottom(this.panelNode)
  4996. }if(state){state.wasScrolledToBottom=this.wasScrolledToBottom
  4997. }if(FBTrace.DBG_CONSOLE){FBTrace.sysout("console.destroy ------------------ wasScrolledToBottom: "+this.wasScrolledToBottom+", "+this.context.getName())
  4998. }},shouldBreakOnNext:function(){return Firebug.getPref(Firebug.servicePrefDomain,"breakOnErrors")
  4999. },getBreakOnNextTooltip:function(enabled){return(enabled?$STR("console.Disable Break On All Errors"):$STR("console.Break On All Errors"))
  5000. },enablePanel:function(module){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("console.ConsolePanel.enablePanel; "+this.context.getName())
  5001. }Firebug.ActivablePanel.enablePanel.apply(this,arguments);
  5002. this.showCommandLine(true);
  5003. if(this.wasScrolledToBottom){scrollToBottom(this.panelNode)
  5004. }},disablePanel:function(module){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("console.ConsolePanel.disablePanel; "+this.context.getName())
  5005. }Firebug.ActivablePanel.disablePanel.apply(this,arguments);
  5006. this.showCommandLine(false)
  5007. },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")]
  5008. },getShowStackTraceMenuItem:function(){var menuItem=serviceOptionMenu("ShowStackTrace","showStackTrace");
  5009. if(FirebugContext&&!Firebug.Debugger.isAlwaysEnabled()){menuItem.disabled=true
  5010. }return menuItem
  5011. },getStrictOptionMenuItem:function(){var strictDomain="javascript.options";
  5012. var strictName="strict";
  5013. var strictValue=prefs.getBoolPref(strictDomain+"."+strictName);
  5014. return{label:"JavascriptOptionsStrict",type:"checkbox",checked:strictValue,command:bindFixed(Firebug.setPref,Firebug,strictDomain,strictName,!strictValue)}
  5015. },getBreakOnMenuItems:function(){return[]
  5016. },search:function(text){if(!text){return
  5017. }if(this.matchSet){for(var i in this.matchSet){removeClass(this.matchSet[i],"matched")
  5018. }}this.matchSet=[];
  5019. function findRow(node){return getAncestorByClass(node,"logRow")
  5020. }var search=new TextSearch(this.panelNode,findRow);
  5021. var logRow=search.find(text);
  5022. if(!logRow){dispatch([Firebug.A11yModel],"onConsoleSearchMatchFound",[this,text,[]]);
  5023. return false
  5024. }for(;
  5025. logRow;
  5026. logRow=search.findNext()){setClass(logRow,"matched");
  5027. this.matchSet.push(logRow)
  5028. }dispatch([Firebug.A11yModel],"onConsoleSearchMatchFound",[this,text,this.matchSet]);
  5029. return true
  5030. },breakOnNext:function(breaking){Firebug.setPref(Firebug.servicePrefDomain,"breakOnErrors",breaking)
  5031. },createRow:function(rowName,className){var elt=this.document.createElement("div");
  5032. elt.className=rowName+(className?" "+rowName+"-"+className:"");
  5033. return elt
  5034. },getTopContainer:function(){if(this.groups&&this.groups.length){return this.groups[this.groups.length-1]
  5035. }else{return this.panelNode
  5036. }},filterLogRow:function(logRow,scrolledToBottom){if(this.searchText){setClass(logRow,"matching");
  5037. setClass(logRow,"matched");
  5038. setTimeout(bindFixed(function(){if(this.searchFilter(this.searchText,logRow)){this.matchSet.push(logRow)
  5039. }else{removeClass(logRow,"matched")
  5040. }removeClass(logRow,"matching");
  5041. if(scrolledToBottom){scrollToBottom(this.panelNode)
  5042. }},this),100)
  5043. }},searchFilter:function(text,logRow){var count=this.panelNode.childNodes.length;
  5044. var searchRange=this.document.createRange();
  5045. searchRange.setStart(this.panelNode,0);
  5046. searchRange.setEnd(this.panelNode,count);
  5047. var startPt=this.document.createRange();
  5048. startPt.setStartBefore(logRow);
  5049. var endPt=this.document.createRange();
  5050. endPt.setStartAfter(logRow);
  5051. return finder.Find(text,searchRange,startPt,endPt)!=null
  5052. },observe:function(subject,topic,data){if(topic!="nsPref:changed"){return
  5053. }var prefDomain="Firebug.extension.";
  5054. var prefName=data.substr(prefDomain.length);
  5055. if(prefName=="console.logLimit"){this.updateMaxLimit()
  5056. }},updateMaxLimit:function(){var value=1000;
  5057. maxQueueRequests=value?value:maxQueueRequests
  5058. },showCommandLine:function(shouldShow){return;
  5059. if(shouldShow){collapse(Firebug.chrome.$("fbCommandBox"),false);
  5060. Firebug.CommandLine.setMultiLine(Firebug.largeCommandLine,Firebug.chrome)
  5061. }else{Firebug.CommandLine.setMultiLine(false,Firebug.chrome,Firebug.largeCommandLine);
  5062. collapse(Firebug.chrome.$("fbCommandBox"),true)
  5063. }},onScroll:function(event){this.wasScrolledToBottom=FBL.isScrolledToBottom(this.panelNode);
  5064. if(FBTrace.DBG_CONSOLE){FBTrace.sysout("console.onScroll ------------------ wasScrolledToBottom: "+this.wasScrolledToBottom+", wasScrolledToBottom: "+this.context.getName(),event)
  5065. }},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)
  5066. }if(this.wasScrolledToBottom){scrollToBottom(this.panelNode)
  5067. }}});
  5068. function parseFormat(format){var parts=[];
  5069. if(format.length<=0){return parts
  5070. }var reg=/((^%|.%)(\d+)?(\.)([a-zA-Z]))|((^%|.%)([a-zA-Z]))/;
  5071. for(var m=reg.exec(format);
  5072. m;
  5073. m=reg.exec(format)){if(m[0].substr(0,2)=="%%"){parts.push(format.substr(0,m.index));
  5074. parts.push(m[0].substr(1))
  5075. }else{var type=m[8]?m[8]:m[5];
  5076. var precision=m[3]?parseInt(m[3]):(m[4]=="."?-1:0);
  5077. var rep=null;
  5078. switch(type){case"s":rep=FirebugReps.Text;
  5079. break;
  5080. case"f":case"i":case"d":rep=FirebugReps.Number;
  5081. break;
  5082. case"o":rep=null;
  5083. break
  5084. }parts.push(format.substr(0,m[0][0]=="%"?m.index:m.index+1));
  5085. parts.push({rep:rep,precision:precision,type:("%"+type)})
  5086. }format=format.substr(m.index+m[0].length)
  5087. }parts.push(format);
  5088. return parts
  5089. }var appendObject=Firebug.ConsolePanel.prototype.appendObject;
  5090. var appendFormatted=Firebug.ConsolePanel.prototype.appendFormatted;
  5091. var appendOpenGroup=Firebug.ConsolePanel.prototype.appendOpenGroup;
  5092. var appendCloseGroup=Firebug.ConsolePanel.prototype.appendCloseGroup;
  5093. Firebug.registerModule(Firebug.Console);
  5094. Firebug.registerPanel(Firebug.ConsolePanel)
  5095. }});
  5096. FBL.ns(function(){with(FBL){var frameCounters={};
  5097. var traceRecursion=0;
  5098. Firebug.Console.injector={install:function(context){var win=context.window;
  5099. var consoleHandler=new FirebugConsoleHandler(context,win);
  5100. var properties=["log","debug","info","warn","error","assert","dir","dirxml","group","groupCollapsed","groupEnd","time","timeEnd","count","trace","profile","profileEnd","clear","open","close"];
  5101. var Handler=function(name){var c=consoleHandler;
  5102. var f=consoleHandler[name];
  5103. return function(){return f.apply(c,arguments)
  5104. }
  5105. };
  5106. var installer=function(c){for(var i=0,l=properties.length;
  5107. i<l;
  5108. i++){var name=properties[i];
  5109. c[name]=new Handler(name);
  5110. c.firebuglite=Firebug.version
  5111. }};
  5112. var consoleNS=(!isFirefox||isFirefox&&!("console" in win))?"console":"firebug";
  5113. var sandbox=new win.Function("arguments.callee.install(window."+consoleNS+"={})");
  5114. sandbox.install=installer;
  5115. sandbox()
  5116. },isAttached:function(context,win){if(win.wrappedJSObject){var attached=(win.wrappedJSObject._getFirebugConsoleElement?true:false);
  5117. if(FBTrace.DBG_CONSOLE){FBTrace.sysout("Console.isAttached:"+attached+" to win.wrappedJSObject "+safeGetWindowLocation(win.wrappedJSObject))
  5118. }return attached
  5119. }else{if(FBTrace.DBG_CONSOLE){FBTrace.sysout("Console.isAttached? to win "+win.location+" fnc:"+win._getFirebugConsoleElement)
  5120. }return(win._getFirebugConsoleElement?true:false)
  5121. }},attachIfNeeded:function(context,win){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("Console.attachIfNeeded has win "+(win?((win.wrappedJSObject?"YES":"NO")+" wrappedJSObject"):"null"))
  5122. }if(this.isAttached(context,win)){return true
  5123. }if(FBTrace.DBG_CONSOLE){FBTrace.sysout("Console.attachIfNeeded found isAttached false ")
  5124. }this.attachConsoleInjector(context,win);
  5125. this.addConsoleListener(context,win);
  5126. Firebug.Console.clearReloadWarning(context);
  5127. var attached=this.isAttached(context,win);
  5128. if(attached){dispatch(Firebug.Console.fbListeners,"onConsoleInjected",[context,win])
  5129. }return attached
  5130. },attachConsoleInjector:function(context,win){var consoleInjection=this.getConsoleInjectionScript();
  5131. if(FBTrace.DBG_CONSOLE){FBTrace.sysout("attachConsoleInjector evaluating in "+win.location,consoleInjection)
  5132. }Firebug.CommandLine.evaluateInWebPage(consoleInjection,context,win);
  5133. if(FBTrace.DBG_CONSOLE){FBTrace.sysout("attachConsoleInjector evaluation completed for "+win.location)
  5134. }},getConsoleInjectionScript:function(){if(!this.consoleInjectionScript){var script="";
  5135. script+="window.__defineGetter__('console', function() {\n";
  5136. script+=" return (window._firebug ? window._firebug : window.loadFirebugConsole()); })\n\n";
  5137. script+="window.loadFirebugConsole = function() {\n";
  5138. script+="window._firebug = new _FirebugConsole();";
  5139. if(FBTrace.DBG_CONSOLE){script+=" window.dump('loadFirebugConsole '+window.location+'\\n');\n"
  5140. }script+=" return window._firebug };\n";
  5141. var theFirebugConsoleScript=getResource("chrome://firebug/content/consoleInjected.js");
  5142. script+=theFirebugConsoleScript;
  5143. this.consoleInjectionScript=script
  5144. }return this.consoleInjectionScript
  5145. },forceConsoleCompilationInPage:function(context,win){if(!win){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("no win in forceConsoleCompilationInPage!")
  5146. }return
  5147. }var consoleForcer="window.loadFirebugConsole();";
  5148. if(context.stopped){Firebug.Console.injector.evaluateConsoleScript(context)
  5149. }else{Firebug.CommandLine.evaluateInWebPage(consoleForcer,context,win)
  5150. }if(FBTrace.DBG_CONSOLE){FBTrace.sysout("forceConsoleCompilationInPage "+win.location,consoleForcer)
  5151. }},evaluateConsoleScript:function(context){var scriptSource=this.getConsoleInjectionScript();
  5152. Firebug.Debugger.evaluate(scriptSource,context)
  5153. },addConsoleListener:function(context,win){if(!context.activeConsoleHandlers){context.activeConsoleHandlers=[]
  5154. }else{for(var i=0;
  5155. i<context.activeConsoleHandlers.length;
  5156. i++){if(context.activeConsoleHandlers[i].window==win){context.activeConsoleHandlers[i].detach();
  5157. if(FBTrace.DBG_CONSOLE){FBTrace.sysout("consoleInjector addConsoleListener removed handler("+context.activeConsoleHandlers[i].handler_name+") from _firebugConsole in : "+win.location+"\n")
  5158. }context.activeConsoleHandlers.splice(i,1)
  5159. }}}var element=Firebug.Console.getFirebugConsoleElement(context,win);
  5160. if(element){element.setAttribute("FirebugVersion",Firebug.version)
  5161. }else{return false
  5162. }var handler=new FirebugConsoleHandler(context,win);
  5163. handler.attachTo(element);
  5164. context.activeConsoleHandlers.push(handler);
  5165. if(FBTrace.DBG_CONSOLE){FBTrace.sysout("consoleInjector addConsoleListener attached handler("+handler.handler_name+") to _firebugConsole in : "+win.location+"\n")
  5166. }return true
  5167. },detachConsole:function(context,win){if(win&&win.document){var element=win.document.getElementById("_firebugConsole");
  5168. if(element){element.parentNode.removeChild(element)
  5169. }}}};
  5170. var total_handlers=0;
  5171. var FirebugConsoleHandler=function FirebugConsoleHandler(context,win){this.window=win;
  5172. this.attachTo=function(element){this.element=element;
  5173. this.boundHandler=bind(this.handleEvent,this);
  5174. this.element.addEventListener("firebugAppendConsole",this.boundHandler,true)
  5175. };
  5176. this.detach=function(){this.element.removeEventListener("firebugAppendConsole",this.boundHandler,true)
  5177. };
  5178. this.handler_name=++total_handlers;
  5179. this.handleEvent=function(event){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("FirebugConsoleHandler("+this.handler_name+") "+event.target.getAttribute("methodName")+", event",event)
  5180. }if(!Firebug.CommandLine.CommandHandler.handle(event,this,win)){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("FirebugConsoleHandler",this)
  5181. }var methodName=event.target.getAttribute("methodName");
  5182. Firebug.Console.log($STRF("console.MethodNotSupported",[methodName]))
  5183. }};
  5184. this.firebuglite=Firebug.version;
  5185. this.init=function(){var consoleElement=win.document.getElementById("_firebugConsole");
  5186. consoleElement.setAttribute("FirebugVersion",Firebug.version)
  5187. };
  5188. this.log=function(){logFormatted(arguments,"log")
  5189. };
  5190. this.debug=function(){logFormatted(arguments,"debug",true)
  5191. };
  5192. this.info=function(){logFormatted(arguments,"info",true)
  5193. };
  5194. this.warn=function(){logFormatted(arguments,"warn",true)
  5195. };
  5196. this.error=function(){logFormatted(arguments,"error",true)
  5197. };
  5198. this.exception=function(){logAssert("error",arguments)
  5199. };
  5200. this.assert=function(x){if(!x){var rest=[];
  5201. for(var i=1;
  5202. i<arguments.length;
  5203. i++){rest.push(arguments[i])
  5204. }logAssert("assert",rest)
  5205. }};
  5206. this.dir=function(o){Firebug.Console.log(o,context,"dir",Firebug.DOMPanel.DirTable)
  5207. };
  5208. this.dirxml=function(o){if(instanceOf(o,"Window")){o=o.document.documentElement
  5209. }else{if(instanceOf(o,"Document")){o=o.documentElement
  5210. }}var div=Firebug.Console.log(o,context,"dirxml");
  5211. var html=[];
  5212. Firebug.Reps.appendNode(o,html);
  5213. div.innerHTML=html.join("")
  5214. };
  5215. this.group=function(){var sourceLink=null;
  5216. Firebug.Console.openGroup(arguments,null,"group",null,false,sourceLink)
  5217. };
  5218. this.groupEnd=function(){Firebug.Console.closeGroup(context)
  5219. };
  5220. this.groupCollapsed=function(){var sourceLink=getStackLink();
  5221. var row=Firebug.Console.openGroup(arguments,null,"group",null,true,sourceLink);
  5222. removeClass(row,"opened")
  5223. };
  5224. this.profile=function(title){logFormatted(["console.profile() not supported."],"warn",true)
  5225. };
  5226. this.profileEnd=function(){logFormatted(["console.profile() not supported."],"warn",true)
  5227. };
  5228. this.count=function(key){var frameId="0";
  5229. if(frameId){if(!frameCounters){frameCounters={}
  5230. }if(key!=undefined){frameId+=key
  5231. }var frameCounter=frameCounters[frameId];
  5232. if(!frameCounter){var logRow=logFormatted(["0"],null,true,true);
  5233. frameCounter={logRow:logRow,count:1};
  5234. frameCounters[frameId]=frameCounter
  5235. }else{++frameCounter.count
  5236. }var label=key==undefined?frameCounter.count:key+" "+frameCounter.count;
  5237. frameCounter.logRow.firstChild.firstChild.nodeValue=label
  5238. }};
  5239. this.trace=function(){var getFuncName=function getFuncName(f){if(f.getName instanceof Function){return f.getName()
  5240. }if(f.name){return f.name
  5241. }var name=f.toString().match(/function\s*([_$\w\d]*)/)[1];
  5242. return name||"anonymous"
  5243. };
  5244. var wasVisited=function(fn){for(var i=0,l=frames.length;
  5245. i<l;
  5246. i++){if(frames[i].fn==fn){return true
  5247. }}return false
  5248. };
  5249. traceRecursion++;
  5250. if(traceRecursion>1){traceRecursion--;
  5251. return
  5252. }var frames=[];
  5253. for(var fn=arguments.callee.caller.caller;
  5254. fn;
  5255. fn=fn.caller){if(wasVisited(fn)){break
  5256. }var args=[];
  5257. for(var i=0,l=fn.arguments.length;
  5258. i<l;
  5259. ++i){args.push({value:fn.arguments[i]})
  5260. }frames.push({fn:fn,name:getFuncName(fn),args:args})
  5261. }try{(0)()
  5262. }catch(e){var result=e;
  5263. var stack=result.stack||result.stacktrace||"";
  5264. stack=stack.replace(/\n\r|\r\n/g,"\n");
  5265. var items=stack.split(/[\n\r]/);
  5266. if(FBL.isSafari){var reChromeStackItem=/^\s+at\s+(.*)((?:http|https|ftp|file):\/\/.*)$/;
  5267. var reChromeStackItemName=/\s*\($/;
  5268. var reChromeStackItemValue=/^(.+)\:(\d+\:\d+)\)?$/;
  5269. var framePos=0;
  5270. for(var i=4,length=items.length;
  5271. i<length;
  5272. i++,framePos++){var frame=frames[framePos];
  5273. var item=items[i];
  5274. var match=item.match(reChromeStackItem);
  5275. if(match){var name=match[1];
  5276. if(name){name=name.replace(reChromeStackItemName,"");
  5277. frame.name=name
  5278. }var value=match[2].match(reChromeStackItemValue);
  5279. if(value){frame.href=value[1];
  5280. frame.lineNo=value[2]
  5281. }}}}else{if(FBL.isFirefox){var reFirefoxStackItem=/^(.*)@(.*)$/;
  5282. var reFirefoxStackItemValue=/^(.+)\:(\d+)$/;
  5283. var framePos=0;
  5284. for(var i=2,length=items.length;
  5285. i<length;
  5286. i++,framePos++){var frame=frames[framePos]||{};
  5287. var item=items[i];
  5288. var match=item.match(reFirefoxStackItem);
  5289. if(match){var name=match[1];
  5290. var value=match[2].match(reFirefoxStackItemValue);
  5291. if(value){frame.href=value[1];
  5292. frame.lineNo=value[2]
  5293. }}}}}}Firebug.Console.log({frames:frames},context,"stackTrace",FirebugReps.StackTrace);
  5294. traceRecursion--
  5295. };
  5296. this.trace_ok=function(){var getFuncName=function getFuncName(f){if(f.getName instanceof Function){return f.getName()
  5297. }if(f.name){return f.name
  5298. }var name=f.toString().match(/function\s*([_$\w\d]*)/)[1];
  5299. return name||"anonymous"
  5300. };
  5301. var wasVisited=function(fn){for(var i=0,l=frames.length;
  5302. i<l;
  5303. i++){if(frames[i].fn==fn){return true
  5304. }}return false
  5305. };
  5306. var frames=[];
  5307. for(var fn=arguments.callee.caller;
  5308. fn;
  5309. fn=fn.caller){if(wasVisited(fn)){break
  5310. }var args=[];
  5311. for(var i=0,l=fn.arguments.length;
  5312. i<l;
  5313. ++i){args.push({value:fn.arguments[i]})
  5314. }frames.push({fn:fn,name:getFuncName(fn),args:args})
  5315. }Firebug.Console.log({frames:frames},context,"stackTrace",FirebugReps.StackTrace)
  5316. };
  5317. this.clear=function(){Firebug.Console.clear(context)
  5318. };
  5319. this.time=function(name,reset){if(!name){return
  5320. }var time=new Date().getTime();
  5321. if(!this.timeCounters){this.timeCounters={}
  5322. }var key="KEY"+name.toString();
  5323. if(!reset&&this.timeCounters[key]){return
  5324. }this.timeCounters[key]=time
  5325. };
  5326. this.timeEnd=function(name){var time=new Date().getTime();
  5327. if(!this.timeCounters){return
  5328. }var key="KEY"+name.toString();
  5329. var timeCounter=this.timeCounters[key];
  5330. if(timeCounter){var diff=time-timeCounter;
  5331. var label=name+": "+diff+"ms";
  5332. this.info(label);
  5333. delete this.timeCounters[key]
  5334. }return diff
  5335. };
  5336. this.evaluated=function(result,context){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("consoleInjector.FirebugConsoleHandler evalutated default called",result)
  5337. }Firebug.Console.log(result,context)
  5338. };
  5339. this.evaluateError=function(result,context){Firebug.Console.log(result,context,"errorMessage")
  5340. };
  5341. function logFormatted(args,className,linkToSource,noThrottle){var sourceLink=linkToSource?getStackLink():null;
  5342. return Firebug.Console.logFormatted(args,context,className,noThrottle,sourceLink)
  5343. }function logAssert(category,args){Firebug.Errors.increaseCount(context);
  5344. if(!args||!args.length||args.length==0){var msg=[FBL.$STR("Assertion")]
  5345. }else{var msg=args[0]
  5346. }if(Firebug.errorStackTrace){var trace=Firebug.errorStackTrace;
  5347. delete Firebug.errorStackTrace;
  5348. if(FBTrace.DBG_CONSOLE){FBTrace.sysout("logAssert trace from errorStackTrace",trace)
  5349. }}else{if(msg.stack){var trace=parseToStackTrace(msg.stack);
  5350. if(FBTrace.DBG_CONSOLE){FBTrace.sysout("logAssert trace from msg.stack",trace)
  5351. }}else{var trace=getJSDUserStack();
  5352. if(FBTrace.DBG_CONSOLE){FBTrace.sysout("logAssert trace from getJSDUserStack",trace)
  5353. }}}var errorObject=new FBL.ErrorMessage(msg,(msg.fileName?msg.fileName:win.location),(msg.lineNumber?msg.lineNumber:0),"",category,context,trace);
  5354. if(trace&&trace.frames&&trace.frames[0]){errorObject.correctWithStackTrace(trace)
  5355. }errorObject.resetSource();
  5356. var objects=errorObject;
  5357. if(args.length>1){objects=[errorObject];
  5358. for(var i=1;
  5359. i<args.length;
  5360. i++){objects.push(args[i])
  5361. }}var row=Firebug.Console.log(objects,context,"errorMessage",null,true);
  5362. row.scrollIntoView()
  5363. }function getComponentsStackDump(){var frame=Components.stack;
  5364. var userURL=win.location.href.toString();
  5365. if(FBTrace.DBG_CONSOLE){FBTrace.sysout("consoleInjector.getComponentsStackDump initial stack for userURL "+userURL,frame)
  5366. }while(frame&&FBL.isSystemURL(frame.filename)){frame=frame.caller
  5367. }if(frame){frame=frame.caller
  5368. }if(frame){frame=frame.caller
  5369. }if(FBTrace.DBG_CONSOLE){FBTrace.sysout("consoleInjector.getComponentsStackDump final stack for userURL "+userURL,frame)
  5370. }return frame
  5371. }function getStackLink(){return
  5372. }function getJSDUserStack(){var trace=FBL.getCurrentStackTrace(context);
  5373. var frames=trace?trace.frames:null;
  5374. if(frames&&(frames.length>0)){var oldest=frames.length-1;
  5375. for(var i=0;
  5376. i<frames.length;
  5377. i++){if(frames[oldest-i].href.indexOf("chrome:")==0){break
  5378. }var fn=frames[oldest-i].fn+"";
  5379. if(fn&&(fn.indexOf("_firebugEvalEvent")!=-1)){break
  5380. }}FBTrace.sysout("consoleInjector getJSDUserStack: "+frames.length+" oldest: "+oldest+" i: "+i+" i - oldest + 2: "+(i-oldest+2),trace);
  5381. trace.frames=trace.frames.slice(2-i);
  5382. return trace
  5383. }else{return"Firebug failed to get stack trace with any frames"
  5384. }}};
  5385. FBL.registerConsole=function(){var win=Env.browser.window;
  5386. Firebug.Console.injector.install(win)
  5387. };
  5388. registerConsole()
  5389. }});
  5390. FBL.ns(function(){with(FBL){var commandPrefix=">>>";
  5391. var reOpenBracket=/[\[\(\{]/;
  5392. var reCloseBracket=/[\]\)\}]/;
  5393. var commandHistory=[];
  5394. var commandPointer=-1;
  5395. var isAutoCompleting=null;
  5396. var autoCompletePrefix=null;
  5397. var autoCompleteExpr=null;
  5398. var autoCompleteBuffer=null;
  5399. var autoCompletePosition=null;
  5400. var fbCommandLine=null;
  5401. var fbLargeCommandLine=null;
  5402. var fbLargeCommandButtons=null;
  5403. var _completion={window:["console"],document:["getElementById","getElementsByTagName"]};
  5404. var _stack=function(command){commandHistory.push(command);
  5405. commandPointer=commandHistory.length
  5406. };
  5407. Firebug.CommandLine=extend(Firebug.Module,{element:null,isMultiLine:false,isActive:false,initialize:function(doc){this.clear=bind(this.clear,this);
  5408. this.enter=bind(this.enter,this);
  5409. this.onError=bind(this.onError,this);
  5410. this.onKeyDown=bind(this.onKeyDown,this);
  5411. this.onMultiLineKeyDown=bind(this.onMultiLineKeyDown,this);
  5412. addEvent(Firebug.browser.window,"error",this.onError);
  5413. addEvent(Firebug.chrome.window,"error",this.onError)
  5414. },shutdown:function(doc){this.deactivate();
  5415. removeEvent(Firebug.browser.window,"error",this.onError);
  5416. removeEvent(Firebug.chrome.window,"error",this.onError)
  5417. },activate:function(multiLine,hideToggleIcon,onRun){defineCommandLineAPI();
  5418. if(this.isActive){if(this.isMultiLine==multiLine){return
  5419. }this.deactivate()
  5420. }fbCommandLine=$("fbCommandLine");
  5421. fbLargeCommandLine=$("fbLargeCommandLine");
  5422. fbLargeCommandButtons=$("fbLargeCommandButtons");
  5423. if(multiLine){onRun=onRun||this.enter;
  5424. this.isMultiLine=true;
  5425. this.element=fbLargeCommandLine;
  5426. addEvent(this.element,"keydown",this.onMultiLineKeyDown);
  5427. addEvent($("fbSmallCommandLineIcon"),"click",Firebug.chrome.hideLargeCommandLine);
  5428. this.runButton=new Button({element:$("fbCommand_btRun"),owner:Firebug.CommandLine,onClick:onRun});
  5429. this.runButton.initialize();
  5430. this.clearButton=new Button({element:$("fbCommand_btClear"),owner:Firebug.CommandLine,onClick:this.clear});
  5431. this.clearButton.initialize()
  5432. }else{this.isMultiLine=false;
  5433. this.element=fbCommandLine;
  5434. if(!fbCommandLine){return
  5435. }addEvent(this.element,"keydown",this.onKeyDown)
  5436. }if(isOpera){fixOperaTabKey(this.element)
  5437. }if(this.lastValue){this.element.value=this.lastValue
  5438. }this.isActive=true
  5439. },deactivate:function(){if(!this.isActive){return
  5440. }this.isActive=false;
  5441. this.lastValue=this.element.value;
  5442. if(this.isMultiLine){removeEvent(this.element,"keydown",this.onMultiLineKeyDown);
  5443. removeEvent($("fbSmallCommandLineIcon"),"click",Firebug.chrome.hideLargeCommandLine);
  5444. this.runButton.destroy();
  5445. this.clearButton.destroy()
  5446. }else{removeEvent(this.element,"keydown",this.onKeyDown)
  5447. }this.element=null;
  5448. delete this.element;
  5449. fbCommandLine=null;
  5450. fbLargeCommandLine=null;
  5451. fbLargeCommandButtons=null
  5452. },focus:function(){this.element.focus()
  5453. },blur:function(){this.element.blur()
  5454. },clear:function(){this.element.value=""
  5455. },evaluate:function(expr){var api="Firebug.CommandLine.API";
  5456. var result=Firebug.context.evaluate(expr,"window",api,Firebug.Console.error);
  5457. return result
  5458. },enter:function(){var command=this.element.value;
  5459. if(!command){return
  5460. }_stack(command);
  5461. Firebug.Console.log(commandPrefix+" "+stripNewLines(command),Firebug.browser,"command",FirebugReps.Text);
  5462. var result=this.evaluate(command);
  5463. Firebug.Console.log(result)
  5464. },prevCommand:function(){if(commandPointer>0&&commandHistory.length>0){this.element.value=commandHistory[--commandPointer]
  5465. }},nextCommand:function(){var element=this.element;
  5466. var limit=commandHistory.length-1;
  5467. var i=commandPointer;
  5468. if(i<limit){element.value=commandHistory[++commandPointer]
  5469. }else{if(i==limit){++commandPointer;
  5470. element.value=""
  5471. }}},autocomplete:function(reverse){var element=this.element;
  5472. var command=element.value;
  5473. var offset=getExpressionOffset(command);
  5474. var valBegin=offset?command.substr(0,offset):"";
  5475. var val=command.substr(offset);
  5476. var buffer,obj,objName,commandBegin,result,prefix;
  5477. if(!isAutoCompleting){var reObj=/(.*[^_$\w\d\.])?((?:[_$\w][_$\w\d]*\.)*)([_$\w][_$\w\d]*)?$/;
  5478. var r=reObj.exec(val);
  5479. if(r[1]||r[2]||r[3]){commandBegin=r[1]||"";
  5480. objName=r[2]||"";
  5481. prefix=r[3]||""
  5482. }else{if(val==""){commandBegin=objName=prefix=""
  5483. }else{return
  5484. }}isAutoCompleting=true;
  5485. if(objName==""){obj=window
  5486. }else{objName=objName.replace(/\.$/,"");
  5487. var n=objName.split(".");
  5488. var target=window,o;
  5489. for(var i=0,ni;
  5490. ni=n[i];
  5491. i++){if(o=target[ni]){target=o
  5492. }else{target=null;
  5493. break
  5494. }}obj=target
  5495. }if(obj){autoCompletePrefix=prefix;
  5496. autoCompleteExpr=valBegin+commandBegin+(objName?objName+".":"");
  5497. autoCompletePosition=-1;
  5498. buffer=autoCompleteBuffer=isIE?_completion[objName||"window"]||[]:[];
  5499. for(var p in obj){buffer.push(p)
  5500. }}}else{buffer=autoCompleteBuffer
  5501. }if(buffer){prefix=autoCompletePrefix;
  5502. var diff=reverse?-1:1;
  5503. for(var i=autoCompletePosition+diff,l=buffer.length,bi;
  5504. i>=0&&i<l;
  5505. i+=diff){bi=buffer[i];
  5506. if(bi.indexOf(prefix)==0){autoCompletePosition=i;
  5507. result=bi;
  5508. break
  5509. }}}if(result){element.value=autoCompleteExpr+result
  5510. }},setMultiLine:function(multiLine){if(multiLine==this.isMultiLine){return
  5511. }this.activate(multiLine)
  5512. },onError:function(msg,href,lineNo){href=href||"";
  5513. var lastSlash=href.lastIndexOf("/");
  5514. var fileName=lastSlash==-1?href:href.substr(lastSlash+1);
  5515. var html=['<span class="errorMessage">',msg,"</span>",'<div class="objectBox-sourceLink">',fileName," (line ",lineNo,")</div>"]
  5516. },onKeyDown:function(e){e=e||event;
  5517. var code=e.keyCode;
  5518. if(code!=9&&code!=16&&code!=17&&code!=18){isAutoCompleting=false
  5519. }if(code==13){this.enter();
  5520. this.clear()
  5521. }else{if(code==27){setTimeout(this.clear,0)
  5522. }else{if(code==38){this.prevCommand()
  5523. }else{if(code==40){this.nextCommand()
  5524. }else{if(code==9){this.autocomplete(e.shiftKey)
  5525. }else{return
  5526. }}}}}cancelEvent(e,true);
  5527. return false
  5528. },onMultiLineKeyDown:function(e){e=e||event;
  5529. var code=e.keyCode;
  5530. if(code==13&&e.ctrlKey){this.enter()
  5531. }}});
  5532. Firebug.registerModule(Firebug.CommandLine);
  5533. function getExpressionOffset(command){var bracketCount=0;
  5534. var start=command.length-1;
  5535. for(;
  5536. start>=0;
  5537. --start){var c=command[start];
  5538. if((c==","||c==";"||c==" ")&&!bracketCount){break
  5539. }if(reOpenBracket.test(c)){if(bracketCount){--bracketCount
  5540. }else{break
  5541. }}else{if(reCloseBracket.test(c)){++bracketCount
  5542. }}}return start+1
  5543. }var CommandLineAPI={$:function(id){return Firebug.browser.document.getElementById(id)
  5544. },$$:function(selector,context){context=context||Firebug.browser.document;
  5545. return Firebug.Selector?Firebug.Selector(selector,context):Firebug.Console.error("Firebug.Selector module not loaded.")
  5546. },$0:null,$1:null,dir:function(o){Firebug.Console.log(o,Firebug.context,"dir",Firebug.DOMPanel.DirTable)
  5547. },dirxml:function(o){if(instanceOf(o,"Window")){o=o.document.documentElement
  5548. }else{if(instanceOf(o,"Document")){o=o.documentElement
  5549. }}var div=Firebug.Console.log(o,Firebug.context,"dirxml");
  5550. var html=[];
  5551. Firebug.Reps.appendNode(o,html);
  5552. div.innerHTML=html.join("")
  5553. }};
  5554. var defineCommandLineAPI=function defineCommandLineAPI(){Firebug.CommandLine.API={};
  5555. for(var m in CommandLineAPI){if(!Env.browser.window[m]){Firebug.CommandLine.API[m]=CommandLineAPI[m]
  5556. }}var stack=FirebugChrome.htmlSelectionStack;
  5557. if(stack){Firebug.CommandLine.API.$0=stack[0];
  5558. Firebug.CommandLine.API.$1=stack[1]
  5559. }}
  5560. }});
  5561. FBL.ns(function(){with(FBL){if(Env.Options.disableXHRListener){return
  5562. }var XHRSpy=function(){this.requestHeaders=[];
  5563. this.responseHeaders=[]
  5564. };
  5565. 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
  5566. }};
  5567. var XMLHttpRequestWrapper=function(activeXObject){var xhrRequest=typeof activeXObject!="undefined"?activeXObject:new _XMLHttpRequest(),spy=new XHRSpy(),self=this,reqType,reqUrl,reqStartTS;
  5568. var updateSelfPropertiesIgnore={abort:1,channel:1,getAllResponseHeaders:1,getInterface:1,getResponseHeader:1,mozBackgroundRequest:1,multipart:1,onreadystatechange:1,open:1,send:1,setRequestHeader:1};
  5569. var updateSelfProperties=function(){if(supportsXHRIterator){for(var propName in xhrRequest){if(propName in updateSelfPropertiesIgnore){continue
  5570. }try{var propValue=xhrRequest[propName];
  5571. if(propValue&&!isFunction(propValue)){self[propName]=propValue
  5572. }}catch(E){}}}else{if(xhrRequest.readyState==4){self.status=xhrRequest.status;
  5573. self.statusText=xhrRequest.statusText;
  5574. self.responseText=xhrRequest.responseText;
  5575. self.responseXML=xhrRequest.responseXML
  5576. }}};
  5577. var updateXHRPropertiesIgnore={channel:1,onreadystatechange:1,readyState:1,responseBody:1,responseText:1,responseXML:1,status:1,statusText:1,upload:1};
  5578. var updateXHRProperties=function(){for(var propName in self){if(propName in updateXHRPropertiesIgnore){continue
  5579. }try{var propValue=self[propName];
  5580. if(propValue&&!xhrRequest[propName]){xhrRequest[propName]=propValue
  5581. }}catch(E){}}};
  5582. var logXHR=function(){var row=Firebug.Console.log(spy,null,"spy",Firebug.Spy.XHR);
  5583. if(row){setClass(row,"loading");
  5584. spy.logRow=row
  5585. }};
  5586. var finishXHR=function(){var duration=new Date().getTime()-reqStartTS;
  5587. var success=xhrRequest.status==200;
  5588. var responseHeadersText=xhrRequest.getAllResponseHeaders();
  5589. var responses=responseHeadersText?responseHeadersText.split(/[\n\r]/):[];
  5590. var reHeader=/^(\S+):\s*(.*)/;
  5591. for(var i=0,l=responses.length;
  5592. i<l;
  5593. i++){var text=responses[i];
  5594. var match=text.match(reHeader);
  5595. if(match){var name=match[1];
  5596. var value=match[2];
  5597. if(name=="Content-Type"){spy.mimeType=value
  5598. }spy.responseHeaders.push({name:[name],value:[value]})
  5599. }}with({row:spy.logRow,status:xhrRequest.status==0?"":xhrRequest.status+" "+xhrRequest.statusText,time:duration,success:success}){setTimeout(function(){spy.responseText=xhrRequest.responseText;
  5600. row=row||spy.logRow;
  5601. if(!row){return
  5602. }handleRequestStatus(success,status,time)
  5603. },200)
  5604. }spy.loaded=true;
  5605. updateSelfProperties()
  5606. };
  5607. var handleStateChange=function(){self.readyState=xhrRequest.readyState;
  5608. if(xhrRequest.readyState==4){finishXHR();
  5609. xhrRequest.onreadystatechange=function(){}
  5610. }self.onreadystatechange()
  5611. };
  5612. var handleRequestStatus=function(success,status,time){var row=spy.logRow;
  5613. FBL.removeClass(row,"loading");
  5614. if(!success){FBL.setClass(row,"error")
  5615. }var item=FBL.$$(".spyStatus",row)[0];
  5616. item.innerHTML=status;
  5617. if(time){var item=FBL.$$(".spyTime",row)[0];
  5618. item.innerHTML=time+"ms"
  5619. }};
  5620. this.readyState=0;
  5621. this.onreadystatechange=function(){};
  5622. this.open=function(method,url,async,user,password){updateSelfProperties();
  5623. if(spy.loaded){spy=new XHRSpy()
  5624. }spy.method=method;
  5625. spy.url=url;
  5626. spy.async=async;
  5627. spy.href=url;
  5628. spy.xhrRequest=xhrRequest;
  5629. spy.urlParams=parseURLParamsArray(url);
  5630. try{if(supportsApply){xhrRequest.open.apply(xhrRequest,arguments)
  5631. }else{xhrRequest.open(method,url,async,user,password)
  5632. }}catch(e){}xhrRequest.onreadystatechange=handleStateChange
  5633. };
  5634. this.send=function(data){spy.data=data;
  5635. reqStartTS=new Date().getTime();
  5636. updateXHRProperties();
  5637. try{xhrRequest.send(data)
  5638. }catch(e){}finally{logXHR();
  5639. if(!spy.async){self.readyState=xhrRequest.readyState;
  5640. try{finishXHR()
  5641. }catch(E){}}}};
  5642. this.setRequestHeader=function(header,value){spy.requestHeaders.push({name:[header],value:[value]});
  5643. return xhrRequest.setRequestHeader(header,value)
  5644. };
  5645. this.abort=function(){xhrRequest.abort();
  5646. updateSelfProperties();
  5647. handleRequestStatus(false,"Aborted")
  5648. };
  5649. this.getResponseHeader=function(header){return xhrRequest.getResponseHeader(header)
  5650. };
  5651. this.getAllResponseHeaders=function(){return xhrRequest.getAllResponseHeaders()
  5652. };
  5653. var supportsApply=!isIE6&&xhrRequest&&xhrRequest.open&&typeof xhrRequest.open.apply!="undefined";
  5654. var numberOfXHRProperties=0;
  5655. for(var propName in xhrRequest){numberOfXHRProperties++;
  5656. if(propName in updateSelfPropertiesIgnore){continue
  5657. }try{var propValue=xhrRequest[propName];
  5658. if(isFunction(propValue)){if(typeof self[propName]=="undefined"){this[propName]=(function(name,xhr){return supportsApply?function(){return xhr[name].apply(xhr,arguments)
  5659. }:function(a,b,c,d,e){return xhr[name](a,b,c,d,e)
  5660. }
  5661. })(propName,xhrRequest)
  5662. }}else{this[propName]=propValue
  5663. }}catch(E){}}var supportsXHRIterator=numberOfXHRProperties>0;
  5664. return this
  5665. };
  5666. var _ActiveXObject;
  5667. var isIE6=/msie 6/i.test(navigator.appVersion);
  5668. if(isIE6){_ActiveXObject=window.ActiveXObject;
  5669. var xhrObjects=" MSXML2.XMLHTTP.5.0 MSXML2.XMLHTTP.4.0 MSXML2.XMLHTTP.3.0 MSXML2.XMLHTTP Microsoft.XMLHTTP ";
  5670. window.ActiveXObject=function(name){var error=null;
  5671. try{var activeXObject=new _ActiveXObject(name)
  5672. }catch(e){error=e
  5673. }finally{if(!error){if(xhrObjects.indexOf(" "+name+" ")!=-1){return new XMLHttpRequestWrapper(activeXObject)
  5674. }else{return activeXObject
  5675. }}else{throw error.message
  5676. }}}
  5677. }if(!isIE6){var _XMLHttpRequest=XMLHttpRequest;
  5678. window.XMLHttpRequest=function(){return new XMLHttpRequestWrapper()
  5679. }
  5680. }}});
  5681. FBL.ns(function(){with(FBL){var reIgnore=/about:|javascript:|resource:|chrome:|jar:/;
  5682. var layoutInterval=300;
  5683. var indentWidth=18;
  5684. var cacheSession=null;
  5685. var contexts=new Array();
  5686. var panelName="net";
  5687. var maxQueueRequests=500;
  5688. var activeRequests=[];
  5689. 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"};
  5690. var fileCategories={"undefined":1,html:1,css:1,js:1,xhr:1,image:1,flash:1,txt:1,bin:1};
  5691. var textFileCategories={txt:1,html:1,xhr:1,css:1,js:1};
  5692. var binaryFileCategories={bin:1,flash:1};
  5693. 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"};
  5694. var binaryCategoryMap={image:1,flash:1};
  5695. Firebug.NetMonitor=extend(Firebug.ActivableModule,{dispatchName:"netMonitor",clear:function(context){var panel=context.getPanel(panelName,true);
  5696. if(panel){panel.clear()
  5697. }},initialize:function(){return;
  5698. this.panelName=panelName;
  5699. Firebug.ActivableModule.initialize.apply(this,arguments);
  5700. if(Firebug.TraceModule){Firebug.TraceModule.addListener(this.TraceListener)
  5701. }NetHttpObserver.registerObserver();
  5702. NetHttpActivityObserver.registerObserver();
  5703. Firebug.Debugger.addListener(this.DebuggerListener)
  5704. },shutdown:function(){return;
  5705. prefs.removeObserver(Firebug.prefDomain,this,false);
  5706. if(Firebug.TraceModule){Firebug.TraceModule.removeListener(this.TraceListener)
  5707. }NetHttpObserver.unregisterObserver();
  5708. NetHttpActivityObserver.unregisterObserver();
  5709. Firebug.Debugger.removeListener(this.DebuggerListener)
  5710. }});
  5711. 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
  5712. },getParamName:function(param){var limit=25;
  5713. var name=param.name;
  5714. if(name.length>limit){name=name.substr(0,limit)+"..."
  5715. }return name
  5716. },getParamTitle:function(param){var limit=25;
  5717. var name=param.name;
  5718. if(name.length>limit){return name
  5719. }return""
  5720. },hideParams:function(file){return !file.urlParams||!file.urlParams.length
  5721. },hidePost:function(file){return file.method.toUpperCase()!="POST"
  5722. },hidePut:function(file){return file.method.toUpperCase()!="PUT"
  5723. },hideResponse:function(file){return false
  5724. },hideCache:function(file){return true;
  5725. return !file.cacheEntry
  5726. },hideHtml:function(file){return(file.mimeType!="text/html")&&(file.mimeType!="application/xhtml+xml")
  5727. },onClickTab:function(event){this.selectTab(event.currentTarget||event.srcElement)
  5728. },getParamValueIterator:function(param){return param.value;
  5729. return wrapText(param.value,true)
  5730. },appendTab:function(netInfoBox,tabId,tabTitle){var args={tabId:tabId,tabTitle:tabTitle};
  5731. this.customTab.append(args,$$(".netInfoTabs",netInfoBox)[0]);
  5732. this.customBody.append(args,$$(".netInfoBodies",netInfoBox)[0])
  5733. },selectTabByName:function(netInfoBox,tabName){var tab=getChildByClass(netInfoBox,"netInfoTabs","netInfo"+tabName+"Tab");
  5734. if(tab){this.selectTab(tab)
  5735. }},selectTab:function(tab){var view=tab.getAttribute("view");
  5736. var netInfoBox=getAncestorByClass(tab,"netInfoBody");
  5737. var selectedTab=netInfoBox.selectedTab;
  5738. if(selectedTab){removeClass(netInfoBox.selectedText,"netInfoTextSelected");
  5739. removeClass(selectedTab,"netInfoTabSelected");
  5740. selectedTab.setAttribute("aria-selected","false")
  5741. }var textBodyName="netInfo"+view+"Text";
  5742. selectedTab=netInfoBox.selectedTab=tab;
  5743. netInfoBox.selectedText=$$("."+textBodyName,netInfoBox)[0];
  5744. setClass(netInfoBox.selectedText,"netInfoTextSelected");
  5745. setClass(selectedTab,"netInfoTabSelected");
  5746. selectedTab.setAttribute("selected","true");
  5747. selectedTab.setAttribute("aria-selected","true");
  5748. var file=Firebug.getRepObject(netInfoBox);
  5749. var context=Firebug.chrome;
  5750. this.updateInfo(netInfoBox,file,context)
  5751. },updateInfo:function(netInfoBox,file,context){if(FBTrace.DBG_NET){FBTrace.sysout("net.updateInfo; file",file)
  5752. }if(!netInfoBox){if(FBTrace.DBG_NET||FBTrace.DBG_ERRORS){FBTrace.sysout("net.updateInfo; ERROR netInfo == null "+file.href,file)
  5753. }return
  5754. }var tab=netInfoBox.selectedTab;
  5755. if(hasClass(tab,"netInfoParamsTab")){if(file.urlParams&&!netInfoBox.urlParamsPresented){netInfoBox.urlParamsPresented=true;
  5756. this.insertHeaderRows(netInfoBox,file.urlParams,"Params")
  5757. }}else{if(hasClass(tab,"netInfoHeadersTab")){var headersText=$$(".netInfoHeadersText",netInfoBox)[0];
  5758. if(file.responseHeaders&&!netInfoBox.responseHeadersPresented){netInfoBox.responseHeadersPresented=true;
  5759. NetInfoHeaders.renderHeaders(headersText,file.responseHeaders,"ResponseHeaders")
  5760. }if(file.requestHeaders&&!netInfoBox.requestHeadersPresented){netInfoBox.requestHeadersPresented=true;
  5761. NetInfoHeaders.renderHeaders(headersText,file.requestHeaders,"RequestHeaders")
  5762. }}else{if(hasClass(tab,"netInfoPostTab")){if(!netInfoBox.postPresented){netInfoBox.postPresented=true;
  5763. var postText=$$(".netInfoPostText",netInfoBox)[0];
  5764. NetInfoPostData.render(context,postText,file)
  5765. }}else{if(hasClass(tab,"netInfoPutTab")){if(!netInfoBox.putPresented){netInfoBox.putPresented=true;
  5766. var putText=$$(".netInfoPutText",netInfoBox)[0];
  5767. NetInfoPostData.render(context,putText,file)
  5768. }}else{if(hasClass(tab,"netInfoResponseTab")&&file.loaded&&!netInfoBox.responsePresented){var responseTextBox=$$(".netInfoResponseText",netInfoBox)[0];
  5769. if(file.category=="image"){netInfoBox.responsePresented=true;
  5770. var responseImage=netInfoBox.ownerDocument.createElement("img");
  5771. responseImage.src=file.href;
  5772. clearNode(responseTextBox);
  5773. responseTextBox.appendChild(responseImage,responseTextBox)
  5774. }else{this.setResponseText(file,netInfoBox,responseTextBox,context)
  5775. }}else{if(hasClass(tab,"netInfoCacheTab")&&file.loaded&&!netInfoBox.cachePresented){var responseTextBox=netInfoBox.getElementsByClassName("netInfoCacheText").item(0);
  5776. if(file.cacheEntry){netInfoBox.cachePresented=true;
  5777. this.insertHeaderRows(netInfoBox,file.cacheEntry,"Cache")
  5778. }}else{if(hasClass(tab,"netInfoHtmlTab")&&file.loaded&&!netInfoBox.htmlPresented){netInfoBox.htmlPresented=true;
  5779. var text=Utils.getResponseText(file,context);
  5780. var iframe=$$(".netInfoHtmlPreview",netInfoBox)[0];
  5781. var reScript=/<script(.|\s)*?\/script>/gi;
  5782. text=text.replace(reScript,"");
  5783. iframe.contentWindow.document.write(text);
  5784. iframe.contentWindow.document.close()
  5785. }}}}}}}dispatch(NetInfoBody.fbListeners,"updateTabBody",[netInfoBox,file,context])
  5786. },setResponseText:function(file,netInfoBox,responseTextBox,context){netInfoBox.responsePresented=true;
  5787. if(isIE){responseTextBox.style.whiteSpace="nowrap"
  5788. }responseTextBox[typeof responseTextBox.textContent!="undefined"?"textContent":"innerText"]=file.responseText;
  5789. return;
  5790. var text=Utils.getResponseText(file,context);
  5791. var limit=Firebug.netDisplayedResponseLimit+15;
  5792. var limitReached=text?(text.length>limit):false;
  5793. if(limitReached){text=text.substr(0,limit)+"..."
  5794. }if(text){insertWrappedText(text,responseTextBox)
  5795. }else{insertWrappedText("",responseTextBox)
  5796. }if(limitReached){var object={text:$STR("net.responseSizeLimitMessage"),onClickLink:function(){var panel=context.getPanel("net",true);
  5797. panel.openResponseInTab(file)
  5798. }};
  5799. Firebug.NetMonitor.ResponseSizeLimit.append(object,responseTextBox)
  5800. }netInfoBox.responsePresented=true;
  5801. if(FBTrace.DBG_NET){FBTrace.sysout("net.setResponseText; response text updated")
  5802. }},insertHeaderRows:function(netInfoBox,headers,tableName,rowName){if(!headers.length){return
  5803. }var headersTable=$$(".netInfo"+tableName+"Table",netInfoBox)[0];
  5804. var tbody=getChildByClass(headersTable,"netInfo"+rowName+"Body");
  5805. if(!tbody){tbody=headersTable.firstChild
  5806. }var titleRow=getChildByClass(tbody,"netInfo"+rowName+"Title");
  5807. this.headerDataTag.insertRows({headers:headers},titleRow?titleRow:tbody);
  5808. removeClass(titleRow,"collapsed")
  5809. }});
  5810. var NetInfoBody=Firebug.NetMonitor.NetInfoBody;
  5811. 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;
  5812. var requestHeaders=(target.rowName=="RequestHeaders");
  5813. var netInfoBox=getAncestorByClass(target,"netInfoBody");
  5814. var file=netInfoBox.repObject;
  5815. if(target.sourceDisplayed){var headers=requestHeaders?file.requestHeaders:file.responseHeaders;
  5816. this.insertHeaderRows(netInfoBox,headers,target.rowName);
  5817. target.innerHTML=$STR("net.headers.view source")
  5818. }else{var source=requestHeaders?file.requestHeadersText:file.responseHeadersText;
  5819. this.insertSource(netInfoBox,source,target.rowName);
  5820. target.innerHTML=$STR("net.headers.pretty print")
  5821. }target.sourceDisplayed=!target.sourceDisplayed;
  5822. cancelEvent(event)
  5823. },insertSource:function(netInfoBox,source,rowName){var tbody=$$(".netInfo"+rowName+"Body",netInfoBox)[0];
  5824. var node=this.sourceTag.replace({},tbody);
  5825. var sourceNode=$$(".source",node)[0];
  5826. sourceNode.innerHTML=source
  5827. },insertHeaderRows:function(netInfoBox,headers,rowName){var headersTable=$$(".netInfoHeadersTable",netInfoBox)[0];
  5828. var tbody=$$(".netInfo"+rowName+"Body",headersTable)[0];
  5829. clearNode(tbody);
  5830. if(!headers.length){return
  5831. }NetInfoBody.headerDataTag.insertRows({headers:headers},tbody);
  5832. var titleRow=getChildByClass(headersTable,"netInfo"+rowName+"Title");
  5833. removeClass(titleRow,"collapsed")
  5834. },init:function(parent){var rootNode=this.tag.append({},parent);
  5835. var netInfoBox=getAncestorByClass(parent,"netInfoBody");
  5836. var file=netInfoBox.repObject;
  5837. var viewSource;
  5838. viewSource=$$(".request",rootNode)[0];
  5839. if(file.requestHeadersText){removeClass(viewSource,"collapsed")
  5840. }viewSource=$$(".response",rootNode)[0];
  5841. if(file.responseHeadersText){removeClass(viewSource,"collapsed")
  5842. }},renderHeaders:function(parent,headers,rowName){if(!parent.firstChild){this.init(parent)
  5843. }this.insertHeaderRows(parent,headers,rowName)
  5844. }});
  5845. var NetInfoHeaders=Firebug.NetMonitor.NetInfoHeaders;
  5846. 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)
  5847. },render:function(context,parentNode,file){var spy=getAncestorByClass(parentNode,"spyHead");
  5848. var spyObject=spy.repObject;
  5849. var data=spyObject.data;
  5850. var contentType=file.mimeType;
  5851. if(contentType&&contentType=="application/x-www-form-urlencoded"||data&&data.indexOf("=")!=-1){var params=parseURLEncodedTextArray(data);
  5852. if(params){this.insertParameters(parentNode,params)
  5853. }}var jsonData={responseText:data};
  5854. if(Firebug.JSONViewerModel.isJSON(contentType,data)){this.insertJSON(parentNode,jsonData,context)
  5855. }var postText=data;
  5856. if(postText){this.insertSource(parentNode,postText)
  5857. }},insertParameters:function(parentNode,params){if(!params||!params.length){return
  5858. }var paramTable=this.paramsTable.append({object:{}},parentNode);
  5859. var row=$$(".netInfoPostParamsTitle",paramTable)[0];
  5860. var tbody=paramTable.getElementsByTagName("tbody")[0];
  5861. NetInfoBody.headerDataTag.insertRows({headers:params},row)
  5862. },insertParts:function(parentNode,data){if(!data.params||!data.params.length){return
  5863. }var partsTable=this.partsTable.append({object:{}},parentNode);
  5864. var row=$$(".netInfoPostPartsTitle",paramTable)[0];
  5865. NetInfoBody.headerDataTag.insertRows({headers:data.params},row)
  5866. },insertJSON:function(parentNode,file,context){var text=file.responseText;
  5867. var data=parseJSONString(text);
  5868. if(!data){return
  5869. }var jsonTable=this.jsonTable.append({},parentNode);
  5870. var jsonBody=$$(".netInfoPostJSONBody",jsonTable)[0];
  5871. if(!this.toggles){this.toggles={}
  5872. }Firebug.DOMPanel.DirTable.tag.replace({object:data,toggles:this.toggles},jsonBody)
  5873. },insertXML:function(parentNode,file,context){var text=Utils.getPostText(file,context);
  5874. var jsonTable=this.xmlTable.append(null,parentNode);
  5875. var jsonBody=$$(".netInfoPostXMLBody",jsonTable)[0];
  5876. Firebug.XMLViewerModel.insertXML(jsonBody,text)
  5877. },insertSource:function(parentNode,text){var sourceTable=this.sourceTable.append({object:{}},parentNode);
  5878. var row=$$(".netInfoPostSourceTitle",sourceTable)[0];
  5879. var param={value:[text]};
  5880. this.sourceBodyTag.insertRows({param:param},row)
  5881. },parseMultiPartText:function(file,context){var text=Utils.getPostText(file,context);
  5882. if(text==undefined){return null
  5883. }FBTrace.sysout("net.parseMultiPartText; boundary: ",text);
  5884. var boundary=text.match(/\s*boundary=\s*(.*)/)[1];
  5885. var divider="\r\n\r\n";
  5886. var bodyStart=text.indexOf(divider);
  5887. var body=text.substr(bodyStart+divider.length);
  5888. var postData={};
  5889. postData.mimeType="multipart/form-data";
  5890. postData.params=[];
  5891. var parts=body.split("--"+boundary);
  5892. for(var i=0;
  5893. i<parts.length;
  5894. i++){var part=parts[i].split(divider);
  5895. if(part.length!=2){continue
  5896. }var m=part[0].match(/\s*name=\"(.*)\"(;|$)/);
  5897. postData.params.push({name:(m&&m.length>1)?m[1]:"",value:trim(part[1])})
  5898. }return postData
  5899. }});
  5900. var NetInfoPostData=Firebug.NetMonitor.NetInfoPostData;
  5901. var $STRP=function(a){return a
  5902. };
  5903. 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("&nbsp;")))))),isCollapsed:function(){return this.collapsed
  5904. },onPreferences:function(event){openNewTab("about:config")
  5905. },updateCounter:function(row){removeClass(row,"collapsed");
  5906. var limitLabel=row.getElementsByClassName("netLimitLabel").item(0);
  5907. limitLabel.firstChild.nodeValue=$STRP("plural.Limit_Exceeded",[row.limitInfo.totalCount])
  5908. },createTable:function(parent,limitInfo){var table=this.tableTag.replace({},parent);
  5909. var row=this.createRow(table.firstChild.firstChild,limitInfo);
  5910. return[table,row]
  5911. },createRow:function(parent,limitInfo){var row=this.limitTag.insertRows(limitInfo,parent,this)[0];
  5912. row.limitInfo=limitInfo;
  5913. return row
  5914. },observe:function(subject,topic,data){if(topic!="nsPref:changed"){return
  5915. }if(data.indexOf("net.logLimit")!=-1){this.updateMaxLimit()
  5916. }},updateMaxLimit:function(){var value=Firebug.getPref(Firebug.prefDomain,"net.logLimit");
  5917. maxQueueRequests=value?value:maxQueueRequests
  5918. }});
  5919. var NetLimit=Firebug.NetMonitor.NetLimit;
  5920. 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);
  5921. return this.tag.append({onClickLink:obj.onClickLink,object:{beforeLink:m[1],linkText:m[2],afterLink:m[3]}},parent,this)
  5922. }});
  5923. Firebug.NetMonitor.Utils={findHeader:function(headers,name){if(!headers){return null
  5924. }name=name.toLowerCase();
  5925. for(var i=0;
  5926. i<headers.length;
  5927. ++i){var headerName=headers[i].name.toLowerCase();
  5928. if(headerName==name){return headers[i].value
  5929. }}},formatPostText:function(text){if(text instanceof XMLDocument){return getElementXML(text.documentElement)
  5930. }else{return text
  5931. }},getPostText:function(file,context,noLimit){if(!file.postText){file.postText=readPostTextFromRequest(file.request,context);
  5932. if(!file.postText&&context){file.postText=readPostTextFromPage(file.href,context)
  5933. }}if(!file.postText){return file.postText
  5934. }var limit=Firebug.netDisplayedPostBodyLimit;
  5935. if(file.postText.length>limit&&!noLimit){return cropString(file.postText,limit,"\n\n... "+$STR("net.postDataSizeLimitMessage")+" ...\n\n")
  5936. }return file.postText
  5937. },getResponseText:function(file,context){return(typeof(file.responseText)!="undefined")?file.responseText:context.sourceCache.loadText(file.href,file.method,file)
  5938. },isURLEncodedRequest:function(file,context){var text=Utils.getPostText(file,context);
  5939. if(text&&text.toLowerCase().indexOf("content-type: application/x-www-form-urlencoded")==0){return true
  5940. }var headerValue=Utils.findHeader(file.requestHeaders,"content-type");
  5941. if(headerValue&&headerValue.indexOf("application/x-www-form-urlencoded")==0){return true
  5942. }return false
  5943. },isMultiPartRequest:function(file,context){var text=Utils.getPostText(file,context);
  5944. if(text&&text.toLowerCase().indexOf("content-type: multipart/form-data")==0){return true
  5945. }return false
  5946. },getMimeType:function(mimeType,uri){if(!mimeType||!(mimeCategoryMap.hasOwnProperty(mimeType))){var ext=getFileExtension(uri);
  5947. if(!ext){return mimeType
  5948. }else{var extMimeType=mimeExtensionMap[ext.toLowerCase()];
  5949. return extMimeType?extMimeType:mimeType
  5950. }}else{return mimeType
  5951. }},getDateFromSeconds:function(s){var d=new Date();
  5952. d.setTime(s*1000);
  5953. return d
  5954. },getHttpHeaders:function(request,file){try{var http=QI(request,Ci.nsIHttpChannel);
  5955. file.status=request.responseStatus;
  5956. file.method=http.requestMethod;
  5957. file.urlParams=parseURLParams(file.href);
  5958. file.mimeType=Utils.getMimeType(request.contentType,request.name);
  5959. if(!file.responseHeaders&&Firebug.collectHttpHeaders){var requestHeaders=[],responseHeaders=[];
  5960. http.visitRequestHeaders({visitHeader:function(name,value){requestHeaders.push({name:name,value:value})
  5961. }});
  5962. http.visitResponseHeaders({visitHeader:function(name,value){responseHeaders.push({name:name,value:value})
  5963. }});
  5964. file.requestHeaders=requestHeaders;
  5965. file.responseHeaders=responseHeaders
  5966. }}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("net.getHttpHeaders FAILS "+file.href,exc)
  5967. }}},isXHR:function(request){try{var callbacks=request.notificationCallbacks;
  5968. var xhrRequest=callbacks?callbacks.getInterface(Ci.nsIXMLHttpRequest):null;
  5969. if(FBTrace.DBG_NET){FBTrace.sysout("net.isXHR; "+(xhrRequest!=null)+", "+safeGetName(request))
  5970. }return(xhrRequest!=null)
  5971. }catch(exc){}return false
  5972. },getFileCategory:function(file){if(file.category){if(FBTrace.DBG_NET){FBTrace.sysout("net.getFileCategory; current: "+file.category+" for: "+file.href,file)
  5973. }return file.category
  5974. }if(file.isXHR){if(FBTrace.DBG_NET){FBTrace.sysout("net.getFileCategory; XHR for: "+file.href,file)
  5975. }return file.category="xhr"
  5976. }if(!file.mimeType){var ext=getFileExtension(file.href);
  5977. if(ext){file.mimeType=mimeExtensionMap[ext.toLowerCase()]
  5978. }}if(!file.mimeType){return""
  5979. }var mimeType=file.mimeType;
  5980. if(mimeType){mimeType=mimeType.split(";")[0]
  5981. }return(file.category=mimeCategoryMap[mimeType])
  5982. }};
  5983. var Utils=Firebug.NetMonitor.Utils;
  5984. Firebug.registerModule(Firebug.NetMonitor)
  5985. }});
  5986. FBL.ns(function(){with(FBL){var contexts=[];
  5987. Firebug.Spy=extend(Firebug.Module,{dispatchName:"spy",initialize:function(){if(Firebug.TraceModule){Firebug.TraceModule.addListener(this.TraceListener)
  5988. }Firebug.Module.initialize.apply(this,arguments)
  5989. },shutdown:function(){Firebug.Module.shutdown.apply(this,arguments);
  5990. if(Firebug.TraceModule){Firebug.TraceModule.removeListener(this.TraceListener)
  5991. }},initContext:function(context){context.spies=[];
  5992. if(Firebug.showXMLHttpRequests&&Firebug.Console.isAlwaysEnabled()){this.attachObserver(context,context.window)
  5993. }if(FBTrace.DBG_SPY){FBTrace.sysout("spy.initContext "+contexts.length+" ",context.getName())
  5994. }},destroyContext:function(context){this.detachObserver(context,null);
  5995. if(FBTrace.DBG_SPY&&context.spies.length){FBTrace.sysout("spy.destroyContext; ERROR There are leaking Spies ("+context.spies.length+") "+context.getName())
  5996. }delete context.spies;
  5997. if(FBTrace.DBG_SPY){FBTrace.sysout("spy.destroyContext "+contexts.length+" ",context.getName())
  5998. }},watchWindow:function(context,win){if(Firebug.showXMLHttpRequests&&Firebug.Console.isAlwaysEnabled()){this.attachObserver(context,win)
  5999. }},unwatchWindow:function(context,win){try{this.detachObserver(context,win)
  6000. }catch(ex){ERROR(ex)
  6001. }},updateOption:function(name,value){if(name=="showXMLHttpRequests"){var tach=value?this.attachObserver:this.detachObserver;
  6002. for(var i=0;
  6003. i<TabWatcher.contexts.length;
  6004. ++i){var context=TabWatcher.contexts[i];
  6005. iterateWindows(context.window,function(win){tach.apply(this,[context,win])
  6006. })
  6007. }}},skipSpy:function(win){if(!win){return true
  6008. }var uri=safeGetWindowLocation(win);
  6009. if(uri&&(uri.indexOf("about:")==0||uri.indexOf("chrome:")==0)){return true
  6010. }},attachObserver:function(context,win){if(Firebug.Spy.skipSpy(win)){return
  6011. }for(var i=0;
  6012. i<contexts.length;
  6013. ++i){if((contexts[i].context==context)&&(contexts[i].win==win)){return
  6014. }}if(contexts.length==0){httpObserver.addObserver(SpyHttpObserver,"firebug-http-event",false);
  6015. SpyHttpActivityObserver.registerObserver()
  6016. }contexts.push({context:context,win:win});
  6017. if(FBTrace.DBG_SPY){FBTrace.sysout("spy.attachObserver (HTTP) "+contexts.length+" ",context.getName())
  6018. }},detachObserver:function(context,win){for(var i=0;
  6019. i<contexts.length;
  6020. ++i){if(contexts[i].context==context){if(win&&(contexts[i].win!=win)){continue
  6021. }contexts.splice(i,1);
  6022. if(contexts.length==0){httpObserver.removeObserver(SpyHttpObserver,"firebug-http-event");
  6023. SpyHttpActivityObserver.unregisterObserver()
  6024. }if(FBTrace.DBG_SPY){FBTrace.sysout("spy.detachObserver (HTTP) "+contexts.length+" ",context.getName())
  6025. }return
  6026. }}},getXHR:function(request){if(!(request instanceof Ci.nsIHttpChannel)){return null
  6027. }try{var callbacks=request.notificationCallbacks;
  6028. return(callbacks?callbacks.getInterface(Ci.nsIXMLHttpRequest):null)
  6029. }catch(exc){if(exc.name=="NS_NOINTERFACE"){if(FBTrace.DBG_SPY){FBTrace.sysout("spy.getXHR; Request is not nsIXMLHttpRequest: "+safeGetRequestName(request))
  6030. }}}return null
  6031. }});
  6032. 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)
  6033. },getFullUri:function(spy){return spy.method.toUpperCase()+" "+spy.getURL()
  6034. },getStatus:function(spy){var text="";
  6035. if(spy.statusCode){text+=spy.statusCode+" "
  6036. }if(spy.statusText){return text+=spy.statusText
  6037. }return text
  6038. },onToggleBody:function(event){var target=event.currentTarget||event.srcElement;
  6039. var logRow=getAncestorByClass(target,"logRow-spy");
  6040. if(isLeftClick(event)){toggleClass(logRow,"opened");
  6041. var spy=getChildByClass(logRow,"spyHead").repObject;
  6042. var spyHeadTable=getAncestorByClass(target,"spyHeadTable");
  6043. if(hasClass(logRow,"opened")){updateHttpSpyInfo(spy,logRow);
  6044. if(spyHeadTable){spyHeadTable.setAttribute("aria-expanded","true")
  6045. }}else{}}},copyURL:function(spy){copyToClipboard(spy.getURL())
  6046. },copyParams:function(spy){var text=spy.postText;
  6047. if(!text){return
  6048. }var url=reEncodeURL(spy,text,true);
  6049. copyToClipboard(url)
  6050. },copyResponse:function(spy){copyToClipboard(spy.responseText)
  6051. },openInTab:function(spy){openNewTab(spy.getURL(),spy.postText)
  6052. },supportsObject:function(object){return false;
  6053. return object instanceof Firebug.Spy.XMLHttpRequestSpy
  6054. },browseObject:function(spy,context){var url=spy.getURL();
  6055. openNewTab(url);
  6056. return true
  6057. },getRealObject:function(spy,context){return spy.xhrRequest
  6058. },getContextMenuItems:function(spy){var items=[{label:"CopyLocation",command:bindFixed(this.copyURL,this,spy)}];
  6059. if(spy.postText){items.push({label:"CopyLocationParameters",command:bindFixed(this.copyParams,this,spy)})
  6060. }items.push({label:"CopyResponse",command:bindFixed(this.copyResponse,this,spy)},"-",{label:"OpenInTab",command:bindFixed(this.openInTab,this,spy)});
  6061. return items
  6062. }});
  6063. function updateTime(spy){var timeBox=spy.logRow.getElementsByClassName("spyTime").item(0);
  6064. if(spy.responseTime){timeBox.textContent=" "+formatTime(spy.responseTime)
  6065. }}function updateLogRow(spy){updateTime(spy);
  6066. var statusBox=spy.logRow.getElementsByClassName("spyStatus").item(0);
  6067. statusBox.textContent=Firebug.Spy.XHR.getStatus(spy);
  6068. removeClass(spy.logRow,"loading");
  6069. setClass(spy.logRow,"loaded");
  6070. try{var errorRange=Math.floor(spy.xhrRequest.status/100);
  6071. if(errorRange==4||errorRange==5){setClass(spy.logRow,"error")
  6072. }}catch(exc){}}var updateHttpSpyInfo=function updateHttpSpyInfo(spy,logRow){if(!spy.logRow&&logRow){spy.logRow=logRow
  6073. }if(!spy.logRow||!hasClass(spy.logRow,"opened")){return
  6074. }if(!spy.params){spy.params=parseURLParams(spy.href+"")
  6075. }if(!spy.requestHeaders){spy.requestHeaders=getRequestHeaders(spy)
  6076. }if(!spy.responseHeaders&&spy.loaded){spy.responseHeaders=getResponseHeaders(spy)
  6077. }var template=Firebug.NetMonitor.NetInfoBody;
  6078. var netInfoBox=getChildByClass(spy.logRow,"spyHead","netInfoBody");
  6079. if(!netInfoBox){var head=getChildByClass(spy.logRow,"spyHead");
  6080. netInfoBox=template.tag.append({file:spy},head);
  6081. dispatch(template.fbListeners,"initTabBody",[netInfoBox,spy]);
  6082. template.selectTabByName(netInfoBox,"Response")
  6083. }else{template.updateInfo(netInfoBox,spy,spy.context)
  6084. }};
  6085. function getRequestHeaders(spy){var headers=[];
  6086. var channel=spy.xhrRequest.channel;
  6087. if(channel instanceof Ci.nsIHttpChannel){channel.visitRequestHeaders({visitHeader:function(name,value){headers.push({name:name,value:value})
  6088. }})
  6089. }return headers
  6090. }function getResponseHeaders(spy){var headers=[];
  6091. try{var channel=spy.xhrRequest.channel;
  6092. if(channel instanceof Ci.nsIHttpChannel){channel.visitResponseHeaders({visitHeader:function(name,value){headers.push({name:name,value:value})
  6093. }})
  6094. }}catch(exc){if(FBTrace.DBG_SPY||FBTrace.DBG_ERRORS){FBTrace.sysout("spy.getResponseHeaders; EXCEPTION "+safeGetRequestName(spy.request),exc)
  6095. }}return headers
  6096. }Firebug.registerModule(Firebug.Spy)
  6097. }});
  6098. FBL.ns(function(){with(FBL){var contentTypes={"text/plain":1,"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};
  6099. Firebug.JSONViewerModel=extend(Firebug.Module,{dispatchName:"jsonViewer",initialize:function(){Firebug.NetMonitor.NetInfoBody.addListener(this);
  6100. this.toggles={}
  6101. },shutdown:function(){Firebug.NetMonitor.NetInfoBody.removeListener(this)
  6102. },initTabBody:function(infoBox,file){if(FBTrace.DBG_JSONVIEWER){FBTrace.sysout("jsonviewer.initTabBody",infoBox)
  6103. }dispatch(this.fbListeners,"onParseJSON",[file]);
  6104. if(!file.jsonObject){if(this.isJSON(file.mimeType,file.responseText)){file.jsonObject=this.parseJSON(file)
  6105. }}if(file.jsonObject&&hasProperties(file.jsonObject)){Firebug.NetMonitor.NetInfoBody.appendTab(infoBox,"JSON",$STR("JSON"));
  6106. if(FBTrace.DBG_JSONVIEWER){FBTrace.sysout("jsonviewer.initTabBody; JSON object available "+(typeof(file.jsonObject)!="undefined"),file.jsonObject)
  6107. }}},isJSON:function(contentType,data){var responseText=data?trim(data):null;
  6108. if(responseText&&responseText.indexOf("{")==0){return true
  6109. }if(!contentType){return false
  6110. }contentType=contentType.split(";")[0];
  6111. contentType=trim(contentType);
  6112. return contentTypes[contentType]
  6113. },updateTabBody:function(infoBox,file,context){var tab=infoBox.selectedTab;
  6114. var tabBody=$$(".netInfoJSONText",infoBox)[0];
  6115. if(!hasClass(tab,"netInfoJSONTab")||tabBody.updated){return
  6116. }tabBody.updated=true;
  6117. if(file.jsonObject){Firebug.DOMPanel.DirTable.tag.replace({object:file.jsonObject,toggles:this.toggles},tabBody)
  6118. }},parseJSON:function(file){var jsonString=new String(file.responseText);
  6119. return parseJSONString(jsonString)
  6120. }});
  6121. Firebug.registerModule(Firebug.JSONViewerModel)
  6122. }});
  6123. 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"];
  6124. Firebug.XMLViewerModel=extend(Firebug.Module,{dispatchName:"xmlViewer",initialize:function(){Firebug.Module.initialize.apply(this,arguments);
  6125. Firebug.NetMonitor.NetInfoBody.addListener(this)
  6126. },shutdown:function(){Firebug.Module.shutdown.apply(this,arguments);
  6127. Firebug.NetMonitor.NetInfoBody.removeListener(this)
  6128. },initTabBody:function(infoBox,file){if(FBTrace.DBG_XMLVIEWER){FBTrace.sysout("xmlviewer.initTabBody",infoBox)
  6129. }if(this.isXML(file.mimeType,file.responseText)){Firebug.NetMonitor.NetInfoBody.appendTab(infoBox,"XML",$STR("XML"));
  6130. if(FBTrace.DBG_XMLVIEWER){FBTrace.sysout("xmlviewer.initTabBody; XML response available")
  6131. }}},isXML:function(contentType){if(!contentType){return false
  6132. }for(var i=0;
  6133. i<xmlContentTypes.length;
  6134. i++){if(contentType.indexOf(xmlContentTypes[i])==0){return true
  6135. }}return false
  6136. },updateTabBody:function(infoBox,file,context){var tab=infoBox.selectedTab;
  6137. var tabBody=$$(".netInfoXMLText",infoBox)[0];
  6138. if(!hasClass(tab,"netInfoXMLTab")||tabBody.updated){return
  6139. }tabBody.updated=true;
  6140. this.insertXML(tabBody,Firebug.NetMonitor.Utils.getResponseText(file,context))
  6141. },insertXML:function(parentNode,text){var xmlText=text.replace(/^\s*<?.+?>\s*/,"");
  6142. var div=parentNode.ownerDocument.createElement("div");
  6143. div.innerHTML=xmlText;
  6144. var root=div.getElementsByTagName("*")[0];
  6145. if(FBTrace.DBG_XMLVIEWER){FBTrace.sysout("xmlviewer.updateTabBody; XML response parsed",doc)
  6146. }var html=[];
  6147. Firebug.Reps.appendNode(root,html);
  6148. parentNode.innerHTML=html.join("")
  6149. }});
  6150. 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");
  6151. if(parts.length!=2){return error.source
  6152. }var limit=50;
  6153. var column=parts[1].length;
  6154. if(column>=limit){parts[0]="..."+parts[0].substr(column-limit);
  6155. parts[1]="..."+parts[1].substr(column-limit)
  6156. }if(parts[0].length>80){parts[0]=parts[0].substr(0,80)+"..."
  6157. }return parts.join("\n")
  6158. }});
  6159. Firebug.registerModule(Firebug.XMLViewerModel)
  6160. }});
  6161. FBL.ns(function(){with(FBL){var ElementCache=Firebug.Lite.Cache.Element;
  6162. var cacheID=Firebug.Lite.Cache.ID;
  6163. var ignoreHTMLProps={sizcache:1,sizset:1};
  6164. ignoreHTMLProps[cacheID]=1;
  6165. Firebug.HTML=extend(Firebug.Module,{appendTreeNode:function(nodeArray,html){var reTrim=/^\s+|\s+$/g;
  6166. if(!nodeArray.length){nodeArray=[nodeArray]
  6167. }for(var n=0,node;
  6168. node=nodeArray[n];
  6169. n++){if(node.nodeType==1){if(Firebug.ignoreFirebugElements&&node.firebugIgnore){continue
  6170. }var uid=ElementCache(node);
  6171. var child=node.childNodes;
  6172. var childLength=child.length;
  6173. var nodeName=node.nodeName.toLowerCase();
  6174. var nodeVisible=isVisible(node);
  6175. var hasSingleTextChild=childLength==1&&node.firstChild.nodeType==3&&nodeName!="script"&&nodeName!="style";
  6176. var nodeControl=!hasSingleTextChild&&childLength>0?('<div class="nodeControl"></div>'):"";
  6177. var isIE=false;
  6178. if(isIE&&nodeControl){html.push(nodeControl)
  6179. }if(typeof uid!="undefined"){html.push('<div class="objectBox-element" ','id="',uid,'">',!isIE&&nodeControl?nodeControl:"","<span ",cacheID,'="',uid,'" class="nodeBox',nodeVisible?"":" nodeHidden",'">&lt;<span class="nodeTag">',nodeName,"</span>")
  6180. }else{html.push('<div class="objectBox-element"><span class="nodeBox',nodeVisible?"":" nodeHidden",'">&lt;<span class="nodeTag">',nodeName,"</span>")
  6181. }for(var i=0;
  6182. i<node.attributes.length;
  6183. ++i){var attr=node.attributes[i];
  6184. if(!attr.specified||Firebug.ignoreFirebugElements&&ignoreHTMLProps.hasOwnProperty(attr.nodeName)){continue
  6185. }var name=attr.nodeName.toLowerCase();
  6186. var value=name=="style"?formatStyles(node.style.cssText):attr.nodeValue;
  6187. html.push('&nbsp;<span class="nodeName">',name,'</span>=&quot;<span class="nodeValue">',escapeHTML(value),"</span>&quot;")
  6188. }if(hasSingleTextChild){var value=child[0].nodeValue.replace(reTrim,"");
  6189. if(value){html.push('&gt;<span class="nodeText">',escapeHTML(value),'</span>&lt;/<span class="nodeTag">',nodeName,"</span>&gt;</span></div>")
  6190. }else{html.push("/&gt;</span></div>")
  6191. }}else{if(childLength>0){html.push("&gt;</span></div>")
  6192. }else{html.push("/&gt;</span></div>")
  6193. }}}else{if(node.nodeType==3){if(node.parentNode&&(node.parentNode.nodeName.toLowerCase()=="script"||node.parentNode.nodeName.toLowerCase()=="style")){var value=node.nodeValue.replace(reTrim,"");
  6194. if(isIE){var src=value+"\n"
  6195. }else{var src="\n"+value+"\n"
  6196. }var match=src.match(/\n/g);
  6197. var num=match?match.length:0;
  6198. var s=[],sl=0;
  6199. for(var c=1;
  6200. c<num;
  6201. c++){s[sl++]='<div line="'+c+'">'+c+"</div>"
  6202. }html.push('<div class="lineNo">',s.join(""),'</div><pre class="sourceCode">',escapeHTML(src),"</pre>")
  6203. }else{var value=node.nodeValue.replace(reTrim,"");
  6204. if(value){html.push('<div class="nodeText">',escapeHTML(value),"</div>")
  6205. }}}}}},appendTreeChildren:function(treeNode){var doc=Firebug.chrome.document;
  6206. var uid=treeNode.id;
  6207. var parentNode=ElementCache.get(uid);
  6208. if(parentNode.childNodes.length==0){return
  6209. }var treeNext=treeNode.nextSibling;
  6210. var treeParent=treeNode.parentNode;
  6211. var isIE=false;
  6212. var control=isIE?treeNode.previousSibling:treeNode.firstChild;
  6213. control.className="nodeControl nodeMaximized";
  6214. var html=[];
  6215. var children=doc.createElement("div");
  6216. children.className="nodeChildren";
  6217. this.appendTreeNode(parentNode.childNodes,html);
  6218. children.innerHTML=html.join("");
  6219. treeParent.insertBefore(children,treeNext);
  6220. var closeElement=doc.createElement("div");
  6221. closeElement.className="objectBox-element";
  6222. closeElement.innerHTML='&lt;/<span class="nodeTag">'+parentNode.nodeName.toLowerCase()+"&gt;</span>";
  6223. treeParent.insertBefore(closeElement,treeNext)
  6224. },removeTreeChildren:function(treeNode){var children=treeNode.nextSibling;
  6225. var closeTag=children.nextSibling;
  6226. var isIE=false;
  6227. var control=isIE?treeNode.previousSibling:treeNode.firstChild;
  6228. control.className="nodeControl";
  6229. children.parentNode.removeChild(children);
  6230. closeTag.parentNode.removeChild(closeTag)
  6231. },isTreeNodeVisible:function(id){return $(id)
  6232. },select:function(el){var id=el&&ElementCache(el);
  6233. if(id){this.selectTreeNode(id)
  6234. }},selectTreeNode:function(id){id=""+id;
  6235. var node,stack=[];
  6236. while(id&&!this.isTreeNodeVisible(id)){stack.push(id);
  6237. var node=ElementCache.get(id).parentNode;
  6238. if(node){id=ElementCache(node)
  6239. }else{break
  6240. }}stack.push(id);
  6241. while(stack.length>0){id=stack.pop();
  6242. node=$(id);
  6243. if(stack.length>0&&ElementCache.get(id).childNodes.length>0){this.appendTreeChildren(node)
  6244. }}selectElement(node);
  6245. if(fbPanel1){fbPanel1.scrollTop=Math.round(node.offsetTop-fbPanel1.clientHeight/2)
  6246. }}});
  6247. Firebug.registerModule(Firebug.HTML);
  6248. function HTMLPanel(){}HTMLPanel.prototype=extend(Firebug.Panel,{name:"HTML",title:"HTML",options:{hasSidePanel:true,isPreRendered:true,innerHTMLSync:true},create:function(){Firebug.Panel.create.apply(this,arguments);
  6249. this.panelNode.style.padding="4px 3px 1px 15px";
  6250. this.panelNode.style.minWidth="500px";
  6251. if(Env.Options.enablePersistent||Firebug.chrome.type!="popup"){this.createUI()
  6252. }if(!this.sidePanelBar.selectedPanel){this.sidePanelBar.selectPanel("css")
  6253. }},destroy:function(){selectedElement=null;
  6254. fbPanel1=null;
  6255. selectedSidePanelTS=null;
  6256. selectedSidePanelTimer=null;
  6257. Firebug.Panel.destroy.apply(this,arguments)
  6258. },createUI:function(){var rootNode=Firebug.browser.document.documentElement;
  6259. var html=[];
  6260. Firebug.HTML.appendTreeNode(rootNode,html);
  6261. this.panelNode.innerHTML=html.join("")
  6262. },initialize:function(){Firebug.Panel.initialize.apply(this,arguments);
  6263. addEvent(this.panelNode,"click",Firebug.HTML.onTreeClick);
  6264. fbPanel1=$("fbPanel1");
  6265. if(!selectedElement){Firebug.HTML.selectTreeNode(ElementCache(Firebug.browser.document.body))
  6266. }addEvent(fbPanel1,"mousemove",Firebug.HTML.onListMouseMove);
  6267. addEvent($("fbContent"),"mouseout",Firebug.HTML.onListMouseMove);
  6268. addEvent(Firebug.chrome.node,"mouseout",Firebug.HTML.onListMouseMove)
  6269. },shutdown:function(){removeEvent(fbPanel1,"mousemove",Firebug.HTML.onListMouseMove);
  6270. removeEvent($("fbContent"),"mouseout",Firebug.HTML.onListMouseMove);
  6271. removeEvent(Firebug.chrome.node,"mouseout",Firebug.HTML.onListMouseMove);
  6272. removeEvent(this.panelNode,"click",Firebug.HTML.onTreeClick);
  6273. fbPanel1=null;
  6274. Firebug.Panel.shutdown.apply(this,arguments)
  6275. },reattach:function(){if(FirebugChrome.selectedHTMLElementId){Firebug.HTML.selectTreeNode(FirebugChrome.selectedHTMLElementId)
  6276. }},updateSelection:function(object){var id=ElementCache(object);
  6277. if(id){Firebug.HTML.selectTreeNode(id)
  6278. }}});
  6279. Firebug.registerPanel(HTMLPanel);
  6280. var formatStyles=function(styles){return isIE?styles.replace(/([^\s]+)\s*:/g,function(m,g){return g.toLowerCase()+":"
  6281. }):styles
  6282. };
  6283. var selectedElement=null;
  6284. var fbPanel1=null;
  6285. var selectedSidePanelTS,selectedSidePanelTimer;
  6286. var selectElement=function selectElement(e){if(e!=selectedElement){if(selectedElement){selectedElement.className="objectBox-element"
  6287. }e.className=e.className+" selectedElement";
  6288. if(FBL.isFirefox){e.style.MozBorderRadius="2px"
  6289. }else{if(FBL.isSafari){e.style.WebkitBorderRadius="2px"
  6290. }}selectedElement=e;
  6291. FirebugChrome.selectedHTMLElementId=e.id;
  6292. var target=ElementCache.get(e.id);
  6293. var selectedSidePanel=Firebug.chrome.getPanel("HTML").sidePanelBar.selectedPanel;
  6294. var stack=FirebugChrome.htmlSelectionStack;
  6295. stack.unshift(target);
  6296. if(stack.length>2){stack.pop()
  6297. }var lazySelect=function(){selectedSidePanelTS=new Date().getTime();
  6298. selectedSidePanel.select(target,true)
  6299. };
  6300. if(selectedSidePanelTimer){clearTimeout(selectedSidePanelTimer);
  6301. selectedSidePanelTimer=null
  6302. }if(new Date().getTime()-selectedSidePanelTS>100){setTimeout(lazySelect,0)
  6303. }else{selectedSidePanelTimer=setTimeout(lazySelect,150)
  6304. }}};
  6305. Firebug.HTML.onTreeClick=function(e){e=e||event;
  6306. var targ;
  6307. if(e.target){targ=e.target
  6308. }else{if(e.srcElement){targ=e.srcElement
  6309. }}if(targ.nodeType==3){targ=targ.parentNode
  6310. }if(targ.className.indexOf("nodeControl")!=-1||targ.className=="nodeTag"){var isIE=false;
  6311. if(targ.className=="nodeTag"){var control=isIE?(targ.parentNode.previousSibling||targ):(targ.parentNode.previousSibling||targ);
  6312. selectElement(targ.parentNode.parentNode);
  6313. if(control.className.indexOf("nodeControl")==-1){return
  6314. }}else{control=targ
  6315. }FBL.cancelEvent(e);
  6316. var treeNode=isIE?control.nextSibling:control.parentNode;
  6317. if(control.className.indexOf(" nodeMaximized")!=-1){FBL.Firebug.HTML.removeTreeChildren(treeNode)
  6318. }else{FBL.Firebug.HTML.appendTreeChildren(treeNode)
  6319. }}else{if(targ.className=="nodeValue"||targ.className=="nodeName"){}}};
  6320. function onListMouseOut(e){e=e||event||window;
  6321. var targ;
  6322. if(e.target){targ=e.target
  6323. }else{if(e.srcElement){targ=e.srcElement
  6324. }}if(targ.nodeType==3){targ=targ.parentNode
  6325. }if(hasClass(targ,"fbPanel")){FBL.Firebug.Inspector.hideBoxModel();
  6326. hoverElement=null
  6327. }}var hoverElement=null;
  6328. var hoverElementTS=0;
  6329. Firebug.HTML.onListMouseMove=function onListMouseMove(e){try{e=e||event||window;
  6330. var targ;
  6331. if(e.target){targ=e.target
  6332. }else{if(e.srcElement){targ=e.srcElement
  6333. }}if(targ.nodeType==3){targ=targ.parentNode
  6334. }var found=false;
  6335. while(targ&&!found){if(!/\snodeBox\s|\sobjectBox-selector\s/.test(" "+targ.className+" ")){targ=targ.parentNode
  6336. }else{found=true
  6337. }}if(!targ){FBL.Firebug.Inspector.hideBoxModel();
  6338. hoverElement=null;
  6339. return
  6340. }if(typeof targ.attributes[cacheID]=="undefined"){return
  6341. }var uid=targ.attributes[cacheID];
  6342. if(!uid){return
  6343. }var el=ElementCache.get(uid.value);
  6344. var nodeName=el.nodeName.toLowerCase();
  6345. if(FBL.isIE&&" meta title script link ".indexOf(" "+nodeName+" ")!=-1){return
  6346. }if(!/\snodeBox\s|\sobjectBox-selector\s/.test(" "+targ.className+" ")){return
  6347. }if(el.id=="FirebugUI"||" html head body br script link iframe ".indexOf(" "+nodeName+" ")!=-1){FBL.Firebug.Inspector.hideBoxModel();
  6348. hoverElement=null;
  6349. return
  6350. }if((new Date().getTime()-hoverElementTS>40)&&hoverElement!=el){hoverElementTS=new Date().getTime();
  6351. hoverElement=el;
  6352. FBL.Firebug.Inspector.drawBoxModel(el)
  6353. }}catch(E){}};
  6354. Firebug.Reps={appendText:function(object,html){html.push(escapeHTML(objectToString(object)))
  6355. },appendNull:function(object,html){html.push('<span class="objectBox-null">',escapeHTML(objectToString(object)),"</span>")
  6356. },appendString:function(object,html){html.push('<span class="objectBox-string">&quot;',escapeHTML(objectToString(object)),"&quot;</span>")
  6357. },appendInteger:function(object,html){html.push('<span class="objectBox-number">',escapeHTML(objectToString(object)),"</span>")
  6358. },appendFloat:function(object,html){html.push('<span class="objectBox-number">',escapeHTML(objectToString(object)),"</span>")
  6359. },appendFunction:function(object,html){var reName=/function ?(.*?)\(/;
  6360. var m=reName.exec(objectToString(object));
  6361. var name=m&&m[1]?m[1]:"function";
  6362. html.push('<span class="objectBox-function">',escapeHTML(name),"()</span>")
  6363. },appendObject:function(object,html){try{if(object==undefined){this.appendNull("undefined",html)
  6364. }else{if(object==null){this.appendNull("null",html)
  6365. }else{if(typeof object=="string"){this.appendString(object,html)
  6366. }else{if(typeof object=="number"){this.appendInteger(object,html)
  6367. }else{if(typeof object=="boolean"){this.appendInteger(object,html)
  6368. }else{if(typeof object=="function"){this.appendFunction(object,html)
  6369. }else{if(object.nodeType==1){this.appendSelector(object,html)
  6370. }else{if(typeof object=="object"){if(typeof object.length!="undefined"){this.appendArray(object,html)
  6371. }else{this.appendObjectFormatted(object,html)
  6372. }}else{this.appendText(object,html)
  6373. }}}}}}}}}catch(exc){}},appendObjectFormatted:function(object,html){var text=objectToString(object);
  6374. var reObject=/\[object (.*?)\]/;
  6375. var m=reObject.exec(text);
  6376. html.push('<span class="objectBox-object">',m?m[1]:text,"</span>")
  6377. },appendSelector:function(object,html){var uid=ElementCache(object);
  6378. var uidString=uid?[cacheID,'="',uid,'"'].join(""):"";
  6379. html.push('<span class="objectBox-selector"',uidString,">");
  6380. html.push('<span class="selectorTag">',escapeHTML(object.nodeName.toLowerCase()),"</span>");
  6381. if(object.id){html.push('<span class="selectorId">#',escapeHTML(object.id),"</span>")
  6382. }if(object.className){html.push('<span class="selectorClass">.',escapeHTML(object.className),"</span>")
  6383. }html.push("</span>")
  6384. },appendNode:function(node,html){if(node.nodeType==1){var uid=ElementCache(node);
  6385. var uidString=uid?[cacheID,'="',uid,'"'].join(""):"";
  6386. html.push('<div class="objectBox-element"',uidString,'">',"<span ",cacheID,'="',uid,'" class="nodeBox">','&lt;<span class="nodeTag">',node.nodeName.toLowerCase(),"</span>");
  6387. for(var i=0;
  6388. i<node.attributes.length;
  6389. ++i){var attr=node.attributes[i];
  6390. if(!attr.specified||attr.nodeName==cacheID){continue
  6391. }var name=attr.nodeName.toLowerCase();
  6392. var value=name=="style"?node.style.cssText:attr.nodeValue;
  6393. html.push('&nbsp;<span class="nodeName">',name,'</span>=&quot;<span class="nodeValue">',escapeHTML(value),"</span>&quot;")
  6394. }if(node.firstChild){html.push('&gt;</div><div class="nodeChildren">');
  6395. for(var child=node.firstChild;
  6396. child;
  6397. child=child.nextSibling){this.appendNode(child,html)
  6398. }html.push('</div><div class="objectBox-element">&lt;/<span class="nodeTag">',node.nodeName.toLowerCase(),"&gt;</span></span></div>")
  6399. }else{html.push("/&gt;</span></div>")
  6400. }}else{if(node.nodeType==3){var value=trim(node.nodeValue);
  6401. if(value){html.push('<div class="nodeText">',escapeHTML(value),"</div>")
  6402. }}}},appendArray:function(object,html){html.push('<span class="objectBox-array"><b>[</b> ');
  6403. for(var i=0,l=object.length,obj;
  6404. i<l;
  6405. ++i){this.appendObject(object[i],html);
  6406. if(i<l-1){html.push(", ")
  6407. }}html.push(" <b>]</b></span>")
  6408. }}
  6409. }});
  6410. FBL.ns(function(){with(FBL){var maxWidth=100,maxHeight=80;
  6411. var infoTipMargin=10;
  6412. var infoTipWindowPadding=25;
  6413. Firebug.InfoTip=extend(Firebug.Module,{dispatchName:"infoTip",tags:domplate({infoTipTag:DIV({"class":"infoTip"}),colorTag:DIV({style:"background: $rgbValue; width: 100px; height: 40px"},"&nbsp;"),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;
  6414. var innerBox=img.parentNode;
  6415. var caption=getElementByClass(innerBox,"infoTipCaption");
  6416. var bgImg=getElementByClass(innerBox,"infoTipBgImage");
  6417. if(!bgImg){return
  6418. }if(isIE){removeClass(innerBox,"infoTipLoading")
  6419. }var updateInfoTip=function(){var w=img.naturalWidth||img.width||10,h=img.naturalHeight||img.height||10;
  6420. var repeat=img.getAttribute("repeat");
  6421. if(repeat=="repeat-x"||(w==1&&h>1)){collapse(img,true);
  6422. collapse(bgImg,false);
  6423. bgImg.style.background="url("+img.src+") repeat-x";
  6424. bgImg.style.width=maxWidth+"px";
  6425. if(h>maxHeight){bgImg.style.height=maxHeight+"px"
  6426. }else{bgImg.style.height=h+"px"
  6427. }}else{if(repeat=="repeat-y"||(h==1&&w>1)){collapse(img,true);
  6428. collapse(bgImg,false);
  6429. bgImg.style.background="url("+img.src+") repeat-y";
  6430. bgImg.style.height=maxHeight+"px";
  6431. if(w>maxWidth){bgImg.style.width=maxWidth+"px"
  6432. }else{bgImg.style.width=w+"px"
  6433. }}else{if(repeat=="repeat"||(w==1&&h==1)){collapse(img,true);
  6434. collapse(bgImg,false);
  6435. bgImg.style.background="url("+img.src+") repeat";
  6436. bgImg.style.width=maxWidth+"px";
  6437. bgImg.style.height=maxHeight+"px"
  6438. }else{if(w>maxWidth||h>maxHeight){if(w>h){img.style.width=maxWidth+"px";
  6439. img.style.height=Math.round((h/w)*maxWidth)+"px"
  6440. }else{img.style.width=Math.round((w/h)*maxHeight)+"px";
  6441. img.style.height=maxHeight+"px"
  6442. }}}}}caption.innerHTML=$STRF(w+" x "+h)
  6443. };
  6444. if(isIE){setTimeout(updateInfoTip,0)
  6445. }else{updateInfoTip();
  6446. removeClass(innerBox,"infoTipLoading")
  6447. }}}),initializeBrowser:function(browser){browser.onInfoTipMouseOut=bind(this.onMouseOut,this,browser);
  6448. browser.onInfoTipMouseMove=bind(this.onMouseMove,this,browser);
  6449. var doc=browser.document;
  6450. if(!doc){return
  6451. }addEvent(doc,"mouseover",browser.onInfoTipMouseMove);
  6452. addEvent(doc,"mouseout",browser.onInfoTipMouseOut);
  6453. addEvent(doc,"mousemove",browser.onInfoTipMouseMove);
  6454. return browser.infoTip=this.tags.infoTipTag.append({},getBody(doc))
  6455. },uninitializeBrowser:function(browser){if(browser.infoTip){var doc=browser.document;
  6456. removeEvent(doc,"mouseover",browser.onInfoTipMouseMove);
  6457. removeEvent(doc,"mouseout",browser.onInfoTipMouseOut);
  6458. removeEvent(doc,"mousemove",browser.onInfoTipMouseMove);
  6459. browser.infoTip.parentNode.removeChild(browser.infoTip);
  6460. delete browser.infoTip;
  6461. delete browser.onInfoTipMouseMove
  6462. }},showInfoTip:function(infoTip,panel,target,x,y,rangeParent,rangeOffset){if(!Firebug.showInfoTips){return
  6463. }var scrollParent=getOverflowParent(target);
  6464. var scrollX=x+(scrollParent?scrollParent.scrollLeft:0);
  6465. if(panel.showInfoTip(infoTip,target,scrollX,y,rangeParent,rangeOffset)){var htmlElt=infoTip.ownerDocument.documentElement;
  6466. var panelWidth=htmlElt.clientWidth;
  6467. var panelHeight=htmlElt.clientHeight;
  6468. if(x+infoTip.offsetWidth+infoTipMargin>panelWidth){infoTip.style.left=Math.max(0,panelWidth-(infoTip.offsetWidth+infoTipMargin))+"px";
  6469. infoTip.style.right="auto"
  6470. }else{infoTip.style.left=(x+infoTipMargin)+"px";
  6471. infoTip.style.right="auto"
  6472. }if(y+infoTip.offsetHeight+infoTipMargin>panelHeight){infoTip.style.top=Math.max(0,panelHeight-(infoTip.offsetHeight+infoTipMargin))+"px";
  6473. infoTip.style.bottom="auto"
  6474. }else{infoTip.style.top=(y+infoTipMargin)+"px";
  6475. infoTip.style.bottom="auto"
  6476. }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)
  6477. }infoTip.setAttribute("active","true")
  6478. }else{this.hideInfoTip(infoTip)
  6479. }},hideInfoTip:function(infoTip){if(infoTip){infoTip.removeAttribute("active")
  6480. }},onMouseOut:function(event,browser){if(!event.relatedTarget){this.hideInfoTip(browser.infoTip)
  6481. }},onMouseMove:function(event,browser){if(getAncestorByClass(event.target,"infoTip")){return
  6482. }if(browser.currentPanel){var x=event.clientX,y=event.clientY,target=event.target||event.srcElement;
  6483. this.showInfoTip(browser.infoTip,browser.currentPanel,target,x,y,event.rangeParent,event.rangeOffset)
  6484. }else{this.hideInfoTip(browser.infoTip)
  6485. }},populateColorInfoTip:function(infoTip,color){this.tags.colorTag.replace({rgbValue:color},infoTip);
  6486. return true
  6487. },populateImageInfoTip:function(infoTip,url,repeat){if(!repeat){repeat="no-repeat"
  6488. }this.tags.imgTag.replace({urlValue:url,repeat:repeat},infoTip);
  6489. return true
  6490. },disable:function(){},showPanel:function(browser,panel){if(panel){var infoTip=panel.panelBrowser.infoTip;
  6491. if(!infoTip){infoTip=this.initializeBrowser(panel.panelBrowser)
  6492. }this.hideInfoTip(infoTip)
  6493. }},showSidePanel:function(browser,panel){this.showPanel(browser,panel)
  6494. }});
  6495. Firebug.registerModule(Firebug.InfoTip)
  6496. }});
  6497. (function(){this.getElementXPath=function(element){if(element&&element.id){return'//*[@id="'+element.id+'"]'
  6498. }else{return this.getElementTreeXPath(element)
  6499. }};
  6500. this.getElementTreeXPath=function(element){var paths=[];
  6501. for(;
  6502. element&&element.nodeType==1;
  6503. element=element.parentNode){var index=0;
  6504. for(var sibling=element.previousSibling;
  6505. sibling;
  6506. sibling=sibling.previousSibling){if(sibling.nodeName==element.nodeName){++index
  6507. }}var tagName=element.nodeName.toLowerCase();
  6508. var pathIndex=(index?"["+(index+1)+"]":"");
  6509. paths.splice(0,0,tagName+pathIndex)
  6510. }return paths.length?"/"+paths.join("/"):null
  6511. };
  6512. this.getElementsByXPath=function(doc,xpath){var nodes=[];
  6513. try{var result=doc.evaluate(xpath,doc,null,XPathResult.ANY_TYPE,null);
  6514. for(var item=result.iterateNext();
  6515. item;
  6516. item=result.iterateNext()){nodes.push(item)
  6517. }}catch(exc){}return nodes
  6518. };
  6519. this.getRuleMatchingElements=function(rule,doc){var css=rule.selectorText;
  6520. var xpath=this.cssToXPath(css);
  6521. return this.getElementsByXPath(doc,xpath)
  6522. }
  6523. }).call(FBL);
  6524. FBL.ns(function(){with(FBL){var toCamelCase=function toCamelCase(s){return s.replace(reSelectorCase,toCamelCaseReplaceFn)
  6525. };
  6526. var toSelectorCase=function toSelectorCase(s){return s.replace(reCamelCase,"-$1").toLowerCase()
  6527. };
  6528. var reCamelCase=/([A-Z])/g;
  6529. var reSelectorCase=/\-(.)/g;
  6530. var toCamelCaseReplaceFn=function toCamelCaseReplaceFn(m,g){return g.toUpperCase()
  6531. };
  6532. var ElementCache=Firebug.Lite.Cache.Element;
  6533. var StyleSheetCache=Firebug.Lite.Cache.StyleSheet;
  6534. var globalCSSRuleIndex;
  6535. var externalStyleSheetURLs=[];
  6536. var 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"))});
  6537. var processAllStyleSheetsTimeout=null;
  6538. var loadExternalStylesheet=function(doc,styleSheetIterator,styleSheet){var url=styleSheet.href;
  6539. styleSheet.firebugIgnore=true;
  6540. var source=Firebug.Lite.Proxy.load(url);
  6541. source=source.replace(/url\(([^\)]+)\)/g,function(a,name){var hasDomain=/\w+:\/\/./.test(name);
  6542. if(!hasDomain){name=name.replace(/^(["'])(.+)\1$/,"$2");
  6543. var first=name.charAt(0);
  6544. if(first=="/"){var m=/^([^:]+:\/{1,3}[^\/]+)/.exec(url);
  6545. return m?"url("+m[1]+name+")":"url("+name+")"
  6546. }else{var path=url.replace(/[^\/]+\.[\w\d]+(\?.+|#.+)?$/g,"");
  6547. path=path+name;
  6548. var reBack=/[^\/]+\/\.\.\//;
  6549. while(reBack.test(path)){path=path.replace(reBack,"")
  6550. }return"url("+path+")"
  6551. }}return a
  6552. });
  6553. var oldStyle=styleSheet.ownerNode;
  6554. if(!oldStyle){return
  6555. }if(!oldStyle.parentNode){return
  6556. }var style=createGlobalElement("style");
  6557. style.setAttribute("charset","utf-8");
  6558. style.setAttribute("type","text/css");
  6559. style.innerHTML=source;
  6560. oldStyle.parentNode.insertBefore(style,oldStyle.nextSibling);
  6561. oldStyle.parentNode.removeChild(oldStyle);
  6562. doc.styleSheets[doc.styleSheets.length-1].externalURL=url;
  6563. console.log(url,"call "+externalStyleSheetURLs.length,source);
  6564. externalStyleSheetURLs.pop();
  6565. if(processAllStyleSheetsTimeout){clearTimeout(processAllStyleSheetsTimeout)
  6566. }processAllStyleSheetsTimeout=setTimeout(function(){console.log("processing");
  6567. FBL.processAllStyleSheets(doc,styleSheetIterator);
  6568. processAllStyleSheetsTimeout=null
  6569. },200)
  6570. };
  6571. FBL.processAllStyleSheets=function(doc,styleSheetIterator){styleSheetIterator=styleSheetIterator||processStyleSheet;
  6572. globalCSSRuleIndex=-1;
  6573. var styleSheets=doc.styleSheets;
  6574. var importedStyleSheets=[];
  6575. if(FBTrace.DBG_CSS){var start=new Date().getTime()
  6576. }for(var i=0,length=styleSheets.length;
  6577. i<length;
  6578. i++){try{var styleSheet=styleSheets[i];
  6579. if("firebugIgnore" in styleSheet){continue
  6580. }var rules=isIE?styleSheet.rules:styleSheet.cssRules;
  6581. rules.length
  6582. }catch(e){externalStyleSheetURLs.push(styleSheet.href);
  6583. styleSheet.restricted=true;
  6584. var ssid=StyleSheetCache(styleSheet)
  6585. }styleSheetIterator(doc,styleSheet);
  6586. var importedStyleSheet,importedRules;
  6587. if(isIE){var imports=styleSheet.imports;
  6588. for(var j=0,importsLength=imports.length;
  6589. j<importsLength;
  6590. j++){try{importedStyleSheet=imports[j];
  6591. importedRules=importedStyleSheet.rules;
  6592. importedRules.length
  6593. }catch(e){externalStyleSheetURLs.push(styleSheet.href);
  6594. importedStyleSheet.restricted=true;
  6595. var ssid=StyleSheetCache(importedStyleSheet)
  6596. }styleSheetIterator(doc,importedStyleSheet)
  6597. }}else{if(rules){for(var j=0,rulesLength=rules.length;
  6598. j<rulesLength;
  6599. j++){try{var rule=rules[j];
  6600. importedStyleSheet=rule.styleSheet;
  6601. if(importedStyleSheet){importedRules=importedStyleSheet.cssRules;
  6602. importedRules.length
  6603. }else{break
  6604. }}catch(e){externalStyleSheetURLs.push(styleSheet.href);
  6605. importedStyleSheet.restricted=true;
  6606. var ssid=StyleSheetCache(importedStyleSheet)
  6607. }styleSheetIterator(doc,importedStyleSheet)
  6608. }}}}if(FBTrace.DBG_CSS){FBTrace.sysout("FBL.processAllStyleSheets","all stylesheet rules processed in "+(new Date().getTime()-start)+"ms")
  6609. }};
  6610. var CSSRuleMap={};
  6611. var ElementCSSRulesMap={};
  6612. var processStyleSheet=function(doc,styleSheet){if(styleSheet.restricted){return
  6613. }var rules=isIE?styleSheet.rules:styleSheet.cssRules;
  6614. var ssid=StyleSheetCache(styleSheet);
  6615. for(var i=0,length=rules.length;
  6616. i<length;
  6617. i++){var rid=ssid+":"+i;
  6618. var rule=rules[i];
  6619. var selector=rule.selectorText;
  6620. if(isIE){selector=selector.replace(reSelectorTag,function(s){return s.toLowerCase()
  6621. })
  6622. }CSSRuleMap[rid]={styleSheetId:ssid,styleSheetIndex:i,order:++globalCSSRuleIndex,specificity:selector&&selector.indexOf(",")!=-1?getCSSRuleSpecificity(selector):0,rule:rule,selector:selector,cssText:rule.style?rule.style.cssText:rule.cssText?rule.cssText:""};
  6623. var elements=Firebug.Selector(selector,doc);
  6624. for(var j=0,elementsLength=elements.length;
  6625. j<elementsLength;
  6626. j++){var element=elements[j];
  6627. var eid=ElementCache(element);
  6628. if(!ElementCSSRulesMap[eid]){ElementCSSRulesMap[eid]=[]
  6629. }ElementCSSRulesMap[eid].push(rid)
  6630. }}};
  6631. FBL.getElementCSSRules=function(element){var eid=ElementCache(element);
  6632. var rules=ElementCSSRulesMap[eid];
  6633. if(!rules){return
  6634. }var arr=[element];
  6635. var Selector=Firebug.Selector;
  6636. var ruleId,rule;
  6637. for(var i=0,length=rules.length;
  6638. i<length;
  6639. i++){ruleId=rules[i];
  6640. rule=CSSRuleMap[ruleId];
  6641. if(rule.selector.indexOf(",")!=-1){var selectors=rule.selector.split(",");
  6642. var maxSpecificity=-1;
  6643. var sel,spec,mostSpecificSelector;
  6644. for(var j,len=selectors.length;
  6645. j<len;
  6646. j++){sel=selectors[j];
  6647. if(Selector.matches(sel,arr).length==1){spec=getCSSRuleSpecificity(sel);
  6648. if(spec>maxSpecificity){maxSpecificity=spec;
  6649. mostSpecificSelector=sel
  6650. }}}rule.specificity=maxSpecificity
  6651. }}rules.sort(sortElementRules);
  6652. return rules
  6653. };
  6654. var sortElementRules=function(a,b){var ruleA=CSSRuleMap[a];
  6655. var ruleB=CSSRuleMap[b];
  6656. var specificityA=ruleA.specificity;
  6657. var specificityB=ruleB.specificity;
  6658. if(specificityA>specificityB){return 1
  6659. }else{if(specificityA<specificityB){return -1
  6660. }else{return ruleA.order>ruleB.order?1:-1
  6661. }}};
  6662. var solveRulesTied=function(a,b){var ruleA=CSSRuleMap[a];
  6663. var ruleB=CSSRuleMap[b];
  6664. if(ruleA.specificity==ruleB.specificity){return ruleA.order>ruleB.order?1:-1
  6665. }return null
  6666. };
  6667. var reSelectorTag=/(^|\s)(?:\w+)/g;
  6668. var reSelectorClass=/\.[\w\d_-]+/g;
  6669. var reSelectorId=/#[\w\d_-]+/g;
  6670. var getCSSRuleSpecificity=function(selector){var match=selector.match(reSelectorTag);
  6671. var tagCount=match?match.length:0;
  6672. match=selector.match(reSelectorClass);
  6673. var classCount=match?match.length:0;
  6674. match=selector.match(reSelectorId);
  6675. var idCount=match?match.length:0;
  6676. return tagCount+10*classCount+100*idCount
  6677. };
  6678. Firebug.SourceBoxPanel=Firebug.Panel;
  6679. var domUtils=null;
  6680. var textContent=isIE?"innerText":"textContent";
  6681. var CSSDomplateBase={isEditable:function(rule){return !rule.isSystemSheet
  6682. },isSelectorEditable:function(rule){return rule.isSelectorEditable&&this.isEditable(rule)
  6683. }};
  6684. var CSSPropTag=domplate(CSSDomplateBase,{tag:DIV({"class":"cssProp focusRow",$disabledStyle:"$prop.disabled",$editGroup:"$rule|isEditable",$cssOverridden:"$prop.overridden",role:"option"},A({"class":"cssPropDisable"},"&nbsp;&nbsp;"),SPAN({"class":"cssPropName",$editable:"$rule|isEditable"},"$prop.name"),SPAN({"class":"cssColon"},":"),SPAN({"class":"cssPropValue",$editable:"$rule|isEditable"},"$prop.value$prop.important"),SPAN({"class":"cssSemi"},";"))});
  6685. var CSSRuleTag=TAG("$rule.tag",{rule:"$rule"});
  6686. var CSSImportRuleTag=domplate({tag:DIV({"class":"cssRule insertInto focusRow importRule",_repObject:"$rule.rule"},"@import &quot;",A({"class":"objectLink",_repObject:"$rule.rule.styleSheet"},"$rule.rule.href"),"&quot;;")});
  6687. 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"},"}"))});
  6688. var reSplitCSS=/(url\("?[^"\)]+?"?\))|(rgb\(.*?\))|(#[\dA-Fa-f]+)|(-?\d+(\.\d+)?(%|[a-z]{1,2})?)|([^,\s]+)|"(.*?)"/;
  6689. var reURL=/url\("?([^"\)]+)?"?\)/;
  6690. var reRepeat=/no-repeat|repeat-x|repeat-y|repeat/;
  6691. var sothinkInstalled=false;
  6692. 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"]};
  6693. var styleGroupTitles={text:"Text",background:"Background",box:"Box Model",layout:"Layout",other:"Other"};
  6694. Firebug.CSSModule=extend(Firebug.Module,{freeEdit:function(styleSheet,value){if(!styleSheet.editStyleSheet){var ownerNode=getStyleSheetOwnerNode(styleSheet);
  6695. styleSheet.disabled=true;
  6696. var url=CCSV("@mozilla.org/network/standard-url;1",Components.interfaces.nsIURL);
  6697. url.spec=styleSheet.href;
  6698. var editStyleSheet=ownerNode.ownerDocument.createElementNS("http://www.w3.org/1999/xhtml","style");
  6699. unwrapObject(editStyleSheet).firebugIgnore=true;
  6700. editStyleSheet.setAttribute("type","text/css");
  6701. editStyleSheet.setAttributeNS("http://www.w3.org/XML/1998/namespace","base",url.directory);
  6702. if(ownerNode.hasAttribute("media")){editStyleSheet.setAttribute("media",ownerNode.getAttribute("media"))
  6703. }ownerNode.parentNode.insertBefore(editStyleSheet,ownerNode.nextSibling);
  6704. styleSheet.editStyleSheet=editStyleSheet
  6705. }styleSheet.editStyleSheet.innerHTML=value;
  6706. if(FBTrace.DBG_CSS){FBTrace.sysout("css.saveEdit styleSheet.href:"+styleSheet.href+" got innerHTML:"+value+"\n")
  6707. }dispatch(this.fbListeners,"onCSSFreeEdit",[styleSheet,value])
  6708. },insertRule:function(styleSheet,cssText,ruleIndex){if(FBTrace.DBG_CSS){FBTrace.sysout("Insert: "+ruleIndex+" "+cssText)
  6709. }var insertIndex=styleSheet.insertRule(cssText,ruleIndex);
  6710. dispatch(this.fbListeners,"onCSSInsertRule",[styleSheet,cssText,ruleIndex]);
  6711. return insertIndex
  6712. },deleteRule:function(styleSheet,ruleIndex){if(FBTrace.DBG_CSS){FBTrace.sysout("deleteRule: "+ruleIndex+" "+styleSheet.cssRules.length,styleSheet.cssRules)
  6713. }dispatch(this.fbListeners,"onCSSDeleteRule",[styleSheet,ruleIndex]);
  6714. styleSheet.deleteRule(ruleIndex)
  6715. },setProperty:function(rule,propName,propValue,propPriority){var style=rule.style||rule;
  6716. var baseText=style.cssText;
  6717. if(style.getPropertyValue){var prevValue=style.getPropertyValue(propName);
  6718. var prevPriority=style.getPropertyPriority(propName);
  6719. style.removeProperty(propName);
  6720. style.setProperty(propName,propValue,propPriority)
  6721. }else{style[toCamelCase(propName)]=propValue
  6722. }if(propName){dispatch(this.fbListeners,"onCSSSetProperty",[style,propName,propValue,propPriority,prevValue,prevPriority,rule,baseText])
  6723. }},removeProperty:function(rule,propName,parent){var style=rule.style||rule;
  6724. var baseText=style.cssText;
  6725. if(style.getPropertyValue){var prevValue=style.getPropertyValue(propName);
  6726. var prevPriority=style.getPropertyPriority(propName);
  6727. style.removeProperty(propName)
  6728. }else{style[toCamelCase(propName)]=""
  6729. }if(propName){dispatch(this.fbListeners,"onCSSRemoveProperty",[style,propName,prevValue,prevPriority,rule,baseText])
  6730. }}});
  6731. Firebug.CSSStyleSheetPanel=function(){};
  6732. 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)
  6733. }else{if(this.selection){this.updateSelection(this.selection)
  6734. }}},toggleEditing:function(){if(!this.stylesheetEditor){this.stylesheetEditor=new StyleSheetEditor(this.document)
  6735. }if(this.editing){Firebug.Editor.stopEditing()
  6736. }else{if(!this.location){return
  6737. }var styleSheet=this.location.editStyleSheet?this.location.editStyleSheet.sheet:this.location;
  6738. var css=getStyleSheetCSS(styleSheet,this.context);
  6739. this.stylesheetEditor.styleSheet=this.location;
  6740. Firebug.Editor.startEditing(this.panelNode,css,this.stylesheetEditor)
  6741. }},getStylesheetURL:function(rule){if(this.location.href){return this.location.href
  6742. }else{return this.context.window.location.href
  6743. }},getRuleByLine:function(styleSheet,line){if(!domUtils){return null
  6744. }var cssRules=styleSheet.cssRules;
  6745. for(var i=0;
  6746. i<cssRules.length;
  6747. ++i){var rule=cssRules[i];
  6748. if(rule instanceof CSSStyleRule){var ruleLine=domUtils.getRuleLine(rule);
  6749. if(ruleLine>=line){return rule
  6750. }}}},highlightRule:function(rule){var ruleElement=Firebug.getElementByRepObject(this.panelNode.firstChild,rule);
  6751. if(ruleElement){scrollIntoCenterView(ruleElement,this.panelNode);
  6752. setClassTimed(ruleElement,"jumpHighlight",this.context)
  6753. }},getStyleSheetRules:function(context,styleSheet){var isSystemSheet=isSystemStyleSheet(styleSheet);
  6754. function appendRules(cssRules){for(var i=0;
  6755. i<cssRules.length;
  6756. ++i){var rule=cssRules[i];
  6757. if(instanceOf(rule,"CSSStyleRule")){var props=this.getRuleProperties(context,rule);
  6758. var line=null;
  6759. var selector=rule.selectorText;
  6760. if(isIE){selector=selector.replace(reSelectorTag,function(s){return s.toLowerCase()
  6761. })
  6762. }var ruleId=rule.selectorText+"/"+line;
  6763. rules.push({tag:CSSStyleRuleTag.tag,rule:rule,id:ruleId,selector:selector,props:props,isSystemSheet:isSystemSheet,isSelectorEditable:true})
  6764. }else{if(instanceOf(rule,"CSSImportRule")){rules.push({tag:CSSImportRuleTag.tag,rule:rule})
  6765. }else{if(instanceOf(rule,"CSSMediaRule")){appendRules.apply(this,[rule.cssRules])
  6766. }else{if(FBTrace.DBG_ERRORS||FBTrace.DBG_CSS){FBTrace.sysout("css getStyleSheetRules failed to classify a rule ",rule)
  6767. }}}}}}var rules=[];
  6768. appendRules.apply(this,[styleSheet.cssRules||styleSheet.rules]);
  6769. return rules
  6770. },parseCSSProps:function(style,inheritMode){var props=[];
  6771. if(Firebug.expandShorthandProps){var count=style.length-1,index=style.length;
  6772. while(index--){var propName=style.item(count-index);
  6773. this.addProperty(propName,style.getPropertyValue(propName),!!style.getPropertyPriority(propName),false,inheritMode,props)
  6774. }}else{var lines=style.cssText.match(/(?:[^;\(]*(?:\([^\)]*?\))?[^;\(]*)*;?/g);
  6775. var propRE=/\s*([^:\s]*)\s*:\s*(.*?)\s*(! important)?;?$/;
  6776. var line,i=0;
  6777. var m;
  6778. while(line=lines[i++]){m=propRE.exec(line);
  6779. if(!m){continue
  6780. }if(m[2]){this.addProperty(m[1],m[2],!!m[3],false,inheritMode,props)
  6781. }}}return props
  6782. },getRuleProperties:function(context,rule,inheritMode){var props=this.parseCSSProps(rule.style,inheritMode);
  6783. var line;
  6784. var ruleId=rule.selectorText+"/"+line;
  6785. this.addOldProperties(context,ruleId,inheritMode,props);
  6786. sortProperties(props);
  6787. return props
  6788. },addOldProperties:function(context,ruleId,inheritMode,props){if(context.selectorMap&&context.selectorMap.hasOwnProperty(ruleId)){var moreProps=context.selectorMap[ruleId];
  6789. for(var i=0;
  6790. i<moreProps.length;
  6791. ++i){var prop=moreProps[i];
  6792. this.addProperty(prop.name,prop.value,prop.important,true,inheritMode,props)
  6793. }}},addProperty:function(name,value,important,disabled,inheritMode,props){name=name.toLowerCase();
  6794. if(inheritMode&&!inheritedStyleNames[name]){return
  6795. }name=this.translateName(name,value);
  6796. if(name){value=stripUnits(rgbToHex(value));
  6797. important=important?" !important":"";
  6798. var prop={name:name,value:value,important:important,disabled:disabled};
  6799. props.push(prop)
  6800. }},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
  6801. }if(name=="margin-left-value"){return"margin-left"
  6802. }else{if(name=="margin-right-value"){return"margin-right"
  6803. }else{if(name=="margin-top-value"){return"margin-top"
  6804. }else{if(name=="margin-bottom-value"){return"margin-bottom"
  6805. }else{if(name=="padding-left-value"){return"padding-left"
  6806. }else{if(name=="padding-right-value"){return"padding-right"
  6807. }else{if(name=="padding-top-value"){return"padding-top"
  6808. }else{if(name=="padding-bottom-value"){return"padding-bottom"
  6809. }else{return name
  6810. }}}}}}}}},editElementStyle:function(){var rulesBox=$$(".cssElementRuleContainer",this.panelNode)[0];
  6811. var styleRuleBox=rulesBox&&Firebug.getElementByRepObject(rulesBox,this.selection);
  6812. if(!styleRuleBox){var rule={rule:this.selection,inherited:false,selector:"element.style",props:[]};
  6813. if(!rulesBox){styleRuleBox=this.template.cascadedTag.replace({rules:[rule],inherited:[],inheritLabel:"Inherited from"},this.panelNode);
  6814. styleRuleBox=$$(".cssElementRuleContainer",styleRuleBox)[0]
  6815. }else{styleRuleBox=this.template.ruleTag.insertBefore({rule:rule},rulesBox)
  6816. }styleRuleBox=$$(".insertInto",styleRuleBox)[0]
  6817. }Firebug.Editor.insertRowForObject(styleRuleBox)
  6818. },insertPropertyRow:function(row){Firebug.Editor.insertRowForObject(row)
  6819. },insertRule:function(row){var location=getAncestorByClass(row,"cssRule");
  6820. if(!location){location=getChildByClass(this.panelNode,"cssSheet");
  6821. Firebug.Editor.insertRowForObject(location)
  6822. }else{Firebug.Editor.insertRow(location,"before")
  6823. }},editPropertyRow:function(row){var propValueBox=getChildByClass(row,"cssPropValue");
  6824. Firebug.Editor.startEditing(propValueBox)
  6825. },deletePropertyRow:function(row){var rule=Firebug.getRepObject(row);
  6826. var propName=getChildByClass(row,"cssPropName")[textContent];
  6827. Firebug.CSSModule.removeProperty(rule,propName);
  6828. var ruleId=Firebug.getRepNode(row).getAttribute("ruleId");
  6829. if(this.context.selectorMap&&this.context.selectorMap.hasOwnProperty(ruleId)){var map=this.context.selectorMap[ruleId];
  6830. for(var i=0;
  6831. i<map.length;
  6832. ++i){if(map[i].name==propName){map.splice(i,1);
  6833. break
  6834. }}}if(this.name=="stylesheet"){dispatch([Firebug.A11yModel],"onInlineEditorClose",[this,row.firstChild,true])
  6835. }row.parentNode.removeChild(row);
  6836. this.markChange(this.name=="stylesheet")
  6837. },disablePropertyRow:function(row){toggleClass(row,"disabledStyle");
  6838. var rule=Firebug.getRepObject(row);
  6839. var propName=getChildByClass(row,"cssPropName")[textContent];
  6840. if(!this.context.selectorMap){this.context.selectorMap={}
  6841. }var ruleId=Firebug.getRepNode(row).getAttribute("ruleId");
  6842. if(!(this.context.selectorMap.hasOwnProperty(ruleId))){this.context.selectorMap[ruleId]=[]
  6843. }var map=this.context.selectorMap[ruleId];
  6844. var propValue=getChildByClass(row,"cssPropValue")[textContent];
  6845. var parsedValue=parsePriority(propValue);
  6846. if(hasClass(row,"disabledStyle")){Firebug.CSSModule.removeProperty(rule,propName);
  6847. map.push({name:propName,value:parsedValue.value,important:parsedValue.priority})
  6848. }else{Firebug.CSSModule.setProperty(rule,propName,parsedValue.value,parsedValue.priority);
  6849. var index=findPropByName(map,propName);
  6850. map.splice(index,1)
  6851. }this.markChange(this.name=="stylesheet")
  6852. },onMouseDown:function(event){var offset=event.clientX-this.panelNode.parentNode.offsetLeft;
  6853. if(!isLeftClick(event)||offset>20){return
  6854. }var target=event.target||event.srcElement;
  6855. if(hasClass(target,"textEditor")){return
  6856. }var row=getAncestorByClass(target,"cssProp");
  6857. if(row&&hasClass(row,"editGroup")){this.disablePropertyRow(row);
  6858. cancelEvent(event)
  6859. }},onDoubleClick:function(event){var offset=event.clientX-this.panelNode.parentNode.offsetLeft;
  6860. if(!isLeftClick(event)||offset<=20){return
  6861. }var target=event.target||event.srcElement;
  6862. if(hasClass(target,"textEditorInner")){return
  6863. }var row=getAncestorByClass(target,"cssRule");
  6864. if(row&&!getAncestorByClass(target,"cssPropName")&&!getAncestorByClass(target,"cssPropValue")){this.insertPropertyRow(row);
  6865. cancelEvent(event)
  6866. }},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);
  6867. this.onMouseDown=bind(this.onMouseDown,this);
  6868. this.onDoubleClick=bind(this.onDoubleClick,this);
  6869. if(this.name=="stylesheet"){this.onChangeSelect=bind(this.onChangeSelect,this);
  6870. var doc=Firebug.browser.document;
  6871. var selectNode=this.selectNode=createElement("select");
  6872. processAllStyleSheets(doc,function(doc,styleSheet){var key=StyleSheetCache.key(styleSheet);
  6873. var fileName=getFileName(styleSheet.href)||getFileName(doc.location.href);
  6874. var option=createElement("option",{value:key});
  6875. option.appendChild(Firebug.chrome.document.createTextNode(fileName));
  6876. selectNode.appendChild(option)
  6877. });
  6878. this.toolButtonsNode.appendChild(selectNode)
  6879. }},onChangeSelect:function(event){event=event||window.event;
  6880. var target=event.srcElement||event.currentTarget;
  6881. var key=target.value;
  6882. var styleSheet=StyleSheetCache.get(key);
  6883. this.updateLocation(styleSheet)
  6884. },initialize:function(){Firebug.Panel.initialize.apply(this,arguments);
  6885. this.context=Firebug.chrome;
  6886. this.document=Firebug.chrome.document;
  6887. this.initializeNode();
  6888. if(this.name=="stylesheet"){var styleSheets=Firebug.browser.document.styleSheets;
  6889. if(styleSheets.length>0){addEvent(this.selectNode,"change",this.onChangeSelect);
  6890. this.updateLocation(styleSheets[0])
  6891. }}},shutdown:function(){Firebug.Editor.stopEditing();
  6892. if(this.name=="stylesheet"){removeEvent(this.selectNode,"change",this.onChangeSelect)
  6893. }this.destroyNode();
  6894. Firebug.Panel.shutdown.apply(this,arguments)
  6895. },destroy:function(state){Firebug.Panel.destroy.apply(this,arguments)
  6896. },initializeNode:function(oldPanelNode){addEvent(this.panelNode,"mousedown",this.onMouseDown);
  6897. addEvent(this.panelNode,"dblclick",this.onDoubleClick)
  6898. },destroyNode:function(){removeEvent(this.panelNode,"mousedown",this.onMouseDown);
  6899. removeEvent(this.panelNode,"dblclick",this.onDoubleClick)
  6900. },ishow:function(state){Firebug.Inspector.stopInspecting(true);
  6901. this.showToolbarButtons("fbCSSButtons",true);
  6902. if(this.context.loaded&&!this.location){restoreObjects(this,state);
  6903. if(!this.location){this.location=this.getDefaultLocation()
  6904. }if(state&&state.scrollTop){this.panelNode.scrollTop=state.scrollTop
  6905. }}},ihide:function(){this.showToolbarButtons("fbCSSButtons",false);
  6906. this.lastScrollTop=this.panelNode.scrollTop
  6907. },supportsObject:function(object){if(object instanceof CSSStyleSheet){return 1
  6908. }else{if(object instanceof CSSStyleRule){return 2
  6909. }else{if(object instanceof CSSStyleDeclaration){return 2
  6910. }else{if(object instanceof SourceLink&&object.type=="css"&&reCSS.test(object.href)){return 2
  6911. }else{return 0
  6912. }}}}},updateLocation:function(styleSheet){if(!styleSheet){return
  6913. }if(styleSheet.editStyleSheet){styleSheet=styleSheet.editStyleSheet.sheet
  6914. }if(styleSheet.restricted){FirebugReps.Warning.tag.replace({object:"AccessRestricted"},this.panelNode);
  6915. 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);
  6916. return
  6917. }var rules=this.getStyleSheetRules(this.context,styleSheet);
  6918. var result;
  6919. if(rules.length){result=this.template.tag.replace({rules:rules},this.panelNode)
  6920. }else{result=FirebugReps.Warning.tag.replace({object:"EmptyStyleSheet"},this.panelNode)
  6921. }},updateSelection:function(object){this.selection=null;
  6922. if(object instanceof CSSStyleDeclaration){object=object.parentRule
  6923. }if(object instanceof CSSStyleRule){this.navigate(object.parentStyleSheet);
  6924. this.highlightRule(object)
  6925. }else{if(object instanceof CSSStyleSheet){this.navigate(object)
  6926. }else{if(object instanceof SourceLink){try{var sourceLink=object;
  6927. var sourceFile=getSourceFileByHref(sourceLink.href,this.context);
  6928. if(sourceFile){clearNode(this.panelNode);
  6929. this.showSourceFile(sourceFile);
  6930. var lineNo=object.line;
  6931. if(lineNo){this.scrollToLine(lineNo,this.jumpHighlightFactory(lineNo,this.context))
  6932. }}else{var stylesheet=getStyleSheetByHref(sourceLink.href,this.context);
  6933. if(stylesheet){this.navigate(stylesheet)
  6934. }else{if(FBTrace.DBG_CSS){FBTrace.sysout("css.updateSelection no sourceFile for "+sourceLink.href,sourceLink)
  6935. }}}}catch(exc){if(FBTrace.DBG_CSS){FBTrace.sysout("css.upDateSelection FAILS "+exc,exc)
  6936. }}}}}},updateOption:function(name,value){if(name=="expandShorthandProps"){this.refresh()
  6937. }},getLocationList:function(){var styleSheets=getAllStyleSheets(this.context);
  6938. return styleSheets
  6939. },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)}]
  6940. },getContextMenuItems:function(style,target){var items=[];
  6941. if(this.infoTipType=="color"){items.push({label:"CopyColor",command:bindFixed(copyToClipboard,FBL,this.infoTipObject)})
  6942. }else{if(this.infoTipType=="image"){items.push({label:"CopyImageLocation",command:bindFixed(copyToClipboard,FBL,this.infoTipObject)},{label:"OpenImageInNewTab",command:bindFixed(openNewTab,FBL,this.infoTipObject)})
  6943. }}if(isElement(this.selection)){items.push({label:"EditStyle",command:bindFixed(this.editElementStyle,this)})
  6944. }else{if(!isSystemStyleSheet(this.selection)){items.push({label:"NewRule",command:bindFixed(this.insertRule,this,target)})
  6945. }}var cssRule=getAncestorByClass(target,"cssRule");
  6946. if(cssRule&&hasClass(cssRule,"cssEditableRule")){items.push("-",{label:"NewProp",command:bindFixed(this.insertPropertyRow,this,target)});
  6947. var propRow=getAncestorByClass(target,"cssProp");
  6948. if(propRow){var propName=getChildByClass(propRow,"cssPropName")[textContent];
  6949. var isDisabled=hasClass(propRow,"disabledStyle");
  6950. 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)})
  6951. }}items.push("-",{label:"Refresh",command:bind(this.refresh,this)});
  6952. return items
  6953. },browseObject:function(object){if(this.infoTipType=="image"){openNewTab(this.infoTipObject);
  6954. return true
  6955. }},showInfoTip:function(infoTip,target,x,y){var propValue=getAncestorByClass(target,"cssPropValue");
  6956. if(propValue){var offset=getClientOffset(propValue);
  6957. var offsetX=x-offset.x;
  6958. var text=propValue[textContent];
  6959. var charWidth=propValue.offsetWidth/text.length;
  6960. var charOffset=Math.floor(offsetX/charWidth);
  6961. var cssValue=parseCSSValue(text,charOffset);
  6962. if(cssValue){if(cssValue.value==this.infoTipValue){return true
  6963. }this.infoTipValue=cssValue.value;
  6964. if(cssValue.type=="rgb"||(!cssValue.type&&isColorKeyword(cssValue.value))){this.infoTipType="color";
  6965. this.infoTipObject=cssValue.value;
  6966. return Firebug.InfoTip.populateColorInfoTip(infoTip,cssValue.value)
  6967. }else{if(cssValue.type=="url"){var propNameNode=getElementByClass(target.parentNode,"cssPropName");
  6968. if(propNameNode&&isImageRule(propNameNode[textContent])){var rule=Firebug.getRepObject(target);
  6969. var baseURL=this.getStylesheetURL(rule);
  6970. var relURL=parseURLValue(cssValue.value);
  6971. var absURL=isDataURL(relURL)?relURL:absoluteURL(relURL,baseURL);
  6972. var repeat=parseRepeatValue(text);
  6973. this.infoTipType="image";
  6974. this.infoTipObject=absURL;
  6975. return Firebug.InfoTip.populateImageInfoTip(infoTip,absURL,repeat)
  6976. }}}}}delete this.infoTipType;
  6977. delete this.infoTipValue;
  6978. delete this.infoTipObject
  6979. },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)
  6980. }return this.ruleEditor
  6981. }else{if(!this.editor){this.editor=new CSSEditor(this.document)
  6982. }return this.editor
  6983. }},getDefaultLocation:function(){try{var styleSheets=this.context.window.document.styleSheets;
  6984. if(styleSheets.length){var sheet=styleSheets[0];
  6985. return(Firebug.filterSystemURLs&&isSystemURL(getURLForStyleSheet(sheet)))?null:sheet
  6986. }}catch(exc){if(FBTrace.DBG_LOCATIONS){FBTrace.sysout("css.getDefaultLocation FAILS "+exc,exc)
  6987. }}},getObjectDescription:function(styleSheet){var url=getURLForStyleSheet(styleSheet);
  6988. var instance=getInstanceForStyleSheet(styleSheet);
  6989. var baseDescription=splitURLBase(url);
  6990. if(instance){baseDescription.name=baseDescription.name+" #"+(instance+1)
  6991. }return baseDescription
  6992. },search:function(text,reverse){var curDoc=this.searchCurrentDoc(!Firebug.searchGlobal,text,reverse);
  6993. if(!curDoc&&Firebug.searchGlobal){return this.searchOtherDocs(text,reverse)
  6994. }return curDoc
  6995. },searchOtherDocs:function(text,reverse){var scanRE=Firebug.Search.getTestingRegex(text);
  6996. function scanDoc(styleSheet){for(var i=0;
  6997. i<styleSheet.cssRules.length;
  6998. i++){if(scanRE.test(styleSheet.cssRules[i].cssText)){return true
  6999. }}}if(this.navigateToNextDocument(scanDoc,reverse)){return this.searchCurrentDoc(true,text,reverse)
  7000. }},searchCurrentDoc:function(wrapSearch,text,reverse){if(!text){delete this.currentSearch;
  7001. return false
  7002. }var row;
  7003. if(this.currentSearch&&text==this.currentSearch.text){row=this.currentSearch.findNext(wrapSearch,false,reverse,Firebug.Search.isCaseSensitive(text))
  7004. }else{if(this.editing){this.currentSearch=new TextSearch(this.stylesheetEditor.box);
  7005. row=this.currentSearch.find(text,reverse,Firebug.Search.isCaseSensitive(text));
  7006. if(row){var sel=this.document.defaultView.getSelection();
  7007. sel.removeAllRanges();
  7008. sel.addRange(this.currentSearch.range);
  7009. scrollSelectionIntoView(this);
  7010. return true
  7011. }else{return false
  7012. }}else{function findRow(node){return node.nodeType==1?node:node.parentNode
  7013. }this.currentSearch=new TextSearch(this.panelNode,findRow);
  7014. row=this.currentSearch.find(text,reverse,Firebug.Search.isCaseSensitive(text))
  7015. }}if(row){this.document.defaultView.getSelection().selectAllChildren(row);
  7016. scrollIntoCenterView(row,this.panelNode);
  7017. dispatch([Firebug.A11yModel],"onCSSSearchMatchFound",[this,text,row]);
  7018. return true
  7019. }else{dispatch([Firebug.A11yModel],"onCSSSearchMatchFound",[this,text,null]);
  7020. return false
  7021. }},getSearchOptionsMenuItems:function(){return[Firebug.Search.searchOptionMenu("search.Case_Sensitive","searchCaseSensitive"),Firebug.Search.searchOptionMenu("search.Multiple_Files","searchGlobal")]
  7022. }});
  7023. 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={};
  7024. this.getInheritedRules(element,sections,usedProps);
  7025. this.getElementRules(element,rules,usedProps);
  7026. if(rules.length||sections.length){var inheritLabel="Inherited from";
  7027. var result=this.template.cascadedTag.replace({rules:rules,inherited:sections,inheritLabel:inheritLabel},this.panelNode)
  7028. }else{var result=FirebugReps.Warning.tag.replace({object:"EmptyElementCSS"},this.panelNode)
  7029. }if(externalStyleSheetURLs.length>0){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)
  7030. }},getStylesheetURL:function(rule){if(rule&&rule.parentStyleSheet&&rule.parentStyleSheet.href){return rule.parentStyleSheet.href
  7031. }else{return this.selection.ownerDocument.location.href
  7032. }},getInheritedRules:function(element,sections,usedProps){var parent=element.parentNode;
  7033. if(parent&&parent.nodeType==1){this.getInheritedRules(parent,sections,usedProps);
  7034. var rules=[];
  7035. this.getElementRules(parent,rules,usedProps,true);
  7036. if(rules.length){sections.splice(0,0,{element:parent,rules:rules})
  7037. }}},getElementRules:function(element,rules,usedProps,inheritMode){var inspectedRules,displayedRules={};
  7038. inspectedRules=getElementCSSRules(element);
  7039. if(inspectedRules){for(var i=0,length=inspectedRules.length;
  7040. i<length;
  7041. ++i){var ruleId=inspectedRules[i];
  7042. var ruleData=CSSRuleMap[ruleId];
  7043. var rule=ruleData.rule;
  7044. var ssid=ruleData.styleSheetId;
  7045. var parentStyleSheet=StyleSheetCache.get(ssid);
  7046. var href=parentStyleSheet.externalURL?parentStyleSheet.externalURL:parentStyleSheet.href;
  7047. var instance=null;
  7048. var isSystemSheet=false;
  7049. if(!Firebug.showUserAgentCSS&&isSystemSheet){continue
  7050. }if(!href){href=element.ownerDocument.location.href
  7051. }var props=this.getRuleProperties(this.context,rule,inheritMode);
  7052. if(inheritMode&&!props.length){continue
  7053. }var line;
  7054. var ruleId=rule.selectorText+"/"+line;
  7055. var sourceLink=new SourceLink(href,line,"css",rule,instance);
  7056. this.markOverridenProps(props,usedProps,inheritMode);
  7057. rules.splice(0,0,{rule:rule,id:ruleId,selector:ruleData.selector,sourceLink:sourceLink,props:props,inherited:inheritMode,isSystemSheet:isSystemSheet})
  7058. }}if(element.style){this.getStyleProperties(element,rules,usedProps,inheritMode)
  7059. }if(FBTrace.DBG_CSS){FBTrace.sysout("getElementRules "+rules.length+" rules for "+getElementXPath(element),rules)
  7060. }},markOverridenProps:function(props,usedProps,inheritMode){for(var i=0;
  7061. i<props.length;
  7062. ++i){var prop=props[i];
  7063. if(usedProps.hasOwnProperty(prop.name)){var deadProps=usedProps[prop.name];
  7064. for(var j=0;
  7065. j<deadProps.length;
  7066. ++j){var deadProp=deadProps[j];
  7067. if(!deadProp.disabled&&!deadProp.wasInherited&&deadProp.important&&!prop.important){prop.overridden=true
  7068. }else{if(!prop.disabled){deadProp.overridden=true
  7069. }}}}else{usedProps[prop.name]=[]
  7070. }prop.wasInherited=inheritMode?true:false;
  7071. usedProps[prop.name].push(prop)
  7072. }},getStyleProperties:function(element,rules,usedProps,inheritMode){var props=this.parseCSSProps(element.style,inheritMode);
  7073. this.addOldProperties(this.context,getElementXPath(element),inheritMode,props);
  7074. sortProperties(props);
  7075. this.markOverridenProps(props,usedProps,inheritMode);
  7076. if(props.length){rules.splice(0,0,{rule:element,id:getElementXPath(element),selector:"element.style",props:props,inherited:inheritMode})
  7077. }},name:"css",title:"Style",parentPanel:"HTML",order:0,initialize:function(){this.context=Firebug.chrome;
  7078. this.document=Firebug.chrome.document;
  7079. Firebug.CSSStyleSheetPanel.prototype.initialize.apply(this,arguments);
  7080. var selection=ElementCache.get(FirebugChrome.selectedHTMLElementId);
  7081. if(selection){this.select(selection,true)
  7082. }},ishow:function(state){},watchWindow:function(win){if(domUtils){var doc=win.document
  7083. }},unwatchWindow:function(win){var doc=win.document;
  7084. if(isAncestor(this.stateChangeEl,doc)){this.removeStateChangeHandlers()
  7085. }},supportsObject:function(object){return object instanceof Element?1:0
  7086. },updateView:function(element){this.updateCascadeView(element);
  7087. if(domUtils){this.contentState=safeGetContentState(element);
  7088. this.addStateChangeHandlers(element)
  7089. }},updateSelection:function(element){if(!instanceOf(element,"Element")){return
  7090. }if(sothinkInstalled){FirebugReps.Warning.tag.replace({object:"SothinkWarning"},this.panelNode);
  7091. return
  7092. }if(!element){return
  7093. }this.updateView(element)
  7094. },updateOption:function(name,value){if(name=="showUserAgentCSS"||name=="expandShorthandProps"){this.refresh()
  7095. }},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")}];
  7096. if(domUtils&&this.selection){var state=safeGetContentState(this.selection);
  7097. ret.push("-");
  7098. ret.push({label:":active",type:"checkbox",checked:state&STATE_ACTIVE,command:bindFixed(this.updateContentState,this,STATE_ACTIVE,state&STATE_ACTIVE)});
  7099. ret.push({label:":hover",type:"checkbox",checked:state&STATE_HOVER,command:bindFixed(this.updateContentState,this,STATE_HOVER,state&STATE_HOVER)})
  7100. }return ret
  7101. },updateContentState:function(state,remove){domUtils.setContentState(remove?this.selection.ownerDocument.documentElement:this.selection,state);
  7102. this.refresh()
  7103. },addStateChangeHandlers:function(el){this.removeStateChangeHandlers();
  7104. this.stateChangeEl=el
  7105. },removeStateChangeHandlers:function(){var sel=this.stateChangeEl;
  7106. if(sel){}},contentStateCheck:function(state){if(!state||this.contentState&state){var timeoutRunner=bindFixed(function(){var newState=safeGetContentState(this.selection);
  7107. if(newState!=this.contentState){this.context.invalidatePanels(this.name)
  7108. }},this);
  7109. setTimeout(timeoutRunner,0)
  7110. }}});
  7111. function safeGetContentState(selection){try{return domUtils.getContentState(selection)
  7112. }catch(e){if(FBTrace.DBG_ERRORS){FBTrace.sysout("css.safeGetContentState; EXCEPTION",e)
  7113. }}}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;
  7114. var style=isIE?element.currentStyle:win.getComputedStyle(element,"");
  7115. var groups=[];
  7116. for(var groupName in styleGroups){var title=styleGroupTitles[groupName];
  7117. var group={title:title,props:[]};
  7118. groups.push(group);
  7119. var props=styleGroups[groupName];
  7120. for(var i=0;
  7121. i<props.length;
  7122. ++i){var propName=props[i];
  7123. var propValue=style.getPropertyValue?style.getPropertyValue(propName):""+style[toCamelCase(propName)];
  7124. if(propValue===undefined||propValue===null){continue
  7125. }propValue=stripUnits(rgbToHex(propValue));
  7126. if(propValue){group.props.push({name:propName,value:propValue})
  7127. }}}var result=this.template.computedTag.replace({groups:groups},this.panelNode)
  7128. },name:"computed",title:"Computed",parentPanel:"HTML",order:1,updateView:function(element){this.updateComputedView(element)
  7129. },getOptionsMenuItems:function(){return[{label:"Refresh",command:bind(this.refresh,this)}]
  7130. }});
  7131. function CSSEditor(doc){this.initializeInline(doc)
  7132. }CSSEditor.prototype=domplate(Firebug.InlineEditor.prototype,{insertNewRow:function(target,insertWhere){var rule=Firebug.getRepObject(target);
  7133. var emptyProp={name:"",value:"",important:""};
  7134. if(insertWhere=="before"){return CSSPropTag.tag.insertBefore({prop:emptyProp,rule:rule},target)
  7135. }else{return CSSPropTag.tag.insertAfter({prop:emptyProp,rule:rule},target)
  7136. }},saveEdit:function(target,value,previousValue){if(!value){return
  7137. }target.innerHTML=escapeForCss(value);
  7138. var row=getAncestorByClass(target,"cssProp");
  7139. if(hasClass(row,"disabledStyle")){toggleClass(row,"disabledStyle")
  7140. }var rule=Firebug.getRepObject(target);
  7141. if(hasClass(target,"cssPropName")){if(value&&previousValue!=value){var propValue=getChildByClass(row,"cssPropValue")[textContent];
  7142. var parsedValue=parsePriority(propValue);
  7143. if(propValue&&propValue!="undefined"){if(FBTrace.DBG_CSS){FBTrace.sysout("CSSEditor.saveEdit : "+previousValue+"->"+value+" = "+propValue+"\n")
  7144. }if(previousValue){Firebug.CSSModule.removeProperty(rule,previousValue)
  7145. }Firebug.CSSModule.setProperty(rule,value,parsedValue.value,parsedValue.priority)
  7146. }}else{if(!value){Firebug.CSSModule.removeProperty(rule,previousValue)
  7147. }}}else{if(getAncestorByClass(target,"cssPropValue")){var propName=getChildByClass(row,"cssPropName")[textContent];
  7148. var propValue=getChildByClass(row,"cssPropValue")[textContent];
  7149. if(FBTrace.DBG_CSS){FBTrace.sysout("CSSEditor.saveEdit propName=propValue: "+propName+" = "+propValue+"\n")
  7150. }if(value&&value!="null"){var parsedValue=parsePriority(value);
  7151. Firebug.CSSModule.setProperty(rule,propName,parsedValue.value,parsedValue.priority)
  7152. }else{if(previousValue&&previousValue!="null"){Firebug.CSSModule.removeProperty(rule,propName)
  7153. }}}}this.panel.markChange(this.panel.name=="stylesheet")
  7154. },advanceToNext:function(target,charCode){if(charCode==58&&hasClass(target,"cssPropName")){return true
  7155. }},getAutoCompleteRange:function(value,offset){if(hasClass(this.target,"cssPropName")){return{start:0,end:value.length-1}
  7156. }else{return parseCSSValue(value,offset)
  7157. }},getAutoCompleteList:function(preExpr,expr,postExpr){if(hasClass(this.target,"cssPropName")){return getCSSPropertyNames()
  7158. }else{var row=getAncestorByClass(this.target,"cssProp");
  7159. var propName=getChildByClass(row,"cssPropName")[textContent];
  7160. return getCSSKeywordsByProperty(propName)
  7161. }}});
  7162. function CSSRuleEditor(doc){this.initializeInline(doc);
  7163. this.completeAsYouType=false
  7164. }CSSRuleEditor.uniquifier=0;
  7165. CSSRuleEditor.prototype=domplate(Firebug.InlineEditor.prototype,{insertNewRow:function(target,insertWhere){var emptyRule={selector:"",id:"",props:[],isSelectorEditable:true};
  7166. if(insertWhere=="before"){return CSSStyleRuleTag.tag.insertBefore({rule:emptyRule},target)
  7167. }else{return CSSStyleRuleTag.tag.insertAfter({rule:emptyRule},target)
  7168. }},saveEdit:function(target,value,previousValue){if(FBTrace.DBG_CSS){FBTrace.sysout("CSSRuleEditor.saveEdit: '"+value+"' '"+previousValue+"'",target)
  7169. }target.innerHTML=escapeForCss(value);
  7170. if(value===previousValue){return
  7171. }var row=getAncestorByClass(target,"cssRule");
  7172. var styleSheet=this.panel.location;
  7173. styleSheet=styleSheet.editStyleSheet?styleSheet.editStyleSheet.sheet:styleSheet;
  7174. var cssRules=styleSheet.cssRules;
  7175. var rule=Firebug.getRepObject(target),oldRule=rule;
  7176. var ruleIndex=cssRules.length;
  7177. if(rule||Firebug.getRepObject(row.nextSibling)){var searchRule=rule||Firebug.getRepObject(row.nextSibling);
  7178. for(ruleIndex=0;
  7179. ruleIndex<cssRules.length&&searchRule!=cssRules[ruleIndex];
  7180. ruleIndex++){}}if(oldRule){Firebug.CSSModule.deleteRule(styleSheet,ruleIndex)
  7181. }if(value){var cssText=[value,"{"];
  7182. var props=row.getElementsByClassName("cssProp");
  7183. for(var i=0;
  7184. i<props.length;
  7185. i++){var propEl=props[i];
  7186. if(!hasClass(propEl,"disabledStyle")){cssText.push(getChildByClass(propEl,"cssPropName")[textContent]);
  7187. cssText.push(":");
  7188. cssText.push(getChildByClass(propEl,"cssPropValue")[textContent]);
  7189. cssText.push(";")
  7190. }}cssText.push("}");
  7191. cssText=cssText.join("");
  7192. try{var insertLoc=Firebug.CSSModule.insertRule(styleSheet,cssText,ruleIndex);
  7193. rule=cssRules[insertLoc];
  7194. ruleIndex++
  7195. }catch(err){if(FBTrace.DBG_CSS||FBTrace.DBG_ERRORS){FBTrace.sysout("CSS Insert Error: "+err,err)
  7196. }target.innerHTML=escapeForCss(previousValue);
  7197. row.repObject=undefined;
  7198. return
  7199. }}else{rule=undefined
  7200. }row.repObject=rule;
  7201. if(!oldRule){var ruleId="new/"+value+"/"+(++CSSRuleEditor.uniquifier);
  7202. row.setAttribute("ruleId",ruleId)
  7203. }this.panel.markChange(this.panel.name=="stylesheet")
  7204. }});
  7205. function StyleSheetEditor(doc){this.box=this.tag.replace({},doc,this);
  7206. this.input=this.box.firstChild
  7207. }StyleSheetEditor.prototype=domplate(Firebug.BaseEditor,{multiLine:true,tag:DIV(TEXTAREA({"class":"styleSheetEditor fullPanelEditor",oninput:"$onInput"})),getValue:function(){return this.input.value
  7208. },setValue:function(value){return this.input.value=value
  7209. },show:function(target,panel,value,textSize,targetSize){this.target=target;
  7210. this.panel=panel;
  7211. this.panel.panelNode.appendChild(this.box);
  7212. this.input.value=value;
  7213. this.input.focus();
  7214. var command=Firebug.chrome.$("cmd_toggleCSSEditing");
  7215. command.setAttribute("checked",true)
  7216. },hide:function(){var command=Firebug.chrome.$("cmd_toggleCSSEditing");
  7217. command.setAttribute("checked",false);
  7218. if(this.box.parentNode==this.panel.panelNode){this.panel.panelNode.removeChild(this.box)
  7219. }delete this.target;
  7220. delete this.panel;
  7221. delete this.styleSheet
  7222. },saveEdit:function(target,value,previousValue){Firebug.CSSModule.freeEdit(this.styleSheet,value)
  7223. },endEditing:function(){this.panel.refresh();
  7224. return true
  7225. },onInput:function(){Firebug.Editor.update()
  7226. },scrollToLine:function(line,offset){this.startMeasuring(this.input);
  7227. var lineHeight=this.measureText().height;
  7228. this.stopMeasuring();
  7229. this.input.scrollTop=(line*lineHeight)+offset
  7230. }});
  7231. var rgbToHex=function rgbToHex(value){return value.replace(/\brgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)/gi,rgbToHexReplacer)
  7232. };
  7233. var rgbToHexReplacer=function(_,r,g,b){return"#"+((1<<24)+(r<<16)+(g<<8)+(b<<0)).toString(16).substr(-6).toUpperCase()
  7234. };
  7235. var stripUnits=function stripUnits(value){return value.replace(/(url\(.*?\)|[^0]\S*\s*)|0(%|em|ex|px|in|cm|mm|pt|pc)(\s|$)/gi,stripUnitsReplacer)
  7236. };
  7237. var stripUnitsReplacer=function(_,skip,remove,whitespace){return skip||("0"+whitespace)
  7238. };
  7239. function parsePriority(value){var rePriority=/(.*?)\s*(!important)?$/;
  7240. var m=rePriority.exec(value);
  7241. var propValue=m?m[1]:"";
  7242. var priority=m&&m[2]?"important":"";
  7243. return{value:propValue,priority:priority}
  7244. }function parseURLValue(value){var m=reURL.exec(value);
  7245. return m?m[1]:""
  7246. }function parseRepeatValue(value){var m=reRepeat.exec(value);
  7247. return m?m[0]:""
  7248. }function parseCSSValue(value,offset){var start=0;
  7249. var m;
  7250. while(1){m=reSplitCSS.exec(value);
  7251. if(m&&m.index+m[0].length<offset){value=value.substr(m.index+m[0].length);
  7252. start+=m.index+m[0].length;
  7253. offset-=m.index+m[0].length
  7254. }else{break
  7255. }}if(m){var type;
  7256. if(m[1]){type="url"
  7257. }else{if(m[2]||m[3]){type="rgb"
  7258. }else{if(m[4]){type="int"
  7259. }}}return{value:m[0],start:start+m.index,end:start+m.index+(m[0].length-1),type:type}
  7260. }}function findPropByName(props,name){for(var i=0;
  7261. i<props.length;
  7262. ++i){if(props[i].name==name){return i
  7263. }}}function sortProperties(props){props.sort(function(a,b){return a.name>b.name?1:-1
  7264. })
  7265. }function getTopmostRuleLine(panelNode){for(var child=panelNode.firstChild;
  7266. child;
  7267. child=child.nextSibling){if(child.offsetTop+child.offsetHeight>panelNode.scrollTop){var rule=child.repObject;
  7268. if(rule){return{line:domUtils.getRuleLine(rule),offset:panelNode.scrollTop-child.offsetTop}
  7269. }}}return 0
  7270. }function getStyleSheetCSS(sheet,context){if(sheet.ownerNode instanceof HTMLStyleElement){return sheet.ownerNode.innerHTML
  7271. }else{return context.sourceCache.load(sheet.href).join("")
  7272. }}function getStyleSheetOwnerNode(sheet){for(;
  7273. sheet&&!sheet.ownerNode;
  7274. sheet=sheet.parentStyleSheet){}return sheet.ownerNode
  7275. }function scrollSelectionIntoView(panel){var selCon=getSelectionController(panel);
  7276. selCon.scrollSelectionIntoView(nsISelectionController.SELECTION_NORMAL,nsISelectionController.SELECTION_FOCUS_REGION,true)
  7277. }function getSelectionController(panel){var browser=Firebug.chrome.getPanelBrowser(panel);
  7278. return browser.docShell.QueryInterface(nsIInterfaceRequestor).getInterface(nsISelectionDisplay).QueryInterface(nsISelectionController)
  7279. }Firebug.registerModule(Firebug.CSSModule);
  7280. Firebug.registerPanel(Firebug.CSSStyleSheetPanel);
  7281. Firebug.registerPanel(CSSElementPanel);
  7282. Firebug.registerPanel(CSSComputedElementPanel)
  7283. }});
  7284. FBL.ns(function(){with(FBL){Firebug.Script=extend(Firebug.Module,{getPanel:function(){return Firebug.chrome?Firebug.chrome.getPanel("Script"):null
  7285. },selectSourceCode:function(index){this.getPanel().selectSourceCode(index)
  7286. }});
  7287. Firebug.registerModule(Firebug.Script);
  7288. 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);
  7289. this.onChangeSelect=bind(this.onChangeSelect,this);
  7290. var doc=Firebug.browser.document;
  7291. var scripts=doc.getElementsByTagName("script");
  7292. var selectNode=this.selectNode=createElement("select");
  7293. for(var i=0,script;
  7294. script=scripts[i];
  7295. i++){if(Firebug.ignoreFirebugElements&&script.getAttribute("firebugIgnore")){continue
  7296. }var fileName=getFileName(script.src)||getFileName(doc.location.href);
  7297. var option=createElement("option",{value:i});
  7298. option.appendChild(Firebug.chrome.document.createTextNode(fileName));
  7299. selectNode.appendChild(option)
  7300. }this.toolButtonsNode.appendChild(selectNode)
  7301. },initialize:function(){this.selectSourceCode(this.selectIndex);
  7302. Firebug.Panel.initialize.apply(this,arguments);
  7303. addEvent(this.selectNode,"change",this.onChangeSelect)
  7304. },shutdown:function(){removeEvent(this.selectNode,"change",this.onChangeSelect);
  7305. Firebug.Panel.shutdown.apply(this,arguments)
  7306. },detach:function(oldChrome,newChrome){Firebug.Panel.detach.apply(this,arguments);
  7307. var oldPanel=oldChrome.getPanel("Script");
  7308. var index=oldPanel.selectIndex;
  7309. this.selectNode.selectedIndex=index;
  7310. this.selectIndex=index;
  7311. this.sourceIndex=-1
  7312. },onChangeSelect:function(event){var select=this.selectNode;
  7313. this.selectIndex=select.selectedIndex;
  7314. var option=select.options[select.selectedIndex];
  7315. if(!option){return
  7316. }var selectedSourceIndex=parseInt(option.value);
  7317. this.renderSourceCode(selectedSourceIndex)
  7318. },selectSourceCode:function(index){var select=this.selectNode;
  7319. select.selectedIndex=index;
  7320. var option=select.options[index];
  7321. if(!option){return
  7322. }var selectedSourceIndex=parseInt(option.value);
  7323. this.renderSourceCode(selectedSourceIndex)
  7324. },renderSourceCode:function(index){if(this.sourceIndex!=index){var renderProcess=function renderProcess(src){var html=[],hl=0;
  7325. src=isIE&&!isExternal?src+"\n":"\n"+src;
  7326. src=src.replace(/\n\r|\r\n/g,"\n");
  7327. var match=src.match(/[\n]/g);
  7328. var lines=match?match.length:0;
  7329. html[hl++]='<div><div class="sourceBox" style="left:';
  7330. html[hl++]=35+7*(lines+"").length;
  7331. html[hl++]='px;"><pre class="sourceCode">';
  7332. html[hl++]=escapeHTML(src);
  7333. html[hl++]='</pre></div><div class="lineNo">';
  7334. for(var l=1,lines;
  7335. l<=lines;
  7336. l++){html[hl++]='<div line="';
  7337. html[hl++]=l;
  7338. html[hl++]='">';
  7339. html[hl++]=l;
  7340. html[hl++]="</div>"
  7341. }html[hl++]="</div></div>";
  7342. updatePanel(html)
  7343. };
  7344. var updatePanel=function(html){self.panelNode.innerHTML=html.join("");
  7345. setTimeout(function(){self.synchronizeUI()
  7346. },0)
  7347. };
  7348. var onFailure=function(){FirebugReps.Warning.tag.replace({object:"AccessRestricted"},self.panelNode)
  7349. };
  7350. var self=this;
  7351. var doc=Firebug.browser.document;
  7352. var script=doc.getElementsByTagName("script")[index];
  7353. var url=getScriptURL(script);
  7354. var isExternal=url&&url!=doc.location.href;
  7355. try{if(isExternal){Ajax.request({url:url,onSuccess:renderProcess,onFailure:onFailure})
  7356. }else{var src=script.innerHTML;
  7357. renderProcess(src)
  7358. }}catch(e){onFailure()
  7359. }this.sourceIndex=index
  7360. }}});
  7361. Firebug.registerPanel(ScriptPanel);
  7362. var getScriptURL=function getScriptURL(script){var reFile=/([^\/\?#]+)(#.+)?$/;
  7363. var rePath=/^(.*\/)/;
  7364. var reProtocol=/^\w+:\/\//;
  7365. var path=null;
  7366. var doc=Firebug.browser.document;
  7367. var file=reFile.exec(script.src);
  7368. if(file){var fileName=file[1];
  7369. var fileOptions=file[2];
  7370. if(reProtocol.test(script.src)){path=rePath.exec(script.src)[1]
  7371. }else{var r=rePath.exec(script.src);
  7372. var src=r?r[1]:script.src;
  7373. var backDir=/^((?:\.\.\/)+)(.*)/.exec(src);
  7374. var reLastDir=/^(.*\/)[^\/]+\/$/;
  7375. path=rePath.exec(doc.location.href)[1];
  7376. if(backDir){var j=backDir[1].length/3;
  7377. var p;
  7378. while(j-->0){path=reLastDir.exec(path)[1]
  7379. }path+=backDir[2]
  7380. }else{if(src.indexOf("/")!=-1){if(/^\.\/./.test(src)){path+=src.substring(2)
  7381. }else{if(/^\/./.test(src)){var domain=/^(\w+:\/\/[^\/]+)/.exec(path);
  7382. path=domain[1]+src
  7383. }else{path+=src
  7384. }}}}}}var m=path&&path.match(/([^\/]+)\/$/)||null;
  7385. if(path&&m){return path+fileName
  7386. }};
  7387. var getFileName=function getFileName(path){if(!path){return""
  7388. }var match=path&&path.match(/[^\/]+(\?.*)?(#.*)?$/);
  7389. return match&&match[0]||path
  7390. }
  7391. }});
  7392. FBL.ns(function(){with(FBL){var ElementCache=Firebug.Lite.Cache.Element;
  7393. var insertSliceSize=18;
  7394. var insertInterval=40;
  7395. 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};
  7396. if(Firebug.ignoreFirebugElements){ignoreVars[Firebug.Lite.Cache.ID]=1
  7397. }var memberPanelRep=isIE6?{"class":"memberLabel $member.type\\Label",href:"javacript:void(0)"}:{"class":"memberLabel $member.type\\Label"};
  7398. 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"})));
  7399. 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"))));
  7400. var SizerRow=TR({role:"presentation"},TD({width:"30%"}),TD({width:"70%"}));
  7401. var domTableClass=isIElt8?"domTable domTableIE":"domTable";
  7402. 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)
  7403. },onClick:function(event){if(!isLeftClick(event)){return
  7404. }var target=event.target||event.srcElement;
  7405. var row=getAncestorByClass(target,"memberRow");
  7406. var label=getAncestorByClass(target,"memberLabel");
  7407. if(label&&hasClass(row,"hasChildren")){var row=label.parentNode.parentNode;
  7408. this.toggleRow(row)
  7409. }else{var object=Firebug.getRepObject(target);
  7410. if(typeof(object)=="function"){Firebug.chrome.select(object,"script");
  7411. cancelEvent(event)
  7412. }else{if(event.detail==2&&!object){var panel=row.parentNode.parentNode.domPanel;
  7413. if(panel){var rowValue=panel.getRowPropertyValue(row);
  7414. if(typeof(rowValue)=="boolean"){panel.setPropertyValue(row,!rowValue)
  7415. }else{panel.editProperty(row)
  7416. }cancelEvent(event)
  7417. }}}}return false
  7418. },toggleRow:function(row){var level=parseInt(row.getAttribute("level"));
  7419. var toggles=row.parentNode.parentNode.toggles;
  7420. if(hasClass(row,"opened")){removeClass(row,"opened");
  7421. if(toggles){var path=getPath(row);
  7422. for(var i=0;
  7423. i<path.length;
  7424. ++i){if(i==path.length-1){delete toggles[path[i]]
  7425. }else{toggles=toggles[path[i]]
  7426. }}}var rowTag=this.rowTag;
  7427. var tbody=row.parentNode;
  7428. setTimeout(function(){for(var firstRow=row.nextSibling;
  7429. firstRow;
  7430. firstRow=row.nextSibling){if(parseInt(firstRow.getAttribute("level"))<=level){break
  7431. }tbody.removeChild(firstRow)
  7432. }},row.insertTimeout?row.insertTimeout:0)
  7433. }else{setClass(row,"opened");
  7434. if(toggles){var path=getPath(row);
  7435. for(var i=0;
  7436. i<path.length;
  7437. ++i){var name=path[i];
  7438. if(toggles.hasOwnProperty(name)){toggles=toggles[name]
  7439. }else{toggles=toggles[name]={}
  7440. }}}var value=row.lastChild.firstChild.repObject;
  7441. var members=getMembers(value,level+1);
  7442. var rowTag=this.rowTag;
  7443. var lastRow=row;
  7444. var delay=0;
  7445. while(members.length){with({slice:members.splice(0,insertSliceSize),isLast:!members.length}){setTimeout(function(){if(lastRow.parentNode){var result=rowTag.insertRows({members:slice},lastRow);
  7446. lastRow=result[1]
  7447. }if(isLast){row.removeAttribute("insertTimeout")
  7448. }},delay)
  7449. }delay+=insertInterval
  7450. }row.insertTimeout=delay
  7451. }}});
  7452. Firebug.DOMBasePanel=function(){};
  7453. Firebug.DOMBasePanel.prototype=extend(Firebug.Panel,{tag:DirTablePlate.tableTag,getRealObject:function(object){if(!object){return object
  7454. }if(object.wrappedJSObject){return object.wrappedJSObject
  7455. }return object
  7456. },rebuild:function(update,scrollTop){var members=getMembers(this.selection);
  7457. expandMembers(members,this.toggles,0,0);
  7458. this.showMembers(members,update,scrollTop);
  7459. if(!this.parentPanel){updateStatusBar(this)
  7460. }},showMembers:function(members,update,scrollTop){if(this.timeouts){for(var i=0;
  7461. i<this.timeouts.length;
  7462. ++i){this.context.clearTimeout(this.timeouts[i])
  7463. }delete this.timeouts
  7464. }if(!members.length){return this.showEmptyMembers()
  7465. }var panelNode=this.panelNode;
  7466. var priorScrollTop=scrollTop==undefined?panelNode.scrollTop:scrollTop;
  7467. var offscreen=update&&panelNode.firstChild;
  7468. var dest=offscreen?panelNode.ownerDocument:panelNode;
  7469. var table=this.tag.replace({domPanel:this,toggles:this.toggles},dest);
  7470. var tbody=table.lastChild;
  7471. var rowTag=DirTablePlate.rowTag;
  7472. var panel=this;
  7473. var result;
  7474. var timeouts=[];
  7475. var delay=0;
  7476. var renderStart=new Date().getTime();
  7477. while(members.length){with({slice:members.splice(0,insertSliceSize),isLast:!members.length}){timeouts.push(this.context.setTimeout(function(){if(!tbody.lastChild){return
  7478. }result=rowTag.insertRows({members:slice},tbody.lastChild);
  7479. if((panelNode.scrollHeight+panelNode.offsetHeight)>=priorScrollTop){panelNode.scrollTop=priorScrollTop
  7480. }},delay));
  7481. delay+=insertInterval
  7482. }}if(offscreen){timeouts.push(this.context.setTimeout(function(){if(panelNode.firstChild){panelNode.replaceChild(table,panelNode.firstChild)
  7483. }else{panelNode.appendChild(table)
  7484. }panelNode.scrollTop=priorScrollTop
  7485. },delay))
  7486. }else{timeouts.push(this.context.setTimeout(function(){panelNode.scrollTop=scrollTop==undefined?0:scrollTop
  7487. },delay))
  7488. }this.timeouts=timeouts
  7489. },showEmptyMembers:function(){FirebugReps.Warning.tag.replace({object:"NoMembersWarning"},this.panelNode)
  7490. },findPathObject:function(object){var pathIndex=-1;
  7491. for(var i=0;
  7492. i<this.objectPath.length;
  7493. ++i){if(this.getPathObject(i)===object){return i
  7494. }}return -1
  7495. },getPathObject:function(index){var object=this.objectPath[index];
  7496. if(object instanceof Property){return object.getObject()
  7497. }else{return object
  7498. }},getRowObject:function(row){var object=getRowOwnerObject(row);
  7499. return object?object:this.selection
  7500. },getRowPropertyValue:function(row){var object=this.getRowObject(row);
  7501. object=this.getRealObject(object);
  7502. if(object){var propName=getRowName(row);
  7503. if(object instanceof jsdIStackFrame){return Firebug.Debugger.evaluate(propName,this.context)
  7504. }else{return object[propName]
  7505. }}},onMouseMove:function(event){var target=event.srcElement||event.target;
  7506. var object=getAncestorByClass(target,"objectLink-element");
  7507. object=object?object.repObject:null;
  7508. if(object&&instanceOf(object,"Element")&&object.nodeType==1){if(object!=lastHighlightedObject){Firebug.Inspector.drawBoxModel(object);
  7509. object=lastHighlightedObject
  7510. }}else{Firebug.Inspector.hideBoxModel()
  7511. }},create:function(){this.context=Firebug.browser;
  7512. this.objectPath=[];
  7513. this.propertyPath=[];
  7514. this.viewPath=[];
  7515. this.pathIndex=-1;
  7516. this.toggles={};
  7517. Firebug.Panel.create.apply(this,arguments);
  7518. this.panelNode.style.padding="0 1px"
  7519. },initialize:function(){Firebug.Panel.initialize.apply(this,arguments);
  7520. addEvent(this.panelNode,"mousemove",this.onMouseMove)
  7521. },shutdown:function(){removeEvent(this.panelNode,"mousemove",this.onMouseMove);
  7522. Firebug.Panel.shutdown.apply(this,arguments)
  7523. },ishow:function(state){if(this.context.loaded&&!this.selection){if(!state){this.select(null);
  7524. return
  7525. }if(state.viewPath){this.viewPath=state.viewPath
  7526. }if(state.propertyPath){this.propertyPath=state.propertyPath
  7527. }var defaultObject=this.getDefaultSelection(this.context);
  7528. var selectObject=defaultObject;
  7529. if(state.firstSelection){var restored=state.firstSelection(this.context);
  7530. if(restored){selectObject=restored;
  7531. this.objectPath=[defaultObject,restored]
  7532. }else{this.objectPath=[defaultObject]
  7533. }}else{this.objectPath=[defaultObject]
  7534. }if(this.propertyPath.length>1){for(var i=1;
  7535. i<this.propertyPath.length;
  7536. ++i){var name=this.propertyPath[i];
  7537. if(!name){continue
  7538. }var object=selectObject;
  7539. try{selectObject=object[name]
  7540. }catch(exc){selectObject=null
  7541. }if(selectObject){this.objectPath.push(new Property(object,name))
  7542. }else{this.viewPath.splice(i);
  7543. this.propertyPath.splice(i);
  7544. this.objectPath.splice(i);
  7545. selectObject=this.getPathObject(this.objectPath.length-1);
  7546. break
  7547. }}}var selection=state.pathIndex<=this.objectPath.length-1?this.getPathObject(state.pathIndex):this.getPathObject(this.objectPath.length-1);
  7548. this.select(selection)
  7549. }},supportsObject:function(object){if(object==null){return 1000
  7550. }if(typeof(object)=="undefined"){return 1000
  7551. }else{if(object instanceof SourceLink){return 0
  7552. }else{return 1
  7553. }}},refresh:function(){this.rebuild(true)
  7554. },updateSelection:function(object){var previousIndex=this.pathIndex;
  7555. var previousView=previousIndex==-1?null:this.viewPath[previousIndex];
  7556. var newPath=this.pathToAppend;
  7557. delete this.pathToAppend;
  7558. var pathIndex=this.findPathObject(object);
  7559. if(newPath||pathIndex==-1){this.toggles={};
  7560. if(newPath){if(previousView){if(this.panelNode.scrollTop){previousView.scrollTop=this.panelNode.scrollTop
  7561. }var start=previousIndex+1,length=this.objectPath.length-start;
  7562. this.objectPath.splice(start,length);
  7563. this.propertyPath.splice(start,length);
  7564. this.viewPath.splice(start,length)
  7565. }var value=this.getPathObject(previousIndex);
  7566. if(!value){if(FBTrace.DBG_ERRORS){FBTrace.sysout("dom.updateSelection no pathObject for "+previousIndex+"\n")
  7567. }return
  7568. }for(var i=0,length=newPath.length;
  7569. i<length;
  7570. ++i){var name=newPath[i];
  7571. var object=value;
  7572. try{value=value[name]
  7573. }catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("dom.updateSelection FAILS at path_i="+i+" for name:"+name+"\n")
  7574. }return
  7575. }++this.pathIndex;
  7576. this.objectPath.push(new Property(object,name));
  7577. this.propertyPath.push(name);
  7578. this.viewPath.push({toggles:this.toggles,scrollTop:0})
  7579. }}else{this.toggles={};
  7580. var win=Firebug.browser.window;
  7581. if(object===win){this.pathIndex=0;
  7582. this.objectPath=[win];
  7583. this.propertyPath=[null];
  7584. this.viewPath=[{toggles:this.toggles,scrollTop:0}]
  7585. }else{this.pathIndex=1;
  7586. this.objectPath=[win,object];
  7587. this.propertyPath=[null,null];
  7588. this.viewPath=[{toggles:{},scrollTop:0},{toggles:this.toggles,scrollTop:0}]
  7589. }}this.panelNode.scrollTop=0;
  7590. this.rebuild()
  7591. }else{this.pathIndex=pathIndex;
  7592. var view=this.viewPath[pathIndex];
  7593. this.toggles=view.toggles;
  7594. if(previousView&&this.panelNode.scrollTop){previousView.scrollTop=this.panelNode.scrollTop
  7595. }this.rebuild(false,view.scrollTop)
  7596. }},getObjectPath:function(object){return this.objectPath
  7597. },getDefaultSelection:function(){return Firebug.browser.window
  7598. }});
  7599. var updateStatusBar=function(panel){var path=panel.propertyPath;
  7600. var index=panel.pathIndex;
  7601. var r=[];
  7602. for(var i=0,l=path.length;
  7603. i<l;
  7604. i++){r.push(i==index?'<a class="fbHover fbButton fbBtnSelected" ':'<a class="fbHover fbButton" ');
  7605. r.push("pathIndex=");
  7606. r.push(i);
  7607. if(isIE6){r.push(' href="javascript:void(0)"')
  7608. }r.push(">");
  7609. r.push(i==0?"window":path[i]||"Object");
  7610. r.push("</a>");
  7611. if(i<l-1){r.push('<span class="fbStatusSeparator">&gt;</span>')
  7612. }}panel.statusBarNode.innerHTML=r.join("")
  7613. };
  7614. var DOMMainPanel=Firebug.DOMPanel=function(){};
  7615. Firebug.DOMPanel.DirTable=DirTablePlate;
  7616. DOMMainPanel.prototype=extend(Firebug.DOMBasePanel.prototype,{onClickStatusBar:function(event){var target=event.srcElement||event.target;
  7617. var element=getAncestorByClass(target,"fbHover");
  7618. if(element){var pathIndex=element.getAttribute("pathIndex");
  7619. if(pathIndex){this.select(this.getPathObject(pathIndex))
  7620. }}},selectRow:function(row,target){if(!target){target=row.lastChild.firstChild
  7621. }if(!target||!target.repObject){return
  7622. }this.pathToAppend=getPath(row);
  7623. var valueBox=row.lastChild.firstChild;
  7624. if(hasClass(valueBox,"objectBox-array")){var arrayIndex=FirebugReps.Arr.getItemIndex(target);
  7625. this.pathToAppend.push(arrayIndex)
  7626. }this.select(target.repObject,true)
  7627. },onClick:function(event){var target=event.srcElement||event.target;
  7628. var repNode=Firebug.getRepNode(target);
  7629. if(repNode){var row=getAncestorByClass(target,"memberRow");
  7630. if(row){this.selectRow(row,repNode);
  7631. cancelEvent(event)
  7632. }}},name:"DOM",title:"DOM",searchable:true,statusSeparator:">",options:{hasToolButtons:true,hasStatusBar:true},create:function(){Firebug.DOMBasePanel.prototype.create.apply(this,arguments);
  7633. this.onClick=bind(this.onClick,this);
  7634. this.onClickStatusBar=bind(this.onClickStatusBar,this);
  7635. this.panelNode.style.padding="0 1px"
  7636. },initialize:function(oldPanelNode){Firebug.DOMBasePanel.prototype.initialize.apply(this,arguments);
  7637. addEvent(this.panelNode,"click",this.onClick);
  7638. this.ishow();
  7639. addEvent(this.statusBarNode,"click",this.onClickStatusBar)
  7640. },shutdown:function(){removeEvent(this.panelNode,"click",this.onClick);
  7641. Firebug.DOMBasePanel.prototype.shutdown.apply(this,arguments)
  7642. }});
  7643. Firebug.registerPanel(DOMMainPanel);
  7644. var getMembers=function getMembers(object,level){if(!level){level=0
  7645. }var ordinals=[],userProps=[],userClasses=[],userFuncs=[],domProps=[],domFuncs=[],domConstants=[];
  7646. try{var domMembers=getDOMMembers(object);
  7647. if(object.wrappedJSObject){var insecureObject=object.wrappedJSObject
  7648. }else{var insecureObject=object
  7649. }if(isIE&&isFunction(object)){addMember("user",userProps,"prototype",object.prototype,level)
  7650. }for(var name in insecureObject){if(ignoreVars[name]==1){continue
  7651. }var val;
  7652. try{val=insecureObject[name]
  7653. }catch(exc){if(FBTrace.DBG_ERRORS&&FBTrace.DBG_DOM){FBTrace.sysout("dom.getMembers cannot access "+name,exc)
  7654. }}var ordinal=parseInt(name);
  7655. if(ordinal||ordinal==0){addMember("ordinal",ordinals,name,val,level)
  7656. }else{if(isFunction(val)){if(isClassFunction(val)&&!(name in domMembers)){addMember("userClass",userClasses,name,val,level)
  7657. }else{if(name in domMembers){addMember("domFunction",domFuncs,name,val,level,domMembers[name])
  7658. }else{addMember("userFunction",userFuncs,name,val,level)
  7659. }}}else{var prefix="";
  7660. if(name in domMembers&&!(name in domConstantMap)){addMember("dom",domProps,(prefix+name),val,level,domMembers[name])
  7661. }else{if(name in domConstantMap){addMember("dom",domConstants,(prefix+name),val,level)
  7662. }else{addMember("user",userProps,(prefix+name),val,level)
  7663. }}}}}}catch(exc){throw exc;
  7664. if(FBTrace.DBG_ERRORS&&FBTrace.DBG_DOM){FBTrace.sysout("dom.getMembers FAILS: ",exc)
  7665. }}function sortName(a,b){return a.name>b.name?1:-1
  7666. }function sortOrder(a,b){return a.order>b.order?1:-1
  7667. }var members=[];
  7668. members.push.apply(members,ordinals);
  7669. Firebug.showUserProps=true;
  7670. Firebug.showUserFuncs=true;
  7671. Firebug.showDOMProps=true;
  7672. Firebug.showDOMFuncs=true;
  7673. Firebug.showDOMConstants=true;
  7674. if(Firebug.showUserProps){userProps.sort(sortName);
  7675. members.push.apply(members,userProps)
  7676. }if(Firebug.showUserFuncs){userClasses.sort(sortName);
  7677. members.push.apply(members,userClasses);
  7678. userFuncs.sort(sortName);
  7679. members.push.apply(members,userFuncs)
  7680. }if(Firebug.showDOMProps){domProps.sort(sortName);
  7681. members.push.apply(members,domProps)
  7682. }if(Firebug.showDOMFuncs){domFuncs.sort(sortName);
  7683. members.push.apply(members,domFuncs)
  7684. }if(Firebug.showDOMConstants){members.push.apply(members,domConstants)
  7685. }return members
  7686. };
  7687. function expandMembers(members,toggles,offset,level){var expanded=0;
  7688. for(var i=offset;
  7689. i<members.length;
  7690. ++i){var member=members[i];
  7691. if(member.level>level){break
  7692. }if(toggles.hasOwnProperty(member.name)){member.open="opened";
  7693. var newMembers=getMembers(member.value,level+1);
  7694. var args=[i+1,0];
  7695. args.push.apply(args,newMembers);
  7696. members.splice.apply(members,args);
  7697. expanded+=newMembers.length;
  7698. i+=newMembers.length+expandMembers(members,toggles[member.name],i+1,level+1)
  7699. }}return expanded
  7700. }function isClassFunction(fn){try{for(var name in fn.prototype){return true
  7701. }}catch(exc){}return false
  7702. }var hasProperties=function hasProperties(ob){try{for(var name in ob){return true
  7703. }}catch(exc){}if(isFunction(ob)){return true
  7704. }return false
  7705. };
  7706. FBL.ErrorCopy=function(message){this.message=message
  7707. };
  7708. var addMember=function addMember(type,props,name,value,level,order){var rep=Firebug.getRep(value);
  7709. var tag=rep.shortTag?rep.shortTag:rep.tag;
  7710. var ErrorCopy=function(){};
  7711. var valueType=typeof(value);
  7712. var hasChildren=hasProperties(value)&&!(value instanceof ErrorCopy)&&(isFunction(value)||(valueType=="object"&&value!=null)||(valueType=="string"&&value.length>Firebug.stringCropLength));
  7713. props.push({name:name,value:value,type:type,rowClass:"memberRow-"+type,open:"",order:order,level:level,indent:level*16,hasChildren:hasChildren,tag:tag})
  7714. };
  7715. var getWatchRowIndex=function getWatchRowIndex(row){var index=-1;
  7716. for(;
  7717. row&&hasClass(row,"watchRow");
  7718. row=row.previousSibling){++index
  7719. }return index
  7720. };
  7721. var getRowName=function getRowName(row){var node=row.firstChild;
  7722. return node.textContent?node.textContent:node.innerText
  7723. };
  7724. var getRowValue=function getRowValue(row){return row.lastChild.firstChild.repObject
  7725. };
  7726. var getRowOwnerObject=function getRowOwnerObject(row){var parentRow=getParentRow(row);
  7727. if(parentRow){return getRowValue(parentRow)
  7728. }};
  7729. var getParentRow=function getParentRow(row){var level=parseInt(row.getAttribute("level"))-1;
  7730. for(row=row.previousSibling;
  7731. row;
  7732. row=row.previousSibling){if(parseInt(row.getAttribute("level"))==level){return row
  7733. }}};
  7734. var getPath=function getPath(row){var name=getRowName(row);
  7735. var path=[name];
  7736. var level=parseInt(row.getAttribute("level"))-1;
  7737. for(row=row.previousSibling;
  7738. row;
  7739. row=row.previousSibling){if(parseInt(row.getAttribute("level"))==level){var name=getRowName(row);
  7740. path.splice(0,0,name);
  7741. --level
  7742. }}return path
  7743. };
  7744. Firebug.DOM=extend(Firebug.Module,{getPanel:function(){return Firebug.chrome?Firebug.chrome.getPanel("DOM"):null
  7745. }});
  7746. Firebug.registerModule(Firebug.DOM);
  7747. var lastHighlightedObject;
  7748. function DOMSidePanel(){}DOMSidePanel.prototype=extend(Firebug.DOMBasePanel.prototype,{selectRow:function(row,target){if(!target){target=row.lastChild.firstChild
  7749. }if(!target||!target.repObject){return
  7750. }this.pathToAppend=getPath(row);
  7751. var valueBox=row.lastChild.firstChild;
  7752. if(hasClass(valueBox,"objectBox-array")){var arrayIndex=FirebugReps.Arr.getItemIndex(target);
  7753. this.pathToAppend.push(arrayIndex)
  7754. }var object=target.repObject;
  7755. if(instanceOf(object,"Element")){Firebug.HTML.selectTreeNode(ElementCache(object))
  7756. }else{Firebug.chrome.selectPanel("DOM");
  7757. Firebug.chrome.getPanel("DOM").select(object,true)
  7758. }},onClick:function(event){var target=event.srcElement||event.target;
  7759. var repNode=Firebug.getRepNode(target);
  7760. if(repNode){var row=getAncestorByClass(target,"memberRow");
  7761. if(row){this.selectRow(row,repNode);
  7762. cancelEvent(event)
  7763. }}},name:"DOMSidePanel",parentPanel:"HTML",title:"DOM",options:{hasToolButtons:true},isInitialized:false,create:function(){Firebug.DOMBasePanel.prototype.create.apply(this,arguments);
  7764. this.onClick=bind(this.onClick,this)
  7765. },initialize:function(){Firebug.DOMBasePanel.prototype.initialize.apply(this,arguments);
  7766. addEvent(this.panelNode,"click",this.onClick);
  7767. var selection=ElementCache.get(FirebugChrome.selectedHTMLElementId);
  7768. if(selection){this.select(selection,true)
  7769. }},shutdown:function(){removeEvent(this.panelNode,"click",this.onClick);
  7770. Firebug.DOMBasePanel.prototype.shutdown.apply(this,arguments)
  7771. },reattach:function(oldChrome){this.toggles=oldChrome.getPanel("DOMSidePanel").toggles
  7772. }});
  7773. Firebug.registerPanel(DOMSidePanel)
  7774. }});
  7775. FBL.FBTrace={};
  7776. (function(){var traceOptions={DBG_TIMESTAMP:1,DBG_INITIALIZE:1,DBG_CHROME:1,DBG_ERRORS:1,DBG_DISPATCH:1,DBG_CSS:1};
  7777. this.module=null;
  7778. this.initialize=function(){if(!this.messageQueue){this.messageQueue=[]
  7779. }for(var name in traceOptions){this[name]=traceOptions[name]
  7780. }};
  7781. this.sysout=function(){return this.logFormatted(arguments,"")
  7782. };
  7783. this.dumpProperties=function(title,object){return this.logFormatted("dumpProperties() not supported.","warning")
  7784. };
  7785. this.dumpStack=function(){return this.logFormatted("dumpStack() not supported.","warning")
  7786. };
  7787. this.flush=function(module){this.module=module;
  7788. var queue=this.messageQueue;
  7789. this.messageQueue=[];
  7790. for(var i=0;
  7791. i<queue.length;
  7792. ++i){this.writeMessage(queue[i][0],queue[i][1],queue[i][2])
  7793. }};
  7794. this.getPanel=function(){return this.module?this.module.getPanel():null
  7795. };
  7796. this.logFormatted=function(objects,className){var html=this.DBG_TIMESTAMP?[getTimestamp()," | "]:[];
  7797. var length=objects.length;
  7798. for(var i=0;
  7799. i<length;
  7800. ++i){appendText(" ",html);
  7801. var object=objects[i];
  7802. if(i==0){html.push("<b>");
  7803. appendText(object,html);
  7804. html.push("</b>")
  7805. }else{appendText(object,html)
  7806. }}return this.logRow(html,className)
  7807. };
  7808. this.logRow=function(message,className){var panel=this.getPanel();
  7809. if(panel&&panel.panelNode){this.writeMessage(message,className)
  7810. }else{this.messageQueue.push([message,className])
  7811. }return this.LOG_COMMAND
  7812. };
  7813. this.writeMessage=function(message,className){var container=this.getPanel().containerNode;
  7814. var isScrolledToBottom=container.scrollTop+container.offsetHeight>=container.scrollHeight;
  7815. this.writeRow.call(this,message,className);
  7816. if(isScrolledToBottom){container.scrollTop=container.scrollHeight-container.offsetHeight
  7817. }};
  7818. this.appendRow=function(row){var container=this.getPanel().panelNode;
  7819. container.appendChild(row)
  7820. };
  7821. this.writeRow=function(message,className){var row=this.getPanel().panelNode.ownerDocument.createElement("div");
  7822. row.className="logRow"+(className?" logRow-"+className:"");
  7823. row.innerHTML=message.join("");
  7824. this.appendRow(row)
  7825. };
  7826. function appendText(object,html){html.push(escapeHTML(objectToString(object)))
  7827. }function getTimestamp(){var now=new Date();
  7828. var ms=""+(now.getMilliseconds()/1000).toFixed(3);
  7829. ms=ms.substr(2);
  7830. return now.toLocaleTimeString()+"."+ms
  7831. }var HTMLtoEntity={"<":"&lt;",">":"&gt;","&":"&amp;","'":"&#39;",'"':"&quot;"};
  7832. function replaceChars(ch){return HTMLtoEntity[ch]
  7833. }function escapeHTML(value){return(value+"").replace(/[<>&"']/g,replaceChars)
  7834. }function objectToString(object){try{return object+""
  7835. }catch(exc){return null
  7836. }}}).apply(FBL.FBTrace);
  7837. FBL.ns(function(){with(FBL){if(!Env.Options.enableTrace){return
  7838. }Firebug.Trace=extend(Firebug.Module,{getPanel:function(){return Firebug.chrome?Firebug.chrome.getPanel("Trace"):null
  7839. },clear:function(){this.getPanel().panelNode.innerHTML=""
  7840. }});
  7841. Firebug.registerModule(Firebug.Trace);
  7842. function TracePanel(){}TracePanel.prototype=extend(Firebug.Panel,{name:"Trace",title:"Trace",options:{hasToolButtons:true,innerHTMLSync:true},create:function(){Firebug.Panel.create.apply(this,arguments);
  7843. this.clearButton=new Button({caption:"Clear",title:"Clear FBTrace logs",owner:Firebug.Trace,onClick:Firebug.Trace.clear})
  7844. },initialize:function(){Firebug.Panel.initialize.apply(this,arguments);
  7845. this.clearButton.initialize()
  7846. }});
  7847. Firebug.registerPanel(TracePanel)
  7848. }});
  7849. FBL.ns(function(){with(FBL){var modules=[];
  7850. var panelTypes=[];
  7851. var panelTypeMap={};
  7852. var parentPanelMap={};
  7853. var registerModule=Firebug.registerModule;
  7854. var registerPanel=Firebug.registerPanel;
  7855. append(Firebug,{extend:function(fn){if(Firebug.chrome&&Firebug.chrome.addPanel){var namespace=ns(fn);
  7856. fn.call(namespace,FBL)
  7857. }else{setTimeout(function(){Firebug.extend(fn)
  7858. },100)
  7859. }},registerModule:function(){registerModule.apply(Firebug,arguments);
  7860. modules.push.apply(modules,arguments);
  7861. dispatch(modules,"initialize",[]);
  7862. if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.registerModule")
  7863. }},registerPanel:function(){registerPanel.apply(Firebug,arguments);
  7864. panelTypes.push.apply(panelTypes,arguments);
  7865. for(var i=0,panelType;
  7866. panelType=arguments[i];
  7867. ++i){if(panelType.prototype.name=="Dev"){continue
  7868. }panelTypeMap[panelType.prototype.name]=arguments[i];
  7869. var parentPanelName=panelType.prototype.parentPanel;
  7870. if(parentPanelName){parentPanelMap[parentPanelName]=1
  7871. }else{var panelName=panelType.prototype.name;
  7872. var chrome=Firebug.chrome;
  7873. chrome.addPanel(panelName);
  7874. var onTabClick=function onTabClick(){chrome.selectPanel(panelName);
  7875. return false
  7876. };
  7877. chrome.addController([chrome.panelMap[panelName].tabNode,"mousedown",onTabClick])
  7878. }}if(FBTrace.DBG_INITIALIZE){for(var i=0;
  7879. i<arguments.length;
  7880. ++i){FBTrace.sysout("Firebug.registerPanel",arguments[i].prototype.name)
  7881. }}}})
  7882. }});
  7883. FBL.ns(function(){with(FBL){FirebugChrome.Skin={CSS:'.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;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;}#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;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 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">&nbsp;</a><a id="fbWindow_btDetach" class="fbSmallButton fbHover" title="Open Firebug in popup window">&nbsp;</a><a id="fbWindow_btClose" class="fbSmallButton fbHover" title="Minimize Firebug">&nbsp;</a></div><div id="fbToolbar"><div id="fbToolbarContent"><span id="fbToolbarIcon"><a id="fbFirebugButton" class="fbIconButton" class="fbHover" target="_blank">&nbsp;</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">&nbsp;</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">&nbsp;</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">&gt;&gt;&gt;</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">2 errors</span></span></span>'}
  7884. }});
  7885. FBL.initialize()
  7886. })();