HTML::Dojo::src


HTML-Dojo documentation Contained in the HTML-Dojo distribution.

Index


Code Index:

__CPAN_FILE__ src/widget/templates/images/dpYearBg.gif GIF89atutssrst!,pPC+x͋ ; __CPAN_FILE__ src/widget/templates/images/treenode_grid_x.gif GIF89arrr!,t3`; __CPAN_FILE__ src/widget/templates/images/dpBg.gif GIF89akwyy{zĀŭև׃~|vvЅՄ{ƌ~̆֏ˁ̓y|Ɠ{w늫܂xڐ撵xڈُㅥԎⅤvʇ}Njލᐲ冦u{Ē胣|ƂЍ⑳独݁ϑ男~ˊ}vwxzÁ}!,kgB &9A>%4*,=372?!E($)0 5+-I:

<"@LD/C FM1 ;8K'J#HG.6; __CPAN_FILE__ src/widget/templates/images/dpHorizLine.gif GIF89a!, ; __CPAN_FILE__ src/widget/templates/images/dpVertLine.gif GIF89ay!,D\; __CPAN_FILE__ src/widget/templates/images/slider-bg.gif GIF89a>Mcdxqdseu[n`pyYlBQisHXrzqih}]ok}EVoDTlrJ[v@PfWjlXk^n}Tfv\pf{VjvCSjnvfu_rFVoatWgk}ZmeyhxbroetxZkPa|GXpl?Nd?Ne>LbbvxfxUg~_s=LbtcwWjVij|rdx?MdcsXk`D$^0Ap\] p>o>b``lHɨh^:6nllEl^PQh^<l E N]``T``d@.PQx^< p@@H^$^,fh0 lf::nfoffh0 agTSfi!\,0Z*\ȰÇ#JHŋ3jȱ#B *<p˗0cʜI͛8sɳϟ@ )%1HXB!DZXJիXjʵׯ`ÊKٳ`D Ipd˷߿ LÈ+^̸@СH*2Nx0,CMӨS^ͺװc˞MPhC#8`Cȓ+_μУKNسknD)J|+(!BdYϾ˟OϿ EPR@; __CPAN_FILE__ src/widget/templates/images/soriaButton-l.gif GIF89a6w헼혽zą!,6w@pH,Ȥl:Шt*uجvzxL.4ڕj|N~~.%. ....-..... .  (Ѕ*\ȰÆ.HHŋ3bt1Ǐ CIr (S\ɲ˗.]I͛8sb@ J(Q!*]ʴӧP@AիXjݪ`ÊKٲ.]˶۷puQݻxw LÆ]X̸ǐ#K‚˘3k̹3gBMӨO0װc˞-ۅ۸sͻ. Nȓ#wqУKN} سkν]OӫOB˟O>}Ͽh& F(Vha.|v  h(,0(4h6Ž<@)d.`H&L6dNF)JBIXV[ZQz ZifbIfjf\ gryevNga馟_ 蒂t"e"Z))٩*Y(럯J9kښk6ykZlk"lJ[N{gV-F6;*; __CPAN_FILE__ src/widget/templates/images/soriaDisabled-r.gif GIF89a6w!,6w@pH,dl:Шt* جvzxLzn3|NC~x}!!!!! !! !!! H!2(\ȰÇ#B qŋ3jq#Ŏ Cɓ(S\ɲ%bʜI͛8o@ *ԁH*]ʴӦFJJuXjʵׯ^LKٳhӪM۷pʝK.] ˷߿L<(^̸ǐ#Cvp˘3kyCMӦ?^ͺ5i b˞M۸oͻ(Nȓ#wPУKN}:سkËO<ӫ_/˟O~蟀_w` -aN`anȜ!~_"*X'"Hbb/vc.8B3/Ȣ)y%)"ɡ2iB RIYɠ(b*z&iy٢ 24깧7'Y'#*j'cꨜ(a饘"; __CPAN_FILE__ src/widget/templates/images/tab_left_r_curr.gif GIF89a #碽fx؎hdb!#, hH #RD68eV)֪zvghZFo9wx^|u\{dtkI!!!!!   #  # #^ABNp!D ; __CPAN_FILE__ src/widget/templates/images/treenode_expand_minus.gif GIF89aI999DDDĀ}y!I,IHHH7%,.0?('F+&9!)=$H4*:C H< " E;A8Dz 6G2  HD/5 B-#3 @1>; __CPAN_FILE__ src/widget/templates/images/no.svg <?xml version="1.0" encoding="utf-8"?> <!-- Generator: Adobe Illustrator 12.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [ <!ENTITY ns_svg "http://www.w3.org/2000/svg"> <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> ]> <svg version="1.1" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="15.433" height="15.433" viewBox="0 0 15.433 15.433" overflow="visible" enable-background="new 0 0 15.433 15.433" xml:space="preserve"> <circle fill="none" stroke="#D02026" stroke-width="2" cx="7.716" cy="7.716" r="6.716"/> <line fill="none" stroke="#D02026" stroke-width="2" x1="3.02" y1="12.352" x2="12.639" y2="2.732"/> </svg>

__CPAN_FILE__ src/widget/templates/images/tab_top_right.gif GIF89a,7bdӨh|ٹ뎯߁k잽挰勰!7,,@pH,Ȥrl:ШtJZجvp.V)zn|N~0-%c2(7)74!HxP@*\ȰÇ#JHŋ3jȱEIɓ(S\ɲ˗0cʜI͛8sI@ JѣH*]ʴӧPJJիXNׯ`ÊKY\Ϫ]˶۷p&M+ݻxUKw߿ wÈ+fZxǐ#m,˘R̹gΛ?MzpҨSv{zװMmo;7GNxƓ+?|yCNسwË>yϫ~˧'' mhj i .`g>(eNhc^!bna`~(^!hd'Y*ȗ0Jb4~5c8buc<n~J IE@)$N>IdRIe=^eZnYc^f.Ifybjf ryavNg~y`Hh~.z_iMJz^z^i} w m*vJd sΊ[֊qʟR o Km.KSB;dҺFm]-jnˠ\cX.䞛Y^nBFo݋bˡn,b Fpp kpAlEqr]1\o̚ǀ`"X'r+2/3\7s;3?cDmH'L7PG-TW`q\w`-dmhlp-t׍*@߀.n'7G.Wn9+Pt砇.褗n騧ꬷ.n1\pC/o'7G/W߼w/o觯/ HL:h ̠7z GH(L W0L! D8̡w@ H"HL&:H*ZX̢.z` H2hLXFpH:x̣> IB$F:򑐌$'IJZ̤&7Nz (GIR~H*WV򕰌,gIZ̥.w^ 0y L2f:Ќ4IjZ̦6nz@IrL:v<Iz̧>O{@JЂMBІ:D'JъZDюz HGJҒt=JWҖ0)BS*Ӛ8ͩNOJӝ@PmӡHMRZԥ:PL*ժZX(Uծz5[XJVhMZ[zֵph[J׺s^ ׼_KJuMb:8m,d'KYJ,H/zVhCњ--jWZղu-lg Y-nw Xw-pW=rǚ:}tZשսvzxswMW˫Խ=l|]콯~A40SL`lEU &0# S~3ar0+&N/SlX.~wc,cҸֽ1;>V.l!yF>o2ɷ}2g+)V^-|-sy^rk<0f>slլ4n~sm8yvsn<~so]@z>tp]aF7ю+#ISztZ3ruoEO>5XU}bV7ծn YCֶo]'׾n a-6e<s-R56cmNp<nr{Fwnv;r; __CPAN_FILE__ src/widget/templates/images/dpYearBg.png PNG

IHDRe̟tEXtSoftwareAdobe ImageReadyqe<0IDATHKc, GYQ(k5yk.Y;a~kmXi_6OhIENDB` __CPAN_FILE__ src/widget/templates/images/soriaDisabled-c.gif GIF89a6w!,6wpH,dl:Шt:%Xجvz*(zn@~u H*\0#JHE2jȱǏ AvIɓ(ST ˗0cʜI͛8s@ :4ѣH*]ʴiS PJJիWhʵׯ`ÊK٭Ҫ]˶۷p^Kݻx՛߿ LÈeǐ#KL˘[̹ϠC=ӨS^ͺװcn@۸sͻkNȓ+_μУKNسkνËOӫ_Ͼ˟OϿ(h& 6F(Vhfv!A; __CPAN_FILE__ src/widget/templates/images/dropdownButtonsArrow.gif GIF89a/?Z!, [; __CPAN_FILE__ src/widget/templates/images/dpMonthBg.png PNG

IHDR@tEXtSoftwareAdobe ImageReadyqe<KIDATH+ Bvpn+dG:\8Ց*H`sdOT.%qцaAQ0lAIENDB` __CPAN_FILE__ src/widget/templates/images/tab_close.gif GIF89a ^^ccXXTTEEꅅbbaa\\__VV}}XX[[SSddkkhhkkPPNNOO{{{{NNQQ\\HHJJppiiKKeehhggGGXXHHrrddjjFF__烃gg肂MM!, U@pHގȤvN t[Rh&!n4P{X`L$N)0 "i2 -1i+6#*iIEBA; __CPAN_FILE__ src/widget/templates/images/slider-bg-vert.gif GIF89aQb||wOa|xtx^twVjlbyN`{Xmrdx|m~ng}mewL]xVg^tk|Yjzd{rzh}f|avyrI[uqj~xj|lxvldz[pl}j~pi~by|gz{Sd~i|Zjn~}zbrzuf{zkwjdvr||]pTe~UibwrM_zwule|h|vc{\m~tZpasfxbuWhbthzWhRc}Uf`rgyh~i{`scz_uPa|\rXi`wi]snVfou{ocwh{WiizosqtnnkyXibtj{svcu~k^sqaxunydzawcvpqbslcu`uh~~g|pptjkcyqg~ti~iz}`v~~~ofy~weyo]rtGXqmnfys?OedwSc~EUm@Of_uaruvi}yaxRfSg}[qu[kgyhrkn\r\spfwu`p!,fv #@ 0 ˜CNKqNhVǟ0A l 1HiM R D5o҄YN>sTHg:Hptxx TRZ՚ժ]~v8vmj}V[wҝkm3}NT'W lq Syʊ\A3gχkT EѤM.}z4ժ+y-vҗDFۀ(-z^7+*r͟Ggbv }.~;ї:}#tWV,;4b`G :a.HZ(a>!!l%H"br 2XK؈9n Ǎ=>IKiSJ QN)YDȕY %Zr&^RC7yfjfm 7)goc 瞍I"zC9VH2I@*)NZif)j:jj S$#zkf(@M* k(ˬP, `-ښ1~mz[3@=ڠM8:l+/[o/2?+0\p(\o30E0D"kqoܱ {<Ǐ#rL22s6Ls s?[EFJ(E;4$HtScJ./2[wu^%esB-i6_q!w#B}7~N^84U8?_ycny1 n:b zNz<&'< G?}S}PR(@ޟ_-\Ͼ퇿~̯Lp (_'?& |`@:~80Arpq > B! KBЅ-d S8n@+p=!H}! 1ED"#2шIdȠ)|br0wAv#h5* TЍ; __CPAN_FILE__ src/widget/templates/images/slider-button-vert.png PNG

IHDRLef,tEXtCreation TimeFri 23 Jun 2006 09:31:26 -0500btIME 1x pHYsiTSgAMA aEPLTE{{Ƅƥs{眽{քքތ猭猭֔֜egtRNS@fIDATxe KIi?ՀbfÑ0 OuDE^3 n9T$Mrڳ[[=\OM@, =(,sZ!,'S}dӉBNVZ]ʣ9.*S?On42~+ad o G&IENDB` __CPAN_FILE__ src/widget/templates/images/soriaButton-r.gif GIF89a6wz{ơ싳퐶햻}|{|~{~Dž!,6w@pH,dl:Шt*جvzxL.4Fh|N2~~0 0%000.0000'0)0(0 (*\ȰÆ0FHHŋ3bǏ CIr (S\ɲ˗.gI͛8s9@ J(**]ʴӧP AիXjݪ5`ÊKٲ1]˶۷pѢݻxwo  LÆc<X̸ǐ#KC˘3k̹3,BMӨOPװc˞-[۸sͻ2Nȓ#УKN}سkνeOӫO/À˟O>!ϿWh& F(Vha@v bh(,0(4h6P<@)d`H&L6dNF)JBIXV[ZQz ZifbIfjf\ gryevNga馟_ 蒂t"e"Z))٩*Y(럯J9kښk6ykZlk"lJ[N{gV-F6;*"; __CPAN_FILE__ src/widget/templates/images/soriaAccordionSelected.gif GIF89a훾!, 1JŻ; __CPAN_FILE__ src/widget/templates/images/slider.gif GIF89a111!,>H*`!>LD ^ĘF? 9cD%O Ʉ[P`@; __CPAN_FILE__ src/widget/templates/images/tab_bot_left_curr.gif GIF89a #碽fx؎hdb!#, hH #RD68eV)֪zvghZFo9wx^|u\{dtkI!!!!!   #  # #^ABNp!D ; __CPAN_FILE__ src/widget/templates/images/soriaPressed-l.gif GIF89a6w싵픹핾퇲툲zć텮!,6wBBB5B7B3B B&B!BB;B1b*\p#JHŋȱǏ C qɓ(? ˗0cʜ)s%͛8s⣧ϟ@ Jt(ϢH*ztӧLAHJիXbׯ`ÊKv,ײhӪ{v۷lʕ+ݻx˷/_!@ LÈN̸‹K eBrh̹ϠC2ӨS^z5ְcNz۴q]{oBNȓ#ƙCN=zץc\;?OӣR˟O>(h ~ ?4F(N(Dfn!$h(*'4X7ʈ.6)dBaH&L6dNF)JBIXV[ZQz ZifbIfjf\ gryevNga矀*蠄J&袃 !£F*餔Vji馜v駠 *jꩨꪬ* *무j뭶 î+lB `&6ˬD+Vk^+v+ Aù覫nBH k拯,,' 7 WlgqB ,$L,0,4l8: @-DmtBL7PG/TmXg\o- `-dmf 1lp-wB `x|ͷ .n.D 7G. gwyB 褗n騧.. o'|B\G/WO=dw/Ī o觯 A/oB( PL 'H Z6z C( (L WP gH8"@ (D!HL&:BH*ZX".z; __CPAN_FILE__ src/widget/templates/images/slider-button.png PNG

IHDRE,tEXtCreation TimeSat 24 Jun 2006 18:44:01 -0500dtIME,.f pHYsiTSgAMA aEPLTE{s{{{քބ֌焜ƄΌ猭ޔ֥tRNS@fvIDATx] :TD~%%",:rux#l_@u)Ρ-h ,G+fuuf<GK,#j%𫣻,zZ=.B %IENDB` __CPAN_FILE__ src/widget/templates/images/soriaDisabled-l.gif GIF89a6w!,6wpH,Ȥl:Шt*جvz֯xL~zn3|N?~x}  H (\ȰÇ#Bŋ3jq#Ŏ CAɓ(S\ɲ%bʜI͛8o~@ *CH*]ʴӦFJJu Xjʵׯ^?DKٳhӪM۷pʝK. ˷߿L*(^̸ǐ#Cࡲ˘3kyCMӦ?^ͺ5 b˞M۸oͻ6Nȓ#УKN}:سkaËO<ӫ_/˟O~蟀_w` -aN`anț!~_"*X'"Hbb/vc.B3/Ȣ)y%)"ɡ2iB RIYɠ(b*z&iy٢ 24깧7'Y'#*j'cꨜJTjH; __CPAN_FILE__ src/widget/templates/images/dateIcon.gif GIF89a"Aq&J9aJdp@[:e9c+Iw2N{0S1T!ApOs2W.Y!,pH,  ,1smѮlvŪ`)Z6` f:ŖYkP h *4**~{_acegik]v(4(4(({y4${( #nft|~*%u.!Q"/'&Q1M 2HA; __CPAN_FILE__ src/widget/templates/images/decrementMonth.png PNG

IHDR  l\gAMAOX2tEXtSoftwareAdobe ImageReadyqe<PLTE):K"@*tRNS0J&IDATxb`D c<c< ~7:ľIENDB` __CPAN_FILE__ src/widget/templates/images/floatingPaneMaximize.gif GIF89aprqy֖꙼}٠ݨm뎲᛿틯nolvәrqqol퉮䖹뀦lrk):K!,IF I<H<4B4<.< @ <.7I <A< 9I<J<I0+J+0&''&8I=5JKJ5= I=SOBZ A@K4$ѣ =^8P/zLБdD t$#T$A#CfJhJH!PJ*4W\B DҪ]F deTDR;˷_,La,; __CPAN_FILE__ src/widget/templates/images/scBackground.gif GIF89atwzus~y|xքӁvs}s{Œ闻yuv˅Յx|ƛuۃwr˖z{ćׂπ̂Д뚿̘}|ʍካxtrtؚv~~ʋދޚ擶꛿菱䆧׀vyŠ݅{Ŕ؎w}ɕ픸쓶둴瘽t焣ә߄Ґ卮!,YY00jjMMJJ//ddDDii##bb33oo;;&&==<<^^__XX..``LLNNaaggKKmmeeOO@@[[>88nncckkIIHHUU99 4411ZZCC**PP SSVV hhl؄-ZXxb"b`@⃋DaB 3Yƍ#G1e.bʬQ͛rvaCϟWQ*MJJHʡ*X׮\+H h/4XVp(?Xkaݻv_fA+vq $"; __CPAN_FILE__ src/widget/templates/images/transparent.gif GIF89a((gԈ0Ԉ*2! $02H!`L2H!`$h82dtu꼐xqu!u,!`@$@(z ,tH(@ H 悰@L@! \Qm!X鄑QH!X頑QHmD0! Ԉ0l !`@Gi  Q 8mGn8Gi(qՆ`xpm !`đ !` bbPGi(DpmGn8Gi(hGi(Gi(P \ pDGi(ccEGGn8IltII悰!,((CH*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8 ; __CPAN_FILE__ src/widget/templates/images/incrementMonth.gif GIF89a헵prЀ}ʲ^xܥ>Rj,=O5H]Ϙ):K!,% dHXIŨPĔNu]E8#Y*! ; __CPAN_FILE__ src/widget/templates/images/dpCurveTR.png PNG

IHDRJtEXtSoftwareAdobe ImageReadyqe<IDATx͹mAQ&r=nы^`\% `M 8t4\_o7k}?vIAH64XG!UyHU3#&%H#""Hwv*δrGړ"@ @ @ @ @ ow@ @ @ @ gA`dHIENDB` __CPAN_FILE__ src/widget/templates/images/dpCurveBR.png PNG

IHDRJtEXtSoftwareAdobe ImageReadyqe<IDATxй@@Q;+ Nie &CHvFIy2O@ @ @ @ @ @ @ @ @  ,ΐDNmdT@%ͫCndiI.h}gtߵ575춫IENDB` __CPAN_FILE__ src/widget/templates/images/treenode_grid_y.gif GIF89arrr!,t3Xv[}j; __CPAN_FILE__ src/widget/templates/images/soriaPressed-r.gif GIF89a6wzĆ싵틲햿툰툰슴쐹{{|}{{|~~NJ퉳텮!,6wAAA:AA&@(@@#@ ¡*\p!#JHŋȱǏ C qɓ(?˗0cʜ)s%͛8sϟ@ Jt(ϢH*ztӧL)HJիXbׯ`ÊKv,ײhӪ{v۷lʕ dݻx˷/_ K LÈN̸‹K e@^h̹ϠC¤ӨS^zְcVz۴q]{CNȓ#ƙCN=zץc\;Oӣ᤽˟O(h ~ I4F(NCfn>!$h(*'4X7ʈ.6)d?@aH&L6dNF)JBIXV[ZQz ZifbIfjf\ gryevNga矀*蠄J&袃PF*餔Vji?L馜v駠 jꩨꪬC*무j뭶`+lD`&6,7D+Vk^Kv+ù覫nD k/, D ' 7qWlgq@ ,$Lr3,04l8:A@-DmtAL7PGu)TmXg\oD`-dmflp-wA`x|w2.n^ 7G.gwyE( 褗n騧.. o'|BG/WOdw/o觯 /oB L 'H Z6z C((L WP0 gH8r@ (#\HL&:FH*ZX".z; __CPAN_FILE__ src/widget/templates/images/tab_bot_right_curr.gif GIF89a"bhڹ뢽i|d!",pH,Ȥrl:ШtJZجv[pxL.h7n|\~gyNwWp[J¥Ǘ̉{ocX{ H[L†?=HĊ#]QƎ } IȒ(+\ $˗~`ʤr05oԒs.?)(FANBjt*UV̪u'׮7)v,̲fYMr-ےn߆+#ݺ⭨woľ~p0ႆLC'yrʖaΜn3s? -:P=Z`}-;pwS-<7=W^9uX֯ʮ]{;mOi=L'2>}ICʯ$G !(H  G >8EH!^HGa( }HbL'"+.֢/:3FV7R&<@)DiH&L6PF)T: @Xf\v`)dihlpƹ&ix|矀*蠄j衈&袌6( 餔Vj饘f馜v駠*ꨤjꩨꪥ@*무j뭸뮼+k 6F+Vkfv+-+k,\' 7G,Wlgw gl(,0,4l8<8DmH'L7PG-TWmXg\S$ dmhlp-tmxs[ .n'7G.Wng9D"4 褗n騧ꬷ.n;W@ <o'7G/Wogw@ A; __CPAN_FILE__ src/widget/templates/images/bar.gif GIF89a#8꒶匰攸阻爬✿䎲菳艭㖹썱畸ᄨߚ吳阼~ڒݡ►ᅪߙ懫⏳郧ޓ|zօ꛾vӜߧ쒵ꁦ݀܃ޚy֙xՏ恦ܦ㊯䂧ށܨᎱ眿}ّꕹprs{{؀ۈwԌuҘwӊ~وڊ傧݉xzwԃptrПۛuѡ勯qϝ~yyqϒ䑴醫ۥ{}يޖ툫₦ތrϟvvuӓ۠tѢsѦ}}٩ts||َ菴銮uyՂo̓݋䐳膫|o~ـܧ|t!,#8M[VH4ڱɖ=dhq 9鴌!$iZ &Imƒ!fxi'E0.JD(rxc6 iU1_'Y$71n>ɁL%KJAL$d*QŠ5p OPk#FZp s0RhnY-4x@KHœ`xҊnxdն'\r a1bi"0j\ "b!.͸ @̅ ,L1@ߌ7L, 0,2{TpA ( >0BA@@!Є \, J A0'd ~ h@2,(G%0@#L dG @ EN44^^$|X#Zhv =  (d>@)D`"@|p"TP3=P2 74ȂhV Tj `x~E,|b Z#`< Mq2&(1B,yp/gP@Q,p[Z@YrH"4#H>A ` $DfЋ `CB1/ {A0@"pc$fX$Q *tN(PgSX@X uH\| p $ 5 T`@`8ù6k '+*DJH3:'vjޯ5H1#q`|pZ8_TbGH q|q}0 0 IŮ-UQ`3I(D QG|"&`PDEeBtlsFia*E7]tB]0$@.@@%F:#xY%naKUh&; Ât0 ."Ut aVhaTD6x0 tRFXphha ^Ï\5< (,WaP`>(mm?$<IԳ=O|Tvлox Lr89Љt0Tֽno [p8\׸] rEmp+%@;D3Ҕ4AMjղvk@Bٲnf5YEJh s$cS<6CsK&k׻5/B _◿&0 ay@5j]+[ַ5.KrKs%kYz8)PTBX*X hy'@*E5QT.%1AOgJӚ8ͩNwʓ.!HIZR$%*Y KZ⒗"')\#eF6‘xY @JЂ"MBІ:!.<\Hz̧>OL8IrL:NG4P iմ5Mmnw7)a82e0x4gIZ̥.w^7f0FARH*VVҙe,e)IRż$&3M$(C@b(%%E,p# ; __CPAN_FILE__ src/widget/templates/images/whiteDownArrow.gif GIF89a!, [; __CPAN_FILE__ src/widget/templates/images/slider_down_arrow.png PNG

IHDRh6tIME85 pHYsnu>gAMA aIDATxcvĆ:D~. Mj4GX￿503Gh;?@S'& )d1#sƹA̒ Lp_ x (e; ?dh 1 ȅK{n029CM\І`ny5c!@)b?!;dɯ_g>YLA~M0|󃉖Ap"U^}'"BIENDB` __CPAN_FILE__ src/widget/templates/images/soriaButton-c.gif GIF89a6wzĸ쐶햻싳!,6w@pH,d2l:Шt:5Yجvv'xL.znx\E~%'  HI(\ȰÇ#F@ŋ3jܸǏ CId(S\ɲ˗/ȜI͛8s@ :ѣH*]ʴiSPJJիWEhʵׯ`Æ@ٳhӪ]v۷pʝKn]x˷߿LÈ'ǐ#K<y˘3k̹sCMӧA^ͺװcvA۸s޽[ Nxȓ+_μYHNسgOË?^ӫ_Ͼ}{˟O1Ͽ h& jF(VX fvm ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)dihlɡp)'A; __CPAN_FILE__ src/widget/templates/images/treenode_grid_v.gif GIF89arrr!,˦SojΒkeuNiR; __CPAN_FILE__ src/widget/templates/images/slider_right_arrow.png PNG

IHDRh6tIME1 pHYsnu>gAMA aIDATxcv?Q(_~)MueF&H?p+WX c @ϟ~MDK D;޾ AëL,9g_?@/9iٴ[6-n{.Qp\ܼfjƿ~+>,V^VތL,x `BB~($;IRVӸJ~gsؙ```120'`$IENDB` __CPAN_FILE__ src/widget/templates/images/slider-bg-progress-vert.gif GIF89ab|a|臤tj؀y`{m䅠x~܂}ڂw]xgt|j{䆥}|v䇦[u™~|؀숥؀zp}~~yzd~|j~rꆡ{v䂛pe~iw䅢_zꈤ؁||쇢{m膣psxuhtzhc}fry~{szua|riws܃fނꊨބw{izރ憣Ⅴ舧܁܂ր򋧰it{慡쇡uցs↥xꈧzwv℟suu~|艧ԀրyⅥ~艨~zvހyyބr臦Xqځ܁y懦~Oewc~UmOfurꅝ쉧}xfgqꉧky䅥ր܃rswꈦp!,fv #@ 0 ˜CNKqNhVǟ0A l 1HiM R D5o҄YN>sTHg:Hptxx TRZ՚ժ]~v8vmj}V[wҝkm3}NT'W lq Syʊ\A3gχkT EѤM.}z4ժ+y-vҗDFۀ(-z^7+*r͟Ggbv }.~;ї:}#tWV,;4b`G :a.HZ(a>!!l%H"br 2XK؈9n Ǎ=>IKiSJ QN)YDȕY %Zr&^RC7yfjfm 7)goc 瞍I"zC9VH2I@*)NZif)j:jj S$#zkf(@M* k(ˬP, `-ښ1~mz[3@=ڠM8:l+/[o/2?+0\p(\o30E0D"kqoܱ {<Ǐ#rL22s6Ls s?[EFJ(E;4$HtScJ./2[wu^%esB-i6_q!w#B}7~N^84U8?_ycny1 n:b zNz<&'< G?}S}PR(@ޟ_-\Ͼ퇿~̯Lp (_'?& |`@:~80Arpq > B! KBЅ-d S8n@+p=!H}! 1ED"#2шIdȠ)|br0wAv#h5* TЍ; __CPAN_FILE__ src/widget/templates/images/submenu_off.gif GIF89a !, 9&aA$ ; __CPAN_FILE__ src/widget/templates/images/incrementMonth.png PNG

IHDR  l\gAMAOX2tEXtSoftwareAdobe ImageReadyqe<PLTE):K"@*tRNS0J'IDATxb`dFF8aF(adRH`j7OfIENDB` __CPAN_FILE__ src/widget/templates/images/dpMonthBg.gif GIF89a!,f*1` A$qA; __CPAN_FILE__ src/widget/templates/images/tab_right_r.gif GIF89abҠhԀڳ剫ݚ롼dӉ凮|ٍ쒼딾!, dihlp,tmx6pH,Ȥrl:ШtJZQvzxLkzn3|Nx<u{JsSlWFÓȅwk_ܘTe H0ELp†)=HĊ]Ǝ | I2RɓF\KH*_sM+5o̲'>"*F@(ӦBB)uΪVob:s+ח^ +%ٲ%ϢvmǶn3[q.݈v6̫7!߾(xp†!N\o1x,9.cy3ΞѦN-ծmvٶέ7ݾ{xi!O.yTACg%}:MaϮV6O9^Σ~}1+w$>ϯ?[  G F.5!NGap藇mbK#V'+*֢/63BV7N;Z֣?SiH&L6PF)TViXf\vHdihlp)tix|I*蠄j衈&袌6裐F*餔Vj饘f<p*ꨤjꩨꪬ꫰*무j뭸ktP+k&6F+VkK: XЁ+k覫+k.A l'#; __CPAN_DIR__ src/widget/templates/images/Tree __CPAN_FILE__ src/widget/templates/images/Tree/treenode_loading.jpg JFIFddDuckyd&Adobed Evl !"#1AQR$2r3&!1AQBa#C$!1AQaq 닲$2Ѡlt M%9MɉA\(LS]/f6k :W^~ǭ|?H-W.q%ba.(LuDi>"ZH=?mmfg$i- Z^r:)V :r _?}=7 ֺ_1]Llw*J@bU|v?]%5jlN]&6]b(h!L@Iԝ<'B :ITQd)ݷp6=2d8ܲ9~qԈP#kASCt܍y7J?-R^uOcdh=^ItH uPMה*V9ǝy7KFIl}ZQ"Tl[_Of;,~^L9kf̟?!0aǖ 1$P`,jЀ7X$8P8( +RTa4bhz<RE}?!8V TFD  L ζ[SCCkъ @$$}XVYI(n9'X1?!z*H ޯxh{5Yd,ux;7zj~> e;r?B'M )ƸUFni%'Ĭxvh ΟA#^?Gէg$3'V*2$!" aFv8!)`U@ɔbE%cpS0ve?qvDX$ Va,Im{Q`YIhlbFI$ S >ƱcQss\w-?' __CPAN_FILE__ src/widget/templates/images/Tree/treenode_grid_z.gif GIF89a999!,tzik}M; __CPAN_FILE__ src/widget/templates/images/Tree/document.gif GIF89a_F^u!,m'divhepum1MvHwq 'u0H`XP&SHQ4Xl0l; Lx@sk2g}gg+[&"!; __CPAN_FILE__ src/widget/templates/images/Tree/treenode_grid_l.gif GIF89arrr!,˦SojΒkH扦z; __CPAN_FILE__ src/widget/templates/images/Tree/treenode_grid_t.gif GIF89arrr!,!˦SojΒkH6[vZF-:q; __CPAN_FILE__ src/widget/templates/images/Tree/plus.gif GIF89a999DDDCCDȄƾCDDrrr쇠zzzy!,xIH"/I 5,!D9-F 4@0H C2'G<>1E%#B+=.8) :? 76A;ٸ(&$3*I; __CPAN_FILE__ src/widget/templates/images/Tree/treenode_expand_plus.gif GIF89aH999~DDDCCD~}}CDDy!H,{HFFFG-@3C ?#. 8=D), 5/%>E21A+*å ;<(76!09$B4&": '; __CPAN_FILE__ src/widget/templates/images/Tree/treenode_blank.gif GIF89a'ҽ___!',OH*\ȰÇ#JHŋ1; __CPAN_FILE__ src/widget/templates/images/Tree/blank.gif GIF89a!,ڋ>; __CPAN_FILE__ src/widget/templates/images/Tree/treenode_loading.gif GIF89a{מ%gڐvӉلܣ쏳萰݌܊|ׅ۸钵׊Ⴅۮ捯ވߘςΆٝᅧ،ފ܊ʑܮݴ爩~֐䇩kkk曾د}գ}퍬ۙwœݝ阻ܷ荱爬♼!, (PE &`FÏ<IXM(0u*jc)$L`ҡC#$tevPq@ 7"X ,<  fe1a h Ҧţ ?tІsPt@ Dda" a(!8g#\q% 9.P0pO >as!6!B01+_Dׄ!L|@uL`94 +EM (!C U\'衁b; __CPAN_FILE__ src/widget/templates/images/Tree/treenode_child.gif GIF89a!, `k:i!tH[iV S; __CPAN_FILE__ src/widget/templates/images/Tree/closed.gif GIF89anrg{wųr䜵ǖ刢꘰韺~pj뉦yچvd}lzhsj{о〙ԱԷ䜱aվ衼څeyv쑬omd}v퉣xltmoӻrq!,y Hye1%M4n CW< #L>rdI`~TjU˙=x]$** \5FQ RT-xd8+:- O@!*]D`@p @P@(l0D%Y$D AT&d)"#HXǀkQeٴ] 8KMߴJ2\AīK`x1C!JLj ]P)(; __CPAN_FILE__ src/widget/templates/images/Tree/treenode_grid_p.gif GIF89arrr!,oSy8K; __CPAN_FILE__ src/widget/templates/images/Tree/treenode_grid_c.gif GIF89arrr!,oݼL; __CPAN_FILE__ src/widget/templates/images/Tree/treenode_grid_x.gif GIF89arrr!,t3`; __CPAN_FILE__ src/widget/templates/images/Tree/treenode_expand_minus.gif GIF89aI999DDDĀ}y!I,IHHH7%,.0?('F+&9!)=$H4*:C H< " E;A8Dz 6G2  HD/5 B-#3 @1>; __CPAN_FILE__ src/widget/templates/images/Tree/Tree.css

.dojoTree { font: caption; font-size: 11px; font-weight: normal; overflow: auto; }

.dojoTreeNodeLabelTitle { padding-left: 2px; color: WindowText; }

.dojoTreeNodeLabel { cursor:hand; cursor:pointer; }

.dojoTreeNodeLabelTitle:hover { text-decoration: underline; }

.dojoTreeNodeLabelSelected { background-color: Highlight; color: HighlightText; }

.dojoTree div { white-space: nowrap; }

.dojoTree img, .dojoTreeNodeLabel img { vertical-align: middle; }

__CPAN_FILE__ src/widget/templates/images/Tree/transparent.gif GIF89a((gԈ0Ԉ*2! $02H!`L2H!`$h82dtu꼐xqu!u,!`@$@(z ,tH(@ H 悰@L@! \Qm!X鄑QH!X頑QHmD0! Ԉ0l !`@Gi  Q 8mGn8Gi(qՆ`xpm !`đ !` bbPGi(DpmGn8Gi(hGi(Gi(P \ pDGi(ccEGGn8IltII悰!,((CH*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8 ; __CPAN_FILE__ src/widget/templates/images/Tree/treenode_grid_y.gif GIF89arrr!,t3Xv[}j; __CPAN_FILE__ src/widget/templates/images/Tree/treenode_grid_v.gif GIF89arrr!,˦SojΒkeuNiR; __CPAN_FILE__ src/widget/templates/images/Tree/minus.gif GIF89a999숡ᇡzzzپDDDrrry!,~JI$&73"9H',2(:I)8A 6/0* +4 5#! ;1GE=I % - J҂I.> F @CD?J; __CPAN_DIR__ src/widget/templates/images/TreeV3 __CPAN_FILE__ src/widget/templates/images/TreeV3/x.gif GIF89arrr!,T;Z HV; __CPAN_FILE__ src/widget/templates/images/TreeV3/document.gif GIF89aF^u_!,s@pH,Ha`l2tJ%Gz%`L DA&VJ2YQ0

hLzc}  N}IDA; __CPAN_FILE__ src/widget/templates/images/TreeV3/t.gif GIF89arrr!,!˦SojΒkH6[vZF-:q; __CPAN_FILE__ src/widget/templates/images/TreeV3/i_bhalf.gif GIF89arrr!,RP|N; __CPAN_FILE__ src/widget/templates/images/TreeV3/expand_minus.gif GIF89aEyDDD999}!,=6*>3;#?</IA(C5,B 1@0' 9% ˂H$&2 D "F E!48 :.G-7)+ ; __CPAN_FILE__ src/widget/templates/images/TreeV3/plus.gif GIF89ay999DDDĀ},5$,.0='&D+%B!(?"4)<A :  ;9C8ʵ 6E2 F/7 @-#3 >1*; __CPAN_FILE__ src/widget/templates/images/TreeV3/i.gif GIF89arrr!,˦SojΒkeuNiR; __CPAN_FILE__ src/widget/templates/images/TreeV3/closed.gif GIF89a`ϟ!,OIGrF xX!q)Ϥ>E<O\ nCL[ -A(fEnzL; __CPAN_FILE__ src/widget/templates/images/TreeV3/l.gif GIF89arrr!,˦SojΒkH扦z; __CPAN_FILE__ src/widget/templates/images/TreeV3/expand_leaf.gif GIF89arrr!,T;Z HV; __CPAN_FILE__ src/widget/templates/images/TreeV3/i_long.gif GIF89arrr!,o`Sъ.wX :uk^(rgư~AҀ!Yl'jʺ¶I2u]>iztys|wG'g8UxȘHٸi9Yy )w*j :*{Kk˻K %<Jj\ˬ \*mM=}],Ll>;.?n_οN;!#`A&daC(^wQbD2r1$ȑ+Wz)E$̘4Wi$g18w´9A >4:F&uJ,VO7j+נc-zhڤkm۩qÒ 6ܬ{+਀|^b%0ɉ#3[n9åʢ%>ԬW6˥ivlݳ3}wn້ypÕw~srˡ7{յ_v'ݼ[w׏噁!X9I 2bX ՠ !X!!#X'"+"/#37"٣I2MBQR9$ Ujb`rfde՘kئq9v։EX ty$K$S*z%_:l:)nJ 'Z (bwizꡩ&ꢭ6꣱F*訳^ZkJjv맼kVJi2k*"+^lj*z++b-fk[. /n.˯{o //;0+| Kp[0c<11z# 1,2.nj9׼:3>MF\2'++36K3B[]4GCݲ^s4K OݵS]5W5[6c[g㝶k6o 7s]7w+{3C>S^c~8_{.w褃^zꨯ.zݺ굳~lM8+?9;9K=[O;ks}'7G?Woo/| *0{ hbp <(?O#!8XA^* _B04]XC- uDP; aC"CdbGxD(&щKbFQSbxE0f]F4[TXF7*qThʱ|c=q$ C*id hBGm-HLR")GO$#XISNT%]IXnR'YYJ\2*yJ_R$,YKdd.8LgŔf4yLkVf6LpRf7irl';ipNT<YOwܧ? {63,h$IЃSd4zMnSߤ9-*O3Ũ=5Oԣ%BA:PS"M)J҇43hM+zӋ4 ]N?Ӗ4,-OKzԓ5]S;T#QRZ*WZծT6%+NͪSYeVVum[׻Uy^Wկl_ײVEla{X&lc%XFVMke={Yf%mgZӎeiY׮coY܊Vms pK\7]siZjlr\y]NWUu[^nWݥw^z^|\_We~ _W)` W p9`w&y|bM1Qx*.U\c߸9qi 9Dql$WH^2<a(_X<b,X6V2e.<sd4?GVl69sr|+9{r7ý3 D:͋^3-h; __CPAN_FILE__ src/widget/templates/images/TreeV3/open.gif GIF89aϟ`!,Px9$gaqAQa y4eEPpܐ+VX{*u5{gz͎$; __CPAN_FILE__ src/widget/templates/images/TreeV3/expand_plus.gif GIF89aCyDDD999}ĀŁ!,;3)@ ,=":0F ?'E615 />D&2$ ˂A#%B !G C 94- 7+<.8(* ; __CPAN_FILE__ src/widget/templates/images/TreeV3/i_half.gif GIF89arrr!,˦SojΒkH扦; __CPAN_FILE__ src/widget/templates/images/TreeV3/expand_loading.gif GIF89a{מ%gڐvӉلܣ쏳萰݌܊|ׅ۸钵׊Ⴅۮ捯ވߘςΆٝᅧ،ފ܊ʑܮݴ爩~֐䇩kkk曾د}գ}퍬ۙwœݝ阻ܷ荱爬♼, (PE &`FÏ<IXM(0u*jc)$L`ҡC#$tevPq@ 7"X ,<  fe1a h Ҧţ ?tІsPt@ Dda" a(!8g#\q% 9.P0pO >as!6!B01+_Dׄ!L|@uL`94 +EM (!C U\'衁b; __CPAN_FILE__ src/widget/templates/images/TreeV3/minus.gif GIF89ay999DDDĀ},7&,.0A)(H?'9"*; % 4+<: F # G=C8ʵ 6E2! B/5 D-$3>1@; __CPAN_DIR__ src/widget/templates/Editor2 __CPAN_FILE__ src/widget/templates/Editor2/EditorToolbar_FontSize.html <div class="SC_Panel" style="width: 150px; height: 150px;"> <table width="100%" cellspacing="0" cellpadding="0" style="table-layout: fixed;"> <tbody> <tr> <td nowrap=""> <div class="SC_Item" dropDownItemName="1"> <font size="1">xx-small</font> </div> <div class="SC_Item" dropDownItemName="2"> <font size="2">x-small</font> </div> <div class="SC_Item" dropDownItemName="3"> <font size="3">small</font> </div> <div class="SC_Item" dropDownItemName="4"> <font size="4">medium</font> </div> <div class="SC_Item" dropDownItemName="5"> <font size="5">large</font> </div> <div class="SC_Item" dropDownItemName="6"> <font size="6">x-large</font> </div> <div class="SC_Item" dropDownItemName="7"> <font size="7">xx-large</font> </div> </td> </tr> </tbody> </table> </div> __CPAN_FILE__ src/widget/templates/Editor2/showtableborder_gecko.css /* For tables with the "border" attribute set to "0" */ table[border="0"], table[border="0"] > tr > td, table[border="0"] > tr > th, table[border="0"] > tbody > tr > td, table[border="0"] > tbody > tr > th, table[border="0"] > thead > tr > td, table[border="0"] > thead > tr > th, table[border="0"] > tfoot > tr > td, table[border="0"] > tfoot > tr > th { border: #d3d3d3 1px dotted ; }

/* For tables with no "border" attribute set */ table:not([border]), table:not([border]) > tr > td, table:not([border]) > tr > th, table:not([border]) > tbody > tr > td, table:not([border]) > tbody > tr > th, table:not([border]) > thead > tr > td, table:not([border]) > thead > tr > th, table:not([border]) > tfoot > tr > td, table:not([border]) > tfoot > tr > th { border: #d3d3d3 1px dotted ; } __CPAN_FILE__ src/widget/templates/Editor2/EditorDialog.html <div id="${this.widgetId}" class="dojoFloatingPane"> <span dojoattachpoint="tabStartOuter" dojoonfocus="trapTabs" dojoonblur="clearTrap" tabindex="0"></span> <span dojoattachpoint="tabStart" dojoonfocus="trapTabs" dojoonblur="clearTrap" tabindex="0"></span> <div dojoAttachPoint="titleBar" class="dojoFloatingPaneTitleBar" style="display:none"> <img dojoAttachPoint="titleBarIcon" class="dojoFloatingPaneTitleBarIcon"> <div dojoAttachPoint="closeAction" dojoAttachEvent="onClick:hide" class="dojoFloatingPaneCloseIcon"></div> <div dojoAttachPoint="restoreAction" dojoAttachEvent="onClick:restoreWindow" class="dojoFloatingPaneRestoreIcon"></div> <div dojoAttachPoint="maximizeAction" dojoAttachEvent="onClick:maximizeWindow" class="dojoFloatingPaneMaximizeIcon"></div> <div dojoAttachPoint="minimizeAction" dojoAttachEvent="onClick:minimizeWindow" class="dojoFloatingPaneMinimizeIcon"></div> <div dojoAttachPoint="titleBarText" class="dojoFloatingPaneTitleText">${this.title}</div> </div>

	<div id="${this.widgetId}_container" dojoAttachPoint="containerNode" class="dojoFloatingPaneClient"></div>
	<span dojoattachpoint="tabEnd" dojoonfocus="trapTabs" dojoonblur="clearTrap" tabindex="0"></span>
	<span dojoattachpoint="tabEndOuter" dojoonfocus="trapTabs" dojoonblur="clearTrap" tabindex="0"></span>
	<div dojoAttachPoint="resizeBar" class="dojoFloatingPaneResizebar" style="display:none"></div>
</div>
__CPAN_FILE__ src/widget/templates/Editor2/EditorToolbar_FontName.html
<div class="SC_Panel" style="width: 150px; height: 150px;">
	<div class="SC_Item" dropDownItemName="Arial">
		<font face="Arial" style="font-size: 12px;">Arial</font>
	</div>
	<div class="SC_Item" dropDownItemName="Comic Sans MS">
		<font face="Comic Sans MS" style="font-size: 12px;">Comic Sans MS</font>
	</div>
	<div class="SC_Item" dropDownItemName="Courier New">
		<font face="Courier New" style="font-size: 12px;">Courier New</font>
	</div>
	<div class="SC_Item" dropDownItemName="Tahoma">
		<font face="Tahoma" style="font-size: 12px;">Tahoma</font>
	</div>
	<div class="SC_Item" dropDownItemName="Times New Roman">
		<font face="Times New Roman" style="font-size: 12px;">Times New Roman</font>
	</div>
	<div class="SC_Item" dropDownItemName="Verdana">
		<font face="Verdana" style="font-size: 12px;">Verdana</font>
	</div>
</div>
__CPAN_FILE__ src/widget/templates/Editor2/showtableborder_ie.css
table.dojoShowIETableBorders, table.dojoShowIETableBorders td, table.dojoShowIETableBorders th
{
	border: #d3d3d3 1px solid;
}
__CPAN_FILE__ src/widget/templates/Editor2/EditorToolbar_FormatBlock.html
<div class="SC_Panel" style="width: 190px; height: 150px;">
	<div class="SC_Item" dropDownItemName="p">
		<div class="BaseFont">
			<p>Normal</p>
		</div>
	</div>
	<div class="SC_Item" dropDownItemName="div">
		<div class="BaseFont">
			<div>Normal (DIV)</div>
		</div>
	</div>
	<div class="SC_Item" dropDownItemName="pre">
		<div class="BaseFont">
			<pre>Formatted</pre>
		</div>
	</div>
	<div class="SC_Item" dropDownItemName="address">
		<div class="BaseFont">
			<address>Address</address>
		</div>
	</div>
	<div class="SC_Item" dropDownItemName="h1">
		<div class="BaseFont">
			<h1>Heading 1</h1>
		</div>
	</div>
	<div class="SC_Item" dropDownItemName="h2">
		<div class="BaseFont">
			<h2>Heading 2</h2>
		</div>
	</div>
	<div class="SC_Item" dropDownItemName="h3">
		<div class="BaseFont">
			<h3>Heading 3</h3>
		</div>
	</div>
	<div class="SC_Item" dropDownItemName="h4">
		<div class="BaseFont">
			<h4>Heading 4</h4>
		</div>
	</div>
	<div class="SC_Item" dropDownItemName="h5">
		<div class="BaseFont">
			<h5>Heading 5</h5>
		</div>
	</div>
	<div class="SC_Item" dropDownItemName="h6">
		<div class="BaseFont">
			<h6>Heading 6</h6>
		</div>
	</div>
</div>
__CPAN_DIR__ src/widget/templates/Editor2/Dialog
__CPAN_FILE__ src/widget/templates/Editor2/Dialog/inserttable.html
<div>
<table cellSpacing="1" cellPadding="1" width="100%" border="0">
	<tr>
		<td valign="top">
			<table cellSpacing="0" cellPadding="0" border="0">
				<tr>

					<td><span>Rows</span>:</td>
					<td>&nbsp;<input dojoAttachPoint="table_rows" type="text" maxLength="3" size="2" value="3"></td>
				</tr>
				<tr>
					<td><span>Columns</span>:</td>
					<td>&nbsp;<input dojoAttachPoint="table_cols" type="text" maxLength="2" size="2" value="2"></td>
				</tr>

				<tr>
					<td>&nbsp;</td>
					<td>&nbsp;</td>
				</tr>
				<tr>
					<td><span>Border size</span>:</td>
					<td>&nbsp;<INPUT dojoAttachPoint="table_border" type="text" maxLength="2" size="2" value="1"></td>
				</tr>

				<tr>
					<td><span>Alignment</span>:</td>
					<td>&nbsp;<select dojoAttachPoint="table_align">
							<option value="" selected>&lt;Not set&gt;</option>
							<option value="left">Left</option>
							<option value="center">Center</option>
							<option value="right">Right</option>
						</select></td>
				</tr>
			</table>
		</td>
		<td>&nbsp;&nbsp;&nbsp;</td>
		<td align="right" valign="top">
			<table cellSpacing="0" cellPadding="0" border="0">
				<tr>
					<td><span>Width</span>:</td>
					<td>&nbsp;<input dojoAttachPoint="table_width" type="text" maxLength="4" size="3"></td>
					<td>&nbsp;<select dojoAttachPoint="table_widthtype">
							<option value="percent" selected>percent</option>
							<option value="pixels">pixels</option>
						</select></td>

				</tr>
				<tr>
					<td><span>Height</span>:</td>
					<td>&nbsp;<INPUT dojoAttachPoint="table_height" type="text" maxLength="4" size="3"></td>
					<td>&nbsp;<span>pixels</span></td>
				</tr>
				<tr>
					<td>&nbsp;</td>
					<td>&nbsp;</td>
					<td>&nbsp;</td>
				</tr>
				<tr>
					<td nowrap><span>Cell spacing</span>:</td>
					<td>&nbsp;<input dojoAttachPoint="table_cellspacing" type="text" maxLength="2" size="2" value="1"></td>
					<td>&nbsp;</td>

				</tr>
				<tr>
					<td nowrap><span>Cell padding</span>:</td>
					<td>&nbsp;<input dojoAttachPoint="table_cellpadding" type="text" maxLength="2" size="2" value="1"></td>
					<td>&nbsp;</td>
				</tr>
			</table>
		</td>
	</tr>
</table>
<table cellSpacing="0" cellPadding="0" width="100%" border="0">
	<tr>
		<td nowrap><span>Caption</span>:</td>
		<td>&nbsp;</td>
		<td width="100%" nowrap>&nbsp;
			<input dojoAttachPoint="table_caption" type="text" style="WIDTH: 90%"></td>
	</tr>
	<tr>
		<td nowrap><span>Summary</span>:</td>
		<td>&nbsp;</td>
		<td width="100%" nowrap>&nbsp;
			<input dojoAttachPoint="table_summary" type="text" style="WIDTH: 90%"></td>
	</tr>
</table>
<table><tr>
<td><button dojoType='Button' dojoAttachEvent='onClick:ok'>Ok</button></td>
<td><button dojoType='Button' dojoAttachEvent='onClick:cancel'>Cancel</button></td>
</tr></table>
</div>
__CPAN_FILE__ src/widget/templates/Editor2/Dialog/replace.html
<table style="white-space: nowrap;">
<tr><td>Find: </td><td> <input type="text" dojoAttachPoint="replace_text" /></td></tr>
<tr><td>Replace with: </td><td> <input type="text" dojoAttachPoint="replace_text" /></td></tr>
<tr><td colspan='2'><table><tr><td><input type="checkbox" dojoType="CheckBox" dojoAttachPoint="replace_option_casesens" id="dojo_replace_option_casesens" />
		<label for="dojo_replace_option_casesens">Case Sensitive</label></td>
			<td><input type="checkbox" dojoType="CheckBox" dojoAttachPoint="replace_option_backwards" id="dojo_replace_option_backwards" />
		<label for="dojo_replace_option_backwards">Search Backwards</label></td></tr></table></td></tr>
<tr><td colspan=2">
	<table><tr>
	<td><button dojoType='Button' dojoAttachEvent='onClick:replace'>Replace</button></td>
	<td><button dojoType='Button' dojoAttachEvent='onClick:replaceAll'>Replace All</button></td>
	<td><button dojoType='Button' dojoAttachEvent='onClick:cancel'>Close</button></td>
	</tr></table>
	</td></tr>
</table>

__CPAN_FILE__ src/widget/templates/Editor2/Dialog/find.html <table style="white-space: nowrap;"> <tr><td colspan='2'>Find: <input type="text" dojoAttachPoint="find_text" /></td></tr> <tr><td><input type="checkbox" dojoType="CheckBox" dojoAttachPoint="find_option_casesens" /> <label for="find_option_casesens">Case Sensitive</label></td> <td><input type="checkbox" dojoType="CheckBox" dojoAttachPoint="find_option_backwards" /> <label for="find_option_backwards">Search Backwards</label></td></tr> <tr><td style="display: none;"><input type="checkbox" dojoType="CheckBox" dojoAttachPoint="find_option_wholeword" /> <label for="find_option_wholeword">Whole Word</label></td> <tr><td colspan="1"> <table><tr> <td><button dojoType='Button' dojoAttachEvent='onClick:find'>Find</button></td> <td><button dojoType='Button' dojoAttachEvent='onClick:cancel'>Close</button></td> </tr></table> </td></tr> </table> __CPAN_FILE__ src/widget/templates/Editor2/Dialog/createlink.html <table> <tr><td>URtd<td> <input type="text" dojoAttachPoint="link_href" name="dojo_createLink_href"/></td></tr> <tr><td>Target </td><td><select dojoAttachPoint="link_target"> <option value="">Self</option> <option value="_blank">New Window</option> <option value="_top">Top Window</option> </select></td></tr> <tr><td>Class </td><td><input type="text" dojoAttachPoint="link_class" /></td></tr> <tr><td colspan="2"> <table><tr> <td><button dojoType='Button' dojoAttachEvent='onClick:ok'>O/button</td> <td><button dojoType='Button' dojoAttachEvent='onClick:cancel'>Cancel</button></td> </tr></table> </td></tr> </table> __CPAN_FILE__ src/widget/templates/Editor2/Dialog/insertimage.html <table cellspacing="1" cellpadding="1" border="0" width="100%" height="100%"> <tr> <td> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tr> <td width="100%"> <span>URspan </td> <td style="display: none" nowrap="nowrap" rowspan="2"> <!--input id="btnBrowse" onclick="BrowseServer();" type="button" value="Browse Server"/--> </td> </tr> <tr> <td valign="top"> <input dojoAttachPoint="image_src" style="width: 100%" type="text" /> </td> </tr> </table> </td> </tr> <tr> <td> <span>Alternative Text</span><br /> <input dojoAttachPoint="image_alt" style="width: 100%" type="text" /><br /> </td> </tr> <tr> <td valign="top"> <table><tr><td> <table cellspacing="0" cellpadding="0" border="0"> <tr> <td nowrap="nowrap"> <span>Width</span>&nbsp;</td> <td> <input type="text" size="3" dojoAttachPoint="image_width" /></td>

								<td rowspan="2">
									<!--div id="btnLockSizes" class="BtnLocked" onmouseover="this.className = (bLockRatio ? 'BtnLocked' : 'BtnUnlocked' ) + ' BtnOver';"
										onmouseout="this.className = (bLockRatio ? 'BtnLocked' : 'BtnUnlocked' );" title="Lock Sizes"
										onclick="SwitchLock(this);">
									</div-->
								</td>
								<td rowspan="2">
									<!--div id="btnResetSize" class="BtnReset" onmouseover="this.className='BtnReset BtnOver';"
										onmouseout="this.className='BtnReset';" title="Reset Size" onclick="ResetSizes();">
									</div-->
								</td>
							</tr>

							<tr>
								<td nowrap="nowrap">
									<span>Height</span>&nbsp;</td>
								<td>
									<input type="text" size="3" dojoAttachPoint="image_height" /></td>
							</tr>
						</table>
					</td><td>

						<table cellspacing="0" cellpadding="0" border="0">
							<tr>

								<td nowrap="nowrap">
									<span >HSpace</span>&nbsp;</td>
								<td>
									<input type="text" size="2" dojoAttachPoint="image_hspace"/></td>
							</tr>
							<tr>
								<td nowrap="nowrap">
									<span >VSpace</span>&nbsp;</td>

								<td>
									<input type="text" size="2" dojoAttachPoint="image_vspace" /></td>
							</tr>
						</table>
					</td></tr>
					<tr><td colspan="2">
						<table cellspacing="0" cellpadding="0" border="0">
							<tr>
								<td nowrap="nowrap">
									<span>Border</span>&nbsp;</td>
								<td>
									<input type="text" size="2" value="" dojoAttachPoint="image_border" /></td>
								<td>&nbsp;&nbsp;&nbsp;</td>
								<td nowrap="nowrap">
									<span >Align</span>&nbsp;</td>
								<td>
									<select dojoAttachPoint="image_align">

										<option value="" selected="selected"></option>
										<option value="left">Left</option>
										<option value="absBottom">Abs Bottom</option>
										<option value="absMiddle">Abs Middle</option>
										<option value="baseline">Baseline</option>
										<option value="bottom">Bottom</option>

										<option value="middle">Middle</option>
										<option value="right">Right</option>
										<option value="textTop">Text Top</option>
										<option value="top">Top</option>
									</select>
								</td>
							</tr>
						</table>
					</td>
				</tr></table>
		</td>
	</tr>
	<tr><td>
		<table><tr>
		<td><button dojoType='Button' dojoAttachEvent='onClick:ok'>OK</button></td>
		<td><button dojoType='Button' dojoAttachEvent='onClick:cancel'>Cancel</button></td>
		</tr></table>
	</td></tr>
</table>
__CPAN_DIR__ src/widget/templates/buttons
__CPAN_FILE__ src/widget/templates/buttons/paste.gif
GIF89aÃŅhpü}dtylb%TLIAn!,n%di(*ER*R0eRE!lnPB$
el:'bZZeXJ(W贸D9+k|̨WhWWc	{JWc5&WW.!;
__CPAN_FILE__ src/widget/templates/buttons/justifyfull.gif
GIF89a'2165:9DCIH-,?>BAYXFEWVcbbaGF87.-54jiTSml1098feA@UTRQ>=_^0//.<;MLPO]\43NMKJZY,+!',CpH,ȤrD,B2"DJ\<`򺓊̧qT i~VXZl|nA;
__CPAN_FILE__ src/widget/templates/buttons/bg-fade.png
PNG

IHDR d06gAMAOX2tEXtSoftwareAdobe ImageReadyqe<CIDATxb<s nĀ022Mݔ>t=5|>RGu zci: HG&(x}IENDB` __CPAN_FILE__ src/widget/templates/buttons/inserthorizontalrule.gif GIF89aIHNMYX:9ji]\65?>TSml21feDCba!,"I8ͻKSH0`(#4x; __CPAN_FILE__ src/widget/templates/buttons/createlink.gif GIF89a􋋋ccc666555Ș[[[ߘΞJJJ]]]GGGAAA论ݗ̜qŘmo444냹kmkڎŒ먵llneeezzzdtblcfvfik---猌bbběnqoϐՙHHHtmoxz|vwwzd땪ܧݏRSSNNNW\ӮEEEZZZkok턴ְֹ߰׻777`bdjf쉉~͗Йoyyvqtiim񅈉߰֓fw{m՟릴MMMnqn\\\DDDγ}}}PYPݔx݂億!,i HY"XafEL3^(Z`VA NQCp#^08@ԣ*vD(fzXeH(tP8(b+=~$@T!x@rɤ%JjG&@g2(=p2R!Qh$5`+(L THJ"PTŢ,?LhPJ 8)%J3RhP3,"Q @(`J$)!4pȁNyrxJDl(!c˥˟/0 ; __CPAN_FILE__ src/widget/templates/buttons/removeformat.gif GIF89amm!,6|AX\E}"] "m +b !B);>̦; __CPAN_FILE__ src/widget/templates/buttons/undo.gif GIF89aBPQO[P"U융i&W$VQPyPzE䊨|2hz:t;iO!TlRs:gD0`TiT| SzO'[OL!B,zB '41#0@! "> A9+=8-,A3  .B:6;%*<?)Ʉ7A2/$(B5&; __CPAN_FILE__ src/widget/templates/buttons/outdent.gif GIF89a1z'&!,%4/ @xf鑠h৐&.M; __CPAN_FILE__ src/widget/templates/buttons/backcolor.gif GIF89ab󬫬{}WDΖ~]E=qǶOŸTו鴾ЗvʹlȨ.{œu]Ήf"?j\ַƊQ|뫬əp+骭Z薦@@@!b,ba>B 7D,@aaX?LNM;EZ9VK&]'_R3(S.+! P <`FC^*a`-W"̂6YAI b\Q`1)`O#%5$zUс% F  ɖ/H\ıA; __CPAN_FILE__ src/widget/templates/buttons/wikiword.gif GIF89a2<\Zc|MnЪMsU~?_~^xeJh˳쬼舝_{GeC`VqXuIh|MpWrA_Ca@bFe>^Ro{ڗKkGhͶs9Y!2,@pH,ȤRAbቊ)Ѡ8U(ʼn+XId!}4!AzD $!C!$ F""G0 0G).& .)G% 0 0 %G+' 0 '+G H-2-IFO12A; __CPAN_FILE__ src/widget/templates/buttons/superscript.gif GIF89aQKv21!,^Q`LY^x_ƶ ; __CPAN_FILE__ src/widget/templates/buttons/subscript.gif GIF89aQKv21!,Nc͒auiN {; __CPAN_FILE__ src/widget/templates/buttons/space.gif GIF89a!,D; __CPAN_FILE__ src/widget/templates/buttons/indent.gif GIF89a1z'&!,$4/ xf鑝_BN x­hܮ[h ]dQO81^* p:7("sB %E ,6.:0& GPOKCA; __CPAN_FILE__ src/widget/templates/buttons/underline.gif GIF89a+EiϿZiHm<]?_DhϙFjеq`Hg|WܧwAcqGgGhΡInhSqMoQx>`fMpMsCfLpGl=]?a]{Kk9Y!+,upH,Ȥrj6ΧPV5t. p רJ:;9QCz] E$ SD+"C#G' %+ H&JMK]QsA; __CPAN_FILE__ src/widget/templates/buttons/redo.gif GIF89aBPQO[P"U융i&W$VQPyPzE䊨|2hz:t;iO!TlRs:gD0`TiT| SzO'[OL!B,|B 0#14' >" !@,-8=+9AB.  3*%;6:)?< 7ԅ2A߄($/&5; __CPAN_FILE__ src/widget/templates/buttons/cut.gif GIF89aꈈ!,5X01uD(LC,!U6 j̀Yt8 ;;k: ; __CPAN_FILE__ src/widget/templates/buttons/justifyright.gif GIF89a.-21>=54:9CBHGNMSRXWfeih̓]\a`,+!,;$dihg, Q`EtR%Q[nBHlJZ(K.B; __CPAN_FILE__ src/widget/templates/buttons/inserttable.gif GIF89aêͨ?>TLI!,f%dih^̭$VT)ei)0$QBZ d 1pܬcJbic@lc |RCC+"!; __CPAN_FILE__ src/widget/templates/buttons/italic.gif GIF89a3<\s9YƴU~ۯ@bCa{eXu|^xMsc|A_Gh?_Vq>^Mp~۳RoZC`ɬWrϗJhˈGeMnIh_{KkFe!3,RpH,Ȥx F V1 (*djl*D^y9 j.  p$X0^^RA; __CPAN_FILE__ src/widget/templates/buttons/insertorderedlist.gif GIF89aKvQ'&!,&ƒjzj}Oq+dbJr; __CPAN_FILE__ src/widget/templates/buttons/sep.gif GIF89a!,L`d|{; __CPAN_FILE__ src/widget/templates/buttons/right_to_left.gif GIF89a GFDC@?=<IH54.-1087Q! ,;PI8ͻ$#@R(Aנ tBU

dX9(#Š,6; __CPAN_FILE__ src/widget/templates/buttons/copy.gif GIF89aϳڮߧAn!,O$di(NR$rmHep"0Ҋ+"SEWt@$bI+@k ; __CPAN_FILE__ src/widget/templates/buttons/list_bullet_outdent.gif GIF89aGR`'&!,(H0J&,S]Xi>qzJztl[6Y; __CPAN_FILE__ src/widget/templates/buttons/aggregate.gif GIF89a䍣GhllQ--ݳl@@@ wY߯ЮFEt]cEjiN ˷AnmHHZ9YQ ‚o1|,+VUʘLw̑Ыcedr븻興i111uzo6f?>feK|||yy[~Qq喖b~Z[Z$WsᘶˬEL'ʼn:tnʕr|̙Qy98

21^z~GMrԗk54⢢tˊLmϏ>^Ș◸Н樥kMLevXv\[Vr76lnmSLI`1z|#юwvoƽA@%Oذ-=ʹ?骀WɭZAa΅"{.]l鋯Rozv䩨sQ|וlU~ڴ[*)֎..QP`֒{X̦1mdG~'baW\'&!, !*\ȰÇ#JHŅ2jܘ@ yIɓ(S\2 -cDIpDS8saN\r!ҦѣCrT#ҧPJJ 0jmYs@S!<衬ٲ }:Dpx!QFWTv<H`ƂK oC3C#+W6\sLW/MzCMXEc za!u@ȑCŚztH6 fΞAysQ~.XcIkDEE!{%z?]eɲ06W\GDŽRBiRqxI JW2ьfA AwA.<p4HW *Y}hj?qT[B/X,P<M|ACv)DBmxqЍ9A&<#蠄syzXWb jP)OTj饖?d`X2 H sì7C; +!skj $j,G~ Uh A-]-BJZJ 1(b6dL4;@x→\HidD)AB/6 L4j7wX2C")@MB+,4#pn$\)#dlgp%B#XI&K,ф=/lZQ$`2.D(rjE襑+zbBbמEf D'x 87NyI*Bwa-dEns.:1{&v{}@t/~ʾi.Do #<3P:̣-?,@ZB}Kv{aA2EDdN5',7 _"U#(@ ]04r_ȇ䰃MN'8#FⅬcMW\ a~A0KH,7SРЭ"+4D$pCwHJw:y]C^0 v Ab- 0g)5p-PX#0;qADq46MD $`  AL \0$B @pBYhc.at$"xD@H* A Q`S@-a(E)NvAT,SqGLqSzH)^AzڳO T:XUBTvR@V,_-b" B RC4r:i⺂A9\;Lڨ.h)Z~/[IRJRT&!+D!RJ |p#$ `xU 2 DA [$Hh, I0",@<.$J9?P>a ;G%aGc A>(]HD HH@Jn5s8=z YrSC|r`QlH)~VUgD #\B.8@n"5H a)2D CB76D@*RڔT bD@A1=Lݘ O`oe4Ȉ ?6&~ @!WA^&4H>aQ .x8:[h`0ЄlP H,2ؔ,+JAe$˅\2 GCc .wvH-&F8 APd(HnZ?&G^$naG@Zs 2=jRleRTS[ iZpE)S ;NʕaѐK1f3I?| h!S)\fE6<Tߝ;P b T`,@#@H0DP@ 4\̄(8h0;@0*rv$`yH7X@v`1 2< (D4 pBj6 @: w3/HA[_ nBj`5=FͩrxϻM ((PZ^i(~%щ22ȳ"zֽ?G"_}vG_YT/mL9N@m̴6@ ͓³YGD%7R)vp w|iJ!|^פ4~8EQ0%V9YM7V`@sgKfq5=p 0X HQ| Ly V5׀~G_)7Yq`v5@wQ 2 sG(s  Qi#RhiQ`^U Puka Q Phіp)%pqm v` 0>5`|+*`k%Tvutgp&qXpېЄMNPmwP ̐pG g`gp0p_648g/@@ mAxQB]H`HPepMh6CP 00qpB8z888Kh<q7|G3\$ sfs WS{ חheM Gp= *gޅ``@kEdjJP@ bn5Y36P1pg`bЋff@p_:_2gd 1m@ut@MQYHIɔN RCvrCwÐp Y )k ogxa,wxyx2-y těfwl   ‘/p <(aS33I Pb G 5  'Rp `iV޴IPrG0PJ;s Z Qs7G@k#@P:` ZH0П :6ٙ^vjDZFzuk9zl  ' A^!Uz9ᅥ%l¥)fa*ky9gpkJ qr2!Xi})Gڧx ,aJ `yV ;y P*a! _fX#q2 H0?cP20g !э6)H:EJj)* Zy:)ORsjTb$ C'! q' + ^Eʬ:BӬ:j4@3S1Pǰ[{q ; __CPAN_FILE__ src/widget/templates/buttons/insertunorderedlist.gif GIF89aGR`'&!,'H0Jl5e]di&mU* j 66_ ; __CPAN_FILE__ src/widget/templates/buttons/list_num_indent.gif GIF89aKvQ'&!,&ƒjN:a7ƆU^Z~rR; __CPAN_FILE__ src/widget/templates/buttons/list_bullet_indent.gif GIF89aGR`'&!,'H0Jl5BYWïfvδXwC ; __CPAN_FILE__ src/widget/templates/buttons/save.gif GIF89adذ-vƘ̗#9Y{r!,p $dyeJ*' úcwcs4$bX|hpIf4FUd0RqXp+rdFc566/!; __CPAN_FILE__ src/widget/templates/buttons/forecolor.gif GIF89a]{ǭ{j\"ΉֆəuŸǶEp+Ζ˗̀.f[̦T~]ʹͺ}WqȨ]ַ=?Z骨OD000!],]\J%5=40\\H[;@[ E [S1&+G([-[IW#X6[C LKF![NOB[VYU)DT'[QP2A":/[7R8TXe-\`@bFZD@; __CPAN_FILE__ src/widget/templates/buttons/hilitecolor.gif GIF89ab󬫬{}WDΖ~]E=qǶOŸTו鴾ЗvʹlȨ.{œu]Ήf"?j\ַƊQ|뫬əp+骭Z薦@@@!b,ba>B 7D,@aaX?LNM;EZ9VK&]'_R3(S.+! P <`FC^*a`-W"̂6YAI b\Q`1)`O#%5$zUс% F  ɖ/H\ıA; __CPAN_FILE__ src/widget/templates/buttons/cancel.gif GIF89a7BB@@zz>>ឞcc//;;66洴TTס""bbxx,,¶ũ֎PP۾]]ࡡ齽##۠!7,pH,kd`lШ<ƮZ%d:[tkI!5뱑-+WN 0F*}{^% (C5000N"75,&5'!// $/3344JIMEA; __CPAN_FILE__ src/widget/templates/buttons/left_to_right.gif GIF89a GFDC@?=<IH54.-1087Q! ,7PI8ͻ&T@8"2[I_! /6)(AOtJD; __CPAN_FILE__ src/widget/templates/buttons/strikethrough.gif GIF89a!?_ȱHg˵@`BbˏQy~䠽Ijࣶ͂QqtqڭQqbֲEiϡviю989Y!!,fpH,Ȥr9NDZ٩v pa*0QphI!ˏ|NC~9  lCB] E DPOKA; __CPAN_FILE__ src/widget/templates/buttons/justifyleft.gif GIF89a65ONDC?>IHJIUTVU9843//-,ed*)54[Y>=10:9onPPa_;:jiCB,+'&!,?'dihEeEHl`:T P a88lv'>4*; __CPAN_FILE__ src/widget/templates/buttons/delete.gif GIF89a!,(@)R=ۃG~悂p N; __CPAN_FILE__ src/widget/templates/buttons/list_num_outdent.gif GIF89aKvQ'&!,&ƒGp1y`*:T; __CPAN_FILE__ src/widget/templates/buttons/insertimage.gif GIF89a\xwp^!5rz[|2klX~F~TgV4pzyrZЃ]dq9_ՒYC}~nC]tSqnYW!`$_G~'٪}yCHqԕL#bV PKdr-RI}ΗMׂ eۑNǸ `t91mً2t^b'TLIwvo!\,\[[\4 KZYY\=/N.6E3C[; B89!,MW[<-"L+(5[U?H%I$Qؼ[)V7>A &2P[1'*S@:<9wO#`p [:LP,3jX Cd5ɓ; __CPAN_FILE__ src/widget/templates/buttons/justifycenter.gif GIF89a:943/.@?NMܬGF[Za`TSgf,+!,1I8}JBLLH0婮Y\@ni el:5; __CPAN_DIR__ src/widget/vml __CPAN_FILE__ src/widget/vml/Chart.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.widget.vml.Chart"], ["require", "dojo.widget.HtmlWidget"], ["require", "dojo.widget.Chart"], ["require", "dojo.math"], ["require", "dojo.html.layout"], ["require", "dojo.gfx.color"]], definePackage:function (dojo) { dojo.provide("dojo.widget.vml.Chart"); dojo.require("dojo.widget.HtmlWidget"); dojo.require("dojo.widget.Chart"); dojo.require("dojo.math"); dojo.require("dojo.html.layout"); dojo.require("dojo.gfx.color"); dojo.widget.defineWidget("dojo.widget.vml.Chart", [dojo.widget.HtmlWidget, dojo.widget.Chart], function () { this.templatePath = null; this.templateCssPath = null; this._isInitialize = false; this.hasData = false; this.vectorNode = null; this.plotArea = null; this.dataGroup = null; this.axisGroup = null; this.properties = {height:0, width:0, defaultWidth:600, defaultHeight:400, plotType:null, padding:{top:10, bottom:2, left:60, right:30}, axes:{x:{plotAt:0, label:"", unitLabel:"", unitType:Number, nUnitsToShow:10, range:{min:0, max:200}}, y:{plotAt:0, label:"", unitLabel:"", unitType:Number, nUnitsToShow:10, range:{min:0, max:200}}}}; }, {parseProperties:function (node) { var bRangeX = false; var bRangeY = false; if (node.getAttribute("width")) { this.properties.width = node.getAttribute("width"); } if (node.getAttribute("height")) { this.properties.height = node.getAttribute("height"); } if (node.getAttribute("plotType")) { this.properties.plotType = node.getAttribute("plotType"); } if (node.getAttribute("padding")) { if (node.getAttribute("padding").indexOf(",") > -1) { var p = node.getAttribute("padding").split(","); } else { var p = node.getAttribute("padding").split(" "); } if (p.length == 1) { var pad = parseFloat(p[0]); this.properties.padding.top = pad; this.properties.padding.right = pad; this.properties.padding.bottom = pad; this.properties.padding.left = pad; } else { if (p.length == 2) { var padV = parseFloat(p[0]); var padH = parseFloat(p[1]); this.properties.padding.top = padV; this.properties.padding.right = padH; this.properties.padding.bottom = padV; this.properties.padding.left = padH; } else { if (p.length == 4) { this.properties.padding.top = parseFloat(p[0]); this.properties.padding.right = parseFloat(p[1]); this.properties.padding.bottom = parseFloat(p[2]); this.properties.padding.left = parseFloat(p[3]); } } } } if (node.getAttribute("rangeX")) { var p = node.getAttribute("rangeX"); if (p.indexOf(",") > -1) { p = p.split(","); } else { p = p.split(" "); } this.properties.axes.x.range.min = parseFloat(p[0]); this.properties.axes.x.range.max = parseFloat(p[1]); bRangeX = true; } if (node.getAttribute("rangeY")) { var p = node.getAttribute("rangeY"); if (p.indexOf(",") > -1) { p = p.split(","); } else { p = p.split(" "); } this.properties.axes.y.range.min = parseFloat(p[0]); this.properties.axes.y.range.max = parseFloat(p[1]); bRangeY = true; } return {rangeX:bRangeX, rangeY:bRangeY}; }, setAxesPlot:function (table) { if (table.getAttribute("axisAt")) { var p = table.getAttribute("axisAt"); if (p.indexOf(",") > -1) { p = p.split(","); } else { p = p.split(" "); } if (!isNaN(parseFloat(p[0]))) { this.properties.axes.x.plotAt = parseFloat(p[0]); } else { if (p[0].toLowerCase() == "ymin") { this.properties.axes.x.plotAt = this.properties.axes.y.range.min; } else { if (p[0].toLowerCase() == "ymax") { this.properties.axes.x.plotAt = this.properties.axes.y.range.max; } } } if (!isNaN(parseFloat(p[1]))) { this.properties.axes.y.plotAt = parseFloat(p[1]); } else { if (p[1].toLowerCase() == "xmin") { this.properties.axes.y.plotAt = this.properties.axes.x.range.min; } else { if (p[1].toLowerCase() == "xmax") { this.properties.axes.y.plotAt = this.properties.axes.x.range.max; } } } } else { this.properties.axes.x.plotAt = this.properties.axes.y.range.min; this.properties.axes.y.plotAt = this.properties.axes.x.range.min; } }, drawVectorNode:function () { if (this.vectorNode) { this.destroy(); } this.vectorNode = document.createElement("div"); this.vectorNode.style.width = this.properties.width + "px"; this.vectorNode.style.height = this.properties.height + "px"; this.vectorNode.style.position = "relative"; this.domNode.appendChild(this.vectorNode); }, drawPlotArea:function () { var plotWidth = this.properties.width - this.properties.padding.left - this.properties.padding.right; var plotHeight = this.properties.height - this.properties.padding.top - this.properties.padding.bottom; if (this.plotArea) { this.plotArea.parentNode.removeChild(this.plotArea); this.plotArea = null; } this.plotArea = document.createElement("div"); this.plotArea.style.position = "absolute"; this.plotArea.style.backgroundColor = "#fff"; this.plotArea.style.top = (this.properties.padding.top) - 2 + "px"; this.plotArea.style.left = (this.properties.padding.left - 1) + "px"; this.plotArea.style.width = plotWidth + "px"; this.plotArea.style.height = plotHeight + "px"; this.plotArea.style.clip = "rect(0 " + plotWidth + " " + plotHeight + " 0)"; this.vectorNode.appendChild(this.plotArea); }, drawDataGroup:function () { var plotWidth = this.properties.width - this.properties.padding.left - this.properties.padding.right; var plotHeight = this.properties.height - this.properties.padding.top - this.properties.padding.bottom; if (this.dataGroup) { this.dataGroup.parentNode.removeChild(this.dataGroup); this.dataGroup = null; } this.dataGroup = document.createElement("div"); this.dataGroup.style.position = "absolute"; this.dataGroup.setAttribute("title", "Data Group"); this.dataGroup.style.top = "0px"; this.dataGroup.style.left = "0px"; this.dataGroup.style.width = plotWidth + "px"; this.dataGroup.style.height = plotHeight + "px"; this.plotArea.appendChild(this.dataGroup); }, drawAxes:function () { var plotWidth = this.properties.width - this.properties.padding.left - this.properties.padding.right; var plotHeight = this.properties.height - this.properties.padding.top - this.properties.padding.bottom; if (this.axisGroup) { this.axisGroup.parentNode.removeChild(this.axisGroup); this.axisGroup = null; } this.axisGroup = document.createElement("div"); this.axisGroup.style.position = "absolute"; this.axisGroup.setAttribute("title", "Axis Group"); this.axisGroup.style.top = "0px"; this.axisGroup.style.left = "0px"; this.axisGroup.style.width = plotWidth + "px"; this.axisGroup.style.height = plotHeight + "px"; this.plotArea.appendChild(this.axisGroup); var stroke = 1; var line = document.createElement("v:line"); var y = dojo.widget.vml.Chart.Plotter.getY(this.properties.axes.x.plotAt, this); line.setAttribute("from", "0px," + y + "px"); line.setAttribute("to", plotWidth + "px," + y + "px"); line.style.position = "absolute"; line.style.top = "0px"; line.style.left = "0px"; line.style.antialias = "false"; line.setAttribute("strokecolor", "#666"); line.setAttribute("strokeweight", stroke * 2 + "px"); this.axisGroup.appendChild(line); var line = document.createElement("v:line"); var x = dojo.widget.vml.Chart.Plotter.getX(this.properties.axes.y.plotAt, this); line.setAttribute("from", x + "px,0px"); line.setAttribute("to", x + "px," + plotHeight + "px"); line.style.position = "absolute"; line.style.top = "0px"; line.style.left = "0px"; line.style.antialias = "false"; line.setAttribute("strokecolor", "#666"); line.setAttribute("strokeweight", stroke * 2 + "px"); this.axisGroup.appendChild(line); var size = 10; var t = document.createElement("div"); t.style.position = "absolute"; t.style.top = (this.properties.height - this.properties.padding.bottom) + "px"; t.style.left = this.properties.padding.left + "px"; t.style.fontFamily = "sans-serif"; t.style.fontSize = size + "px"; t.innerHTML = dojo.math.round(parseFloat(this.properties.axes.x.range.min), 2); this.vectorNode.appendChild(t); t = document.createElement("div"); t.style.position = "absolute"; t.style.top = (this.properties.height - this.properties.padding.bottom) + "px"; t.style.left = (this.properties.width - this.properties.padding.right - size) + "px"; t.style.fontFamily = "sans-serif"; t.style.fontSize = size + "px"; t.innerHTML = dojo.math.round(parseFloat(this.properties.axes.x.range.max), 2); this.vectorNode.appendChild(t); t = document.createElement("div"); t.style.position = "absolute"; t.style.top = (size / 2) + "px"; t.style.left = "0px"; t.style.width = this.properties.padding.left + "px"; t.style.textAlign = "right"; t.style.paddingRight = "4px"; t.style.fontFamily = "sans-serif"; t.style.fontSize = size + "px"; t.innerHTML = dojo.math.round(parseFloat(this.properties.axes.y.range.max), 2); this.vectorNode.appendChild(t); t = document.createElement("div"); t.style.position = "absolute"; t.style.top = (this.properties.height - this.properties.padding.bottom - size) + "px"; t.style.left = "0px"; t.style.width = this.properties.padding.left + "px"; t.style.textAlign = "right"; t.style.paddingRight = "4px"; t.style.fontFamily = "sans-serif"; t.style.fontSize = size + "px"; t.innerHTML = dojo.math.round(parseFloat(this.properties.axes.y.range.min), 2); this.vectorNode.appendChild(t); }, init:function () { if (!this.properties.width || !this.properties.height) { var box = dojo.html.getContentBox(this.domNode); if (!this.properties.width) { this.properties.width = (box.width < 32) ? this.properties.defaultWidth : box.width; } if (!this.properties.height) { this.properties.height = (box.height < 32) ? this.properties.defaultHeight : box.height; } } this.drawVectorNode(); this.drawPlotArea(); this.drawDataGroup(); this.drawAxes(); this.assignColors(); this._isInitialized = true; }, destroy:function () { while (this.domNode.childNodes.length > 0) { this.domNode.removeChild(this.domNode.childNodes[0]); } this.vectorNode = this.plotArea = this.dataGroup = this.axisGroup = null; }, render:function () { if (this.dataGroup) { while (this.dataGroup.childNodes.length > 0) { this.dataGroup.removeChild(this.dataGroup.childNodes[0]); } } else { this.init(); } for (var i = 0; i < this.series.length; i++) { dojo.widget.vml.Chart.Plotter.plot(this.series[i], this); } }, postCreate:function () { var table = this.domNode.getElementsByTagName("table")[0]; if (table) { var ranges = this.parseProperties(table); var bRangeX = false; var bRangeY = false; var axisValues = this.parseData(table); if (!bRangeX) { this.properties.axes.x.range = {min:axisValues.x.min, max:axisValues.x.max}; } if (!bRangeY) { this.properties.axes.y.range = {min:axisValues.y.min, max:axisValues.y.max}; } this.setAxesPlot(table); this.domNode.removeChild(table); } if (this.series.length > 0) { this.render(); } }}); dojo.widget.vml.Chart.Plotter = new function () { var self = this; var plotters = {}; var types = dojo.widget.Chart.PlotTypes; this.getX = function (value, chart) { var v = parseFloat(value); var min = chart.properties.axes.x.range.min; var max = chart.properties.axes.x.range.max; var ofst = 0 - min; min += ofst; max += ofst; v += ofst; var xmin = 0; var xmax = chart.properties.width - chart.properties.padding.left - chart.properties.padding.right; var x = (v * ((xmax - xmin) / max)) + xmin; return x; }; this.getY = function (value, chart) { var v = parseFloat(value); var max = chart.properties.axes.y.range.max; var min = chart.properties.axes.y.range.min; var ofst = 0; if (min < 0) { ofst += Math.abs(min); } min += ofst; max += ofst; v += ofst; var ymin = chart.properties.height - chart.properties.padding.top - chart.properties.padding.bottom; var ymax = 0; var y = (((ymin - ymax) / (max - min)) * (max - v)) + ymax; return y; }; this.addPlotter = function (name, func) { plotters[name] = func; }; this.plot = function (series, chart) { if (series.values.length == 0) { return; } if (series.plotType && plotters[series.plotType]) { return plotters[series.plotType](series, chart); } else { if (chart.plotType && plotters[chart.plotType]) { return plotters[chart.plotType](series, chart); } } }; plotters["bar"] = function (series, chart) { var space = 1; var lastW = 0; var ys = []; var yAxis = self.getY(chart.properties.axes.x.plotAt, chart); var yA = yAxis; for (var i = 0; i < series.values.length; i++) { var x = self.getX(series.values[i].x, chart); var w; if (i == series.values.length - 1) { w = lastW; } else { w = self.getX(series.values[i + 1].x, chart) - x - space; lastW = w; } x -= (w / 2); var y = self.getY(series.values[i].value, chart); var h = Math.abs(yA - y); if (parseFloat(series.values[i].value) < chart.properties.axes.x.plotAt) { y = yA; } var bar = document.createElement("v:rect"); bar.style.position = "absolute"; bar.style.top = y + "px"; bar.style.left = x + "px"; bar.style.width = w + "px"; bar.style.height = h + "px"; bar.setAttribute("fillColor", series.color); bar.setAttribute("stroked", "false"); bar.style.antialias = "false"; bar.setAttribute("title", series.label + " (" + i + "): " + series.values[i].value); var fill = document.createElement("v:fill"); fill.setAttribute("opacity", "0.9"); bar.appendChild(fill); chart.dataGroup.appendChild(bar); } }; plotters["line"] = function (series, chart) { var tension = 1.5; var line = document.createElement("v:shape"); line.setAttribute("strokeweight", "2px"); line.setAttribute("strokecolor", series.color); line.setAttribute("fillcolor", "none"); line.setAttribute("filled", "false"); line.setAttribute("title", series.label); line.setAttribute("coordsize", chart.properties.width + "," + chart.properties.height); line.style.position = "absolute"; line.style.top = "0px"; line.style.left = "0px"; line.style.width = chart.properties.width + "px"; line.style.height = chart.properties.height + "px"; var stroke = document.createElement("v:stroke"); stroke.setAttribute("opacity", "0.85"); line.appendChild(stroke); var path = []; for (var i = 0; i < series.values.length; i++) { var x = Math.round(self.getX(series.values[i].x, chart)); var y = Math.round(self.getY(series.values[i].value, chart)); if (i == 0) { path.push("m"); path.push(x + "," + y); } else { var lastx = Math.round(self.getX(series.values[i - 1].x, chart)); var lasty = Math.round(self.getY(series.values[i - 1].value, chart)); var dx = x - lastx; var dy = y - lasty; path.push("c"); var cx = Math.round((x - (tension - 1) * (dx / tension))); path.push(cx + "," + lasty); cx = Math.round((x - (dx / tension))); path.push(cx + "," + y); path.push(x + "," + y); } } line.setAttribute("path", path.join(" ") + " e"); chart.dataGroup.appendChild(line); }; plotters["area"] = function (series, chart) { var tension = 1.5; var line = document.createElement("v:shape"); line.setAttribute("strokeweight", "1px"); line.setAttribute("strokecolor", series.color); line.setAttribute("fillcolor", series.color); line.setAttribute("title", series.label); line.setAttribute("coordsize", chart.properties.width + "," + chart.properties.height); line.style.position = "absolute"; line.style.top = "0px"; line.style.left = "0px"; line.style.width = chart.properties.width + "px"; line.style.height = chart.properties.height + "px"; var stroke = document.createElement("v:stroke"); stroke.setAttribute("opacity", "0.8"); line.appendChild(stroke); var fill = document.createElement("v:fill"); fill.setAttribute("opacity", "0.4"); line.appendChild(fill); var path = []; for (var i = 0; i < series.values.length; i++) { var x = Math.round(self.getX(series.values[i].x, chart)); var y = Math.round(self.getY(series.values[i].value, chart)); if (i == 0) { path.push("m"); path.push(x + "," + y); } else { var lastx = Math.round(self.getX(series.values[i - 1].x, chart)); var lasty = Math.round(self.getY(series.values[i - 1].value, chart)); var dx = x - lastx; var dy = y - lasty; path.push("c"); var cx = Math.round((x - (tension - 1) * (dx / tension))); path.push(cx + "," + lasty); cx = Math.round((x - (dx / tension))); path.push(cx + "," + y); path.push(x + "," + y); } } path.push("l"); path.push(x + "," + self.getY(0, chart)); path.push("l"); path.push(self.getX(0, chart) + "," + self.getY(0, chart)); line.setAttribute("path", path.join(" ") + " x e"); chart.dataGroup.appendChild(line); }; plotters["scatter"] = function (series, chart) { var r = 6; for (var i = 0; i < series.values.length; i++) { var x = self.getX(series.values[i].x, chart); var y = self.getY(series.values[i].value, chart); var mod = r / 2; var point = document.createElement("v:rect"); point.setAttribute("fillcolor", series.color); point.setAttribute("strokecolor", series.color); point.setAttribute("title", series.label + ": " + series.values[i].value); point.style.position = "absolute"; point.style.rotation = "45"; point.style.top = (y - mod) + "px"; point.style.left = (x - mod) + "px"; point.style.width = r + "px"; point.style.height = r + "px"; var fill = document.createElement("v:fill"); fill.setAttribute("opacity", "0.6"); point.appendChild(fill); chart.dataGroup.appendChild(point); } }; plotters["bubble"] = function (series, chart) { var minR = 1; var min = chart.properties.axes.x.range.min; var max = chart.properties.axes.x.range.max; var ofst = 0 - min; min += ofst; max += ofst; var xmin = chart.properties.padding.left; var xmax = chart.properties.width - chart.properties.padding.right; var factor = (max - min) / (xmax - xmin) * 25; for (var i = 0; i < series.values.length; i++) { var size = series.values[i].size; if (isNaN(parseFloat(size))) { size = minR; } var radius = (parseFloat(size) * factor) / 2; var diameter = radius * 2; var cx = self.getX(series.values[i].x, chart); var cy = self.getY(series.values[i].value, chart); var top = cy - radius; var left = cx - radius; var point = document.createElement("v:oval"); point.setAttribute("fillcolor", series.color); point.setAttribute("title", series.label + ": " + series.values[i].value + " (" + size + ")"); point.setAttribute("stroked", "false"); point.style.position = "absolute"; point.style.top = top + "px"; point.style.left = left + "px"; point.style.width = diameter + "px"; point.style.height = diameter + "px"; var fill = document.createElement("v:fill"); fill.setAttribute("opacity", "0.8"); point.appendChild(fill); chart.dataGroup.appendChild(point); } }; }(); }});

__CPAN_FILE__ src/widget/vml/Chart.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.widget.vml.Chart"); dojo.require("dojo.widget.HtmlWidget"); dojo.require("dojo.widget.Chart"); dojo.require("dojo.math"); dojo.require("dojo.html.layout"); dojo.require("dojo.gfx.color"); dojo.widget.defineWidget("dojo.widget.vml.Chart", [dojo.widget.HtmlWidget, dojo.widget.Chart], function () { this.templatePath = null; this.templateCssPath = null; this._isInitialize = false; this.hasData = false; this.vectorNode = null; this.plotArea = null; this.dataGroup = null; this.axisGroup = null; this.properties = {height:0, width:0, defaultWidth:600, defaultHeight:400, plotType:null, padding:{top:10, bottom:2, left:60, right:30}, axes:{x:{plotAt:0, label:"", unitLabel:"", unitType:Number, nUnitsToShow:10, range:{min:0, max:200}}, y:{plotAt:0, label:"", unitLabel:"", unitType:Number, nUnitsToShow:10, range:{min:0, max:200}}}}; }, {parseProperties:function (node) { var bRangeX = false; var bRangeY = false; if (node.getAttribute("width")) { this.properties.width = node.getAttribute("width"); } if (node.getAttribute("height")) { this.properties.height = node.getAttribute("height"); } if (node.getAttribute("plotType")) { this.properties.plotType = node.getAttribute("plotType"); } if (node.getAttribute("padding")) { if (node.getAttribute("padding").indexOf(",") > -1) { var p = node.getAttribute("padding").split(","); } else { var p = node.getAttribute("padding").split(" "); } if (p.length == 1) { var pad = parseFloat(p[0]); this.properties.padding.top = pad; this.properties.padding.right = pad; this.properties.padding.bottom = pad; this.properties.padding.left = pad; } else { if (p.length == 2) { var padV = parseFloat(p[0]); var padH = parseFloat(p[1]); this.properties.padding.top = padV; this.properties.padding.right = padH; this.properties.padding.bottom = padV; this.properties.padding.left = padH; } else { if (p.length == 4) { this.properties.padding.top = parseFloat(p[0]); this.properties.padding.right = parseFloat(p[1]); this.properties.padding.bottom = parseFloat(p[2]); this.properties.padding.left = parseFloat(p[3]); } } } } if (node.getAttribute("rangeX")) { var p = node.getAttribute("rangeX"); if (p.indexOf(",") > -1) { p = p.split(","); } else { p = p.split(" "); } this.properties.axes.x.range.min = parseFloat(p[0]); this.properties.axes.x.range.max = parseFloat(p[1]); bRangeX = true; } if (node.getAttribute("rangeY")) { var p = node.getAttribute("rangeY"); if (p.indexOf(",") > -1) { p = p.split(","); } else { p = p.split(" "); } this.properties.axes.y.range.min = parseFloat(p[0]); this.properties.axes.y.range.max = parseFloat(p[1]); bRangeY = true; } return {rangeX:bRangeX, rangeY:bRangeY}; }, setAxesPlot:function (table) { if (table.getAttribute("axisAt")) { var p = table.getAttribute("axisAt"); if (p.indexOf(",") > -1) { p = p.split(","); } else { p = p.split(" "); } if (!isNaN(parseFloat(p[0]))) { this.properties.axes.x.plotAt = parseFloat(p[0]); } else { if (p[0].toLowerCase() == "ymin") { this.properties.axes.x.plotAt = this.properties.axes.y.range.min; } else { if (p[0].toLowerCase() == "ymax") { this.properties.axes.x.plotAt = this.properties.axes.y.range.max; } } } if (!isNaN(parseFloat(p[1]))) { this.properties.axes.y.plotAt = parseFloat(p[1]); } else { if (p[1].toLowerCase() == "xmin") { this.properties.axes.y.plotAt = this.properties.axes.x.range.min; } else { if (p[1].toLowerCase() == "xmax") { this.properties.axes.y.plotAt = this.properties.axes.x.range.max; } } } } else { this.properties.axes.x.plotAt = this.properties.axes.y.range.min; this.properties.axes.y.plotAt = this.properties.axes.x.range.min; } }, drawVectorNode:function () { if (this.vectorNode) { this.destroy(); } this.vectorNode = document.createElement("div"); this.vectorNode.style.width = this.properties.width + "px"; this.vectorNode.style.height = this.properties.height + "px"; this.vectorNode.style.position = "relative"; this.domNode.appendChild(this.vectorNode); }, drawPlotArea:function () { var plotWidth = this.properties.width - this.properties.padding.left - this.properties.padding.right; var plotHeight = this.properties.height - this.properties.padding.top - this.properties.padding.bottom; if (this.plotArea) { this.plotArea.parentNode.removeChild(this.plotArea); this.plotArea = null; } this.plotArea = document.createElement("div"); this.plotArea.style.position = "absolute"; this.plotArea.style.backgroundColor = "#fff"; this.plotArea.style.top = (this.properties.padding.top) - 2 + "px"; this.plotArea.style.left = (this.properties.padding.left - 1) + "px"; this.plotArea.style.width = plotWidth + "px"; this.plotArea.style.height = plotHeight + "px"; this.plotArea.style.clip = "rect(0 " + plotWidth + " " + plotHeight + " 0)"; this.vectorNode.appendChild(this.plotArea); }, drawDataGroup:function () { var plotWidth = this.properties.width - this.properties.padding.left - this.properties.padding.right; var plotHeight = this.properties.height - this.properties.padding.top - this.properties.padding.bottom; if (this.dataGroup) { this.dataGroup.parentNode.removeChild(this.dataGroup); this.dataGroup = null; } this.dataGroup = document.createElement("div"); this.dataGroup.style.position = "absolute"; this.dataGroup.setAttribute("title", "Data Group"); this.dataGroup.style.top = "0px"; this.dataGroup.style.left = "0px"; this.dataGroup.style.width = plotWidth + "px"; this.dataGroup.style.height = plotHeight + "px"; this.plotArea.appendChild(this.dataGroup); }, drawAxes:function () { var plotWidth = this.properties.width - this.properties.padding.left - this.properties.padding.right; var plotHeight = this.properties.height - this.properties.padding.top - this.properties.padding.bottom; if (this.axisGroup) { this.axisGroup.parentNode.removeChild(this.axisGroup); this.axisGroup = null; } this.axisGroup = document.createElement("div"); this.axisGroup.style.position = "absolute"; this.axisGroup.setAttribute("title", "Axis Group"); this.axisGroup.style.top = "0px"; this.axisGroup.style.left = "0px"; this.axisGroup.style.width = plotWidth + "px"; this.axisGroup.style.height = plotHeight + "px"; this.plotArea.appendChild(this.axisGroup); var stroke = 1; var line = document.createElement("v:line"); var y = dojo.widget.vml.Chart.Plotter.getY(this.properties.axes.x.plotAt, this); line.setAttribute("from", "0px," + y + "px"); line.setAttribute("to", plotWidth + "px," + y + "px"); line.style.position = "absolute"; line.style.top = "0px"; line.style.left = "0px"; line.style.antialias = "false"; line.setAttribute("strokecolor", "#666"); line.setAttribute("strokeweight", stroke * 2 + "px"); this.axisGroup.appendChild(line); var line = document.createElement("v:line"); var x = dojo.widget.vml.Chart.Plotter.getX(this.properties.axes.y.plotAt, this); line.setAttribute("from", x + "px,0px"); line.setAttribute("to", x + "px," + plotHeight + "px"); line.style.position = "absolute"; line.style.top = "0px"; line.style.left = "0px"; line.style.antialias = "false"; line.setAttribute("strokecolor", "#666"); line.setAttribute("strokeweight", stroke * 2 + "px"); this.axisGroup.appendChild(line); var size = 10; var t = document.createElement("div"); t.style.position = "absolute"; t.style.top = (this.properties.height - this.properties.padding.bottom) + "px"; t.style.left = this.properties.padding.left + "px"; t.style.fontFamily = "sans-serif"; t.style.fontSize = size + "px"; t.innerHTML = dojo.math.round(parseFloat(this.properties.axes.x.range.min), 2); this.vectorNode.appendChild(t); t = document.createElement("div"); t.style.position = "absolute"; t.style.top = (this.properties.height - this.properties.padding.bottom) + "px"; t.style.left = (this.properties.width - this.properties.padding.right - size) + "px"; t.style.fontFamily = "sans-serif"; t.style.fontSize = size + "px"; t.innerHTML = dojo.math.round(parseFloat(this.properties.axes.x.range.max), 2); this.vectorNode.appendChild(t); t = document.createElement("div"); t.style.position = "absolute"; t.style.top = (size / 2) + "px"; t.style.left = "0px"; t.style.width = this.properties.padding.left + "px"; t.style.textAlign = "right"; t.style.paddingRight = "4px"; t.style.fontFamily = "sans-serif"; t.style.fontSize = size + "px"; t.innerHTML = dojo.math.round(parseFloat(this.properties.axes.y.range.max), 2); this.vectorNode.appendChild(t); t = document.createElement("div"); t.style.position = "absolute"; t.style.top = (this.properties.height - this.properties.padding.bottom - size) + "px"; t.style.left = "0px"; t.style.width = this.properties.padding.left + "px"; t.style.textAlign = "right"; t.style.paddingRight = "4px"; t.style.fontFamily = "sans-serif"; t.style.fontSize = size + "px"; t.innerHTML = dojo.math.round(parseFloat(this.properties.axes.y.range.min), 2); this.vectorNode.appendChild(t); }, init:function () { if (!this.properties.width || !this.properties.height) { var box = dojo.html.getContentBox(this.domNode); if (!this.properties.width) { this.properties.width = (box.width < 32) ? this.properties.defaultWidth : box.width; } if (!this.properties.height) { this.properties.height = (box.height < 32) ? this.properties.defaultHeight : box.height; } } this.drawVectorNode(); this.drawPlotArea(); this.drawDataGroup(); this.drawAxes(); this.assignColors(); this._isInitialized = true; }, destroy:function () { while (this.domNode.childNodes.length > 0) { this.domNode.removeChild(this.domNode.childNodes[0]); } this.vectorNode = this.plotArea = this.dataGroup = this.axisGroup = null; }, render:function () { if (this.dataGroup) { while (this.dataGroup.childNodes.length > 0) { this.dataGroup.removeChild(this.dataGroup.childNodes[0]); } } else { this.init(); } for (var i = 0; i < this.series.length; i++) { dojo.widget.vml.Chart.Plotter.plot(this.series[i], this); } }, postCreate:function () { var table = this.domNode.getElementsByTagName("table")[0]; if (table) { var ranges = this.parseProperties(table); var bRangeX = false; var bRangeY = false; var axisValues = this.parseData(table); if (!bRangeX) { this.properties.axes.x.range = {min:axisValues.x.min, max:axisValues.x.max}; } if (!bRangeY) { this.properties.axes.y.range = {min:axisValues.y.min, max:axisValues.y.max}; } this.setAxesPlot(table); this.domNode.removeChild(table); } if (this.series.length > 0) { this.render(); } }}); dojo.widget.vml.Chart.Plotter = new function () { var self = this; var plotters = {}; var types = dojo.widget.Chart.PlotTypes; this.getX = function (value, chart) { var v = parseFloat(value); var min = chart.properties.axes.x.range.min; var max = chart.properties.axes.x.range.max; var ofst = 0 - min; min += ofst; max += ofst; v += ofst; var xmin = 0; var xmax = chart.properties.width - chart.properties.padding.left - chart.properties.padding.right; var x = (v * ((xmax - xmin) / max)) + xmin; return x; }; this.getY = function (value, chart) { var v = parseFloat(value); var max = chart.properties.axes.y.range.max; var min = chart.properties.axes.y.range.min; var ofst = 0; if (min < 0) { ofst += Math.abs(min); } min += ofst; max += ofst; v += ofst; var ymin = chart.properties.height - chart.properties.padding.top - chart.properties.padding.bottom; var ymax = 0; var y = (((ymin - ymax) / (max - min)) * (max - v)) + ymax; return y; }; this.addPlotter = function (name, func) { plotters[name] = func; }; this.plot = function (series, chart) { if (series.values.length == 0) { return; } if (series.plotType && plotters[series.plotType]) { return plotters[series.plotType](series, chart); } else { if (chart.plotType && plotters[chart.plotType]) { return plotters[chart.plotType](series, chart); } } }; plotters["bar"] = function (series, chart) { var space = 1; var lastW = 0; var ys = []; var yAxis = self.getY(chart.properties.axes.x.plotAt, chart); var yA = yAxis; for (var i = 0; i < series.values.length; i++) { var x = self.getX(series.values[i].x, chart); var w; if (i == series.values.length - 1) { w = lastW; } else { w = self.getX(series.values[i + 1].x, chart) - x - space; lastW = w; } x -= (w / 2); var y = self.getY(series.values[i].value, chart); var h = Math.abs(yA - y); if (parseFloat(series.values[i].value) < chart.properties.axes.x.plotAt) { y = yA; } var bar = document.createElement("v:rect"); bar.style.position = "absolute"; bar.style.top = y + "px"; bar.style.left = x + "px"; bar.style.width = w + "px"; bar.style.height = h + "px"; bar.setAttribute("fillColor", series.color); bar.setAttribute("stroked", "false"); bar.style.antialias = "false"; bar.setAttribute("title", series.label + " (" + i + "): " + series.values[i].value); var fill = document.createElement("v:fill"); fill.setAttribute("opacity", "0.9"); bar.appendChild(fill); chart.dataGroup.appendChild(bar); } }; plotters["line"] = function (series, chart) { var tension = 1.5; var line = document.createElement("v:shape"); line.setAttribute("strokeweight", "2px"); line.setAttribute("strokecolor", series.color); line.setAttribute("fillcolor", "none"); line.setAttribute("filled", "false"); line.setAttribute("title", series.label); line.setAttribute("coordsize", chart.properties.width + "," + chart.properties.height); line.style.position = "absolute"; line.style.top = "0px"; line.style.left = "0px"; line.style.width = chart.properties.width + "px"; line.style.height = chart.properties.height + "px"; var stroke = document.createElement("v:stroke"); stroke.setAttribute("opacity", "0.85"); line.appendChild(stroke); var path = []; for (var i = 0; i < series.values.length; i++) { var x = Math.round(self.getX(series.values[i].x, chart)); var y = Math.round(self.getY(series.values[i].value, chart)); if (i == 0) { path.push("m"); path.push(x + "," + y); } else { var lastx = Math.round(self.getX(series.values[i - 1].x, chart)); var lasty = Math.round(self.getY(series.values[i - 1].value, chart)); var dx = x - lastx; var dy = y - lasty; path.push("c"); var cx = Math.round((x - (tension - 1) * (dx / tension))); path.push(cx + "," + lasty); cx = Math.round((x - (dx / tension))); path.push(cx + "," + y); path.push(x + "," + y); } } line.setAttribute("path", path.join(" ") + " e"); chart.dataGroup.appendChild(line); }; plotters["area"] = function (series, chart) { var tension = 1.5; var line = document.createElement("v:shape"); line.setAttribute("strokeweight", "1px"); line.setAttribute("strokecolor", series.color); line.setAttribute("fillcolor", series.color); line.setAttribute("title", series.label); line.setAttribute("coordsize", chart.properties.width + "," + chart.properties.height); line.style.position = "absolute"; line.style.top = "0px"; line.style.left = "0px"; line.style.width = chart.properties.width + "px"; line.style.height = chart.properties.height + "px"; var stroke = document.createElement("v:stroke"); stroke.setAttribute("opacity", "0.8"); line.appendChild(stroke); var fill = document.createElement("v:fill"); fill.setAttribute("opacity", "0.4"); line.appendChild(fill); var path = []; for (var i = 0; i < series.values.length; i++) { var x = Math.round(self.getX(series.values[i].x, chart)); var y = Math.round(self.getY(series.values[i].value, chart)); if (i == 0) { path.push("m"); path.push(x + "," + y); } else { var lastx = Math.round(self.getX(series.values[i - 1].x, chart)); var lasty = Math.round(self.getY(series.values[i - 1].value, chart)); var dx = x - lastx; var dy = y - lasty; path.push("c"); var cx = Math.round((x - (tension - 1) * (dx / tension))); path.push(cx + "," + lasty); cx = Math.round((x - (dx / tension))); path.push(cx + "," + y); path.push(x + "," + y); } } path.push("l"); path.push(x + "," + self.getY(0, chart)); path.push("l"); path.push(self.getX(0, chart) + "," + self.getY(0, chart)); line.setAttribute("path", path.join(" ") + " x e"); chart.dataGroup.appendChild(line); }; plotters["scatter"] = function (series, chart) { var r = 6; for (var i = 0; i < series.values.length; i++) { var x = self.getX(series.values[i].x, chart); var y = self.getY(series.values[i].value, chart); var mod = r / 2; var point = document.createElement("v:rect"); point.setAttribute("fillcolor", series.color); point.setAttribute("strokecolor", series.color); point.setAttribute("title", series.label + ": " + series.values[i].value); point.style.position = "absolute"; point.style.rotation = "45"; point.style.top = (y - mod) + "px"; point.style.left = (x - mod) + "px"; point.style.width = r + "px"; point.style.height = r + "px"; var fill = document.createElement("v:fill"); fill.setAttribute("opacity", "0.6"); point.appendChild(fill); chart.dataGroup.appendChild(point); } }; plotters["bubble"] = function (series, chart) { var minR = 1; var min = chart.properties.axes.x.range.min; var max = chart.properties.axes.x.range.max; var ofst = 0 - min; min += ofst; max += ofst; var xmin = chart.properties.padding.left; var xmax = chart.properties.width - chart.properties.padding.right; var factor = (max - min) / (xmax - xmin) * 25; for (var i = 0; i < series.values.length; i++) { var size = series.values[i].size; if (isNaN(parseFloat(size))) { size = minR; } var radius = (parseFloat(size) * factor) / 2; var diameter = radius * 2; var cx = self.getX(series.values[i].x, chart); var cy = self.getY(series.values[i].value, chart); var top = cy - radius; var left = cx - radius; var point = document.createElement("v:oval"); point.setAttribute("fillcolor", series.color); point.setAttribute("title", series.label + ": " + series.values[i].value + " (" + size + ")"); point.setAttribute("stroked", "false"); point.style.position = "absolute"; point.style.top = top + "px"; point.style.left = left + "px"; point.style.width = diameter + "px"; point.style.height = diameter + "px"; var fill = document.createElement("v:fill"); fill.setAttribute("opacity", "0.8"); point.appendChild(fill); chart.dataGroup.appendChild(point); } }; }();

__CPAN_DIR__ src/lfx __CPAN_FILE__ src/lfx/toggle.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.lfx.toggle"], ["require", "dojo.lfx.*"]], definePackage:function (dojo) { dojo.provide("dojo.lfx.toggle"); dojo.require("dojo.lfx.*"); dojo.lfx.toggle.plain = {show:function (node, duration, easing, callback) { dojo.html.show(node); if (dojo.lang.isFunction(callback)) { callback(); } }, hide:function (node, duration, easing, callback) { dojo.html.hide(node); if (dojo.lang.isFunction(callback)) { callback(); } }}; dojo.lfx.toggle.fade = {show:function (node, duration, easing, callback) { dojo.lfx.fadeShow(node, duration, easing, callback).play(); }, hide:function (node, duration, easing, callback) { dojo.lfx.fadeHide(node, duration, easing, callback).play(); }}; dojo.lfx.toggle.wipe = {show:function (node, duration, easing, callback) { dojo.lfx.wipeIn(node, duration, easing, callback).play(); }, hide:function (node, duration, easing, callback) { dojo.lfx.wipeOut(node, duration, easing, callback).play(); }}; dojo.lfx.toggle.explode = {show:function (node, duration, easing, callback, explodeSrc) { dojo.lfx.explode(explodeSrc || {x:0, y:0, width:0, height:0}, node, duration, easing, callback).play(); }, hide:function (node, duration, easing, callback, explodeSrc) { dojo.lfx.implode(node, explodeSrc || {x:0, y:0, width:0, height:0}, duration, easing, callback).play(); }}; }});

__CPAN_FILE__ src/lfx/Animation.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.lfx.Animation"], ["require", "dojo.lang.func"]], definePackage:function (dojo) { dojo.provide("dojo.lfx.Animation"); dojo.require("dojo.lang.func"); dojo.lfx.Line = function (start, end) { this.start = start; this.end = end; if (dojo.lang.isArray(start)) { var diff = []; dojo.lang.forEach(this.start, function (s, i) { diff[i] = this.end[i] - s; }, this); this.getValue = function (n) { var res = []; dojo.lang.forEach(this.start, function (s, i) { res[i] = (diff[i] * n) + s; }, this); return res; }; } else { var diff = end - start; this.getValue = function (n) { return (diff * n) + this.start; }; } }; if ((dojo.render.html.khtml) && (!dojo.render.html.safari)) { dojo.lfx.easeDefault = function (n) { return (parseFloat("0.5") + ((Math.sin((n + parseFloat("1.5")) * Math.PI)) / 2)); }; } else { dojo.lfx.easeDefault = function (n) { return (0.5 + ((Math.sin((n + 1.5) * Math.PI)) / 2)); }; } dojo.lfx.easeIn = function (n) { return Math.pow(n, 3); }; dojo.lfx.easeOut = function (n) { return (1 - Math.pow(1 - n, 3)); }; dojo.lfx.easeInOut = function (n) { return ((3 * Math.pow(n, 2)) - (2 * Math.pow(n, 3))); }; dojo.lfx.IAnimation = function () { }; dojo.lang.extend(dojo.lfx.IAnimation, {curve:null, duration:1000, easing:null, repeatCount:0, rate:10, handler:null, beforeBegin:null, onBegin:null, onAnimate:null, onEnd:null, onPlay:null, onPause:null, onStop:null, play:null, pause:null, stop:null, connect:function (evt, scope, newFunc) { if (!newFunc) { newFunc = scope; scope = this; } newFunc = dojo.lang.hitch(scope, newFunc); var oldFunc = this[evt] || function () { }; this[evt] = function () { var ret = oldFunc.apply(this, arguments); newFunc.apply(this, arguments); return ret; }; return this; }, fire:function (evt, args) { if (this[evt]) { this[evt].apply(this, (args || [])); } return this; }, repeat:function (count) { this.repeatCount = count; return this; }, _active:false, _paused:false}); dojo.lfx.Animation = function (handlers, duration, curve, easing, repeatCount, rate) { dojo.lfx.IAnimation.call(this); if (dojo.lang.isNumber(handlers) || (!handlers && duration.getValue)) { rate = repeatCount; repeatCount = easing; easing = curve; curve = duration; duration = handlers; handlers = null; } else { if (handlers.getValue || dojo.lang.isArray(handlers)) { rate = easing; repeatCount = curve; easing = duration; curve = handlers; duration = null; handlers = null; } } if (dojo.lang.isArray(curve)) { this.curve = new dojo.lfx.Line(curve[0], curve[1]); } else { this.curve = curve; } if (duration != null && duration > 0) { this.duration = duration; } if (repeatCount) { this.repeatCount = repeatCount; } if (rate) { this.rate = rate; } if (handlers) { dojo.lang.forEach(["handler", "beforeBegin", "onBegin", "onEnd", "onPlay", "onStop", "onAnimate"], function (item) { if (handlers[item]) { this.connect(item, handlers[item]); } }, this); } if (easing && dojo.lang.isFunction(easing)) { this.easing = easing; } }; dojo.inherits(dojo.lfx.Animation, dojo.lfx.IAnimation); dojo.lang.extend(dojo.lfx.Animation, {_startTime:null, _endTime:null, _timer:null, _percent:0, _startRepeatCount:0, play:function (delay, gotoStart) { if (gotoStart) { clearTimeout(this._timer); this._active = false; this._paused = false; this._percent = 0; } else { if (this._active && !this._paused) { return this; } } this.fire("handler", ["beforeBegin"]); this.fire("beforeBegin"); if (delay > 0) { setTimeout(dojo.lang.hitch(this, function () { this.play(null, gotoStart); }), delay); return this; } this._startTime = new Date().valueOf(); if (this._paused) { this._startTime -= (this.duration * this._percent / 100); } this._endTime = this._startTime + this.duration; this._active = true; this._paused = false; var step = this._percent / 100; var value = this.curve.getValue(step); if (this._percent == 0) { if (!this._startRepeatCount) { this._startRepeatCount = this.repeatCount; } this.fire("handler", ["begin", value]); this.fire("onBegin", [value]); } this.fire("handler", ["play", value]); this.fire("onPlay", [value]); this._cycle(); return this; }, pause:function () { clearTimeout(this._timer); if (!this._active) { return this; } this._paused = true; var value = this.curve.getValue(this._percent / 100); this.fire("handler", ["pause", value]); this.fire("onPause", [value]); return this; }, gotoPercent:function (pct, andPlay) { clearTimeout(this._timer); this._active = true; this._paused = true; this._percent = pct; if (andPlay) { this.play(); } return this; }, stop:function (gotoEnd) { clearTimeout(this._timer); var step = this._percent / 100; if (gotoEnd) { step = 1; } var value = this.curve.getValue(step); this.fire("handler", ["stop", value]); this.fire("onStop", [value]); this._active = false; this._paused = false; return this; }, status:function () { if (this._active) { return this._paused ? "paused" : "playing"; } else { return "stopped"; } return this; }, _cycle:function () { clearTimeout(this._timer); if (this._active) { var curr = new Date().valueOf(); var step = (curr - this._startTime) / (this._endTime - this._startTime); if (step >= 1) { step = 1; this._percent = 100; } else { this._percent = step * 100; } if ((this.easing) && (dojo.lang.isFunction(this.easing))) { step = this.easing(step); } var value = this.curve.getValue(step); this.fire("handler", ["animate", value]); this.fire("onAnimate", [value]); if (step < 1) { this._timer = setTimeout(dojo.lang.hitch(this, "_cycle"), this.rate); } else { this._active = false; this.fire("handler", ["end"]); this.fire("onEnd"); if (this.repeatCount > 0) { this.repeatCount--; this.play(null, true); } else { if (this.repeatCount == -1) { this.play(null, true); } else { if (this._startRepeatCount) { this.repeatCount = this._startRepeatCount; this._startRepeatCount = 0; } } } } } return this; }}); dojo.lfx.Combine = function (animations) { dojo.lfx.IAnimation.call(this); this._anims = []; this._animsEnded = 0; var anims = arguments; if (anims.length == 1 && (dojo.lang.isArray(anims[0]) || dojo.lang.isArrayLike(anims[0]))) { anims = anims[0]; } dojo.lang.forEach(anims, function (anim) { this._anims.push(anim); anim.connect("onEnd", dojo.lang.hitch(this, "_onAnimsEnded")); }, this); }; dojo.inherits(dojo.lfx.Combine, dojo.lfx.IAnimation); dojo.lang.extend(dojo.lfx.Combine, {_animsEnded:0, play:function (delay, gotoStart) { if (!this._anims.length) { return this; } this.fire("beforeBegin"); if (delay > 0) { setTimeout(dojo.lang.hitch(this, function () { this.play(null, gotoStart); }), delay); return this; } if (gotoStart || this._anims[0].percent == 0) { this.fire("onBegin"); } this.fire("onPlay"); this._animsCall("play", null, gotoStart); return this; }, pause:function () { this.fire("onPause"); this._animsCall("pause"); return this; }, stop:function (gotoEnd) { this.fire("onStop"); this._animsCall("stop", gotoEnd); return this; }, _onAnimsEnded:function () { this._animsEnded++; if (this._animsEnded >= this._anims.length) { this.fire("onEnd"); } return this; }, _animsCall:function (funcName) { var args = []; if (arguments.length > 1) { for (var i = 1; i < arguments.length; i++) { args.push(arguments[i]); } } var _this = this; dojo.lang.forEach(this._anims, function (anim) { anim[funcName](args); }, _this); return this; }}); dojo.lfx.Chain = function (animations) { dojo.lfx.IAnimation.call(this); this._anims = []; this._currAnim = -1; var anims = arguments; if (anims.length == 1 && (dojo.lang.isArray(anims[0]) || dojo.lang.isArrayLike(anims[0]))) { anims = anims[0]; } var _this = this; dojo.lang.forEach(anims, function (anim, i, anims_arr) { this._anims.push(anim); if (i < anims_arr.length - 1) { anim.connect("onEnd", dojo.lang.hitch(this, "_playNext")); } else { anim.connect("onEnd", dojo.lang.hitch(this, function () { this.fire("onEnd"); })); } }, this); }; dojo.inherits(dojo.lfx.Chain, dojo.lfx.IAnimation); dojo.lang.extend(dojo.lfx.Chain, {_currAnim:-1, play:function (delay, gotoStart) { if (!this._anims.length) { return this; } if (gotoStart || !this._anims[this._currAnim]) { this._currAnim = 0; } var currentAnimation = this._anims[this._currAnim]; this.fire("beforeBegin"); if (delay > 0) { setTimeout(dojo.lang.hitch(this, function () { this.play(null, gotoStart); }), delay); return this; } if (currentAnimation) { if (this._currAnim == 0) { this.fire("handler", ["begin", this._currAnim]); this.fire("onBegin", [this._currAnim]); } this.fire("onPlay", [this._currAnim]); currentAnimation.play(null, gotoStart); } return this; }, pause:function () { if (this._anims[this._currAnim]) { this._anims[this._currAnim].pause(); this.fire("onPause", [this._currAnim]); } return this; }, playPause:function () { if (this._anims.length == 0) { return this; } if (this._currAnim == -1) { this._currAnim = 0; } var currAnim = this._anims[this._currAnim]; if (currAnim) { if (!currAnim._active || currAnim._paused) { this.play(); } else { this.pause(); } } return this; }, stop:function () { var currAnim = this._anims[this._currAnim]; if (currAnim) { currAnim.stop(); this.fire("onStop", [this._currAnim]); } return currAnim; }, _playNext:function () { if (this._currAnim == -1 || this._anims.length == 0) { return this; } this._currAnim++; if (this._anims[this._currAnim]) { this._anims[this._currAnim].play(null, true); } return this; }}); dojo.lfx.combine = function (animations) { var anims = arguments; if (dojo.lang.isArray(arguments[0])) { anims = arguments[0]; } if (anims.length == 1) { return anims[0]; } return new dojo.lfx.Combine(anims); }; dojo.lfx.chain = function (animations) { var anims = arguments; if (dojo.lang.isArray(arguments[0])) { anims = arguments[0]; } if (anims.length == 1) { return anims[0]; } return new dojo.lfx.Chain(anims); }; }});

__CPAN_FILE__ src/lfx/rounded.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.lfx.rounded"], ["require", "dojo.lang.common"], ["require", "dojo.html.common"], ["require", "dojo.html.style"], ["require", "dojo.html.display"], ["require", "dojo.html.layout"]], definePackage:function (dojo) { dojo.provide("dojo.lfx.rounded"); dojo.require("dojo.lang.common"); dojo.require("dojo.html.common"); dojo.require("dojo.html.style"); dojo.require("dojo.html.display"); dojo.require("dojo.html.layout"); dojo.lfx.rounded = function (settings) { var options = {validTags:settings.validTags || ["div"], autoPad:settings.autoPad != null ? settings.autoPad : true, antiAlias:settings.antiAlias != null ? settings.antiAlias : true, radii:{tl:(settings.tl && settings.tl.radius != null) ? settings.tl.radius : 5, tr:(settings.tr && settings.tr.radius != null) ? settings.tr.radius : 5, bl:(settings.bl && settings.bl.radius != null) ? settings.bl.radius : 5, br:(settings.br && settings.br.radius != null) ? settings.br.radius : 5}}; var nodes; if (typeof (arguments[1]) == "string") { nodes = dojo.html.getElementsByClass(arguments[1]); } else { if (dojo.lang.isArrayLike(arguments[1])) { nodes = arguments[1]; for (var i = 0; i < nodes.length; i++) { nodes[i] = dojo.byId(nodes[i]); } } } if (nodes.length == 0) { return; } for (var i = 0; i < nodes.length; i++) { dojo.lfx.rounded.applyCorners(options, nodes[i]); } }; dojo.lfx.rounded.applyCorners = function (options, node) { var top = null; var bottom = null; var contentNode = null; var fns = dojo.lfx.rounded._fns; var width = node.offsetWidth; var height = node.offsetHeight; var borderWidth = parseInt(dojo.html.getComputedStyle(node, "border-top-width")); var borderColor = dojo.html.getComputedStyle(node, "border-top-color"); var color = dojo.html.getComputedStyle(node, "background-color"); var bgImage = dojo.html.getComputedStyle(node, "background-image"); var position = dojo.html.getComputedStyle(node, "position"); var padding = parseInt(dojo.html.getComputedStyle(node, "padding-top")); var format = {height:height, width:width, borderWidth:borderWidth, color:fns.getRGB(color), padding:padding, borderColor:fns.getRGB(borderColor), borderString:borderWidth + "px" + " solid " + fns.getRGB(borderColor), bgImage:((bgImage != "none") ? bgImage : ""), content:node.innerHTML}; if (!dojo.html.isPositionAbsolute(node)) { node.style.position = "relative"; } node.style.padding = "0px"; if (dojo.render.html.ie && width == "auto" && height == "auto") { node.style.width = "100%"; } if (options.autoPad && format.padding > 0) { node.innerHTML = ""; } var topHeight = Math.max(options.radii.tl, options.radii.tr); var bottomHeight = Math.max(options.radii.bl, options.radii.br); if (options.radii.tl || options.radii.tr) { top = document.createElement("div"); top.style.width = "100%"; top.style.fontSize = "1px"; top.style.overflow = "hidden"; top.style.position = "absolute"; top.style.paddingLeft = format.borderWidth + "px"; top.style.paddingRight = format.borderWidth + "px"; top.style.height = topHeight + "px"; top.style.top = (0 - topHeight) + "px"; top.style.left = (0 - format.borderWidth) + "px"; node.appendChild(top); } if (options.radii.bl || options.radii.br) { bottom = document.createElement("div"); bottom.style.width = "100%"; bottom.style.fontSize = "1px"; bottom.style.overflow = "hidden"; bottom.style.position = "absolute"; bottom.style.paddingLeft = format.borderWidth + "px"; bottom.style.paddingRight = format.borderWidth + "px"; bottom.style.height = bottomHeight + "px"; bottom.style.bottom = (0 - bottomHeight) + "px"; bottom.style.left = (0 - format.borderWidth) + "px"; node.appendChild(bottom); } if (top) { node.style.borderTopWidth = "0px"; } if (bottom) { node.style.borderBottomWidth = "0px"; } var corners = ["tr", "tl", "br", "bl"]; for (var i = 0; i < corners.length; i++) { var cc = corners[i]; if (options.radii[cc] == 0) { if ((cc.charAt(0) == "t" && top) || (cc.charAt(0) == "b" && bottom)) { var corner = document.createElement("div"); corner.style.position = "relative"; corner.style.fontSize = "1px;"; corner.style.overflow = "hidden"; if (format.bgImage == "") { corner.style.backgroundColor = format.color; } else { corner.style.backgroundImage = format.bgImage; } switch (cc) { case "tl": corner.style.height = topHeight - format.borderWidth + "px"; corner.style.marginRight = options.radii[cc] - (format.borderWidth * 2) + "px"; corner.style.borderLeft = format.borderString; corner.style.borderTop = format.borderString; corner.style.left = -format.borderWidth + "px"; break; case "tr": corner.style.height = topHeight - format.borderWidth + "px"; corner.style.marginLeft = options.radii[cc] - (format.borderWidth * 2) + "px"; corner.style.borderRight = format.borderString; corner.style.borderTop = format.borderString; corner.style.backgroundPosition = "-" + (topHeight - format.borderWidth) + "px 0px"; corner.style.left = format.borderWidth + "px"; break; case "bl": corner.style.height = bottomHeight - format.borderWidth + "px"; corner.style.marginRight = options.radii[cc] - (format.borderWidth * 2) + "px"; corner.style.borderLeft = format.borderString; corner.style.borderBottom = format.borderString; corner.style.left = format.borderWidth + "px"; corner.style.backgroundPosition = "-" + format.borderWidth + "px -" + (format.height + (bottomHeight + format.borderWidth)) + "px"; break; case "br": corner.style.height = bottomHeight - format.borderWidth + "px"; corner.style.marginLeft = options.radii[cc] - (format.borderWidth * 2) + "px"; corner.style.borderRight = format.borderString; corner.style.borderBottom = format.borderString; corner.style.left = format.borderWidth + "px"; corner.style.backgroundPosition = "-" + (bottomHeight + format.borderWidth) + "px -" + (format.height + (bottomHeight + format.borderWidth)) + "px"; break; } } } else { var corner = document.createElement("div"); corner.style.height = options.radii[cc] + "px"; corner.style.width = options.radii[cc] + "px"; corner.style.position = "absolute"; corner.style.fontSize = "1px"; corner.style.overflow = "hidden"; var borderRadius = Math.floor(options.radii[cc] - format.borderWidth); for (var x = 0, j = options.radii[cc]; x < j; x++) { var y1 = Math.floor(Math.sqrt(Math.pow(borderRadius, 2) - Math.pow((x + 1), 2))) - 1; if ((x + 1) >= borderRadius) { var y1 = -1; } var y2 = Math.ceil(Math.sqrt(Math.pow(borderRadius, 2) - Math.pow(x, 2))); if (x >= borderRadius) { y2 = -1; } var y3 = Math.floor(Math.sqrt(Math.pow(j, 2) - Math.pow((x + 1), 2))) - 1; if ((x + 1) >= j) { y3 = -1; } var y4 = Math.ceil(Math.sqrt(Math.pow(j, 2) - Math.pow(x, 2))); if (x >= j) { y4 = -1; } if (y1 > -1) { fns.draw(x, 0, format.color, 100, (y1 + 1), corner, -1, j, topHeight, format); } for (var y = (y1 + 1); y < y2; y++) { if (options.antiAlias) { if (format.bgImage != "") { var fract = fns.fraction(x, y, borderRadius) * 100; if (fract < 30) { fns.draw(x, y, format.borderColor, 100, 1, corner, 0, options.radii[cc], topHeight, format); } else { fns.draw(x, y, format.borderColor, 100, 1, corner, -1, options.radii[cc], topHeight, format); } } else { var clr = fns.blend(format.color, format.borderColor, fns.fraction(x, y, borderRadius)); fns.draw(x, y, clr, 100, 1, corner, 0, options.radii[cc], topHeight, format); } } } if (options.antiAlias) { if (y3 >= y2) { if (y2 == -1) { y2 = 0; } fns.draw(x, y2, format.borderColor, 100, (y3 - y2 + 1), corner, 0, 0, topHeight, format); } else { if (y3 >= y1) { fns.draw(x, (y1 + 1), format.borderColor, 100, (y3 - y1), corner, 0, 0, topHeight, format); } } for (var y = (y3 + 1); y < y4; y++) { fns.draw(x, y, format.borderColor, (fns.fraction(x, y, j) * 100), 1, corner, (format.borderWidth > 0 ? 0 : -1), options.radii[cc], topHeight, format); } } else { y3 = y1; } } if (cc != "br") { for (var t = 0, k = corner.childNodes.length; t < k; t++) { var bar = corner.childNodes[t]; var barTop = parseInt(dojo.html.getComputedStyle(bar, "top")); var barLeft = parseInt(dojo.html.getComputedStyle(bar, "left")); var barHeight = parseInt(dojo.html.getComputedStyle(bar, "height")); if (cc.charAt(1) == "l") { bar.style.left = (options.radii[cc] - barLeft - 1) + "px"; } if (cc == "tr") { bar.style.top = (options.radii[cc] - barHeight - barTop) + "px"; bar.style.backgroundPosition = "-" + Math.abs((format.width - options.radii[cc] + format.borderWidth) + barLeft) + "px -" + Math.abs(options.radii[cc] - barHeight - barTop - format.borderWidth) + "px"; } else { if (cc == "tl") { bar.style.top = (options.radii[cc] - barHeight - barTop) + "px"; bar.style.backgroundPosition = "-" + Math.abs((options.radii[cc] - barLeft - 1) - format.borderWidth) + "px -" + Math.abs(options.radii[cc] - barHeight - barTop - format.borderWidth) + "px"; } else { bar.style.backgroundPosition = "-" + Math.abs((options.radii[cc] + barLeft) + format.borderWidth) + "px -" + Math.abs((format.height + options.radii[cc] + barTop) - format.borderWidth) + "px"; } } } } } if (corner) { var psn = []; if (cc.charAt(0) == "t") { psn.push("top"); } else { psn.push("bottom"); } if (cc.charAt(1) == "l") { psn.push("left"); } else { psn.push("right"); } if (corner.style.position == "absolute") { for (var z = 0; z < psn.length; z++) { corner.style[psn[z]] = "0px"; } } if (psn[0] == "top") { if (top) { top.appendChild(corner); } } else { if (bottom) { bottom.appendChild(corner); } } } } var diff = {t:Math.abs(options.radii.tl - options.radii.tr), b:Math.abs(options.radii.bl - options.radii.br)}; for (var z in diff) { var smaller = (options.radii[z + "l"] < options.radii[z + "r"] ? z + "l" : z + "r"); var filler = document.createElement("div"); filler.style.height = diff[z] + "px"; filler.style.width = options.radii[smaller] + "px"; filler.style.position = "absolute"; filler.style.fontSize = "1px"; filler.style.overflow = "hidden"; filler.style.backgroundColor = format.color; switch (smaller) { case "tl": filler.style.bottom = "0px"; filler.style.left = "0px"; filler.style.borderLeft = format.borderString; top.appendChild(filler); break; case "tr": filler.style.bottom = "0px"; filler.style.right = "0px"; filler.style.borderRight = format.borderString; top.appendChild(filler); break; case "bl": filler.style.top = "0px"; filler.style.left = "0px"; filler.style.borderLeft = format.borderString; bottom.appendChild(filler); break; case "br": filler.style.top = "0px"; filler.style.right = "0px"; filler.style.borderRight = format.borderString; bottom.appendChild(filler); break; } var fillBar = document.createElement("div"); fillBar.style.position = "relative"; fillBar.style.fontSize = "1px"; fillBar.style.overflow = "hidden"; fillBar.style.backgroundColor = format.color; fillBar.style.backgroundImage = format.bgImage; if (z == "t") { if (top) { if (options.radii.tl && options.radii.tr) { fillBar.style.height = (topHeight - format.borderWidth) + "px"; fillBar.style.marginLeft = (options.radii.tl - format.borderWidth) + "px"; fillBar.style.marginRight = (options.radii.tr - format.borderWidth) + "px"; fillBar.style.borderTop = format.borderString; if (format.bgImage != "") { fillBar.style.backgroundPosition = "-" + (topHeight + format.borderWidth) + "px 0px"; } } top.appendChild(fillBar); } } else { if (bottom) { if (options.radii.bl && options.radii.br) { fillBar.style.height = (bottomHeight - format.borderWidth) + "px"; fillBar.style.marginLeft = (options.radii.bl - format.borderWidth) + "px"; fillBar.style.marginRight = (options.radii.br - format.borderWidth) + "px"; fillBar.style.borderBottom = format.borderString; if (format.bgImage != "") { fillBar.style.backgroundPosition = "-" + (bottomHeight + format.borderWidth) + "px -" + (format.height + (topHeight + format.borderWidth)) + "px"; } } bottom.appendChild(fillBar); } } } if (options.autoPad && format.padding > 0) { var content = document.createElement("div"); content.style.position = "relative"; content.innerHTML = format.content; content.className = "autoPadDiv"; if (topHeight < format.padding) { content.style.paddingTop = Math.abs(topHeight - format.padding) + "px"; } if (bottomHeight < format.padding) { content.style.paddingBottom = Math.abs(bottomHeight - format.padding) + "px"; } content.style.paddingLeft = format.padding + "px"; content.style.paddingRight = format.padding + "px"; node.appendChild(content); } }; var count = 0; dojo.lfx.rounded._fns = {blend:function (clr1, clr2, frac) { var c1 = {r:parseInt(clr1.substr(1, 2), 16), g:parseInt(clr1.substr(3, 2), 16), b:parseInt(clr1.substr(5, 2), 16)}; var c2 = {r:parseInt(clr2.substr(1, 2), 16), g:parseInt(clr2.substr(3, 2), 16), b:parseInt(clr2.substr(5, 2), 16)}; if (frac > 1 || frac < 0) { frac = 1; } var ret = [Math.min(Math.max(Math.round((c1.r * frac) + (c2.r * (1 - frac))), 0), 255), Math.min(Math.max(Math.round((c1.g * frac) + (c2.g * (1 - frac))), 0), 255), Math.min(Math.max(Math.round((c1.b * frac) + (c2.b * (1 - frac))), 0), 255)]; for (var i = 0; i < ret.length; i++) { var n = ret[i].toString(16); if (n.length < 2) { n = "0" + n; } ret[i] = n; } return "#" + ret.join(""); }, fraction:function (x, y, r) { var frac = 0; var xval = []; var yval = []; var point = 0; var whatsides = ""; var intersect = Math.sqrt((Math.pow(r, 2) - Math.pow(x, 2))); if (intersect >= y && intersect < (y + 1)) { whatsides = "Left"; xval[point] = 0; yval[point++] = intersect - y; } intersect = Math.sqrt((Math.pow(r, 2) - Math.pow(y + 1, 2))); if (intersect >= x && intersect < (x + 1)) { whatsides += "Top"; xval[point] = intersect - x; yval[point++] = 1; } intersect = Math.sqrt((Math.pow(r, 2) - Math.pow(x + 1, 2))); if (intersect >= y && intersect < (y + 1)) { whatsides += "Right"; xval[point] = 1; yval[point++] = intersect - y; } intersect = Math.sqrt((Math.pow(r, 2) - Math.pow(y, 2))); if (intersect >= x && intersect < (x + 1)) { whatsides += "Bottom"; xval[point] = intersect - x; yval[point] = 1; } switch (whatsides) { case "LeftRight": return Math.min(yval[0], yval[1]) + ((Math.max(yval[0], yval[1]) - Math.min(yval[0], yval[1])) / 2); case "TopRight": return 1 - (((1 - xval[0]) * (1 - yval[1])) / 2); case "TopBottom": return Math.min(xval[0], xval[1]) + ((Math.max(xval[0], xval[1]) - Math.min(xval[0], xval[1])) / 2); case "LeftBottom": return (yval[0] * xval[1]) / 2; default: return 1; } }, draw:function (x, y, color, opac, height, corner, image, radius, top, format) { var px = document.createElement("div"); px.style.height = height + "px"; px.style.width = "1px"; px.style.position = "absolute"; px.style.fontSize = "1px"; px.style.overflow = "hidden"; if (image == -1 && format.bgImage != "") { px.style.backgroundImage = format.bgImage; px.style.backgroundPosition = "-" + (format.width - (radius - x) + format.borderWidth) + "px -" + ((format.height + top + y) - format.borderWidth) + "px"; } else { px.style.backgroundColor = color; } if (opac != 100) { dojo.html.setOpacity(px, (opac / 100)); } px.style.top = y + "px"; px.style.left = x + "px"; corner.appendChild(px); }, getRGB:function (clr) { var ret = "#ffffff"; if (clr != "" && clr != "transparent") { if (clr.substr(0, 3) == "rgb") { var t = clr.substring(4, clr.indexOf(")")); t = t.split(","); for (var i = 0; i < t.length; i++) { var n = parseInt(t[i]).toString(16); if (n.length < 2) { n = "0" + n; } t[i] = n; } ret = "#" + t.join(""); } else { if (clr.length == 4) { ret = "#" + clr.substring(1, 2) + clr.substring(1, 2) + clr.substring(2, 3) + clr.substring(2, 3) + clr.substring(3, 4) + clr.substring(3, 4); } else { ret = clr; } } } return ret; }}; }});

__CPAN_FILE__ src/lfx/shadow.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.lfx.shadow"], ["require", "dojo.lang.common"], ["require", "dojo.uri.Uri"]], definePackage:function (dojo) { dojo.provide("dojo.lfx.shadow"); dojo.require("dojo.lang.common"); dojo.require("dojo.uri.Uri"); dojo.lfx.shadow = function (node) { this.shadowPng = dojo.uri.moduleUri("dojo.html", "images/shadow"); this.shadowThickness = 8; this.shadowOffset = 15; this.init(node); }; dojo.extend(dojo.lfx.shadow, {init:function (node) { this.node = node; this.pieces = {}; var x1 = -1 * this.shadowThickness; var y0 = this.shadowOffset; var y1 = this.shadowOffset + this.shadowThickness; this._makePiece("tl", "top", y0, "left", x1); this._makePiece("l", "top", y1, "left", x1, "scale"); this._makePiece("tr", "top", y0, "left", 0); this._makePiece("r", "top", y1, "left", 0, "scale"); this._makePiece("bl", "top", 0, "left", x1); this._makePiece("b", "top", 0, "left", 0, "crop"); this._makePiece("br", "top", 0, "left", 0); }, _makePiece:function (name, vertAttach, vertCoord, horzAttach, horzCoord, sizing) { var img; var url = this.shadowPng + name.toUpperCase() + ".png"; if (dojo.render.html.ie55 || dojo.render.html.ie60) { img = dojo.doc().createElement("div"); img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + url + "'" + (sizing ? ", sizingMethod='" + sizing + "'" : "") + ")"; } else { img = dojo.doc().createElement("img"); img.src = url; } img.style.position = "absolute"; img.style[vertAttach] = vertCoord + "px"; img.style[horzAttach] = horzCoord + "px"; img.style.width = this.shadowThickness + "px"; img.style.height = this.shadowThickness + "px"; this.pieces[name] = img; this.node.appendChild(img); }, size:function (width, height) { var sideHeight = height - (this.shadowOffset + this.shadowThickness + 1); if (sideHeight < 0) { sideHeight = 0; } if (height < 1) { height = 1; } if (width < 1) { width = 1; } with (this.pieces) { l.style.height = sideHeight + "px"; r.style.height = sideHeight + "px"; b.style.width = (width - 1) + "px"; bl.style.top = (height - 1) + "px"; b.style.top = (height - 1) + "px"; br.style.top = (height - 1) + "px"; tr.style.left = (width - 1) + "px"; r.style.left = (width - 1) + "px"; br.style.left = (width - 1) + "px"; } }}); }});

__CPAN_FILE__ src/lfx/Animation.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.lfx.Animation"); dojo.require("dojo.lang.func"); dojo.lfx.Line = function (start, end) { this.start = start; this.end = end; if (dojo.lang.isArray(start)) { var diff = []; dojo.lang.forEach(this.start, function (s, i) { diff[i] = this.end[i] - s; }, this); this.getValue = function (n) { var res = []; dojo.lang.forEach(this.start, function (s, i) { res[i] = (diff[i] * n) + s; }, this); return res; }; } else { var diff = end - start; this.getValue = function (n) { return (diff * n) + this.start; }; } }; if ((dojo.render.html.khtml) && (!dojo.render.html.safari)) { dojo.lfx.easeDefault = function (n) { return (parseFloat("0.5") + ((Math.sin((n + parseFloat("1.5")) * Math.PI)) / 2)); }; } else { dojo.lfx.easeDefault = function (n) { return (0.5 + ((Math.sin((n + 1.5) * Math.PI)) / 2)); }; } dojo.lfx.easeIn = function (n) { return Math.pow(n, 3); }; dojo.lfx.easeOut = function (n) { return (1 - Math.pow(1 - n, 3)); }; dojo.lfx.easeInOut = function (n) { return ((3 * Math.pow(n, 2)) - (2 * Math.pow(n, 3))); }; dojo.lfx.IAnimation = function () { }; dojo.lang.extend(dojo.lfx.IAnimation, {curve:null, duration:1000, easing:null, repeatCount:0, rate:10, handler:null, beforeBegin:null, onBegin:null, onAnimate:null, onEnd:null, onPlay:null, onPause:null, onStop:null, play:null, pause:null, stop:null, connect:function (evt, scope, newFunc) { if (!newFunc) { newFunc = scope; scope = this; } newFunc = dojo.lang.hitch(scope, newFunc); var oldFunc = this[evt] || function () { }; this[evt] = function () { var ret = oldFunc.apply(this, arguments); newFunc.apply(this, arguments); return ret; }; return this; }, fire:function (evt, args) { if (this[evt]) { this[evt].apply(this, (args || [])); } return this; }, repeat:function (count) { this.repeatCount = count; return this; }, _active:false, _paused:false}); dojo.lfx.Animation = function (handlers, duration, curve, easing, repeatCount, rate) { dojo.lfx.IAnimation.call(this); if (dojo.lang.isNumber(handlers) || (!handlers && duration.getValue)) { rate = repeatCount; repeatCount = easing; easing = curve; curve = duration; duration = handlers; handlers = null; } else { if (handlers.getValue || dojo.lang.isArray(handlers)) { rate = easing; repeatCount = curve; easing = duration; curve = handlers; duration = null; handlers = null; } } if (dojo.lang.isArray(curve)) { this.curve = new dojo.lfx.Line(curve[0], curve[1]); } else { this.curve = curve; } if (duration != null && duration > 0) { this.duration = duration; } if (repeatCount) { this.repeatCount = repeatCount; } if (rate) { this.rate = rate; } if (handlers) { dojo.lang.forEach(["handler", "beforeBegin", "onBegin", "onEnd", "onPlay", "onStop", "onAnimate"], function (item) { if (handlers[item]) { this.connect(item, handlers[item]); } }, this); } if (easing && dojo.lang.isFunction(easing)) { this.easing = easing; } }; dojo.inherits(dojo.lfx.Animation, dojo.lfx.IAnimation); dojo.lang.extend(dojo.lfx.Animation, {_startTime:null, _endTime:null, _timer:null, _percent:0, _startRepeatCount:0, play:function (delay, gotoStart) { if (gotoStart) { clearTimeout(this._timer); this._active = false; this._paused = false; this._percent = 0; } else { if (this._active && !this._paused) { return this; } } this.fire("handler", ["beforeBegin"]); this.fire("beforeBegin"); if (delay > 0) { setTimeout(dojo.lang.hitch(this, function () { this.play(null, gotoStart); }), delay); return this; } this._startTime = new Date().valueOf(); if (this._paused) { this._startTime -= (this.duration * this._percent / 100); } this._endTime = this._startTime + this.duration; this._active = true; this._paused = false; var step = this._percent / 100; var value = this.curve.getValue(step); if (this._percent == 0) { if (!this._startRepeatCount) { this._startRepeatCount = this.repeatCount; } this.fire("handler", ["begin", value]); this.fire("onBegin", [value]); } this.fire("handler", ["play", value]); this.fire("onPlay", [value]); this._cycle(); return this; }, pause:function () { clearTimeout(this._timer); if (!this._active) { return this; } this._paused = true; var value = this.curve.getValue(this._percent / 100); this.fire("handler", ["pause", value]); this.fire("onPause", [value]); return this; }, gotoPercent:function (pct, andPlay) { clearTimeout(this._timer); this._active = true; this._paused = true; this._percent = pct; if (andPlay) { this.play(); } return this; }, stop:function (gotoEnd) { clearTimeout(this._timer); var step = this._percent / 100; if (gotoEnd) { step = 1; } var value = this.curve.getValue(step); this.fire("handler", ["stop", value]); this.fire("onStop", [value]); this._active = false; this._paused = false; return this; }, status:function () { if (this._active) { return this._paused ? "paused" : "playing"; } else { return "stopped"; } return this; }, _cycle:function () { clearTimeout(this._timer); if (this._active) { var curr = new Date().valueOf(); var step = (curr - this._startTime) / (this._endTime - this._startTime); if (step >= 1) { step = 1; this._percent = 100; } else { this._percent = step * 100; } if ((this.easing) && (dojo.lang.isFunction(this.easing))) { step = this.easing(step); } var value = this.curve.getValue(step); this.fire("handler", ["animate", value]); this.fire("onAnimate", [value]); if (step < 1) { this._timer = setTimeout(dojo.lang.hitch(this, "_cycle"), this.rate); } else { this._active = false; this.fire("handler", ["end"]); this.fire("onEnd"); if (this.repeatCount > 0) { this.repeatCount--; this.play(null, true); } else { if (this.repeatCount == -1) { this.play(null, true); } else { if (this._startRepeatCount) { this.repeatCount = this._startRepeatCount; this._startRepeatCount = 0; } } } } } return this; }}); dojo.lfx.Combine = function (animations) { dojo.lfx.IAnimation.call(this); this._anims = []; this._animsEnded = 0; var anims = arguments; if (anims.length == 1 && (dojo.lang.isArray(anims[0]) || dojo.lang.isArrayLike(anims[0]))) { anims = anims[0]; } dojo.lang.forEach(anims, function (anim) { this._anims.push(anim); anim.connect("onEnd", dojo.lang.hitch(this, "_onAnimsEnded")); }, this); }; dojo.inherits(dojo.lfx.Combine, dojo.lfx.IAnimation); dojo.lang.extend(dojo.lfx.Combine, {_animsEnded:0, play:function (delay, gotoStart) { if (!this._anims.length) { return this; } this.fire("beforeBegin"); if (delay > 0) { setTimeout(dojo.lang.hitch(this, function () { this.play(null, gotoStart); }), delay); return this; } if (gotoStart || this._anims[0].percent == 0) { this.fire("onBegin"); } this.fire("onPlay"); this._animsCall("play", null, gotoStart); return this; }, pause:function () { this.fire("onPause"); this._animsCall("pause"); return this; }, stop:function (gotoEnd) { this.fire("onStop"); this._animsCall("stop", gotoEnd); return this; }, _onAnimsEnded:function () { this._animsEnded++; if (this._animsEnded >= this._anims.length) { this.fire("onEnd"); } return this; }, _animsCall:function (funcName) { var args = []; if (arguments.length > 1) { for (var i = 1; i < arguments.length; i++) { args.push(arguments[i]); } } var _this = this; dojo.lang.forEach(this._anims, function (anim) { anim[funcName](args); }, _this); return this; }}); dojo.lfx.Chain = function (animations) { dojo.lfx.IAnimation.call(this); this._anims = []; this._currAnim = -1; var anims = arguments; if (anims.length == 1 && (dojo.lang.isArray(anims[0]) || dojo.lang.isArrayLike(anims[0]))) { anims = anims[0]; } var _this = this; dojo.lang.forEach(anims, function (anim, i, anims_arr) { this._anims.push(anim); if (i < anims_arr.length - 1) { anim.connect("onEnd", dojo.lang.hitch(this, "_playNext")); } else { anim.connect("onEnd", dojo.lang.hitch(this, function () { this.fire("onEnd"); })); } }, this); }; dojo.inherits(dojo.lfx.Chain, dojo.lfx.IAnimation); dojo.lang.extend(dojo.lfx.Chain, {_currAnim:-1, play:function (delay, gotoStart) { if (!this._anims.length) { return this; } if (gotoStart || !this._anims[this._currAnim]) { this._currAnim = 0; } var currentAnimation = this._anims[this._currAnim]; this.fire("beforeBegin"); if (delay > 0) { setTimeout(dojo.lang.hitch(this, function () { this.play(null, gotoStart); }), delay); return this; } if (currentAnimation) { if (this._currAnim == 0) { this.fire("handler", ["begin", this._currAnim]); this.fire("onBegin", [this._currAnim]); } this.fire("onPlay", [this._currAnim]); currentAnimation.play(null, gotoStart); } return this; }, pause:function () { if (this._anims[this._currAnim]) { this._anims[this._currAnim].pause(); this.fire("onPause", [this._currAnim]); } return this; }, playPause:function () { if (this._anims.length == 0) { return this; } if (this._currAnim == -1) { this._currAnim = 0; } var currAnim = this._anims[this._currAnim]; if (currAnim) { if (!currAnim._active || currAnim._paused) { this.play(); } else { this.pause(); } } return this; }, stop:function () { var currAnim = this._anims[this._currAnim]; if (currAnim) { currAnim.stop(); this.fire("onStop", [this._currAnim]); } return currAnim; }, _playNext:function () { if (this._currAnim == -1 || this._anims.length == 0) { return this; } this._currAnim++; if (this._anims[this._currAnim]) { this._anims[this._currAnim].play(null, true); } return this; }}); dojo.lfx.combine = function (animations) { var anims = arguments; if (dojo.lang.isArray(arguments[0])) { anims = arguments[0]; } if (anims.length == 1) { return anims[0]; } return new dojo.lfx.Combine(anims); }; dojo.lfx.chain = function (animations) { var anims = arguments; if (dojo.lang.isArray(arguments[0])) { anims = arguments[0]; } if (anims.length == 1) { return anims[0]; } return new dojo.lfx.Chain(anims); };

__CPAN_FILE__ src/lfx/html.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.lfx.html"); dojo.require("dojo.gfx.color"); dojo.require("dojo.lfx.Animation"); dojo.require("dojo.lang.array"); dojo.require("dojo.html.display"); dojo.require("dojo.html.color"); dojo.require("dojo.html.layout"); dojo.lfx.html._byId = function (nodes) { if (!nodes) { return []; } if (dojo.lang.isArrayLike(nodes)) { if (!nodes.alreadyChecked) { var n = []; dojo.lang.forEach(nodes, function (node) { n.push(dojo.byId(node)); }); n.alreadyChecked = true; return n; } else { return nodes; } } else { var n = []; n.push(dojo.byId(nodes)); n.alreadyChecked = true; return n; } }; dojo.lfx.html.propertyAnimation = function (nodes, propertyMap, duration, easing, handlers) { nodes = dojo.lfx.html._byId(nodes); var targs = {"propertyMap":propertyMap, "nodes":nodes, "duration":duration, "easing":easing || dojo.lfx.easeDefault}; var setEmUp = function (args) { if (args.nodes.length == 1) { var pm = args.propertyMap; if (!dojo.lang.isArray(args.propertyMap)) { var parr = []; for (var pname in pm) { pm[pname].property = pname; parr.push(pm[pname]); } pm = args.propertyMap = parr; } dojo.lang.forEach(pm, function (prop) { if (dj_undef("start", prop)) { if (prop.property != "opacity") { prop.start = parseInt(dojo.html.getComputedStyle(args.nodes[0], prop.property)); } else { prop.start = dojo.html.getOpacity(args.nodes[0]); } } }); } }; var coordsAsInts = function (coords) { var cints = []; dojo.lang.forEach(coords, function (c) { cints.push(Math.round(c)); }); return cints; }; var setStyle = function (n, style) { n = dojo.byId(n); if (!n || !n.style) { return; } for (var s in style) { try { if (s == "opacity") { dojo.html.setOpacity(n, style[s]); } else { n.style[s] = style[s]; } } catch (e) { dojo.debug(e); } } }; var propLine = function (properties) { this._properties = properties; this.diffs = new Array(properties.length); dojo.lang.forEach(properties, function (prop, i) { if (dojo.lang.isFunction(prop.start)) { prop.start = prop.start(prop, i); } if (dojo.lang.isFunction(prop.end)) { prop.end = prop.end(prop, i); } if (dojo.lang.isArray(prop.start)) { this.diffs[i] = null; } else { if (prop.start instanceof dojo.gfx.color.Color) { prop.startRgb = prop.start.toRgb(); prop.endRgb = prop.end.toRgb(); } else { this.diffs[i] = prop.end - prop.start; } } }, this); this.getValue = function (n) { var ret = {}; dojo.lang.forEach(this._properties, function (prop, i) { var value = null; if (dojo.lang.isArray(prop.start)) { } else { if (prop.start instanceof dojo.gfx.color.Color) { value = (prop.units || "rgb") + "("; for (var j = 0; j < prop.startRgb.length; j++) { value += Math.round(((prop.endRgb[j] - prop.startRgb[j]) * n) + prop.startRgb[j]) + (j < prop.startRgb.length - 1 ? "," : ""); } value += ")"; } else { value = ((this.diffs[i]) * n) + prop.start + (prop.property != "opacity" ? prop.units || "px" : ""); } } ret[dojo.html.toCamelCase(prop.property)] = value; }, this); return ret; }; }; var anim = new dojo.lfx.Animation({beforeBegin:function () { setEmUp(targs); anim.curve = new propLine(targs.propertyMap); }, onAnimate:function (propValues) { dojo.lang.forEach(targs.nodes, function (node) { setStyle(node, propValues); }); }}, targs.duration, null, targs.easing); if (handlers) { for (var x in handlers) { if (dojo.lang.isFunction(handlers[x])) { anim.connect(x, anim, handlers[x]); } } } return anim; }; dojo.lfx.html._makeFadeable = function (nodes) { var makeFade = function (node) { if (dojo.render.html.ie) { if ((node.style.zoom.length == 0) && (dojo.html.getStyle(node, "zoom") == "normal")) { node.style.zoom = "1"; } if ((node.style.width.length == 0) && (dojo.html.getStyle(node, "width") == "auto")) { node.style.width = "auto"; } } }; if (dojo.lang.isArrayLike(nodes)) { dojo.lang.forEach(nodes, makeFade); } else { makeFade(nodes); } }; dojo.lfx.html.fade = function (nodes, values, duration, easing, callback) { nodes = dojo.lfx.html._byId(nodes); var props = {property:"opacity"}; if (!dj_undef("start", values)) { props.start = values.start; } else { props.start = function () { return dojo.html.getOpacity(nodes[0]); }; } if (!dj_undef("end", values)) { props.end = values.end; } else { dojo.raise("dojo.lfx.html.fade needs an end value"); } var anim = dojo.lfx.propertyAnimation(nodes, [props], duration, easing); anim.connect("beforeBegin", function () { dojo.lfx.html._makeFadeable(nodes); }); if (callback) { anim.connect("onEnd", function () { callback(nodes, anim); }); } return anim; }; dojo.lfx.html.fadeIn = function (nodes, duration, easing, callback) { return dojo.lfx.html.fade(nodes, {end:1}, duration, easing, callback); }; dojo.lfx.html.fadeOut = function (nodes, duration, easing, callback) { return dojo.lfx.html.fade(nodes, {end:0}, duration, easing, callback); }; dojo.lfx.html.fadeShow = function (nodes, duration, easing, callback) { nodes = dojo.lfx.html._byId(nodes); dojo.lang.forEach(nodes, function (node) { dojo.html.setOpacity(node, 0); }); var anim = dojo.lfx.html.fadeIn(nodes, duration, easing, callback); anim.connect("beforeBegin", function () { if (dojo.lang.isArrayLike(nodes)) { dojo.lang.forEach(nodes, dojo.html.show); } else { dojo.html.show(nodes); } }); return anim; }; dojo.lfx.html.fadeHide = function (nodes, duration, easing, callback) { var anim = dojo.lfx.html.fadeOut(nodes, duration, easing, function () { if (dojo.lang.isArrayLike(nodes)) { dojo.lang.forEach(nodes, dojo.html.hide); } else { dojo.html.hide(nodes); } if (callback) { callback(nodes, anim); } }); return anim; }; dojo.lfx.html.wipeIn = function (nodes, duration, easing, callback) { nodes = dojo.lfx.html._byId(nodes); var anims = []; dojo.lang.forEach(nodes, function (node) { var oprop = {}; var origTop, origLeft, origPosition; with (node.style) { origTop = top; origLeft = left; origPosition = position; top = "-9999px"; left = "-9999px"; position = "absolute"; display = ""; } var nodeHeight = dojo.html.getBorderBox(node).height; with (node.style) { top = origTop; left = origLeft; position = origPosition; display = "none"; } var anim = dojo.lfx.propertyAnimation(node, {"height":{start:1, end:function () { return nodeHeight; }}}, duration, easing); anim.connect("beforeBegin", function () { oprop.overflow = node.style.overflow; oprop.height = node.style.height; with (node.style) { overflow = "hidden"; height = "1px"; } dojo.html.show(node); }); anim.connect("onEnd", function () { with (node.style) { overflow = oprop.overflow; height = oprop.height; } if (callback) { callback(node, anim); } }); anims.push(anim); }); return dojo.lfx.combine(anims); }; dojo.lfx.html.wipeOut = function (nodes, duration, easing, callback) { nodes = dojo.lfx.html._byId(nodes); var anims = []; dojo.lang.forEach(nodes, function (node) { var oprop = {}; var anim = dojo.lfx.propertyAnimation(node, {"height":{start:function () { return dojo.html.getContentBox(node).height; }, end:1}}, duration, easing, {"beforeBegin":function () { oprop.overflow = node.style.overflow; oprop.height = node.style.height; with (node.style) { overflow = "hidden"; } dojo.html.show(node); }, "onEnd":function () { dojo.html.hide(node); with (node.style) { overflow = oprop.overflow; height = oprop.height; } if (callback) { callback(node, anim); } }}); anims.push(anim); }); return dojo.lfx.combine(anims); }; dojo.lfx.html.slideTo = function (nodes, coords, duration, easing, callback) { nodes = dojo.lfx.html._byId(nodes); var anims = []; var compute = dojo.html.getComputedStyle; if (dojo.lang.isArray(coords)) { dojo.deprecated("dojo.lfx.html.slideTo(node, array)", "use dojo.lfx.html.slideTo(node, {top: value, left: value});", "0.5"); coords = {top:coords[0], left:coords[1]}; } dojo.lang.forEach(nodes, function (node) { var top = null; var left = null; var init = (function () { var innerNode = node; return function () { var pos = compute(innerNode, "position"); top = (pos == "absolute" ? node.offsetTop : parseInt(compute(node, "top")) || 0); left = (pos == "absolute" ? node.offsetLeft : parseInt(compute(node, "left")) || 0); if (!dojo.lang.inArray(["absolute", "relative"], pos)) { var ret = dojo.html.abs(innerNode, true); dojo.html.setStyleAttributes(innerNode, "position:absolute;top:" + ret.y + "px;left:" + ret.x + "px;"); top = ret.y; left = ret.x; } }; })(); init(); var anim = dojo.lfx.propertyAnimation(node, {"top":{start:top, end:(coords.top || 0)}, "left":{start:left, end:(coords.left || 0)}}, duration, easing, {"beforeBegin":init}); if (callback) { anim.connect("onEnd", function () { callback(nodes, anim); }); } anims.push(anim); }); return dojo.lfx.combine(anims); }; dojo.lfx.html.slideBy = function (nodes, coords, duration, easing, callback) { nodes = dojo.lfx.html._byId(nodes); var anims = []; var compute = dojo.html.getComputedStyle; if (dojo.lang.isArray(coords)) { dojo.deprecated("dojo.lfx.html.slideBy(node, array)", "use dojo.lfx.html.slideBy(node, {top: value, left: value});", "0.5"); coords = {top:coords[0], left:coords[1]}; } dojo.lang.forEach(nodes, function (node) { var top = null; var left = null; var init = (function () { var innerNode = node; return function () { var pos = compute(innerNode, "position"); top = (pos == "absolute" ? node.offsetTop : parseInt(compute(node, "top")) || 0); left = (pos == "absolute" ? node.offsetLeft : parseInt(compute(node, "left")) || 0); if (!dojo.lang.inArray(["absolute", "relative"], pos)) { var ret = dojo.html.abs(innerNode, true); dojo.html.setStyleAttributes(innerNode, "position:absolute;top:" + ret.y + "px;left:" + ret.x + "px;"); top = ret.y; left = ret.x; } }; })(); init(); var anim = dojo.lfx.propertyAnimation(node, {"top":{start:top, end:top + (coords.top || 0)}, "left":{start:left, end:left + (coords.left || 0)}}, duration, easing).connect("beforeBegin", init); if (callback) { anim.connect("onEnd", function () { callback(nodes, anim); }); } anims.push(anim); }); return dojo.lfx.combine(anims); }; dojo.lfx.html.explode = function (start, endNode, duration, easing, callback) { var h = dojo.html; start = dojo.byId(start); endNode = dojo.byId(endNode); var startCoords = h.toCoordinateObject(start, true); var outline = document.createElement("div"); h.copyStyle(outline, endNode); if (endNode.explodeClassName) { outline.className = endNode.explodeClassName; } with (outline.style) { position = "absolute"; display = "none"; var backgroundStyle = h.getStyle(start, "background-color"); backgroundColor = backgroundStyle ? backgroundStyle.toLowerCase() : "transparent"; backgroundColor = (backgroundColor == "transparent") ? "rgb(221, 221, 221)" : backgroundColor; } dojo.body().appendChild(outline); with (endNode.style) { visibility = "hidden"; display = "block"; } var endCoords = h.toCoordinateObject(endNode, true); with (endNode.style) { display = "none"; visibility = "visible"; } var props = {opacity:{start:0.5, end:1}}; dojo.lang.forEach(["height", "width", "top", "left"], function (type) { props[type] = {start:startCoords[type], end:endCoords[type]}; }); var anim = new dojo.lfx.propertyAnimation(outline, props, duration, easing, {"beforeBegin":function () { h.setDisplay(outline, "block"); }, "onEnd":function () { h.setDisplay(endNode, "block"); outline.parentNode.removeChild(outline); }}); if (callback) { anim.connect("onEnd", function () { callback(endNode, anim); }); } return anim; }; dojo.lfx.html.implode = function (startNode, end, duration, easing, callback) { var h = dojo.html; startNode = dojo.byId(startNode); end = dojo.byId(end); var startCoords = dojo.html.toCoordinateObject(startNode, true); var endCoords = dojo.html.toCoordinateObject(end, true); var outline = document.createElement("div"); dojo.html.copyStyle(outline, startNode); if (startNode.explodeClassName) { outline.className = startNode.explodeClassName; } dojo.html.setOpacity(outline, 0.3); with (outline.style) { position = "absolute"; display = "none"; backgroundColor = h.getStyle(startNode, "background-color").toLowerCase(); } dojo.body().appendChild(outline); var props = {opacity:{start:1, end:0.5}}; dojo.lang.forEach(["height", "width", "top", "left"], function (type) { props[type] = {start:startCoords[type], end:endCoords[type]}; }); var anim = new dojo.lfx.propertyAnimation(outline, props, duration, easing, {"beforeBegin":function () { dojo.html.hide(startNode); dojo.html.show(outline); }, "onEnd":function () { outline.parentNode.removeChild(outline); }}); if (callback) { anim.connect("onEnd", function () { callback(startNode, anim); }); } return anim; }; dojo.lfx.html.highlight = function (nodes, startColor, duration, easing, callback) { nodes = dojo.lfx.html._byId(nodes); var anims = []; dojo.lang.forEach(nodes, function (node) { var color = dojo.html.getBackgroundColor(node); var bg = dojo.html.getStyle(node, "background-color").toLowerCase(); var bgImage = dojo.html.getStyle(node, "background-image"); var wasTransparent = (bg == "transparent" || bg == "rgba(0, 0, 0, 0)"); while (color.length > 3) { color.pop(); } var rgb = new dojo.gfx.color.Color(startColor); var endRgb = new dojo.gfx.color.Color(color); var anim = dojo.lfx.propertyAnimation(node, {"background-color":{start:rgb, end:endRgb}}, duration, easing, {"beforeBegin":function () { if (bgImage) { node.style.backgroundImage = "none"; } node.style.backgroundColor = "rgb(" + rgb.toRgb().join(",") + ")"; }, "onEnd":function () { if (bgImage) { node.style.backgroundImage = bgImage; } if (wasTransparent) { node.style.backgroundColor = "transparent"; } if (callback) { callback(node, anim); } }}); anims.push(anim); }); return dojo.lfx.combine(anims); }; dojo.lfx.html.unhighlight = function (nodes, endColor, duration, easing, callback) { nodes = dojo.lfx.html._byId(nodes); var anims = []; dojo.lang.forEach(nodes, function (node) { var color = new dojo.gfx.color.Color(dojo.html.getBackgroundColor(node)); var rgb = new dojo.gfx.color.Color(endColor); var bgImage = dojo.html.getStyle(node, "background-image"); var anim = dojo.lfx.propertyAnimation(node, {"background-color":{start:color, end:rgb}}, duration, easing, {"beforeBegin":function () { if (bgImage) { node.style.backgroundImage = "none"; } node.style.backgroundColor = "rgb(" + color.toRgb().join(",") + ")"; }, "onEnd":function () { if (callback) { callback(node, anim); } }}); anims.push(anim); }); return dojo.lfx.combine(anims); }; dojo.lang.mixin(dojo.lfx, dojo.lfx.html);

__CPAN_FILE__ src/lfx/rounded.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.lfx.rounded"); dojo.require("dojo.lang.common"); dojo.require("dojo.html.common"); dojo.require("dojo.html.style"); dojo.require("dojo.html.display"); dojo.require("dojo.html.layout"); dojo.lfx.rounded = function (settings) { var options = {validTags:settings.validTags || ["div"], autoPad:settings.autoPad != null ? settings.autoPad : true, antiAlias:settings.antiAlias != null ? settings.antiAlias : true, radii:{tl:(settings.tl && settings.tl.radius != null) ? settings.tl.radius : 5, tr:(settings.tr && settings.tr.radius != null) ? settings.tr.radius : 5, bl:(settings.bl && settings.bl.radius != null) ? settings.bl.radius : 5, br:(settings.br && settings.br.radius != null) ? settings.br.radius : 5}}; var nodes; if (typeof (arguments[1]) == "string") { nodes = dojo.html.getElementsByClass(arguments[1]); } else { if (dojo.lang.isArrayLike(arguments[1])) { nodes = arguments[1]; for (var i = 0; i < nodes.length; i++) { nodes[i] = dojo.byId(nodes[i]); } } } if (nodes.length == 0) { return; } for (var i = 0; i < nodes.length; i++) { dojo.lfx.rounded.applyCorners(options, nodes[i]); } }; dojo.lfx.rounded.applyCorners = function (options, node) { var top = null; var bottom = null; var contentNode = null; var fns = dojo.lfx.rounded._fns; var width = node.offsetWidth; var height = node.offsetHeight; var borderWidth = parseInt(dojo.html.getComputedStyle(node, "border-top-width")); var borderColor = dojo.html.getComputedStyle(node, "border-top-color"); var color = dojo.html.getComputedStyle(node, "background-color"); var bgImage = dojo.html.getComputedStyle(node, "background-image"); var position = dojo.html.getComputedStyle(node, "position"); var padding = parseInt(dojo.html.getComputedStyle(node, "padding-top")); var format = {height:height, width:width, borderWidth:borderWidth, color:fns.getRGB(color), padding:padding, borderColor:fns.getRGB(borderColor), borderString:borderWidth + "px" + " solid " + fns.getRGB(borderColor), bgImage:((bgImage != "none") ? bgImage : ""), content:node.innerHTML}; if (!dojo.html.isPositionAbsolute(node)) { node.style.position = "relative"; } node.style.padding = "0px"; if (dojo.render.html.ie && width == "auto" && height == "auto") { node.style.width = "100%"; } if (options.autoPad && format.padding > 0) { node.innerHTML = ""; } var topHeight = Math.max(options.radii.tl, options.radii.tr); var bottomHeight = Math.max(options.radii.bl, options.radii.br); if (options.radii.tl || options.radii.tr) { top = document.createElement("div"); top.style.width = "100%"; top.style.fontSize = "1px"; top.style.overflow = "hidden"; top.style.position = "absolute"; top.style.paddingLeft = format.borderWidth + "px"; top.style.paddingRight = format.borderWidth + "px"; top.style.height = topHeight + "px"; top.style.top = (0 - topHeight) + "px"; top.style.left = (0 - format.borderWidth) + "px"; node.appendChild(top); } if (options.radii.bl || options.radii.br) { bottom = document.createElement("div"); bottom.style.width = "100%"; bottom.style.fontSize = "1px"; bottom.style.overflow = "hidden"; bottom.style.position = "absolute"; bottom.style.paddingLeft = format.borderWidth + "px"; bottom.style.paddingRight = format.borderWidth + "px"; bottom.style.height = bottomHeight + "px"; bottom.style.bottom = (0 - bottomHeight) + "px"; bottom.style.left = (0 - format.borderWidth) + "px"; node.appendChild(bottom); } if (top) { node.style.borderTopWidth = "0px"; } if (bottom) { node.style.borderBottomWidth = "0px"; } var corners = ["tr", "tl", "br", "bl"]; for (var i = 0; i < corners.length; i++) { var cc = corners[i]; if (options.radii[cc] == 0) { if ((cc.charAt(0) == "t" && top) || (cc.charAt(0) == "b" && bottom)) { var corner = document.createElement("div"); corner.style.position = "relative"; corner.style.fontSize = "1px;"; corner.style.overflow = "hidden"; if (format.bgImage == "") { corner.style.backgroundColor = format.color; } else { corner.style.backgroundImage = format.bgImage; } switch (cc) { case "tl": corner.style.height = topHeight - format.borderWidth + "px"; corner.style.marginRight = options.radii[cc] - (format.borderWidth * 2) + "px"; corner.style.borderLeft = format.borderString; corner.style.borderTop = format.borderString; corner.style.left = -format.borderWidth + "px"; break; case "tr": corner.style.height = topHeight - format.borderWidth + "px"; corner.style.marginLeft = options.radii[cc] - (format.borderWidth * 2) + "px"; corner.style.borderRight = format.borderString; corner.style.borderTop = format.borderString; corner.style.backgroundPosition = "-" + (topHeight - format.borderWidth) + "px 0px"; corner.style.left = format.borderWidth + "px"; break; case "bl": corner.style.height = bottomHeight - format.borderWidth + "px"; corner.style.marginRight = options.radii[cc] - (format.borderWidth * 2) + "px"; corner.style.borderLeft = format.borderString; corner.style.borderBottom = format.borderString; corner.style.left = format.borderWidth + "px"; corner.style.backgroundPosition = "-" + format.borderWidth + "px -" + (format.height + (bottomHeight + format.borderWidth)) + "px"; break; case "br": corner.style.height = bottomHeight - format.borderWidth + "px"; corner.style.marginLeft = options.radii[cc] - (format.borderWidth * 2) + "px"; corner.style.borderRight = format.borderString; corner.style.borderBottom = format.borderString; corner.style.left = format.borderWidth + "px"; corner.style.backgroundPosition = "-" + (bottomHeight + format.borderWidth) + "px -" + (format.height + (bottomHeight + format.borderWidth)) + "px"; break; } } } else { var corner = document.createElement("div"); corner.style.height = options.radii[cc] + "px"; corner.style.width = options.radii[cc] + "px"; corner.style.position = "absolute"; corner.style.fontSize = "1px"; corner.style.overflow = "hidden"; var borderRadius = Math.floor(options.radii[cc] - format.borderWidth); for (var x = 0, j = options.radii[cc]; x < j; x++) { var y1 = Math.floor(Math.sqrt(Math.pow(borderRadius, 2) - Math.pow((x + 1), 2))) - 1; if ((x + 1) >= borderRadius) { var y1 = -1; } var y2 = Math.ceil(Math.sqrt(Math.pow(borderRadius, 2) - Math.pow(x, 2))); if (x >= borderRadius) { y2 = -1; } var y3 = Math.floor(Math.sqrt(Math.pow(j, 2) - Math.pow((x + 1), 2))) - 1; if ((x + 1) >= j) { y3 = -1; } var y4 = Math.ceil(Math.sqrt(Math.pow(j, 2) - Math.pow(x, 2))); if (x >= j) { y4 = -1; } if (y1 > -1) { fns.draw(x, 0, format.color, 100, (y1 + 1), corner, -1, j, topHeight, format); } for (var y = (y1 + 1); y < y2; y++) { if (options.antiAlias) { if (format.bgImage != "") { var fract = fns.fraction(x, y, borderRadius) * 100; if (fract < 30) { fns.draw(x, y, format.borderColor, 100, 1, corner, 0, options.radii[cc], topHeight, format); } else { fns.draw(x, y, format.borderColor, 100, 1, corner, -1, options.radii[cc], topHeight, format); } } else { var clr = fns.blend(format.color, format.borderColor, fns.fraction(x, y, borderRadius)); fns.draw(x, y, clr, 100, 1, corner, 0, options.radii[cc], topHeight, format); } } } if (options.antiAlias) { if (y3 >= y2) { if (y2 == -1) { y2 = 0; } fns.draw(x, y2, format.borderColor, 100, (y3 - y2 + 1), corner, 0, 0, topHeight, format); } else { if (y3 >= y1) { fns.draw(x, (y1 + 1), format.borderColor, 100, (y3 - y1), corner, 0, 0, topHeight, format); } } for (var y = (y3 + 1); y < y4; y++) { fns.draw(x, y, format.borderColor, (fns.fraction(x, y, j) * 100), 1, corner, (format.borderWidth > 0 ? 0 : -1), options.radii[cc], topHeight, format); } } else { y3 = y1; } } if (cc != "br") { for (var t = 0, k = corner.childNodes.length; t < k; t++) { var bar = corner.childNodes[t]; var barTop = parseInt(dojo.html.getComputedStyle(bar, "top")); var barLeft = parseInt(dojo.html.getComputedStyle(bar, "left")); var barHeight = parseInt(dojo.html.getComputedStyle(bar, "height")); if (cc.charAt(1) == "l") { bar.style.left = (options.radii[cc] - barLeft - 1) + "px"; } if (cc == "tr") { bar.style.top = (options.radii[cc] - barHeight - barTop) + "px"; bar.style.backgroundPosition = "-" + Math.abs((format.width - options.radii[cc] + format.borderWidth) + barLeft) + "px -" + Math.abs(options.radii[cc] - barHeight - barTop - format.borderWidth) + "px"; } else { if (cc == "tl") { bar.style.top = (options.radii[cc] - barHeight - barTop) + "px"; bar.style.backgroundPosition = "-" + Math.abs((options.radii[cc] - barLeft - 1) - format.borderWidth) + "px -" + Math.abs(options.radii[cc] - barHeight - barTop - format.borderWidth) + "px"; } else { bar.style.backgroundPosition = "-" + Math.abs((options.radii[cc] + barLeft) + format.borderWidth) + "px -" + Math.abs((format.height + options.radii[cc] + barTop) - format.borderWidth) + "px"; } } } } } if (corner) { var psn = []; if (cc.charAt(0) == "t") { psn.push("top"); } else { psn.push("bottom"); } if (cc.charAt(1) == "l") { psn.push("left"); } else { psn.push("right"); } if (corner.style.position == "absolute") { for (var z = 0; z < psn.length; z++) { corner.style[psn[z]] = "0px"; } } if (psn[0] == "top") { if (top) { top.appendChild(corner); } } else { if (bottom) { bottom.appendChild(corner); } } } } var diff = {t:Math.abs(options.radii.tl - options.radii.tr), b:Math.abs(options.radii.bl - options.radii.br)}; for (var z in diff) { var smaller = (options.radii[z + "l"] < options.radii[z + "r"] ? z + "l" : z + "r"); var filler = document.createElement("div"); filler.style.height = diff[z] + "px"; filler.style.width = options.radii[smaller] + "px"; filler.style.position = "absolute"; filler.style.fontSize = "1px"; filler.style.overflow = "hidden"; filler.style.backgroundColor = format.color; switch (smaller) { case "tl": filler.style.bottom = "0px"; filler.style.left = "0px"; filler.style.borderLeft = format.borderString; top.appendChild(filler); break; case "tr": filler.style.bottom = "0px"; filler.style.right = "0px"; filler.style.borderRight = format.borderString; top.appendChild(filler); break; case "bl": filler.style.top = "0px"; filler.style.left = "0px"; filler.style.borderLeft = format.borderString; bottom.appendChild(filler); break; case "br": filler.style.top = "0px"; filler.style.right = "0px"; filler.style.borderRight = format.borderString; bottom.appendChild(filler); break; } var fillBar = document.createElement("div"); fillBar.style.position = "relative"; fillBar.style.fontSize = "1px"; fillBar.style.overflow = "hidden"; fillBar.style.backgroundColor = format.color; fillBar.style.backgroundImage = format.bgImage; if (z == "t") { if (top) { if (options.radii.tl && options.radii.tr) { fillBar.style.height = (topHeight - format.borderWidth) + "px"; fillBar.style.marginLeft = (options.radii.tl - format.borderWidth) + "px"; fillBar.style.marginRight = (options.radii.tr - format.borderWidth) + "px"; fillBar.style.borderTop = format.borderString; if (format.bgImage != "") { fillBar.style.backgroundPosition = "-" + (topHeight + format.borderWidth) + "px 0px"; } } top.appendChild(fillBar); } } else { if (bottom) { if (options.radii.bl && options.radii.br) { fillBar.style.height = (bottomHeight - format.borderWidth) + "px"; fillBar.style.marginLeft = (options.radii.bl - format.borderWidth) + "px"; fillBar.style.marginRight = (options.radii.br - format.borderWidth) + "px"; fillBar.style.borderBottom = format.borderString; if (format.bgImage != "") { fillBar.style.backgroundPosition = "-" + (bottomHeight + format.borderWidth) + "px -" + (format.height + (topHeight + format.borderWidth)) + "px"; } } bottom.appendChild(fillBar); } } } if (options.autoPad && format.padding > 0) { var content = document.createElement("div"); content.style.position = "relative"; content.innerHTML = format.content; content.className = "autoPadDiv"; if (topHeight < format.padding) { content.style.paddingTop = Math.abs(topHeight - format.padding) + "px"; } if (bottomHeight < format.padding) { content.style.paddingBottom = Math.abs(bottomHeight - format.padding) + "px"; } content.style.paddingLeft = format.padding + "px"; content.style.paddingRight = format.padding + "px"; node.appendChild(content); } }; var count = 0; dojo.lfx.rounded._fns = {blend:function (clr1, clr2, frac) { var c1 = {r:parseInt(clr1.substr(1, 2), 16), g:parseInt(clr1.substr(3, 2), 16), b:parseInt(clr1.substr(5, 2), 16)}; var c2 = {r:parseInt(clr2.substr(1, 2), 16), g:parseInt(clr2.substr(3, 2), 16), b:parseInt(clr2.substr(5, 2), 16)}; if (frac > 1 || frac < 0) { frac = 1; } var ret = [Math.min(Math.max(Math.round((c1.r * frac) + (c2.r * (1 - frac))), 0), 255), Math.min(Math.max(Math.round((c1.g * frac) + (c2.g * (1 - frac))), 0), 255), Math.min(Math.max(Math.round((c1.b * frac) + (c2.b * (1 - frac))), 0), 255)]; for (var i = 0; i < ret.length; i++) { var n = ret[i].toString(16); if (n.length < 2) { n = "0" + n; } ret[i] = n; } return "#" + ret.join(""); }, fraction:function (x, y, r) { var frac = 0; var xval = []; var yval = []; var point = 0; var whatsides = ""; var intersect = Math.sqrt((Math.pow(r, 2) - Math.pow(x, 2))); if (intersect >= y && intersect < (y + 1)) { whatsides = "Left"; xval[point] = 0; yval[point++] = intersect - y; } intersect = Math.sqrt((Math.pow(r, 2) - Math.pow(y + 1, 2))); if (intersect >= x && intersect < (x + 1)) { whatsides += "Top"; xval[point] = intersect - x; yval[point++] = 1; } intersect = Math.sqrt((Math.pow(r, 2) - Math.pow(x + 1, 2))); if (intersect >= y && intersect < (y + 1)) { whatsides += "Right"; xval[point] = 1; yval[point++] = intersect - y; } intersect = Math.sqrt((Math.pow(r, 2) - Math.pow(y, 2))); if (intersect >= x && intersect < (x + 1)) { whatsides += "Bottom"; xval[point] = intersect - x; yval[point] = 1; } switch (whatsides) { case "LeftRight": return Math.min(yval[0], yval[1]) + ((Math.max(yval[0], yval[1]) - Math.min(yval[0], yval[1])) / 2); case "TopRight": return 1 - (((1 - xval[0]) * (1 - yval[1])) / 2); case "TopBottom": return Math.min(xval[0], xval[1]) + ((Math.max(xval[0], xval[1]) - Math.min(xval[0], xval[1])) / 2); case "LeftBottom": return (yval[0] * xval[1]) / 2; default: return 1; } }, draw:function (x, y, color, opac, height, corner, image, radius, top, format) { var px = document.createElement("div"); px.style.height = height + "px"; px.style.width = "1px"; px.style.position = "absolute"; px.style.fontSize = "1px"; px.style.overflow = "hidden"; if (image == -1 && format.bgImage != "") { px.style.backgroundImage = format.bgImage; px.style.backgroundPosition = "-" + (format.width - (radius - x) + format.borderWidth) + "px -" + ((format.height + top + y) - format.borderWidth) + "px"; } else { px.style.backgroundColor = color; } if (opac != 100) { dojo.html.setOpacity(px, (opac / 100)); } px.style.top = y + "px"; px.style.left = x + "px"; corner.appendChild(px); }, getRGB:function (clr) { var ret = "#ffffff"; if (clr != "" && clr != "transparent") { if (clr.substr(0, 3) == "rgb") { var t = clr.substring(4, clr.indexOf(")")); t = t.split(","); for (var i = 0; i < t.length; i++) { var n = parseInt(t[i]).toString(16); if (n.length < 2) { n = "0" + n; } t[i] = n; } ret = "#" + t.join(""); } else { if (clr.length == 4) { ret = "#" + clr.substring(1, 2) + clr.substring(1, 2) + clr.substring(2, 3) + clr.substring(2, 3) + clr.substring(3, 4) + clr.substring(3, 4); } else { ret = clr; } } } return ret; }};

__CPAN_FILE__ src/lfx/__package__.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.kwCompoundRequire({browser:["dojo.lfx.html"], dashboard:["dojo.lfx.html"]}); dojo.provide("dojo.lfx.*");

__CPAN_FILE__ src/lfx/html.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.lfx.html"], ["require", "dojo.gfx.color"], ["require", "dojo.lfx.Animation"], ["require", "dojo.lang.array"], ["require", "dojo.html.display"], ["require", "dojo.html.color"], ["require", "dojo.html.layout"]], definePackage:function (dojo) { dojo.provide("dojo.lfx.html"); dojo.require("dojo.gfx.color"); dojo.require("dojo.lfx.Animation"); dojo.require("dojo.lang.array"); dojo.require("dojo.html.display"); dojo.require("dojo.html.color"); dojo.require("dojo.html.layout"); dojo.lfx.html._byId = function (nodes) { if (!nodes) { return []; } if (dojo.lang.isArrayLike(nodes)) { if (!nodes.alreadyChecked) { var n = []; dojo.lang.forEach(nodes, function (node) { n.push(dojo.byId(node)); }); n.alreadyChecked = true; return n; } else { return nodes; } } else { var n = []; n.push(dojo.byId(nodes)); n.alreadyChecked = true; return n; } }; dojo.lfx.html.propertyAnimation = function (nodes, propertyMap, duration, easing, handlers) { nodes = dojo.lfx.html._byId(nodes); var targs = {"propertyMap":propertyMap, "nodes":nodes, "duration":duration, "easing":easing || dojo.lfx.easeDefault}; var setEmUp = function (args) { if (args.nodes.length == 1) { var pm = args.propertyMap; if (!dojo.lang.isArray(args.propertyMap)) { var parr = []; for (var pname in pm) { pm[pname].property = pname; parr.push(pm[pname]); } pm = args.propertyMap = parr; } dojo.lang.forEach(pm, function (prop) { if (dj_undef("start", prop)) { if (prop.property != "opacity") { prop.start = parseInt(dojo.html.getComputedStyle(args.nodes[0], prop.property)); } else { prop.start = dojo.html.getOpacity(args.nodes[0]); } } }); } }; var coordsAsInts = function (coords) { var cints = []; dojo.lang.forEach(coords, function (c) { cints.push(Math.round(c)); }); return cints; }; var setStyle = function (n, style) { n = dojo.byId(n); if (!n || !n.style) { return; } for (var s in style) { try { if (s == "opacity") { dojo.html.setOpacity(n, style[s]); } else { n.style[s] = style[s]; } } catch (e) { dojo.debug(e); } } }; var propLine = function (properties) { this._properties = properties; this.diffs = new Array(properties.length); dojo.lang.forEach(properties, function (prop, i) { if (dojo.lang.isFunction(prop.start)) { prop.start = prop.start(prop, i); } if (dojo.lang.isFunction(prop.end)) { prop.end = prop.end(prop, i); } if (dojo.lang.isArray(prop.start)) { this.diffs[i] = null; } else { if (prop.start instanceof dojo.gfx.color.Color) { prop.startRgb = prop.start.toRgb(); prop.endRgb = prop.end.toRgb(); } else { this.diffs[i] = prop.end - prop.start; } } }, this); this.getValue = function (n) { var ret = {}; dojo.lang.forEach(this._properties, function (prop, i) { var value = null; if (dojo.lang.isArray(prop.start)) { } else { if (prop.start instanceof dojo.gfx.color.Color) { value = (prop.units || "rgb") + "("; for (var j = 0; j < prop.startRgb.length; j++) { value += Math.round(((prop.endRgb[j] - prop.startRgb[j]) * n) + prop.startRgb[j]) + (j < prop.startRgb.length - 1 ? "," : ""); } value += ")"; } else { value = ((this.diffs[i]) * n) + prop.start + (prop.property != "opacity" ? prop.units || "px" : ""); } } ret[dojo.html.toCamelCase(prop.property)] = value; }, this); return ret; }; }; var anim = new dojo.lfx.Animation({beforeBegin:function () { setEmUp(targs); anim.curve = new propLine(targs.propertyMap); }, onAnimate:function (propValues) { dojo.lang.forEach(targs.nodes, function (node) { setStyle(node, propValues); }); }}, targs.duration, null, targs.easing); if (handlers) { for (var x in handlers) { if (dojo.lang.isFunction(handlers[x])) { anim.connect(x, anim, handlers[x]); } } } return anim; }; dojo.lfx.html._makeFadeable = function (nodes) { var makeFade = function (node) { if (dojo.render.html.ie) { if ((node.style.zoom.length == 0) && (dojo.html.getStyle(node, "zoom") == "normal")) { node.style.zoom = "1"; } if ((node.style.width.length == 0) && (dojo.html.getStyle(node, "width") == "auto")) { node.style.width = "auto"; } } }; if (dojo.lang.isArrayLike(nodes)) { dojo.lang.forEach(nodes, makeFade); } else { makeFade(nodes); } }; dojo.lfx.html.fade = function (nodes, values, duration, easing, callback) { nodes = dojo.lfx.html._byId(nodes); var props = {property:"opacity"}; if (!dj_undef("start", values)) { props.start = values.start; } else { props.start = function () { return dojo.html.getOpacity(nodes[0]); }; } if (!dj_undef("end", values)) { props.end = values.end; } else { dojo.raise("dojo.lfx.html.fade needs an end value"); } var anim = dojo.lfx.propertyAnimation(nodes, [props], duration, easing); anim.connect("beforeBegin", function () { dojo.lfx.html._makeFadeable(nodes); }); if (callback) { anim.connect("onEnd", function () { callback(nodes, anim); }); } return anim; }; dojo.lfx.html.fadeIn = function (nodes, duration, easing, callback) { return dojo.lfx.html.fade(nodes, {end:1}, duration, easing, callback); }; dojo.lfx.html.fadeOut = function (nodes, duration, easing, callback) { return dojo.lfx.html.fade(nodes, {end:0}, duration, easing, callback); }; dojo.lfx.html.fadeShow = function (nodes, duration, easing, callback) { nodes = dojo.lfx.html._byId(nodes); dojo.lang.forEach(nodes, function (node) { dojo.html.setOpacity(node, 0); }); var anim = dojo.lfx.html.fadeIn(nodes, duration, easing, callback); anim.connect("beforeBegin", function () { if (dojo.lang.isArrayLike(nodes)) { dojo.lang.forEach(nodes, dojo.html.show); } else { dojo.html.show(nodes); } }); return anim; }; dojo.lfx.html.fadeHide = function (nodes, duration, easing, callback) { var anim = dojo.lfx.html.fadeOut(nodes, duration, easing, function () { if (dojo.lang.isArrayLike(nodes)) { dojo.lang.forEach(nodes, dojo.html.hide); } else { dojo.html.hide(nodes); } if (callback) { callback(nodes, anim); } }); return anim; }; dojo.lfx.html.wipeIn = function (nodes, duration, easing, callback) { nodes = dojo.lfx.html._byId(nodes); var anims = []; dojo.lang.forEach(nodes, function (node) { var oprop = {}; var origTop, origLeft, origPosition; with (node.style) { origTop = top; origLeft = left; origPosition = position; top = "-9999px"; left = "-9999px"; position = "absolute"; display = ""; } var nodeHeight = dojo.html.getBorderBox(node).height; with (node.style) { top = origTop; left = origLeft; position = origPosition; display = "none"; } var anim = dojo.lfx.propertyAnimation(node, {"height":{start:1, end:function () { return nodeHeight; }}}, duration, easing); anim.connect("beforeBegin", function () { oprop.overflow = node.style.overflow; oprop.height = node.style.height; with (node.style) { overflow = "hidden"; height = "1px"; } dojo.html.show(node); }); anim.connect("onEnd", function () { with (node.style) { overflow = oprop.overflow; height = oprop.height; } if (callback) { callback(node, anim); } }); anims.push(anim); }); return dojo.lfx.combine(anims); }; dojo.lfx.html.wipeOut = function (nodes, duration, easing, callback) { nodes = dojo.lfx.html._byId(nodes); var anims = []; dojo.lang.forEach(nodes, function (node) { var oprop = {}; var anim = dojo.lfx.propertyAnimation(node, {"height":{start:function () { return dojo.html.getContentBox(node).height; }, end:1}}, duration, easing, {"beforeBegin":function () { oprop.overflow = node.style.overflow; oprop.height = node.style.height; with (node.style) { overflow = "hidden"; } dojo.html.show(node); }, "onEnd":function () { dojo.html.hide(node); with (node.style) { overflow = oprop.overflow; height = oprop.height; } if (callback) { callback(node, anim); } }}); anims.push(anim); }); return dojo.lfx.combine(anims); }; dojo.lfx.html.slideTo = function (nodes, coords, duration, easing, callback) { nodes = dojo.lfx.html._byId(nodes); var anims = []; var compute = dojo.html.getComputedStyle; if (dojo.lang.isArray(coords)) { dojo.deprecated("dojo.lfx.html.slideTo(node, array)", "use dojo.lfx.html.slideTo(node, {top: value, left: value});", "0.5"); coords = {top:coords[0], left:coords[1]}; } dojo.lang.forEach(nodes, function (node) { var top = null; var left = null; var init = (function () { var innerNode = node; return function () { var pos = compute(innerNode, "position"); top = (pos == "absolute" ? node.offsetTop : parseInt(compute(node, "top")) || 0); left = (pos == "absolute" ? node.offsetLeft : parseInt(compute(node, "left")) || 0); if (!dojo.lang.inArray(["absolute", "relative"], pos)) { var ret = dojo.html.abs(innerNode, true); dojo.html.setStyleAttributes(innerNode, "position:absolute;top:" + ret.y + "px;left:" + ret.x + "px;"); top = ret.y; left = ret.x; } }; })(); init(); var anim = dojo.lfx.propertyAnimation(node, {"top":{start:top, end:(coords.top || 0)}, "left":{start:left, end:(coords.left || 0)}}, duration, easing, {"beforeBegin":init}); if (callback) { anim.connect("onEnd", function () { callback(nodes, anim); }); } anims.push(anim); }); return dojo.lfx.combine(anims); }; dojo.lfx.html.slideBy = function (nodes, coords, duration, easing, callback) { nodes = dojo.lfx.html._byId(nodes); var anims = []; var compute = dojo.html.getComputedStyle; if (dojo.lang.isArray(coords)) { dojo.deprecated("dojo.lfx.html.slideBy(node, array)", "use dojo.lfx.html.slideBy(node, {top: value, left: value});", "0.5"); coords = {top:coords[0], left:coords[1]}; } dojo.lang.forEach(nodes, function (node) { var top = null; var left = null; var init = (function () { var innerNode = node; return function () { var pos = compute(innerNode, "position"); top = (pos == "absolute" ? node.offsetTop : parseInt(compute(node, "top")) || 0); left = (pos == "absolute" ? node.offsetLeft : parseInt(compute(node, "left")) || 0); if (!dojo.lang.inArray(["absolute", "relative"], pos)) { var ret = dojo.html.abs(innerNode, true); dojo.html.setStyleAttributes(innerNode, "position:absolute;top:" + ret.y + "px;left:" + ret.x + "px;"); top = ret.y; left = ret.x; } }; })(); init(); var anim = dojo.lfx.propertyAnimation(node, {"top":{start:top, end:top + (coords.top || 0)}, "left":{start:left, end:left + (coords.left || 0)}}, duration, easing).connect("beforeBegin", init); if (callback) { anim.connect("onEnd", function () { callback(nodes, anim); }); } anims.push(anim); }); return dojo.lfx.combine(anims); }; dojo.lfx.html.explode = function (start, endNode, duration, easing, callback) { var h = dojo.html; start = dojo.byId(start); endNode = dojo.byId(endNode); var startCoords = h.toCoordinateObject(start, true); var outline = document.createElement("div"); h.copyStyle(outline, endNode); if (endNode.explodeClassName) { outline.className = endNode.explodeClassName; } with (outline.style) { position = "absolute"; display = "none"; var backgroundStyle = h.getStyle(start, "background-color"); backgroundColor = backgroundStyle ? backgroundStyle.toLowerCase() : "transparent"; backgroundColor = (backgroundColor == "transparent") ? "rgb(221, 221, 221)" : backgroundColor; } dojo.body().appendChild(outline); with (endNode.style) { visibility = "hidden"; display = "block"; } var endCoords = h.toCoordinateObject(endNode, true); with (endNode.style) { display = "none"; visibility = "visible"; } var props = {opacity:{start:0.5, end:1}}; dojo.lang.forEach(["height", "width", "top", "left"], function (type) { props[type] = {start:startCoords[type], end:endCoords[type]}; }); var anim = new dojo.lfx.propertyAnimation(outline, props, duration, easing, {"beforeBegin":function () { h.setDisplay(outline, "block"); }, "onEnd":function () { h.setDisplay(endNode, "block"); outline.parentNode.removeChild(outline); }}); if (callback) { anim.connect("onEnd", function () { callback(endNode, anim); }); } return anim; }; dojo.lfx.html.implode = function (startNode, end, duration, easing, callback) { var h = dojo.html; startNode = dojo.byId(startNode); end = dojo.byId(end); var startCoords = dojo.html.toCoordinateObject(startNode, true); var endCoords = dojo.html.toCoordinateObject(end, true); var outline = document.createElement("div"); dojo.html.copyStyle(outline, startNode); if (startNode.explodeClassName) { outline.className = startNode.explodeClassName; } dojo.html.setOpacity(outline, 0.3); with (outline.style) { position = "absolute"; display = "none"; backgroundColor = h.getStyle(startNode, "background-color").toLowerCase(); } dojo.body().appendChild(outline); var props = {opacity:{start:1, end:0.5}}; dojo.lang.forEach(["height", "width", "top", "left"], function (type) { props[type] = {start:startCoords[type], end:endCoords[type]}; }); var anim = new dojo.lfx.propertyAnimation(outline, props, duration, easing, {"beforeBegin":function () { dojo.html.hide(startNode); dojo.html.show(outline); }, "onEnd":function () { outline.parentNode.removeChild(outline); }}); if (callback) { anim.connect("onEnd", function () { callback(startNode, anim); }); } return anim; }; dojo.lfx.html.highlight = function (nodes, startColor, duration, easing, callback) { nodes = dojo.lfx.html._byId(nodes); var anims = []; dojo.lang.forEach(nodes, function (node) { var color = dojo.html.getBackgroundColor(node); var bg = dojo.html.getStyle(node, "background-color").toLowerCase(); var bgImage = dojo.html.getStyle(node, "background-image"); var wasTransparent = (bg == "transparent" || bg == "rgba(0, 0, 0, 0)"); while (color.length > 3) { color.pop(); } var rgb = new dojo.gfx.color.Color(startColor); var endRgb = new dojo.gfx.color.Color(color); var anim = dojo.lfx.propertyAnimation(node, {"background-color":{start:rgb, end:endRgb}}, duration, easing, {"beforeBegin":function () { if (bgImage) { node.style.backgroundImage = "none"; } node.style.backgroundColor = "rgb(" + rgb.toRgb().join(",") + ")"; }, "onEnd":function () { if (bgImage) { node.style.backgroundImage = bgImage; } if (wasTransparent) { node.style.backgroundColor = "transparent"; } if (callback) { callback(node, anim); } }}); anims.push(anim); }); return dojo.lfx.combine(anims); }; dojo.lfx.html.unhighlight = function (nodes, endColor, duration, easing, callback) { nodes = dojo.lfx.html._byId(nodes); var anims = []; dojo.lang.forEach(nodes, function (node) { var color = new dojo.gfx.color.Color(dojo.html.getBackgroundColor(node)); var rgb = new dojo.gfx.color.Color(endColor); var bgImage = dojo.html.getStyle(node, "background-image"); var anim = dojo.lfx.propertyAnimation(node, {"background-color":{start:color, end:rgb}}, duration, easing, {"beforeBegin":function () { if (bgImage) { node.style.backgroundImage = "none"; } node.style.backgroundColor = "rgb(" + color.toRgb().join(",") + ")"; }, "onEnd":function () { if (callback) { callback(node, anim); } }}); anims.push(anim); }); return dojo.lfx.combine(anims); }; dojo.lang.mixin(dojo.lfx, dojo.lfx.html); }});

__CPAN_FILE__ src/lfx/extras.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.lfx.extras"], ["require", "dojo.lfx.html"], ["require", "dojo.lfx.Animation"]], definePackage:function (dojo) { dojo.provide("dojo.lfx.extras"); dojo.require("dojo.lfx.html"); dojo.require("dojo.lfx.Animation"); dojo.lfx.html.fadeWipeIn = function (nodes, duration, easing, callback) { nodes = dojo.lfx.html._byId(nodes); var anim = dojo.lfx.combine(dojo.lfx.fadeIn(nodes, duration, easing), dojo.lfx.wipeIn(nodes, duration, easing)); if (callback) { anim.connect("onEnd", function () { callback(nodes, anim); }); } return anim; }; dojo.lfx.html.fadeWipeOut = function (nodes, duration, easing, callback) { nodes = dojo.lfx.html._byId(nodes); var anim = dojo.lfx.combine(dojo.lfx.fadeOut(nodes, duration, easing), dojo.lfx.wipeOut(nodes, duration, easing)); if (callback) { anim.connect("onEnd", function () { callback(nodes, anim); }); } return anim; }; dojo.lfx.html.scale = function (nodes, percentage, scaleContent, fromCenter, duration, easing, callback) { nodes = dojo.lfx.html._byId(nodes); var anims = []; dojo.lang.forEach(nodes, function (node) { var outer = dojo.html.getMarginBox(node); var actualPct = percentage / 100; var props = [{property:"width", start:outer.width, end:outer.width * actualPct}, {property:"height", start:outer.height, end:outer.height * actualPct}]; if (scaleContent) { var fontSize = dojo.html.getStyle(node, "font-size"); var fontSizeType = null; if (!fontSize) { fontSize = parseFloat("100%"); fontSizeType = "%"; } else { dojo.lang.some(["em", "px", "%"], function (item, index, arr) { if (fontSize.indexOf(item) > 0) { fontSize = parseFloat(fontSize); fontSizeType = item; return true; } }); } props.push({property:"font-size", start:fontSize, end:fontSize * actualPct, units:fontSizeType}); } if (fromCenter) { var positioning = dojo.html.getStyle(node, "position"); var originalTop = node.offsetTop; var originalLeft = node.offsetLeft; var endTop = ((outer.height * actualPct) - outer.height) / 2; var endLeft = ((outer.width * actualPct) - outer.width) / 2; props.push({property:"top", start:originalTop, end:(positioning == "absolute" ? originalTop - endTop : (-1 * endTop))}); props.push({property:"left", start:originalLeft, end:(positioning == "absolute" ? originalLeft - endLeft : (-1 * endLeft))}); } var anim = dojo.lfx.propertyAnimation(node, props, duration, easing); if (callback) { anim.connect("onEnd", function () { callback(node, anim); }); } anims.push(anim); }); return dojo.lfx.combine(anims); }; dojo.lang.mixin(dojo.lfx, dojo.lfx.html); }});

__CPAN_FILE__ src/lfx/__package__.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["kwCompoundRequire", {browser:["dojo.lfx.html"], dashboard:["dojo.lfx.html"]}], ["provide", "dojo.lfx.*"]], definePackage:function (dojo) { dojo.kwCompoundRequire({browser:["dojo.lfx.html"], dashboard:["dojo.lfx.html"]}); dojo.provide("dojo.lfx.*"); }});

__CPAN_FILE__ src/lfx/shadow.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.lfx.shadow"); dojo.require("dojo.lang.common"); dojo.require("dojo.uri.Uri"); dojo.lfx.shadow = function (node) { this.shadowPng = dojo.uri.moduleUri("dojo.html", "images/shadow"); this.shadowThickness = 8; this.shadowOffset = 15; this.init(node); }; dojo.extend(dojo.lfx.shadow, {init:function (node) { this.node = node; this.pieces = {}; var x1 = -1 * this.shadowThickness; var y0 = this.shadowOffset; var y1 = this.shadowOffset + this.shadowThickness; this._makePiece("tl", "top", y0, "left", x1); this._makePiece("l", "top", y1, "left", x1, "scale"); this._makePiece("tr", "top", y0, "left", 0); this._makePiece("r", "top", y1, "left", 0, "scale"); this._makePiece("bl", "top", 0, "left", x1); this._makePiece("b", "top", 0, "left", 0, "crop"); this._makePiece("br", "top", 0, "left", 0); }, _makePiece:function (name, vertAttach, vertCoord, horzAttach, horzCoord, sizing) { var img; var url = this.shadowPng + name.toUpperCase() + ".png"; if (dojo.render.html.ie55 || dojo.render.html.ie60) { img = dojo.doc().createElement("div"); img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + url + "'" + (sizing ? ", sizingMethod='" + sizing + "'" : "") + ")"; } else { img = dojo.doc().createElement("img"); img.src = url; } img.style.position = "absolute"; img.style[vertAttach] = vertCoord + "px"; img.style[horzAttach] = horzCoord + "px"; img.style.width = this.shadowThickness + "px"; img.style.height = this.shadowThickness + "px"; this.pieces[name] = img; this.node.appendChild(img); }, size:function (width, height) { var sideHeight = height - (this.shadowOffset + this.shadowThickness + 1); if (sideHeight < 0) { sideHeight = 0; } if (height < 1) { height = 1; } if (width < 1) { width = 1; } with (this.pieces) { l.style.height = sideHeight + "px"; r.style.height = sideHeight + "px"; b.style.width = (width - 1) + "px"; bl.style.top = (height - 1) + "px"; b.style.top = (height - 1) + "px"; br.style.top = (height - 1) + "px"; tr.style.left = (width - 1) + "px"; r.style.left = (width - 1) + "px"; br.style.left = (width - 1) + "px"; } }});

__CPAN_FILE__ src/lfx/toggle.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.lfx.toggle"); dojo.require("dojo.lfx.*"); dojo.lfx.toggle.plain = {show:function (node, duration, easing, callback) { dojo.html.show(node); if (dojo.lang.isFunction(callback)) { callback(); } }, hide:function (node, duration, easing, callback) { dojo.html.hide(node); if (dojo.lang.isFunction(callback)) { callback(); } }}; dojo.lfx.toggle.fade = {show:function (node, duration, easing, callback) { dojo.lfx.fadeShow(node, duration, easing, callback).play(); }, hide:function (node, duration, easing, callback) { dojo.lfx.fadeHide(node, duration, easing, callback).play(); }}; dojo.lfx.toggle.wipe = {show:function (node, duration, easing, callback) { dojo.lfx.wipeIn(node, duration, easing, callback).play(); }, hide:function (node, duration, easing, callback) { dojo.lfx.wipeOut(node, duration, easing, callback).play(); }}; dojo.lfx.toggle.explode = {show:function (node, duration, easing, callback, explodeSrc) { dojo.lfx.explode(explodeSrc || {x:0, y:0, width:0, height:0}, node, duration, easing, callback).play(); }, hide:function (node, duration, easing, callback, explodeSrc) { dojo.lfx.implode(node, explodeSrc || {x:0, y:0, width:0, height:0}, duration, easing, callback).play(); }};

__CPAN_FILE__ src/lfx/extras.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.lfx.extras"); dojo.require("dojo.lfx.html"); dojo.require("dojo.lfx.Animation"); dojo.lfx.html.fadeWipeIn = function (nodes, duration, easing, callback) { nodes = dojo.lfx.html._byId(nodes); var anim = dojo.lfx.combine(dojo.lfx.fadeIn(nodes, duration, easing), dojo.lfx.wipeIn(nodes, duration, easing)); if (callback) { anim.connect("onEnd", function () { callback(nodes, anim); }); } return anim; }; dojo.lfx.html.fadeWipeOut = function (nodes, duration, easing, callback) { nodes = dojo.lfx.html._byId(nodes); var anim = dojo.lfx.combine(dojo.lfx.fadeOut(nodes, duration, easing), dojo.lfx.wipeOut(nodes, duration, easing)); if (callback) { anim.connect("onEnd", function () { callback(nodes, anim); }); } return anim; }; dojo.lfx.html.scale = function (nodes, percentage, scaleContent, fromCenter, duration, easing, callback) { nodes = dojo.lfx.html._byId(nodes); var anims = []; dojo.lang.forEach(nodes, function (node) { var outer = dojo.html.getMarginBox(node); var actualPct = percentage / 100; var props = [{property:"width", start:outer.width, end:outer.width * actualPct}, {property:"height", start:outer.height, end:outer.height * actualPct}]; if (scaleContent) { var fontSize = dojo.html.getStyle(node, "font-size"); var fontSizeType = null; if (!fontSize) { fontSize = parseFloat("100%"); fontSizeType = "%"; } else { dojo.lang.some(["em", "px", "%"], function (item, index, arr) { if (fontSize.indexOf(item) > 0) { fontSize = parseFloat(fontSize); fontSizeType = item; return true; } }); } props.push({property:"font-size", start:fontSize, end:fontSize * actualPct, units:fontSizeType}); } if (fromCenter) { var positioning = dojo.html.getStyle(node, "position"); var originalTop = node.offsetTop; var originalLeft = node.offsetLeft; var endTop = ((outer.height * actualPct) - outer.height) / 2; var endLeft = ((outer.width * actualPct) - outer.width) / 2; props.push({property:"top", start:originalTop, end:(positioning == "absolute" ? originalTop - endTop : (-1 * endTop))}); props.push({property:"left", start:originalLeft, end:(positioning == "absolute" ? originalLeft - endLeft : (-1 * endLeft))}); } var anim = dojo.lfx.propertyAnimation(node, props, duration, easing); if (callback) { anim.connect("onEnd", function () { callback(node, anim); }); } anims.push(anim); }); return dojo.lfx.combine(anims); }; dojo.lang.mixin(dojo.lfx, dojo.lfx.html);

__CPAN_DIR__ src/i18n __CPAN_FILE__ src/i18n/common.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.i18n.common"); dojo.i18n.getLocalization = function (packageName, bundleName, locale) { dojo.hostenv.preloadLocalizations(); locale = dojo.hostenv.normalizeLocale(locale); var elements = locale.split("-"); var module = [packageName, "nls", bundleName].join("."); var bundle = dojo.hostenv.findModule(module, true); var localization; for (var i = elements.length; i > 0; i--) { var loc = elements.slice(0, i).join("_"); if (bundle[loc]) { localization = bundle[loc]; break; } } if (!localization) { localization = bundle.ROOT; } if (localization) { var clazz = function () { }; clazz.prototype = localization; return new clazz(); } dojo.raise("Bundle not found: " + bundleName + " in " + packageName + " , locale=" + locale); }; dojo.i18n.isLTR = function (locale) { var lang = dojo.hostenv.normalizeLocale(locale).split("-")[0]; var RTL = {ar:true, fa:true, he:true, ur:true, yi:true}; return !RTL[lang]; };

__CPAN_FILE__ src/i18n/common.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.common"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.common"); dojo.i18n.getLocalization = function (packageName, bundleName, locale) { dojo.hostenv.preloadLocalizations(); locale = dojo.hostenv.normalizeLocale(locale); var elements = locale.split("-"); var module = [packageName, "nls", bundleName].join("."); var bundle = dojo.hostenv.findModule(module, true); var localization; for (var i = elements.length; i > 0; i--) { var loc = elements.slice(0, i).join("_"); if (bundle[loc]) { localization = bundle[loc]; break; } } if (!localization) { localization = bundle.ROOT; } if (localization) { var clazz = function () { }; clazz.prototype = localization; return new clazz(); } dojo.raise("Bundle not found: " + bundleName + " in " + packageName + " , locale=" + locale); }; dojo.i18n.isLTR = function (locale) { var lang = dojo.hostenv.normalizeLocale(locale).split("-")[0]; var RTL = {ar:true, fa:true, he:true, ur:true, yi:true}; return !RTL[lang]; }; }});

__CPAN_FILE__ src/i18n/currency.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.i18n.currency"); dojo.require("dojo.experimental"); dojo.experimental("dojo.i18n.currency"); dojo.require("dojo.regexp"); dojo.require("dojo.i18n.common"); dojo.require("dojo.i18n.number"); dojo.require("dojo.lang.common"); dojo.i18n.currency.format = function (value, iso, flags, locale) { flags = (typeof flags == "object") ? flags : {}; var formatData = dojo.i18n.currency._mapToLocalizedFormatData(dojo.i18n.currency.FORMAT_TABLE, iso, locale); if (typeof flags.places == "undefined") { flags.places = formatData.places; } if (typeof flags.places == "undefined") { flags.places = 2; } flags.signed = false; var result = dojo.i18n.number.format(value, flags, locale); var sym = formatData.symbol; if (formatData.adjSpace == "symbol") { if (formatData.placement == "after") { sym = " " + sym; } else { sym = sym + " "; } } if (value < 0) { if (formatData.signPlacement == "before") { sym = "-" + sym; } else { if (formatData.signPlacement == "after") { sym = sym + "-"; } } } var spc = (formatData.adjSpace == "number") ? " " : ""; if (formatData.placement == "after") { result = result + spc + sym; } else { result = sym + spc + result; } if (value < 0) { if (formatData.signPlacement == "around") { result = "(" + result + ")"; } else { if (formatData.signPlacement == "end") { result = result + "-"; } else { if (!formatData.signPlacement || formatData.signPlacement == "begin") { result = "-" + result; } } } } return result; }; dojo.i18n.currency.parse = function (value, iso, locale, flags) { if (typeof flags.validate == "undefined") { flags.validate = true; } if (flags.validate && !dojo.i18n.number.isCurrency(value, iso, locale, flags)) { return Number.NaN; } var sign = (value.indexOf("-") != -1); var abs = abs.replace(/\-/, ""); var formatData = dojo.i18n.currency._mapToLocalizedFormatData(dojo.i18n.currency.FORMAT_TABLE, iso, locale); abs = abs.replace(new RegExp("\\" + formatData.symbol), ""); var number = dojo.i18n.number.parse(abs, locale, flags); if (sign) { number = number * -1; } return number; }; dojo.i18n.currency.isCurrency = function (value, iso, locale, flags) { flags = (typeof flags == "object") ? flags : {}; var numberFormatData = dojo.i18n.number._mapToLocalizedFormatData(dojo.i18n.number.FORMAT_TABLE, locale); if (typeof flags.separator == "undefined") { flags.separator = numberFormatData[0]; } else { if (dojo.lang.isArray(flags.separator) && flags.separator.length == 0) { flags.separator = [numberFormatData[0], ""]; } } if (typeof flags.decimal == "undefined") { flags.decimal = numberFormatData[2]; } if (typeof flags.groupSize == "undefined") { flags.groupSize = numberFormatData[3]; } if (typeof flags.groupSize2 == "undefined") { flags.groupSize2 = numberFormatData[4]; } var formatData = dojo.i18n.currency._mapToLocalizedFormatData(dojo.i18n.currency.FORMAT_TABLE, iso, locale); if (typeof flags.places == "undefined") { flags.places = formatData.places; } if (typeof flags.places == "undefined") { flags.places = 2; } if (typeof flags.symbol == "undefined") { flags.symbol = formatData.symbol; } else { if (dojo.lang.isArray(flags.symbol) && flags.symbol.length == 0) { flags.symbol = [formatData.symbol, ""]; } } if (typeof flags.placement == "undefined") { flags.placement = formatData.placement; } var re = new RegExp("^" + dojo.regexp.currency(flags) + "$"); return re.test(value); }; dojo.i18n.currency._mapToLocalizedFormatData = function (table, iso, locale) { var formatData = dojo.i18n.currency.FORMAT_TABLE[iso]; if (!dojo.lang.isArray(formatData)) { return formatData; } return dojo.i18n.number._mapToLocalizedFormatData(formatData[0], locale); }; (function () { var arabic = {symbol:"\u062c", placement:"after", htmlSymbol:"?"}; var euro = {symbol:"\u20ac", placement:"before", adjSpace:"symbol", htmlSymbol:"&euro;"}; var euroAfter = {symbol:"\u20ac", placement:"after", htmlSymbol:"&euro;"}; dojo.i18n.currency.FORMAT_TABLE = {AED:{symbol:"\u062c", placement:"after"}, ARS:{symbol:"$", signPlacement:"after"}, ATS:{symbol:"\u20ac", adjSpace:"number", signPlacement:"after", htmlSymbol:"&euro;"}, AUD:{symbol:"$"}, BOB:{symbol:"$b"}, BRL:{symbol:"R$", adjSpace:"symbol"}, BEF:euroAfter, BHD:arabic, CAD:[{"*":{symbol:"$"}, "fr-ca":{symbol:"$", placement:"after", signPlacement:"around"}}], CHF:{symbol:"CHF", adjSpace:"symbol", signPlacement:"after"}, CLP:{symbol:"$"}, COP:{symbol:"$", signPlacement:"around"}, CNY:{symbol:"\xa5", htmlSymbol:"&yen;"}, CRC:{symbol:"\u20a1", signPlacement:"after", htmlSymbol:"?"}, CZK:{symbol:"Kc", adjSpace:"symbol", signPlacement:"after"}, DEM:euroAfter, DKK:{symbol:"kr.", adjSpace:"symbol", signPlacement:"after"}, DOP:{symbol:"$"}, DZD:arabic, ECS:{symbol:"$", signPlacement:"after"}, EGP:arabic, ESP:euroAfter, EUR:euro, FIM:euroAfter, FRF:euroAfter, GBP:{symbol:"\xa3", htmlSymbol:"&pound;"}, GRD:{symbol:"\u20ac", signPlacement:"end", htmlSymbol:"&euro;"}, GTQ:{symbol:"Q", signPlacement:"after"}, HKD:{symbol:"HK$"}, HNL:{symbol:"L.", signPlacement:"end"}, HUF:{symbol:"Ft", placement:"after", adjSpace:"symbol"}, IEP:{symbol:"\u20ac", htmlSymbol:"&euro;"}, ILS:{symbol:"\u05e9\"\u05d7", placement:"after", htmlSymbol:"?"}, INR:{symbol:"Rs."}, ITL:{symbol:"\u20ac", signPlacement:"after", htmlSymbol:"&euro;"}, JOD:arabic, JPY:{symbol:"\xa5", places:0, htmlSymbol:"&yen;"}, KRW:{symbol:"\u20a9", places:0, htmlSymbol:"?"}, KWD:arabic, LBP:arabic, LUF:euroAfter, MAD:arabic, MXN:{symbol:"$", signPlacement:"around"}, NIO:{symbol:"C$", adjSpace:"symbol", signPlacement:"after"}, NLG:{symbol:"\u20ac", signPlacement:"end", htmlSymbol:"&euro;"}, NOK:{symbol:"kr", adjSpace:"symbol", signPlacement:"after"}, NZD:{symbol:"$"}, OMR:arabic, PAB:{symbol:"B/", adjSpace:"symbol", signPlacement:"after"}, PEN:{symbol:"S/", signPlacement:"after"}, PLN:{symbol:"z", placement:"after"}, PTE:euroAfter, PYG:{symbol:"Gs.", signPlacement:"after"}, QAR:arabic, RUR:{symbol:"rub.", placement:"after"}, SAR:arabic, SEK:{symbol:"kr", placement:"after", adjSpace:"symbol"}, SGD:{symbol:"$"}, SVC:{symbol:"\u20a1", signPlacement:"after", adjSpace:"symbol"}, SYP:arabic, TND:arabic, TRL:{symbol:"TL", placement:"after"}, TWD:{symbol:"NT$"}, USD:{symbol:"$"}, UYU:{symbol:"$U", signplacement:"after", adjSpace:"symbol"}, VEB:{symbol:"Bs", signplacement:"after", adjSpace:"symbol"}, YER:arabic, ZAR:{symbol:"R", signPlacement:"around"}}; })();

__CPAN_FILE__ src/i18n/number.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.number"], ["require", "dojo.experimental"], ["require", "dojo.regexp"], ["require", "dojo.i18n.common"], ["require", "dojo.lang.common"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.number"); dojo.require("dojo.experimental"); dojo.experimental("dojo.i18n.number"); dojo.require("dojo.regexp"); dojo.require("dojo.i18n.common"); dojo.require("dojo.lang.common"); dojo.i18n.number.format = function (value, flags, locale) { flags = (typeof flags == "object") ? flags : {}; var formatData = dojo.i18n.number._mapToLocalizedFormatData(dojo.i18n.number.FORMAT_TABLE, locale); if (typeof flags.separator == "undefined") { flags.separator = formatData[1]; } if (typeof flags.decimal == "undefined") { flags.decimal = formatData[2]; } if (typeof flags.groupSize == "undefined") { flags.groupSize = formatData[3]; } if (typeof flags.groupSize2 == "undefined") { flags.groupSize2 = formatData[4]; } if (typeof flags.round == "undefined") { flags.round = true; } if (typeof flags.signed == "undefined") { flags.signed = true; } var output = (flags.signed && (value < 0)) ? "-" : ""; value = Math.abs(value); var whole = String((((flags.places > 0) || !flags.round) ? Math.floor : Math.round)(value)); function splitSubstrings(str, count) { for (var subs = []; str.length >= count; str = str.substr(0, str.length - count)) { subs.push(str.substr(-count)); } if (str.length > 0) { subs.push(str); } return subs.reverse(); } if (flags.groupSize2 && (whole.length > flags.groupSize)) { var groups = splitSubstrings(whole.substr(0, whole.length - flags.groupSize), flags.groupSize2); groups.push(whole.substr(-flags.groupSize)); output = output + groups.join(flags.separator); } else { if (flags.groupSize) { output = output + splitSubstrings(whole, flags.groupSize).join(flags.separator); } else { output = output + whole; } } if (flags.places > 0) { var fract = value - Math.floor(value); fract = (flags.round ? Math.round : Math.floor)(fract * Math.pow(10, flags.places)); output = output + flags.decimal + fract; } return output; }; dojo.i18n.number.parse = function (value, locale, flags) { flags = (typeof flags == "object") ? flags : {}; var formatData = dojo.i18n.number._mapToLocalizedFormatData(dojo.i18n.number.FORMAT_TABLE, locale); if (typeof flags.separator == "undefined") { flags.separator = formatData[1]; } if (typeof flags.decimal == "undefined") { flags.decimal = formatData[2]; } if (typeof flags.groupSize == "undefined") { flags.groupSize = formatData[3]; } if (typeof flags.groupSize2 == "undefined") { flags.groupSize2 = formatData[4]; } if (typeof flags.validate == "undefined") { flags.validate = true; } if (flags.validate && !dojo.i18n.number.isReal(value, locale, flags)) { return Number.NaN; } var numbers = value.split(flags.decimal); if (numbers.length > 2) { return Number.NaN; } var whole = Number(numbers[0].replace(new RegExp("\\" + flags.separator, "g"), "")); var fract = (numbers.length == 1) ? 0 : Number(numbers[1]) / Math.pow(10, String(numbers[1]).length); return whole + fract; }; dojo.i18n.number.isInteger = function (value, locale, flags) { flags = (typeof flags == "object") ? flags : {}; var formatData = dojo.i18n.number._mapToLocalizedFormatData(dojo.i18n.number.FORMAT_TABLE, locale); if (typeof flags.separator == "undefined") { flags.separator = formatData[1]; } else { if (dojo.lang.isArray(flags.separator) && flags.separator.length === 0) { flags.separator = [formatData[1], ""]; } } if (typeof flags.groupSize == "undefined") { flags.groupSize = formatData[3]; } if (typeof flags.groupSize2 == "undefined") { flags.groupSize2 = formatData[4]; } var re = new RegExp("^" + dojo.regexp.integer(flags) + "$"); return re.test(value); }; dojo.i18n.number.isReal = function (value, locale, flags) { flags = (typeof flags == "object") ? flags : {}; var formatData = dojo.i18n.number._mapToLocalizedFormatData(dojo.i18n.number.FORMAT_TABLE, locale); if (typeof flags.separator == "undefined") { flags.separator = formatData[1]; } else { if (dojo.lang.isArray(flags.separator) && flags.separator.length === 0) { flags.separator = [formatData[1], ""]; } } if (typeof flags.decimal == "undefined") { flags.decimal = formatData[2]; } if (typeof flags.groupSize == "undefined") { flags.groupSize = formatData[3]; } if (typeof flags.groupSize2 == "undefined") { flags.groupSize2 = formatData[4]; } var re = new RegExp("^" + dojo.regexp.realNumber(flags) + "$"); return re.test(value); }; (function () { dojo.i18n.number.FORMAT_TABLE = {"ar-ae":["", "", ",", 1], "ar-bh":["", "", ",", 1], "ar-dz":["", "", ",", 1], "ar-eg":["", "", ",", 1], "ar-jo":["", "", ",", 1], "ar-kw":["", "", ",", 1], "ar-lb":["", "", ",", 1], "ar-ma":["", "", ",", 1], "ar-om":["", "", ",", 1], "ar-qa":["", "", ",", 1], "ar-sa":["", "", ",", 1], "ar-sy":["", "", ",", 1], "ar-tn":["", "", ",", 1], "ar-ye":["", "", ",", 1], "cs-cz":[".", ".", ",", 3], "da-dk":[".", ".", ",", 3], "de-at":[".", ".", ",", 3], "de-de":[".", ".", ",", 3], "de-lu":[".", ".", ",", 3], "de-ch":["'", "'", ".", 3], "el-gr":[".", ".", ",", 3], "en-au":[",", ",", ".", 3], "en-ca":[",", ",", ".", 3], "en-gb":[",", ",", ".", 3], "en-hk":[",", ",", ".", 3], "en-ie":[",", ",", ".", 3], "en-in":[",", ",", ".", 3, 2], "en-nz":[",", ",", ".", 3], "en-us":[",", ",", ".", 3], "en-za":[",", ",", ".", 3], "es-ar":[".", ".", ",", 3], "es-bo":[".", ".", ",", 3], "es-cl":[".", ".", ",", 3], "es-co":[".", ".", ",", 3], "es-cr":[".", ".", ",", 3], "es-do":[".", ".", ",", 3], "es-ec":[".", ".", ",", 3], "es-es":[".", ".", ",", 3], "es-gt":[",", ",", ".", 3], "es-hn":[",", ",", ".", 3], "es-mx":[",", ",", ".", 3], "es-ni":[",", ",", ".", 3], "es-pa":[",", ",", ".", 3], "es-pe":[",", ",", ".", 3], "es-pr":[",", ",", ".", 3], "es-py":[".", ".", ",", 3], "es-sv":[",", ",", ".", 3], "es-uy":[".", ".", ",", 3], "es-ve":[".", ".", ",", 3], "fi-fi":[" ", " ", ",", 3], "fr-be":[".", ".", ",", 3], "fr-ca":[" ", " ", ",", 3], "fr-ch":[" ", " ", ".", 3], "fr-fr":[" ", " ", ",", 3], "fr-lu":[".", ".", ",", 3], "he-il":[",", ",", ".", 3], "hu-hu":[" ", " ", ",", 3], "it-ch":[" ", " ", ".", 3], "it-it":[".", ".", ",", 3], "ja-jp":[",", ",", ".", 3], "ko-kr":[",", ",", ".", 3], "no-no":[".", ".", ",", 3], "nl-be":[" ", " ", ",", 3], "nl-nl":[".", ".", ",", 3], "pl-pl":[".", ".", ",", 3], "pt-br":[".", ".", ",", 3], "pt-pt":[".", ".", "$", 3], "ru-ru":[" ", " ", ",", 3], "sv-se":[".", " ", ",", 3], "tr-tr":[".", ".", ",", 3], "zh-cn":[",", ",", ".", 3], "zh-hk":[",", ",", ".", 3], "zh-tw":[",", ",", ".", 3], "*":[",", ",", ".", 3]}; })(); dojo.i18n.number._mapToLocalizedFormatData = function (table, locale) { locale = dojo.hostenv.normalizeLocale(locale); var data = table[locale]; if (typeof data == "undefined") { data = table["*"]; } return data; }; }});

__CPAN_FILE__ src/i18n/currency.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency"], ["require", "dojo.experimental"], ["require", "dojo.regexp"], ["require", "dojo.i18n.common"], ["require", "dojo.i18n.number"], ["require", "dojo.lang.common"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.currency"); dojo.require("dojo.experimental"); dojo.experimental("dojo.i18n.currency"); dojo.require("dojo.regexp"); dojo.require("dojo.i18n.common"); dojo.require("dojo.i18n.number"); dojo.require("dojo.lang.common"); dojo.i18n.currency.format = function (value, iso, flags, locale) { flags = (typeof flags == "object") ? flags : {}; var formatData = dojo.i18n.currency._mapToLocalizedFormatData(dojo.i18n.currency.FORMAT_TABLE, iso, locale); if (typeof flags.places == "undefined") { flags.places = formatData.places; } if (typeof flags.places == "undefined") { flags.places = 2; } flags.signed = false; var result = dojo.i18n.number.format(value, flags, locale); var sym = formatData.symbol; if (formatData.adjSpace == "symbol") { if (formatData.placement == "after") { sym = " " + sym; } else { sym = sym + " "; } } if (value < 0) { if (formatData.signPlacement == "before") { sym = "-" + sym; } else { if (formatData.signPlacement == "after") { sym = sym + "-"; } } } var spc = (formatData.adjSpace == "number") ? " " : ""; if (formatData.placement == "after") { result = result + spc + sym; } else { result = sym + spc + result; } if (value < 0) { if (formatData.signPlacement == "around") { result = "(" + result + ")"; } else { if (formatData.signPlacement == "end") { result = result + "-"; } else { if (!formatData.signPlacement || formatData.signPlacement == "begin") { result = "-" + result; } } } } return result; }; dojo.i18n.currency.parse = function (value, iso, locale, flags) { if (typeof flags.validate == "undefined") { flags.validate = true; } if (flags.validate && !dojo.i18n.number.isCurrency(value, iso, locale, flags)) { return Number.NaN; } var sign = (value.indexOf("-") != -1); var abs = abs.replace(/\-/, ""); var formatData = dojo.i18n.currency._mapToLocalizedFormatData(dojo.i18n.currency.FORMAT_TABLE, iso, locale); abs = abs.replace(new RegExp("\\" + formatData.symbol), ""); var number = dojo.i18n.number.parse(abs, locale, flags); if (sign) { number = number * -1; } return number; }; dojo.i18n.currency.isCurrency = function (value, iso, locale, flags) { flags = (typeof flags == "object") ? flags : {}; var numberFormatData = dojo.i18n.number._mapToLocalizedFormatData(dojo.i18n.number.FORMAT_TABLE, locale); if (typeof flags.separator == "undefined") { flags.separator = numberFormatData[0]; } else { if (dojo.lang.isArray(flags.separator) && flags.separator.length == 0) { flags.separator = [numberFormatData[0], ""]; } } if (typeof flags.decimal == "undefined") { flags.decimal = numberFormatData[2]; } if (typeof flags.groupSize == "undefined") { flags.groupSize = numberFormatData[3]; } if (typeof flags.groupSize2 == "undefined") { flags.groupSize2 = numberFormatData[4]; } var formatData = dojo.i18n.currency._mapToLocalizedFormatData(dojo.i18n.currency.FORMAT_TABLE, iso, locale); if (typeof flags.places == "undefined") { flags.places = formatData.places; } if (typeof flags.places == "undefined") { flags.places = 2; } if (typeof flags.symbol == "undefined") { flags.symbol = formatData.symbol; } else { if (dojo.lang.isArray(flags.symbol) && flags.symbol.length == 0) { flags.symbol = [formatData.symbol, ""]; } } if (typeof flags.placement == "undefined") { flags.placement = formatData.placement; } var re = new RegExp("^" + dojo.regexp.currency(flags) + "$"); return re.test(value); }; dojo.i18n.currency._mapToLocalizedFormatData = function (table, iso, locale) { var formatData = dojo.i18n.currency.FORMAT_TABLE[iso]; if (!dojo.lang.isArray(formatData)) { return formatData; } return dojo.i18n.number._mapToLocalizedFormatData(formatData[0], locale); }; (function () { var arabic = {symbol:"\u062c", placement:"after", htmlSymbol:"?"}; var euro = {symbol:"\u20ac", placement:"before", adjSpace:"symbol", htmlSymbol:"&euro;"}; var euroAfter = {symbol:"\u20ac", placement:"after", htmlSymbol:"&euro;"}; dojo.i18n.currency.FORMAT_TABLE = {AED:{symbol:"\u062c", placement:"after"}, ARS:{symbol:"$", signPlacement:"after"}, ATS:{symbol:"\u20ac", adjSpace:"number", signPlacement:"after", htmlSymbol:"&euro;"}, AUD:{symbol:"$"}, BOB:{symbol:"$b"}, BRL:{symbol:"R$", adjSpace:"symbol"}, BEF:euroAfter, BHD:arabic, CAD:[{"*":{symbol:"$"}, "fr-ca":{symbol:"$", placement:"after", signPlacement:"around"}}], CHF:{symbol:"CHF", adjSpace:"symbol", signPlacement:"after"}, CLP:{symbol:"$"}, COP:{symbol:"$", signPlacement:"around"}, CNY:{symbol:"\xa5", htmlSymbol:"&yen;"}, CRC:{symbol:"\u20a1", signPlacement:"after", htmlSymbol:"?"}, CZK:{symbol:"Kc", adjSpace:"symbol", signPlacement:"after"}, DEM:euroAfter, DKK:{symbol:"kr.", adjSpace:"symbol", signPlacement:"after"}, DOP:{symbol:"$"}, DZD:arabic, ECS:{symbol:"$", signPlacement:"after"}, EGP:arabic, ESP:euroAfter, EUR:euro, FIM:euroAfter, FRF:euroAfter, GBP:{symbol:"\xa3", htmlSymbol:"&pound;"}, GRD:{symbol:"\u20ac", signPlacement:"end", htmlSymbol:"&euro;"}, GTQ:{symbol:"Q", signPlacement:"after"}, HKD:{symbol:"HK$"}, HNL:{symbol:"L.", signPlacement:"end"}, HUF:{symbol:"Ft", placement:"after", adjSpace:"symbol"}, IEP:{symbol:"\u20ac", htmlSymbol:"&euro;"}, ILS:{symbol:"\u05e9\"\u05d7", placement:"after", htmlSymbol:"?"}, INR:{symbol:"Rs."}, ITL:{symbol:"\u20ac", signPlacement:"after", htmlSymbol:"&euro;"}, JOD:arabic, JPY:{symbol:"\xa5", places:0, htmlSymbol:"&yen;"}, KRW:{symbol:"\u20a9", places:0, htmlSymbol:"?"}, KWD:arabic, LBP:arabic, LUF:euroAfter, MAD:arabic, MXN:{symbol:"$", signPlacement:"around"}, NIO:{symbol:"C$", adjSpace:"symbol", signPlacement:"after"}, NLG:{symbol:"\u20ac", signPlacement:"end", htmlSymbol:"&euro;"}, NOK:{symbol:"kr", adjSpace:"symbol", signPlacement:"after"}, NZD:{symbol:"$"}, OMR:arabic, PAB:{symbol:"B/", adjSpace:"symbol", signPlacement:"after"}, PEN:{symbol:"S/", signPlacement:"after"}, PLN:{symbol:"z", placement:"after"}, PTE:euroAfter, PYG:{symbol:"Gs.", signPlacement:"after"}, QAR:arabic, RUR:{symbol:"rub.", placement:"after"}, SAR:arabic, SEK:{symbol:"kr", placement:"after", adjSpace:"symbol"}, SGD:{symbol:"$"}, SVC:{symbol:"\u20a1", signPlacement:"after", adjSpace:"symbol"}, SYP:arabic, TND:arabic, TRL:{symbol:"TL", placement:"after"}, TWD:{symbol:"NT$"}, USD:{symbol:"$"}, UYU:{symbol:"$U", signplacement:"after", adjSpace:"symbol"}, VEB:{symbol:"Bs", signplacement:"after", adjSpace:"symbol"}, YER:arabic, ZAR:{symbol:"R", signPlacement:"around"}}; })(); }});

__CPAN_FILE__ src/i18n/number.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.i18n.number"); dojo.require("dojo.experimental"); dojo.experimental("dojo.i18n.number"); dojo.require("dojo.regexp"); dojo.require("dojo.i18n.common"); dojo.require("dojo.lang.common"); dojo.i18n.number.format = function (value, flags, locale) { flags = (typeof flags == "object") ? flags : {}; var formatData = dojo.i18n.number._mapToLocalizedFormatData(dojo.i18n.number.FORMAT_TABLE, locale); if (typeof flags.separator == "undefined") { flags.separator = formatData[1]; } if (typeof flags.decimal == "undefined") { flags.decimal = formatData[2]; } if (typeof flags.groupSize == "undefined") { flags.groupSize = formatData[3]; } if (typeof flags.groupSize2 == "undefined") { flags.groupSize2 = formatData[4]; } if (typeof flags.round == "undefined") { flags.round = true; } if (typeof flags.signed == "undefined") { flags.signed = true; } var output = (flags.signed && (value < 0)) ? "-" : ""; value = Math.abs(value); var whole = String((((flags.places > 0) || !flags.round) ? Math.floor : Math.round)(value)); function splitSubstrings(str, count) { for (var subs = []; str.length >= count; str = str.substr(0, str.length - count)) { subs.push(str.substr(-count)); } if (str.length > 0) { subs.push(str); } return subs.reverse(); } if (flags.groupSize2 && (whole.length > flags.groupSize)) { var groups = splitSubstrings(whole.substr(0, whole.length - flags.groupSize), flags.groupSize2); groups.push(whole.substr(-flags.groupSize)); output = output + groups.join(flags.separator); } else { if (flags.groupSize) { output = output + splitSubstrings(whole, flags.groupSize).join(flags.separator); } else { output = output + whole; } } if (flags.places > 0) { var fract = value - Math.floor(value); fract = (flags.round ? Math.round : Math.floor)(fract * Math.pow(10, flags.places)); output = output + flags.decimal + fract; } return output; }; dojo.i18n.number.parse = function (value, locale, flags) { flags = (typeof flags == "object") ? flags : {}; var formatData = dojo.i18n.number._mapToLocalizedFormatData(dojo.i18n.number.FORMAT_TABLE, locale); if (typeof flags.separator == "undefined") { flags.separator = formatData[1]; } if (typeof flags.decimal == "undefined") { flags.decimal = formatData[2]; } if (typeof flags.groupSize == "undefined") { flags.groupSize = formatData[3]; } if (typeof flags.groupSize2 == "undefined") { flags.groupSize2 = formatData[4]; } if (typeof flags.validate == "undefined") { flags.validate = true; } if (flags.validate && !dojo.i18n.number.isReal(value, locale, flags)) { return Number.NaN; } var numbers = value.split(flags.decimal); if (numbers.length > 2) { return Number.NaN; } var whole = Number(numbers[0].replace(new RegExp("\\" + flags.separator, "g"), "")); var fract = (numbers.length == 1) ? 0 : Number(numbers[1]) / Math.pow(10, String(numbers[1]).length); return whole + fract; }; dojo.i18n.number.isInteger = function (value, locale, flags) { flags = (typeof flags == "object") ? flags : {}; var formatData = dojo.i18n.number._mapToLocalizedFormatData(dojo.i18n.number.FORMAT_TABLE, locale); if (typeof flags.separator == "undefined") { flags.separator = formatData[1]; } else { if (dojo.lang.isArray(flags.separator) && flags.separator.length === 0) { flags.separator = [formatData[1], ""]; } } if (typeof flags.groupSize == "undefined") { flags.groupSize = formatData[3]; } if (typeof flags.groupSize2 == "undefined") { flags.groupSize2 = formatData[4]; } var re = new RegExp("^" + dojo.regexp.integer(flags) + "$"); return re.test(value); }; dojo.i18n.number.isReal = function (value, locale, flags) { flags = (typeof flags == "object") ? flags : {}; var formatData = dojo.i18n.number._mapToLocalizedFormatData(dojo.i18n.number.FORMAT_TABLE, locale); if (typeof flags.separator == "undefined") { flags.separator = formatData[1]; } else { if (dojo.lang.isArray(flags.separator) && flags.separator.length === 0) { flags.separator = [formatData[1], ""]; } } if (typeof flags.decimal == "undefined") { flags.decimal = formatData[2]; } if (typeof flags.groupSize == "undefined") { flags.groupSize = formatData[3]; } if (typeof flags.groupSize2 == "undefined") { flags.groupSize2 = formatData[4]; } var re = new RegExp("^" + dojo.regexp.realNumber(flags) + "$"); return re.test(value); }; (function () { dojo.i18n.number.FORMAT_TABLE = {"ar-ae":["", "", ",", 1], "ar-bh":["", "", ",", 1], "ar-dz":["", "", ",", 1], "ar-eg":["", "", ",", 1], "ar-jo":["", "", ",", 1], "ar-kw":["", "", ",", 1], "ar-lb":["", "", ",", 1], "ar-ma":["", "", ",", 1], "ar-om":["", "", ",", 1], "ar-qa":["", "", ",", 1], "ar-sa":["", "", ",", 1], "ar-sy":["", "", ",", 1], "ar-tn":["", "", ",", 1], "ar-ye":["", "", ",", 1], "cs-cz":[".", ".", ",", 3], "da-dk":[".", ".", ",", 3], "de-at":[".", ".", ",", 3], "de-de":[".", ".", ",", 3], "de-lu":[".", ".", ",", 3], "de-ch":["'", "'", ".", 3], "el-gr":[".", ".", ",", 3], "en-au":[",", ",", ".", 3], "en-ca":[",", ",", ".", 3], "en-gb":[",", ",", ".", 3], "en-hk":[",", ",", ".", 3], "en-ie":[",", ",", ".", 3], "en-in":[",", ",", ".", 3, 2], "en-nz":[",", ",", ".", 3], "en-us":[",", ",", ".", 3], "en-za":[",", ",", ".", 3], "es-ar":[".", ".", ",", 3], "es-bo":[".", ".", ",", 3], "es-cl":[".", ".", ",", 3], "es-co":[".", ".", ",", 3], "es-cr":[".", ".", ",", 3], "es-do":[".", ".", ",", 3], "es-ec":[".", ".", ",", 3], "es-es":[".", ".", ",", 3], "es-gt":[",", ",", ".", 3], "es-hn":[",", ",", ".", 3], "es-mx":[",", ",", ".", 3], "es-ni":[",", ",", ".", 3], "es-pa":[",", ",", ".", 3], "es-pe":[",", ",", ".", 3], "es-pr":[",", ",", ".", 3], "es-py":[".", ".", ",", 3], "es-sv":[",", ",", ".", 3], "es-uy":[".", ".", ",", 3], "es-ve":[".", ".", ",", 3], "fi-fi":[" ", " ", ",", 3], "fr-be":[".", ".", ",", 3], "fr-ca":[" ", " ", ",", 3], "fr-ch":[" ", " ", ".", 3], "fr-fr":[" ", " ", ",", 3], "fr-lu":[".", ".", ",", 3], "he-il":[",", ",", ".", 3], "hu-hu":[" ", " ", ",", 3], "it-ch":[" ", " ", ".", 3], "it-it":[".", ".", ",", 3], "ja-jp":[",", ",", ".", 3], "ko-kr":[",", ",", ".", 3], "no-no":[".", ".", ",", 3], "nl-be":[" ", " ", ",", 3], "nl-nl":[".", ".", ",", 3], "pl-pl":[".", ".", ",", 3], "pt-br":[".", ".", ",", 3], "pt-pt":[".", ".", "$", 3], "ru-ru":[" ", " ", ",", 3], "sv-se":[".", " ", ",", 3], "tr-tr":[".", ".", ",", 3], "zh-cn":[",", ",", ".", 3], "zh-hk":[",", ",", ".", 3], "zh-tw":[",", ",", ".", 3], "*":[",", ",", ".", 3]}; })(); dojo.i18n.number._mapToLocalizedFormatData = function (table, locale) { locale = dojo.hostenv.normalizeLocale(locale); var data = table[locale]; if (typeof data == "undefined") { data = table["*"]; } return data; };

__CPAN_DIR__ src/i18n/calendar __CPAN_DIR__ src/i18n/calendar/nls __CPAN_FILE__ src/i18n/calendar/nls/gregorianExtras.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"dateFormat-yearOnly":"yyyy"}) __CPAN_FILE__ src/i18n/calendar/nls/README All files within this directory and subdirectories were manually derived from http://unicode.org/cldr

See terms of use: http://www.unicode.org/copyright.html#Exhibit1

Eventually, this data should be generated directly from the XML in the CLDR repository to provide accurate and full support for the full set of locales.

__CPAN_FILE__ src/i18n/calendar/nls/gregorian.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"field-weekday":"Day of the Week", "dateFormat-medium":"yyyy MMM d", "field-second":"Second", "field-week":"Week", "pm":"PM", "timeFormat-full":"HH:mm:ss z", "months-standAlone-narrow":["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], "am":"AM", "days-standAlone-narrow":["1", "2", "3", "4", "5", "6", "7"], "field-year":"Year", "eras":["BCE", "CE"], "field-minute":"Minute", "timeFormat-medium":"HH:mm:ss", "field-hour":"Hour", "dateFormat-long":"yyyy MMMM d", "field-day":"Day", "field-dayperiod":"Dayperiod", "field-month":"Month", "dateFormat-short":"yy/MM/dd", "months-format-wide":["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], "field-era":"Era", "timeFormat-short":"HH:mm", "months-format-abbr":["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], "timeFormat-long":"HH:mm:ss z", "days-format-wide":["1", "2", "3", "4", "5", "6", "7"], "dateFormat-full":"EEEE, yyyy MMMM dd", "field-zone":"Zone", "days-format-abbr":["1", "2", "3", "4", "5", "6", "7"]}) __CPAN_FILE__ src/i18n/calendar/nls/gregorian.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.gregorian"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.calendar.nls.gregorian"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorian", "", ({"field-weekday":"Day of the Week", "dateFormat-medium":"yyyy MMM d", "field-second":"Second", "field-week":"Week", "pm":"PM", "timeFormat-full":"HH:mm:ss z", "months-standAlone-narrow":["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], "am":"AM", "days-standAlone-narrow":["1", "2", "3", "4", "5", "6", "7"], "field-year":"Year", "eras":["BCE", "CE"], "field-minute":"Minute", "timeFormat-medium":"HH:mm:ss", "field-hour":"Hour", "dateFormat-long":"yyyy MMMM d", "field-day":"Day", "field-dayperiod":"Dayperiod", "field-month":"Month", "dateFormat-short":"yy/MM/dd", "months-format-wide":["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], "field-era":"Era", "timeFormat-short":"HH:mm", "months-format-abbr":["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], "timeFormat-long":"HH:mm:ss z", "days-format-wide":["1", "2", "3", "4", "5", "6", "7"], "dateFormat-full":"EEEE, yyyy MMMM dd", "field-zone":"Zone", "days-format-abbr":["1", "2", "3", "4", "5", "6", "7"]})); }}) __CPAN_FILE__ src/i18n/calendar/nls/gregorianExtras.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.gregorianExtras"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.calendar.nls.gregorianExtras"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorianExtras", "", ({"dateFormat-yearOnly":"yyyy"})); }}) __CPAN_DIR__ src/i18n/calendar/nls/es __CPAN_FILE__ src/i18n/calendar/nls/es/gregorian.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"field-weekday":"d\xeda de la semana", "dateFormat-medium":"dd-MMM-yy", "field-second":"segundo", "field-week":"semana", "pm":"p.m.", "timeFormat-full":"HH'H'mm''ss\" z", "months-standAlone-narrow":["E", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "am":"a.m.", "days-standAlone-narrow":["D", "L", "M", "M", "J", "V", "S"], "field-year":"a\xf1o", "eras":["a.C.", "d.C."], "field-minute":"minuto", "field-hour":"hora", "dateFormat-long":"d' de 'MMMM' de 'yyyy", "field-day":"d\xeda", "field-dayperiod":"periodo del d\xeda", "field-month":"mes", "dateFormat-short":"d/MM/yy", "months-format-wide":["enero", "febrero", "marzo", "abril", "mayo", "junio", "julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre"], "field-era":"era", "months-format-abbr":["ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sep", "oct", "nov", "dic"], "days-format-wide":["domingo", "lunes", "martes", "mi\xe9rcoles", "jueves", "viernes", "s\xe1bado"], "dateFormat-full":"EEEE d' de 'MMMM' de 'yyyy", "field-zone":"zona", "days-format-abbr":["dom", "lun", "mar", "mi\xe9", "jue", "vie", "s\xe1b"], "timeFormat-medium":"HH:mm:ss", "timeFormat-short":"HH:mm", "timeFormat-long":"HH:mm:ss z"}) __CPAN_FILE__ src/i18n/calendar/nls/es/gregorian.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.es.gregorian"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.calendar.nls.es.gregorian"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorian", "es", ({"field-weekday":"d\xeda de la semana", "dateFormat-medium":"dd-MMM-yy", "field-second":"segundo", "field-week":"semana", "pm":"p.m.", "timeFormat-full":"HH'H'mm''ss\" z", "months-standAlone-narrow":["E", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "am":"a.m.", "days-standAlone-narrow":["D", "L", "M", "M", "J", "V", "S"], "field-year":"a\xf1o", "eras":["a.C.", "d.C."], "field-minute":"minuto", "field-hour":"hora", "dateFormat-long":"d' de 'MMMM' de 'yyyy", "field-day":"d\xeda", "field-dayperiod":"periodo del d\xeda", "field-month":"mes", "dateFormat-short":"d/MM/yy", "months-format-wide":["enero", "febrero", "marzo", "abril", "mayo", "junio", "julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre"], "field-era":"era", "months-format-abbr":["ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sep", "oct", "nov", "dic"], "days-format-wide":["domingo", "lunes", "martes", "mi\xe9rcoles", "jueves", "viernes", "s\xe1bado"], "dateFormat-full":"EEEE d' de 'MMMM' de 'yyyy", "field-zone":"zona", "days-format-abbr":["dom", "lun", "mar", "mi\xe9", "jue", "vie", "s\xe1b"], "timeFormat-medium":"HH:mm:ss", "timeFormat-short":"HH:mm", "timeFormat-long":"HH:mm:ss z"})); }}) __CPAN_DIR__ src/i18n/calendar/nls/de __CPAN_FILE__ src/i18n/calendar/nls/de/gregorian.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"field-weekday":"Wochentag", "dateFormat-medium":"dd.MM.yyyy", "field-second":"Sekunde", "field-week":"Woche", "pm":"nachm.", "timeFormat-full":"H:mm' Uhr 'z", "months-standAlone-narrow":["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "am":"vorm.", "days-standAlone-narrow":["S", "M", "D", "M", "D", "F", "S"], "field-year":"Jahr", "eras":["v. Chr.", "n. Chr."], "field-hour":"Stunde", "dateFormat-long":"d. MMMM yyyy", "field-day":"Tag", "field-dayperiod":"Tagesh\xe4lfte", "field-month":"Monat", "dateFormat-short":"dd.MM.yy", "months-format-wide":["Januar", "Februar", "M\xe4rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"], "field-era":"Epoche", "months-format-abbr":["Jan", "Feb", "Mrz", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"], "days-format-wide":["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"], "dateFormat-full":"EEEE, d. MMMM yyyy", "field-zone":"Zone", "days-format-abbr":["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"], "field-minute":"Minute", "timeFormat-medium":"HH:mm:ss", "timeFormat-short":"HH:mm", "timeFormat-long":"HH:mm:ss z"}) __CPAN_FILE__ src/i18n/calendar/nls/de/gregorian.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.de.gregorian"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.calendar.nls.de.gregorian"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorian", "de", ({"field-weekday":"Wochentag", "dateFormat-medium":"dd.MM.yyyy", "field-second":"Sekunde", "field-week":"Woche", "pm":"nachm.", "timeFormat-full":"H:mm' Uhr 'z", "months-standAlone-narrow":["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "am":"vorm.", "days-standAlone-narrow":["S", "M", "D", "M", "D", "F", "S"], "field-year":"Jahr", "eras":["v. Chr.", "n. Chr."], "field-hour":"Stunde", "dateFormat-long":"d. MMMM yyyy", "field-day":"Tag", "field-dayperiod":"Tagesh\xe4lfte", "field-month":"Monat", "dateFormat-short":"dd.MM.yy", "months-format-wide":["Januar", "Februar", "M\xe4rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"], "field-era":"Epoche", "months-format-abbr":["Jan", "Feb", "Mrz", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"], "days-format-wide":["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"], "dateFormat-full":"EEEE, d. MMMM yyyy", "field-zone":"Zone", "days-format-abbr":["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"], "field-minute":"Minute", "timeFormat-medium":"HH:mm:ss", "timeFormat-short":"HH:mm", "timeFormat-long":"HH:mm:ss z"})); }}) __CPAN_DIR__ src/i18n/calendar/nls/zh __CPAN_FILE__ src/i18n/calendar/nls/zh/gregorianExtras.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"dateFormat-yearOnly":"yyyy'\u5e74'"}) __CPAN_FILE__ src/i18n/calendar/nls/zh/gregorian.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"days-standAlone-narrow":["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d"], "eras":["\u516c\u5143\u524d", "\u516c\u5143"], "am":"\u4e0a\u5348", "months-format-abbr":["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], "days-format-abbr":["\u5468\u65e5", "\u5468\u4e00", "\u5468\u4e8c", "\u5468\u4e09", "\u5468\u56db", "\u5468\u4e94", "\u5468\u516d"], "pm":"\u4e0b\u5348", "months-format-wide":["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], "months-standAlone-narrow":["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], "days-format-wide":["\u661f\u671f\u65e5", "\u661f\u671f\u4e00", "\u661f\u671f\u4e8c", "\u661f\u671f\u4e09", "\u661f\u671f\u56db", "\u661f\u671f\u4e94", "\u661f\u671f\u516d"], "field-weekday":"Day of the Week", "dateFormat-medium":"yyyy MMM d", "field-second":"Second", "field-week":"Week", "timeFormat-full":"HH:mm:ss z", "field-year":"Year", "field-minute":"Minute", "timeFormat-medium":"HH:mm:ss", "field-hour":"Hour", "dateFormat-long":"yyyy MMMM d", "field-day":"Day", "field-dayperiod":"Dayperiod", "field-month":"Month", "dateFormat-short":"yy/MM/dd", "field-era":"Era", "timeFormat-short":"HH:mm", "timeFormat-long":"HH:mm:ss z", "dateFormat-full":"EEEE, yyyy MMMM dd", "field-zone":"Zone"}) __CPAN_FILE__ src/i18n/calendar/nls/zh/gregorian.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.zh.gregorian"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.calendar.nls.zh.gregorian"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorian", "zh", ({"days-standAlone-narrow":["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d"], "eras":["\u516c\u5143\u524d", "\u516c\u5143"], "am":"\u4e0a\u5348", "months-format-abbr":["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], "days-format-abbr":["\u5468\u65e5", "\u5468\u4e00", "\u5468\u4e8c", "\u5468\u4e09", "\u5468\u56db", "\u5468\u4e94", "\u5468\u516d"], "pm":"\u4e0b\u5348", "months-format-wide":["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], "months-standAlone-narrow":["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], "days-format-wide":["\u661f\u671f\u65e5", "\u661f\u671f\u4e00", "\u661f\u671f\u4e8c", "\u661f\u671f\u4e09", "\u661f\u671f\u56db", "\u661f\u671f\u4e94", "\u661f\u671f\u516d"], "field-weekday":"Day of the Week", "dateFormat-medium":"yyyy MMM d", "field-second":"Second", "field-week":"Week", "timeFormat-full":"HH:mm:ss z", "field-year":"Year", "field-minute":"Minute", "timeFormat-medium":"HH:mm:ss", "field-hour":"Hour", "dateFormat-long":"yyyy MMMM d", "field-day":"Day", "field-dayperiod":"Dayperiod", "field-month":"Month", "dateFormat-short":"yy/MM/dd", "field-era":"Era", "timeFormat-short":"HH:mm", "timeFormat-long":"HH:mm:ss z", "dateFormat-full":"EEEE, yyyy MMMM dd", "field-zone":"Zone"})); }}) __CPAN_FILE__ src/i18n/calendar/nls/zh/gregorianExtras.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.zh.gregorianExtras"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.calendar.nls.zh.gregorianExtras"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorianExtras", "zh", ({"dateFormat-yearOnly":"yyyy'\u5e74'"})); }}) __CPAN_DIR__ src/i18n/calendar/nls/ja __CPAN_FILE__ src/i18n/calendar/nls/ja/gregorianExtras.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"dateFormat-yearOnly":"yyyy\u5e74"}) __CPAN_FILE__ src/i18n/calendar/nls/ja/gregorian.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"days-standAlone-narrow":["\u65e5", "\u6708", "\u706b", "\u6c34", "\u6728", "\u91d1", "\u571f"], "timeFormat-full":"H'\u6642'mm'\u5206'ss'\u79d2'z", "eras":["\u7d00\u5143\u524d", "\u897f\u66a6"], "timeFormat-medium":"H:mm:ss", "dateFormat-medium":"yyyy/MM/dd", "am":"\u5348\u524d", "months-format-abbr":["1 \u6708", "2 \u6708", "3 \u6708", "4 \u6708", "5 \u6708", "6 \u6708", "7 \u6708", "8 \u6708", "9 \u6708", "10 \u6708", "11 \u6708", "12 \u6708"], "dateFormat-full":"yyyy'\u5e74'M'\u6708'd'\u65e5'EEEE", "days-format-abbr":["\u65e5", "\u6708", "\u706b", "\u6c34", "\u6728", "\u91d1", "\u571f"], "timeFormat-long":"H:mm:ss:z", "timeFormat-short":"H:mm", "pm":"\u5348\u5f8c", "months-format-wide":["1 \u6708", "2 \u6708", "3 \u6708", "4 \u6708", "5 \u6708", "6 \u6708", "7 \u6708", "8 \u6708", "9 \u6708", "10 \u6708", "11 \u6708", "12 \u6708"], "dateFormat-long":"yyyy'\u5e74'M'\u6708'd'\u65e5'", "days-format-wide":["\u65e5\u66dc\u65e5", "\u6708\u66dc\u65e5", "\u706b\u66dc\u65e5", "\u6c34\u66dc\u65e5", "\u6728\u66dc\u65e5", "\u91d1\u66dc\u65e5", "\u571f\u66dc\u65e5"], "field-weekday":"Day of the Week", "field-second":"Second", "field-week":"Week", "months-standAlone-narrow":["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], "field-year":"Year", "field-minute":"Minute", "field-hour":"Hour", "field-day":"Day", "field-dayperiod":"Dayperiod", "field-month":"Month", "dateFormat-short":"yy/MM/dd", "field-era":"Era", "field-zone":"Zone"}) __CPAN_FILE__ src/i18n/calendar/nls/ja/gregorian.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.ja.gregorian"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.calendar.nls.ja.gregorian"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorian", "ja", ({"days-standAlone-narrow":["\u65e5", "\u6708", "\u706b", "\u6c34", "\u6728", "\u91d1", "\u571f"], "timeFormat-full":"H'\u6642'mm'\u5206'ss'\u79d2'z", "eras":["\u7d00\u5143\u524d", "\u897f\u66a6"], "timeFormat-medium":"H:mm:ss", "dateFormat-medium":"yyyy/MM/dd", "am":"\u5348\u524d", "months-format-abbr":["1 \u6708", "2 \u6708", "3 \u6708", "4 \u6708", "5 \u6708", "6 \u6708", "7 \u6708", "8 \u6708", "9 \u6708", "10 \u6708", "11 \u6708", "12 \u6708"], "dateFormat-full":"yyyy'\u5e74'M'\u6708'd'\u65e5'EEEE", "days-format-abbr":["\u65e5", "\u6708", "\u706b", "\u6c34", "\u6728", "\u91d1", "\u571f"], "timeFormat-long":"H:mm:ss:z", "timeFormat-short":"H:mm", "pm":"\u5348\u5f8c", "months-format-wide":["1 \u6708", "2 \u6708", "3 \u6708", "4 \u6708", "5 \u6708", "6 \u6708", "7 \u6708", "8 \u6708", "9 \u6708", "10 \u6708", "11 \u6708", "12 \u6708"], "dateFormat-long":"yyyy'\u5e74'M'\u6708'd'\u65e5'", "days-format-wide":["\u65e5\u66dc\u65e5", "\u6708\u66dc\u65e5", "\u706b\u66dc\u65e5", "\u6c34\u66dc\u65e5", "\u6728\u66dc\u65e5", "\u91d1\u66dc\u65e5", "\u571f\u66dc\u65e5"], "field-weekday":"Day of the Week", "field-second":"Second", "field-week":"Week", "months-standAlone-narrow":["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], "field-year":"Year", "field-minute":"Minute", "field-hour":"Hour", "field-day":"Day", "field-dayperiod":"Dayperiod", "field-month":"Month", "dateFormat-short":"yy/MM/dd", "field-era":"Era", "field-zone":"Zone"})); }}) __CPAN_FILE__ src/i18n/calendar/nls/ja/gregorianExtras.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.ja.gregorianExtras"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.calendar.nls.ja.gregorianExtras"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorianExtras", "ja", ({"dateFormat-yearOnly":"yyyy\u5e74"})); }}) __CPAN_DIR__ src/i18n/calendar/nls/fi __CPAN_FILE__ src/i18n/calendar/nls/fi/gregorian.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"field-weekday":"viikonp\xe4iv\xe4", "dateFormat-medium":"d.M.yyyy", "field-second":"sekunti", "field-week":"viikko", "pm":"ip.", "timeFormat-full":"H.mm.ss v", "months-standAlone-narrow":["T", "H", "M", "H", "T", "K", "H", "E", "S", "L", "M", "J"], "am":"ap.", "days-standAlone-narrow":["S", "M", "T", "K", "T", "P", "L"], "field-year":"vuosi", "eras":["eKr.", "jKr."], "field-minute":"minuutti", "timeFormat-medium":"H.mm.ss", "field-hour":"tunti", "dateFormat-long":"d. MMMM'ta 'yyyy", "field-day":"p\xe4iv\xe4", "field-dayperiod":"ap/ip-valinta", "field-month":"kuukausi", "dateFormat-short":"d.M.yyyy", "months-format-wide":["tammikuu", "helmikuu", "maaliskuu", "huhtikuu", "toukokuu", "kes\xe4kuu", "hein\xe4kuu", "elokuu", "syyskuu", "lokakuu", "marraskuu", "joulukuu"], "field-era":"aikakausi", "timeFormat-short":"H.mm", "months-format-abbr":["tammi", "helmi", "maalis", "huhti", "touko", "kes\xe4", "hein\xe4", "elo", "syys", "loka", "marras", "joulu"], "timeFormat-long":"'klo 'H.mm.ss", "days-format-wide":["sunnuntai", "maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauantai"], "dateFormat-full":"EEEE'na 'd. MMMM'ta 'yyyy", "field-zone":"aikavy\xf6hyke", "days-format-abbr":["su", "ma", "ti", "ke", "to", "pe", "la"]}) __CPAN_FILE__ src/i18n/calendar/nls/fi/gregorian.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.fi.gregorian"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.calendar.nls.fi.gregorian"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorian", "fi", ({"field-weekday":"viikonp\xe4iv\xe4", "dateFormat-medium":"d.M.yyyy", "field-second":"sekunti", "field-week":"viikko", "pm":"ip.", "timeFormat-full":"H.mm.ss v", "months-standAlone-narrow":["T", "H", "M", "H", "T", "K", "H", "E", "S", "L", "M", "J"], "am":"ap.", "days-standAlone-narrow":["S", "M", "T", "K", "T", "P", "L"], "field-year":"vuosi", "eras":["eKr.", "jKr."], "field-minute":"minuutti", "timeFormat-medium":"H.mm.ss", "field-hour":"tunti", "dateFormat-long":"d. MMMM'ta 'yyyy", "field-day":"p\xe4iv\xe4", "field-dayperiod":"ap/ip-valinta", "field-month":"kuukausi", "dateFormat-short":"d.M.yyyy", "months-format-wide":["tammikuu", "helmikuu", "maaliskuu", "huhtikuu", "toukokuu", "kes\xe4kuu", "hein\xe4kuu", "elokuu", "syyskuu", "lokakuu", "marraskuu", "joulukuu"], "field-era":"aikakausi", "timeFormat-short":"H.mm", "months-format-abbr":["tammi", "helmi", "maalis", "huhti", "touko", "kes\xe4", "hein\xe4", "elo", "syys", "loka", "marras", "joulu"], "timeFormat-long":"'klo 'H.mm.ss", "days-format-wide":["sunnuntai", "maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauantai"], "dateFormat-full":"EEEE'na 'd. MMMM'ta 'yyyy", "field-zone":"aikavy\xf6hyke", "days-format-abbr":["su", "ma", "ti", "ke", "to", "pe", "la"]})); }}) __CPAN_DIR__ src/i18n/calendar/nls/zh-cn __CPAN_FILE__ src/i18n/calendar/nls/zh-cn/gregorian.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"dateFormat-medium":"yyyy-M-d", "field-second":"\u79d2\u949f", "field-week":"\u5468", "timeFormat-full":"ahh'\u65f6'mm'\u5206'ss'\u79d2' z", "field-year":"\u5e74", "field-minute":"\u5206\u949f", "timeFormat-medium":"ahh:mm:ss", "field-hour":"\u5c0f\u65f6", "dateFormat-long":"yyyy'\u5e74'M'\u6708'd'\u65e5'", "field-day":"\u65e5", "field-dayperiod":"\u4e0a\u5348/\u4e0b\u5348", "field-month":"\u6708", "dateFormat-short":"yy-M-d", "field-era":"\u65f6\u671f", "timeFormat-short":"ah:mm", "timeFormat-long":"ahh'\u65f6'mm'\u5206'ss'\u79d2'", "dateFormat-full":"yyyy'\u5e74'M'\u6708'd'\u65e5'EEEE", "field-weekday":"\u5468\u5929", "field-zone":"\u533a\u57df", "days-standAlone-narrow":["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d"], "eras":["\u516c\u5143\u524d", "\u516c\u5143"], "am":"\u4e0a\u5348", "months-format-abbr":["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], "days-format-abbr":["\u5468\u65e5", "\u5468\u4e00", "\u5468\u4e8c", "\u5468\u4e09", "\u5468\u56db", "\u5468\u4e94", "\u5468\u516d"], "pm":"\u4e0b\u5348", "months-format-wide":["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], "months-standAlone-narrow":["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], "days-format-wide":["\u661f\u671f\u65e5", "\u661f\u671f\u4e00", "\u661f\u671f\u4e8c", "\u661f\u671f\u4e09", "\u661f\u671f\u56db", "\u661f\u671f\u4e94", "\u661f\u671f\u516d"]}) __CPAN_FILE__ src/i18n/calendar/nls/zh-cn/gregorian.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.zh-cn.gregorian"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.calendar.nls.zh-cn.gregorian"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorian", "zh-cn", ({"dateFormat-medium":"yyyy-M-d", "field-second":"\u79d2\u949f", "field-week":"\u5468", "timeFormat-full":"ahh'\u65f6'mm'\u5206'ss'\u79d2' z", "field-year":"\u5e74", "field-minute":"\u5206\u949f", "timeFormat-medium":"ahh:mm:ss", "field-hour":"\u5c0f\u65f6", "dateFormat-long":"yyyy'\u5e74'M'\u6708'd'\u65e5'", "field-day":"\u65e5", "field-dayperiod":"\u4e0a\u5348/\u4e0b\u5348", "field-month":"\u6708", "dateFormat-short":"yy-M-d", "field-era":"\u65f6\u671f", "timeFormat-short":"ah:mm", "timeFormat-long":"ahh'\u65f6'mm'\u5206'ss'\u79d2'", "dateFormat-full":"yyyy'\u5e74'M'\u6708'd'\u65e5'EEEE", "field-weekday":"\u5468\u5929", "field-zone":"\u533a\u57df", "days-standAlone-narrow":["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d"], "eras":["\u516c\u5143\u524d", "\u516c\u5143"], "am":"\u4e0a\u5348", "months-format-abbr":["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], "days-format-abbr":["\u5468\u65e5", "\u5468\u4e00", "\u5468\u4e8c", "\u5468\u4e09", "\u5468\u56db", "\u5468\u4e94", "\u5468\u516d"], "pm":"\u4e0b\u5348", "months-format-wide":["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], "months-standAlone-narrow":["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], "days-format-wide":["\u661f\u671f\u65e5", "\u661f\u671f\u4e00", "\u661f\u671f\u4e8c", "\u661f\u671f\u4e09", "\u661f\u671f\u56db", "\u661f\u671f\u4e94", "\u661f\u671f\u516d"]})); }}) __CPAN_DIR__ src/i18n/calendar/nls/ko __CPAN_FILE__ src/i18n/calendar/nls/ko/gregorian.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"months-standAlone-narrow":["1\uc6d4", "2\uc6d4", "3\uc6d4", "4\uc6d4", "5\uc6d4", "6\uc6d4", "7\uc6d4", "8\uc6d4", "9\uc6d4", "10\uc6d4", "11\uc6d4", "12\uc6d4"], "dateFormat-long":"yyyy'\ub144' M'\uc6d4' d'\uc77c'", "timeFormat-full":"a hh'\uc2dc' mm'\ubd84' ss'\ucd08' z", "eras":["\uae30\uc6d0\uc804", "\uc11c\uae30"], "timeFormat-medium":"a hh'\uc2dc' mm'\ubd84'", "dateFormat-medium":"yyyy. MM. dd", "am":"\uc624\uc804", "months-format-abbr":["1\uc6d4", "2\uc6d4", "3\uc6d4", "4\uc6d4", "5\uc6d4", "6\uc6d4", "7\uc6d4", "8\uc6d4", "9\uc6d4", "10\uc6d4", "11\uc6d4", "12\uc6d4"], "dateFormat-full":"yyyy'\ub144' M'\uc6d4' d'\uc77c' EEEE", "days-format-abbr":["\uc77c", "\uc6d4", "\ud654", "\uc218", "\ubaa9", "\uae08", "\ud1a0"], "timeFormat-long":"a hh'\uc2dc' mm'\ubd84' ss'\ucd08'", "timeFormat-short":"a hh'\uc2dc' mm'\ubd84'", "dateFormat-short":"yy. MM. dd", "pm":"\uc624\ud6c4", "months-format-wide":["1\uc6d4", "2\uc6d4", "3\uc6d4", "4\uc6d4", "5\uc6d4", "6\uc6d4", "7\uc6d4", "8\uc6d4", "9\uc6d4", "10\uc6d4", "11\uc6d4", "12\uc6d4"], "days-standAlone-narrow":["\uc77c", "\uc6d4", "\ud654", "\uc218", "\ubaa9", "\uae08", "\ud1a0"], "days-format-wide":["\uc77c\uc694\uc77c", "\uc6d4\uc694\uc77c", "\ud654\uc694\uc77c", "\uc218\uc694\uc77c", "\ubaa9\uc694\uc77c", "\uae08\uc694\uc77c", "\ud1a0\uc694\uc77c"], "field-weekday":"Day of the Week", "field-second":"Second", "field-week":"Week", "field-year":"Year", "field-minute":"Minute", "field-hour":"Hour", "field-day":"Day", "field-dayperiod":"Dayperiod", "field-month":"Month", "field-era":"Era", "field-zone":"Zone"}) __CPAN_FILE__ src/i18n/calendar/nls/ko/gregorian.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.ko.gregorian"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.calendar.nls.ko.gregorian"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorian", "ko", ({"months-standAlone-narrow":["1\uc6d4", "2\uc6d4", "3\uc6d4", "4\uc6d4", "5\uc6d4", "6\uc6d4", "7\uc6d4", "8\uc6d4", "9\uc6d4", "10\uc6d4", "11\uc6d4", "12\uc6d4"], "dateFormat-long":"yyyy'\ub144' M'\uc6d4' d'\uc77c'", "timeFormat-full":"a hh'\uc2dc' mm'\ubd84' ss'\ucd08' z", "eras":["\uae30\uc6d0\uc804", "\uc11c\uae30"], "timeFormat-medium":"a hh'\uc2dc' mm'\ubd84'", "dateFormat-medium":"yyyy. MM. dd", "am":"\uc624\uc804", "months-format-abbr":["1\uc6d4", "2\uc6d4", "3\uc6d4", "4\uc6d4", "5\uc6d4", "6\uc6d4", "7\uc6d4", "8\uc6d4", "9\uc6d4", "10\uc6d4", "11\uc6d4", "12\uc6d4"], "dateFormat-full":"yyyy'\ub144' M'\uc6d4' d'\uc77c' EEEE", "days-format-abbr":["\uc77c", "\uc6d4", "\ud654", "\uc218", "\ubaa9", "\uae08", "\ud1a0"], "timeFormat-long":"a hh'\uc2dc' mm'\ubd84' ss'\ucd08'", "timeFormat-short":"a hh'\uc2dc' mm'\ubd84'", "dateFormat-short":"yy. MM. dd", "pm":"\uc624\ud6c4", "months-format-wide":["1\uc6d4", "2\uc6d4", "3\uc6d4", "4\uc6d4", "5\uc6d4", "6\uc6d4", "7\uc6d4", "8\uc6d4", "9\uc6d4", "10\uc6d4", "11\uc6d4", "12\uc6d4"], "days-standAlone-narrow":["\uc77c", "\uc6d4", "\ud654", "\uc218", "\ubaa9", "\uae08", "\ud1a0"], "days-format-wide":["\uc77c\uc694\uc77c", "\uc6d4\uc694\uc77c", "\ud654\uc694\uc77c", "\uc218\uc694\uc77c", "\ubaa9\uc694\uc77c", "\uae08\uc694\uc77c", "\ud1a0\uc694\uc77c"], "field-weekday":"Day of the Week", "field-second":"Second", "field-week":"Week", "field-year":"Year", "field-minute":"Minute", "field-hour":"Hour", "field-day":"Day", "field-dayperiod":"Dayperiod", "field-month":"Month", "field-era":"Era", "field-zone":"Zone"})); }}) __CPAN_DIR__ src/i18n/calendar/nls/sv __CPAN_FILE__ src/i18n/calendar/nls/sv/gregorian.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"field-weekday":"veckodag", "dateFormat-medium":"d MMM yyyy", "field-second":"sekund", "field-week":"vecka", "pm":"em", "timeFormat-full":"'kl. 'HH.mm.ss z", "months-standAlone-narrow":["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "am":"fm", "days-standAlone-narrow":["S", "M", "T", "O", "T", "F", "L"], "field-year":"\xe5r", "eras":["f.Kr.", "e.Kr."], "field-minute":"minut", "timeFormat-medium":"HH.mm.ss", "field-hour":"timme", "dateFormat-long":"EEEE d MMM yyyy", "field-day":"dag", "field-dayperiod":"dagsperiod", "field-month":"m\xe5nad", "dateFormat-short":"yyyy-MM-dd", "months-format-wide":["januari", "februari", "mars", "april", "maj", "juni", "juli", "augusti", "september", "oktober", "november", "december"], "field-era":"era", "timeFormat-short":"HH.mm", "months-format-abbr":["jan", "feb", "mar", "apr", "maj", "jun", "jul", "aug", "sep", "okt", "nov", "dec"], "timeFormat-long":"HH.mm.ss z", "days-format-wide":["s\xf6ndag", "m\xe5ndag", "tisdag", "onsdag", "torsdag", "fredag", "l\xf6rdag"], "dateFormat-full":"EEEE'en den' d MMMM yyyy", "field-zone":"tidszon", "days-format-abbr":["s\xf6", "m\xe5", "ti", "on", "to", "fr", "l\xf6"]}) __CPAN_FILE__ src/i18n/calendar/nls/sv/gregorian.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.sv.gregorian"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.calendar.nls.sv.gregorian"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorian", "sv", ({"field-weekday":"veckodag", "dateFormat-medium":"d MMM yyyy", "field-second":"sekund", "field-week":"vecka", "pm":"em", "timeFormat-full":"'kl. 'HH.mm.ss z", "months-standAlone-narrow":["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "am":"fm", "days-standAlone-narrow":["S", "M", "T", "O", "T", "F", "L"], "field-year":"\xe5r", "eras":["f.Kr.", "e.Kr."], "field-minute":"minut", "timeFormat-medium":"HH.mm.ss", "field-hour":"timme", "dateFormat-long":"EEEE d MMM yyyy", "field-day":"dag", "field-dayperiod":"dagsperiod", "field-month":"m\xe5nad", "dateFormat-short":"yyyy-MM-dd", "months-format-wide":["januari", "februari", "mars", "april", "maj", "juni", "juli", "augusti", "september", "oktober", "november", "december"], "field-era":"era", "timeFormat-short":"HH.mm", "months-format-abbr":["jan", "feb", "mar", "apr", "maj", "jun", "jul", "aug", "sep", "okt", "nov", "dec"], "timeFormat-long":"HH.mm.ss z", "days-format-wide":["s\xf6ndag", "m\xe5ndag", "tisdag", "onsdag", "torsdag", "fredag", "l\xf6rdag"], "dateFormat-full":"EEEE'en den' d MMMM yyyy", "field-zone":"tidszon", "days-format-abbr":["s\xf6", "m\xe5", "ti", "on", "to", "fr", "l\xf6"]})); }}) __CPAN_DIR__ src/i18n/calendar/nls/en __CPAN_FILE__ src/i18n/calendar/nls/en/gregorian.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"months-standAlone-narrow":["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "dateFormat-long":"MMMM d, yyyy", "timeFormat-full":"h:mm:ss a v", "eras":["BC", "AD"], "timeFormat-medium":"h:mm:ss a", "dateFormat-medium":"MMM d, yyyy", "months-format-abbr":["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], "dateFormat-full":"EEEE, MMMM d, yyyy", "days-format-abbr":["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], "timeFormat-long":"h:mm:ss a z", "timeFormat-short":"h:mm a", "dateFormat-short":"M/d/yy", "months-format-wide":["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], "days-standAlone-narrow":["S", "M", "T", "W", "T", "F", "S"], "days-format-wide":["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], "field-weekday":"Day of the Week", "field-second":"Second", "field-week":"Week", "pm":"PM", "am":"AM", "field-year":"Year", "field-minute":"Minute", "field-hour":"Hour", "field-day":"Day", "field-dayperiod":"Dayperiod", "field-month":"Month", "field-era":"Era", "field-zone":"Zone"}) __CPAN_FILE__ src/i18n/calendar/nls/en/gregorian.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.en.gregorian"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.calendar.nls.en.gregorian"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorian", "en", ({"months-standAlone-narrow":["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "dateFormat-long":"MMMM d, yyyy", "timeFormat-full":"h:mm:ss a v", "eras":["BC", "AD"], "timeFormat-medium":"h:mm:ss a", "dateFormat-medium":"MMM d, yyyy", "months-format-abbr":["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], "dateFormat-full":"EEEE, MMMM d, yyyy", "days-format-abbr":["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], "timeFormat-long":"h:mm:ss a z", "timeFormat-short":"h:mm a", "dateFormat-short":"M/d/yy", "months-format-wide":["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], "days-standAlone-narrow":["S", "M", "T", "W", "T", "F", "S"], "days-format-wide":["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], "field-weekday":"Day of the Week", "field-second":"Second", "field-week":"Week", "pm":"PM", "am":"AM", "field-year":"Year", "field-minute":"Minute", "field-hour":"Hour", "field-day":"Day", "field-dayperiod":"Dayperiod", "field-month":"Month", "field-era":"Era", "field-zone":"Zone"})); }}) __CPAN_DIR__ src/i18n/calendar/nls/zh-hk __CPAN_FILE__ src/i18n/calendar/nls/zh-hk/gregorian.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"timeFormat-full":"ahh'\u6642'mm'\u5206'ss'\u79d2' z", "eras":["\u897f\u5143\u524d", "\u897f\u5143"], "timeFormat-medium":"a h:mm:ss", "dateFormat-medium":"yyyy/M/d", "dateFormat-full":"yyyy'\u5e74'M'\u6708'd'\u65e5'EEEE", "days-format-abbr":["\u9031\u65e5", "\u9031\u4e00", "\u9031\u4e8c", "\u9031\u4e09", "\u9031\u56db", "\u9031\u4e94", "\u9031\u516d"], "timeFormat-long":"ahh'\u6642'mm'\u5206'ss'\u79d2'", "timeFormat-short":"a h:mm", "dateFormat-short":"yyyy/M/d", "dateFormat-long":"yyyy'\u5e74'M'\u6708'd'\u65e5'", "days-standAlone-narrow":["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d"], "am":"\u4e0a\u5348", "months-format-abbr":["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], "pm":"\u4e0b\u5348", "months-format-wide":["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], "months-standAlone-narrow":["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], "days-format-wide":["\u661f\u671f\u65e5", "\u661f\u671f\u4e00", "\u661f\u671f\u4e8c", "\u661f\u671f\u4e09", "\u661f\u671f\u56db", "\u661f\u671f\u4e94", "\u661f\u671f\u516d"], "field-weekday":"Day of the Week", "field-second":"Second", "field-week":"Week", "field-year":"Year", "field-minute":"Minute", "field-hour":"Hour", "field-day":"Day", "field-dayperiod":"Dayperiod", "field-month":"Month", "field-era":"Era", "field-zone":"Zone"}) __CPAN_FILE__ src/i18n/calendar/nls/zh-hk/gregorian.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.zh-hk.gregorian"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.calendar.nls.zh-hk.gregorian"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorian", "zh-hk", ({"timeFormat-full":"ahh'\u6642'mm'\u5206'ss'\u79d2' z", "eras":["\u897f\u5143\u524d", "\u897f\u5143"], "timeFormat-medium":"a h:mm:ss", "dateFormat-medium":"yyyy/M/d", "dateFormat-full":"yyyy'\u5e74'M'\u6708'd'\u65e5'EEEE", "days-format-abbr":["\u9031\u65e5", "\u9031\u4e00", "\u9031\u4e8c", "\u9031\u4e09", "\u9031\u56db", "\u9031\u4e94", "\u9031\u516d"], "timeFormat-long":"ahh'\u6642'mm'\u5206'ss'\u79d2'", "timeFormat-short":"a h:mm", "dateFormat-short":"yyyy/M/d", "dateFormat-long":"yyyy'\u5e74'M'\u6708'd'\u65e5'", "days-standAlone-narrow":["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d"], "am":"\u4e0a\u5348", "months-format-abbr":["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], "pm":"\u4e0b\u5348", "months-format-wide":["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], "months-standAlone-narrow":["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], "days-format-wide":["\u661f\u671f\u65e5", "\u661f\u671f\u4e00", "\u661f\u671f\u4e8c", "\u661f\u671f\u4e09", "\u661f\u671f\u56db", "\u661f\u671f\u4e94", "\u661f\u671f\u516d"], "field-weekday":"Day of the Week", "field-second":"Second", "field-week":"Week", "field-year":"Year", "field-minute":"Minute", "field-hour":"Hour", "field-day":"Day", "field-dayperiod":"Dayperiod", "field-month":"Month", "field-era":"Era", "field-zone":"Zone"})); }}) __CPAN_DIR__ src/i18n/calendar/nls/zh-tw __CPAN_FILE__ src/i18n/calendar/nls/zh-tw/gregorian.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"dateFormat-medium":"yyyy'\u5e74'M'\u6708'd'\u65e5'", "field-second":"\u79d2", "field-week":"\u9031", "timeFormat-full":"ahh'\u6642'mm'\u5206'ss'\u79d2' z", "eras":["\u897f\u5143\u524d", "\u897f\u5143"], "field-year":"\u5e74", "field-minute":"\u5206\u9418", "timeFormat-medium":"ahh:mm:ss", "field-hour":"\u5c0f\u6642", "dateFormat-long":"yyyy'\u5e74'M'\u6708'd'\u65e5'", "field-day":"\u6574\u65e5", "field-dayperiod":"\u65e5\u9593", "field-month":"\u6708", "dateFormat-short":"yy'\u5e74'M'\u6708'd'\u65e5'", "field-era":"\u5e74\u4ee3", "timeFormat-short":"ah:mm", "months-format-abbr":["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], "timeFormat-long":"ahh'\u6642'mm'\u5206'ss'\u79d2'", "field-weekday":"\u9031\u5929", "dateFormat-full":"yyyy'\u5e74'M'\u6708'd'\u65e5'EEEE", "field-zone":"\u5340\u57df", "days-standAlone-narrow":["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d"], "am":"\u4e0a\u5348", "days-format-abbr":["\u5468\u65e5", "\u5468\u4e00", "\u5468\u4e8c", "\u5468\u4e09", "\u5468\u56db", "\u5468\u4e94", "\u5468\u516d"], "pm":"\u4e0b\u5348", "months-format-wide":["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], "months-standAlone-narrow":["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], "days-format-wide":["\u661f\u671f\u65e5", "\u661f\u671f\u4e00", "\u661f\u671f\u4e8c", "\u661f\u671f\u4e09", "\u661f\u671f\u56db", "\u661f\u671f\u4e94", "\u661f\u671f\u516d"]}) __CPAN_FILE__ src/i18n/calendar/nls/zh-tw/gregorian.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.zh-tw.gregorian"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.calendar.nls.zh-tw.gregorian"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorian", "zh-tw", ({"dateFormat-medium":"yyyy'\u5e74'M'\u6708'd'\u65e5'", "field-second":"\u79d2", "field-week":"\u9031", "timeFormat-full":"ahh'\u6642'mm'\u5206'ss'\u79d2' z", "eras":["\u897f\u5143\u524d", "\u897f\u5143"], "field-year":"\u5e74", "field-minute":"\u5206\u9418", "timeFormat-medium":"ahh:mm:ss", "field-hour":"\u5c0f\u6642", "dateFormat-long":"yyyy'\u5e74'M'\u6708'd'\u65e5'", "field-day":"\u6574\u65e5", "field-dayperiod":"\u65e5\u9593", "field-month":"\u6708", "dateFormat-short":"yy'\u5e74'M'\u6708'd'\u65e5'", "field-era":"\u5e74\u4ee3", "timeFormat-short":"ah:mm", "months-format-abbr":["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], "timeFormat-long":"ahh'\u6642'mm'\u5206'ss'\u79d2'", "field-weekday":"\u9031\u5929", "dateFormat-full":"yyyy'\u5e74'M'\u6708'd'\u65e5'EEEE", "field-zone":"\u5340\u57df", "days-standAlone-narrow":["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d"], "am":"\u4e0a\u5348", "days-format-abbr":["\u5468\u65e5", "\u5468\u4e00", "\u5468\u4e8c", "\u5468\u4e09", "\u5468\u56db", "\u5468\u4e94", "\u5468\u516d"], "pm":"\u4e0b\u5348", "months-format-wide":["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], "months-standAlone-narrow":["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], "days-format-wide":["\u661f\u671f\u65e5", "\u661f\u671f\u4e00", "\u661f\u671f\u4e8c", "\u661f\u671f\u4e09", "\u661f\u671f\u56db", "\u661f\u671f\u4e94", "\u661f\u671f\u516d"]})); }}) __CPAN_DIR__ src/i18n/calendar/nls/pt __CPAN_FILE__ src/i18n/calendar/nls/pt/gregorian.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"months-standAlone-narrow":["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "dateFormat-long":"d' de 'MMMM' de 'yyyy", "timeFormat-full":"HH'H'mm'm'ss's' z", "eras":["a.C.", "d.C."], "dateFormat-medium":"d/MMM/yyyy", "months-format-abbr":["jan", "fev", "mar", "abr", "mai", "jun", "jul", "ago", "set", "out", "nov", "dez"], "dateFormat-full":"EEEE, d' de 'MMMM' de 'yyyy", "days-format-abbr":["dom", "seg", "ter", "qua", "qui", "sex", "s\xe1b"], "dateFormat-short":"dd-MM-yyyy", "months-format-wide":["janeiro", "fevereiro", "mar\xe7o", "abril", "maio", "junho", "julho", "agosto", "setembro", "outubro", "novembro", "dezembro"], "days-standAlone-narrow":["D", "S", "T", "Q", "Q", "S", "S"], "days-format-wide":["domingo", "segunda-feira", "ter\xe7a-feira", "quarta-feira", "quinta-feira", "sexta-feira", "s\xe1bado"], "field-weekday":"Day of the Week", "field-second":"Second", "field-week":"Week", "pm":"PM", "am":"AM", "field-year":"Year", "field-minute":"Minute", "timeFormat-medium":"HH:mm:ss", "field-hour":"Hour", "field-day":"Day", "field-dayperiod":"Dayperiod", "field-month":"Month", "field-era":"Era", "timeFormat-short":"HH:mm", "timeFormat-long":"HH:mm:ss z", "field-zone":"Zone"}) __CPAN_FILE__ src/i18n/calendar/nls/pt/gregorian.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.pt.gregorian"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.calendar.nls.pt.gregorian"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorian", "pt", ({"months-standAlone-narrow":["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "dateFormat-long":"d' de 'MMMM' de 'yyyy", "timeFormat-full":"HH'H'mm'm'ss's' z", "eras":["a.C.", "d.C."], "dateFormat-medium":"d/MMM/yyyy", "months-format-abbr":["jan", "fev", "mar", "abr", "mai", "jun", "jul", "ago", "set", "out", "nov", "dez"], "dateFormat-full":"EEEE, d' de 'MMMM' de 'yyyy", "days-format-abbr":["dom", "seg", "ter", "qua", "qui", "sex", "s\xe1b"], "dateFormat-short":"dd-MM-yyyy", "months-format-wide":["janeiro", "fevereiro", "mar\xe7o", "abril", "maio", "junho", "julho", "agosto", "setembro", "outubro", "novembro", "dezembro"], "days-standAlone-narrow":["D", "S", "T", "Q", "Q", "S", "S"], "days-format-wide":["domingo", "segunda-feira", "ter\xe7a-feira", "quarta-feira", "quinta-feira", "sexta-feira", "s\xe1bado"], "field-weekday":"Day of the Week", "field-second":"Second", "field-week":"Week", "pm":"PM", "am":"AM", "field-year":"Year", "field-minute":"Minute", "timeFormat-medium":"HH:mm:ss", "field-hour":"Hour", "field-day":"Day", "field-dayperiod":"Dayperiod", "field-month":"Month", "field-era":"Era", "timeFormat-short":"HH:mm", "timeFormat-long":"HH:mm:ss z", "field-zone":"Zone"})); }}) __CPAN_DIR__ src/i18n/calendar/nls/it __CPAN_FILE__ src/i18n/calendar/nls/it/gregorian.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"field-weekday":"giorno della settimana", "dateFormat-medium":"dd/MMM/yy", "field-second":"secondo", "field-week":"settimana", "pm":"p.", "months-standAlone-narrow":["G", "F", "M", "A", "M", "G", "L", "A", "S", "O", "N", "D"], "am":"m.", "days-standAlone-narrow":["D", "L", "M", "M", "G", "V", "S"], "field-year":"anno", "eras":["aC", "dC"], "field-minute":"minuto", "field-hour":"ora", "dateFormat-long":"dd MMMM yyyy", "field-day":"giorno", "field-dayperiod":"periodo del giorno", "field-month":"mese", "dateFormat-short":"dd/MM/yy", "months-format-wide":["gennaio", "febbraio", "marzo", "aprile", "maggio", "giugno", "luglio", "agosto", "settembre", "ottobre", "novembre", "dicembre"], "field-era":"era", "months-format-abbr":["gen", "feb", "mar", "apr", "mag", "giu", "lug", "ago", "set", "ott", "nov", "dic"], "days-format-wide":["domenica", "luned\xec", "marted\xec", "mercoled\xec", "gioved\xec", "venerd\xec", "sabato"], "dateFormat-full":"EEEE d MMMM yyyy", "field-zone":"zona", "days-format-abbr":["dom", "lun", "mar", "mer", "gio", "ven", "sab"], "timeFormat-full":"HH:mm:ss z", "timeFormat-medium":"HH:mm:ss", "timeFormat-short":"HH:mm", "timeFormat-long":"HH:mm:ss z"}) __CPAN_FILE__ src/i18n/calendar/nls/it/gregorian.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.it.gregorian"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.calendar.nls.it.gregorian"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorian", "it", ({"field-weekday":"giorno della settimana", "dateFormat-medium":"dd/MMM/yy", "field-second":"secondo", "field-week":"settimana", "pm":"p.", "months-standAlone-narrow":["G", "F", "M", "A", "M", "G", "L", "A", "S", "O", "N", "D"], "am":"m.", "days-standAlone-narrow":["D", "L", "M", "M", "G", "V", "S"], "field-year":"anno", "eras":["aC", "dC"], "field-minute":"minuto", "field-hour":"ora", "dateFormat-long":"dd MMMM yyyy", "field-day":"giorno", "field-dayperiod":"periodo del giorno", "field-month":"mese", "dateFormat-short":"dd/MM/yy", "months-format-wide":["gennaio", "febbraio", "marzo", "aprile", "maggio", "giugno", "luglio", "agosto", "settembre", "ottobre", "novembre", "dicembre"], "field-era":"era", "months-format-abbr":["gen", "feb", "mar", "apr", "mag", "giu", "lug", "ago", "set", "ott", "nov", "dic"], "days-format-wide":["domenica", "luned\xec", "marted\xec", "mercoled\xec", "gioved\xec", "venerd\xec", "sabato"], "dateFormat-full":"EEEE d MMMM yyyy", "field-zone":"zona", "days-format-abbr":["dom", "lun", "mar", "mer", "gio", "ven", "sab"], "timeFormat-full":"HH:mm:ss z", "timeFormat-medium":"HH:mm:ss", "timeFormat-short":"HH:mm", "timeFormat-long":"HH:mm:ss z"})); }}) __CPAN_DIR__ src/i18n/calendar/nls/hu __CPAN_FILE__ src/i18n/calendar/nls/hu/gregorian.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"field-weekday":"h\xe9t napja", "dateFormat-medium":"yyyy MMM d", "field-second":"m\xe1sodperc", "field-week":"h\xe9t", "pm":"d.u.", "timeFormat-full":"h:mm:ss a v", "months-standAlone-narrow":["J", "F", "M", "\xc1", "M", "J", "J", "A", "S", "O", "N", "D"], "am":"d.e.", "days-standAlone-narrow":["V", "H", "K", "Sz", "Cs", "P", "Sz"], "field-year":"\xe9v", "eras":["k.e.", "k.u."], "field-minute":"perc", "timeFormat-medium":"h:mm:ss a", "field-hour":"\xf3ra", "dateFormat-long":"yyyy MMMM d", "field-day":"nap", "field-dayperiod":"napszak", "field-month":"h\xf3nap", "dateFormat-short":"yyyy-M-d", "months-format-wide":["janu\xe1r", "febru\xe1r", "m\xe1rcius", "\xe1prilis", "m\xe1jus", "j\xfanius", "j\xfalius", "augusztus", "szeptember", "okt\xf3ber", "november", "december"], "field-era":"\xe9ra", "timeFormat-short":"h:mm a", "months-format-abbr":["jan", "feb", "m\xe1r", "apr", "m\xe1j", "j\xfan", "j\xfal", "aug", "sze", "okt", "nov", "dec"], "timeFormat-long":"h:mm:ss a z", "days-format-wide":["vas\xe1rnap", "h\xe9tf\u0151", "kedd", "szerda", "cs\xfct\xf6rt\xf6k", "p\xe9ntek", "szombat"], "dateFormat-full":"yyyy MMMM d, EEEE", "field-zone":"z\xf3na", "days-format-abbr":["Va", "H\xe9", "Ke", "Sze", "Cs\xfc", "P\xe9", "Szo"]}) __CPAN_FILE__ src/i18n/calendar/nls/hu/gregorian.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.hu.gregorian"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.calendar.nls.hu.gregorian"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorian", "hu", ({"field-weekday":"h\xe9t napja", "dateFormat-medium":"yyyy MMM d", "field-second":"m\xe1sodperc", "field-week":"h\xe9t", "pm":"d.u.", "timeFormat-full":"h:mm:ss a v", "months-standAlone-narrow":["J", "F", "M", "\xc1", "M", "J", "J", "A", "S", "O", "N", "D"], "am":"d.e.", "days-standAlone-narrow":["V", "H", "K", "Sz", "Cs", "P", "Sz"], "field-year":"\xe9v", "eras":["k.e.", "k.u."], "field-minute":"perc", "timeFormat-medium":"h:mm:ss a", "field-hour":"\xf3ra", "dateFormat-long":"yyyy MMMM d", "field-day":"nap", "field-dayperiod":"napszak", "field-month":"h\xf3nap", "dateFormat-short":"yyyy-M-d", "months-format-wide":["janu\xe1r", "febru\xe1r", "m\xe1rcius", "\xe1prilis", "m\xe1jus", "j\xfanius", "j\xfalius", "augusztus", "szeptember", "okt\xf3ber", "november", "december"], "field-era":"\xe9ra", "timeFormat-short":"h:mm a", "months-format-abbr":["jan", "feb", "m\xe1r", "apr", "m\xe1j", "j\xfan", "j\xfal", "aug", "sze", "okt", "nov", "dec"], "timeFormat-long":"h:mm:ss a z", "days-format-wide":["vas\xe1rnap", "h\xe9tf\u0151", "kedd", "szerda", "cs\xfct\xf6rt\xf6k", "p\xe9ntek", "szombat"], "dateFormat-full":"yyyy MMMM d, EEEE", "field-zone":"z\xf3na", "days-format-abbr":["Va", "H\xe9", "Ke", "Sze", "Cs\xfc", "P\xe9", "Szo"]})); }}) __CPAN_DIR__ src/i18n/calendar/nls/pt-br __CPAN_FILE__ src/i18n/calendar/nls/pt-br/gregorian.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"field-hour":"Hora", "field-dayperiod":"Per\xedodo do dia", "field-minute":"Minuto", "timeFormat-full":"HH'h'mm'min'ss's' z", "field-weekday":"Dia da semana", "field-week":"Semana", "field-second":"Segundo", "dateFormat-medium":"dd/MM/yyyy", "field-day":"Dia", "timeFormat-long":"H'h'm'min's's' z", "field-month":"M\xeas", "field-year":"Ano", "dateFormat-short":"dd/MM/yy", "field-zone":"Fuso", "months-standAlone-narrow":["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "dateFormat-long":"d' de 'MMMM' de 'yyyy", "eras":["a.C.", "d.C."], "months-format-abbr":["jan", "fev", "mar", "abr", "mai", "jun", "jul", "ago", "set", "out", "nov", "dez"], "dateFormat-full":"EEEE, d' de 'MMMM' de 'yyyy", "days-format-abbr":["dom", "seg", "ter", "qua", "qui", "sex", "s\xe1b"], "months-format-wide":["janeiro", "fevereiro", "mar\xe7o", "abril", "maio", "junho", "julho", "agosto", "setembro", "outubro", "novembro", "dezembro"], "days-standAlone-narrow":["D", "S", "T", "Q", "Q", "S", "S"], "days-format-wide":["domingo", "segunda-feira", "ter\xe7a-feira", "quarta-feira", "quinta-feira", "sexta-feira", "s\xe1bado"], "pm":"PM", "am":"AM", "timeFormat-medium":"HH:mm:ss", "field-era":"Era", "timeFormat-short":"HH:mm"}) __CPAN_FILE__ src/i18n/calendar/nls/pt-br/gregorian.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.pt-br.gregorian"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.calendar.nls.pt-br.gregorian"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorian", "pt-br", ({"field-hour":"Hora", "field-dayperiod":"Per\xedodo do dia", "field-minute":"Minuto", "timeFormat-full":"HH'h'mm'min'ss's' z", "field-weekday":"Dia da semana", "field-week":"Semana", "field-second":"Segundo", "dateFormat-medium":"dd/MM/yyyy", "field-day":"Dia", "timeFormat-long":"H'h'm'min's's' z", "field-month":"M\xeas", "field-year":"Ano", "dateFormat-short":"dd/MM/yy", "field-zone":"Fuso", "months-standAlone-narrow":["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "dateFormat-long":"d' de 'MMMM' de 'yyyy", "eras":["a.C.", "d.C."], "months-format-abbr":["jan", "fev", "mar", "abr", "mai", "jun", "jul", "ago", "set", "out", "nov", "dez"], "dateFormat-full":"EEEE, d' de 'MMMM' de 'yyyy", "days-format-abbr":["dom", "seg", "ter", "qua", "qui", "sex", "s\xe1b"], "months-format-wide":["janeiro", "fevereiro", "mar\xe7o", "abril", "maio", "junho", "julho", "agosto", "setembro", "outubro", "novembro", "dezembro"], "days-standAlone-narrow":["D", "S", "T", "Q", "Q", "S", "S"], "days-format-wide":["domingo", "segunda-feira", "ter\xe7a-feira", "quarta-feira", "quinta-feira", "sexta-feira", "s\xe1bado"], "pm":"PM", "am":"AM", "timeFormat-medium":"HH:mm:ss", "field-era":"Era", "timeFormat-short":"HH:mm"})); }}) __CPAN_DIR__ src/i18n/calendar/nls/fr __CPAN_FILE__ src/i18n/calendar/nls/fr/gregorian.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"field-weekday":"jour de la semaine", "dateFormat-medium":"d MMM yy", "field-second":"seconde", "field-week":"semaine", "pm":"ap. m.", "timeFormat-full":"HH' h 'mm z", "months-standAlone-narrow":["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "am":"matin", "days-standAlone-narrow":["D", "L", "M", "M", "J", "V", "S"], "field-year":"ann\xe9e", "eras":["av. J.-C.", "apr. J.-C."], "field-minute":"minute", "field-hour":"heure", "dateFormat-long":"d MMMM yyyy", "field-day":"jour", "field-dayperiod":"p\xe9riode de la journ\xe9e", "field-month":"mois", "dateFormat-short":"dd/MM/yy", "months-format-wide":["janvier", "f\xe9vrier", "mars", "avril", "mai", "juin", "juillet", "ao\xfbt", "septembre", "octobre", "novembre", "d\xe9cembre"], "field-era":"\xe9poque", "months-format-abbr":["janv.", "f\xe9vr.", "mars", "avr.", "mai", "juin", "juil.", "ao\xfbt", "sept.", "oct.", "nov.", "d\xe9c."], "days-format-wide":["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"], "dateFormat-full":"EEEE d MMMM yyyy", "field-zone":"zone", "days-format-abbr":["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."], "timeFormat-medium":"HH:mm:ss", "timeFormat-short":"HH:mm", "timeFormat-long":"HH:mm:ss z"}) __CPAN_FILE__ src/i18n/calendar/nls/fr/gregorian.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.fr.gregorian"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.calendar.nls.fr.gregorian"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorian", "fr", ({"field-weekday":"jour de la semaine", "dateFormat-medium":"d MMM yy", "field-second":"seconde", "field-week":"semaine", "pm":"ap. m.", "timeFormat-full":"HH' h 'mm z", "months-standAlone-narrow":["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "am":"matin", "days-standAlone-narrow":["D", "L", "M", "M", "J", "V", "S"], "field-year":"ann\xe9e", "eras":["av. J.-C.", "apr. J.-C."], "field-minute":"minute", "field-hour":"heure", "dateFormat-long":"d MMMM yyyy", "field-day":"jour", "field-dayperiod":"p\xe9riode de la journ\xe9e", "field-month":"mois", "dateFormat-short":"dd/MM/yy", "months-format-wide":["janvier", "f\xe9vrier", "mars", "avril", "mai", "juin", "juillet", "ao\xfbt", "septembre", "octobre", "novembre", "d\xe9cembre"], "field-era":"\xe9poque", "months-format-abbr":["janv.", "f\xe9vr.", "mars", "avr.", "mai", "juin", "juil.", "ao\xfbt", "sept.", "oct.", "nov.", "d\xe9c."], "days-format-wide":["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"], "dateFormat-full":"EEEE d MMMM yyyy", "field-zone":"zone", "days-format-abbr":["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."], "timeFormat-medium":"HH:mm:ss", "timeFormat-short":"HH:mm", "timeFormat-long":"HH:mm:ss z"})); }}) __CPAN_DIR__ src/i18n/calendar/nls/nl __CPAN_FILE__ src/i18n/calendar/nls/nl/gregorian.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"dateFormat-medium":"d MMM yyyy", "field-second":"Seconde", "timeFormat-full":"HH:mm:ss v", "months-standAlone-narrow":["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "days-standAlone-narrow":["Z", "M", "D", "W", "D", "V", "Z"], "field-year":"Jaar", "eras":["v. Chr.", "n. Chr."], "field-minute":"Minuut", "field-hour":"Uur", "dateFormat-long":"d MMMM yyyy", "field-day":"Dag", "field-dayperiod":"Dagdeel", "field-month":"Maand", "dateFormat-short":"dd-MM-yy", "months-format-wide":["januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december"], "field-era":"Tijdperk", "months-format-abbr":["jan", "feb", "mrt", "apr", "mei", "jun", "jul", "aug", "sep", "okt", "nov", "dec"], "days-format-wide":["zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag"], "dateFormat-full":"EEEE d MMMM yyyy", "days-format-abbr":["zo", "ma", "di", "wo", "do", "vr", "za"], "field-weekday":"Dag van de week", "field-week":"Week", "pm":"PM", "am":"AM", "timeFormat-medium":"HH:mm:ss", "timeFormat-short":"HH:mm", "timeFormat-long":"HH:mm:ss z", "field-zone":"Zone"}) __CPAN_FILE__ src/i18n/calendar/nls/nl/gregorian.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.calendar.nls.nl.gregorian"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.calendar.nls.nl.gregorian"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.calendar", "gregorian", "nl", ({"dateFormat-medium":"d MMM yyyy", "field-second":"Seconde", "timeFormat-full":"HH:mm:ss v", "months-standAlone-narrow":["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], "days-standAlone-narrow":["Z", "M", "D", "W", "D", "V", "Z"], "field-year":"Jaar", "eras":["v. Chr.", "n. Chr."], "field-minute":"Minuut", "field-hour":"Uur", "dateFormat-long":"d MMMM yyyy", "field-day":"Dag", "field-dayperiod":"Dagdeel", "field-month":"Maand", "dateFormat-short":"dd-MM-yy", "months-format-wide":["januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december"], "field-era":"Tijdperk", "months-format-abbr":["jan", "feb", "mrt", "apr", "mei", "jun", "jul", "aug", "sep", "okt", "nov", "dec"], "days-format-wide":["zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag"], "dateFormat-full":"EEEE d MMMM yyyy", "days-format-abbr":["zo", "ma", "di", "wo", "do", "vr", "za"], "field-weekday":"Dag van de week", "field-week":"Week", "pm":"PM", "am":"AM", "timeFormat-medium":"HH:mm:ss", "timeFormat-short":"HH:mm", "timeFormat-long":"HH:mm:ss z", "field-zone":"Zone"})); }}) __CPAN_DIR__ src/i18n/currency __CPAN_FILE__ src/i18n/currency/common.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.i18n.currency.common"); dojo.require("dojo.experimental"); dojo.experimental("dojo.i18n.currency"); dojo.require("dojo.regexp"); dojo.require("dojo.i18n.common"); dojo.require("dojo.i18n.number"); dojo.require("dojo.lang.common"); dojo.i18n.currency.format = function (value, iso, flags, locale) { flags = (typeof flags == "object") ? flags : {}; var formatData = dojo.i18n.currency._mapToLocalizedFormatData(dojo.i18n.currency.FORMAT_TABLE, iso, locale); if (typeof flags.places == "undefined") { flags.places = formatData.places; } if (typeof flags.places == "undefined") { flags.places = 2; } flags.signed = false; var result = dojo.i18n.number.format(value, flags, locale); var sym = formatData.symbol; if (formatData.adjSpace == "symbol") { if (formatData.placement == "after") { sym = " " + sym; } else { sym = sym + " "; } } if (value < 0) { if (formatData.signPlacement == "before") { sym = "-" + sym; } else { if (formatData.signPlacement == "after") { sym = sym + "-"; } } } var spc = (formatData.adjSpace == "number") ? " " : ""; if (formatData.placement == "after") { result = result + spc + sym; } else { result = sym + spc + result; } if (value < 0) { if (formatData.signPlacement == "around") { result = "(" + result + ")"; } else { if (formatData.signPlacement == "end") { result = result + "-"; } else { if (!formatData.signPlacement || formatData.signPlacement == "begin") { result = "-" + result; } } } } return result; }; dojo.i18n.currency.parse = function (value, iso, locale, flags) { if (typeof flags.validate == "undefined") { flags.validate = true; } if (flags.validate && !dojo.i18n.number.isCurrency(value, iso, locale, flags)) { return Number.NaN; } var sign = (value.indexOf("-") != -1); var abs = abs.replace(/\-/, ""); var formatData = dojo.i18n.currency._mapToLocalizedFormatData(dojo.i18n.currency.FORMAT_TABLE, iso, locale); abs = abs.replace(new RegExp("\\" + formatData.symbol), ""); var number = dojo.i18n.number.parse(abs, locale, flags); if (sign) { number = number * -1; } return number; }; dojo.i18n.currency.isCurrency = function (value, iso, locale, flags) { flags = (typeof flags == "object") ? flags : {}; var numberFormatData = dojo.i18n.number._mapToLocalizedFormatData(dojo.i18n.number.FORMAT_TABLE, locale); if (typeof flags.separator == "undefined") { flags.separator = numberFormatData[0]; } else { if (dojo.lang.isArray(flags.separator) && flags.separator.length == 0) { flags.separator = [numberFormatData[0], ""]; } } if (typeof flags.decimal == "undefined") { flags.decimal = numberFormatData[2]; } if (typeof flags.groupSize == "undefined") { flags.groupSize = numberFormatData[3]; } if (typeof flags.groupSize2 == "undefined") { flags.groupSize2 = numberFormatData[4]; } var formatData = dojo.i18n.currency._mapToLocalizedFormatData(dojo.i18n.currency.FORMAT_TABLE, iso, locale); if (typeof flags.places == "undefined") { flags.places = formatData.places; } if (typeof flags.places == "undefined") { flags.places = 2; } if (typeof flags.symbol == "undefined") { flags.symbol = formatData.symbol; } else { if (dojo.lang.isArray(flags.symbol) && flags.symbol.length == 0) { flags.symbol = [formatData.symbol, ""]; } } if (typeof flags.placement == "undefined") { flags.placement = formatData.placement; } var re = new RegExp("^" + dojo.regexp.currency(flags) + "$"); return re.test(value); }; dojo.i18n.currency._mapToLocalizedFormatData = function (table, iso, locale) { var formatData = dojo.i18n.currency.FORMAT_TABLE[iso]; if (!dojo.lang.isArray(formatData)) { return formatData; } return dojo.i18n.number._mapToLocalizedFormatData(formatData[0], locale); }; (function () { var arabic = {symbol:"\u062c", placement:"after", htmlSymbol:"?"}; var euro = {symbol:"\u20ac", placement:"before", adjSpace:"symbol", htmlSymbol:"&euro;"}; var euroAfter = {symbol:"\u20ac", placement:"after", htmlSymbol:"&euro;"}; dojo.i18n.currency.FORMAT_TABLE = {AED:{symbol:"\u062c", placement:"after"}, ARS:{symbol:"$", signPlacement:"after"}, ATS:{symbol:"\u20ac", adjSpace:"number", signPlacement:"after", htmlSymbol:"&euro;"}, AUD:{symbol:"$"}, BOB:{symbol:"$b"}, BRL:{symbol:"R$", adjSpace:"symbol"}, BEF:euroAfter, BHD:arabic, CAD:[{"*":{symbol:"$"}, "fr-ca":{symbol:"$", placement:"after", signPlacement:"around"}}], CHF:{symbol:"CHF", adjSpace:"symbol", signPlacement:"after"}, CLP:{symbol:"$"}, COP:{symbol:"$", signPlacement:"around"}, CNY:{symbol:"\xa5", htmlSymbol:"&yen;"}, CRC:{symbol:"\u20a1", signPlacement:"after", htmlSymbol:"?"}, CZK:{symbol:"Kc", adjSpace:"symbol", signPlacement:"after"}, DEM:euroAfter, DKK:{symbol:"kr.", adjSpace:"symbol", signPlacement:"after"}, DOP:{symbol:"$"}, DZD:arabic, ECS:{symbol:"$", signPlacement:"after"}, EGP:arabic, ESP:euroAfter, EUR:euro, FIM:euroAfter, FRF:euroAfter, GBP:{symbol:"\xa3", htmlSymbol:"&pound;"}, GRD:{symbol:"\u20ac", signPlacement:"end", htmlSymbol:"&euro;"}, GTQ:{symbol:"Q", signPlacement:"after"}, HKD:{symbol:"HK$"}, HNL:{symbol:"L.", signPlacement:"end"}, HUF:{symbol:"Ft", placement:"after", adjSpace:"symbol"}, IEP:{symbol:"\u20ac", htmlSymbol:"&euro;"}, ILS:{symbol:"\u05e9\"\u05d7", placement:"after", htmlSymbol:"?"}, INR:{symbol:"Rs."}, ITL:{symbol:"\u20ac", signPlacement:"after", htmlSymbol:"&euro;"}, JOD:arabic, JPY:{symbol:"\xa5", places:0, htmlSymbol:"&yen;"}, KRW:{symbol:"\u20a9", places:0, htmlSymbol:"?"}, KWD:arabic, LBP:arabic, LUF:euroAfter, MAD:arabic, MXN:{symbol:"$", signPlacement:"around"}, NIO:{symbol:"C$", adjSpace:"symbol", signPlacement:"after"}, NLG:{symbol:"\u20ac", signPlacement:"end", htmlSymbol:"&euro;"}, NOK:{symbol:"kr", adjSpace:"symbol", signPlacement:"after"}, NZD:{symbol:"$"}, OMR:arabic, PAB:{symbol:"B/", adjSpace:"symbol", signPlacement:"after"}, PEN:{symbol:"S/", signPlacement:"after"}, PLN:{symbol:"z", placement:"after"}, PTE:euroAfter, PYG:{symbol:"Gs.", signPlacement:"after"}, QAR:arabic, RUR:{symbol:"rub.", placement:"after"}, SAR:arabic, SEK:{symbol:"kr", placement:"after", adjSpace:"symbol"}, SGD:{symbol:"$"}, SVC:{symbol:"\u20a1", signPlacement:"after", adjSpace:"symbol"}, SYP:arabic, TND:arabic, TRL:{symbol:"TL", placement:"after"}, TWD:{symbol:"NT$"}, USD:{symbol:"$"}, UYU:{symbol:"$U", signplacement:"after", adjSpace:"symbol"}, VEB:{symbol:"Bs", signplacement:"after", adjSpace:"symbol"}, YER:arabic, ZAR:{symbol:"R", signPlacement:"around"}}; })();

__CPAN_FILE__ src/i18n/currency/common.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.common"], ["require", "dojo.experimental"], ["require", "dojo.regexp"], ["require", "dojo.i18n.common"], ["require", "dojo.i18n.number"], ["require", "dojo.lang.common"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.currency.common"); dojo.require("dojo.experimental"); dojo.experimental("dojo.i18n.currency"); dojo.require("dojo.regexp"); dojo.require("dojo.i18n.common"); dojo.require("dojo.i18n.number"); dojo.require("dojo.lang.common"); dojo.i18n.currency.format = function (value, iso, flags, locale) { flags = (typeof flags == "object") ? flags : {}; var formatData = dojo.i18n.currency._mapToLocalizedFormatData(dojo.i18n.currency.FORMAT_TABLE, iso, locale); if (typeof flags.places == "undefined") { flags.places = formatData.places; } if (typeof flags.places == "undefined") { flags.places = 2; } flags.signed = false; var result = dojo.i18n.number.format(value, flags, locale); var sym = formatData.symbol; if (formatData.adjSpace == "symbol") { if (formatData.placement == "after") { sym = " " + sym; } else { sym = sym + " "; } } if (value < 0) { if (formatData.signPlacement == "before") { sym = "-" + sym; } else { if (formatData.signPlacement == "after") { sym = sym + "-"; } } } var spc = (formatData.adjSpace == "number") ? " " : ""; if (formatData.placement == "after") { result = result + spc + sym; } else { result = sym + spc + result; } if (value < 0) { if (formatData.signPlacement == "around") { result = "(" + result + ")"; } else { if (formatData.signPlacement == "end") { result = result + "-"; } else { if (!formatData.signPlacement || formatData.signPlacement == "begin") { result = "-" + result; } } } } return result; }; dojo.i18n.currency.parse = function (value, iso, locale, flags) { if (typeof flags.validate == "undefined") { flags.validate = true; } if (flags.validate && !dojo.i18n.number.isCurrency(value, iso, locale, flags)) { return Number.NaN; } var sign = (value.indexOf("-") != -1); var abs = abs.replace(/\-/, ""); var formatData = dojo.i18n.currency._mapToLocalizedFormatData(dojo.i18n.currency.FORMAT_TABLE, iso, locale); abs = abs.replace(new RegExp("\\" + formatData.symbol), ""); var number = dojo.i18n.number.parse(abs, locale, flags); if (sign) { number = number * -1; } return number; }; dojo.i18n.currency.isCurrency = function (value, iso, locale, flags) { flags = (typeof flags == "object") ? flags : {}; var numberFormatData = dojo.i18n.number._mapToLocalizedFormatData(dojo.i18n.number.FORMAT_TABLE, locale); if (typeof flags.separator == "undefined") { flags.separator = numberFormatData[0]; } else { if (dojo.lang.isArray(flags.separator) && flags.separator.length == 0) { flags.separator = [numberFormatData[0], ""]; } } if (typeof flags.decimal == "undefined") { flags.decimal = numberFormatData[2]; } if (typeof flags.groupSize == "undefined") { flags.groupSize = numberFormatData[3]; } if (typeof flags.groupSize2 == "undefined") { flags.groupSize2 = numberFormatData[4]; } var formatData = dojo.i18n.currency._mapToLocalizedFormatData(dojo.i18n.currency.FORMAT_TABLE, iso, locale); if (typeof flags.places == "undefined") { flags.places = formatData.places; } if (typeof flags.places == "undefined") { flags.places = 2; } if (typeof flags.symbol == "undefined") { flags.symbol = formatData.symbol; } else { if (dojo.lang.isArray(flags.symbol) && flags.symbol.length == 0) { flags.symbol = [formatData.symbol, ""]; } } if (typeof flags.placement == "undefined") { flags.placement = formatData.placement; } var re = new RegExp("^" + dojo.regexp.currency(flags) + "$"); return re.test(value); }; dojo.i18n.currency._mapToLocalizedFormatData = function (table, iso, locale) { var formatData = dojo.i18n.currency.FORMAT_TABLE[iso]; if (!dojo.lang.isArray(formatData)) { return formatData; } return dojo.i18n.number._mapToLocalizedFormatData(formatData[0], locale); }; (function () { var arabic = {symbol:"\u062c", placement:"after", htmlSymbol:"?"}; var euro = {symbol:"\u20ac", placement:"before", adjSpace:"symbol", htmlSymbol:"&euro;"}; var euroAfter = {symbol:"\u20ac", placement:"after", htmlSymbol:"&euro;"}; dojo.i18n.currency.FORMAT_TABLE = {AED:{symbol:"\u062c", placement:"after"}, ARS:{symbol:"$", signPlacement:"after"}, ATS:{symbol:"\u20ac", adjSpace:"number", signPlacement:"after", htmlSymbol:"&euro;"}, AUD:{symbol:"$"}, BOB:{symbol:"$b"}, BRL:{symbol:"R$", adjSpace:"symbol"}, BEF:euroAfter, BHD:arabic, CAD:[{"*":{symbol:"$"}, "fr-ca":{symbol:"$", placement:"after", signPlacement:"around"}}], CHF:{symbol:"CHF", adjSpace:"symbol", signPlacement:"after"}, CLP:{symbol:"$"}, COP:{symbol:"$", signPlacement:"around"}, CNY:{symbol:"\xa5", htmlSymbol:"&yen;"}, CRC:{symbol:"\u20a1", signPlacement:"after", htmlSymbol:"?"}, CZK:{symbol:"Kc", adjSpace:"symbol", signPlacement:"after"}, DEM:euroAfter, DKK:{symbol:"kr.", adjSpace:"symbol", signPlacement:"after"}, DOP:{symbol:"$"}, DZD:arabic, ECS:{symbol:"$", signPlacement:"after"}, EGP:arabic, ESP:euroAfter, EUR:euro, FIM:euroAfter, FRF:euroAfter, GBP:{symbol:"\xa3", htmlSymbol:"&pound;"}, GRD:{symbol:"\u20ac", signPlacement:"end", htmlSymbol:"&euro;"}, GTQ:{symbol:"Q", signPlacement:"after"}, HKD:{symbol:"HK$"}, HNL:{symbol:"L.", signPlacement:"end"}, HUF:{symbol:"Ft", placement:"after", adjSpace:"symbol"}, IEP:{symbol:"\u20ac", htmlSymbol:"&euro;"}, ILS:{symbol:"\u05e9\"\u05d7", placement:"after", htmlSymbol:"?"}, INR:{symbol:"Rs."}, ITL:{symbol:"\u20ac", signPlacement:"after", htmlSymbol:"&euro;"}, JOD:arabic, JPY:{symbol:"\xa5", places:0, htmlSymbol:"&yen;"}, KRW:{symbol:"\u20a9", places:0, htmlSymbol:"?"}, KWD:arabic, LBP:arabic, LUF:euroAfter, MAD:arabic, MXN:{symbol:"$", signPlacement:"around"}, NIO:{symbol:"C$", adjSpace:"symbol", signPlacement:"after"}, NLG:{symbol:"\u20ac", signPlacement:"end", htmlSymbol:"&euro;"}, NOK:{symbol:"kr", adjSpace:"symbol", signPlacement:"after"}, NZD:{symbol:"$"}, OMR:arabic, PAB:{symbol:"B/", adjSpace:"symbol", signPlacement:"after"}, PEN:{symbol:"S/", signPlacement:"after"}, PLN:{symbol:"z", placement:"after"}, PTE:euroAfter, PYG:{symbol:"Gs.", signPlacement:"after"}, QAR:arabic, RUR:{symbol:"rub.", placement:"after"}, SAR:arabic, SEK:{symbol:"kr", placement:"after", adjSpace:"symbol"}, SGD:{symbol:"$"}, SVC:{symbol:"\u20a1", signPlacement:"after", adjSpace:"symbol"}, SYP:arabic, TND:arabic, TRL:{symbol:"TL", placement:"after"}, TWD:{symbol:"NT$"}, USD:{symbol:"$"}, UYU:{symbol:"$U", signplacement:"after", adjSpace:"symbol"}, VEB:{symbol:"Bs", signplacement:"after", adjSpace:"symbol"}, YER:arabic, ZAR:{symbol:"R", signPlacement:"around"}}; })(); }});

__CPAN_DIR__ src/i18n/currency/nls __CPAN_FILE__ src/i18n/currency/nls/JPY.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"displayName":"JPY", "symbol":"\xa5"}) __CPAN_FILE__ src/i18n/currency/nls/EUR.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.EUR"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.currency.nls.EUR"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "EUR", "", ({"displayName":"EUR", "symbol":"\u20ac"})); }}) __CPAN_FILE__ src/i18n/currency/nls/ITL.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.ITL"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.currency.nls.ITL"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "ITL", "", ({"displayName":"ITL", "symbol":"\u20a4"})); }}) __CPAN_FILE__ src/i18n/currency/nls/JPY.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.JPY"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.currency.nls.JPY"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "JPY", "", ({"displayName":"JPY", "symbol":"\xa5"})); }}) __CPAN_FILE__ src/i18n/currency/nls/GBP.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"displayName":"GBP", "symbol":"\xa3"}) __CPAN_FILE__ src/i18n/currency/nls/README All files within this directory and subdirectories were manually derived from http://unicode.org/cldr

See terms of use: http://www.unicode.org/copyright.html#Exhibit1

Eventually, this data should be generated directly from the XML in the CLDR repository to provide accurate and full support for the full set of locales.

__CPAN_FILE__ src/i18n/currency/nls/INR.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.INR"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.currency.nls.INR"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "INR", "", ({"displayName":"INR"})); }}) __CPAN_FILE__ src/i18n/currency/nls/ITL.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"displayName":"ITL", "symbol":"\u20a4"}) __CPAN_FILE__ src/i18n/currency/nls/USD.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"displayName":"USD", "symbol":"$"}) __CPAN_FILE__ src/i18n/currency/nls/INR.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"displayName":"INR"}) __CPAN_FILE__ src/i18n/currency/nls/GBP.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.GBP"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.currency.nls.GBP"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "GBP", "", ({"displayName":"GBP", "symbol":"\xa3"})); }}) __CPAN_FILE__ src/i18n/currency/nls/EUR.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"displayName":"EUR", "symbol":"\u20ac"}) __CPAN_FILE__ src/i18n/currency/nls/USD.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.USD"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.currency.nls.USD"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "USD", "", ({"displayName":"USD", "symbol":"$"})); }}) __CPAN_DIR__ src/i18n/currency/nls/ja __CPAN_FILE__ src/i18n/currency/nls/ja/JPY.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"displayName":"\u65e5\u672c\u5186", "symbol":"\uffe5"}) __CPAN_FILE__ src/i18n/currency/nls/ja/EUR.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.ja.EUR"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.currency.nls.ja.EUR"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "EUR", "ja", ({"displayName":"\u30e6\u30fc\u30ed", "symbol":"\u20ac"})); }}) __CPAN_FILE__ src/i18n/currency/nls/ja/ITL.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.ja.ITL"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.currency.nls.ja.ITL"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "ITL", "ja", ({"displayName":"\u30a4\u30bf\u30ea\u30a2 \u30ea\u30e9", "symbol":"\u20a4"})); }}) __CPAN_FILE__ src/i18n/currency/nls/ja/JPY.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.ja.JPY"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.currency.nls.ja.JPY"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "JPY", "ja", ({"displayName":"\u65e5\u672c\u5186", "symbol":"\uffe5"})); }}) __CPAN_FILE__ src/i18n/currency/nls/ja/GBP.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"displayName":"\u82f1\u56fd\u30dd\u30f3\u30c9", "symbol":"\xa3"}) __CPAN_FILE__ src/i18n/currency/nls/ja/INR.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.ja.INR"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.currency.nls.ja.INR"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "INR", "ja", ({"displayName":"\u30a4\u30f3\u30c9 \u30eb\u30d4\u30fc", "symbol":"INR"})); }}) __CPAN_FILE__ src/i18n/currency/nls/ja/ITL.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"displayName":"\u30a4\u30bf\u30ea\u30a2 \u30ea\u30e9", "symbol":"\u20a4"}) __CPAN_FILE__ src/i18n/currency/nls/ja/USD.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"displayName":"\u7c73\u30c9\u30eb", "symbol":"$"}) __CPAN_FILE__ src/i18n/currency/nls/ja/INR.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"displayName":"\u30a4\u30f3\u30c9 \u30eb\u30d4\u30fc", "symbol":"INR"}) __CPAN_FILE__ src/i18n/currency/nls/ja/GBP.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.ja.GBP"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.currency.nls.ja.GBP"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "GBP", "ja", ({"displayName":"\u82f1\u56fd\u30dd\u30f3\u30c9", "symbol":"\xa3"})); }}) __CPAN_FILE__ src/i18n/currency/nls/ja/EUR.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"displayName":"\u30e6\u30fc\u30ed", "symbol":"\u20ac"}) __CPAN_FILE__ src/i18n/currency/nls/ja/USD.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.ja.USD"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.currency.nls.ja.USD"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "USD", "ja", ({"displayName":"\u7c73\u30c9\u30eb", "symbol":"$"})); }}) __CPAN_DIR__ src/i18n/currency/nls/en-us __CPAN_FILE__ src/i18n/currency/nls/en-us/USD.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"symbol":"$", "displayName":"US Dollar"}) __CPAN_FILE__ src/i18n/currency/nls/en-us/USD.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.en-us.USD"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.currency.nls.en-us.USD"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "USD", "en-us", ({"symbol":"$", "displayName":"US Dollar"})); }}) __CPAN_DIR__ src/i18n/currency/nls/en __CPAN_FILE__ src/i18n/currency/nls/en/JPY.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"displayName":"Japanese Yen", "symbol":"\xa5"}) __CPAN_FILE__ src/i18n/currency/nls/en/EUR.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.en.EUR"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.currency.nls.en.EUR"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "EUR", "en", ({"displayName":"Euro", "symbol":"\u20ac"})); }}) __CPAN_FILE__ src/i18n/currency/nls/en/ITL.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.en.ITL"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.currency.nls.en.ITL"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "ITL", "en", ({"displayName":"Italian Lira", "symbol":"\u20a4"})); }}) __CPAN_FILE__ src/i18n/currency/nls/en/JPY.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.en.JPY"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.currency.nls.en.JPY"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "JPY", "en", ({"displayName":"Japanese Yen", "symbol":"\xa5"})); }}) __CPAN_FILE__ src/i18n/currency/nls/en/GBP.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"displayName":"British Pound Sterling", "symbol":"\xa3"}) __CPAN_FILE__ src/i18n/currency/nls/en/INR.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.en.INR"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.currency.nls.en.INR"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "INR", "en", ({"displayName":"Indian Rupee"})); }}) __CPAN_FILE__ src/i18n/currency/nls/en/ITL.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"displayName":"Italian Lira", "symbol":"\u20a4"}) __CPAN_FILE__ src/i18n/currency/nls/en/USD.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"displayName":"US Dollar", "symbol":"US$"}) __CPAN_FILE__ src/i18n/currency/nls/en/INR.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"displayName":"Indian Rupee"}) __CPAN_FILE__ src/i18n/currency/nls/en/GBP.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.en.GBP"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.currency.nls.en.GBP"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "GBP", "en", ({"displayName":"British Pound Sterling", "symbol":"\xa3"})); }}) __CPAN_FILE__ src/i18n/currency/nls/en/EUR.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"displayName":"Euro", "symbol":"\u20ac"}) __CPAN_FILE__ src/i18n/currency/nls/en/USD.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.en.USD"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.currency.nls.en.USD"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "USD", "en", ({"displayName":"US Dollar", "symbol":"US$"})); }}) __CPAN_DIR__ src/i18n/currency/nls/hi __CPAN_FILE__ src/i18n/currency/nls/hi/JPY.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"displayName":"\u091c\u093e\u092a\u093e\u0928\u0940 \u092f\u0947\u0928", "symbol":"\xa5"}) __CPAN_FILE__ src/i18n/currency/nls/hi/EUR.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.hi.EUR"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.currency.nls.hi.EUR"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "EUR", "hi", ({"displayName":"\u092f\u0941\u0930\u094b", "symbol":"\u20ac"})); }}) __CPAN_FILE__ src/i18n/currency/nls/hi/ITL.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.hi.ITL"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.currency.nls.hi.ITL"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "ITL", "hi", ({"displayName":"\u0907\u0924\u0932\u0940 \u0915\u093e \u0932\u0940\u0930\u093e", "symbol":"\u20a4"})); }}) __CPAN_FILE__ src/i18n/currency/nls/hi/JPY.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.hi.JPY"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.currency.nls.hi.JPY"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "JPY", "hi", ({"displayName":"\u091c\u093e\u092a\u093e\u0928\u0940 \u092f\u0947\u0928", "symbol":"\xa5"})); }}) __CPAN_FILE__ src/i18n/currency/nls/hi/GBP.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"displayName":"\u092c\u094d\u0930\u093f\u0924\u0928 \u0915\u093e \u092a\u094c\u0928\u094d\u0921 \u0938\u094d\u091f\u0930\u094d\u0932\u093f\u0917", "symbol":"\xa3"}) __CPAN_FILE__ src/i18n/currency/nls/hi/INR.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.hi.INR"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.currency.nls.hi.INR"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "INR", "hi", ({"displayName":"\u092d\u093e\u0930\u0924\u0940\u092f \u0930\u0942\u092a\u092f\u093e", "symbol":"\u0930\u0941."})); }}) __CPAN_FILE__ src/i18n/currency/nls/hi/ITL.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"displayName":"\u0907\u0924\u0932\u0940 \u0915\u093e \u0932\u0940\u0930\u093e", "symbol":"\u20a4"}) __CPAN_FILE__ src/i18n/currency/nls/hi/USD.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"displayName":"\u0905\u092e\u0930\u0940\u0915\u0940 \u0921\u093e\u0932\u0930", "symbol":"$"}) __CPAN_FILE__ src/i18n/currency/nls/hi/INR.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"displayName":"\u092d\u093e\u0930\u0924\u0940\u092f \u0930\u0942\u092a\u092f\u093e", "symbol":"\u0930\u0941."}) __CPAN_FILE__ src/i18n/currency/nls/hi/GBP.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.hi.GBP"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.currency.nls.hi.GBP"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "GBP", "hi", ({"displayName":"\u092c\u094d\u0930\u093f\u0924\u0928 \u0915\u093e \u092a\u094c\u0928\u094d\u0921 \u0938\u094d\u091f\u0930\u094d\u0932\u093f\u0917", "symbol":"\xa3"})); }}) __CPAN_FILE__ src/i18n/currency/nls/hi/EUR.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







({"displayName":"\u092f\u0941\u0930\u094b", "symbol":"\u20ac"}) __CPAN_FILE__ src/i18n/currency/nls/hi/USD.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.i18n.currency.nls.hi.USD"]], definePackage:function (dojo) { dojo.provide("dojo.i18n.currency.nls.hi.USD"); dojo.hostenv.xdLoadFlattenedBundle("dojo.i18n.currency", "USD", "hi", ({"displayName":"\u0905\u092e\u0930\u0940\u0915\u0940 \u0921\u093e\u0932\u0930", "symbol":"$"})); }}) __CPAN_DIR__ src/namespaces __CPAN_FILE__ src/namespaces/dojo.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/

dojo.provide("dojo.namespaces.dojo"); dojo.require("dojo.ns");

(function(){ // Mapping of all widget short names to their full package names // This is used for widget autoloading - no dojo.require() is necessary. // If you use a widget in markup or create one dynamically, then this // mapping is used to find and load any dependencies not already loaded. // You should use your own namespace for any custom widgets. // For extra widgets you use, dojo.declare() may be used to explicitly load them. // Experimental and deprecated widgets are not included in this table var map = { html: { "accordioncontainer": "dojo.widget.AccordionContainer", "animatedpng": "dojo.widget.AnimatedPng", "button": "dojo.widget.Button", "chart": "dojo.widget.Chart", "checkbox": "dojo.widget.Checkbox", "clock": "dojo.widget.Clock", "colorpalette": "dojo.widget.ColorPalette", "combobox": "dojo.widget.ComboBox", "combobutton": "dojo.widget.Button", "contentpane": "dojo.widget.ContentPane", "currencytextbox": "dojo.widget.CurrencyTextbox", "datepicker": "dojo.widget.DatePicker", "datetextbox": "dojo.widget.DateTextbox", "debugconsole": "dojo.widget.DebugConsole", "dialog": "dojo.widget.Dialog", "dropdownbutton": "dojo.widget.Button", "dropdowndatepicker": "dojo.widget.DropdownDatePicker", "dropdowntimepicker": "dojo.widget.DropdownTimePicker", "emaillisttextbox": "dojo.widget.InternetTextbox", "emailtextbox": "dojo.widget.InternetTextbox", "editor": "dojo.widget.Editor", "editor2": "dojo.widget.Editor2", "filteringtable": "dojo.widget.FilteringTable", "fisheyelist": "dojo.widget.FisheyeList", "fisheyelistitem": "dojo.widget.FisheyeList", "floatingpane": "dojo.widget.FloatingPane", "modalfloatingpane": "dojo.widget.FloatingPane", "form": "dojo.widget.Form", "googlemap": "dojo.widget.GoogleMap", "inlineeditbox": "dojo.widget.InlineEditBox", "integerspinner": "dojo.widget.Spinner", "integertextbox": "dojo.widget.IntegerTextbox", "ipaddresstextbox": "dojo.widget.InternetTextbox", "layoutcontainer": "dojo.widget.LayoutContainer", "linkpane": "dojo.widget.LinkPane", "popupmenu2": "dojo.widget.Menu2", "menuitem2": "dojo.widget.Menu2", "menuseparator2": "dojo.widget.Menu2", "menubar2": "dojo.widget.Menu2", "menubaritem2": "dojo.widget.Menu2", "pagecontainer": "dojo.widget.PageContainer", "pagecontroller": "dojo.widget.PageContainer", "popupcontainer": "dojo.widget.PopupContainer", "progressbar": "dojo.widget.ProgressBar", "radiogroup": "dojo.widget.RadioGroup", "realnumbertextbox": "dojo.widget.RealNumberTextbox", "regexptextbox": "dojo.widget.RegexpTextbox", "repeater": "dojo.widget.Repeater", "resizabletextarea": "dojo.widget.ResizableTextarea", "richtext": "dojo.widget.RichText", "select": "dojo.widget.Select", "show": "dojo.widget.Show", "showaction": "dojo.widget.ShowAction", "showslide": "dojo.widget.ShowSlide", "slidervertical": "dojo.widget.Slider", "sliderhorizontal": "dojo.widget.Slider", "slider":"dojo.widget.Slider", "slideshow": "dojo.widget.SlideShow", "sortabletable": "dojo.widget.SortableTable", "splitcontainer": "dojo.widget.SplitContainer", "tabcontainer": "dojo.widget.TabContainer", "tabcontroller": "dojo.widget.TabContainer", "taskbar": "dojo.widget.TaskBar", "textbox": "dojo.widget.Textbox", "timepicker": "dojo.widget.TimePicker", "timetextbox": "dojo.widget.DateTextbox", "titlepane": "dojo.widget.TitlePane", "toaster": "dojo.widget.Toaster", "toggler": "dojo.widget.Toggler", "toolbar": "dojo.widget.Toolbar", "toolbarcontainer": "dojo.widget.Toolbar", "toolbaritem": "dojo.widget.Toolbar", "toolbarbuttongroup": "dojo.widget.Toolbar", "toolbarbutton": "dojo.widget.Toolbar", "toolbardialog": "dojo.widget.Toolbar", "toolbarmenu": "dojo.widget.Toolbar", "toolbarseparator": "dojo.widget.Toolbar", "toolbarspace": "dojo.widget.Toolbar", "toolbarselect": "dojo.widget.Toolbar", "toolbarcolordialog": "dojo.widget.Toolbar", "tooltip": "dojo.widget.Tooltip", "tree": "dojo.widget.Tree", "treebasiccontroller": "dojo.widget.TreeBasicController", "treecontextmenu": "dojo.widget.TreeContextMenu", "treedisablewrapextension": "dojo.widget.TreeDisableWrapExtension", "treedociconextension": "dojo.widget.TreeDocIconExtension", "treeeditor": "dojo.widget.TreeEditor", "treeemphasizeonselect": "dojo.widget.TreeEmphasizeOnSelect", "treeexpandtonodeonselect": "dojo.widget.TreeExpandToNodeOnSelect", "treelinkextension": "dojo.widget.TreeLinkExtension", "treeloadingcontroller": "dojo.widget.TreeLoadingController", "treemenuitem": "dojo.widget.TreeContextMenu", "treenode": "dojo.widget.TreeNode", "treerpccontroller": "dojo.widget.TreeRPCController", "treeselector": "dojo.widget.TreeSelector", "treetoggleonselect": "dojo.widget.TreeToggleOnSelect", "treev3": "dojo.widget.TreeV3", "treebasiccontrollerv3": "dojo.widget.TreeBasicControllerV3", "treecontextmenuv3": "dojo.widget.TreeContextMenuV3", "treedndcontrollerv3": "dojo.widget.TreeDndControllerV3", "treeloadingcontrollerv3": "dojo.widget.TreeLoadingControllerV3", "treemenuitemv3": "dojo.widget.TreeContextMenuV3", "treerpccontrollerv3": "dojo.widget.TreeRpcControllerV3", "treeselectorv3": "dojo.widget.TreeSelectorV3", "urltextbox": "dojo.widget.InternetTextbox", "usphonenumbertextbox": "dojo.widget.UsTextbox", "ussocialsecuritynumbertextbox": "dojo.widget.UsTextbox", "usstatetextbox": "dojo.widget.UsTextbox", "usziptextbox": "dojo.widget.UsTextbox", "validationtextbox": "dojo.widget.ValidationTextbox", "treeloadingcontroller": "dojo.widget.TreeLoadingController", "wizardcontainer": "dojo.widget.Wizard", "wizardpane": "dojo.widget.Wizard", "yahoomap": "dojo.widget.YahooMap" }, svg: { "chart": "dojo.widget.svg.Chart" }, vml: { "chart": "dojo.widget.vml.Chart" } };

	dojo.addDojoNamespaceMapping = function(/*String*/shortName, /*String*/packageName){
	// summary:
	//	Add an entry to the mapping table for the dojo: namespace
	//
	// shortName: the name to be used as the widget's tag name in the dojo: namespace
	// packageName: the path to the Javascript module in dotted package notation
		map[shortName]=packageName;    
	};

	function dojoNamespaceResolver(name, domain){
		if(!domain){ domain="html"; }
		if(!map[domain]){ return null; }
		return map[domain][name];    
	}

	dojo.registerNamespaceResolver("dojo", dojoNamespaceResolver);
})();

__CPAN_FILE__ src/namespaces/dojo.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.namespaces.dojo"], ["require", "dojo.ns"], ["require", ]], definePackage:function (dojo) { dojo.provide("dojo.namespaces.dojo"); dojo.require("dojo.ns"); (function () { var map = {html:{"accordioncontainer":"dojo.widget.AccordionContainer", "animatedpng":"dojo.widget.AnimatedPng", "button":"dojo.widget.Button", "chart":"dojo.widget.Chart", "checkbox":"dojo.widget.Checkbox", "clock":"dojo.widget.Clock", "colorpalette":"dojo.widget.ColorPalette", "combobox":"dojo.widget.ComboBox", "combobutton":"dojo.widget.Button", "contentpane":"dojo.widget.ContentPane", "currencytextbox":"dojo.widget.CurrencyTextbox", "datepicker":"dojo.widget.DatePicker", "datetextbox":"dojo.widget.DateTextbox", "debugconsole":"dojo.widget.DebugConsole", "dialog":"dojo.widget.Dialog", "dropdownbutton":"dojo.widget.Button", "dropdowndatepicker":"dojo.widget.DropdownDatePicker", "dropdowntimepicker":"dojo.widget.DropdownTimePicker", "emaillisttextbox":"dojo.widget.InternetTextbox", "emailtextbox":"dojo.widget.InternetTextbox", "editor":"dojo.widget.Editor", "editor2":"dojo.widget.Editor2", "filteringtable":"dojo.widget.FilteringTable", "fisheyelist":"dojo.widget.FisheyeList", "fisheyelistitem":"dojo.widget.FisheyeList", "floatingpane":"dojo.widget.FloatingPane", "modalfloatingpane":"dojo.widget.FloatingPane", "form":"dojo.widget.Form", "googlemap":"dojo.widget.GoogleMap", "inlineeditbox":"dojo.widget.InlineEditBox", "integerspinner":"dojo.widget.Spinner", "integertextbox":"dojo.widget.IntegerTextbox", "ipaddresstextbox":"dojo.widget.InternetTextbox", "layoutcontainer":"dojo.widget.LayoutContainer", "linkpane":"dojo.widget.LinkPane", "popupmenu2":"dojo.widget.Menu2", "menuitem2":"dojo.widget.Menu2", "menuseparator2":"dojo.widget.Menu2", "menubar2":"dojo.widget.Menu2", "menubaritem2":"dojo.widget.Menu2", "pagecontainer":"dojo.widget.PageContainer", "pagecontroller":"dojo.widget.PageContainer", "popupcontainer":"dojo.widget.PopupContainer", "progressbar":"dojo.widget.ProgressBar", "radiogroup":"dojo.widget.RadioGroup", "realnumbertextbox":"dojo.widget.RealNumberTextbox", "regexptextbox":"dojo.widget.RegexpTextbox", "repeater":"dojo.widget.Repeater", "resizabletextarea":"dojo.widget.ResizableTextarea", "richtext":"dojo.widget.RichText", "select":"dojo.widget.Select", "show":"dojo.widget.Show", "showaction":"dojo.widget.ShowAction", "showslide":"dojo.widget.ShowSlide", "slidervertical":"dojo.widget.Slider", "sliderhorizontal":"dojo.widget.Slider", "slider":"dojo.widget.Slider", "slideshow":"dojo.widget.SlideShow", "sortabletable":"dojo.widget.SortableTable", "splitcontainer":"dojo.widget.SplitContainer", "tabcontainer":"dojo.widget.TabContainer", "tabcontroller":"dojo.widget.TabContainer", "taskbar":"dojo.widget.TaskBar", "textbox":"dojo.widget.Textbox", "timepicker":"dojo.widget.TimePicker", "timetextbox":"dojo.widget.DateTextbox", "titlepane":"dojo.widget.TitlePane", "toaster":"dojo.widget.Toaster", "toggler":"dojo.widget.Toggler", "toolbar":"dojo.widget.Toolbar", "toolbarcontainer":"dojo.widget.Toolbar", "toolbaritem":"dojo.widget.Toolbar", "toolbarbuttongroup":"dojo.widget.Toolbar", "toolbarbutton":"dojo.widget.Toolbar", "toolbardialog":"dojo.widget.Toolbar", "toolbarmenu":"dojo.widget.Toolbar", "toolbarseparator":"dojo.widget.Toolbar", "toolbarspace":"dojo.widget.Toolbar", "toolbarselect":"dojo.widget.Toolbar", "toolbarcolordialog":"dojo.widget.Toolbar", "tooltip":"dojo.widget.Tooltip", "tree":"dojo.widget.Tree", "treebasiccontroller":"dojo.widget.TreeBasicController", "treecontextmenu":"dojo.widget.TreeContextMenu", "treedisablewrapextension":"dojo.widget.TreeDisableWrapExtension", "treedociconextension":"dojo.widget.TreeDocIconExtension", "treeeditor":"dojo.widget.TreeEditor", "treeemphasizeonselect":"dojo.widget.TreeEmphasizeOnSelect", "treeexpandtonodeonselect":"dojo.widget.TreeExpandToNodeOnSelect", "treelinkextension":"dojo.widget.TreeLinkExtension", "treeloadingcontroller":"dojo.widget.TreeLoadingController", "treemenuitem":"dojo.widget.TreeContextMenu", "treenode":"dojo.widget.TreeNode", "treerpccontroller":"dojo.widget.TreeRPCController", "treeselector":"dojo.widget.TreeSelector", "treetoggleonselect":"dojo.widget.TreeToggleOnSelect", "treev3":"dojo.widget.TreeV3", "treebasiccontrollerv3":"dojo.widget.TreeBasicControllerV3", "treecontextmenuv3":"dojo.widget.TreeContextMenuV3", "treedndcontrollerv3":"dojo.widget.TreeDndControllerV3", "treeloadingcontrollerv3":"dojo.widget.TreeLoadingControllerV3", "treemenuitemv3":"dojo.widget.TreeContextMenuV3", "treerpccontrollerv3":"dojo.widget.TreeRpcControllerV3", "treeselectorv3":"dojo.widget.TreeSelectorV3", "urltextbox":"dojo.widget.InternetTextbox", "usphonenumbertextbox":"dojo.widget.UsTextbox", "ussocialsecuritynumbertextbox":"dojo.widget.UsTextbox", "usstatetextbox":"dojo.widget.UsTextbox", "usziptextbox":"dojo.widget.UsTextbox", "validationtextbox":"dojo.widget.ValidationTextbox", "treeloadingcontroller":"dojo.widget.TreeLoadingController", "wizardcontainer":"dojo.widget.Wizard", "wizardpane":"dojo.widget.Wizard", "yahoomap":"dojo.widget.YahooMap"}, svg:{"chart":"dojo.widget.svg.Chart"}, vml:{"chart":"dojo.widget.vml.Chart"}}; dojo.addDojoNamespaceMapping = function (shortName, packageName) { map[shortName] = packageName; }; function dojoNamespaceResolver(name, domain) { if (!domain) { domain = "html"; } if (!map[domain]) { return null; } return map[domain][name]; } dojo.registerNamespaceResolver("dojo", dojoNamespaceResolver); })(); }});

__CPAN_DIR__ src/crypto __CPAN_FILE__ src/crypto/Rijndael.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.crypto.Rijndael"], ["require", "dojo.crypto"], ["require", "dojo.experimental"]], definePackage:function (dojo) { dojo.provide("dojo.crypto.Rijndael"); dojo.require("dojo.crypto"); dojo.require("dojo.experimental"); dojo.experimental("dojo.crypto.Rijndael"); dojo.crypto.Rijndael = new function () { this.encrypt = function (plaintext, key) { }; this.decrypt = function (ciphertext, key) { }; }(); }});

__CPAN_FILE__ src/crypto/LICENSE License Disclaimer:

All contents of this directory are Copyright (c) the Dojo Foundation, with the following exceptions: -------------------------------------------------------------------------------

MD5.js, SHA1.js: * Copyright 1998-2005, Paul Johnstone Distributed under the terms of the BSD License

__CPAN_FILE__ src/crypto/SHA256.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.crypto.SHA256"); dojo.require("dojo.crypto"); dojo.require("dojo.experimental"); dojo.experimental("dojo.crypto.SHA256"); dojo.crypto.SHA256 = new function () { this.compute = function (s) { }; }();

__CPAN_FILE__ src/crypto/Rijndael.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.crypto.Rijndael"); dojo.require("dojo.crypto"); dojo.require("dojo.experimental"); dojo.experimental("dojo.crypto.Rijndael"); dojo.crypto.Rijndael = new function () { this.encrypt = function (plaintext, key) { }; this.decrypt = function (ciphertext, key) { }; }();

__CPAN_FILE__ src/crypto/MD5.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.require("dojo.crypto"); dojo.provide("dojo.crypto.MD5"); dojo.crypto.MD5 = new function () { var chrsz = 8; var mask = (1 << chrsz) - 1; function toWord(s) { var wa = []; for (var i = 0; i < s.length * chrsz; i += chrsz) { wa[i >> 5] |= (s.charCodeAt(i / chrsz) & mask) << (i % 32); } return wa; } function toString(wa) { var s = []; for (var i = 0; i < wa.length * 32; i += chrsz) { s.push(String.fromCharCode((wa[i >> 5] >>> (i % 32)) & mask)); } return s.join(""); } function toHex(wa) { var h = "0123456789abcdef"; var s = []; for (var i = 0; i < wa.length * 4; i++) { s.push(h.charAt((wa[i >> 2] >> ((i % 4) * 8 + 4)) & 15) + h.charAt((wa[i >> 2] >> ((i % 4) * 8)) & 15)); } return s.join(""); } function toBase64(wa) { var p = "="; var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var s = []; for (var i = 0; i < wa.length * 4; i += 3) { var t = (((wa[i >> 2] >> 8 * (i % 4)) & 255) << 16) | (((wa[i + 1 >> 2] >> 8 * ((i + 1) % 4)) & 255) << 8) | ((wa[i + 2 >> 2] >> 8 * ((i + 2) % 4)) & 255); for (var j = 0; j < 4; j++) { if (i * 8 + j * 6 > wa.length * 32) { s.push(p); } else { s.push(tab.charAt((t >> 6 * (3 - j)) & 63)); } } } return s.join(""); } function add(x, y) { var l = (x & 65535) + (y & 65535); var m = (x >> 16) + (y >> 16) + (l >> 16); return (m << 16) | (l & 65535); } function R(n, c) { return (n << c) | (n >>> (32 - c)); } function C(q, a, b, x, s, t) { return add(R(add(add(a, q), add(x, t)), s), b); } function FF(a, b, c, d, x, s, t) { return C((b & c) | ((~b) & d), a, b, x, s, t); } function GG(a, b, c, d, x, s, t) { return C((b & d) | (c & (~d)), a, b, x, s, t); } function HH(a, b, c, d, x, s, t) { return C(b ^ c ^ d, a, b, x, s, t); } function II(a, b, c, d, x, s, t) { return C(c ^ (b | (~d)), a, b, x, s, t); } function core(x, len) { x[len >> 5] |= 128 << ((len) % 32); x[(((len + 64) >>> 9) << 4) + 14] = len; var a = 1732584193; var b = -271733879; var c = -1732584194; var d = 271733878; for (var i = 0; i < x.length; i += 16) { var olda = a; var oldb = b; var oldc = c; var oldd = d; a = FF(a, b, c, d, x[i + 0], 7, -680876936); d = FF(d, a, b, c, x[i + 1], 12, -389564586); c = FF(c, d, a, b, x[i + 2], 17, 606105819); b = FF(b, c, d, a, x[i + 3], 22, -1044525330); a = FF(a, b, c, d, x[i + 4], 7, -176418897); d = FF(d, a, b, c, x[i + 5], 12, 1200080426); c = FF(c, d, a, b, x[i + 6], 17, -1473231341); b = FF(b, c, d, a, x[i + 7], 22, -45705983); a = FF(a, b, c, d, x[i + 8], 7, 1770035416); d = FF(d, a, b, c, x[i + 9], 12, -1958414417); c = FF(c, d, a, b, x[i + 10], 17, -42063); b = FF(b, c, d, a, x[i + 11], 22, -1990404162); a = FF(a, b, c, d, x[i + 12], 7, 1804603682); d = FF(d, a, b, c, x[i + 13], 12, -40341101); c = FF(c, d, a, b, x[i + 14], 17, -1502002290); b = FF(b, c, d, a, x[i + 15], 22, 1236535329); a = GG(a, b, c, d, x[i + 1], 5, -165796510); d = GG(d, a, b, c, x[i + 6], 9, -1069501632); c = GG(c, d, a, b, x[i + 11], 14, 643717713); b = GG(b, c, d, a, x[i + 0], 20, -373897302); a = GG(a, b, c, d, x[i + 5], 5, -701558691); d = GG(d, a, b, c, x[i + 10], 9, 38016083); c = GG(c, d, a, b, x[i + 15], 14, -660478335); b = GG(b, c, d, a, x[i + 4], 20, -405537848); a = GG(a, b, c, d, x[i + 9], 5, 568446438); d = GG(d, a, b, c, x[i + 14], 9, -1019803690); c = GG(c, d, a, b, x[i + 3], 14, -187363961); b = GG(b, c, d, a, x[i + 8], 20, 1163531501); a = GG(a, b, c, d, x[i + 13], 5, -1444681467); d = GG(d, a, b, c, x[i + 2], 9, -51403784); c = GG(c, d, a, b, x[i + 7], 14, 1735328473); b = GG(b, c, d, a, x[i + 12], 20, -1926607734); a = HH(a, b, c, d, x[i + 5], 4, -378558); d = HH(d, a, b, c, x[i + 8], 11, -2022574463); c = HH(c, d, a, b, x[i + 11], 16, 1839030562); b = HH(b, c, d, a, x[i + 14], 23, -35309556); a = HH(a, b, c, d, x[i + 1], 4, -1530992060); d = HH(d, a, b, c, x[i + 4], 11, 1272893353); c = HH(c, d, a, b, x[i + 7], 16, -155497632); b = HH(b, c, d, a, x[i + 10], 23, -1094730640); a = HH(a, b, c, d, x[i + 13], 4, 681279174); d = HH(d, a, b, c, x[i + 0], 11, -358537222); c = HH(c, d, a, b, x[i + 3], 16, -722521979); b = HH(b, c, d, a, x[i + 6], 23, 76029189); a = HH(a, b, c, d, x[i + 9], 4, -640364487); d = HH(d, a, b, c, x[i + 12], 11, -421815835); c = HH(c, d, a, b, x[i + 15], 16, 530742520); b = HH(b, c, d, a, x[i + 2], 23, -995338651); a = II(a, b, c, d, x[i + 0], 6, -198630844); d = II(d, a, b, c, x[i + 7], 10, 1126891415); c = II(c, d, a, b, x[i + 14], 15, -1416354905); b = II(b, c, d, a, x[i + 5], 21, -57434055); a = II(a, b, c, d, x[i + 12], 6, 1700485571); d = II(d, a, b, c, x[i + 3], 10, -1894986606); c = II(c, d, a, b, x[i + 10], 15, -1051523); b = II(b, c, d, a, x[i + 1], 21, -2054922799); a = II(a, b, c, d, x[i + 8], 6, 1873313359); d = II(d, a, b, c, x[i + 15], 10, -30611744); c = II(c, d, a, b, x[i + 6], 15, -1560198380); b = II(b, c, d, a, x[i + 13], 21, 1309151649); a = II(a, b, c, d, x[i + 4], 6, -145523070); d = II(d, a, b, c, x[i + 11], 10, -1120210379); c = II(c, d, a, b, x[i + 2], 15, 718787259); b = II(b, c, d, a, x[i + 9], 21, -343485551); a = add(a, olda); b = add(b, oldb); c = add(c, oldc); d = add(d, oldd); } return [a, b, c, d]; } function hmac(data, key) { var wa = toWord(key); if (wa.length > 16) { wa = core(wa, key.length * chrsz); } var l = [], r = []; for (var i = 0; i < 16; i++) { l[i] = wa[i] ^ 909522486; r[i] = wa[i] ^ 1549556828; } var h = core(l.concat(toWord(data)), 512 + data.length * chrsz); return core(r.concat(h), 640); } this.compute = function (data, outputType) { var out = outputType || dojo.crypto.outputTypes.Base64; switch (out) { case dojo.crypto.outputTypes.Hex: return toHex(core(toWord(data), data.length * chrsz)); case dojo.crypto.outputTypes.String: return toString(core(toWord(data), data.length * chrsz)); default: return toBase64(core(toWord(data), data.length * chrsz)); } }; this.getHMAC = function (data, key, outputType) { var out = outputType || dojo.crypto.outputTypes.Base64; switch (out) { case dojo.crypto.outputTypes.Hex: return toHex(hmac(data, key)); case dojo.crypto.outputTypes.String: return toString(hmac(data, key)); default: return toBase64(hmac(data, key)); } }; }();

__CPAN_FILE__ src/crypto/SHA256.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.crypto.SHA256"], ["require", "dojo.crypto"], ["require", "dojo.experimental"]], definePackage:function (dojo) { dojo.provide("dojo.crypto.SHA256"); dojo.require("dojo.crypto"); dojo.require("dojo.experimental"); dojo.experimental("dojo.crypto.SHA256"); dojo.crypto.SHA256 = new function () { this.compute = function (s) { }; }(); }});

__CPAN_FILE__ src/crypto/Blowfish.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.require("dojo.crypto"); dojo.provide("dojo.crypto.Blowfish"); dojo.crypto.Blowfish = new function () { var POW2 = Math.pow(2, 2); var POW3 = Math.pow(2, 3); var POW4 = Math.pow(2, 4); var POW8 = Math.pow(2, 8); var POW16 = Math.pow(2, 16); var POW24 = Math.pow(2, 24); var iv = null; var boxes = {p:[608135816, 2242054355, 320440878, 57701188, 2752067618, 698298832, 137296536, 3964562569, 1160258022, 953160567, 3193202383, 887688300, 3232508343, 3380367581, 1065670069, 3041331479, 2450970073, 2306472731], s0:[3509652390, 2564797868, 805139163, 3491422135, 3101798381, 1780907670, 3128725573, 4046225305, 614570311, 3012652279, 134345442, 2240740374, 1667834072, 1901547113, 2757295779, 4103290238, 227898511, 1921955416, 1904987480, 2182433518, 2069144605, 3260701109, 2620446009, 720527379, 3318853667, 677414384, 3393288472, 3101374703, 2390351024, 1614419982, 1822297739, 2954791486, 3608508353, 3174124327, 2024746970, 1432378464, 3864339955, 2857741204, 1464375394, 1676153920, 1439316330, 715854006, 3033291828, 289532110, 2706671279, 2087905683, 3018724369, 1668267050, 732546397, 1947742710, 3462151702, 2609353502, 2950085171, 1814351708, 2050118529, 680887927, 999245976, 1800124847, 3300911131, 1713906067, 1641548236, 4213287313, 1216130144, 1575780402, 4018429277, 3917837745, 3693486850, 3949271944, 596196993, 3549867205, 258830323, 2213823033, 772490370, 2760122372, 1774776394, 2652871518, 566650946, 4142492826, 1728879713, 2882767088, 1783734482, 3629395816, 2517608232, 2874225571, 1861159788, 326777828, 3124490320, 2130389656, 2716951837, 967770486, 1724537150, 2185432712, 2364442137, 1164943284, 2105845187, 998989502, 3765401048, 2244026483, 1075463327, 1455516326, 1322494562, 910128902, 469688178, 1117454909, 936433444, 3490320968, 3675253459, 1240580251, 122909385, 2157517691, 634681816, 4142456567, 3825094682, 3061402683, 2540495037, 79693498, 3249098678, 1084186820, 1583128258, 426386531, 1761308591, 1047286709, 322548459, 995290223, 1845252383, 2603652396, 3431023940, 2942221577, 3202600964, 3727903485, 1712269319, 422464435, 3234572375, 1170764815, 3523960633, 3117677531, 1434042557, 442511882, 3600875718, 1076654713, 1738483198, 4213154764, 2393238008, 3677496056, 1014306527, 4251020053, 793779912, 2902807211, 842905082, 4246964064, 1395751752, 1040244610, 2656851899, 3396308128, 445077038, 3742853595, 3577915638, 679411651, 2892444358, 2354009459, 1767581616, 3150600392, 3791627101, 3102740896, 284835224, 4246832056, 1258075500, 768725851, 2589189241, 3069724005, 3532540348, 1274779536, 3789419226, 2764799539, 1660621633, 3471099624, 4011903706, 913787905, 3497959166, 737222580, 2514213453, 2928710040, 3937242737, 1804850592, 3499020752, 2949064160, 2386320175, 2390070455, 2415321851, 4061277028, 2290661394, 2416832540, 1336762016, 1754252060, 3520065937, 3014181293, 791618072, 3188594551, 3933548030, 2332172193, 3852520463, 3043980520, 413987798, 3465142937, 3030929376, 4245938359, 2093235073, 3534596313, 375366246, 2157278981, 2479649556, 555357303, 3870105701, 2008414854, 3344188149, 4221384143, 3956125452, 2067696032, 3594591187, 2921233993, 2428461, 544322398, 577241275, 1471733935, 610547355, 4027169054, 1432588573, 1507829418, 2025931657, 3646575487, 545086370, 48609733, 2200306550, 1653985193, 298326376, 1316178497, 3007786442, 2064951626, 458293330, 2589141269, 3591329599, 3164325604, 727753846, 2179363840, 146436021, 1461446943, 4069977195, 705550613, 3059967265, 3887724982, 4281599278, 3313849956, 1404054877, 2845806497, 146425753, 1854211946], s1:[1266315497, 3048417604, 3681880366, 3289982499, 2909710000, 1235738493, 2632868024, 2414719590, 3970600049, 1771706367, 1449415276, 3266420449, 422970021, 1963543593, 2690192192, 3826793022, 1062508698, 1531092325, 1804592342, 2583117782, 2714934279, 4024971509, 1294809318, 4028980673, 1289560198, 2221992742, 1669523910, 35572830, 157838143, 1052438473, 1016535060, 1802137761, 1753167236, 1386275462, 3080475397, 2857371447, 1040679964, 2145300060, 2390574316, 1461121720, 2956646967, 4031777805, 4028374788, 33600511, 2920084762, 1018524850, 629373528, 3691585981, 3515945977, 2091462646, 2486323059, 586499841, 988145025, 935516892, 3367335476, 2599673255, 2839830854, 265290510, 3972581182, 2759138881, 3795373465, 1005194799, 847297441, 406762289, 1314163512, 1332590856, 1866599683, 4127851711, 750260880, 613907577, 1450815602, 3165620655, 3734664991, 3650291728, 3012275730, 3704569646, 1427272223, 778793252, 1343938022, 2676280711, 2052605720, 1946737175, 3164576444, 3914038668, 3967478842, 3682934266, 1661551462, 3294938066, 4011595847, 840292616, 3712170807, 616741398, 312560963, 711312465, 1351876610, 322626781, 1910503582, 271666773, 2175563734, 1594956187, 70604529, 3617834859, 1007753275, 1495573769, 4069517037, 2549218298, 2663038764, 504708206, 2263041392, 3941167025, 2249088522, 1514023603, 1998579484, 1312622330, 694541497, 2582060303, 2151582166, 1382467621, 776784248, 2618340202, 3323268794, 2497899128, 2784771155, 503983604, 4076293799, 907881277, 423175695, 432175456, 1378068232, 4145222326, 3954048622, 3938656102, 3820766613, 2793130115, 2977904593, 26017576, 3274890735, 3194772133, 1700274565, 1756076034, 4006520079, 3677328699, 720338349, 1533947780, 354530856, 688349552, 3973924725, 1637815568, 332179504, 3949051286, 53804574, 2852348879, 3044236432, 1282449977, 3583942155, 3416972820, 4006381244, 1617046695, 2628476075, 3002303598, 1686838959, 431878346, 2686675385, 1700445008, 1080580658, 1009431731, 832498133, 3223435511, 2605976345, 2271191193, 2516031870, 1648197032, 4164389018, 2548247927, 300782431, 375919233, 238389289, 3353747414, 2531188641, 2019080857, 1475708069, 455242339, 2609103871, 448939670, 3451063019, 1395535956, 2413381860, 1841049896, 1491858159, 885456874, 4264095073, 4001119347, 1565136089, 3898914787, 1108368660, 540939232, 1173283510, 2745871338, 3681308437, 4207628240, 3343053890, 4016749493, 1699691293, 1103962373, 3625875870, 2256883143, 3830138730, 1031889488, 3479347698, 1535977030, 4236805024, 3251091107, 2132092099, 1774941330, 1199868427, 1452454533, 157007616, 2904115357, 342012276, 595725824, 1480756522, 206960106, 497939518, 591360097, 863170706, 2375253569, 3596610801, 1814182875, 2094937945, 3421402208, 1082520231, 3463918190, 2785509508, 435703966, 3908032597, 1641649973, 2842273706, 3305899714, 1510255612, 2148256476, 2655287854, 3276092548, 4258621189, 236887753, 3681803219, 274041037, 1734335097, 3815195456, 3317970021, 1899903192, 1026095262, 4050517792, 356393447, 2410691914, 3873677099, 3682840055], s2:[3913112168, 2491498743, 4132185628, 2489919796, 1091903735, 1979897079, 3170134830, 3567386728, 3557303409, 857797738, 1136121015, 1342202287, 507115054, 2535736646, 337727348, 3213592640, 1301675037, 2528481711, 1895095763, 1721773893, 3216771564, 62756741, 2142006736, 835421444, 2531993523, 1442658625, 3659876326, 2882144922, 676362277, 1392781812, 170690266, 3921047035, 1759253602, 3611846912, 1745797284, 664899054, 1329594018, 3901205900, 3045908486, 2062866102, 2865634940, 3543621612, 3464012697, 1080764994, 553557557, 3656615353, 3996768171, 991055499, 499776247, 1265440854, 648242737, 3940784050, 980351604, 3713745714, 1749149687, 3396870395, 4211799374, 3640570775, 1161844396, 3125318951, 1431517754, 545492359, 4268468663, 3499529547, 1437099964, 2702547544, 3433638243, 2581715763, 2787789398, 1060185593, 1593081372, 2418618748, 4260947970, 69676912, 2159744348, 86519011, 2512459080, 3838209314, 1220612927, 3339683548, 133810670, 1090789135, 1078426020, 1569222167, 845107691, 3583754449, 4072456591, 1091646820, 628848692, 1613405280, 3757631651, 526609435, 236106946, 48312990, 2942717905, 3402727701, 1797494240, 859738849, 992217954, 4005476642, 2243076622, 3870952857, 3732016268, 765654824, 3490871365, 2511836413, 1685915746, 3888969200, 1414112111, 2273134842, 3281911079, 4080962846, 172450625, 2569994100, 980381355, 4109958455, 2819808352, 2716589560, 2568741196, 3681446669, 3329971472, 1835478071, 660984891, 3704678404, 4045999559, 3422617507, 3040415634, 1762651403, 1719377915, 3470491036, 2693910283, 3642056355, 3138596744, 1364962596, 2073328063, 1983633131, 926494387, 3423689081, 2150032023, 4096667949, 1749200295, 3328846651, 309677260, 2016342300, 1779581495, 3079819751, 111262694, 1274766160, 443224088, 298511866, 1025883608, 3806446537, 1145181785, 168956806, 3641502830, 3584813610, 1689216846, 3666258015, 3200248200, 1692713982, 2646376535, 4042768518, 1618508792, 1610833997, 3523052358, 4130873264, 2001055236, 3610705100, 2202168115, 4028541809, 2961195399, 1006657119, 2006996926, 3186142756, 1430667929, 3210227297, 1314452623, 4074634658, 4101304120, 2273951170, 1399257539, 3367210612, 3027628629, 1190975929, 2062231137, 2333990788, 2221543033, 2438960610, 1181637006, 548689776, 2362791313, 3372408396, 3104550113, 3145860560, 296247880, 1970579870, 3078560182, 3769228297, 1714227617, 3291629107, 3898220290, 166772364, 1251581989, 493813264, 448347421, 195405023, 2709975567, 677966185, 3703036547, 1463355134, 2715995803, 1338867538, 1343315457, 2802222074, 2684532164, 233230375, 2599980071, 2000651841, 3277868038, 1638401717, 4028070440, 3237316320, 6314154, 819756386, 300326615, 590932579, 1405279636, 3267499572, 3150704214, 2428286686, 3959192993, 3461946742, 1862657033, 1266418056, 963775037, 2089974820, 2263052895, 1917689273, 448879540, 3550394620, 3981727096, 150775221, 3627908307, 1303187396, 508620638, 2975983352, 2726630617, 1817252668, 1876281319, 1457606340, 908771278, 3720792119, 3617206836, 2455994898, 1729034894, 1080033504], s3:[976866871, 3556439503, 2881648439, 1522871579, 1555064734, 1336096578, 3548522304, 2579274686, 3574697629, 3205460757, 3593280638, 3338716283, 3079412587, 564236357, 2993598910, 1781952180, 1464380207, 3163844217, 3332601554, 1699332808, 1393555694, 1183702653, 3581086237, 1288719814, 691649499, 2847557200, 2895455976, 3193889540, 2717570544, 1781354906, 1676643554, 2592534050, 3230253752, 1126444790, 2770207658, 2633158820, 2210423226, 2615765581, 2414155088, 3127139286, 673620729, 2805611233, 1269405062, 4015350505, 3341807571, 4149409754, 1057255273, 2012875353, 2162469141, 2276492801, 2601117357, 993977747, 3918593370, 2654263191, 753973209, 36408145, 2530585658, 25011837, 3520020182, 2088578344, 530523599, 2918365339, 1524020338, 1518925132, 3760827505, 3759777254, 1202760957, 3985898139, 3906192525, 674977740, 4174734889, 2031300136, 2019492241, 3983892565, 4153806404, 3822280332, 352677332, 2297720250, 60907813, 90501309, 3286998549, 1016092578, 2535922412, 2839152426, 457141659, 509813237, 4120667899, 652014361, 1966332200, 2975202805, 55981186, 2327461051, 676427537, 3255491064, 2882294119, 3433927263, 1307055953, 942726286, 933058658, 2468411793, 3933900994, 4215176142, 1361170020, 2001714738, 2830558078, 3274259782, 1222529897, 1679025792, 2729314320, 3714953764, 1770335741, 151462246, 3013232138, 1682292957, 1483529935, 471910574, 1539241949, 458788160, 3436315007, 1807016891, 3718408830, 978976581, 1043663428, 3165965781, 1927990952, 4200891579, 2372276910, 3208408903, 3533431907, 1412390302, 2931980059, 4132332400, 1947078029, 3881505623, 4168226417, 2941484381, 1077988104, 1320477388, 886195818, 18198404, 3786409000, 2509781533, 112762804, 3463356488, 1866414978, 891333506, 18488651, 661792760, 1628790961, 3885187036, 3141171499, 876946877, 2693282273, 1372485963, 791857591, 2686433993, 3759982718, 3167212022, 3472953795, 2716379847, 445679433, 3561995674, 3504004811, 3574258232, 54117162, 3331405415, 2381918588, 3769707343, 4154350007, 1140177722, 4074052095, 668550556, 3214352940, 367459370, 261225585, 2610173221, 4209349473, 3468074219, 3265815641, 314222801, 3066103646, 3808782860, 282218597, 3406013506, 3773591054, 379116347, 1285071038, 846784868, 2669647154, 3771962079, 3550491691, 2305946142, 453669953, 1268987020, 3317592352, 3279303384, 3744833421, 2610507566, 3859509063, 266596637, 3847019092, 517658769, 3462560207, 3443424879, 370717030, 4247526661, 2224018117, 4143653529, 4112773975, 2788324899, 2477274417, 1456262402, 2901442914, 1517677493, 1846949527, 2295493580, 3734397586, 2176403920, 1280348187, 1908823572, 3871786941, 846861322, 1172426758, 3287448474, 3383383037, 1655181056, 3139813346, 901632758, 1897031941, 2986607138, 3066810236, 3447102507, 1393639104, 373351379, 950779232, 625454576, 3124240540, 4148612726, 2007998917, 544563296, 2244738638, 2330496472, 2058025392, 1291430526, 424198748, 50039436, 29584100, 3605783033, 2429876329, 2791104160, 1057563949, 3255363231, 3075367218, 3463963227, 1469046755, 985887462]}; function add(x, y) { var sum = (x + y) & 4294967295; if (sum < 0) { sum = -sum; return (65536 * ((sum >> 16) ^ 65535)) + (((sum & 65535) ^ 65535) + 1); } return sum; } function split(x) { var r = x & 4294967295; if (r < 0) { r = -r; return [((r & 65535) ^ 65535) + 1, (r >> 16) ^ 65535]; } return [r & 65535, (r >> 16)]; } function xor(x, y) { var xs = split(x); var ys = split(y); return (65536 * (xs[1] ^ ys[1])) + (xs[0] ^ ys[0]); } function $(v, box) { var d = v & 255; v >>= 8; var c = v & 255; v >>= 8; var b = v & 255; v >>= 8; var a = v & 255; var r = add(box.s0[a], box.s1[b]); r = xor(r, box.s2[c]); return add(r, box.s3[d]); } function eb(o, box) { var l = o.left; var r = o.right; l = xor(l, box.p[0]); r = xor(r, xor($(l, box), box.p[1])); l = xor(l, xor($(r, box), box.p[2])); r = xor(r, xor($(l, box), box.p[3])); l = xor(l, xor($(r, box), box.p[4])); r = xor(r, xor($(l, box), box.p[5])); l = xor(l, xor($(r, box), box.p[6])); r = xor(r, xor($(l, box), box.p[7])); l = xor(l, xor($(r, box), box.p[8])); r = xor(r, xor($(l, box), box.p[9])); l = xor(l, xor($(r, box), box.p[10])); r = xor(r, xor($(l, box), box.p[11])); l = xor(l, xor($(r, box), box.p[12])); r = xor(r, xor($(l, box), box.p[13])); l = xor(l, xor($(r, box), box.p[14])); r = xor(r, xor($(l, box), box.p[15])); l = xor(l, xor($(r, box), box.p[16])); o.right = l; o.left = xor(r, box.p[17]); } function db(o, box) { var l = o.left; var r = o.right; l = xor(l, box.p[17]); r = xor(r, xor($(l, box), box.p[16])); l = xor(l, xor($(r, box), box.p[15])); r = xor(r, xor($(l, box), box.p[14])); l = xor(l, xor($(r, box), box.p[13])); r = xor(r, xor($(l, box), box.p[12])); l = xor(l, xor($(r, box), box.p[11])); r = xor(r, xor($(l, box), box.p[10])); l = xor(l, xor($(r, box), box.p[9])); r = xor(r, xor($(l, box), box.p[8])); l = xor(l, xor($(r, box), box.p[7])); r = xor(r, xor($(l, box), box.p[6])); l = xor(l, xor($(r, box), box.p[5])); r = xor(r, xor($(l, box), box.p[4])); l = xor(l, xor($(r, box), box.p[3])); r = xor(r, xor($(l, box), box.p[2])); l = xor(l, xor($(r, box), box.p[1])); o.right = l; o.left = xor(r, box.p[0]); } function init(key) { var k = key; if (typeof (k) == "string") { var a = []; for (var i = 0; i < k.length; i++) { a.push(k.charCodeAt(i) & 255); } k = a; } var box = {p:[], s0:[], s1:[], s2:[], s3:[]}; for (var i = 0; i < boxes.p.length; i++) { box.p.push(boxes.p[i]); } for (var i = 0; i < boxes.s0.length; i++) { box.s0.push(boxes.s0[i]); } for (var i = 0; i < boxes.s1.length; i++) { box.s1.push(boxes.s1[i]); } for (var i = 0; i < boxes.s2.length; i++) { box.s2.push(boxes.s2[i]); } for (var i = 0; i < boxes.s3.length; i++) { box.s3.push(boxes.s3[i]); } var pos = 0; var data = 0; for (var i = 0; i < box.p.length; i++) { for (var j = 0; j < 4; j++) { data = (data * POW8) | k[pos]; if (++pos == k.length) { pos = 0; } } box.p[i] = xor(box.p[i], data); } var res = {left:0, right:0}; for (var i = 0; i < box.p.length; ) { eb(res, box); box.p[i++] = res.left; box.p[i++] = res.right; } for (var i = 0; i < 4; i++) { for (var j = 0; j < box["s" + i].length; ) { eb(res, box); box["s" + i][j++] = res.left; box["s" + i][j++] = res.right; } } return box; } function toBase64(ba) { var p = "="; var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var s = []; var l = ba.length; var rm = l % 3; var x = l - rm; for (var i = 0; i < x; ) { var t = ba[i++] << 16 | ba[i++] << 8 | ba[i++]; s.push(tab.charAt((t >>> 18) & 63)); s.push(tab.charAt((t >>> 12) & 63)); s.push(tab.charAt((t >>> 6) & 63)); s.push(tab.charAt(t & 63)); } switch (rm) { case 2: var t = ba[i++] << 16 | ba[i++] << 8; s.push(tab.charAt((t >>> 18) & 63)); s.push(tab.charAt((t >>> 12) & 63)); s.push(tab.charAt((t >>> 6) & 63)); s.push(p); break; case 1: var t = ba[i++] << 16; s.push(tab.charAt((t >>> 18) & 63)); s.push(tab.charAt((t >>> 12) & 63)); s.push(p); s.push(p); break; } return s.join(""); } function fromBase64(str) { var s = str.split(""); var p = "="; var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var out = []; var l = s.length; while (s[--l] == p) { } for (var i = 0; i < l; ) { var t = tab.indexOf(s[i++]) << 18 | tab.indexOf(s[i++]) << 12 | tab.indexOf(s[i++]) << 6 | tab.indexOf(s[i++]); out.push((t >>> 16) & 255); out.push((t >>> 8) & 255); out.push(t & 255); } return out; } this.getIV = function (outputType) { var out = outputType || dojo.crypto.outputTypes.Base64; switch (out) { case dojo.crypto.outputTypes.Hex: var s = []; for (var i = 0; i < iv.length; i++) { s.push((iv[i]).toString(16)); } return s.join(""); case dojo.crypto.outputTypes.String: return iv.join(""); case dojo.crypto.outputTypes.Raw: return iv; default: return toBase64(iv); } }; this.setIV = function (data, inputType) { var ip = inputType || dojo.crypto.outputTypes.Base64; var ba = null; switch (ip) { case dojo.crypto.outputTypes.String: ba = []; for (var i = 0; i < data.length; i++) { ba.push(data.charCodeAt(i)); } break; case dojo.crypto.outputTypes.Hex: ba = []; var i = 0; while (i + 1 < data.length) { ba.push(parseInt(data.substr(i, 2), 16)); i += 2; } break; case dojo.crypto.outputTypes.Raw: ba = data; break; default: ba = fromBase64(data); break; } iv = {}; iv.left = ba[0] * POW24 | ba[1] * POW16 | ba[2] * POW8 | ba[3]; iv.right = ba[4] * POW24 | ba[5] * POW16 | ba[6] * POW8 | ba[7]; }; this.encrypt = function (plaintext, key, ao) { var out = dojo.crypto.outputTypes.Base64; var mode = dojo.crypto.cipherModes.EBC; if (ao) { if (ao.outputType) { out = ao.outputType; } if (ao.cipherMode) { mode = ao.cipherMode; } } var bx = init(key); var padding = 8 - (plaintext.length & 7); for (var i = 0; i < padding; i++) { plaintext += String.fromCharCode(padding); } var cipher = []; var count = plaintext.length >> 3; var pos = 0; var o = {}; var isCBC = (mode == dojo.crypto.cipherModes.CBC); var vector = {left:iv.left || null, right:iv.right || null}; for (var i = 0; i < count; i++) { o.left = plaintext.charCodeAt(pos) * POW24 | plaintext.charCodeAt(pos + 1) * POW16 | plaintext.charCodeAt(pos + 2) * POW8 | plaintext.charCodeAt(pos + 3); o.right = plaintext.charCodeAt(pos + 4) * POW24 | plaintext.charCodeAt(pos + 5) * POW16 | plaintext.charCodeAt(pos + 6) * POW8 | plaintext.charCodeAt(pos + 7); if (isCBC) { o.left = xor(o.left, vector.left); o.right = xor(o.right, vector.right); } eb(o, bx); if (isCBC) { vector.left = o.left; vector.right = o.right; dojo.crypto.outputTypes.Hex; } cipher.push((o.left >> 24) & 255); cipher.push((o.left >> 16) & 255); cipher.push((o.left >> 8) & 255); cipher.push(o.left & 255); cipher.push((o.right >> 24) & 255); cipher.push((o.right >> 16) & 255); cipher.push((o.right >> 8) & 255); cipher.push(o.right & 255); pos += 8; } switch (out) { case dojo.crypto.outputTypes.Hex: var s = []; for (var i = 0; i < cipher.length; i++) { s.push((cipher[i]).toString(16)); } return s.join(""); case dojo.crypto.outputTypes.String: return cipher.join(""); case dojo.crypto.outputTypes.Raw: return cipher; default: return toBase64(cipher); } }; this.decrypt = function (ciphertext, key, ao) { var ip = dojo.crypto.outputTypes.Base64; var mode = dojo.crypto.cipherModes.EBC; if (ao) { if (ao.outputType) { ip = ao.outputType; } if (ao.cipherMode) { mode = ao.cipherMode; } } var bx = init(key); var pt = []; var c = null; switch (ip) { case dojo.crypto.outputTypes.Hex: c = []; var i = 0; while (i + 1 < ciphertext.length) { c.push(parseInt(ciphertext.substr(i, 2), 16)); i += 2; } break; case dojo.crypto.outputTypes.String: c = []; for (var i = 0; i < ciphertext.length; i++) { c.push(ciphertext.charCodeAt(i)); } break; case dojo.crypto.outputTypes.Raw: c = ciphertext; break; default: c = fromBase64(ciphertext); break; } var count = c.length >> 3; var pos = 0; var o = {}; var isCBC = (mode == dojo.crypto.cipherModes.CBC); var vector = {left:iv.left || null, right:iv.right || null}; for (var i = 0; i < count; i++) { o.left = c[pos] * POW24 | c[pos + 1] * POW16 | c[pos + 2] * POW8 | c[pos + 3]; o.right = c[pos + 4] * POW24 | c[pos + 5] * POW16 | c[pos + 6] * POW8 | c[pos + 7]; if (isCBC) { var left = o.left; var right = o.right; } db(o, bx); if (isCBC) { o.left = xor(o.left, vector.left); o.right = xor(o.right, vector.right); vector.left = left; vector.right = right; } pt.push((o.left >> 24) & 255); pt.push((o.left >> 16) & 255); pt.push((o.left >> 8) & 255); pt.push(o.left & 255); pt.push((o.right >> 24) & 255); pt.push((o.right >> 16) & 255); pt.push((o.right >> 8) & 255); pt.push(o.right & 255); pos += 8; } if (pt[pt.length - 1] == pt[pt.length - 2] || pt[pt.length - 1] == 1) { var n = pt[pt.length - 1]; pt.splice(pt.length - n, n); } for (var i = 0; i < pt.length; i++) { pt[i] = String.fromCharCode(pt[i]); } return pt.join(""); }; this.setIV("0000000000000000", dojo.crypto.outputTypes.Hex); }();

__CPAN_FILE__ src/crypto/Blowfish.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["require", "dojo.crypto"], ["provide", "dojo.crypto.Blowfish"]], definePackage:function (dojo) { dojo.require("dojo.crypto"); dojo.provide("dojo.crypto.Blowfish"); dojo.crypto.Blowfish = new function () { var POW2 = Math.pow(2, 2); var POW3 = Math.pow(2, 3); var POW4 = Math.pow(2, 4); var POW8 = Math.pow(2, 8); var POW16 = Math.pow(2, 16); var POW24 = Math.pow(2, 24); var iv = null; var boxes = {p:[608135816, 2242054355, 320440878, 57701188, 2752067618, 698298832, 137296536, 3964562569, 1160258022, 953160567, 3193202383, 887688300, 3232508343, 3380367581, 1065670069, 3041331479, 2450970073, 2306472731], s0:[3509652390, 2564797868, 805139163, 3491422135, 3101798381, 1780907670, 3128725573, 4046225305, 614570311, 3012652279, 134345442, 2240740374, 1667834072, 1901547113, 2757295779, 4103290238, 227898511, 1921955416, 1904987480, 2182433518, 2069144605, 3260701109, 2620446009, 720527379, 3318853667, 677414384, 3393288472, 3101374703, 2390351024, 1614419982, 1822297739, 2954791486, 3608508353, 3174124327, 2024746970, 1432378464, 3864339955, 2857741204, 1464375394, 1676153920, 1439316330, 715854006, 3033291828, 289532110, 2706671279, 2087905683, 3018724369, 1668267050, 732546397, 1947742710, 3462151702, 2609353502, 2950085171, 1814351708, 2050118529, 680887927, 999245976, 1800124847, 3300911131, 1713906067, 1641548236, 4213287313, 1216130144, 1575780402, 4018429277, 3917837745, 3693486850, 3949271944, 596196993, 3549867205, 258830323, 2213823033, 772490370, 2760122372, 1774776394, 2652871518, 566650946, 4142492826, 1728879713, 2882767088, 1783734482, 3629395816, 2517608232, 2874225571, 1861159788, 326777828, 3124490320, 2130389656, 2716951837, 967770486, 1724537150, 2185432712, 2364442137, 1164943284, 2105845187, 998989502, 3765401048, 2244026483, 1075463327, 1455516326, 1322494562, 910128902, 469688178, 1117454909, 936433444, 3490320968, 3675253459, 1240580251, 122909385, 2157517691, 634681816, 4142456567, 3825094682, 3061402683, 2540495037, 79693498, 3249098678, 1084186820, 1583128258, 426386531, 1761308591, 1047286709, 322548459, 995290223, 1845252383, 2603652396, 3431023940, 2942221577, 3202600964, 3727903485, 1712269319, 422464435, 3234572375, 1170764815, 3523960633, 3117677531, 1434042557, 442511882, 3600875718, 1076654713, 1738483198, 4213154764, 2393238008, 3677496056, 1014306527, 4251020053, 793779912, 2902807211, 842905082, 4246964064, 1395751752, 1040244610, 2656851899, 3396308128, 445077038, 3742853595, 3577915638, 679411651, 2892444358, 2354009459, 1767581616, 3150600392, 3791627101, 3102740896, 284835224, 4246832056, 1258075500, 768725851, 2589189241, 3069724005, 3532540348, 1274779536, 3789419226, 2764799539, 1660621633, 3471099624, 4011903706, 913787905, 3497959166, 737222580, 2514213453, 2928710040, 3937242737, 1804850592, 3499020752, 2949064160, 2386320175, 2390070455, 2415321851, 4061277028, 2290661394, 2416832540, 1336762016, 1754252060, 3520065937, 3014181293, 791618072, 3188594551, 3933548030, 2332172193, 3852520463, 3043980520, 413987798, 3465142937, 3030929376, 4245938359, 2093235073, 3534596313, 375366246, 2157278981, 2479649556, 555357303, 3870105701, 2008414854, 3344188149, 4221384143, 3956125452, 2067696032, 3594591187, 2921233993, 2428461, 544322398, 577241275, 1471733935, 610547355, 4027169054, 1432588573, 1507829418, 2025931657, 3646575487, 545086370, 48609733, 2200306550, 1653985193, 298326376, 1316178497, 3007786442, 2064951626, 458293330, 2589141269, 3591329599, 3164325604, 727753846, 2179363840, 146436021, 1461446943, 4069977195, 705550613, 3059967265, 3887724982, 4281599278, 3313849956, 1404054877, 2845806497, 146425753, 1854211946], s1:[1266315497, 3048417604, 3681880366, 3289982499, 2909710000, 1235738493, 2632868024, 2414719590, 3970600049, 1771706367, 1449415276, 3266420449, 422970021, 1963543593, 2690192192, 3826793022, 1062508698, 1531092325, 1804592342, 2583117782, 2714934279, 4024971509, 1294809318, 4028980673, 1289560198, 2221992742, 1669523910, 35572830, 157838143, 1052438473, 1016535060, 1802137761, 1753167236, 1386275462, 3080475397, 2857371447, 1040679964, 2145300060, 2390574316, 1461121720, 2956646967, 4031777805, 4028374788, 33600511, 2920084762, 1018524850, 629373528, 3691585981, 3515945977, 2091462646, 2486323059, 586499841, 988145025, 935516892, 3367335476, 2599673255, 2839830854, 265290510, 3972581182, 2759138881, 3795373465, 1005194799, 847297441, 406762289, 1314163512, 1332590856, 1866599683, 4127851711, 750260880, 613907577, 1450815602, 3165620655, 3734664991, 3650291728, 3012275730, 3704569646, 1427272223, 778793252, 1343938022, 2676280711, 2052605720, 1946737175, 3164576444, 3914038668, 3967478842, 3682934266, 1661551462, 3294938066, 4011595847, 840292616, 3712170807, 616741398, 312560963, 711312465, 1351876610, 322626781, 1910503582, 271666773, 2175563734, 1594956187, 70604529, 3617834859, 1007753275, 1495573769, 4069517037, 2549218298, 2663038764, 504708206, 2263041392, 3941167025, 2249088522, 1514023603, 1998579484, 1312622330, 694541497, 2582060303, 2151582166, 1382467621, 776784248, 2618340202, 3323268794, 2497899128, 2784771155, 503983604, 4076293799, 907881277, 423175695, 432175456, 1378068232, 4145222326, 3954048622, 3938656102, 3820766613, 2793130115, 2977904593, 26017576, 3274890735, 3194772133, 1700274565, 1756076034, 4006520079, 3677328699, 720338349, 1533947780, 354530856, 688349552, 3973924725, 1637815568, 332179504, 3949051286, 53804574, 2852348879, 3044236432, 1282449977, 3583942155, 3416972820, 4006381244, 1617046695, 2628476075, 3002303598, 1686838959, 431878346, 2686675385, 1700445008, 1080580658, 1009431731, 832498133, 3223435511, 2605976345, 2271191193, 2516031870, 1648197032, 4164389018, 2548247927, 300782431, 375919233, 238389289, 3353747414, 2531188641, 2019080857, 1475708069, 455242339, 2609103871, 448939670, 3451063019, 1395535956, 2413381860, 1841049896, 1491858159, 885456874, 4264095073, 4001119347, 1565136089, 3898914787, 1108368660, 540939232, 1173283510, 2745871338, 3681308437, 4207628240, 3343053890, 4016749493, 1699691293, 1103962373, 3625875870, 2256883143, 3830138730, 1031889488, 3479347698, 1535977030, 4236805024, 3251091107, 2132092099, 1774941330, 1199868427, 1452454533, 157007616, 2904115357, 342012276, 595725824, 1480756522, 206960106, 497939518, 591360097, 863170706, 2375253569, 3596610801, 1814182875, 2094937945, 3421402208, 1082520231, 3463918190, 2785509508, 435703966, 3908032597, 1641649973, 2842273706, 3305899714, 1510255612, 2148256476, 2655287854, 3276092548, 4258621189, 236887753, 3681803219, 274041037, 1734335097, 3815195456, 3317970021, 1899903192, 1026095262, 4050517792, 356393447, 2410691914, 3873677099, 3682840055], s2:[3913112168, 2491498743, 4132185628, 2489919796, 1091903735, 1979897079, 3170134830, 3567386728, 3557303409, 857797738, 1136121015, 1342202287, 507115054, 2535736646, 337727348, 3213592640, 1301675037, 2528481711, 1895095763, 1721773893, 3216771564, 62756741, 2142006736, 835421444, 2531993523, 1442658625, 3659876326, 2882144922, 676362277, 1392781812, 170690266, 3921047035, 1759253602, 3611846912, 1745797284, 664899054, 1329594018, 3901205900, 3045908486, 2062866102, 2865634940, 3543621612, 3464012697, 1080764994, 553557557, 3656615353, 3996768171, 991055499, 499776247, 1265440854, 648242737, 3940784050, 980351604, 3713745714, 1749149687, 3396870395, 4211799374, 3640570775, 1161844396, 3125318951, 1431517754, 545492359, 4268468663, 3499529547, 1437099964, 2702547544, 3433638243, 2581715763, 2787789398, 1060185593, 1593081372, 2418618748, 4260947970, 69676912, 2159744348, 86519011, 2512459080, 3838209314, 1220612927, 3339683548, 133810670, 1090789135, 1078426020, 1569222167, 845107691, 3583754449, 4072456591, 1091646820, 628848692, 1613405280, 3757631651, 526609435, 236106946, 48312990, 2942717905, 3402727701, 1797494240, 859738849, 992217954, 4005476642, 2243076622, 3870952857, 3732016268, 765654824, 3490871365, 2511836413, 1685915746, 3888969200, 1414112111, 2273134842, 3281911079, 4080962846, 172450625, 2569994100, 980381355, 4109958455, 2819808352, 2716589560, 2568741196, 3681446669, 3329971472, 1835478071, 660984891, 3704678404, 4045999559, 3422617507, 3040415634, 1762651403, 1719377915, 3470491036, 2693910283, 3642056355, 3138596744, 1364962596, 2073328063, 1983633131, 926494387, 3423689081, 2150032023, 4096667949, 1749200295, 3328846651, 309677260, 2016342300, 1779581495, 3079819751, 111262694, 1274766160, 443224088, 298511866, 1025883608, 3806446537, 1145181785, 168956806, 3641502830, 3584813610, 1689216846, 3666258015, 3200248200, 1692713982, 2646376535, 4042768518, 1618508792, 1610833997, 3523052358, 4130873264, 2001055236, 3610705100, 2202168115, 4028541809, 2961195399, 1006657119, 2006996926, 3186142756, 1430667929, 3210227297, 1314452623, 4074634658, 4101304120, 2273951170, 1399257539, 3367210612, 3027628629, 1190975929, 2062231137, 2333990788, 2221543033, 2438960610, 1181637006, 548689776, 2362791313, 3372408396, 3104550113, 3145860560, 296247880, 1970579870, 3078560182, 3769228297, 1714227617, 3291629107, 3898220290, 166772364, 1251581989, 493813264, 448347421, 195405023, 2709975567, 677966185, 3703036547, 1463355134, 2715995803, 1338867538, 1343315457, 2802222074, 2684532164, 233230375, 2599980071, 2000651841, 3277868038, 1638401717, 4028070440, 3237316320, 6314154, 819756386, 300326615, 590932579, 1405279636, 3267499572, 3150704214, 2428286686, 3959192993, 3461946742, 1862657033, 1266418056, 963775037, 2089974820, 2263052895, 1917689273, 448879540, 3550394620, 3981727096, 150775221, 3627908307, 1303187396, 508620638, 2975983352, 2726630617, 1817252668, 1876281319, 1457606340, 908771278, 3720792119, 3617206836, 2455994898, 1729034894, 1080033504], s3:[976866871, 3556439503, 2881648439, 1522871579, 1555064734, 1336096578, 3548522304, 2579274686, 3574697629, 3205460757, 3593280638, 3338716283, 3079412587, 564236357, 2993598910, 1781952180, 1464380207, 3163844217, 3332601554, 1699332808, 1393555694, 1183702653, 3581086237, 1288719814, 691649499, 2847557200, 2895455976, 3193889540, 2717570544, 1781354906, 1676643554, 2592534050, 3230253752, 1126444790, 2770207658, 2633158820, 2210423226, 2615765581, 2414155088, 3127139286, 673620729, 2805611233, 1269405062, 4015350505, 3341807571, 4149409754, 1057255273, 2012875353, 2162469141, 2276492801, 2601117357, 993977747, 3918593370, 2654263191, 753973209, 36408145, 2530585658, 25011837, 3520020182, 2088578344, 530523599, 2918365339, 1524020338, 1518925132, 3760827505, 3759777254, 1202760957, 3985898139, 3906192525, 674977740, 4174734889, 2031300136, 2019492241, 3983892565, 4153806404, 3822280332, 352677332, 2297720250, 60907813, 90501309, 3286998549, 1016092578, 2535922412, 2839152426, 457141659, 509813237, 4120667899, 652014361, 1966332200, 2975202805, 55981186, 2327461051, 676427537, 3255491064, 2882294119, 3433927263, 1307055953, 942726286, 933058658, 2468411793, 3933900994, 4215176142, 1361170020, 2001714738, 2830558078, 3274259782, 1222529897, 1679025792, 2729314320, 3714953764, 1770335741, 151462246, 3013232138, 1682292957, 1483529935, 471910574, 1539241949, 458788160, 3436315007, 1807016891, 3718408830, 978976581, 1043663428, 3165965781, 1927990952, 4200891579, 2372276910, 3208408903, 3533431907, 1412390302, 2931980059, 4132332400, 1947078029, 3881505623, 4168226417, 2941484381, 1077988104, 1320477388, 886195818, 18198404, 3786409000, 2509781533, 112762804, 3463356488, 1866414978, 891333506, 18488651, 661792760, 1628790961, 3885187036, 3141171499, 876946877, 2693282273, 1372485963, 791857591, 2686433993, 3759982718, 3167212022, 3472953795, 2716379847, 445679433, 3561995674, 3504004811, 3574258232, 54117162, 3331405415, 2381918588, 3769707343, 4154350007, 1140177722, 4074052095, 668550556, 3214352940, 367459370, 261225585, 2610173221, 4209349473, 3468074219, 3265815641, 314222801, 3066103646, 3808782860, 282218597, 3406013506, 3773591054, 379116347, 1285071038, 846784868, 2669647154, 3771962079, 3550491691, 2305946142, 453669953, 1268987020, 3317592352, 3279303384, 3744833421, 2610507566, 3859509063, 266596637, 3847019092, 517658769, 3462560207, 3443424879, 370717030, 4247526661, 2224018117, 4143653529, 4112773975, 2788324899, 2477274417, 1456262402, 2901442914, 1517677493, 1846949527, 2295493580, 3734397586, 2176403920, 1280348187, 1908823572, 3871786941, 846861322, 1172426758, 3287448474, 3383383037, 1655181056, 3139813346, 901632758, 1897031941, 2986607138, 3066810236, 3447102507, 1393639104, 373351379, 950779232, 625454576, 3124240540, 4148612726, 2007998917, 544563296, 2244738638, 2330496472, 2058025392, 1291430526, 424198748, 50039436, 29584100, 3605783033, 2429876329, 2791104160, 1057563949, 3255363231, 3075367218, 3463963227, 1469046755, 985887462]}; function add(x, y) { var sum = (x + y) & 4294967295; if (sum < 0) { sum = -sum; return (65536 * ((sum >> 16) ^ 65535)) + (((sum & 65535) ^ 65535) + 1); } return sum; } function split(x) { var r = x & 4294967295; if (r < 0) { r = -r; return [((r & 65535) ^ 65535) + 1, (r >> 16) ^ 65535]; } return [r & 65535, (r >> 16)]; } function xor(x, y) { var xs = split(x); var ys = split(y); return (65536 * (xs[1] ^ ys[1])) + (xs[0] ^ ys[0]); } function $(v, box) { var d = v & 255; v >>= 8; var c = v & 255; v >>= 8; var b = v & 255; v >>= 8; var a = v & 255; var r = add(box.s0[a], box.s1[b]); r = xor(r, box.s2[c]); return add(r, box.s3[d]); } function eb(o, box) { var l = o.left; var r = o.right; l = xor(l, box.p[0]); r = xor(r, xor($(l, box), box.p[1])); l = xor(l, xor($(r, box), box.p[2])); r = xor(r, xor($(l, box), box.p[3])); l = xor(l, xor($(r, box), box.p[4])); r = xor(r, xor($(l, box), box.p[5])); l = xor(l, xor($(r, box), box.p[6])); r = xor(r, xor($(l, box), box.p[7])); l = xor(l, xor($(r, box), box.p[8])); r = xor(r, xor($(l, box), box.p[9])); l = xor(l, xor($(r, box), box.p[10])); r = xor(r, xor($(l, box), box.p[11])); l = xor(l, xor($(r, box), box.p[12])); r = xor(r, xor($(l, box), box.p[13])); l = xor(l, xor($(r, box), box.p[14])); r = xor(r, xor($(l, box), box.p[15])); l = xor(l, xor($(r, box), box.p[16])); o.right = l; o.left = xor(r, box.p[17]); } function db(o, box) { var l = o.left; var r = o.right; l = xor(l, box.p[17]); r = xor(r, xor($(l, box), box.p[16])); l = xor(l, xor($(r, box), box.p[15])); r = xor(r, xor($(l, box), box.p[14])); l = xor(l, xor($(r, box), box.p[13])); r = xor(r, xor($(l, box), box.p[12])); l = xor(l, xor($(r, box), box.p[11])); r = xor(r, xor($(l, box), box.p[10])); l = xor(l, xor($(r, box), box.p[9])); r = xor(r, xor($(l, box), box.p[8])); l = xor(l, xor($(r, box), box.p[7])); r = xor(r, xor($(l, box), box.p[6])); l = xor(l, xor($(r, box), box.p[5])); r = xor(r, xor($(l, box), box.p[4])); l = xor(l, xor($(r, box), box.p[3])); r = xor(r, xor($(l, box), box.p[2])); l = xor(l, xor($(r, box), box.p[1])); o.right = l; o.left = xor(r, box.p[0]); } function init(key) { var k = key; if (typeof (k) == "string") { var a = []; for (var i = 0; i < k.length; i++) { a.push(k.charCodeAt(i) & 255); } k = a; } var box = {p:[], s0:[], s1:[], s2:[], s3:[]}; for (var i = 0; i < boxes.p.length; i++) { box.p.push(boxes.p[i]); } for (var i = 0; i < boxes.s0.length; i++) { box.s0.push(boxes.s0[i]); } for (var i = 0; i < boxes.s1.length; i++) { box.s1.push(boxes.s1[i]); } for (var i = 0; i < boxes.s2.length; i++) { box.s2.push(boxes.s2[i]); } for (var i = 0; i < boxes.s3.length; i++) { box.s3.push(boxes.s3[i]); } var pos = 0; var data = 0; for (var i = 0; i < box.p.length; i++) { for (var j = 0; j < 4; j++) { data = (data * POW8) | k[pos]; if (++pos == k.length) { pos = 0; } } box.p[i] = xor(box.p[i], data); } var res = {left:0, right:0}; for (var i = 0; i < box.p.length; ) { eb(res, box); box.p[i++] = res.left; box.p[i++] = res.right; } for (var i = 0; i < 4; i++) { for (var j = 0; j < box["s" + i].length; ) { eb(res, box); box["s" + i][j++] = res.left; box["s" + i][j++] = res.right; } } return box; } function toBase64(ba) { var p = "="; var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var s = []; var l = ba.length; var rm = l % 3; var x = l - rm; for (var i = 0; i < x; ) { var t = ba[i++] << 16 | ba[i++] << 8 | ba[i++]; s.push(tab.charAt((t >>> 18) & 63)); s.push(tab.charAt((t >>> 12) & 63)); s.push(tab.charAt((t >>> 6) & 63)); s.push(tab.charAt(t & 63)); } switch (rm) { case 2: var t = ba[i++] << 16 | ba[i++] << 8; s.push(tab.charAt((t >>> 18) & 63)); s.push(tab.charAt((t >>> 12) & 63)); s.push(tab.charAt((t >>> 6) & 63)); s.push(p); break; case 1: var t = ba[i++] << 16; s.push(tab.charAt((t >>> 18) & 63)); s.push(tab.charAt((t >>> 12) & 63)); s.push(p); s.push(p); break; } return s.join(""); } function fromBase64(str) { var s = str.split(""); var p = "="; var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var out = []; var l = s.length; while (s[--l] == p) { } for (var i = 0; i < l; ) { var t = tab.indexOf(s[i++]) << 18 | tab.indexOf(s[i++]) << 12 | tab.indexOf(s[i++]) << 6 | tab.indexOf(s[i++]); out.push((t >>> 16) & 255); out.push((t >>> 8) & 255); out.push(t & 255); } return out; } this.getIV = function (outputType) { var out = outputType || dojo.crypto.outputTypes.Base64; switch (out) { case dojo.crypto.outputTypes.Hex: var s = []; for (var i = 0; i < iv.length; i++) { s.push((iv[i]).toString(16)); } return s.join(""); case dojo.crypto.outputTypes.String: return iv.join(""); case dojo.crypto.outputTypes.Raw: return iv; default: return toBase64(iv); } }; this.setIV = function (data, inputType) { var ip = inputType || dojo.crypto.outputTypes.Base64; var ba = null; switch (ip) { case dojo.crypto.outputTypes.String: ba = []; for (var i = 0; i < data.length; i++) { ba.push(data.charCodeAt(i)); } break; case dojo.crypto.outputTypes.Hex: ba = []; var i = 0; while (i + 1 < data.length) { ba.push(parseInt(data.substr(i, 2), 16)); i += 2; } break; case dojo.crypto.outputTypes.Raw: ba = data; break; default: ba = fromBase64(data); break; } iv = {}; iv.left = ba[0] * POW24 | ba[1] * POW16 | ba[2] * POW8 | ba[3]; iv.right = ba[4] * POW24 | ba[5] * POW16 | ba[6] * POW8 | ba[7]; }; this.encrypt = function (plaintext, key, ao) { var out = dojo.crypto.outputTypes.Base64; var mode = dojo.crypto.cipherModes.EBC; if (ao) { if (ao.outputType) { out = ao.outputType; } if (ao.cipherMode) { mode = ao.cipherMode; } } var bx = init(key); var padding = 8 - (plaintext.length & 7); for (var i = 0; i < padding; i++) { plaintext += String.fromCharCode(padding); } var cipher = []; var count = plaintext.length >> 3; var pos = 0; var o = {}; var isCBC = (mode == dojo.crypto.cipherModes.CBC); var vector = {left:iv.left || null, right:iv.right || null}; for (var i = 0; i < count; i++) { o.left = plaintext.charCodeAt(pos) * POW24 | plaintext.charCodeAt(pos + 1) * POW16 | plaintext.charCodeAt(pos + 2) * POW8 | plaintext.charCodeAt(pos + 3); o.right = plaintext.charCodeAt(pos + 4) * POW24 | plaintext.charCodeAt(pos + 5) * POW16 | plaintext.charCodeAt(pos + 6) * POW8 | plaintext.charCodeAt(pos + 7); if (isCBC) { o.left = xor(o.left, vector.left); o.right = xor(o.right, vector.right); } eb(o, bx); if (isCBC) { vector.left = o.left; vector.right = o.right; dojo.crypto.outputTypes.Hex; } cipher.push((o.left >> 24) & 255); cipher.push((o.left >> 16) & 255); cipher.push((o.left >> 8) & 255); cipher.push(o.left & 255); cipher.push((o.right >> 24) & 255); cipher.push((o.right >> 16) & 255); cipher.push((o.right >> 8) & 255); cipher.push(o.right & 255); pos += 8; } switch (out) { case dojo.crypto.outputTypes.Hex: var s = []; for (var i = 0; i < cipher.length; i++) { s.push((cipher[i]).toString(16)); } return s.join(""); case dojo.crypto.outputTypes.String: return cipher.join(""); case dojo.crypto.outputTypes.Raw: return cipher; default: return toBase64(cipher); } }; this.decrypt = function (ciphertext, key, ao) { var ip = dojo.crypto.outputTypes.Base64; var mode = dojo.crypto.cipherModes.EBC; if (ao) { if (ao.outputType) { ip = ao.outputType; } if (ao.cipherMode) { mode = ao.cipherMode; } } var bx = init(key); var pt = []; var c = null; switch (ip) { case dojo.crypto.outputTypes.Hex: c = []; var i = 0; while (i + 1 < ciphertext.length) { c.push(parseInt(ciphertext.substr(i, 2), 16)); i += 2; } break; case dojo.crypto.outputTypes.String: c = []; for (var i = 0; i < ciphertext.length; i++) { c.push(ciphertext.charCodeAt(i)); } break; case dojo.crypto.outputTypes.Raw: c = ciphertext; break; default: c = fromBase64(ciphertext); break; } var count = c.length >> 3; var pos = 0; var o = {}; var isCBC = (mode == dojo.crypto.cipherModes.CBC); var vector = {left:iv.left || null, right:iv.right || null}; for (var i = 0; i < count; i++) { o.left = c[pos] * POW24 | c[pos + 1] * POW16 | c[pos + 2] * POW8 | c[pos + 3]; o.right = c[pos + 4] * POW24 | c[pos + 5] * POW16 | c[pos + 6] * POW8 | c[pos + 7]; if (isCBC) { var left = o.left; var right = o.right; } db(o, bx); if (isCBC) { o.left = xor(o.left, vector.left); o.right = xor(o.right, vector.right); vector.left = left; vector.right = right; } pt.push((o.left >> 24) & 255); pt.push((o.left >> 16) & 255); pt.push((o.left >> 8) & 255); pt.push(o.left & 255); pt.push((o.right >> 24) & 255); pt.push((o.right >> 16) & 255); pt.push((o.right >> 8) & 255); pt.push(o.right & 255); pos += 8; } if (pt[pt.length - 1] == pt[pt.length - 2] || pt[pt.length - 1] == 1) { var n = pt[pt.length - 1]; pt.splice(pt.length - n, n); } for (var i = 0; i < pt.length; i++) { pt[i] = String.fromCharCode(pt[i]); } return pt.join(""); }; this.setIV("0000000000000000", dojo.crypto.outputTypes.Hex); }(); }});

__CPAN_FILE__ src/crypto/__package__.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.kwCompoundRequire({common:["dojo.crypto", "dojo.crypto.MD5"]}); dojo.provide("dojo.crypto.*");

__CPAN_FILE__ src/crypto/SHA1.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["require", "dojo.crypto"], ["provide", "dojo.crypto.SHA1"], ["require", "dojo.experimental"]], definePackage:function (dojo) { dojo.require("dojo.crypto"); dojo.provide("dojo.crypto.SHA1"); dojo.require("dojo.experimental"); dojo.experimental("dojo.crypto.SHA1"); dojo.crypto.SHA1 = new function () { var chrsz = 8; var mask = (1 << chrsz) - 1; function toWord(s) { var wa = []; for (var i = 0; i < s.length * chrsz; i += chrsz) { wa[i >> 5] |= (s.charCodeAt(i / chrsz) & mask) << (i % 32); } return wa; } function toString(wa) { var s = []; for (var i = 0; i < wa.length * 32; i += chrsz) { s.push(String.fromCharCode((wa[i >> 5] >>> (i % 32)) & mask)); } return s.join(""); } function toHex(wa) { var h = "0123456789abcdef"; var s = []; for (var i = 0; i < wa.length * 4; i++) { s.push(h.charAt((wa[i >> 2] >> ((i % 4) * 8 + 4)) & 15) + h.charAt((wa[i >> 2] >> ((i % 4) * 8)) & 15)); } return s.join(""); } function toBase64(wa) { var p = "="; var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var s = []; for (var i = 0; i < wa.length * 4; i += 3) { var t = (((wa[i >> 2] >> 8 * (i % 4)) & 255) << 16) | (((wa[i + 1 >> 2] >> 8 * ((i + 1) % 4)) & 255) << 8) | ((wa[i + 2 >> 2] >> 8 * ((i + 2) % 4)) & 255); for (var j = 0; j < 4; j++) { if (i * 8 + j * 6 > wa.length * 32) { s.push(p); } else { s.push(tab.charAt((t >> 6 * (3 - j)) & 63)); } } } return s.join(""); } function add(x, y) { var l = (x & 65535) + (y & 65535); var m = (x >> 16) + (y >> 16) + (l >> 16); return (m << 16) | (l & 65535); } function r(x, n) { return (x << n) | (x >>> (32 - n)); } function f(u, v, w) { return ((u & v) | (~u & w)); } function g(u, v, w) { return ((u & v) | (u & w) | (v & w)); } function h(u, v, w) { return (u ^ v ^ w); } function fn(i, u, v, w) { if (i < 20) { return f(u, v, w); } if (i < 40) { return h(u, v, w); } if (i < 60) { return g(u, v, w); } return h(u, v, w); } function cnst(i) { if (i < 20) { return 1518500249; } if (i < 40) { return 1859775393; } if (i < 60) { return -1894007588; } return -899497514; } function core(x, len) { x[len >> 5] |= 128 << (24 - len % 32); x[((len + 64 >> 9) << 4) + 15] = len; var w = []; var a = 1732584193; var b = -271733879; var c = -1732584194; var d = 271733878; var e = -1009589776; for (var i = 0; i < x.length; i += 16) { var olda = a; var oldb = b; var oldc = c; var oldd = d; var olde = e; for (var j = 0; j < 80; j++) { if (j < 16) { w[j] = x[i + j]; } else { w[j] = r(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1); } var t = add(add(r(a, 5), fn(j, b, c, d)), add(add(e, w[j]), cnst(j))); e = d; d = c; c = r(b, 30); b = a; a = t; } a = add(a, olda); b = add(b, oldb); c = add(c, oldc); d = add(d, oldd); e = add(e, olde); } return [a, b, c, d, e]; } function hmac(data, key) { var wa = toWord(key); if (wa.length > 16) { wa = core(wa, key.length * chrsz); } var l = [], r = []; for (var i = 0; i < 16; i++) { l[i] = wa[i] ^ 909522486; r[i] = wa[i] ^ 1549556828; } var h = core(l.concat(toWord(data)), 512 + data.length * chrsz); return core(r.concat(h), 640); } this.compute = function (data, outputType) { var out = outputType || dojo.crypto.outputTypes.Base64; switch (out) { case dojo.crypto.outputTypes.Hex: return toHex(core(toWord(data), data.length * chrsz)); case dojo.crypto.outputTypes.String: return toString(core(toWord(data), data.length * chrsz)); default: return toBase64(core(toWord(data), data.length * chrsz)); } }; this.getHMAC = function (data, key, outputType) { var out = outputType || dojo.crypto.outputTypes.Base64; switch (out) { case dojo.crypto.outputTypes.Hex: return toHex(hmac(data, key)); case dojo.crypto.outputTypes.String: return toString(hmac(data, key)); default: return toBase64(hmac(data, key)); } }; }(); }});

__CPAN_FILE__ src/crypto/MD5.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["require", "dojo.crypto"], ["provide", "dojo.crypto.MD5"]], definePackage:function (dojo) { dojo.require("dojo.crypto"); dojo.provide("dojo.crypto.MD5"); dojo.crypto.MD5 = new function () { var chrsz = 8; var mask = (1 << chrsz) - 1; function toWord(s) { var wa = []; for (var i = 0; i < s.length * chrsz; i += chrsz) { wa[i >> 5] |= (s.charCodeAt(i / chrsz) & mask) << (i % 32); } return wa; } function toString(wa) { var s = []; for (var i = 0; i < wa.length * 32; i += chrsz) { s.push(String.fromCharCode((wa[i >> 5] >>> (i % 32)) & mask)); } return s.join(""); } function toHex(wa) { var h = "0123456789abcdef"; var s = []; for (var i = 0; i < wa.length * 4; i++) { s.push(h.charAt((wa[i >> 2] >> ((i % 4) * 8 + 4)) & 15) + h.charAt((wa[i >> 2] >> ((i % 4) * 8)) & 15)); } return s.join(""); } function toBase64(wa) { var p = "="; var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var s = []; for (var i = 0; i < wa.length * 4; i += 3) { var t = (((wa[i >> 2] >> 8 * (i % 4)) & 255) << 16) | (((wa[i + 1 >> 2] >> 8 * ((i + 1) % 4)) & 255) << 8) | ((wa[i + 2 >> 2] >> 8 * ((i + 2) % 4)) & 255); for (var j = 0; j < 4; j++) { if (i * 8 + j * 6 > wa.length * 32) { s.push(p); } else { s.push(tab.charAt((t >> 6 * (3 - j)) & 63)); } } } return s.join(""); } function add(x, y) { var l = (x & 65535) + (y & 65535); var m = (x >> 16) + (y >> 16) + (l >> 16); return (m << 16) | (l & 65535); } function R(n, c) { return (n << c) | (n >>> (32 - c)); } function C(q, a, b, x, s, t) { return add(R(add(add(a, q), add(x, t)), s), b); } function FF(a, b, c, d, x, s, t) { return C((b & c) | ((~b) & d), a, b, x, s, t); } function GG(a, b, c, d, x, s, t) { return C((b & d) | (c & (~d)), a, b, x, s, t); } function HH(a, b, c, d, x, s, t) { return C(b ^ c ^ d, a, b, x, s, t); } function II(a, b, c, d, x, s, t) { return C(c ^ (b | (~d)), a, b, x, s, t); } function core(x, len) { x[len >> 5] |= 128 << ((len) % 32); x[(((len + 64) >>> 9) << 4) + 14] = len; var a = 1732584193; var b = -271733879; var c = -1732584194; var d = 271733878; for (var i = 0; i < x.length; i += 16) { var olda = a; var oldb = b; var oldc = c; var oldd = d; a = FF(a, b, c, d, x[i + 0], 7, -680876936); d = FF(d, a, b, c, x[i + 1], 12, -389564586); c = FF(c, d, a, b, x[i + 2], 17, 606105819); b = FF(b, c, d, a, x[i + 3], 22, -1044525330); a = FF(a, b, c, d, x[i + 4], 7, -176418897); d = FF(d, a, b, c, x[i + 5], 12, 1200080426); c = FF(c, d, a, b, x[i + 6], 17, -1473231341); b = FF(b, c, d, a, x[i + 7], 22, -45705983); a = FF(a, b, c, d, x[i + 8], 7, 1770035416); d = FF(d, a, b, c, x[i + 9], 12, -1958414417); c = FF(c, d, a, b, x[i + 10], 17, -42063); b = FF(b, c, d, a, x[i + 11], 22, -1990404162); a = FF(a, b, c, d, x[i + 12], 7, 1804603682); d = FF(d, a, b, c, x[i + 13], 12, -40341101); c = FF(c, d, a, b, x[i + 14], 17, -1502002290); b = FF(b, c, d, a, x[i + 15], 22, 1236535329); a = GG(a, b, c, d, x[i + 1], 5, -165796510); d = GG(d, a, b, c, x[i + 6], 9, -1069501632); c = GG(c, d, a, b, x[i + 11], 14, 643717713); b = GG(b, c, d, a, x[i + 0], 20, -373897302); a = GG(a, b, c, d, x[i + 5], 5, -701558691); d = GG(d, a, b, c, x[i + 10], 9, 38016083); c = GG(c, d, a, b, x[i + 15], 14, -660478335); b = GG(b, c, d, a, x[i + 4], 20, -405537848); a = GG(a, b, c, d, x[i + 9], 5, 568446438); d = GG(d, a, b, c, x[i + 14], 9, -1019803690); c = GG(c, d, a, b, x[i + 3], 14, -187363961); b = GG(b, c, d, a, x[i + 8], 20, 1163531501); a = GG(a, b, c, d, x[i + 13], 5, -1444681467); d = GG(d, a, b, c, x[i + 2], 9, -51403784); c = GG(c, d, a, b, x[i + 7], 14, 1735328473); b = GG(b, c, d, a, x[i + 12], 20, -1926607734); a = HH(a, b, c, d, x[i + 5], 4, -378558); d = HH(d, a, b, c, x[i + 8], 11, -2022574463); c = HH(c, d, a, b, x[i + 11], 16, 1839030562); b = HH(b, c, d, a, x[i + 14], 23, -35309556); a = HH(a, b, c, d, x[i + 1], 4, -1530992060); d = HH(d, a, b, c, x[i + 4], 11, 1272893353); c = HH(c, d, a, b, x[i + 7], 16, -155497632); b = HH(b, c, d, a, x[i + 10], 23, -1094730640); a = HH(a, b, c, d, x[i + 13], 4, 681279174); d = HH(d, a, b, c, x[i + 0], 11, -358537222); c = HH(c, d, a, b, x[i + 3], 16, -722521979); b = HH(b, c, d, a, x[i + 6], 23, 76029189); a = HH(a, b, c, d, x[i + 9], 4, -640364487); d = HH(d, a, b, c, x[i + 12], 11, -421815835); c = HH(c, d, a, b, x[i + 15], 16, 530742520); b = HH(b, c, d, a, x[i + 2], 23, -995338651); a = II(a, b, c, d, x[i + 0], 6, -198630844); d = II(d, a, b, c, x[i + 7], 10, 1126891415); c = II(c, d, a, b, x[i + 14], 15, -1416354905); b = II(b, c, d, a, x[i + 5], 21, -57434055); a = II(a, b, c, d, x[i + 12], 6, 1700485571); d = II(d, a, b, c, x[i + 3], 10, -1894986606); c = II(c, d, a, b, x[i + 10], 15, -1051523); b = II(b, c, d, a, x[i + 1], 21, -2054922799); a = II(a, b, c, d, x[i + 8], 6, 1873313359); d = II(d, a, b, c, x[i + 15], 10, -30611744); c = II(c, d, a, b, x[i + 6], 15, -1560198380); b = II(b, c, d, a, x[i + 13], 21, 1309151649); a = II(a, b, c, d, x[i + 4], 6, -145523070); d = II(d, a, b, c, x[i + 11], 10, -1120210379); c = II(c, d, a, b, x[i + 2], 15, 718787259); b = II(b, c, d, a, x[i + 9], 21, -343485551); a = add(a, olda); b = add(b, oldb); c = add(c, oldc); d = add(d, oldd); } return [a, b, c, d]; } function hmac(data, key) { var wa = toWord(key); if (wa.length > 16) { wa = core(wa, key.length * chrsz); } var l = [], r = []; for (var i = 0; i < 16; i++) { l[i] = wa[i] ^ 909522486; r[i] = wa[i] ^ 1549556828; } var h = core(l.concat(toWord(data)), 512 + data.length * chrsz); return core(r.concat(h), 640); } this.compute = function (data, outputType) { var out = outputType || dojo.crypto.outputTypes.Base64; switch (out) { case dojo.crypto.outputTypes.Hex: return toHex(core(toWord(data), data.length * chrsz)); case dojo.crypto.outputTypes.String: return toString(core(toWord(data), data.length * chrsz)); default: return toBase64(core(toWord(data), data.length * chrsz)); } }; this.getHMAC = function (data, key, outputType) { var out = outputType || dojo.crypto.outputTypes.Base64; switch (out) { case dojo.crypto.outputTypes.Hex: return toHex(hmac(data, key)); case dojo.crypto.outputTypes.String: return toString(hmac(data, key)); default: return toBase64(hmac(data, key)); } }; }(); }});

__CPAN_FILE__ src/crypto/__package__.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["kwCompoundRequire", {common:["dojo.crypto", "dojo.crypto.MD5"]}], ["provide", "dojo.crypto.*"]], definePackage:function (dojo) { dojo.kwCompoundRequire({common:["dojo.crypto", "dojo.crypto.MD5"]}); dojo.provide("dojo.crypto.*"); }});

__CPAN_FILE__ src/crypto/SHA1.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.require("dojo.crypto"); dojo.provide("dojo.crypto.SHA1"); dojo.require("dojo.experimental"); dojo.experimental("dojo.crypto.SHA1"); dojo.crypto.SHA1 = new function () { var chrsz = 8; var mask = (1 << chrsz) - 1; function toWord(s) { var wa = []; for (var i = 0; i < s.length * chrsz; i += chrsz) { wa[i >> 5] |= (s.charCodeAt(i / chrsz) & mask) << (i % 32); } return wa; } function toString(wa) { var s = []; for (var i = 0; i < wa.length * 32; i += chrsz) { s.push(String.fromCharCode((wa[i >> 5] >>> (i % 32)) & mask)); } return s.join(""); } function toHex(wa) { var h = "0123456789abcdef"; var s = []; for (var i = 0; i < wa.length * 4; i++) { s.push(h.charAt((wa[i >> 2] >> ((i % 4) * 8 + 4)) & 15) + h.charAt((wa[i >> 2] >> ((i % 4) * 8)) & 15)); } return s.join(""); } function toBase64(wa) { var p = "="; var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var s = []; for (var i = 0; i < wa.length * 4; i += 3) { var t = (((wa[i >> 2] >> 8 * (i % 4)) & 255) << 16) | (((wa[i + 1 >> 2] >> 8 * ((i + 1) % 4)) & 255) << 8) | ((wa[i + 2 >> 2] >> 8 * ((i + 2) % 4)) & 255); for (var j = 0; j < 4; j++) { if (i * 8 + j * 6 > wa.length * 32) { s.push(p); } else { s.push(tab.charAt((t >> 6 * (3 - j)) & 63)); } } } return s.join(""); } function add(x, y) { var l = (x & 65535) + (y & 65535); var m = (x >> 16) + (y >> 16) + (l >> 16); return (m << 16) | (l & 65535); } function r(x, n) { return (x << n) | (x >>> (32 - n)); } function f(u, v, w) { return ((u & v) | (~u & w)); } function g(u, v, w) { return ((u & v) | (u & w) | (v & w)); } function h(u, v, w) { return (u ^ v ^ w); } function fn(i, u, v, w) { if (i < 20) { return f(u, v, w); } if (i < 40) { return h(u, v, w); } if (i < 60) { return g(u, v, w); } return h(u, v, w); } function cnst(i) { if (i < 20) { return 1518500249; } if (i < 40) { return 1859775393; } if (i < 60) { return -1894007588; } return -899497514; } function core(x, len) { x[len >> 5] |= 128 << (24 - len % 32); x[((len + 64 >> 9) << 4) + 15] = len; var w = []; var a = 1732584193; var b = -271733879; var c = -1732584194; var d = 271733878; var e = -1009589776; for (var i = 0; i < x.length; i += 16) { var olda = a; var oldb = b; var oldc = c; var oldd = d; var olde = e; for (var j = 0; j < 80; j++) { if (j < 16) { w[j] = x[i + j]; } else { w[j] = r(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1); } var t = add(add(r(a, 5), fn(j, b, c, d)), add(add(e, w[j]), cnst(j))); e = d; d = c; c = r(b, 30); b = a; a = t; } a = add(a, olda); b = add(b, oldb); c = add(c, oldc); d = add(d, oldd); e = add(e, olde); } return [a, b, c, d, e]; } function hmac(data, key) { var wa = toWord(key); if (wa.length > 16) { wa = core(wa, key.length * chrsz); } var l = [], r = []; for (var i = 0; i < 16; i++) { l[i] = wa[i] ^ 909522486; r[i] = wa[i] ^ 1549556828; } var h = core(l.concat(toWord(data)), 512 + data.length * chrsz); return core(r.concat(h), 640); } this.compute = function (data, outputType) { var out = outputType || dojo.crypto.outputTypes.Base64; switch (out) { case dojo.crypto.outputTypes.Hex: return toHex(core(toWord(data), data.length * chrsz)); case dojo.crypto.outputTypes.String: return toString(core(toWord(data), data.length * chrsz)); default: return toBase64(core(toWord(data), data.length * chrsz)); } }; this.getHMAC = function (data, key, outputType) { var out = outputType || dojo.crypto.outputTypes.Base64; switch (out) { case dojo.crypto.outputTypes.Hex: return toHex(hmac(data, key)); case dojo.crypto.outputTypes.String: return toString(hmac(data, key)); default: return toBase64(hmac(data, key)); } }; }();

__CPAN_DIR__ src/cal __CPAN_FILE__ src/cal/textDirectory.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.cal.textDirectory"], ["require", "dojo.string"]], definePackage:function (dojo) { dojo.provide("dojo.cal.textDirectory"); dojo.require("dojo.string"); dojo.cal.textDirectory.Property = function (line) { var left = dojo.string.trim(line.substring(0, line.indexOf(":"))); var right = dojo.string.trim(line.substr(line.indexOf(":") + 1)); var parameters = dojo.string.splitEscaped(left, ";"); this.name = parameters[0]; parameters.splice(0, 1); this.params = []; var arr; for (var i = 0; i < parameters.length; i++) { arr = parameters[i].split("="); var key = dojo.string.trim(arr[0].toUpperCase()); if (arr.length == 1) { this.params.push([key]); continue; } var values = dojo.string.splitEscaped(arr[1], ","); for (var j = 0; j < values.length; j++) { if (dojo.string.trim(values[j]) != "") { this.params.push([key, dojo.string.trim(values[j])]); } } } if (this.name.indexOf(".") > 0) { arr = this.name.split("."); this.group = arr[0]; this.name = arr[1]; } this.value = right; }; dojo.cal.textDirectory.tokenise = function (text) { var nText = dojo.string.normalizeNewlines(text, "\n").replace(/\n[ \t]/g, "").replace(/\x00/g, ""); var lines = nText.split("\n"); var properties = []; for (var i = 0; i < lines.length; i++) { if (dojo.string.trim(lines[i]) == "") { continue; } var prop = new dojo.cal.textDirectory.Property(lines[i]); properties.push(prop); } return properties; }; }});

__CPAN_FILE__ src/cal/textDirectory.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.cal.textDirectory"); dojo.require("dojo.string"); dojo.cal.textDirectory.Property = function (line) { var left = dojo.string.trim(line.substring(0, line.indexOf(":"))); var right = dojo.string.trim(line.substr(line.indexOf(":") + 1)); var parameters = dojo.string.splitEscaped(left, ";"); this.name = parameters[0]; parameters.splice(0, 1); this.params = []; var arr; for (var i = 0; i < parameters.length; i++) { arr = parameters[i].split("="); var key = dojo.string.trim(arr[0].toUpperCase()); if (arr.length == 1) { this.params.push([key]); continue; } var values = dojo.string.splitEscaped(arr[1], ","); for (var j = 0; j < values.length; j++) { if (dojo.string.trim(values[j]) != "") { this.params.push([key, dojo.string.trim(values[j])]); } } } if (this.name.indexOf(".") > 0) { arr = this.name.split("."); this.group = arr[0]; this.name = arr[1]; } this.value = right; }; dojo.cal.textDirectory.tokenise = function (text) { var nText = dojo.string.normalizeNewlines(text, "\n").replace(/\n[ \t]/g, "").replace(/\x00/g, ""); var lines = nText.split("\n"); var properties = []; for (var i = 0; i < lines.length; i++) { if (dojo.string.trim(lines[i]) == "") { continue; } var prop = new dojo.cal.textDirectory.Property(lines[i]); properties.push(prop); } return properties; };

__CPAN_FILE__ src/cal/iCalendar.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.cal.iCalendar"], ["require", "dojo.lang.common"], ["require", "dojo.cal.textDirectory"], ["require", "dojo.date.common"], ["require", "dojo.date.serialize"]], definePackage:function (dojo) { dojo.provide("dojo.cal.iCalendar"); dojo.require("dojo.lang.common"); dojo.require("dojo.cal.textDirectory"); dojo.require("dojo.date.common"); dojo.require("dojo.date.serialize"); dojo.cal.iCalendar.fromText = function (text) { var properties = dojo.cal.textDirectory.tokenise(text); var calendars = []; for (var i = 0, begun = false; i < properties.length; i++) { var prop = properties[i]; if (!begun) { if (prop.name == "BEGIN" && prop.value == "VCALENDAR") { begun = true; var calbody = []; } } else { if (prop.name == "END" && prop.value == "VCALENDAR") { calendars.push(new dojo.cal.iCalendar.VCalendar(calbody)); begun = false; } else { calbody.push(prop); } } } return calendars; }; dojo.cal.iCalendar.Component = function (body) { if (!this.name) { this.name = "COMPONENT"; } this.properties = []; this.components = []; if (body) { for (var i = 0, context = ""; i < body.length; i++) { if (context == "") { if (body[i].name == "BEGIN") { context = body[i].value; var childprops = []; } else { this.addProperty(new dojo.cal.iCalendar.Property(body[i])); } } else { if (body[i].name == "END" && body[i].value == context) { if (context == "VEVENT") { this.addComponent(new dojo.cal.iCalendar.VEvent(childprops)); } else { if (context == "VTIMEZONE") { this.addComponent(new dojo.cal.iCalendar.VTimeZone(childprops)); } else { if (context == "VTODO") { this.addComponent(new dojo.cal.iCalendar.VTodo(childprops)); } else { if (context == "VJOURNAL") { this.addComponent(new dojo.cal.iCalendar.VJournal(childprops)); } else { if (context == "VFREEBUSY") { this.addComponent(new dojo.cal.iCalendar.VFreeBusy(childprops)); } else { if (context == "STANDARD") { this.addComponent(new dojo.cal.iCalendar.Standard(childprops)); } else { if (context == "DAYLIGHT") { this.addComponent(new dojo.cal.iCalendar.Daylight(childprops)); } else { if (context == "VALARM") { this.addComponent(new dojo.cal.iCalendar.VAlarm(childprops)); } else { dojo.unimplemented("dojo.cal.iCalendar." + context); } } } } } } } } context = ""; } else { childprops.push(body[i]); } } } if (this._ValidProperties) { this.postCreate(); } } }; dojo.extend(dojo.cal.iCalendar.Component, {addProperty:function (prop) { this.properties.push(prop); this[prop.name.toLowerCase()] = prop; }, addComponent:function (prop) { this.components.push(prop); }, postCreate:function () { for (var x = 0; x < this._ValidProperties.length; x++) { var evtProperty = this._ValidProperties[x]; var found = false; for (var y = 0; y < this.properties.length; y++) { var prop = this.properties[y]; var propName = prop.name.toLowerCase(); if (dojo.lang.isArray(evtProperty)) { var alreadySet = false; for (var z = 0; z < evtProperty.length; z++) { var evtPropertyName = evtProperty[z].name.toLowerCase(); if ((this[evtPropertyName]) && (evtPropertyName != propName)) { alreadySet = true; } } if (!alreadySet) { this[propName] = prop; } } else { if (propName == evtProperty.name.toLowerCase()) { found = true; if (evtProperty.occurance == 1) { this[propName] = prop; } else { found = true; if (!dojo.lang.isArray(this[propName])) { this[propName] = []; } this[propName].push(prop); } } } } if (evtProperty.required && !found) { dojo.debug("iCalendar - " + this.name + ": Required Property not found: " + evtProperty.name); } } if (dojo.lang.isArray(this.rrule)) { for (var x = 0; x < this.rrule.length; x++) { var rule = this.rrule[x].value; this.rrule[x].cache = function () { }; var temp = rule.split(";"); for (var y = 0; y < temp.length; y++) { var pair = temp[y].split("="); var key = pair[0].toLowerCase(); var val = pair[1]; if ((key == "freq") || (key == "interval") || (key == "until")) { this.rrule[x][key] = val; } else { var valArray = val.split(","); this.rrule[x][key] = valArray; } } } this.recurring = true; } }, toString:function () { return "[iCalendar.Component; " + this.name + ", " + this.properties.length + " properties, " + this.components.length + " components]"; }}); dojo.cal.iCalendar.Property = function (prop) { this.name = prop.name; this.group = prop.group; this.params = prop.params; this.value = prop.value; }; dojo.extend(dojo.cal.iCalendar.Property, {toString:function () { return "[iCalenday.Property; " + this.name + ": " + this.value + "]"; }}); var _P = function (n, oc, req) { return {name:n, required:(req) ? true : false, occurance:(oc == "*" || !oc) ? -1 : oc}; }; dojo.cal.iCalendar.VCalendar = function (calbody) { this.name = "VCALENDAR"; this.recurring = []; this.nonRecurringEvents = function () { }; dojo.cal.iCalendar.Component.call(this, calbody); }; dojo.inherits(dojo.cal.iCalendar.VCalendar, dojo.cal.iCalendar.Component); dojo.extend(dojo.cal.iCalendar.VCalendar, {addComponent:function (prop) { this.components.push(prop); if (prop.name.toLowerCase() == "vevent") { if (prop.rrule) { this.recurring.push(prop); } else { var startDate = prop.getDate(); var month = startDate.getMonth() + 1; var dateString = month + "-" + startDate.getDate() + "-" + startDate.getFullYear(); if (!dojo.lang.isArray(this[dateString])) { this.nonRecurringEvents[dateString] = []; } this.nonRecurringEvents[dateString].push(prop); } } }, preComputeRecurringEvents:function (until) { var calculatedEvents = function () { }; for (var x = 0; x < this.recurring.length; x++) { var dates = this.recurring[x].getDates(until); for (var y = 0; y < dates.length; y++) { var month = dates[y].getMonth() + 1; var dateStr = month + "-" + dates[y].getDate() + "-" + dates[y].getFullYear(); if (!dojo.lang.isArray(calculatedEvents[dateStr])) { calculatedEvents[dateStr] = []; } if (!dojo.lang.inArray(calculatedEvents[dateStr], this.recurring[x])) { calculatedEvents[dateStr].push(this.recurring[x]); } } } this.recurringEvents = calculatedEvents; }, getEvents:function (date) { var events = []; var recur = []; var nonRecur = []; var month = date.getMonth() + 1; var dateStr = month + "-" + date.getDate() + "-" + date.getFullYear(); if (dojo.lang.isArray(this.nonRecurringEvents[dateStr])) { nonRecur = this.nonRecurringEvents[dateStr]; dojo.debug("Number of nonRecurring Events: " + nonRecur.length); } if (dojo.lang.isArray(this.recurringEvents[dateStr])) { recur = this.recurringEvents[dateStr]; } events = recur.concat(nonRecur); if (events.length > 0) { return events; } return null; }}); var StandardProperties = [_P("dtstart", 1, true), _P("tzoffsetto", 1, true), _P("tzoffsetfrom", 1, true), _P("comment"), _P("rdate"), _P("rrule"), _P("tzname")]; dojo.cal.iCalendar.Standard = function (body) { this.name = "STANDARD"; this._ValidProperties = StandardProperties; dojo.cal.iCalendar.Component.call(this, body); }; dojo.inherits(dojo.cal.iCalendar.Standard, dojo.cal.iCalendar.Component); var DaylightProperties = [_P("dtstart", 1, true), _P("tzoffsetto", 1, true), _P("tzoffsetfrom", 1, true), _P("comment"), _P("rdate"), _P("rrule"), _P("tzname")]; dojo.cal.iCalendar.Daylight = function (body) { this.name = "DAYLIGHT"; this._ValidProperties = DaylightProperties; dojo.cal.iCalendar.Component.call(this, body); }; dojo.inherits(dojo.cal.iCalendar.Daylight, dojo.cal.iCalendar.Component); var VEventProperties = [_P("class", 1), _P("created", 1), _P("description", 1), _P("dtstart", 1), _P("geo", 1), _P("last-mod", 1), _P("location", 1), _P("organizer", 1), _P("priority", 1), _P("dtstamp", 1), _P("seq", 1), _P("status", 1), _P("summary", 1), _P("transp", 1), _P("uid", 1), _P("url", 1), _P("recurid", 1), [_P("dtend", 1), _P("duration", 1)], _P("attach"), _P("attendee"), _P("categories"), _P("comment"), _P("contact"), _P("exdate"), _P("exrule"), _P("rstatus"), _P("related"), _P("resources"), _P("rdate"), _P("rrule")]; dojo.cal.iCalendar.VEvent = function (body) { this._ValidProperties = VEventProperties; this.name = "VEVENT"; dojo.cal.iCalendar.Component.call(this, body); this.recurring = false; this.startDate = dojo.date.fromIso8601(this.dtstart.value); }; dojo.inherits(dojo.cal.iCalendar.VEvent, dojo.cal.iCalendar.Component); dojo.extend(dojo.cal.iCalendar.VEvent, {getDates:function (until) { var dtstart = this.getDate(); var recurranceSet = []; var weekdays = ["su", "mo", "tu", "we", "th", "fr", "sa"]; var order = {"daily":1, "weekly":2, "monthly":3, "yearly":4, "byday":1, "bymonthday":1, "byweekno":2, "bymonth":3, "byyearday":4}; for (var x = 0; x < this.rrule.length; x++) { var rrule = this.rrule[x]; var freq = rrule.freq.toLowerCase(); var interval = 1; if (rrule.interval > interval) { interval = rrule.interval; } var set = []; var freqInt = order[freq]; if (rrule.until) { var tmpUntil = dojo.date.fromIso8601(rrule.until); } else { var tmpUntil = until; } if (tmpUntil > until) { tmpUntil = until; } if (dtstart < tmpUntil) { var expandingRules = function () { }; var cullingRules = function () { }; expandingRules.length = 0; cullingRules.length = 0; switch (freq) { case "yearly": var nextDate = new Date(dtstart); set.push(nextDate); while (nextDate < tmpUntil) { nextDate.setYear(nextDate.getFullYear() + interval); tmpDate = new Date(nextDate); if (tmpDate < tmpUntil) { set.push(tmpDate); } } break; case "monthly": nextDate = new Date(dtstart); set.push(nextDate); while (nextDate < tmpUntil) { nextDate.setMonth(nextDate.getMonth() + interval); var tmpDate = new Date(nextDate); if (tmpDate < tmpUntil) { set.push(tmpDate); } } break; case "weekly": nextDate = new Date(dtstart); set.push(nextDate); while (nextDate < tmpUntil) { nextDate.setDate(nextDate.getDate() + (7 * interval)); var tmpDate = new Date(nextDate); if (tmpDate < tmpUntil) { set.push(tmpDate); } } break; case "daily": nextDate = new Date(dtstart); set.push(nextDate); while (nextDate < tmpUntil) { nextDate.setDate(nextDate.getDate() + interval); var tmpDate = new Date(nextDate); if (tmpDate < tmpUntil) { set.push(tmpDate); } } break; } if ((rrule["bymonth"]) && (order["bymonth"] < freqInt)) { for (var z = 0; z < rrule["bymonth"].length; z++) { if (z == 0) { for (var zz = 0; zz < set.length; zz++) { set[zz].setMonth(rrule["bymonth"][z] - 1); } } else { var subset = []; for (var zz = 0; zz < set.length; zz++) { var newDate = new Date(set[zz]); newDate.setMonth(rrule[z]); subset.push(newDate); } tmp = set.concat(subset); set = tmp; } } } if (rrule["byweekno"] && !rrule["bymonth"]) { dojo.debug("TODO: no support for byweekno yet"); } if (rrule["byyearday"] && !rrule["bymonth"] && !rrule["byweekno"]) { if (rrule["byyearday"].length > 1) { var regex = "([+-]?)([0-9]{1,3})"; for (var z = 1; x < rrule["byyearday"].length; z++) { var regexResult = rrule["byyearday"][z].match(regex); if (z == 1) { for (var zz = 0; zz < set.length; zz++) { if (regexResult[1] == "-") { dojo.date.setDayOfYear(set[zz], 366 - regexResult[2]); } else { dojo.date.setDayOfYear(set[zz], regexResult[2]); } } } else { var subset = []; for (var zz = 0; zz < set.length; zz++) { var newDate = new Date(set[zz]); if (regexResult[1] == "-") { dojo.date.setDayOfYear(newDate, 366 - regexResult[2]); } else { dojo.date.setDayOfYear(newDate, regexResult[2]); } subset.push(newDate); } tmp = set.concat(subset); set = tmp; } } } } if (rrule["bymonthday"] && (order["bymonthday"] < freqInt)) { if (rrule["bymonthday"].length > 0) { var regex = "([+-]?)([0-9]{1,3})"; for (var z = 0; z < rrule["bymonthday"].length; z++) { var regexResult = rrule["bymonthday"][z].match(regex); if (z == 0) { for (var zz = 0; zz < set.length; zz++) { if (regexResult[1] == "-") { if (regexResult[2] < dojo.date.getDaysInMonth(set[zz])) { set[zz].setDate(dojo.date.getDaysInMonth(set[zz]) - regexResult[2]); } } else { if (regexResult[2] < dojo.date.getDaysInMonth(set[zz])) { set[zz].setDate(regexResult[2]); } } } } else { var subset = []; for (var zz = 0; zz < set.length; zz++) { var newDate = new Date(set[zz]); if (regexResult[1] == "-") { if (regexResult[2] < dojo.date.getDaysInMonth(set[zz])) { newDate.setDate(dojo.date.getDaysInMonth(set[zz]) - regexResult[2]); } } else { if (regexResult[2] < dojo.date.getDaysInMonth(set[zz])) { newDate.setDate(regexResult[2]); } } subset.push(newDate); } tmp = set.concat(subset); set = tmp; } } } } if (rrule["byday"] && (order["byday"] < freqInt)) { if (rrule["bymonth"]) { if (rrule["byday"].length > 0) { var regex = "([+-]?)([0-9]{0,1}?)([A-Za-z]{1,2})"; for (var z = 0; z < rrule["byday"].length; z++) { var regexResult = rrule["byday"][z].match(regex); var occurance = regexResult[2]; var day = regexResult[3].toLowerCase(); if (z == 0) { for (var zz = 0; zz < set.length; zz++) { if (regexResult[1] == "-") { var numDaysFound = 0; var lastDayOfMonth = dojo.date.getDaysInMonth(set[zz]); var daysToSubtract = 1; set[zz].setDate(lastDayOfMonth); if (weekdays[set[zz].getDay()] == day) { numDaysFound++; daysToSubtract = 7; } daysToSubtract = 1; while (numDaysFound < occurance) { set[zz].setDate(set[zz].getDate() - daysToSubtract); if (weekdays[set[zz].getDay()] == day) { numDaysFound++; daysToSubtract = 7; } } } else { if (occurance) { var numDaysFound = 0; set[zz].setDate(1); var daysToAdd = 1; if (weekdays[set[zz].getDay()] == day) { numDaysFound++; daysToAdd = 7; } while (numDaysFound < occurance) { set[zz].setDate(set[zz].getDate() + daysToAdd); if (weekdays[set[zz].getDay()] == day) { numDaysFound++; daysToAdd = 7; } } } else { var numDaysFound = 0; var subset = []; lastDayOfMonth = new Date(set[zz]); var daysInMonth = dojo.date.getDaysInMonth(set[zz]); lastDayOfMonth.setDate(daysInMonth); set[zz].setDate(1); if (weekdays[set[zz].getDay()] == day) { numDaysFound++; } var tmpDate = new Date(set[zz]); daysToAdd = 1; while (tmpDate.getDate() < lastDayOfMonth) { if (weekdays[tmpDate.getDay()] == day) { numDaysFound++; if (numDaysFound == 1) { set[zz] = tmpDate; } else { subset.push(tmpDate); tmpDate = new Date(tmpDate); daysToAdd = 7; tmpDate.setDate(tmpDate.getDate() + daysToAdd); } } else { tmpDate.setDate(tmpDate.getDate() + daysToAdd); } } var t = set.concat(subset); set = t; } } } } else { var subset = []; for (var zz = 0; zz < set.length; zz++) { var newDate = new Date(set[zz]); if (regexResult[1] == "-") { if (regexResult[2] < dojo.date.getDaysInMonth(set[zz])) { newDate.setDate(dojo.date.getDaysInMonth(set[zz]) - regexResult[2]); } } else { if (regexResult[2] < dojo.date.getDaysInMonth(set[zz])) { newDate.setDate(regexResult[2]); } } subset.push(newDate); } tmp = set.concat(subset); set = tmp; } } } } else { dojo.debug("TODO: byday within a yearly rule without a bymonth"); } } dojo.debug("TODO: Process BYrules for units larger than frequency"); var tmp = recurranceSet.concat(set); recurranceSet = tmp; } } recurranceSet.push(dtstart); return recurranceSet; }, getDate:function () { return dojo.date.fromIso8601(this.dtstart.value); }}); var VTimeZoneProperties = [_P("tzid", 1, true), _P("last-mod", 1), _P("tzurl", 1)]; dojo.cal.iCalendar.VTimeZone = function (body) { this.name = "VTIMEZONE"; this._ValidProperties = VTimeZoneProperties; dojo.cal.iCalendar.Component.call(this, body); }; dojo.inherits(dojo.cal.iCalendar.VTimeZone, dojo.cal.iCalendar.Component); var VTodoProperties = [_P("class", 1), _P("completed", 1), _P("created", 1), _P("description", 1), _P("dtstart", 1), _P("geo", 1), _P("last-mod", 1), _P("location", 1), _P("organizer", 1), _P("percent", 1), _P("priority", 1), _P("dtstamp", 1), _P("seq", 1), _P("status", 1), _P("summary", 1), _P("uid", 1), _P("url", 1), _P("recurid", 1), [_P("due", 1), _P("duration", 1)], _P("attach"), _P("attendee"), _P("categories"), _P("comment"), _P("contact"), _P("exdate"), _P("exrule"), _P("rstatus"), _P("related"), _P("resources"), _P("rdate"), _P("rrule")]; dojo.cal.iCalendar.VTodo = function (body) { this.name = "VTODO"; this._ValidProperties = VTodoProperties; dojo.cal.iCalendar.Component.call(this, body); }; dojo.inherits(dojo.cal.iCalendar.VTodo, dojo.cal.iCalendar.Component); var VJournalProperties = [_P("class", 1), _P("created", 1), _P("description", 1), _P("dtstart", 1), _P("last-mod", 1), _P("organizer", 1), _P("dtstamp", 1), _P("seq", 1), _P("status", 1), _P("summary", 1), _P("uid", 1), _P("url", 1), _P("recurid", 1), _P("attach"), _P("attendee"), _P("categories"), _P("comment"), _P("contact"), _P("exdate"), _P("exrule"), _P("related"), _P("rstatus"), _P("rdate"), _P("rrule")]; dojo.cal.iCalendar.VJournal = function (body) { this.name = "VJOURNAL"; this._ValidProperties = VJournalProperties; dojo.cal.iCalendar.Component.call(this, body); }; dojo.inherits(dojo.cal.iCalendar.VJournal, dojo.cal.iCalendar.Component); var VFreeBusyProperties = [_P("contact"), _P("dtstart", 1), _P("dtend"), _P("duration"), _P("organizer", 1), _P("dtstamp", 1), _P("uid", 1), _P("url", 1), _P("attendee"), _P("comment"), _P("freebusy"), _P("rstatus")]; dojo.cal.iCalendar.VFreeBusy = function (body) { this.name = "VFREEBUSY"; this._ValidProperties = VFreeBusyProperties; dojo.cal.iCalendar.Component.call(this, body); }; dojo.inherits(dojo.cal.iCalendar.VFreeBusy, dojo.cal.iCalendar.Component); var VAlarmProperties = [[_P("action", 1, true), _P("trigger", 1, true), [_P("duration", 1), _P("repeat", 1)], _P("attach", 1)], [_P("action", 1, true), _P("description", 1, true), _P("trigger", 1, true), [_P("duration", 1), _P("repeat", 1)]], [_P("action", 1, true), _P("description", 1, true), _P("trigger", 1, true), _P("summary", 1, true), _P("attendee", "*", true), [_P("duration", 1), _P("repeat", 1)], _P("attach", 1)], [_P("action", 1, true), _P("attach", 1, true), _P("trigger", 1, true), [_P("duration", 1), _P("repeat", 1)], _P("description", 1)]]; dojo.cal.iCalendar.VAlarm = function (body) { this.name = "VALARM"; this._ValidProperties = VAlarmProperties; dojo.cal.iCalendar.Component.call(this, body); }; dojo.inherits(dojo.cal.iCalendar.VAlarm, dojo.cal.iCalendar.Component); }});

__CPAN_FILE__ src/cal/iCalendar.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.cal.iCalendar"); dojo.require("dojo.lang.common"); dojo.require("dojo.cal.textDirectory"); dojo.require("dojo.date.common"); dojo.require("dojo.date.serialize"); dojo.cal.iCalendar.fromText = function (text) { var properties = dojo.cal.textDirectory.tokenise(text); var calendars = []; for (var i = 0, begun = false; i < properties.length; i++) { var prop = properties[i]; if (!begun) { if (prop.name == "BEGIN" && prop.value == "VCALENDAR") { begun = true; var calbody = []; } } else { if (prop.name == "END" && prop.value == "VCALENDAR") { calendars.push(new dojo.cal.iCalendar.VCalendar(calbody)); begun = false; } else { calbody.push(prop); } } } return calendars; }; dojo.cal.iCalendar.Component = function (body) { if (!this.name) { this.name = "COMPONENT"; } this.properties = []; this.components = []; if (body) { for (var i = 0, context = ""; i < body.length; i++) { if (context == "") { if (body[i].name == "BEGIN") { context = body[i].value; var childprops = []; } else { this.addProperty(new dojo.cal.iCalendar.Property(body[i])); } } else { if (body[i].name == "END" && body[i].value == context) { if (context == "VEVENT") { this.addComponent(new dojo.cal.iCalendar.VEvent(childprops)); } else { if (context == "VTIMEZONE") { this.addComponent(new dojo.cal.iCalendar.VTimeZone(childprops)); } else { if (context == "VTODO") { this.addComponent(new dojo.cal.iCalendar.VTodo(childprops)); } else { if (context == "VJOURNAL") { this.addComponent(new dojo.cal.iCalendar.VJournal(childprops)); } else { if (context == "VFREEBUSY") { this.addComponent(new dojo.cal.iCalendar.VFreeBusy(childprops)); } else { if (context == "STANDARD") { this.addComponent(new dojo.cal.iCalendar.Standard(childprops)); } else { if (context == "DAYLIGHT") { this.addComponent(new dojo.cal.iCalendar.Daylight(childprops)); } else { if (context == "VALARM") { this.addComponent(new dojo.cal.iCalendar.VAlarm(childprops)); } else { dojo.unimplemented("dojo.cal.iCalendar." + context); } } } } } } } } context = ""; } else { childprops.push(body[i]); } } } if (this._ValidProperties) { this.postCreate(); } } }; dojo.extend(dojo.cal.iCalendar.Component, {addProperty:function (prop) { this.properties.push(prop); this[prop.name.toLowerCase()] = prop; }, addComponent:function (prop) { this.components.push(prop); }, postCreate:function () { for (var x = 0; x < this._ValidProperties.length; x++) { var evtProperty = this._ValidProperties[x]; var found = false; for (var y = 0; y < this.properties.length; y++) { var prop = this.properties[y]; var propName = prop.name.toLowerCase(); if (dojo.lang.isArray(evtProperty)) { var alreadySet = false; for (var z = 0; z < evtProperty.length; z++) { var evtPropertyName = evtProperty[z].name.toLowerCase(); if ((this[evtPropertyName]) && (evtPropertyName != propName)) { alreadySet = true; } } if (!alreadySet) { this[propName] = prop; } } else { if (propName == evtProperty.name.toLowerCase()) { found = true; if (evtProperty.occurance == 1) { this[propName] = prop; } else { found = true; if (!dojo.lang.isArray(this[propName])) { this[propName] = []; } this[propName].push(prop); } } } } if (evtProperty.required && !found) { dojo.debug("iCalendar - " + this.name + ": Required Property not found: " + evtProperty.name); } } if (dojo.lang.isArray(this.rrule)) { for (var x = 0; x < this.rrule.length; x++) { var rule = this.rrule[x].value; this.rrule[x].cache = function () { }; var temp = rule.split(";"); for (var y = 0; y < temp.length; y++) { var pair = temp[y].split("="); var key = pair[0].toLowerCase(); var val = pair[1]; if ((key == "freq") || (key == "interval") || (key == "until")) { this.rrule[x][key] = val; } else { var valArray = val.split(","); this.rrule[x][key] = valArray; } } } this.recurring = true; } }, toString:function () { return "[iCalendar.Component; " + this.name + ", " + this.properties.length + " properties, " + this.components.length + " components]"; }}); dojo.cal.iCalendar.Property = function (prop) { this.name = prop.name; this.group = prop.group; this.params = prop.params; this.value = prop.value; }; dojo.extend(dojo.cal.iCalendar.Property, {toString:function () { return "[iCalenday.Property; " + this.name + ": " + this.value + "]"; }}); var _P = function (n, oc, req) { return {name:n, required:(req) ? true : false, occurance:(oc == "*" || !oc) ? -1 : oc}; }; dojo.cal.iCalendar.VCalendar = function (calbody) { this.name = "VCALENDAR"; this.recurring = []; this.nonRecurringEvents = function () { }; dojo.cal.iCalendar.Component.call(this, calbody); }; dojo.inherits(dojo.cal.iCalendar.VCalendar, dojo.cal.iCalendar.Component); dojo.extend(dojo.cal.iCalendar.VCalendar, {addComponent:function (prop) { this.components.push(prop); if (prop.name.toLowerCase() == "vevent") { if (prop.rrule) { this.recurring.push(prop); } else { var startDate = prop.getDate(); var month = startDate.getMonth() + 1; var dateString = month + "-" + startDate.getDate() + "-" + startDate.getFullYear(); if (!dojo.lang.isArray(this[dateString])) { this.nonRecurringEvents[dateString] = []; } this.nonRecurringEvents[dateString].push(prop); } } }, preComputeRecurringEvents:function (until) { var calculatedEvents = function () { }; for (var x = 0; x < this.recurring.length; x++) { var dates = this.recurring[x].getDates(until); for (var y = 0; y < dates.length; y++) { var month = dates[y].getMonth() + 1; var dateStr = month + "-" + dates[y].getDate() + "-" + dates[y].getFullYear(); if (!dojo.lang.isArray(calculatedEvents[dateStr])) { calculatedEvents[dateStr] = []; } if (!dojo.lang.inArray(calculatedEvents[dateStr], this.recurring[x])) { calculatedEvents[dateStr].push(this.recurring[x]); } } } this.recurringEvents = calculatedEvents; }, getEvents:function (date) { var events = []; var recur = []; var nonRecur = []; var month = date.getMonth() + 1; var dateStr = month + "-" + date.getDate() + "-" + date.getFullYear(); if (dojo.lang.isArray(this.nonRecurringEvents[dateStr])) { nonRecur = this.nonRecurringEvents[dateStr]; dojo.debug("Number of nonRecurring Events: " + nonRecur.length); } if (dojo.lang.isArray(this.recurringEvents[dateStr])) { recur = this.recurringEvents[dateStr]; } events = recur.concat(nonRecur); if (events.length > 0) { return events; } return null; }}); var StandardProperties = [_P("dtstart", 1, true), _P("tzoffsetto", 1, true), _P("tzoffsetfrom", 1, true), _P("comment"), _P("rdate"), _P("rrule"), _P("tzname")]; dojo.cal.iCalendar.Standard = function (body) { this.name = "STANDARD"; this._ValidProperties = StandardProperties; dojo.cal.iCalendar.Component.call(this, body); }; dojo.inherits(dojo.cal.iCalendar.Standard, dojo.cal.iCalendar.Component); var DaylightProperties = [_P("dtstart", 1, true), _P("tzoffsetto", 1, true), _P("tzoffsetfrom", 1, true), _P("comment"), _P("rdate"), _P("rrule"), _P("tzname")]; dojo.cal.iCalendar.Daylight = function (body) { this.name = "DAYLIGHT"; this._ValidProperties = DaylightProperties; dojo.cal.iCalendar.Component.call(this, body); }; dojo.inherits(dojo.cal.iCalendar.Daylight, dojo.cal.iCalendar.Component); var VEventProperties = [_P("class", 1), _P("created", 1), _P("description", 1), _P("dtstart", 1), _P("geo", 1), _P("last-mod", 1), _P("location", 1), _P("organizer", 1), _P("priority", 1), _P("dtstamp", 1), _P("seq", 1), _P("status", 1), _P("summary", 1), _P("transp", 1), _P("uid", 1), _P("url", 1), _P("recurid", 1), [_P("dtend", 1), _P("duration", 1)], _P("attach"), _P("attendee"), _P("categories"), _P("comment"), _P("contact"), _P("exdate"), _P("exrule"), _P("rstatus"), _P("related"), _P("resources"), _P("rdate"), _P("rrule")]; dojo.cal.iCalendar.VEvent = function (body) { this._ValidProperties = VEventProperties; this.name = "VEVENT"; dojo.cal.iCalendar.Component.call(this, body); this.recurring = false; this.startDate = dojo.date.fromIso8601(this.dtstart.value); }; dojo.inherits(dojo.cal.iCalendar.VEvent, dojo.cal.iCalendar.Component); dojo.extend(dojo.cal.iCalendar.VEvent, {getDates:function (until) { var dtstart = this.getDate(); var recurranceSet = []; var weekdays = ["su", "mo", "tu", "we", "th", "fr", "sa"]; var order = {"daily":1, "weekly":2, "monthly":3, "yearly":4, "byday":1, "bymonthday":1, "byweekno":2, "bymonth":3, "byyearday":4}; for (var x = 0; x < this.rrule.length; x++) { var rrule = this.rrule[x]; var freq = rrule.freq.toLowerCase(); var interval = 1; if (rrule.interval > interval) { interval = rrule.interval; } var set = []; var freqInt = order[freq]; if (rrule.until) { var tmpUntil = dojo.date.fromIso8601(rrule.until); } else { var tmpUntil = until; } if (tmpUntil > until) { tmpUntil = until; } if (dtstart < tmpUntil) { var expandingRules = function () { }; var cullingRules = function () { }; expandingRules.length = 0; cullingRules.length = 0; switch (freq) { case "yearly": var nextDate = new Date(dtstart); set.push(nextDate); while (nextDate < tmpUntil) { nextDate.setYear(nextDate.getFullYear() + interval); tmpDate = new Date(nextDate); if (tmpDate < tmpUntil) { set.push(tmpDate); } } break; case "monthly": nextDate = new Date(dtstart); set.push(nextDate); while (nextDate < tmpUntil) { nextDate.setMonth(nextDate.getMonth() + interval); var tmpDate = new Date(nextDate); if (tmpDate < tmpUntil) { set.push(tmpDate); } } break; case "weekly": nextDate = new Date(dtstart); set.push(nextDate); while (nextDate < tmpUntil) { nextDate.setDate(nextDate.getDate() + (7 * interval)); var tmpDate = new Date(nextDate); if (tmpDate < tmpUntil) { set.push(tmpDate); } } break; case "daily": nextDate = new Date(dtstart); set.push(nextDate); while (nextDate < tmpUntil) { nextDate.setDate(nextDate.getDate() + interval); var tmpDate = new Date(nextDate); if (tmpDate < tmpUntil) { set.push(tmpDate); } } break; } if ((rrule["bymonth"]) && (order["bymonth"] < freqInt)) { for (var z = 0; z < rrule["bymonth"].length; z++) { if (z == 0) { for (var zz = 0; zz < set.length; zz++) { set[zz].setMonth(rrule["bymonth"][z] - 1); } } else { var subset = []; for (var zz = 0; zz < set.length; zz++) { var newDate = new Date(set[zz]); newDate.setMonth(rrule[z]); subset.push(newDate); } tmp = set.concat(subset); set = tmp; } } } if (rrule["byweekno"] && !rrule["bymonth"]) { dojo.debug("TODO: no support for byweekno yet"); } if (rrule["byyearday"] && !rrule["bymonth"] && !rrule["byweekno"]) { if (rrule["byyearday"].length > 1) { var regex = "([+-]?)([0-9]{1,3})"; for (var z = 1; x < rrule["byyearday"].length; z++) { var regexResult = rrule["byyearday"][z].match(regex); if (z == 1) { for (var zz = 0; zz < set.length; zz++) { if (regexResult[1] == "-") { dojo.date.setDayOfYear(set[zz], 366 - regexResult[2]); } else { dojo.date.setDayOfYear(set[zz], regexResult[2]); } } } else { var subset = []; for (var zz = 0; zz < set.length; zz++) { var newDate = new Date(set[zz]); if (regexResult[1] == "-") { dojo.date.setDayOfYear(newDate, 366 - regexResult[2]); } else { dojo.date.setDayOfYear(newDate, regexResult[2]); } subset.push(newDate); } tmp = set.concat(subset); set = tmp; } } } } if (rrule["bymonthday"] && (order["bymonthday"] < freqInt)) { if (rrule["bymonthday"].length > 0) { var regex = "([+-]?)([0-9]{1,3})"; for (var z = 0; z < rrule["bymonthday"].length; z++) { var regexResult = rrule["bymonthday"][z].match(regex); if (z == 0) { for (var zz = 0; zz < set.length; zz++) { if (regexResult[1] == "-") { if (regexResult[2] < dojo.date.getDaysInMonth(set[zz])) { set[zz].setDate(dojo.date.getDaysInMonth(set[zz]) - regexResult[2]); } } else { if (regexResult[2] < dojo.date.getDaysInMonth(set[zz])) { set[zz].setDate(regexResult[2]); } } } } else { var subset = []; for (var zz = 0; zz < set.length; zz++) { var newDate = new Date(set[zz]); if (regexResult[1] == "-") { if (regexResult[2] < dojo.date.getDaysInMonth(set[zz])) { newDate.setDate(dojo.date.getDaysInMonth(set[zz]) - regexResult[2]); } } else { if (regexResult[2] < dojo.date.getDaysInMonth(set[zz])) { newDate.setDate(regexResult[2]); } } subset.push(newDate); } tmp = set.concat(subset); set = tmp; } } } } if (rrule["byday"] && (order["byday"] < freqInt)) { if (rrule["bymonth"]) { if (rrule["byday"].length > 0) { var regex = "([+-]?)([0-9]{0,1}?)([A-Za-z]{1,2})"; for (var z = 0; z < rrule["byday"].length; z++) { var regexResult = rrule["byday"][z].match(regex); var occurance = regexResult[2]; var day = regexResult[3].toLowerCase(); if (z == 0) { for (var zz = 0; zz < set.length; zz++) { if (regexResult[1] == "-") { var numDaysFound = 0; var lastDayOfMonth = dojo.date.getDaysInMonth(set[zz]); var daysToSubtract = 1; set[zz].setDate(lastDayOfMonth); if (weekdays[set[zz].getDay()] == day) { numDaysFound++; daysToSubtract = 7; } daysToSubtract = 1; while (numDaysFound < occurance) { set[zz].setDate(set[zz].getDate() - daysToSubtract); if (weekdays[set[zz].getDay()] == day) { numDaysFound++; daysToSubtract = 7; } } } else { if (occurance) { var numDaysFound = 0; set[zz].setDate(1); var daysToAdd = 1; if (weekdays[set[zz].getDay()] == day) { numDaysFound++; daysToAdd = 7; } while (numDaysFound < occurance) { set[zz].setDate(set[zz].getDate() + daysToAdd); if (weekdays[set[zz].getDay()] == day) { numDaysFound++; daysToAdd = 7; } } } else { var numDaysFound = 0; var subset = []; lastDayOfMonth = new Date(set[zz]); var daysInMonth = dojo.date.getDaysInMonth(set[zz]); lastDayOfMonth.setDate(daysInMonth); set[zz].setDate(1); if (weekdays[set[zz].getDay()] == day) { numDaysFound++; } var tmpDate = new Date(set[zz]); daysToAdd = 1; while (tmpDate.getDate() < lastDayOfMonth) { if (weekdays[tmpDate.getDay()] == day) { numDaysFound++; if (numDaysFound == 1) { set[zz] = tmpDate; } else { subset.push(tmpDate); tmpDate = new Date(tmpDate); daysToAdd = 7; tmpDate.setDate(tmpDate.getDate() + daysToAdd); } } else { tmpDate.setDate(tmpDate.getDate() + daysToAdd); } } var t = set.concat(subset); set = t; } } } } else { var subset = []; for (var zz = 0; zz < set.length; zz++) { var newDate = new Date(set[zz]); if (regexResult[1] == "-") { if (regexResult[2] < dojo.date.getDaysInMonth(set[zz])) { newDate.setDate(dojo.date.getDaysInMonth(set[zz]) - regexResult[2]); } } else { if (regexResult[2] < dojo.date.getDaysInMonth(set[zz])) { newDate.setDate(regexResult[2]); } } subset.push(newDate); } tmp = set.concat(subset); set = tmp; } } } } else { dojo.debug("TODO: byday within a yearly rule without a bymonth"); } } dojo.debug("TODO: Process BYrules for units larger than frequency"); var tmp = recurranceSet.concat(set); recurranceSet = tmp; } } recurranceSet.push(dtstart); return recurranceSet; }, getDate:function () { return dojo.date.fromIso8601(this.dtstart.value); }}); var VTimeZoneProperties = [_P("tzid", 1, true), _P("last-mod", 1), _P("tzurl", 1)]; dojo.cal.iCalendar.VTimeZone = function (body) { this.name = "VTIMEZONE"; this._ValidProperties = VTimeZoneProperties; dojo.cal.iCalendar.Component.call(this, body); }; dojo.inherits(dojo.cal.iCalendar.VTimeZone, dojo.cal.iCalendar.Component); var VTodoProperties = [_P("class", 1), _P("completed", 1), _P("created", 1), _P("description", 1), _P("dtstart", 1), _P("geo", 1), _P("last-mod", 1), _P("location", 1), _P("organizer", 1), _P("percent", 1), _P("priority", 1), _P("dtstamp", 1), _P("seq", 1), _P("status", 1), _P("summary", 1), _P("uid", 1), _P("url", 1), _P("recurid", 1), [_P("due", 1), _P("duration", 1)], _P("attach"), _P("attendee"), _P("categories"), _P("comment"), _P("contact"), _P("exdate"), _P("exrule"), _P("rstatus"), _P("related"), _P("resources"), _P("rdate"), _P("rrule")]; dojo.cal.iCalendar.VTodo = function (body) { this.name = "VTODO"; this._ValidProperties = VTodoProperties; dojo.cal.iCalendar.Component.call(this, body); }; dojo.inherits(dojo.cal.iCalendar.VTodo, dojo.cal.iCalendar.Component); var VJournalProperties = [_P("class", 1), _P("created", 1), _P("description", 1), _P("dtstart", 1), _P("last-mod", 1), _P("organizer", 1), _P("dtstamp", 1), _P("seq", 1), _P("status", 1), _P("summary", 1), _P("uid", 1), _P("url", 1), _P("recurid", 1), _P("attach"), _P("attendee"), _P("categories"), _P("comment"), _P("contact"), _P("exdate"), _P("exrule"), _P("related"), _P("rstatus"), _P("rdate"), _P("rrule")]; dojo.cal.iCalendar.VJournal = function (body) { this.name = "VJOURNAL"; this._ValidProperties = VJournalProperties; dojo.cal.iCalendar.Component.call(this, body); }; dojo.inherits(dojo.cal.iCalendar.VJournal, dojo.cal.iCalendar.Component); var VFreeBusyProperties = [_P("contact"), _P("dtstart", 1), _P("dtend"), _P("duration"), _P("organizer", 1), _P("dtstamp", 1), _P("uid", 1), _P("url", 1), _P("attendee"), _P("comment"), _P("freebusy"), _P("rstatus")]; dojo.cal.iCalendar.VFreeBusy = function (body) { this.name = "VFREEBUSY"; this._ValidProperties = VFreeBusyProperties; dojo.cal.iCalendar.Component.call(this, body); }; dojo.inherits(dojo.cal.iCalendar.VFreeBusy, dojo.cal.iCalendar.Component); var VAlarmProperties = [[_P("action", 1, true), _P("trigger", 1, true), [_P("duration", 1), _P("repeat", 1)], _P("attach", 1)], [_P("action", 1, true), _P("description", 1, true), _P("trigger", 1, true), [_P("duration", 1), _P("repeat", 1)]], [_P("action", 1, true), _P("description", 1, true), _P("trigger", 1, true), _P("summary", 1, true), _P("attendee", "*", true), [_P("duration", 1), _P("repeat", 1)], _P("attach", 1)], [_P("action", 1, true), _P("attach", 1, true), _P("trigger", 1, true), [_P("duration", 1), _P("repeat", 1)], _P("description", 1)]]; dojo.cal.iCalendar.VAlarm = function (body) { this.name = "VALARM"; this._ValidProperties = VAlarmProperties; dojo.cal.iCalendar.Component.call(this, body); }; dojo.inherits(dojo.cal.iCalendar.VAlarm, dojo.cal.iCalendar.Component);

__CPAN_DIR__ src/date __CPAN_FILE__ src/date/common.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.date.common"); dojo.date.setDayOfYear = function (dateObject, dayOfYear) { dateObject.setMonth(0); dateObject.setDate(dayOfYear); return dateObject; }; dojo.date.getDayOfYear = function (dateObject) { var fullYear = dateObject.getFullYear(); var lastDayOfPrevYear = new Date(fullYear - 1, 11, 31); return Math.floor((dateObject.getTime() - lastDayOfPrevYear.getTime()) / 86400000); }; dojo.date.setWeekOfYear = function (dateObject, week, firstDay) { if (arguments.length == 1) { firstDay = 0; } dojo.unimplemented("dojo.date.setWeekOfYear"); }; dojo.date.getWeekOfYear = function (dateObject, firstDay) { if (arguments.length == 1) { firstDay = 0; } var firstDayOfYear = new Date(dateObject.getFullYear(), 0, 1); var day = firstDayOfYear.getDay(); firstDayOfYear.setDate(firstDayOfYear.getDate() - day + firstDay - (day > firstDay ? 7 : 0)); return Math.floor((dateObject.getTime() - firstDayOfYear.getTime()) / 604800000); }; dojo.date.setIsoWeekOfYear = function (dateObject, week, firstDay) { if (arguments.length == 1) { firstDay = 1; } dojo.unimplemented("dojo.date.setIsoWeekOfYear"); }; dojo.date.getIsoWeekOfYear = function (dateObject, firstDay) { if (arguments.length == 1) { firstDay = 1; } dojo.unimplemented("dojo.date.getIsoWeekOfYear"); }; dojo.date.shortTimezones = ["IDLW", "BET", "HST", "MART", "AKST", "PST", "MST", "CST", "EST", "AST", "NFT", "BST", "FST", "AT", "GMT", "CET", "EET", "MSK", "IRT", "GST", "AFT", "AGTT", "IST", "NPT", "ALMT", "MMT", "JT", "AWST", "JST", "ACST", "AEST", "LHST", "VUT", "NFT", "NZT", "CHAST", "PHOT", "LINT"]; dojo.date.timezoneOffsets = [-720, -660, -600, -570, -540, -480, -420, -360, -300, -240, -210, -180, -120, -60, 0, 60, 120, 180, 210, 240, 270, 300, 330, 345, 360, 390, 420, 480, 540, 570, 600, 630, 660, 690, 720, 765, 780, 840]; dojo.date.getDaysInMonth = function (dateObject) { var month = dateObject.getMonth(); var days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; if (month == 1 && dojo.date.isLeapYear(dateObject)) { return 29; } else { return days[month]; } }; dojo.date.isLeapYear = function (dateObject) { var year = dateObject.getFullYear(); return (year % 400 == 0) ? true : (year % 100 == 0) ? false : (year % 4 == 0) ? true : false; }; dojo.date.getTimezoneName = function (dateObject) { var str = dateObject.toString(); var tz = ""; var match; var pos = str.indexOf("("); if (pos > -1) { pos++; tz = str.substring(pos, str.indexOf(")")); } else { var pat = /([A-Z\/]+) \d{4}$/; if ((match = str.match(pat))) { tz = match[1]; } else { str = dateObject.toLocaleString(); pat = / ([A-Z\/]+)$/; if ((match = str.match(pat))) { tz = match[1]; } } } return tz == "AM" || tz == "PM" ? "" : tz; }; dojo.date.getOrdinal = function (dateObject) { var date = dateObject.getDate(); if (date % 100 != 11 && date % 10 == 1) { return "st"; } else { if (date % 100 != 12 && date % 10 == 2) { return "nd"; } else { if (date % 100 != 13 && date % 10 == 3) { return "rd"; } else { return "th"; } } } }; dojo.date.compareTypes = {DATE:1, TIME:2}; dojo.date.compare = function (dateA, dateB, options) { var dA = dateA; var dB = dateB || new Date(); var now = new Date(); with (dojo.date.compareTypes) { var opt = options || (DATE | TIME); var d1 = new Date((opt & DATE) ? dA.getFullYear() : now.getFullYear(), (opt & DATE) ? dA.getMonth() : now.getMonth(), (opt & DATE) ? dA.getDate() : now.getDate(), (opt & TIME) ? dA.getHours() : 0, (opt & TIME) ? dA.getMinutes() : 0, (opt & TIME) ? dA.getSeconds() : 0); var d2 = new Date((opt & DATE) ? dB.getFullYear() : now.getFullYear(), (opt & DATE) ? dB.getMonth() : now.getMonth(), (opt & DATE) ? dB.getDate() : now.getDate(), (opt & TIME) ? dB.getHours() : 0, (opt & TIME) ? dB.getMinutes() : 0, (opt & TIME) ? dB.getSeconds() : 0); } if (d1.valueOf() > d2.valueOf()) { return 1; } if (d1.valueOf() < d2.valueOf()) { return -1; } return 0; }; dojo.date.dateParts = {YEAR:0, MONTH:1, DAY:2, HOUR:3, MINUTE:4, SECOND:5, MILLISECOND:6, QUARTER:7, WEEK:8, WEEKDAY:9}; dojo.date.add = function (dt, interv, incr) { if (typeof dt == "number") { dt = new Date(dt); } function fixOvershoot() { if (sum.getDate() < dt.getDate()) { sum.setDate(0); } } var sum = new Date(dt); with (dojo.date.dateParts) { switch (interv) { case YEAR: sum.setFullYear(dt.getFullYear() + incr); fixOvershoot(); break; case QUARTER: incr *= 3; case MONTH: sum.setMonth(dt.getMonth() + incr); fixOvershoot(); break; case WEEK: incr *= 7; case DAY: sum.setDate(dt.getDate() + incr); break; case WEEKDAY: var dat = dt.getDate(); var weeks = 0; var days = 0; var strt = 0; var trgt = 0; var adj = 0; var mod = incr % 5; if (mod == 0) { days = (incr > 0) ? 5 : -5; weeks = (incr > 0) ? ((incr - 5) / 5) : ((incr + 5) / 5); } else { days = mod; weeks = parseInt(incr / 5); } strt = dt.getDay(); if (strt == 6 && incr > 0) { adj = 1; } else { if (strt == 0 && incr < 0) { adj = -1; } } trgt = (strt + days); if (trgt == 0 || trgt == 6) { adj = (incr > 0) ? 2 : -2; } sum.setDate(dat + (7 * weeks) + days + adj); break; case HOUR: sum.setHours(sum.getHours() + incr); break; case MINUTE: sum.setMinutes(sum.getMinutes() + incr); break; case SECOND: sum.setSeconds(sum.getSeconds() + incr); break; case MILLISECOND: sum.setMilliseconds(sum.getMilliseconds() + incr); break; default: break; } } return sum; }; dojo.date.diff = function (dtA, dtB, interv) { if (typeof dtA == "number") { dtA = new Date(dtA); } if (typeof dtB == "number") { dtB = new Date(dtB); } var yeaDiff = dtB.getFullYear() - dtA.getFullYear(); var monDiff = (dtB.getMonth() - dtA.getMonth()) + (yeaDiff * 12); var msDiff = dtB.getTime() - dtA.getTime(); var secDiff = msDiff / 1000; var minDiff = secDiff / 60; var houDiff = minDiff / 60; var dayDiff = houDiff / 24; var weeDiff = dayDiff / 7; var delta = 0; with (dojo.date.dateParts) { switch (interv) { case YEAR: delta = yeaDiff; break; case QUARTER: var mA = dtA.getMonth(); var mB = dtB.getMonth(); var qA = Math.floor(mA / 3) + 1; var qB = Math.floor(mB / 3) + 1; qB += (yeaDiff * 4); delta = qB - qA; break; case MONTH: delta = monDiff; break; case WEEK: delta = parseInt(weeDiff); break; case DAY: delta = dayDiff; break; case WEEKDAY: var days = Math.round(dayDiff); var weeks = parseInt(days / 7); var mod = days % 7; if (mod == 0) { days = weeks * 5; } else { var adj = 0; var aDay = dtA.getDay(); var bDay = dtB.getDay(); weeks = parseInt(days / 7); mod = days % 7; var dtMark = new Date(dtA); dtMark.setDate(dtMark.getDate() + (weeks * 7)); var dayMark = dtMark.getDay(); if (dayDiff > 0) { switch (true) { case aDay == 6: adj = -1; break; case aDay == 0: adj = 0; break; case bDay == 6: adj = -1; break; case bDay == 0: adj = -2; break; case (dayMark + mod) > 5: adj = -2; break; default: break; } } else { if (dayDiff < 0) { switch (true) { case aDay == 6: adj = 0; break; case aDay == 0: adj = 1; break; case bDay == 6: adj = 2; break; case bDay == 0: adj = 1; break; case (dayMark + mod) < 0: adj = 2; break; default: break; } } } days += adj; days -= (weeks * 2); } delta = days; break; case HOUR: delta = houDiff; break; case MINUTE: delta = minDiff; break; case SECOND: delta = secDiff; break; case MILLISECOND: delta = msDiff; break; default: break; } } return Math.round(delta); };

__CPAN_FILE__ src/date/serialize.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.date.serialize"], ["require", "dojo.string.common"]], definePackage:function (dojo) { dojo.provide("dojo.date.serialize"); dojo.require("dojo.string.common"); dojo.date.setIso8601 = function (dateObject, formattedString) { var comps = (formattedString.indexOf("T") == -1) ? formattedString.split(" ") : formattedString.split("T"); dateObject = dojo.date.setIso8601Date(dateObject, comps[0]); if (comps.length == 2) { dateObject = dojo.date.setIso8601Time(dateObject, comps[1]); } return dateObject; }; dojo.date.fromIso8601 = function (formattedString) { return dojo.date.setIso8601(new Date(0, 0), formattedString); }; dojo.date.setIso8601Date = function (dateObject, formattedString) { var regexp = "^([0-9]{4})((-?([0-9]{2})(-?([0-9]{2}))?)|" + "(-?([0-9]{3}))|(-?W([0-9]{2})(-?([1-7]))?))?$"; var d = formattedString.match(new RegExp(regexp)); if (!d) { dojo.debug("invalid date string: " + formattedString); return null; } var year = d[1]; var month = d[4]; var date = d[6]; var dayofyear = d[8]; var week = d[10]; var dayofweek = d[12] ? d[12] : 1; dateObject.setFullYear(year); if (dayofyear) { dateObject.setMonth(0); dateObject.setDate(Number(dayofyear)); } else { if (week) { dateObject.setMonth(0); dateObject.setDate(1); var gd = dateObject.getDay(); var day = gd ? gd : 7; var offset = Number(dayofweek) + (7 * Number(week)); if (day <= 4) { dateObject.setDate(offset + 1 - day); } else { dateObject.setDate(offset + 8 - day); } } else { if (month) { dateObject.setDate(1); dateObject.setMonth(month - 1); } if (date) { dateObject.setDate(date); } } } return dateObject; }; dojo.date.fromIso8601Date = function (formattedString) { return dojo.date.setIso8601Date(new Date(0, 0), formattedString); }; dojo.date.setIso8601Time = function (dateObject, formattedString) { var timezone = "Z|(([-+])([0-9]{2})(:?([0-9]{2}))?)$"; var d = formattedString.match(new RegExp(timezone)); var offset = 0; if (d) { if (d[0] != "Z") { offset = (Number(d[3]) * 60) + Number(d[5]); offset *= ((d[2] == "-") ? 1 : -1); } offset -= dateObject.getTimezoneOffset(); formattedString = formattedString.substr(0, formattedString.length - d[0].length); } var regexp = "^([0-9]{2})(:?([0-9]{2})(:?([0-9]{2})(.([0-9]+))?)?)?$"; d = formattedString.match(new RegExp(regexp)); if (!d) { dojo.debug("invalid time string: " + formattedString); return null; } var hours = d[1]; var mins = Number((d[3]) ? d[3] : 0); var secs = (d[5]) ? d[5] : 0; var ms = d[7] ? (Number("0." + d[7]) * 1000) : 0; dateObject.setHours(hours); dateObject.setMinutes(mins); dateObject.setSeconds(secs); dateObject.setMilliseconds(ms); if (offset !== 0) { dateObject.setTime(dateObject.getTime() + offset * 60000); } return dateObject; }; dojo.date.fromIso8601Time = function (formattedString) { return dojo.date.setIso8601Time(new Date(0, 0), formattedString); }; dojo.date.toRfc3339 = function (dateObject, selector) { if (!dateObject) { dateObject = new Date(); } var _ = dojo.string.pad; var formattedDate = []; if (selector != "timeOnly") { var date = [_(dateObject.getFullYear(), 4), _(dateObject.getMonth() + 1, 2), _(dateObject.getDate(), 2)].join("-"); formattedDate.push(date); } if (selector != "dateOnly") { var time = [_(dateObject.getHours(), 2), _(dateObject.getMinutes(), 2), _(dateObject.getSeconds(), 2)].join(":"); var timezoneOffset = dateObject.getTimezoneOffset(); time += (timezoneOffset > 0 ? "-" : "+") + _(Math.floor(Math.abs(timezoneOffset) / 60), 2) + ":" + _(Math.abs(timezoneOffset) % 60, 2); formattedDate.push(time); } return formattedDate.join("T"); }; dojo.date.fromRfc3339 = function (rfcDate) { if (rfcDate.indexOf("Tany") != -1) { rfcDate = rfcDate.replace("Tany", ""); } var dateObject = new Date(); return dojo.date.setIso8601(dateObject, rfcDate); }; }});

__CPAN_FILE__ src/date/serialize.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.date.serialize"); dojo.require("dojo.string.common"); dojo.date.setIso8601 = function (dateObject, formattedString) { var comps = (formattedString.indexOf("T") == -1) ? formattedString.split(" ") : formattedString.split("T"); dateObject = dojo.date.setIso8601Date(dateObject, comps[0]); if (comps.length == 2) { dateObject = dojo.date.setIso8601Time(dateObject, comps[1]); } return dateObject; }; dojo.date.fromIso8601 = function (formattedString) { return dojo.date.setIso8601(new Date(0, 0), formattedString); }; dojo.date.setIso8601Date = function (dateObject, formattedString) { var regexp = "^([0-9]{4})((-?([0-9]{2})(-?([0-9]{2}))?)|" + "(-?([0-9]{3}))|(-?W([0-9]{2})(-?([1-7]))?))?$"; var d = formattedString.match(new RegExp(regexp)); if (!d) { dojo.debug("invalid date string: " + formattedString); return null; } var year = d[1]; var month = d[4]; var date = d[6]; var dayofyear = d[8]; var week = d[10]; var dayofweek = d[12] ? d[12] : 1; dateObject.setFullYear(year); if (dayofyear) { dateObject.setMonth(0); dateObject.setDate(Number(dayofyear)); } else { if (week) { dateObject.setMonth(0); dateObject.setDate(1); var gd = dateObject.getDay(); var day = gd ? gd : 7; var offset = Number(dayofweek) + (7 * Number(week)); if (day <= 4) { dateObject.setDate(offset + 1 - day); } else { dateObject.setDate(offset + 8 - day); } } else { if (month) { dateObject.setDate(1); dateObject.setMonth(month - 1); } if (date) { dateObject.setDate(date); } } } return dateObject; }; dojo.date.fromIso8601Date = function (formattedString) { return dojo.date.setIso8601Date(new Date(0, 0), formattedString); }; dojo.date.setIso8601Time = function (dateObject, formattedString) { var timezone = "Z|(([-+])([0-9]{2})(:?([0-9]{2}))?)$"; var d = formattedString.match(new RegExp(timezone)); var offset = 0; if (d) { if (d[0] != "Z") { offset = (Number(d[3]) * 60) + Number(d[5]); offset *= ((d[2] == "-") ? 1 : -1); } offset -= dateObject.getTimezoneOffset(); formattedString = formattedString.substr(0, formattedString.length - d[0].length); } var regexp = "^([0-9]{2})(:?([0-9]{2})(:?([0-9]{2})(.([0-9]+))?)?)?$"; d = formattedString.match(new RegExp(regexp)); if (!d) { dojo.debug("invalid time string: " + formattedString); return null; } var hours = d[1]; var mins = Number((d[3]) ? d[3] : 0); var secs = (d[5]) ? d[5] : 0; var ms = d[7] ? (Number("0." + d[7]) * 1000) : 0; dateObject.setHours(hours); dateObject.setMinutes(mins); dateObject.setSeconds(secs); dateObject.setMilliseconds(ms); if (offset !== 0) { dateObject.setTime(dateObject.getTime() + offset * 60000); } return dateObject; }; dojo.date.fromIso8601Time = function (formattedString) { return dojo.date.setIso8601Time(new Date(0, 0), formattedString); }; dojo.date.toRfc3339 = function (dateObject, selector) { if (!dateObject) { dateObject = new Date(); } var _ = dojo.string.pad; var formattedDate = []; if (selector != "timeOnly") { var date = [_(dateObject.getFullYear(), 4), _(dateObject.getMonth() + 1, 2), _(dateObject.getDate(), 2)].join("-"); formattedDate.push(date); } if (selector != "dateOnly") { var time = [_(dateObject.getHours(), 2), _(dateObject.getMinutes(), 2), _(dateObject.getSeconds(), 2)].join(":"); var timezoneOffset = dateObject.getTimezoneOffset(); time += (timezoneOffset > 0 ? "-" : "+") + _(Math.floor(Math.abs(timezoneOffset) / 60), 2) + ":" + _(Math.abs(timezoneOffset) % 60, 2); formattedDate.push(time); } return formattedDate.join("T"); }; dojo.date.fromRfc3339 = function (rfcDate) { if (rfcDate.indexOf("Tany") != -1) { rfcDate = rfcDate.replace("Tany", ""); } var dateObject = new Date(); return dojo.date.setIso8601(dateObject, rfcDate); };

__CPAN_FILE__ src/date/supplemental.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.date.supplemental"]], definePackage:function (dojo) { dojo.provide("dojo.date.supplemental"); dojo.date.getFirstDayOfWeek = function (locale) { var firstDay = {mv:5, ae:6, af:6, bh:6, dj:6, dz:6, eg:6, er:6, et:6, iq:6, ir:6, jo:6, ke:6, kw:6, lb:6, ly:6, ma:6, om:6, qa:6, sa:6, sd:6, so:6, tn:6, ye:6, as:0, au:0, az:0, bw:0, ca:0, cn:0, fo:0, ge:0, gl:0, gu:0, hk:0, ie:0, il:0, is:0, jm:0, jp:0, kg:0, kr:0, la:0, mh:0, mo:0, mp:0, mt:0, nz:0, ph:0, pk:0, sg:0, th:0, tt:0, tw:0, um:0, us:0, uz:0, vi:0, za:0, zw:0, et:0, mw:0, ng:0, tj:0, gb:0, sy:4}; locale = dojo.hostenv.normalizeLocale(locale); var country = locale.split("-")[1]; var dow = firstDay[country]; return (typeof dow == "undefined") ? 1 : dow; }; dojo.date.getWeekend = function (locale) { var weekendStart = {eg:5, il:5, sy:5, "in":0, ae:4, bh:4, dz:4, iq:4, jo:4, kw:4, lb:4, ly:4, ma:4, om:4, qa:4, sa:4, sd:4, tn:4, ye:4}; var weekendEnd = {ae:5, bh:5, dz:5, iq:5, jo:5, kw:5, lb:5, ly:5, ma:5, om:5, qa:5, sa:5, sd:5, tn:5, ye:5, af:5, ir:5, eg:6, il:6, sy:6}; locale = dojo.hostenv.normalizeLocale(locale); var country = locale.split("-")[1]; var start = weekendStart[country]; var end = weekendEnd[country]; if (typeof start == "undefined") { start = 6; } if (typeof end == "undefined") { end = 0; } return {start:start, end:end}; }; dojo.date.isWeekend = function (dateObj, locale) { var weekend = dojo.date.getWeekend(locale); var day = (dateObj || new Date()).getDay(); if (weekend.end < weekend.start) { weekend.end += 7; if (day < weekend.start) { day += 7; } } return day >= weekend.start && day <= weekend.end; }; }});

__CPAN_FILE__ src/date/supplemental.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.date.supplemental"); dojo.date.getFirstDayOfWeek = function (locale) { var firstDay = {mv:5, ae:6, af:6, bh:6, dj:6, dz:6, eg:6, er:6, et:6, iq:6, ir:6, jo:6, ke:6, kw:6, lb:6, ly:6, ma:6, om:6, qa:6, sa:6, sd:6, so:6, tn:6, ye:6, as:0, au:0, az:0, bw:0, ca:0, cn:0, fo:0, ge:0, gl:0, gu:0, hk:0, ie:0, il:0, is:0, jm:0, jp:0, kg:0, kr:0, la:0, mh:0, mo:0, mp:0, mt:0, nz:0, ph:0, pk:0, sg:0, th:0, tt:0, tw:0, um:0, us:0, uz:0, vi:0, za:0, zw:0, et:0, mw:0, ng:0, tj:0, gb:0, sy:4}; locale = dojo.hostenv.normalizeLocale(locale); var country = locale.split("-")[1]; var dow = firstDay[country]; return (typeof dow == "undefined") ? 1 : dow; }; dojo.date.getWeekend = function (locale) { var weekendStart = {eg:5, il:5, sy:5, "in":0, ae:4, bh:4, dz:4, iq:4, jo:4, kw:4, lb:4, ly:4, ma:4, om:4, qa:4, sa:4, sd:4, tn:4, ye:4}; var weekendEnd = {ae:5, bh:5, dz:5, iq:5, jo:5, kw:5, lb:5, ly:5, ma:5, om:5, qa:5, sa:5, sd:5, tn:5, ye:5, af:5, ir:5, eg:6, il:6, sy:6}; locale = dojo.hostenv.normalizeLocale(locale); var country = locale.split("-")[1]; var start = weekendStart[country]; var end = weekendEnd[country]; if (typeof start == "undefined") { start = 6; } if (typeof end == "undefined") { end = 0; } return {start:start, end:end}; }; dojo.date.isWeekend = function (dateObj, locale) { var weekend = dojo.date.getWeekend(locale); var day = (dateObj || new Date()).getDay(); if (weekend.end < weekend.start) { weekend.end += 7; if (day < weekend.start) { day += 7; } } return day >= weekend.start && day <= weekend.end; };

__CPAN_FILE__ src/date/format.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.date.format"); dojo.require("dojo.date.common"); dojo.require("dojo.date.supplemental"); dojo.require("dojo.lang.array"); dojo.require("dojo.lang.common"); dojo.require("dojo.lang.func"); dojo.require("dojo.string.common"); dojo.require("dojo.i18n.common"); dojo.requireLocalization("dojo.i18n.calendar", "gregorian", null, "ko,zh-cn,zh,sv,ja,en,zh-tw,it,hu,nl,fi,zh-hk,fr,pt,ROOT,es,de,pt-br"); dojo.requireLocalization("dojo.i18n.calendar", "gregorianExtras", null, "zh,ROOT,ja"); (function () { dojo.date.format = function (dateObject, options) { if (typeof options == "string") { dojo.deprecated("dojo.date.format", "To format dates with POSIX-style strings, please use dojo.date.strftime instead", "0.5"); return dojo.date.strftime(dateObject, options); } function formatPattern(dateObject, pattern) { return pattern.replace(/([a-z])\1*/ig, function (match) { var s; var c = match.charAt(0); var l = match.length; var pad; var widthList = ["abbr", "wide", "narrow"]; switch (c) { case "G": if (l > 3) { dojo.unimplemented("Era format not implemented"); } s = info.eras[dateObject.getFullYear() < 0 ? 1 : 0]; break; case "y": s = dateObject.getFullYear(); switch (l) { case 1: break; case 2: s = String(s).substr(-2); break; default: pad = true; } break; case "Q": case "q": s = Math.ceil((dateObject.getMonth() + 1) / 3); switch (l) { case 1: case 2: pad = true; break; case 3: case 4: dojo.unimplemented("Quarter format not implemented"); } break; case "M": case "L": var m = dateObject.getMonth(); var width; switch (l) { case 1: case 2: s = m + 1; pad = true; break; case 3: case 4: case 5: width = widthList[l - 3]; break; } if (width) { var type = (c == "L") ? "standalone" : "format"; var prop = ["months", type, width].join("-"); s = info[prop][m]; } break; case "w": var firstDay = 0; s = dojo.date.getWeekOfYear(dateObject, firstDay); pad = true; break; case "d": s = dateObject.getDate(); pad = true; break; case "D": s = dojo.date.getDayOfYear(dateObject); pad = true; break; case "E": case "e": case "c": var d = dateObject.getDay(); var width; switch (l) { case 1: case 2: if (c == "e") { var first = dojo.date.getFirstDayOfWeek(options.locale); d = (d - first + 7) % 7; } if (c != "c") { s = d + 1; pad = true; break; } case 3: case 4: case 5: width = widthList[l - 3]; break; } if (width) { var type = (c == "c") ? "standalone" : "format"; var prop = ["days", type, width].join("-"); s = info[prop][d]; } break; case "a": var timePeriod = (dateObject.getHours() < 12) ? "am" : "pm"; s = info[timePeriod]; break; case "h": case "H": case "K": case "k": var h = dateObject.getHours(); switch (c) { case "h": s = (h % 12) || 12; break; case "H": s = h; break; case "K": s = (h % 12); break; case "k": s = h || 24; break; } pad = true; break; case "m": s = dateObject.getMinutes(); pad = true; break; case "s": s = dateObject.getSeconds(); pad = true; break; case "S": s = Math.round(dateObject.getMilliseconds() * Math.pow(10, l - 3)); break; case "v": case "z": s = dojo.date.getTimezoneName(dateObject); if (s) { break; } l = 4; case "Z": var offset = dateObject.getTimezoneOffset(); var tz = [(offset <= 0 ? "+" : "-"), dojo.string.pad(Math.floor(Math.abs(offset) / 60), 2), dojo.string.pad(Math.abs(offset) % 60, 2)]; if (l == 4) { tz.splice(0, 0, "GMT"); tz.splice(3, 0, ":"); } s = tz.join(""); break; case "Y": case "u": case "W": case "F": case "g": case "A": dojo.debug(match + " modifier not yet implemented"); s = "?"; break; default: dojo.raise("dojo.date.format: invalid pattern char: " + pattern); } if (pad) { s = dojo.string.pad(s, l); } return s; }); } options = options || {}; var locale = dojo.hostenv.normalizeLocale(options.locale); var formatLength = options.formatLength || "full"; var info = dojo.date._getGregorianBundle(locale); var str = []; var sauce = dojo.lang.curry(this, formatPattern, dateObject); if (options.selector != "timeOnly") { var datePattern = options.datePattern || info["dateFormat-" + formatLength]; if (datePattern) { str.push(_processPattern(datePattern, sauce)); } } if (options.selector != "dateOnly") { var timePattern = options.timePattern || info["timeFormat-" + formatLength]; if (timePattern) { str.push(_processPattern(timePattern, sauce)); } } var result = str.join(" "); return result; }; dojo.date.parse = function (value, options) { options = options || {}; var locale = dojo.hostenv.normalizeLocale(options.locale); var info = dojo.date._getGregorianBundle(locale); var formatLength = options.formatLength || "full"; if (!options.selector) { options.selector = "dateOnly"; } var datePattern = options.datePattern || info["dateFormat-" + formatLength]; var timePattern = options.timePattern || info["timeFormat-" + formatLength]; var pattern; if (options.selector == "dateOnly") { pattern = datePattern; } else { if (options.selector == "timeOnly") { pattern = timePattern; } else { if (options.selector == "dateTime") { pattern = datePattern + " " + timePattern; } else { var msg = "dojo.date.parse: Unknown selector param passed: '" + options.selector + "'."; msg += " Defaulting to date pattern."; dojo.debug(msg); pattern = datePattern; } } } var groups = []; var dateREString = _processPattern(pattern, dojo.lang.curry(this, _buildDateTimeRE, groups, info, options)); var dateRE = new RegExp("^" + dateREString + "$"); var match = dateRE.exec(value); if (!match) { return null; } var widthList = ["abbr", "wide", "narrow"]; var result = new Date(1972, 0); var expected = {}; for (var i = 1; i < match.length; i++) { var grp = groups[i - 1]; var l = grp.length; var v = match[i]; switch (grp.charAt(0)) { case "y": if (l != 2) { result.setFullYear(v); expected.year = v; } else { if (v < 100) { v = Number(v); var year = "" + new Date().getFullYear(); var century = year.substring(0, 2) * 100; var yearPart = Number(year.substring(2, 4)); var cutoff = Math.min(yearPart + 20, 99); var num = (v < cutoff) ? century + v : century - 100 + v; result.setFullYear(num); expected.year = num; } else { if (options.strict) { return null; } result.setFullYear(v); expected.year = v; } } break; case "M": if (l > 2) { if (!options.strict) { v = v.replace(/\./g, ""); v = v.toLowerCase(); } var months = info["months-format-" + widthList[l - 3]].concat(); for (var j = 0; j < months.length; j++) { if (!options.strict) { months[j] = months[j].toLowerCase(); } if (v == months[j]) { result.setMonth(j); expected.month = j; break; } } if (j == months.length) { dojo.debug("dojo.date.parse: Could not parse month name: '" + v + "'."); return null; } } else { result.setMonth(v - 1); expected.month = v - 1; } break; case "E": case "e": if (!options.strict) { v = v.toLowerCase(); } var days = info["days-format-" + widthList[l - 3]].concat(); for (var j = 0; j < days.length; j++) { if (!options.strict) { days[j] = days[j].toLowerCase(); } if (v == days[j]) { break; } } if (j == days.length) { dojo.debug("dojo.date.parse: Could not parse weekday name: '" + v + "'."); return null; } break; case "d": result.setDate(v); expected.date = v; break; case "a": var am = options.am || info.am; var pm = options.pm || info.pm; if (!options.strict) { v = v.replace(/\./g, "").toLowerCase(); am = am.replace(/\./g, "").toLowerCase(); pm = pm.replace(/\./g, "").toLowerCase(); } if (options.strict && v != am && v != pm) { dojo.debug("dojo.date.parse: Could not parse am/pm part."); return null; } var hours = result.getHours(); if (v == pm && hours < 12) { result.setHours(hours + 12); } else { if (v == am && hours == 12) { result.setHours(0); } } break; case "K": if (v == 24) { v = 0; } case "h": case "H": case "k": if (v > 23) { dojo.debug("dojo.date.parse: Illegal hours value"); return null; } result.setHours(v); break; case "m": result.setMinutes(v); break; case "s": result.setSeconds(v); break; case "S": result.setMilliseconds(v); break; default: dojo.unimplemented("dojo.date.parse: unsupported pattern char=" + grp.charAt(0)); } } if (expected.year && result.getFullYear() != expected.year) { dojo.debug("Parsed year: '" + result.getFullYear() + "' did not match input year: '" + expected.year + "'."); return null; } if (expected.month && result.getMonth() != expected.month) { dojo.debug("Parsed month: '" + result.getMonth() + "' did not match input month: '" + expected.month + "'."); return null; } if (expected.date && result.getDate() != expected.date) { dojo.debug("Parsed day of month: '" + result.getDate() + "' did not match input day of month: '" + expected.date + "'."); return null; } return result; }; function _processPattern(pattern, applyPattern, applyLiteral, applyAll) { var identity = function (x) { return x; }; applyPattern = applyPattern || identity; applyLiteral = applyLiteral || identity; applyAll = applyAll || identity; var chunks = pattern.match(/(''|[^'])+/g); var literal = false; for (var i = 0; i < chunks.length; i++) { if (!chunks[i]) { chunks[i] = ""; } else { chunks[i] = (literal ? applyLiteral : applyPattern)(chunks[i]); literal = !literal; } } return applyAll(chunks.join("")); } function _buildDateTimeRE(groups, info, options, pattern) { return pattern.replace(/([a-z])\1*/ig, function (match) { var s; var c = match.charAt(0); var l = match.length; switch (c) { case "y": s = "\\d" + ((l == 2) ? "{2,4}" : "+"); break; case "M": s = (l > 2) ? "\\S+" : "\\d{1,2}"; break; case "d": s = "\\d{1,2}"; break; case "E": s = "\\S+"; break; case "h": case "H": case "K": case "k": s = "\\d{1,2}"; break; case "m": case "s": s = "[0-5]\\d"; break; case "S": s = "\\d{1,3}"; break; case "a": var am = options.am || info.am || "AM"; var pm = options.pm || info.pm || "PM"; if (options.strict) { s = am + "|" + pm; } else { s = am; s += (am != am.toLowerCase()) ? "|" + am.toLowerCase() : ""; s += "|"; s += (pm != pm.toLowerCase()) ? pm + "|" + pm.toLowerCase() : pm; } break; default: dojo.unimplemented("parse of date format, pattern=" + pattern); } if (groups) { groups.push(match); } return "\\s*(" + s + ")\\s*"; }); } })(); dojo.date.strftime = function (dateObject, format, locale) { var padChar = null; function _(s, n) { return dojo.string.pad(s, n || 2, padChar || "0"); } var info = dojo.date._getGregorianBundle(locale); function $(property) { switch (property) { case "a": return dojo.date.getDayShortName(dateObject, locale); case "A": return dojo.date.getDayName(dateObject, locale); case "b": case "h": return dojo.date.getMonthShortName(dateObject, locale); case "B": return dojo.date.getMonthName(dateObject, locale); case "c": return dojo.date.format(dateObject, {locale:locale}); case "C": return _(Math.floor(dateObject.getFullYear() / 100)); case "d": return _(dateObject.getDate()); case "D": return $("m") + "/" + $("d") + "/" + $("y"); case "e": if (padChar == null) { padChar = " "; } return _(dateObject.getDate()); case "f": if (padChar == null) { padChar = " "; } return _(dateObject.getMonth() + 1); case "g": break; case "G": dojo.unimplemented("unimplemented modifier 'G'"); break; case "F": return $("Y") + "-" + $("m") + "-" + $("d"); case "H": return _(dateObject.getHours()); case "I": return _(dateObject.getHours() % 12 || 12); case "j": return _(dojo.date.getDayOfYear(dateObject), 3); case "k": if (padChar == null) { padChar = " "; } return _(dateObject.getHours()); case "l": if (padChar == null) { padChar = " "; } return _(dateObject.getHours() % 12 || 12); case "m": return _(dateObject.getMonth() + 1); case "M": return _(dateObject.getMinutes()); case "n": return "\n"; case "p": return info[dateObject.getHours() < 12 ? "am" : "pm"]; case "r": return $("I") + ":" + $("M") + ":" + $("S") + " " + $("p"); case "R": return $("H") + ":" + $("M"); case "S": return _(dateObject.getSeconds()); case "t": return "\t"; case "T": return $("H") + ":" + $("M") + ":" + $("S"); case "u": return String(dateObject.getDay() || 7); case "U": return _(dojo.date.getWeekOfYear(dateObject)); case "V": return _(dojo.date.getIsoWeekOfYear(dateObject)); case "W": return _(dojo.date.getWeekOfYear(dateObject, 1)); case "w": return String(dateObject.getDay()); case "x": return dojo.date.format(dateObject, {selector:"dateOnly", locale:locale}); case "X": return dojo.date.format(dateObject, {selector:"timeOnly", locale:locale}); case "y": return _(dateObject.getFullYear() % 100); case "Y": return String(dateObject.getFullYear()); case "z": var timezoneOffset = dateObject.getTimezoneOffset(); return (timezoneOffset > 0 ? "-" : "+") + _(Math.floor(Math.abs(timezoneOffset) / 60)) + ":" + _(Math.abs(timezoneOffset) % 60); case "Z": return dojo.date.getTimezoneName(dateObject); case "%": return "%"; } } var string = ""; var i = 0; var index = 0; var switchCase = null; while ((index = format.indexOf("%", i)) != -1) { string += format.substring(i, index++); switch (format.charAt(index++)) { case "_": padChar = " "; break; case "-": padChar = ""; break; case "0": padChar = "0"; break; case "^": switchCase = "upper"; break; case "*": switchCase = "lower"; break; case "#": switchCase = "swap"; break; default: padChar = null; index--; break; } var property = $(format.charAt(index++)); switch (switchCase) { case "upper": property = property.toUpperCase(); break; case "lower": property = property.toLowerCase(); break; case "swap": var compareString = property.toLowerCase(); var swapString = ""; var j = 0; var ch = ""; while (j < property.length) { ch = property.charAt(j); swapString += (ch == compareString.charAt(j)) ? ch.toUpperCase() : ch.toLowerCase(); j++; } property = swapString; break; default: break; } switchCase = null; string += property; i = index; } string += format.substring(i); return string; }; (function () { var _customFormats = []; dojo.date.addCustomFormats = function (packageName, bundleName) { _customFormats.push({pkg:packageName, name:bundleName}); }; dojo.date._getGregorianBundle = function (locale) { var gregorian = {}; dojo.lang.forEach(_customFormats, function (desc) { var bundle = dojo.i18n.getLocalization(desc.pkg, desc.name, locale); gregorian = dojo.lang.mixin(gregorian, bundle); }, this); return gregorian; }; })(); dojo.date.addCustomFormats("dojo.i18n.calendar", "gregorian"); dojo.date.addCustomFormats("dojo.i18n.calendar", "gregorianExtras"); dojo.date.getNames = function (item, type, use, locale) { var label; var lookup = dojo.date._getGregorianBundle(locale); var props = [item, use, type]; if (use == "standAlone") { label = lookup[props.join("-")]; } props[1] = "format"; return (label || lookup[props.join("-")]).concat(); }; dojo.date.getDayName = function (dateObject, locale) { return dojo.date.getNames("days", "wide", "format", locale)[dateObject.getDay()]; }; dojo.date.getDayShortName = function (dateObject, locale) { return dojo.date.getNames("days", "abbr", "format", locale)[dateObject.getDay()]; }; dojo.date.getMonthName = function (dateObject, locale) { return dojo.date.getNames("months", "wide", "format", locale)[dateObject.getMonth()]; }; dojo.date.getMonthShortName = function (dateObject, locale) { return dojo.date.getNames("months", "abbr", "format", locale)[dateObject.getMonth()]; }; dojo.date.toRelativeString = function (dateObject) { var now = new Date(); var diff = (now - dateObject) / 1000; var end = " ago"; var future = false; if (diff < 0) { future = true; end = " from now"; diff = -diff; } if (diff < 60) { diff = Math.round(diff); return diff + " second" + (diff == 1 ? "" : "s") + end; } if (diff < 60 * 60) { diff = Math.round(diff / 60); return diff + " minute" + (diff == 1 ? "" : "s") + end; } if (diff < 60 * 60 * 24) { diff = Math.round(diff / 3600); return diff + " hour" + (diff == 1 ? "" : "s") + end; } if (diff < 60 * 60 * 24 * 7) { diff = Math.round(diff / (3600 * 24)); if (diff == 1) { return future ? "Tomorrow" : "Yesterday"; } else { return diff + " days" + end; } } return dojo.date.format(dateObject); }; dojo.date.toSql = function (dateObject, noTime) { return dojo.date.strftime(dateObject, "%F" + !noTime ? " %T" : ""); }; dojo.date.fromSql = function (sqlDate) { var parts = sqlDate.split(/[\- :]/g); while (parts.length < 6) { parts.push(0); } return new Date(parts[0], (parseInt(parts[1], 10) - 1), parts[2], parts[3], parts[4], parts[5]); };

__CPAN_FILE__ src/date/format.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.date.format"], ["require", "dojo.date.common"], ["require", "dojo.date.supplemental"], ["require", "dojo.lang.array"], ["require", "dojo.lang.common"], ["require", "dojo.lang.func"], ["require", "dojo.string.common"], ["require", "dojo.i18n.common"], ["xdRequireLocalization", "dojo.i18n.calendar", "gregorian", null, "ko,zh-cn,zh,sv,ja,en,zh-tw,it,hu,nl,fi,zh-hk,fr,pt,ROOT,es,de,pt-br", "ko,zh-cn,zh,sv,ja,en,zh-tw,it,hu,nl,fi,zh-hk,fr,pt,ROOT,es,de,pt-br"], ["xdRequireLocalization", "dojo.i18n.calendar", "gregorianExtras", null, "zh,ROOT,ja", "zh,ROOT,ja"]], definePackage:function (dojo) { dojo.provide("dojo.date.format"); dojo.require("dojo.date.common"); dojo.require("dojo.date.supplemental"); dojo.require("dojo.lang.array"); dojo.require("dojo.lang.common"); dojo.require("dojo.lang.func"); dojo.require("dojo.string.common"); dojo.require("dojo.i18n.common"); (function () { dojo.date.format = function (dateObject, options) { if (typeof options == "string") { dojo.deprecated("dojo.date.format", "To format dates with POSIX-style strings, please use dojo.date.strftime instead", "0.5"); return dojo.date.strftime(dateObject, options); } function formatPattern(dateObject, pattern) { return pattern.replace(/([a-z])\1*/ig, function (match) { var s; var c = match.charAt(0); var l = match.length; var pad; var widthList = ["abbr", "wide", "narrow"]; switch (c) { case "G": if (l > 3) { dojo.unimplemented("Era format not implemented"); } s = info.eras[dateObject.getFullYear() < 0 ? 1 : 0]; break; case "y": s = dateObject.getFullYear(); switch (l) { case 1: break; case 2: s = String(s).substr(-2); break; default: pad = true; } break; case "Q": case "q": s = Math.ceil((dateObject.getMonth() + 1) / 3); switch (l) { case 1: case 2: pad = true; break; case 3: case 4: dojo.unimplemented("Quarter format not implemented"); } break; case "M": case "L": var m = dateObject.getMonth(); var width; switch (l) { case 1: case 2: s = m + 1; pad = true; break; case 3: case 4: case 5: width = widthList[l - 3]; break; } if (width) { var type = (c == "L") ? "standalone" : "format"; var prop = ["months", type, width].join("-"); s = info[prop][m]; } break; case "w": var firstDay = 0; s = dojo.date.getWeekOfYear(dateObject, firstDay); pad = true; break; case "d": s = dateObject.getDate(); pad = true; break; case "D": s = dojo.date.getDayOfYear(dateObject); pad = true; break; case "E": case "e": case "c": var d = dateObject.getDay(); var width; switch (l) { case 1: case 2: if (c == "e") { var first = dojo.date.getFirstDayOfWeek(options.locale); d = (d - first + 7) % 7; } if (c != "c") { s = d + 1; pad = true; break; } case 3: case 4: case 5: width = widthList[l - 3]; break; } if (width) { var type = (c == "c") ? "standalone" : "format"; var prop = ["days", type, width].join("-"); s = info[prop][d]; } break; case "a": var timePeriod = (dateObject.getHours() < 12) ? "am" : "pm"; s = info[timePeriod]; break; case "h": case "H": case "K": case "k": var h = dateObject.getHours(); switch (c) { case "h": s = (h % 12) || 12; break; case "H": s = h; break; case "K": s = (h % 12); break; case "k": s = h || 24; break; } pad = true; break; case "m": s = dateObject.getMinutes(); pad = true; break; case "s": s = dateObject.getSeconds(); pad = true; break; case "S": s = Math.round(dateObject.getMilliseconds() * Math.pow(10, l - 3)); break; case "v": case "z": s = dojo.date.getTimezoneName(dateObject); if (s) { break; } l = 4; case "Z": var offset = dateObject.getTimezoneOffset(); var tz = [(offset <= 0 ? "+" : "-"), dojo.string.pad(Math.floor(Math.abs(offset) / 60), 2), dojo.string.pad(Math.abs(offset) % 60, 2)]; if (l == 4) { tz.splice(0, 0, "GMT"); tz.splice(3, 0, ":"); } s = tz.join(""); break; case "Y": case "u": case "W": case "F": case "g": case "A": dojo.debug(match + " modifier not yet implemented"); s = "?"; break; default: dojo.raise("dojo.date.format: invalid pattern char: " + pattern); } if (pad) { s = dojo.string.pad(s, l); } return s; }); } options = options || {}; var locale = dojo.hostenv.normalizeLocale(options.locale); var formatLength = options.formatLength || "full"; var info = dojo.date._getGregorianBundle(locale); var str = []; var sauce = dojo.lang.curry(this, formatPattern, dateObject); if (options.selector != "timeOnly") { var datePattern = options.datePattern || info["dateFormat-" + formatLength]; if (datePattern) { str.push(_processPattern(datePattern, sauce)); } } if (options.selector != "dateOnly") { var timePattern = options.timePattern || info["timeFormat-" + formatLength]; if (timePattern) { str.push(_processPattern(timePattern, sauce)); } } var result = str.join(" "); return result; }; dojo.date.parse = function (value, options) { options = options || {}; var locale = dojo.hostenv.normalizeLocale(options.locale); var info = dojo.date._getGregorianBundle(locale); var formatLength = options.formatLength || "full"; if (!options.selector) { options.selector = "dateOnly"; } var datePattern = options.datePattern || info["dateFormat-" + formatLength]; var timePattern = options.timePattern || info["timeFormat-" + formatLength]; var pattern; if (options.selector == "dateOnly") { pattern = datePattern; } else { if (options.selector == "timeOnly") { pattern = timePattern; } else { if (options.selector == "dateTime") { pattern = datePattern + " " + timePattern; } else { var msg = "dojo.date.parse: Unknown selector param passed: '" + options.selector + "'."; msg += " Defaulting to date pattern."; dojo.debug(msg); pattern = datePattern; } } } var groups = []; var dateREString = _processPattern(pattern, dojo.lang.curry(this, _buildDateTimeRE, groups, info, options)); var dateRE = new RegExp("^" + dateREString + "$"); var match = dateRE.exec(value); if (!match) { return null; } var widthList = ["abbr", "wide", "narrow"]; var result = new Date(1972, 0); var expected = {}; for (var i = 1; i < match.length; i++) { var grp = groups[i - 1]; var l = grp.length; var v = match[i]; switch (grp.charAt(0)) { case "y": if (l != 2) { result.setFullYear(v); expected.year = v; } else { if (v < 100) { v = Number(v); var year = "" + new Date().getFullYear(); var century = year.substring(0, 2) * 100; var yearPart = Number(year.substring(2, 4)); var cutoff = Math.min(yearPart + 20, 99); var num = (v < cutoff) ? century + v : century - 100 + v; result.setFullYear(num); expected.year = num; } else { if (options.strict) { return null; } result.setFullYear(v); expected.year = v; } } break; case "M": if (l > 2) { if (!options.strict) { v = v.replace(/\./g, ""); v = v.toLowerCase(); } var months = info["months-format-" + widthList[l - 3]].concat(); for (var j = 0; j < months.length; j++) { if (!options.strict) { months[j] = months[j].toLowerCase(); } if (v == months[j]) { result.setMonth(j); expected.month = j; break; } } if (j == months.length) { dojo.debug("dojo.date.parse: Could not parse month name: '" + v + "'."); return null; } } else { result.setMonth(v - 1); expected.month = v - 1; } break; case "E": case "e": if (!options.strict) { v = v.toLowerCase(); } var days = info["days-format-" + widthList[l - 3]].concat(); for (var j = 0; j < days.length; j++) { if (!options.strict) { days[j] = days[j].toLowerCase(); } if (v == days[j]) { break; } } if (j == days.length) { dojo.debug("dojo.date.parse: Could not parse weekday name: '" + v + "'."); return null; } break; case "d": result.setDate(v); expected.date = v; break; case "a": var am = options.am || info.am; var pm = options.pm || info.pm; if (!options.strict) { v = v.replace(/\./g, "").toLowerCase(); am = am.replace(/\./g, "").toLowerCase(); pm = pm.replace(/\./g, "").toLowerCase(); } if (options.strict && v != am && v != pm) { dojo.debug("dojo.date.parse: Could not parse am/pm part."); return null; } var hours = result.getHours(); if (v == pm && hours < 12) { result.setHours(hours + 12); } else { if (v == am && hours == 12) { result.setHours(0); } } break; case "K": if (v == 24) { v = 0; } case "h": case "H": case "k": if (v > 23) { dojo.debug("dojo.date.parse: Illegal hours value"); return null; } result.setHours(v); break; case "m": result.setMinutes(v); break; case "s": result.setSeconds(v); break; case "S": result.setMilliseconds(v); break; default: dojo.unimplemented("dojo.date.parse: unsupported pattern char=" + grp.charAt(0)); } } if (expected.year && result.getFullYear() != expected.year) { dojo.debug("Parsed year: '" + result.getFullYear() + "' did not match input year: '" + expected.year + "'."); return null; } if (expected.month && result.getMonth() != expected.month) { dojo.debug("Parsed month: '" + result.getMonth() + "' did not match input month: '" + expected.month + "'."); return null; } if (expected.date && result.getDate() != expected.date) { dojo.debug("Parsed day of month: '" + result.getDate() + "' did not match input day of month: '" + expected.date + "'."); return null; } return result; }; function _processPattern(pattern, applyPattern, applyLiteral, applyAll) { var identity = function (x) { return x; }; applyPattern = applyPattern || identity; applyLiteral = applyLiteral || identity; applyAll = applyAll || identity; var chunks = pattern.match(/(''|[^'])+/g); var literal = false; for (var i = 0; i < chunks.length; i++) { if (!chunks[i]) { chunks[i] = ""; } else { chunks[i] = (literal ? applyLiteral : applyPattern)(chunks[i]); literal = !literal; } } return applyAll(chunks.join("")); } function _buildDateTimeRE(groups, info, options, pattern) { return pattern.replace(/([a-z])\1*/ig, function (match) { var s; var c = match.charAt(0); var l = match.length; switch (c) { case "y": s = "\\d" + ((l == 2) ? "{2,4}" : "+"); break; case "M": s = (l > 2) ? "\\S+" : "\\d{1,2}"; break; case "d": s = "\\d{1,2}"; break; case "E": s = "\\S+"; break; case "h": case "H": case "K": case "k": s = "\\d{1,2}"; break; case "m": case "s": s = "[0-5]\\d"; break; case "S": s = "\\d{1,3}"; break; case "a": var am = options.am || info.am || "AM"; var pm = options.pm || info.pm || "PM"; if (options.strict) { s = am + "|" + pm; } else { s = am; s += (am != am.toLowerCase()) ? "|" + am.toLowerCase() : ""; s += "|"; s += (pm != pm.toLowerCase()) ? pm + "|" + pm.toLowerCase() : pm; } break; default: dojo.unimplemented("parse of date format, pattern=" + pattern); } if (groups) { groups.push(match); } return "\\s*(" + s + ")\\s*"; }); } })(); dojo.date.strftime = function (dateObject, format, locale) { var padChar = null; function _(s, n) { return dojo.string.pad(s, n || 2, padChar || "0"); } var info = dojo.date._getGregorianBundle(locale); function $(property) { switch (property) { case "a": return dojo.date.getDayShortName(dateObject, locale); case "A": return dojo.date.getDayName(dateObject, locale); case "b": case "h": return dojo.date.getMonthShortName(dateObject, locale); case "B": return dojo.date.getMonthName(dateObject, locale); case "c": return dojo.date.format(dateObject, {locale:locale}); case "C": return _(Math.floor(dateObject.getFullYear() / 100)); case "d": return _(dateObject.getDate()); case "D": return $("m") + "/" + $("d") + "/" + $("y"); case "e": if (padChar == null) { padChar = " "; } return _(dateObject.getDate()); case "f": if (padChar == null) { padChar = " "; } return _(dateObject.getMonth() + 1); case "g": break; case "G": dojo.unimplemented("unimplemented modifier 'G'"); break; case "F": return $("Y") + "-" + $("m") + "-" + $("d"); case "H": return _(dateObject.getHours()); case "I": return _(dateObject.getHours() % 12 || 12); case "j": return _(dojo.date.getDayOfYear(dateObject), 3); case "k": if (padChar == null) { padChar = " "; } return _(dateObject.getHours()); case "l": if (padChar == null) { padChar = " "; } return _(dateObject.getHours() % 12 || 12); case "m": return _(dateObject.getMonth() + 1); case "M": return _(dateObject.getMinutes()); case "n": return "\n"; case "p": return info[dateObject.getHours() < 12 ? "am" : "pm"]; case "r": return $("I") + ":" + $("M") + ":" + $("S") + " " + $("p"); case "R": return $("H") + ":" + $("M"); case "S": return _(dateObject.getSeconds()); case "t": return "\t"; case "T": return $("H") + ":" + $("M") + ":" + $("S"); case "u": return String(dateObject.getDay() || 7); case "U": return _(dojo.date.getWeekOfYear(dateObject)); case "V": return _(dojo.date.getIsoWeekOfYear(dateObject)); case "W": return _(dojo.date.getWeekOfYear(dateObject, 1)); case "w": return String(dateObject.getDay()); case "x": return dojo.date.format(dateObject, {selector:"dateOnly", locale:locale}); case "X": return dojo.date.format(dateObject, {selector:"timeOnly", locale:locale}); case "y": return _(dateObject.getFullYear() % 100); case "Y": return String(dateObject.getFullYear()); case "z": var timezoneOffset = dateObject.getTimezoneOffset(); return (timezoneOffset > 0 ? "-" : "+") + _(Math.floor(Math.abs(timezoneOffset) / 60)) + ":" + _(Math.abs(timezoneOffset) % 60); case "Z": return dojo.date.getTimezoneName(dateObject); case "%": return "%"; } } var string = ""; var i = 0; var index = 0; var switchCase = null; while ((index = format.indexOf("%", i)) != -1) { string += format.substring(i, index++); switch (format.charAt(index++)) { case "_": padChar = " "; break; case "-": padChar = ""; break; case "0": padChar = "0"; break; case "^": switchCase = "upper"; break; case "*": switchCase = "lower"; break; case "#": switchCase = "swap"; break; default: padChar = null; index--; break; } var property = $(format.charAt(index++)); switch (switchCase) { case "upper": property = property.toUpperCase(); break; case "lower": property = property.toLowerCase(); break; case "swap": var compareString = property.toLowerCase(); var swapString = ""; var j = 0; var ch = ""; while (j < property.length) { ch = property.charAt(j); swapString += (ch == compareString.charAt(j)) ? ch.toUpperCase() : ch.toLowerCase(); j++; } property = swapString; break; default: break; } switchCase = null; string += property; i = index; } string += format.substring(i); return string; }; (function () { var _customFormats = []; dojo.date.addCustomFormats = function (packageName, bundleName) { _customFormats.push({pkg:packageName, name:bundleName}); }; dojo.date._getGregorianBundle = function (locale) { var gregorian = {}; dojo.lang.forEach(_customFormats, function (desc) { var bundle = dojo.i18n.getLocalization(desc.pkg, desc.name, locale); gregorian = dojo.lang.mixin(gregorian, bundle); }, this); return gregorian; }; })(); dojo.date.addCustomFormats("dojo.i18n.calendar", "gregorian"); dojo.date.addCustomFormats("dojo.i18n.calendar", "gregorianExtras"); dojo.date.getNames = function (item, type, use, locale) { var label; var lookup = dojo.date._getGregorianBundle(locale); var props = [item, use, type]; if (use == "standAlone") { label = lookup[props.join("-")]; } props[1] = "format"; return (label || lookup[props.join("-")]).concat(); }; dojo.date.getDayName = function (dateObject, locale) { return dojo.date.getNames("days", "wide", "format", locale)[dateObject.getDay()]; }; dojo.date.getDayShortName = function (dateObject, locale) { return dojo.date.getNames("days", "abbr", "format", locale)[dateObject.getDay()]; }; dojo.date.getMonthName = function (dateObject, locale) { return dojo.date.getNames("months", "wide", "format", locale)[dateObject.getMonth()]; }; dojo.date.getMonthShortName = function (dateObject, locale) { return dojo.date.getNames("months", "abbr", "format", locale)[dateObject.getMonth()]; }; dojo.date.toRelativeString = function (dateObject) { var now = new Date(); var diff = (now - dateObject) / 1000; var end = " ago"; var future = false; if (diff < 0) { future = true; end = " from now"; diff = -diff; } if (diff < 60) { diff = Math.round(diff); return diff + " second" + (diff == 1 ? "" : "s") + end; } if (diff < 60 * 60) { diff = Math.round(diff / 60); return diff + " minute" + (diff == 1 ? "" : "s") + end; } if (diff < 60 * 60 * 24) { diff = Math.round(diff / 3600); return diff + " hour" + (diff == 1 ? "" : "s") + end; } if (diff < 60 * 60 * 24 * 7) { diff = Math.round(diff / (3600 * 24)); if (diff == 1) { return future ? "Tomorrow" : "Yesterday"; } else { return diff + " days" + end; } } return dojo.date.format(dateObject); }; dojo.date.toSql = function (dateObject, noTime) { return dojo.date.strftime(dateObject, "%F" + !noTime ? " %T" : ""); }; dojo.date.fromSql = function (sqlDate) { var parts = sqlDate.split(/[\- :]/g); while (parts.length < 6) { parts.push(0); } return new Date(parts[0], (parseInt(parts[1], 10) - 1), parts[2], parts[3], parts[4], parts[5]); }; }});

__CPAN_FILE__ src/date/common.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.date.common"]], definePackage:function (dojo) { dojo.provide("dojo.date.common"); dojo.date.setDayOfYear = function (dateObject, dayOfYear) { dateObject.setMonth(0); dateObject.setDate(dayOfYear); return dateObject; }; dojo.date.getDayOfYear = function (dateObject) { var fullYear = dateObject.getFullYear(); var lastDayOfPrevYear = new Date(fullYear - 1, 11, 31); return Math.floor((dateObject.getTime() - lastDayOfPrevYear.getTime()) / 86400000); }; dojo.date.setWeekOfYear = function (dateObject, week, firstDay) { if (arguments.length == 1) { firstDay = 0; } dojo.unimplemented("dojo.date.setWeekOfYear"); }; dojo.date.getWeekOfYear = function (dateObject, firstDay) { if (arguments.length == 1) { firstDay = 0; } var firstDayOfYear = new Date(dateObject.getFullYear(), 0, 1); var day = firstDayOfYear.getDay(); firstDayOfYear.setDate(firstDayOfYear.getDate() - day + firstDay - (day > firstDay ? 7 : 0)); return Math.floor((dateObject.getTime() - firstDayOfYear.getTime()) / 604800000); }; dojo.date.setIsoWeekOfYear = function (dateObject, week, firstDay) { if (arguments.length == 1) { firstDay = 1; } dojo.unimplemented("dojo.date.setIsoWeekOfYear"); }; dojo.date.getIsoWeekOfYear = function (dateObject, firstDay) { if (arguments.length == 1) { firstDay = 1; } dojo.unimplemented("dojo.date.getIsoWeekOfYear"); }; dojo.date.shortTimezones = ["IDLW", "BET", "HST", "MART", "AKST", "PST", "MST", "CST", "EST", "AST", "NFT", "BST", "FST", "AT", "GMT", "CET", "EET", "MSK", "IRT", "GST", "AFT", "AGTT", "IST", "NPT", "ALMT", "MMT", "JT", "AWST", "JST", "ACST", "AEST", "LHST", "VUT", "NFT", "NZT", "CHAST", "PHOT", "LINT"]; dojo.date.timezoneOffsets = [-720, -660, -600, -570, -540, -480, -420, -360, -300, -240, -210, -180, -120, -60, 0, 60, 120, 180, 210, 240, 270, 300, 330, 345, 360, 390, 420, 480, 540, 570, 600, 630, 660, 690, 720, 765, 780, 840]; dojo.date.getDaysInMonth = function (dateObject) { var month = dateObject.getMonth(); var days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; if (month == 1 && dojo.date.isLeapYear(dateObject)) { return 29; } else { return days[month]; } }; dojo.date.isLeapYear = function (dateObject) { var year = dateObject.getFullYear(); return (year % 400 == 0) ? true : (year % 100 == 0) ? false : (year % 4 == 0) ? true : false; }; dojo.date.getTimezoneName = function (dateObject) { var str = dateObject.toString(); var tz = ""; var match; var pos = str.indexOf("("); if (pos > -1) { pos++; tz = str.substring(pos, str.indexOf(")")); } else { var pat = /([A-Z\/]+) \d{4}$/; if ((match = str.match(pat))) { tz = match[1]; } else { str = dateObject.toLocaleString(); pat = / ([A-Z\/]+)$/; if ((match = str.match(pat))) { tz = match[1]; } } } return tz == "AM" || tz == "PM" ? "" : tz; }; dojo.date.getOrdinal = function (dateObject) { var date = dateObject.getDate(); if (date % 100 != 11 && date % 10 == 1) { return "st"; } else { if (date % 100 != 12 && date % 10 == 2) { return "nd"; } else { if (date % 100 != 13 && date % 10 == 3) { return "rd"; } else { return "th"; } } } }; dojo.date.compareTypes = {DATE:1, TIME:2}; dojo.date.compare = function (dateA, dateB, options) { var dA = dateA; var dB = dateB || new Date(); var now = new Date(); with (dojo.date.compareTypes) { var opt = options || (DATE | TIME); var d1 = new Date((opt & DATE) ? dA.getFullYear() : now.getFullYear(), (opt & DATE) ? dA.getMonth() : now.getMonth(), (opt & DATE) ? dA.getDate() : now.getDate(), (opt & TIME) ? dA.getHours() : 0, (opt & TIME) ? dA.getMinutes() : 0, (opt & TIME) ? dA.getSeconds() : 0); var d2 = new Date((opt & DATE) ? dB.getFullYear() : now.getFullYear(), (opt & DATE) ? dB.getMonth() : now.getMonth(), (opt & DATE) ? dB.getDate() : now.getDate(), (opt & TIME) ? dB.getHours() : 0, (opt & TIME) ? dB.getMinutes() : 0, (opt & TIME) ? dB.getSeconds() : 0); } if (d1.valueOf() > d2.valueOf()) { return 1; } if (d1.valueOf() < d2.valueOf()) { return -1; } return 0; }; dojo.date.dateParts = {YEAR:0, MONTH:1, DAY:2, HOUR:3, MINUTE:4, SECOND:5, MILLISECOND:6, QUARTER:7, WEEK:8, WEEKDAY:9}; dojo.date.add = function (dt, interv, incr) { if (typeof dt == "number") { dt = new Date(dt); } function fixOvershoot() { if (sum.getDate() < dt.getDate()) { sum.setDate(0); } } var sum = new Date(dt); with (dojo.date.dateParts) { switch (interv) { case YEAR: sum.setFullYear(dt.getFullYear() + incr); fixOvershoot(); break; case QUARTER: incr *= 3; case MONTH: sum.setMonth(dt.getMonth() + incr); fixOvershoot(); break; case WEEK: incr *= 7; case DAY: sum.setDate(dt.getDate() + incr); break; case WEEKDAY: var dat = dt.getDate(); var weeks = 0; var days = 0; var strt = 0; var trgt = 0; var adj = 0; var mod = incr % 5; if (mod == 0) { days = (incr > 0) ? 5 : -5; weeks = (incr > 0) ? ((incr - 5) / 5) : ((incr + 5) / 5); } else { days = mod; weeks = parseInt(incr / 5); } strt = dt.getDay(); if (strt == 6 && incr > 0) { adj = 1; } else { if (strt == 0 && incr < 0) { adj = -1; } } trgt = (strt + days); if (trgt == 0 || trgt == 6) { adj = (incr > 0) ? 2 : -2; } sum.setDate(dat + (7 * weeks) + days + adj); break; case HOUR: sum.setHours(sum.getHours() + incr); break; case MINUTE: sum.setMinutes(sum.getMinutes() + incr); break; case SECOND: sum.setSeconds(sum.getSeconds() + incr); break; case MILLISECOND: sum.setMilliseconds(sum.getMilliseconds() + incr); break; default: break; } } return sum; }; dojo.date.diff = function (dtA, dtB, interv) { if (typeof dtA == "number") { dtA = new Date(dtA); } if (typeof dtB == "number") { dtB = new Date(dtB); } var yeaDiff = dtB.getFullYear() - dtA.getFullYear(); var monDiff = (dtB.getMonth() - dtA.getMonth()) + (yeaDiff * 12); var msDiff = dtB.getTime() - dtA.getTime(); var secDiff = msDiff / 1000; var minDiff = secDiff / 60; var houDiff = minDiff / 60; var dayDiff = houDiff / 24; var weeDiff = dayDiff / 7; var delta = 0; with (dojo.date.dateParts) { switch (interv) { case YEAR: delta = yeaDiff; break; case QUARTER: var mA = dtA.getMonth(); var mB = dtB.getMonth(); var qA = Math.floor(mA / 3) + 1; var qB = Math.floor(mB / 3) + 1; qB += (yeaDiff * 4); delta = qB - qA; break; case MONTH: delta = monDiff; break; case WEEK: delta = parseInt(weeDiff); break; case DAY: delta = dayDiff; break; case WEEKDAY: var days = Math.round(dayDiff); var weeks = parseInt(days / 7); var mod = days % 7; if (mod == 0) { days = weeks * 5; } else { var adj = 0; var aDay = dtA.getDay(); var bDay = dtB.getDay(); weeks = parseInt(days / 7); mod = days % 7; var dtMark = new Date(dtA); dtMark.setDate(dtMark.getDate() + (weeks * 7)); var dayMark = dtMark.getDay(); if (dayDiff > 0) { switch (true) { case aDay == 6: adj = -1; break; case aDay == 0: adj = 0; break; case bDay == 6: adj = -1; break; case bDay == 0: adj = -2; break; case (dayMark + mod) > 5: adj = -2; break; default: break; } } else { if (dayDiff < 0) { switch (true) { case aDay == 6: adj = 0; break; case aDay == 0: adj = 1; break; case bDay == 6: adj = 2; break; case bDay == 0: adj = 1; break; case (dayMark + mod) < 0: adj = 2; break; default: break; } } } days += adj; days -= (weeks * 2); } delta = days; break; case HOUR: delta = houDiff; break; case MINUTE: delta = minDiff; break; case SECOND: delta = secDiff; break; case MILLISECOND: delta = msDiff; break; default: break; } } return Math.round(delta); }; }});

__CPAN_DIR__ src/undo __CPAN_FILE__ src/undo/browser.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.undo.browser"); dojo.require("dojo.io.common"); try { if ((!djConfig["preventBackButtonFix"]) && (!dojo.hostenv.post_load_)) { document.write("<iframe style='border: 0px; width: 1px; height: 1px; position: absolute; bottom: 0px; right: 0px; visibility: visible;' name='djhistory' id='djhistory' src='" + (djConfig["dojoIframeHistoryUrl"] || dojo.hostenv.getBaseScriptUri() + "iframe_history.html") + "'></iframe>"); } } catch (e) { } if (dojo.render.html.opera) { dojo.debug("Opera is not supported with dojo.undo.browser, so back/forward detection will not work."); } dojo.undo.browser = {initialHref:(!dj_undef("window")) ? window.location.href : "", initialHash:(!dj_undef("window")) ? window.location.hash : "", moveForward:false, historyStack:[], forwardStack:[], historyIframe:null, bookmarkAnchor:null, locationTimer:null, setInitialState:function (args) { this.initialState = this._createState(this.initialHref, args, this.initialHash); }, addToHistory:function (args) { this.forwardStack = []; var hash = null; var url = null; if (!this.historyIframe) { if (djConfig["useXDomain"] && !djConfig["dojoIframeHistoryUrl"]) { dojo.debug("dojo.undo.browser: When using cross-domain Dojo builds," + " please save iframe_history.html to your domain and set djConfig.dojoIframeHistoryUrl" + " to the path on your domain to iframe_history.html"); } this.historyIframe = window.frames["djhistory"]; } if (!this.bookmarkAnchor) { this.bookmarkAnchor = document.createElement("a"); dojo.body().appendChild(this.bookmarkAnchor); this.bookmarkAnchor.style.display = "none"; } if (args["changeUrl"]) { hash = "#" + ((args["changeUrl"] !== true) ? args["changeUrl"] : (new Date()).getTime()); if (this.historyStack.length == 0 && this.initialState.urlHash == hash) { this.initialState = this._createState(url, args, hash); return; } else { if (this.historyStack.length > 0 && this.historyStack[this.historyStack.length - 1].urlHash == hash) { this.historyStack[this.historyStack.length - 1] = this._createState(url, args, hash); return; } } this.changingUrl = true; setTimeout("window.location.href = '" + hash + "'; dojo.undo.browser.changingUrl = false;", 1); this.bookmarkAnchor.href = hash; if (dojo.render.html.ie) { url = this._loadIframeHistory(); var oldCB = args["back"] || args["backButton"] || args["handle"]; var tcb = function (handleName) { if (window.location.hash != "") { setTimeout("window.location.href = '" + hash + "';", 1); } oldCB.apply(this, [handleName]); }; if (args["back"]) { args.back = tcb; } else { if (args["backButton"]) { args.backButton = tcb; } else { if (args["handle"]) { args.handle = tcb; } } } var oldFW = args["forward"] || args["forwardButton"] || args["handle"]; var tfw = function (handleName) { if (window.location.hash != "") { window.location.href = hash; } if (oldFW) { oldFW.apply(this, [handleName]); } }; if (args["forward"]) { args.forward = tfw; } else { if (args["forwardButton"]) { args.forwardButton = tfw; } else { if (args["handle"]) { args.handle = tfw; } } } } else { if (dojo.render.html.moz) { if (!this.locationTimer) { this.locationTimer = setInterval("dojo.undo.browser.checkLocation();", 200); } } } } else { url = this._loadIframeHistory(); } this.historyStack.push(this._createState(url, args, hash)); }, checkLocation:function () { if (!this.changingUrl) { var hsl = this.historyStack.length; if ((window.location.hash == this.initialHash || window.location.href == this.initialHref) && (hsl == 1)) { this.handleBackButton(); return; } if (this.forwardStack.length > 0) { if (this.forwardStack[this.forwardStack.length - 1].urlHash == window.location.hash) { this.handleForwardButton(); return; } } if ((hsl >= 2) && (this.historyStack[hsl - 2])) { if (this.historyStack[hsl - 2].urlHash == window.location.hash) { this.handleBackButton(); return; } } } }, iframeLoaded:function (evt, ifrLoc) { if (!dojo.render.html.opera) { var query = this._getUrlQuery(ifrLoc.href); if (query == null) { if (this.historyStack.length == 1) { this.handleBackButton(); } return; } if (this.moveForward) { this.moveForward = false; return; } if (this.historyStack.length >= 2 && query == this._getUrlQuery(this.historyStack[this.historyStack.length - 2].url)) { this.handleBackButton(); } else { if (this.forwardStack.length > 0 && query == this._getUrlQuery(this.forwardStack[this.forwardStack.length - 1].url)) { this.handleForwardButton(); } } } }, handleBackButton:function () { var current = this.historyStack.pop(); if (!current) { return; } var last = this.historyStack[this.historyStack.length - 1]; if (!last && this.historyStack.length == 0) { last = this.initialState; } if (last) { if (last.kwArgs["back"]) { last.kwArgs["back"](); } else { if (last.kwArgs["backButton"]) { last.kwArgs["backButton"](); } else { if (last.kwArgs["handle"]) { last.kwArgs.handle("back"); } } } } this.forwardStack.push(current); }, handleForwardButton:function () { var last = this.forwardStack.pop(); if (!last) { return; } if (last.kwArgs["forward"]) { last.kwArgs.forward(); } else { if (last.kwArgs["forwardButton"]) { last.kwArgs.forwardButton(); } else { if (last.kwArgs["handle"]) { last.kwArgs.handle("forward"); } } } this.historyStack.push(last); }, _createState:function (url, args, hash) { return {"url":url, "kwArgs":args, "urlHash":hash}; }, _getUrlQuery:function (url) { var segments = url.split("?"); if (segments.length < 2) { return null; } else { return segments[1]; } }, _loadIframeHistory:function () { var url = (djConfig["dojoIframeHistoryUrl"] || dojo.hostenv.getBaseScriptUri() + "iframe_history.html") + "?" + (new Date()).getTime(); this.moveForward = true; dojo.io.setIFrameSrc(this.historyIframe, url, false); return url; }};

__CPAN_FILE__ src/undo/Manager.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.undo.Manager"], ["require", "dojo.lang.common"]], definePackage:function (dojo) { dojo.provide("dojo.undo.Manager"); dojo.require("dojo.lang.common"); dojo.undo.Manager = function (parent) { this.clear(); this._parent = parent; }; dojo.extend(dojo.undo.Manager, {_parent:null, _undoStack:null, _redoStack:null, _currentManager:null, canUndo:false, canRedo:false, isUndoing:false, isRedoing:false, onUndo:function (manager, item) { }, onRedo:function (manager, item) { }, onUndoAny:function (manager, item) { }, onRedoAny:function (manager, item) { }, _updateStatus:function () { this.canUndo = this._undoStack.length > 0; this.canRedo = this._redoStack.length > 0; }, clear:function () { this._undoStack = []; this._redoStack = []; this._currentManager = this; this.isUndoing = false; this.isRedoing = false; this._updateStatus(); }, undo:function () { if (!this.canUndo) { return false; } this.endAllTransactions(); this.isUndoing = true; var top = this._undoStack.pop(); if (top instanceof dojo.undo.Manager) { top.undoAll(); } else { top.undo(); } if (top.redo) { this._redoStack.push(top); } this.isUndoing = false; this._updateStatus(); this.onUndo(this, top); if (!(top instanceof dojo.undo.Manager)) { this.getTop().onUndoAny(this, top); } return true; }, redo:function () { if (!this.canRedo) { return false; } this.isRedoing = true; var top = this._redoStack.pop(); if (top instanceof dojo.undo.Manager) { top.redoAll(); } else { top.redo(); } this._undoStack.push(top); this.isRedoing = false; this._updateStatus(); this.onRedo(this, top); if (!(top instanceof dojo.undo.Manager)) { this.getTop().onRedoAny(this, top); } return true; }, undoAll:function () { while (this._undoStack.length > 0) { this.undo(); } }, redoAll:function () { while (this._redoStack.length > 0) { this.redo(); } }, push:function (undo, redo, description) { if (!undo) { return; } if (this._currentManager == this) { this._undoStack.push({undo:undo, redo:redo, description:description}); } else { this._currentManager.push.apply(this._currentManager, arguments); } this._redoStack = []; this._updateStatus(); }, concat:function (manager) { if (!manager) { return; } if (this._currentManager == this) { for (var x = 0; x < manager._undoStack.length; x++) { this._undoStack.push(manager._undoStack[x]); } if (manager._undoStack.length > 0) { this._redoStack = []; } this._updateStatus(); } else { this._currentManager.concat.apply(this._currentManager, arguments); } }, beginTransaction:function (description) { if (this._currentManager == this) { var mgr = new dojo.undo.Manager(this); mgr.description = description ? description : ""; this._undoStack.push(mgr); this._currentManager = mgr; return mgr; } else { this._currentManager = this._currentManager.beginTransaction.apply(this._currentManager, arguments); } }, endTransaction:function (flatten) { if (this._currentManager == this) { if (this._parent) { this._parent._currentManager = this._parent; if (this._undoStack.length == 0 || flatten) { var idx = dojo.lang.find(this._parent._undoStack, this); if (idx >= 0) { this._parent._undoStack.splice(idx, 1); if (flatten) { for (var x = 0; x < this._undoStack.length; x++) { this._parent._undoStack.splice(idx++, 0, this._undoStack[x]); } this._updateStatus(); } } } return this._parent; } } else { this._currentManager = this._currentManager.endTransaction.apply(this._currentManager, arguments); } }, endAllTransactions:function () { while (this._currentManager != this) { this.endTransaction(); } }, getTop:function () { if (this._parent) { return this._parent.getTop(); } else { return this; } }}); }});

__CPAN_FILE__ src/undo/browser.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.undo.browser"], ["require", "dojo.io.common"]], definePackage:function (dojo) { dojo.provide("dojo.undo.browser"); dojo.require("dojo.io.common"); try { if ((!djConfig["preventBackButtonFix"]) && (!dojo.hostenv.post_load_)) { document.write("<iframe style='border: 0px; width: 1px; height: 1px; position: absolute; bottom: 0px; right: 0px; visibility: visible;' name='djhistory' id='djhistory' src='" + (djConfig["dojoIframeHistoryUrl"] || dojo.hostenv.getBaseScriptUri() + "iframe_history.html") + "'></iframe>"); } } catch (e) { } if (dojo.render.html.opera) { dojo.debug("Opera is not supported with dojo.undo.browser, so back/forward detection will not work."); } dojo.undo.browser = {initialHref:(!dj_undef("window")) ? window.location.href : "", initialHash:(!dj_undef("window")) ? window.location.hash : "", moveForward:false, historyStack:[], forwardStack:[], historyIframe:null, bookmarkAnchor:null, locationTimer:null, setInitialState:function (args) { this.initialState = this._createState(this.initialHref, args, this.initialHash); }, addToHistory:function (args) { this.forwardStack = []; var hash = null; var url = null; if (!this.historyIframe) { if (djConfig["useXDomain"] && !djConfig["dojoIframeHistoryUrl"]) { dojo.debug("dojo.undo.browser: When using cross-domain Dojo builds," + " please save iframe_history.html to your domain and set djConfig.dojoIframeHistoryUrl" + " to the path on your domain to iframe_history.html"); } this.historyIframe = window.frames["djhistory"]; } if (!this.bookmarkAnchor) { this.bookmarkAnchor = document.createElement("a"); dojo.body().appendChild(this.bookmarkAnchor); this.bookmarkAnchor.style.display = "none"; } if (args["changeUrl"]) { hash = "#" + ((args["changeUrl"] !== true) ? args["changeUrl"] : (new Date()).getTime()); if (this.historyStack.length == 0 && this.initialState.urlHash == hash) { this.initialState = this._createState(url, args, hash); return; } else { if (this.historyStack.length > 0 && this.historyStack[this.historyStack.length - 1].urlHash == hash) { this.historyStack[this.historyStack.length - 1] = this._createState(url, args, hash); return; } } this.changingUrl = true; setTimeout("window.location.href = '" + hash + "'; dojo.undo.browser.changingUrl = false;", 1); this.bookmarkAnchor.href = hash; if (dojo.render.html.ie) { url = this._loadIframeHistory(); var oldCB = args["back"] || args["backButton"] || args["handle"]; var tcb = function (handleName) { if (window.location.hash != "") { setTimeout("window.location.href = '" + hash + "';", 1); } oldCB.apply(this, [handleName]); }; if (args["back"]) { args.back = tcb; } else { if (args["backButton"]) { args.backButton = tcb; } else { if (args["handle"]) { args.handle = tcb; } } } var oldFW = args["forward"] || args["forwardButton"] || args["handle"]; var tfw = function (handleName) { if (window.location.hash != "") { window.location.href = hash; } if (oldFW) { oldFW.apply(this, [handleName]); } }; if (args["forward"]) { args.forward = tfw; } else { if (args["forwardButton"]) { args.forwardButton = tfw; } else { if (args["handle"]) { args.handle = tfw; } } } } else { if (dojo.render.html.moz) { if (!this.locationTimer) { this.locationTimer = setInterval("dojo.undo.browser.checkLocation();", 200); } } } } else { url = this._loadIframeHistory(); } this.historyStack.push(this._createState(url, args, hash)); }, checkLocation:function () { if (!this.changingUrl) { var hsl = this.historyStack.length; if ((window.location.hash == this.initialHash || window.location.href == this.initialHref) && (hsl == 1)) { this.handleBackButton(); return; } if (this.forwardStack.length > 0) { if (this.forwardStack[this.forwardStack.length - 1].urlHash == window.location.hash) { this.handleForwardButton(); return; } } if ((hsl >= 2) && (this.historyStack[hsl - 2])) { if (this.historyStack[hsl - 2].urlHash == window.location.hash) { this.handleBackButton(); return; } } } }, iframeLoaded:function (evt, ifrLoc) { if (!dojo.render.html.opera) { var query = this._getUrlQuery(ifrLoc.href); if (query == null) { if (this.historyStack.length == 1) { this.handleBackButton(); } return; } if (this.moveForward) { this.moveForward = false; return; } if (this.historyStack.length >= 2 && query == this._getUrlQuery(this.historyStack[this.historyStack.length - 2].url)) { this.handleBackButton(); } else { if (this.forwardStack.length > 0 && query == this._getUrlQuery(this.forwardStack[this.forwardStack.length - 1].url)) { this.handleForwardButton(); } } } }, handleBackButton:function () { var current = this.historyStack.pop(); if (!current) { return; } var last = this.historyStack[this.historyStack.length - 1]; if (!last && this.historyStack.length == 0) { last = this.initialState; } if (last) { if (last.kwArgs["back"]) { last.kwArgs["back"](); } else { if (last.kwArgs["backButton"]) { last.kwArgs["backButton"](); } else { if (last.kwArgs["handle"]) { last.kwArgs.handle("back"); } } } } this.forwardStack.push(current); }, handleForwardButton:function () { var last = this.forwardStack.pop(); if (!last) { return; } if (last.kwArgs["forward"]) { last.kwArgs.forward(); } else { if (last.kwArgs["forwardButton"]) { last.kwArgs.forwardButton(); } else { if (last.kwArgs["handle"]) { last.kwArgs.handle("forward"); } } } this.historyStack.push(last); }, _createState:function (url, args, hash) { return {"url":url, "kwArgs":args, "urlHash":hash}; }, _getUrlQuery:function (url) { var segments = url.split("?"); if (segments.length < 2) { return null; } else { return segments[1]; } }, _loadIframeHistory:function () { var url = (djConfig["dojoIframeHistoryUrl"] || dojo.hostenv.getBaseScriptUri() + "iframe_history.html") + "?" + (new Date()).getTime(); this.moveForward = true; dojo.io.setIFrameSrc(this.historyIframe, url, false); return url; }}; }});

__CPAN_FILE__ src/undo/__package__.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.require("dojo.undo.Manager"); dojo.provide("dojo.undo.*");

__CPAN_FILE__ src/undo/Manager.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.undo.Manager"); dojo.require("dojo.lang.common"); dojo.undo.Manager = function (parent) { this.clear(); this._parent = parent; }; dojo.extend(dojo.undo.Manager, {_parent:null, _undoStack:null, _redoStack:null, _currentManager:null, canUndo:false, canRedo:false, isUndoing:false, isRedoing:false, onUndo:function (manager, item) { }, onRedo:function (manager, item) { }, onUndoAny:function (manager, item) { }, onRedoAny:function (manager, item) { }, _updateStatus:function () { this.canUndo = this._undoStack.length > 0; this.canRedo = this._redoStack.length > 0; }, clear:function () { this._undoStack = []; this._redoStack = []; this._currentManager = this; this.isUndoing = false; this.isRedoing = false; this._updateStatus(); }, undo:function () { if (!this.canUndo) { return false; } this.endAllTransactions(); this.isUndoing = true; var top = this._undoStack.pop(); if (top instanceof dojo.undo.Manager) { top.undoAll(); } else { top.undo(); } if (top.redo) { this._redoStack.push(top); } this.isUndoing = false; this._updateStatus(); this.onUndo(this, top); if (!(top instanceof dojo.undo.Manager)) { this.getTop().onUndoAny(this, top); } return true; }, redo:function () { if (!this.canRedo) { return false; } this.isRedoing = true; var top = this._redoStack.pop(); if (top instanceof dojo.undo.Manager) { top.redoAll(); } else { top.redo(); } this._undoStack.push(top); this.isRedoing = false; this._updateStatus(); this.onRedo(this, top); if (!(top instanceof dojo.undo.Manager)) { this.getTop().onRedoAny(this, top); } return true; }, undoAll:function () { while (this._undoStack.length > 0) { this.undo(); } }, redoAll:function () { while (this._redoStack.length > 0) { this.redo(); } }, push:function (undo, redo, description) { if (!undo) { return; } if (this._currentManager == this) { this._undoStack.push({undo:undo, redo:redo, description:description}); } else { this._currentManager.push.apply(this._currentManager, arguments); } this._redoStack = []; this._updateStatus(); }, concat:function (manager) { if (!manager) { return; } if (this._currentManager == this) { for (var x = 0; x < manager._undoStack.length; x++) { this._undoStack.push(manager._undoStack[x]); } if (manager._undoStack.length > 0) { this._redoStack = []; } this._updateStatus(); } else { this._currentManager.concat.apply(this._currentManager, arguments); } }, beginTransaction:function (description) { if (this._currentManager == this) { var mgr = new dojo.undo.Manager(this); mgr.description = description ? description : ""; this._undoStack.push(mgr); this._currentManager = mgr; return mgr; } else { this._currentManager = this._currentManager.beginTransaction.apply(this._currentManager, arguments); } }, endTransaction:function (flatten) { if (this._currentManager == this) { if (this._parent) { this._parent._currentManager = this._parent; if (this._undoStack.length == 0 || flatten) { var idx = dojo.lang.find(this._parent._undoStack, this); if (idx >= 0) { this._parent._undoStack.splice(idx, 1); if (flatten) { for (var x = 0; x < this._undoStack.length; x++) { this._parent._undoStack.splice(idx++, 0, this._undoStack[x]); } this._updateStatus(); } } } return this._parent; } } else { this._currentManager = this._currentManager.endTransaction.apply(this._currentManager, arguments); } }, endAllTransactions:function () { while (this._currentManager != this) { this.endTransaction(); } }, getTop:function () { if (this._parent) { return this._parent.getTop(); } else { return this; } }});

__CPAN_FILE__ src/undo/__package__.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["require", "dojo.undo.Manager"], ["provide", "dojo.undo.*"]], definePackage:function (dojo) { dojo.require("dojo.undo.Manager"); dojo.provide("dojo.undo.*"); }});

__CPAN_DIR__ src/flash __CPAN_DIR__ src/flash/flash8 __CPAN_FILE__ src/flash/flash8/ExpressInstall.as /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/

/** * Based on the expressinstall.as class created by Geoff Stearns as part * of the FlashObject library. * * Use this file to invoke the Macromedia Flash Player Express Install functionality * This file is intended for use with the FlashObject embed script. You can download FlashObject * and this file at the following URL: http://blog.deconcept.com/flashobject/ * * Usage: * var ExpressInstall = new ExpressInstall(); * * // test to see if install is needed: * if (ExpressInstall.needsUpdate) { // returns true if update is needed * ExpressInstall.init(); // starts the update * } * * NOTE: Your Flash movie must be at least 214px by 137px in order to use ExpressInstall. * */

class ExpressInstall { public var needsUpdate:Boolean; private var updater:MovieClip; private var hold:MovieClip;

	public function ExpressInstall(){
		// does the user need to update?
		this.needsUpdate = (_root.MMplayerType == undefined) ? false : true;	
	}

	public function init():Void{
		this.loadUpdater();
	}

	public function loadUpdater():Void {
		System.security.allowDomain("fpdownload.macromedia.com");

		// hope that nothing is at a depth of 10000000, you can change this depth if needed, but you want
		// it to be on top of your content if you have any stuff on the first frame
		this.updater = _root.createEmptyMovieClip("expressInstallHolder", 10000000);

		// register the callback so we know if they cancel or there is an error
		var _self = this;
		this.updater.installStatus = _self.onInstallStatus;
		this.hold = this.updater.createEmptyMovieClip("hold", 1);

		// can't use movieClipLoader because it has to work in 6.0.65
		this.updater.onEnterFrame = function():Void {
			if(typeof this.hold.startUpdate == 'function'){
				_self.initUpdater();
				this.onEnterFrame = null;
			}
		}

		var cacheBuster:Number = Math.random();

		this.hold.loadMovie("http://fpdownload.macromedia.com/pub/flashplayer/"
												+"update/current/swf/autoUpdater.swf?"+ cacheBuster);
	}

	private function initUpdater():Void{
		this.hold.redirectURL = _root.MMredirectURL;
		this.hold.MMplayerType = _root.MMplayerType;
		this.hold.MMdoctitle = _root.MMdoctitle;
		this.hold.startUpdate();
	}

	public function onInstallStatus(msg):Void{
		getURL("javascript:dojo.flash.install._onInstallStatus('"+msg+"')");
	}
}

__CPAN_FILE__ src/flash/flash8/DojoExternalInterface.as /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/

/** A wrapper around Flash 8's ExternalInterface; DojoExternalInterface is needed so that we can do a Flash 6 implementation of ExternalInterface, and be able to support having a single codebase that uses DojoExternalInterface across Flash versions rather than having two seperate source bases, where one uses ExternalInterface and the other uses DojoExternalInterface.

	DojoExternalInterface class does a variety of optimizations to bypass ExternalInterface's
	unbelievably bad performance so that we can have good performance
	on Safari; see the blog post
	http://codinginparadise.org/weblog/2006/02/how-to-speed-up-flash-8s.html
	for details.

	@author Brad Neuberg, bkn3@columbia.edu
*/
import flash.external.ExternalInterface;

class DojoExternalInterface{ public static var available:Boolean; public static var dojoPath = "";

	private static var flashMethods:Array = new Array();
	private static var numArgs:Number;
	private static var argData:Array;
	private static var resultData = null;

	public static function initialize(){
		// extract the dojo base path
		DojoExternalInterface.dojoPath = DojoExternalInterface.getDojoPath();

		// see if we need to do an express install
		var install:ExpressInstall = new ExpressInstall();
		if(install.needsUpdate){
			install.init();
		}

		// register our callback functions
		ExternalInterface.addCallback("startExec", DojoExternalInterface, startExec);
		ExternalInterface.addCallback("setNumberArguments", DojoExternalInterface,
																	setNumberArguments);
		ExternalInterface.addCallback("chunkArgumentData", DojoExternalInterface,
																	chunkArgumentData);
		ExternalInterface.addCallback("exec", DojoExternalInterface, exec);
		ExternalInterface.addCallback("getReturnLength", DojoExternalInterface,
																	getReturnLength);
		ExternalInterface.addCallback("chunkReturnData", DojoExternalInterface,
																	chunkReturnData);
		ExternalInterface.addCallback("endExec", DojoExternalInterface, endExec);

		// set whether communication is available
		DojoExternalInterface.available = ExternalInterface.available;
		DojoExternalInterface.call("loaded");
	}

	public static function addCallback(methodName:String, instance:Object, 
										 								 method:Function) : Boolean{
		// register DojoExternalInterface methodName with it's instance
		DojoExternalInterface.flashMethods[methodName] = instance;

		// tell JavaScript about DojoExternalInterface new method so we can create a proxy
		ExternalInterface.call("dojo.flash.comm._addExternalInterfaceCallback", 
													 methodName);

		return true;
	}

	public static function call(methodName:String,
								resultsCallback:Function) : Void{
		// we might have any number of optional arguments, so we have to 
		// pass them in dynamically; strip out the results callback
		var parameters = new Array();
		for(var i = 0; i < arguments.length; i++){
			if(i != 1){ // skip the callback
				parameters.push(arguments[i]);
			}
		}

		var results = ExternalInterface.call.apply(ExternalInterface, parameters);

		// immediately give the results back, since ExternalInterface is
		// synchronous
		if(resultsCallback != null && typeof resultsCallback != "undefined"){
			resultsCallback.call(null, results);
		}
	}

	/** 
			Called by Flash to indicate to JavaScript that we are ready to have
			our Flash functions called. Calling loaded()
			will fire the dojo.flash.loaded() event, so that JavaScript can know that
			Flash has finished loading and adding its callbacks, and can begin to
			interact with the Flash file.
	*/
	public static function loaded(){
		DojoExternalInterface.call("dojo.flash.loaded");
	}

	public static function startExec():Void{
		DojoExternalInterface.numArgs = null;
		DojoExternalInterface.argData = null;
		DojoExternalInterface.resultData = null;
	}

	public static function setNumberArguments(numArgs):Void{
		DojoExternalInterface.numArgs = numArgs;
		DojoExternalInterface.argData = new Array(DojoExternalInterface.numArgs);
	}

	public static function chunkArgumentData(value, argIndex:Number):Void{
		//getURL("javascript:dojo.debug('FLASH: chunkArgumentData, value="+value+", argIndex="+argIndex+"')");
		var currentValue = DojoExternalInterface.argData[argIndex];
		if(currentValue == null || typeof currentValue == "undefined"){
			DojoExternalInterface.argData[argIndex] = value;
		}else{
			DojoExternalInterface.argData[argIndex] += value;
		}
	}

	public static function exec(methodName):Void{
		// decode all of the arguments that were passed in
		for(var i = 0; i < DojoExternalInterface.argData.length; i++){
			DojoExternalInterface.argData[i] = 
				DojoExternalInterface.decodeData(DojoExternalInterface.argData[i]);
		}

		var instance = DojoExternalInterface.flashMethods[methodName];
		DojoExternalInterface.resultData = instance[methodName].apply(
																			instance, DojoExternalInterface.argData);
		// encode the result data
		DojoExternalInterface.resultData = 
			DojoExternalInterface.encodeData(DojoExternalInterface.resultData);

		//getURL("javascript:dojo.debug('FLASH: encoded result data="+DojoExternalInterface.resultData+"')");
	}

	public static function getReturnLength():Number{
	 if(DojoExternalInterface.resultData == null || 
	 					typeof DojoExternalInterface.resultData == "undefined"){
	 	return 0;
	 }
	 var segments = Math.ceil(DojoExternalInterface.resultData.length / 1024);
	 return segments;
	}

	public static function chunkReturnData(segment:Number):String{
		var numSegments = DojoExternalInterface.getReturnLength();
		var startCut = segment * 1024;
		var endCut = segment * 1024 + 1024;
		if(segment == (numSegments - 1)){
			endCut = segment * 1024 + DojoExternalInterface.resultData.length;
		}

		var piece = DojoExternalInterface.resultData.substring(startCut, endCut);

		//getURL("javascript:dojo.debug('FLASH: chunking return piece="+piece+"')");

		return piece;
	}

	public static function endExec():Void{
	}

	private static function decodeData(data):String{
		// we have to use custom encodings for certain characters when passing
		// them over; for example, passing a backslash over as //// from JavaScript
		// to Flash doesn't work
		data = DojoExternalInterface.replaceStr(data, "&custom_backslash;", "\\");

		data = DojoExternalInterface.replaceStr(data, "\\\'", "\'");
		data = DojoExternalInterface.replaceStr(data, "\\\"", "\"");

		return data;
	}

	private static function encodeData(data){
		//getURL("javascript:dojo.debug('inside flash, data before="+data+"')");

		// double encode all entity values, or they will be mis-decoded
		// by Flash when returned
		data = DojoExternalInterface.replaceStr(data, "&", "&amp;");

		// certain XMLish characters break Flash's wire serialization for
		// ExternalInterface; encode these into a custom encoding, rather than
		// the standard entity encoding, because otherwise we won't be able to
		// differentiate between our own encoding and any entity characters
		// that are being used in the string itself
		data = DojoExternalInterface.replaceStr(data, '<', '&custom_lt;');
		data = DojoExternalInterface.replaceStr(data, '>', '&custom_gt;');

		// encode control characters and JavaScript delimiters
		data = DojoExternalInterface.replaceStr(data, "\n", "\\n");
		data = DojoExternalInterface.replaceStr(data, "\r", "\\r");
		data = DojoExternalInterface.replaceStr(data, "\f", "\\f");
		data = DojoExternalInterface.replaceStr(data, "'", "\\'");
		data = DojoExternalInterface.replaceStr(data, '"', '\"');

		//getURL("javascript:dojo.debug('inside flash, data after="+data+"')");
		return data;
	}

	/** 
			Flash ActionScript has no String.replace method or support for
			Regular Expressions! We roll our own very simple one.
	*/
	private static function replaceStr(inputStr:String, replaceThis:String, 
																		 withThis:String):String {
		var splitStr = inputStr.split(replaceThis)
		inputStr = splitStr.join(withThis)
		return inputStr;
	}

	private static function getDojoPath(){
		var url = _root._url;
		var start = url.indexOf("baseRelativePath=") + "baseRelativePath=".length;
		var path = url.substring(start);
		var end = path.indexOf("&");
		if(end != -1){
			path = path.substring(0, end);
		}
		return path;
	}
}

// vim:ts=4:noet:tw=0:

__CPAN_DIR__ src/flash/flash6 __CPAN_FILE__ src/flash/flash6/DojoExternalInterface.as /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/

/** An implementation of Flash 8's ExternalInterface that works with Flash 6 and which is source-compatible with Flash 8.

		@author Brad Neuberg, bkn3@columbia.edu 
*/

class DojoExternalInterface{ public static var available:Boolean; public static var dojoPath = "";

	public static var _fscommandReady = false;
	public static var _callbacks = new Array();

	public static function initialize(){ 
		//getURL("javascript:dojo.debug('FLASH:DojoExternalInterface initialize')");
		// FIXME: Set available variable by testing for capabilities
		DojoExternalInterface.available = true;

		// extract the dojo base path
		DojoExternalInterface.dojoPath = DojoExternalInterface.getDojoPath();
		//getURL("javascript:dojo.debug('FLASH:dojoPath="+DojoExternalInterface.dojoPath+"')");

		// Sometimes, on IE, the fscommand infrastructure can take a few hundred
		// milliseconds the first time a page loads. Set a timer to keep checking
		// to make sure we can issue fscommands; otherwise, our calls to fscommand
		// for setCallback() and loaded() will just "disappear"
		_root.fscommandReady = false;
		var fsChecker = function(){
			// issue a test fscommand
			fscommand("fscommandReady");

			// JavaScript should set _root.fscommandReady if it got the call
			if(_root.fscommandReady == "true"){
				DojoExternalInterface._fscommandReady = true;
				clearInterval(_root.fsTimer);
			}
		};
		_root.fsTimer = setInterval(fsChecker, 100);
	}

	public static function addCallback(methodName:String, instance:Object, 
											method:Function) : Boolean{
		// A variable that indicates whether the call below succeeded
		_root._succeeded = null;

		// Callbacks are registered with the JavaScript side as follows.
		// On the Flash side, we maintain a lookup table that associates
		// the methodName with the actual instance and method that are
		// associated with this method.
		// Using fscommand, we send over the action "addCallback", with the
		// argument being the methodName to add, such as "foobar".
		// The JavaScript takes these values and registers the existence of
		// this callback point.

		// precede the method name with a _ character in case it starts
		// with a number
		_callbacks["_" + methodName] = {_instance: instance, _method: method};
		_callbacks[_callbacks.length] = methodName;

		// The API for ExternalInterface says we have to make sure the call
		// succeeded; check to see if there is a value 
		// for _succeeded, which is set by the JavaScript side
		if(_root._succeeded == null){
			return false;
		}else{
			return true;
		}
	}

	public static function call(methodName:String, 
								resultsCallback:Function) : Void{
		// FIXME: support full JSON serialization

		// First, we pack up all of the arguments to this call and set them
		// as Flash variables, which the JavaScript side will unpack using
		// plugin.GetVariable(). We set the number of arguments as "_numArgs",
		// and add each argument as a variable, such as "_1", "_2", etc., starting
		// from 0.
		// We then execute an fscommand with the action "call" and the
		// argument being the method name. JavaScript takes the method name,
		// retrieves the arguments using GetVariable, executes the method,
		// and then places the return result in a Flash variable
		// named "_returnResult".
		_root._numArgs = arguments.length - 2;
		for(var i = 2; i < arguments.length; i++){
			var argIndex = i - 2;
			_root["_" + argIndex] = arguments[i];
		}

		_root._returnResult = undefined;
		fscommand("call", methodName);

		// immediately return if the caller is not waiting for return results
		if(resultsCallback == undefined || resultsCallback == null){
			return;
		}

		// check at regular intervals for return results	
		var resultsChecker = function(){
			if((typeof _root._returnResult != "undefined")&&
				(_root._returnResult != "undefined")){
				clearInterval(_root._callbackID);
				resultsCallback.call(null, _root._returnResult);
			}
		};	
		_root._callbackID = setInterval(resultsChecker, 100);
	}

	/** 
			Called by Flash to indicate to JavaScript that we are ready to have
			our Flash functions called. Calling loaded()
			will fire the dojo.flash.loaded() event, so that JavaScript can know that
			Flash has finished loading and adding its callbacks, and can begin to
			interact with the Flash file.
	*/
	public static function loaded(){
		//getURL("javascript:dojo.debug('FLASH:loaded')");

		// one more step: see if fscommands are ready to be executed; if not,
		// set an interval that will keep running until fscommands are ready;
		// make sure the gateway is loaded as well
		var execLoaded = function(){
			if(DojoExternalInterface._fscommandReady == true){
				clearInterval(_root.loadedInterval);

				// initialize the small Flash file that helps gateway JS to Flash
				// calls
				DojoExternalInterface._initializeFlashRunner();
			}	
		};

		if(_fscommandReady == true){
			execLoaded();
		}else{
			_root.loadedInterval = setInterval(execLoaded, 50);
		}
	}

	/** 
			Handles and executes a JavaScript to Flash method call. Used by
			initializeFlashRunner. 
	*/
	public static function _handleJSCall(){
		// get our parameters
		var numArgs = parseInt(_root._numArgs);
		var jsArgs = new Array();
		for(var i = 0; i < numArgs; i++){
			var currentValue = _root["_" + i];
			jsArgs.push(currentValue);
		}

		// get our function name
		var functionName = _root._functionName;

		// now get the actual instance and method object to execute on,
		// using our lookup table that was constructed by calls to
		// addCallback on initialization
		var instance = _callbacks["_" + functionName]._instance;
		var method = _callbacks["_" + functionName]._method;

		// execute it
		var results = method.apply(instance, jsArgs);

		// return the results
		_root._returnResult = results;
	}

	/** Called by the flash6_gateway.swf to indicate that it is loaded. */
	public static function _gatewayReady(){
		for(var i = 0; i < _callbacks.length; i++){
			fscommand("addCallback", _callbacks[i]);
		}
		call("dojo.flash.loaded");
	}

	/** 
			When JavaScript wants to communicate with Flash it simply sets
			the Flash variable "_execute" to true; this method creates the
			internal Movie Clip, called the Flash Runner, that makes this
			magic happen.
	*/
	public static function _initializeFlashRunner(){
		// figure out where our Flash movie is
		var swfLoc = DojoExternalInterface.dojoPath + "flash6_gateway.swf";

		// load our gateway helper file
		_root.createEmptyMovieClip("_flashRunner", 5000);
		_root._flashRunner._lockroot = true;
		_root._flashRunner.loadMovie(swfLoc);
	}

	private static function getDojoPath(){
		var url = _root._url;
		var start = url.indexOf("baseRelativePath=") + "baseRelativePath=".length;
		var path = url.substring(start);
		var end = path.indexOf("&");
		if(end != -1){
			path = path.substring(0, end);
		}
		return path;
	}
}

// vim:ts=4:noet:tw=0:

__CPAN_FILE__ src/flash/flash6/flash6_gateway.fla ࡱ> Root Entryp|YrRASHfUajbContents(APage 1')*+,-./0123456789:;<=>?@ABCDEFGMRoot Entryp|YrRASHppګZ Contents APage 1   !"#$%&HIJKL CPicPage CPicLayer CPicFrame?start2/** Very simple two frame Flash file; frame 1 says we are all loaded, while frame 2 says to execute a JavaScript call. This small file is necessary because ActionScript 2.0 has no way to know when a specific frame has been called, which we use for all of our code. However, the Flash 6 communication we use kicks off a call by jumping to a specific frame and then calling Play() on the Flash player. */ DojoExternalIn terface._gatewayReady(); stop(); ?execute}v/DojoExternalInterface._handleJSCall(); stop(); Layer 1OO("javascript:alert('TCallLabel')"); DojoExteCPicPage CPicLayer CPicFrame?startZz/** Very simple two frame Flash file; frame 1 says we are all loaded, while frame 2 says to execute a JavaScript call. This small file is necessary because ActionScript 2.0 has no way to know when a specific frame has been called, which we use for all of our code. However, the Flash 6 communication we use kicks off a call by jumping to a specific frame and then calling Play() on the Flash player. */ DojoExternalIn8CDocumentPagePage 1Scene 1sC6D*@hhhhh PropSheet::ActiveTab7628%PublishFormatProperties::htmlFileNameflash6_gateway.html"PublishHtmlProperties::StartPaused0 PublishRNWKProperties::speed256K0!PublishGifProperties::PaletteNamePublishFormatProperties::jpeg0PublishHtmlProperties::Loop1PublishProfileProperties::nameDefaultVector::Debugging Permitted0"PublishQTProperties::MatchMovieDim1 PublishQTProperties::AlphaOption PublishQTProperties::LayerOption4PublishHtmlProperties::UsingDefaultAlternateFilename1PublishHtmlProperties::Units0%PublishHtmlProperties::showTagWarnMsg1Vector::External Player&PublishRNWKProperties::singleRateAudio0&PublishRNWKProperties::speedSingleISDN0$PublishPNGProperties::OptimizeColors1PublishQTProperties::Width550%PublishFormatProperties::projectorMac0'PublishFormatProperties::gifDefaultName1&PublishFormatProperties::flashFileName..\..\..\flash6_gateway.swfVector::Package PathsVector::Compress Movie1#PublishRNWKProperties::flashBitRate1200%PublishRNWKProperties::mediaCopyright(c) 2000PublishGifProperties::Smooth1PublishFormatProperties::html0$PublishFormatProperties::pngFileNameflash6_gateway.png(PublishHtmlProperties::VerticalAlignment1PublishHtmlProperties::Quality4Vector::FireFox0"PublishRNWKProperties::exportAudio1 PublishRNWKProperties::speed384K0!PublishRNWKProperties::exportSMIL1"PublishGifProperties::DitherOption-PublishFormatProperties::generatorDefaultName1!PublishHtmlProperties::DeviceFont0Vector::Override Sounds0'PublishRNWKProperties::mediaDescription"PublishPNGProperties::FilterOptionPublishFormatProperties::gif0(PublishFormatProperties::jpegDefaultName1(PublishFormatProperties::rnwkDefaultName1*PublishFormatProperties::generatorFileNameflash6_gateway.swtVector::Template02PublishHtmlProperties::VersionDetectionIfAvailable0*PublishHtmlProperties::HorizontalAlignment1"PublishHtmlProperties::DisplayMenu1Vector::Protect0Vector::Quality80PublishJpegProperties::DPI4718592PublishGifProperties::Interlace0"PublishGifProperties::DitherSolids0PublishPNGProperties::Smooth1PublishPNGProperties::BitDepth24-bit with AlphaPublishQTProperties::Flatten1#PublishFormatProperties::qtFileNameflash6_gateway.movPublishRNWKProperties::speed28K1!PublishRNWKProperties::mediaTitle$PublishRNWKProperties::mediaKeywordsPublishGifProperties::Width550PublishGifProperties::Loop1PublishFormatProperties::flash1PublishJpegProperties::Quality80$PublishRNWKProperties::realVideoRate100000$PublishRNWKProperties::speedDualISDN0#PublishGifProperties::MatchMovieDim1#PublishGifProperties::PaletteOption"PublishPNGProperties::DitherOption0PublishFormatProperties::projectorMacDefaultName1'PublishFormatProperties::pngDefaultName1-PublishFormatProperties::projectorWinFileNameflash6_gateway.exePublishHtmlProperties::Align0!PublishProfileProperties::version1Vector::Package Export Frame1$PublishJpegProperties::MatchMovieDim1#PublishPNGProperties::MatchMovieDim1#PublishPNGProperties::PaletteOption)PublishFormatProperties::flashDefaultName0%PublishFormatProperties::jpegFileNameflash6_gateway.jpgPublishHtmlProperties::Width550PublishHtmlProperties::Height400Vector::Omit Trace Actions0Vector::Debugging Password"PublishJpegProperties::Progressive0"PublishPNGProperties::DitherSolids0#PublishQTProperties::PlayEveryFrame0PublishFormatProperties::png0PublishFormatProperties::rnwk0(PublishFormatProperties::htmlDefaultName1-PublishFormatProperties::projectorMacFileNameflash6_gateway.hqx2PublishHtmlProperties::UsingDefaultContentFilename1!PublishHtmlProperties::WindowMode0'PublishHtmlProperties::TemplateFileNameC:\Documents and Settings\bradneuberg\Local Settings\Application Data\Macromedia\Flash MX 2004\en\Configuration\Html\Default.htmlVector::TopDown0Vector::DeviceSound0PublishJpegProperties::Size0PublishGifProperties::Height400PublishPNGProperties::Interlace0"PublishFormatProperties::generator0&PublishHtmlProperties::ContentFilename(PublishHtmlProperties::AlternateFilename+PublishHtmlProperties::OwnAlternateFilenameVector::Report0PublishRNWKProperties::speed56K1PublishGifProperties::LoopCount'PublishGifProperties::TransparentOptionPublishGifProperties::MaxColors255%PublishPNGProperties::RemoveGradients0PublishQTProperties::Height400PublishFormatProperties::qt0Vector::Stream Compress7Vector::Event Format0Vector::Version6"PublishRNWKProperties::audioFormat0$PublishGifProperties::OptimizeColors10PublishFormatProperties::projectorWinDefaultName1PublishHtmlProperties::Scale0Vector::Event Compress7Vector::ActionScriptVersion2PublishJpegProperties::Height400 PublishRNWKProperties::speed512K0%PublishGifProperties::RemoveGradients0PublishPNGProperties::Width550PublishPNGProperties::Height400&PublishFormatProperties::qtDefaultName1$PublishFormatProperties::gifFileNameflash6_gateway.gif"PublishHtmlProperties::VersionInfoVector::Stream Format0PublishJpegProperties::Width550"PublishRNWKProperties::exportFlash1&PublishRNWKProperties::showBitrateDlog1(PublishRNWKProperties::speedCorporateLAN0"PublishRNWKProperties::mediaAuthorPublishGifProperties::Animated0&PublishGifProperties::TransparentAlpha128!PublishPNGProperties::Transparent0!PublishPNGProperties::PaletteName*PublishQTProperties::UseQTSoundCompression0PublishQTProperties::Looping0%PublishFormatProperties::defaultNames0%PublishFormatProperties::projectorWin0%PublishFormatProperties::rnwkFileNameflash6_gateway.smil,PublishHtmlProperties::UsingOwnAlternateFile0PublishPNGProperties::MaxColors255%PublishQTProperties::ControllerOption0"PublishQTProperties::PausedAtStart0 CColorDef3PfP0PHP`Px333(3f<03CH3F`3Hxf0f30ff(0f5Hf<`f@x3330333xf3d03]H3Z`3Xx3333303f3PPH33Px`33Px33Pf30f33PHff3(PHf3<x`f3Cxf3Ffff`f03f0ffx0fkHfd`f`x3f033fPH3ffxPH3fdx`3f]x3fZff0f3fPHfff`ffP0xffPxffPH3HfHxH̙n`hx3H33x`3fx`3xx`3̙kx3dfHf3x`ff0xfx0xf̙dxf]`3`f``x`px3`33x3fx3x3xx3nf`f3xffxfxfxxfkx3xfxxxxx3x333f333xfxf3fffffxxH3Hfterface._gatewayReady(); stop(); ?execute /DojoExternalInterface._handleJSCall(); stop(); Layer 1OO("javascript:alert('TCallLabel')"); DojoExte8CDocumentPagePage 1Scene 1sC DD hhhhh PropSheet::ActiveTab7628!PublishGifProperties::PaletteName PublishRNWKProperties::speed256K0"PublishHtmlProperties::StartPaused0%PublishFormatProperties::htmlFileNameflash6_gateway.html PublishQTProperties::LayerOption PublishQTProperties::AlphaOption"PublishQTProperties::MatchMovieDim1Vector::Debugging Permitted0PublishProfileProperties::nameDefaultPublishHtmlProperties::Loop1PublishFormatProperties::jpeg0PublishQTProperties::Width550$PublishPNGProperties::OptimizeColors1&PublishRNWKProperties::speedSingleISDN0&PublishRNWKProperties::singleRateAudio0Vector::External Player%PublishHtmlProperties::showTagWarnMsg1PublishHtmlProperties::Units04PublishHtmlProperties::UsingDefaultAlternateFilename1PublishGifProperties::Smooth1%PublishRNWKProperties::mediaCopyright(c) 2000#PublishRNWKProperties::flashBitRate1200Vector::Compress Movie1Vector::Package Paths&PublishFormatProperties::flashFileName..\..\..\flash6_gateway.swf'PublishFormatProperties::gifDefaultName1%PublishFormatProperties::projectorMac0"PublishGifProperties::DitherOption!PublishRNWKProperties::exportSMIL1 PublishRNWKProperties::speed384K0"PublishRNWKProperties::exportAudio1Vector::FireFox0PublishHtmlProperties::Quality4(PublishHtmlProperties::VerticalAlignment1$PublishFormatProperties::pngFileNameflash6_gateway.pngPublishFormatProperties::html0"PublishPNGProperties::FilterOption'PublishRNWKProperties::mediaDescriptionVector::Override Sounds0!PublishHtmlProperties::DeviceFont0-PublishFormatProperties::generatorDefaultName1PublishQTProperties::Flatten1PublishPNGProperties::BitDepth24-bit with AlphaPublishPNGProperties::Smooth1"PublishGifProperties::DitherSolids0PublishGifProperties::Interlace0PublishJpegProperties::DPI4718592Vector::Quality80Vector::Protect0"PublishHtmlProperties::DisplayMenu1*PublishHtmlProperties::HorizontalAlignment12PublishHtmlProperties::VersionDetectionIfAvailable0Vector::Template0*PublishFormatProperties::generatorFileNameflash6_gateway.swt(PublishFormatProperties::rnwkDefaultName1(PublishFormatProperties::jpegDefaultName1PublishFormatProperties::gif0PublishGifProperties::Loop1PublishGifProperties::Width550$PublishRNWKProperties::mediaKeywords!PublishRNWKProperties::mediaTitlePublishRNWKProperties::speed28K1#PublishFormatProperties::qtFileNameflash6_gateway.mov"PublishPNGProperties::DitherOption#PublishGifProperties::PaletteOption#PublishGifProperties::MatchMovieDim1$PublishRNWKProperties::speedDualISDN0$PublishRNWKProperties::realVideoRate100000PublishJpegProperties::Quality80PublishFormatProperties::flash1#PublishPNGProperties::PaletteOption#PublishPNGProperties::MatchMovieDim1$PublishJpegProperties::MatchMovieDim1Vector::Package Export Frame1!PublishProfileProperties::version1PublishHtmlProperties::Align0-PublishFormatProperties::projectorWinFileNameflash6_gateway.exe'PublishFormatProperties::pngDefaultName10PublishFormatProperties::projectorMacDefaultName1#PublishQTProperties::PlayEveryFrame0"PublishPNGProperties::DitherSolids0"PublishJpegProperties::Progressive0Vector::Debugging PasswordVector::Omit Trace Actions0PublishHtmlProperties::Height400PublishHtmlProperties::Width550%PublishFormatProperties::jpegFileNameflash6_gateway.jpg)PublishFormatProperties::flashDefaultName0PublishPNGProperties::Interlace0PublishGifProperties::Height400PublishJpegProperties::Size0Vector::DeviceSound0Vector::TopDown0'PublishHtmlProperties::TemplateFileNameC:\Documents and Settings\bradneuberg\Local Settings\Application Data\Macromedia\Flash MX 2004\en\Configuration\Html\Default.html!PublishHtmlProperties::WindowMode02PublishHtmlProperties::UsingDefaultContentFilename1-PublishFormatProperties::projectorMacFileNameflash6_gateway.hqx(PublishFormatProperties::htmlDefaultName1PublishFormatProperties::rnwk0PublishFormatProperties::png0PublishQTProperties::Height400%PublishPNGProperties::RemoveGradients0PublishGifProperties::MaxColors255'PublishGifProperties::TransparentOptionPublishGifProperties::LoopCountPublishRNWKProperties::speed56K1Vector::Report0+PublishHtmlProperties::OwnAlternateFilename(PublishHtmlProperties::AlternateFilename&PublishHtmlProperties::ContentFilename"PublishFormatProperties::generator0$PublishGifProperties::OptimizeColors1"PublishRNWKProperties::audioFormat0Vector::Version6Vector::Event Format0Vector::Stream Compress7PublishFormatProperties::qt0PublishPNGProperties::Height400PublishPNGProperties::Width550%PublishGifProperties::RemoveGradients0 PublishRNWKProperties::speed512K0PublishJpegProperties::Height400Vector::ActionScriptVersion2Vector::Event Compress7PublishHtmlProperties::Scale00PublishFormatProperties::projectorWinDefaultName1PublishQTProperties::Looping0*PublishQTProperties::UseQTSoundCompression0!PublishPNGProperties::PaletteName!PublishPNGProperties::Transparent0&PublishGifProperties::TransparentAlpha128PublishGifProperties::Animated0"PublishRNWKProperties::mediaAuthor(PublishRNWKProperties::speedCorporateLAN0&PublishRNWKProperties::showBitrateDlog1"PublishRNWKProperties::exportFlash1PublishJpegProperties::Width550Vector::Stream Format0"PublishHtmlProperties::VersionInfo$PublishFormatProperties::gifFileNameflash6_gateway.gif&PublishFormatProperties::qtDefaultName1"PublishQTProperties::PausedAtStart0%PublishQTProperties::ControllerOption0PublishPNGProperties::MaxColors255,PublishHtmlProperties::UsingOwnAlternateFile0%PublishFormatProperties::rnwkFileNameflash6_gateway.smil%PublishFormatProperties::projectorWin0%PublishFormatProperties::defaultNames0 CColorDef3PfP0PHP`Px333(3f<03CH3F`3Hxf0f30ff(0f5Hf<`f@x3330333xf3d03]H3Z`3Xx3333303f3PPH33Px`33Px33Pf30f33PHff3(PHf3<x`f3Cxf3Ffff`f03f0ffx0fkHfd`f`x3f033fPH3ffxPH3fdx`3f]x3fZff0f3fPHfff`ffP0xffPxffPH3HfHxH̙n`hx3H33x`3fx`3xx`3̙kx3dfHf3x`ff0xfx0xf̙dxf]`3`f``x`px3`33x3fx3x3xx3nf`f3xffxfxfxxfkx3xfxxxxx3x333f333xfxf3fffffxxH3HfH(H2`8x`3 `f`̙`(`0xx3xfxx x(xPx3H33x`f3x`3(x`35x3<3`33xf3x̙3x3(x323x33f3 333(xfH3fx`ff0xf(0xf<xfCf`3fxffx̙fxf(xf5fx3ffffff((xH3x`f0x̙PPP`3xfx̙P̙(P<x3f̙(xx`3xfxPxPd`3xfx̙PPx3f(xx3fxx3f̙xx3fH(H2`8x`3 `f`̙`(`0xx3xfxx x(xPx3H33x`f3x`3(x`35x3<3`33xf3x̙3x3(x323x33f3 333(xfH3fx`ff0xf(0xf<xfCf`3fxffx̙fxf(xf5fx3ffffff((xH3x`f0x̙PPP`3xfx̙P̙(P<x3f̙(xx`3xfxPxPd`3xfx̙PPx3f(xx3fxx3f̙xx3ff`zf*]"PublishQTProperties::QTSndSettingsCQTAudioSettingsh f`zf*]"PublishQTProperties::QTSndSettingsCQTAudioSettingsh  __CPAN_DIR__ src/lang __CPAN_FILE__ src/lang/array.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.lang.array"); dojo.require("dojo.lang.common"); dojo.lang.mixin(dojo.lang, {has:function (obj, name) { try { return typeof obj[name] != "undefined"; } catch (e) { return false; } }, isEmpty:function (obj) { if (dojo.lang.isObject(obj)) { var tmp = {}; var count = 0; for (var x in obj) { if (obj[x] && (!tmp[x])) { count++; break; } } return count == 0; } else { if (dojo.lang.isArrayLike(obj) || dojo.lang.isString(obj)) { return obj.length == 0; } } }, map:function (arr, obj, unary_func) { var isString = dojo.lang.isString(arr); if (isString) { arr = arr.split(""); } if (dojo.lang.isFunction(obj) && (!unary_func)) { unary_func = obj; obj = dj_global; } else { if (dojo.lang.isFunction(obj) && unary_func) { var tmpObj = obj; obj = unary_func; unary_func = tmpObj; } } if (Array.map) { var outArr = Array.map(arr, unary_func, obj); } else { var outArr = []; for (var i = 0; i < arr.length; ++i) { outArr.push(unary_func.call(obj, arr[i])); } } if (isString) { return outArr.join(""); } else { return outArr; } }, reduce:function (arr, initialValue, obj, binary_func) { var reducedValue = initialValue; if (arguments.length == 2) { binary_func = initialValue; reducedValue = arr[0]; arr = arr.slice(1); } else { if (arguments.length == 3) { if (dojo.lang.isFunction(obj)) { binary_func = obj; obj = null; } } else { if (dojo.lang.isFunction(obj)) { var tmp = binary_func; binary_func = obj; obj = tmp; } } } var ob = obj || dj_global; dojo.lang.map(arr, function (val) { reducedValue = binary_func.call(ob, reducedValue, val); }); return reducedValue; }, forEach:function (anArray, callback, thisObject) { if (dojo.lang.isString(anArray)) { anArray = anArray.split(""); } if (Array.forEach) { Array.forEach(anArray, callback, thisObject); } else { if (!thisObject) { thisObject = dj_global; } for (var i = 0, l = anArray.length; i < l; i++) { callback.call(thisObject, anArray[i], i, anArray); } } }, _everyOrSome:function (every, arr, callback, thisObject) { if (dojo.lang.isString(arr)) { arr = arr.split(""); } if (Array.every) { return Array[every ? "every" : "some"](arr, callback, thisObject); } else { if (!thisObject) { thisObject = dj_global; } for (var i = 0, l = arr.length; i < l; i++) { var result = callback.call(thisObject, arr[i], i, arr); if (every && !result) { return false; } else { if ((!every) && (result)) { return true; } } } return Boolean(every); } }, every:function (arr, callback, thisObject) { return this._everyOrSome(true, arr, callback, thisObject); }, some:function (arr, callback, thisObject) { return this._everyOrSome(false, arr, callback, thisObject); }, filter:function (arr, callback, thisObject) { var isString = dojo.lang.isString(arr); if (isString) { arr = arr.split(""); } var outArr; if (Array.filter) { outArr = Array.filter(arr, callback, thisObject); } else { if (!thisObject) { if (arguments.length >= 3) { dojo.raise("thisObject doesn't exist!"); } thisObject = dj_global; } outArr = []; for (var i = 0; i < arr.length; i++) { if (callback.call(thisObject, arr[i], i, arr)) { outArr.push(arr[i]); } } } if (isString) { return outArr.join(""); } else { return outArr; } }, unnest:function () { var out = []; for (var i = 0; i < arguments.length; i++) { if (dojo.lang.isArrayLike(arguments[i])) { var add = dojo.lang.unnest.apply(this, arguments[i]); out = out.concat(add); } else { out.push(arguments[i]); } } return out; }, toArray:function (arrayLike, startOffset) { var array = []; for (var i = startOffset || 0; i < arrayLike.length; i++) { array.push(arrayLike[i]); } return array; }});

__CPAN_FILE__ src/lang/assert.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.lang.assert"); dojo.require("dojo.lang.common"); dojo.require("dojo.lang.array"); dojo.require("dojo.lang.type"); dojo.lang.assert = function (booleanValue, message) { if (!booleanValue) { var errorMessage = "An assert statement failed.\n" + "The method dojo.lang.assert() was called with a 'false' value.\n"; if (message) { errorMessage += "Here's the assert message:\n" + message + "\n"; } throw new Error(errorMessage); } }; dojo.lang.assertType = function (value, type, keywordParameters) { if (dojo.lang.isString(keywordParameters)) { dojo.deprecated("dojo.lang.assertType(value, type, \"message\")", "use dojo.lang.assertType(value, type) instead", "0.5"); } if (!dojo.lang.isOfType(value, type, keywordParameters)) { if (!dojo.lang.assertType._errorMessage) { dojo.lang.assertType._errorMessage = "Type mismatch: dojo.lang.assertType() failed."; } dojo.lang.assert(false, dojo.lang.assertType._errorMessage); } }; dojo.lang.assertValidKeywords = function (object, expectedProperties, message) { var key; if (!message) { if (!dojo.lang.assertValidKeywords._errorMessage) { dojo.lang.assertValidKeywords._errorMessage = "In dojo.lang.assertValidKeywords(), found invalid keyword:"; } message = dojo.lang.assertValidKeywords._errorMessage; } if (dojo.lang.isArray(expectedProperties)) { for (key in object) { if (!dojo.lang.inArray(expectedProperties, key)) { dojo.lang.assert(false, message + " " + key); } } } else { for (key in object) { if (!(key in expectedProperties)) { dojo.lang.assert(false, message + " " + key); } } } };

__CPAN_FILE__ src/lang/common.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.lang.common"); dojo.lang.inherits = function (subclass, superclass) { if (!dojo.lang.isFunction(superclass)) { dojo.raise("dojo.inherits: superclass argument [" + superclass + "] must be a function (subclass: [" + subclass + "']"); } subclass.prototype = new superclass(); subclass.prototype.constructor = subclass; subclass.superclass = superclass.prototype; subclass["super"] = superclass.prototype; }; dojo.lang._mixin = function (obj, props) { var tobj = {}; for (var x in props) { if ((typeof tobj[x] == "undefined") || (tobj[x] != props[x])) { obj[x] = props[x]; } } if (dojo.render.html.ie && (typeof (props["toString"]) == "function") && (props["toString"] != obj["toString"]) && (props["toString"] != tobj["toString"])) { obj.toString = props.toString; } return obj; }; dojo.lang.mixin = function (obj, props) { for (var i = 1, l = arguments.length; i < l; i++) { dojo.lang._mixin(obj, arguments[i]); } return obj; }; dojo.lang.extend = function (constructor, props) { for (var i = 1, l = arguments.length; i < l; i++) { dojo.lang._mixin(constructor.prototype, arguments[i]); } return constructor; }; dojo.inherits = dojo.lang.inherits; dojo.mixin = dojo.lang.mixin; dojo.extend = dojo.lang.extend; dojo.lang.find = function (array, value, identity, findLast) { if (!dojo.lang.isArrayLike(array) && dojo.lang.isArrayLike(value)) { dojo.deprecated("dojo.lang.find(value, array)", "use dojo.lang.find(array, value) instead", "0.5"); var temp = array; array = value; value = temp; } var isString = dojo.lang.isString(array); if (isString) { array = array.split(""); } if (findLast) { var step = -1; var i = array.length - 1; var end = -1; } else { var step = 1; var i = 0; var end = array.length; } if (identity) { while (i != end) { if (array[i] === value) { return i; } i += step; } } else { while (i != end) { if (array[i] == value) { return i; } i += step; } } return -1; }; dojo.lang.indexOf = dojo.lang.find; dojo.lang.findLast = function (array, value, identity) { return dojo.lang.find(array, value, identity, true); }; dojo.lang.lastIndexOf = dojo.lang.findLast; dojo.lang.inArray = function (array, value) { return dojo.lang.find(array, value) > -1; }; dojo.lang.isObject = function (it) { if (typeof it == "undefined") { return false; } return (typeof it == "object" || it === null || dojo.lang.isArray(it) || dojo.lang.isFunction(it)); }; dojo.lang.isArray = function (it) { return (it && it instanceof Array || typeof it == "array"); }; dojo.lang.isArrayLike = function (it) { if ((!it) || (dojo.lang.isUndefined(it))) { return false; } if (dojo.lang.isString(it)) { return false; } if (dojo.lang.isFunction(it)) { return false; } if (dojo.lang.isArray(it)) { return true; } if ((it.tagName) && (it.tagName.toLowerCase() == "form")) { return false; } if (dojo.lang.isNumber(it.length) && isFinite(it.length)) { return true; } return false; }; dojo.lang.isFunction = function (it) { return (it instanceof Function || typeof it == "function"); }; (function () { if ((dojo.render.html.capable) && (dojo.render.html["safari"])) { dojo.lang.isFunction = function (it) { if ((typeof (it) == "function") && (it == "[object NodeList]")) { return false; } return (it instanceof Function || typeof it == "function"); }; } })(); dojo.lang.isString = function (it) { return (typeof it == "string" || it instanceof String); }; dojo.lang.isAlien = function (it) { if (!it) { return false; } return !dojo.lang.isFunction(it) && /\{\s*\[native code\]\s*\}/.test(String(it)); }; dojo.lang.isBoolean = function (it) { return (it instanceof Boolean || typeof it == "boolean"); }; dojo.lang.isNumber = function (it) { return (it instanceof Number || typeof it == "number"); }; dojo.lang.isUndefined = function (it) { return ((typeof (it) == "undefined") && (it == undefined)); };

__CPAN_FILE__ src/lang/func.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.lang.func"); dojo.require("dojo.lang.common"); dojo.lang.hitch = function (thisObject, method) { var args = []; for (var x = 2; x < arguments.length; x++) { args.push(arguments[x]); } var fcn = (dojo.lang.isString(method) ? thisObject[method] : method) || function () { }; return function () { var ta = args.concat([]); for (var x = 0; x < arguments.length; x++) { ta.push(arguments[x]); } return fcn.apply(thisObject, ta); }; }; dojo.lang.anonCtr = 0; dojo.lang.anon = {}; dojo.lang.nameAnonFunc = function (anonFuncPtr, thisObj, searchForNames) { var nso = (thisObj || dojo.lang.anon); if ((searchForNames) || ((dj_global["djConfig"]) && (djConfig["slowAnonFuncLookups"] == true))) { for (var x in nso) { try { if (nso[x] === anonFuncPtr) { return x; } } catch (e) { } } } var ret = "__" + dojo.lang.anonCtr++; while (typeof nso[ret] != "undefined") { ret = "__" + dojo.lang.anonCtr++; } nso[ret] = anonFuncPtr; return ret; }; dojo.lang.forward = function (funcName) { return function () { return this[funcName].apply(this, arguments); }; }; dojo.lang.curry = function (thisObj, func) { var outerArgs = []; thisObj = thisObj || dj_global; if (dojo.lang.isString(func)) { func = thisObj[func]; } for (var x = 2; x < arguments.length; x++) { outerArgs.push(arguments[x]); } var ecount = (func["__preJoinArity"] || func.length) - outerArgs.length; function gather(nextArgs, innerArgs, expected) { var texpected = expected; var totalArgs = innerArgs.slice(0); for (var x = 0; x < nextArgs.length; x++) { totalArgs.push(nextArgs[x]); } expected = expected - nextArgs.length; if (expected <= 0) { var res = func.apply(thisObj, totalArgs); expected = texpected; return res; } else { return function () { return gather(arguments, totalArgs, expected); }; } } return gather([], outerArgs, ecount); }; dojo.lang.curryArguments = function (thisObj, func, args, offset) { var targs = []; var x = offset || 0; for (x = offset; x < args.length; x++) { targs.push(args[x]); } return dojo.lang.curry.apply(dojo.lang, [thisObj, func].concat(targs)); }; dojo.lang.tryThese = function () { for (var x = 0; x < arguments.length; x++) { try { if (typeof arguments[x] == "function") { var ret = (arguments[x]()); if (ret) { return ret; } } } catch (e) { dojo.debug(e); } } }; dojo.lang.delayThese = function (farr, cb, delay, onend) { if (!farr.length) { if (typeof onend == "function") { onend(); } return; } if ((typeof delay == "undefined") && (typeof cb == "number")) { delay = cb; cb = function () { }; } else { if (!cb) { cb = function () { }; if (!delay) { delay = 0; } } } setTimeout(function () { (farr.shift())(); cb(); dojo.lang.delayThese(farr, cb, delay, onend); }, delay); };

__CPAN_FILE__ src/lang/array.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.lang.array"], ["require", "dojo.lang.common"]], definePackage:function (dojo) { dojo.provide("dojo.lang.array"); dojo.require("dojo.lang.common"); dojo.lang.mixin(dojo.lang, {has:function (obj, name) { try { return typeof obj[name] != "undefined"; } catch (e) { return false; } }, isEmpty:function (obj) { if (dojo.lang.isObject(obj)) { var tmp = {}; var count = 0; for (var x in obj) { if (obj[x] && (!tmp[x])) { count++; break; } } return count == 0; } else { if (dojo.lang.isArrayLike(obj) || dojo.lang.isString(obj)) { return obj.length == 0; } } }, map:function (arr, obj, unary_func) { var isString = dojo.lang.isString(arr); if (isString) { arr = arr.split(""); } if (dojo.lang.isFunction(obj) && (!unary_func)) { unary_func = obj; obj = dj_global; } else { if (dojo.lang.isFunction(obj) && unary_func) { var tmpObj = obj; obj = unary_func; unary_func = tmpObj; } } if (Array.map) { var outArr = Array.map(arr, unary_func, obj); } else { var outArr = []; for (var i = 0; i < arr.length; ++i) { outArr.push(unary_func.call(obj, arr[i])); } } if (isString) { return outArr.join(""); } else { return outArr; } }, reduce:function (arr, initialValue, obj, binary_func) { var reducedValue = initialValue; if (arguments.length == 2) { binary_func = initialValue; reducedValue = arr[0]; arr = arr.slice(1); } else { if (arguments.length == 3) { if (dojo.lang.isFunction(obj)) { binary_func = obj; obj = null; } } else { if (dojo.lang.isFunction(obj)) { var tmp = binary_func; binary_func = obj; obj = tmp; } } } var ob = obj || dj_global; dojo.lang.map(arr, function (val) { reducedValue = binary_func.call(ob, reducedValue, val); }); return reducedValue; }, forEach:function (anArray, callback, thisObject) { if (dojo.lang.isString(anArray)) { anArray = anArray.split(""); } if (Array.forEach) { Array.forEach(anArray, callback, thisObject); } else { if (!thisObject) { thisObject = dj_global; } for (var i = 0, l = anArray.length; i < l; i++) { callback.call(thisObject, anArray[i], i, anArray); } } }, _everyOrSome:function (every, arr, callback, thisObject) { if (dojo.lang.isString(arr)) { arr = arr.split(""); } if (Array.every) { return Array[every ? "every" : "some"](arr, callback, thisObject); } else { if (!thisObject) { thisObject = dj_global; } for (var i = 0, l = arr.length; i < l; i++) { var result = callback.call(thisObject, arr[i], i, arr); if (every && !result) { return false; } else { if ((!every) && (result)) { return true; } } } return Boolean(every); } }, every:function (arr, callback, thisObject) { return this._everyOrSome(true, arr, callback, thisObject); }, some:function (arr, callback, thisObject) { return this._everyOrSome(false, arr, callback, thisObject); }, filter:function (arr, callback, thisObject) { var isString = dojo.lang.isString(arr); if (isString) { arr = arr.split(""); } var outArr; if (Array.filter) { outArr = Array.filter(arr, callback, thisObject); } else { if (!thisObject) { if (arguments.length >= 3) { dojo.raise("thisObject doesn't exist!"); } thisObject = dj_global; } outArr = []; for (var i = 0; i < arr.length; i++) { if (callback.call(thisObject, arr[i], i, arr)) { outArr.push(arr[i]); } } } if (isString) { return outArr.join(""); } else { return outArr; } }, unnest:function () { var out = []; for (var i = 0; i < arguments.length; i++) { if (dojo.lang.isArrayLike(arguments[i])) { var add = dojo.lang.unnest.apply(this, arguments[i]); out = out.concat(add); } else { out.push(arguments[i]); } } return out; }, toArray:function (arrayLike, startOffset) { var array = []; for (var i = startOffset || 0; i < arrayLike.length; i++) { array.push(arrayLike[i]); } return array; }}); }});

__CPAN_FILE__ src/lang/type.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.lang.type"); dojo.require("dojo.lang.common"); dojo.lang.whatAmI = function (value) { dojo.deprecated("dojo.lang.whatAmI", "use dojo.lang.getType instead", "0.5"); return dojo.lang.getType(value); }; dojo.lang.whatAmI.custom = {}; dojo.lang.getType = function (value) { try { if (dojo.lang.isArray(value)) { return "array"; } if (dojo.lang.isFunction(value)) { return "function"; } if (dojo.lang.isString(value)) { return "string"; } if (dojo.lang.isNumber(value)) { return "number"; } if (dojo.lang.isBoolean(value)) { return "boolean"; } if (dojo.lang.isAlien(value)) { return "alien"; } if (dojo.lang.isUndefined(value)) { return "undefined"; } for (var name in dojo.lang.whatAmI.custom) { if (dojo.lang.whatAmI.custom[name](value)) { return name; } } if (dojo.lang.isObject(value)) { return "object"; } } catch (e) { } return "unknown"; }; dojo.lang.isNumeric = function (value) { return (!isNaN(value) && isFinite(value) && (value != null) && !dojo.lang.isBoolean(value) && !dojo.lang.isArray(value) && !/^\s*$/.test(value)); }; dojo.lang.isBuiltIn = function (value) { return (dojo.lang.isArray(value) || dojo.lang.isFunction(value) || dojo.lang.isString(value) || dojo.lang.isNumber(value) || dojo.lang.isBoolean(value) || (value == null) || (value instanceof Error) || (typeof value == "error")); }; dojo.lang.isPureObject = function (value) { return ((value != null) && dojo.lang.isObject(value) && value.constructor == Object); }; dojo.lang.isOfType = function (value, type, keywordParameters) { var optional = false; if (keywordParameters) { optional = keywordParameters["optional"]; } if (optional && ((value === null) || dojo.lang.isUndefined(value))) { return true; } if (dojo.lang.isArray(type)) { var arrayOfTypes = type; for (var i in arrayOfTypes) { var aType = arrayOfTypes[i]; if (dojo.lang.isOfType(value, aType)) { return true; } } return false; } else { if (dojo.lang.isString(type)) { type = type.toLowerCase(); } switch (type) { case Array: case "array": return dojo.lang.isArray(value); case Function: case "function": return dojo.lang.isFunction(value); case String: case "string": return dojo.lang.isString(value); case Number: case "number": return dojo.lang.isNumber(value); case "numeric": return dojo.lang.isNumeric(value); case Boolean: case "boolean": return dojo.lang.isBoolean(value); case Object: case "object": return dojo.lang.isObject(value); case "pureobject": return dojo.lang.isPureObject(value); case "builtin": return dojo.lang.isBuiltIn(value); case "alien": return dojo.lang.isAlien(value); case "undefined": return dojo.lang.isUndefined(value); case null: case "null": return (value === null); case "optional": dojo.deprecated("dojo.lang.isOfType(value, [type, \"optional\"])", "use dojo.lang.isOfType(value, type, {optional: true} ) instead", "0.5"); return ((value === null) || dojo.lang.isUndefined(value)); default: if (dojo.lang.isFunction(type)) { return (value instanceof type); } else { dojo.raise("dojo.lang.isOfType() was passed an invalid type"); } } } dojo.raise("If we get here, it means a bug was introduced above."); }; dojo.lang.getObject = function (str) { var parts = str.split("."), i = 0, obj = dj_global; do { obj = obj[parts[i++]]; } while (i < parts.length && obj); return (obj != dj_global) ? obj : null; }; dojo.lang.doesObjectExist = function (str) { var parts = str.split("."), i = 0, obj = dj_global; do { obj = obj[parts[i++]]; } while (i < parts.length && obj); return (obj && obj != dj_global); };

__CPAN_FILE__ src/lang/__package__.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.kwCompoundRequire({common:["dojo.lang.common", "dojo.lang.assert", "dojo.lang.array", "dojo.lang.type", "dojo.lang.func", "dojo.lang.extras", "dojo.lang.repr", "dojo.lang.declare"]}); dojo.provide("dojo.lang.*");

__CPAN_FILE__ src/lang/repr.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.lang.repr"); dojo.require("dojo.lang.common"); dojo.require("dojo.AdapterRegistry"); dojo.require("dojo.string.extras"); dojo.lang.reprRegistry = new dojo.AdapterRegistry(); dojo.lang.registerRepr = function (name, check, wrap, override) { dojo.lang.reprRegistry.register(name, check, wrap, override); }; dojo.lang.repr = function (obj) { if (typeof (obj) == "undefined") { return "undefined"; } else { if (obj === null) { return "null"; } } try { if (typeof (obj["__repr__"]) == "function") { return obj["__repr__"](); } else { if ((typeof (obj["repr"]) == "function") && (obj.repr != arguments.callee)) { return obj["repr"](); } } return dojo.lang.reprRegistry.match(obj); } catch (e) { if (typeof (obj.NAME) == "string" && (obj.toString == Function.prototype.toString || obj.toString == Object.prototype.toString)) { return obj.NAME; } } if (typeof (obj) == "function") { obj = (obj + "").replace(/^\s+/, ""); var idx = obj.indexOf("{"); if (idx != -1) { obj = obj.substr(0, idx) + "{...}"; } } return obj + ""; }; dojo.lang.reprArrayLike = function (arr) { try { var na = dojo.lang.map(arr, dojo.lang.repr); return "[" + na.join(", ") + "]"; } catch (e) { } }; (function () { var m = dojo.lang; m.registerRepr("arrayLike", m.isArrayLike, m.reprArrayLike); m.registerRepr("string", m.isString, m.reprString); m.registerRepr("numbers", m.isNumber, m.reprNumber); m.registerRepr("boolean", m.isBoolean, m.reprNumber); })();

__CPAN_FILE__ src/lang/declare.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.lang.declare"], ["require", "dojo.lang.common"], ["require", "dojo.lang.extras"]], definePackage:function (dojo) { dojo.provide("dojo.lang.declare"); dojo.require("dojo.lang.common"); dojo.require("dojo.lang.extras"); dojo.lang.declare = function (className, superclass, init, props) { if ((dojo.lang.isFunction(props)) || ((!props) && (!dojo.lang.isFunction(init)))) { var temp = props; props = init; init = temp; } var mixins = []; if (dojo.lang.isArray(superclass)) { mixins = superclass; superclass = mixins.shift(); } if (!init) { init = dojo.evalObjPath(className, false); if ((init) && (!dojo.lang.isFunction(init))) { init = null; } } var ctor = dojo.lang.declare._makeConstructor(); var scp = (superclass ? superclass.prototype : null); if (scp) { scp.prototyping = true; ctor.prototype = new superclass(); scp.prototyping = false; } ctor.superclass = scp; ctor.mixins = mixins; for (var i = 0, l = mixins.length; i < l; i++) { dojo.lang.extend(ctor, mixins[i].prototype); } ctor.prototype.initializer = null; ctor.prototype.declaredClass = className; if (dojo.lang.isArray(props)) { dojo.lang.extend.apply(dojo.lang, [ctor].concat(props)); } else { dojo.lang.extend(ctor, (props) || {}); } dojo.lang.extend(ctor, dojo.lang.declare._common); ctor.prototype.constructor = ctor; ctor.prototype.initializer = (ctor.prototype.initializer) || (init) || (function () { }); var created = dojo.parseObjPath(className, null, true); created.obj[created.prop] = ctor; return ctor; }; dojo.lang.declare._makeConstructor = function () { return function () { var self = this._getPropContext(); var s = self.constructor.superclass; if ((s) && (s.constructor)) { if (s.constructor == arguments.callee) { this._inherited("constructor", arguments); } else { this._contextMethod(s, "constructor", arguments); } } var ms = (self.constructor.mixins) || ([]); for (var i = 0, m; (m = ms[i]); i++) { (((m.prototype) && (m.prototype.initializer)) || (m)).apply(this, arguments); } if ((!this.prototyping) && (self.initializer)) { self.initializer.apply(this, arguments); } }; }; dojo.lang.declare._common = {_getPropContext:function () { return (this.___proto || this); }, _contextMethod:function (ptype, method, args) { var result, stack = this.___proto; this.___proto = ptype; try { result = ptype[method].apply(this, (args || [])); } catch (e) { throw e; } finally { this.___proto = stack; } return result; }, _inherited:function (prop, args) { var p = this._getPropContext(); do { if ((!p.constructor) || (!p.constructor.superclass)) { return; } p = p.constructor.superclass; } while (!(prop in p)); return (dojo.lang.isFunction(p[prop]) ? this._contextMethod(p, prop, args) : p[prop]); }, inherited:function (prop, args) { dojo.deprecated("'inherited' method is dangerous, do not up-call! 'inherited' is slated for removal in 0.5; name your super class (or use superclass property) instead.", "0.5"); this._inherited(prop, args); }}; dojo.declare = dojo.lang.declare; }});

__CPAN_FILE__ src/lang/extras.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.lang.extras"], ["require", "dojo.lang.common"]], definePackage:function (dojo) { dojo.provide("dojo.lang.extras"); dojo.require("dojo.lang.common"); dojo.lang.setTimeout = function (func, delay) { var context = window, argsStart = 2; if (!dojo.lang.isFunction(func)) { context = func; func = delay; delay = arguments[2]; argsStart++; } if (dojo.lang.isString(func)) { func = context[func]; } var args = []; for (var i = argsStart; i < arguments.length; i++) { args.push(arguments[i]); } return dojo.global().setTimeout(function () { func.apply(context, args); }, delay); }; dojo.lang.clearTimeout = function (timer) { dojo.global().clearTimeout(timer); }; dojo.lang.getNameInObj = function (ns, item) { if (!ns) { ns = dj_global; } for (var x in ns) { if (ns[x] === item) { return new String(x); } } return null; }; dojo.lang.shallowCopy = function (obj, deep) { var i, ret; if (obj === null) { return null; } if (dojo.lang.isObject(obj)) { ret = new obj.constructor(); for (i in obj) { if (dojo.lang.isUndefined(ret[i])) { ret[i] = deep ? dojo.lang.shallowCopy(obj[i], deep) : obj[i]; } } } else { if (dojo.lang.isArray(obj)) { ret = []; for (i = 0; i < obj.length; i++) { ret[i] = deep ? dojo.lang.shallowCopy(obj[i], deep) : obj[i]; } } else { ret = obj; } } return ret; }; dojo.lang.firstValued = function () { for (var i = 0; i < arguments.length; i++) { if (typeof arguments[i] != "undefined") { return arguments[i]; } } return undefined; }; dojo.lang.getObjPathValue = function (objpath, context, create) { with (dojo.parseObjPath(objpath, context, create)) { return dojo.evalProp(prop, obj, create); } }; dojo.lang.setObjPathValue = function (objpath, value, context, create) { dojo.deprecated("dojo.lang.setObjPathValue", "use dojo.parseObjPath and the '=' operator", "0.6"); if (arguments.length < 4) { create = true; } with (dojo.parseObjPath(objpath, context, create)) { if (obj && (create || (prop in obj))) { obj[prop] = value; } } }; }});

__CPAN_FILE__ src/lang/__package__.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["kwCompoundRequire", {common:["dojo.lang.common", "dojo.lang.assert", "dojo.lang.array", "dojo.lang.type", "dojo.lang.func", "dojo.lang.extras", "dojo.lang.repr", "dojo.lang.declare"]}], ["provide", "dojo.lang.*"]], definePackage:function (dojo) { dojo.kwCompoundRequire({common:["dojo.lang.common", "dojo.lang.assert", "dojo.lang.array", "dojo.lang.type", "dojo.lang.func", "dojo.lang.extras", "dojo.lang.repr", "dojo.lang.declare"]}); dojo.provide("dojo.lang.*"); }});

__CPAN_FILE__ src/lang/common.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.lang.common"]], definePackage:function (dojo) { dojo.provide("dojo.lang.common"); dojo.lang.inherits = function (subclass, superclass) { if (!dojo.lang.isFunction(superclass)) { dojo.raise("dojo.inherits: superclass argument [" + superclass + "] must be a function (subclass: [" + subclass + "']"); } subclass.prototype = new superclass(); subclass.prototype.constructor = subclass; subclass.superclass = superclass.prototype; subclass["super"] = superclass.prototype; }; dojo.lang._mixin = function (obj, props) { var tobj = {}; for (var x in props) { if ((typeof tobj[x] == "undefined") || (tobj[x] != props[x])) { obj[x] = props[x]; } } if (dojo.render.html.ie && (typeof (props["toString"]) == "function") && (props["toString"] != obj["toString"]) && (props["toString"] != tobj["toString"])) { obj.toString = props.toString; } return obj; }; dojo.lang.mixin = function (obj, props) { for (var i = 1, l = arguments.length; i < l; i++) { dojo.lang._mixin(obj, arguments[i]); } return obj; }; dojo.lang.extend = function (constructor, props) { for (var i = 1, l = arguments.length; i < l; i++) { dojo.lang._mixin(constructor.prototype, arguments[i]); } return constructor; }; dojo.inherits = dojo.lang.inherits; dojo.mixin = dojo.lang.mixin; dojo.extend = dojo.lang.extend; dojo.lang.find = function (array, value, identity, findLast) { if (!dojo.lang.isArrayLike(array) && dojo.lang.isArrayLike(value)) { dojo.deprecated("dojo.lang.find(value, array)", "use dojo.lang.find(array, value) instead", "0.5"); var temp = array; array = value; value = temp; } var isString = dojo.lang.isString(array); if (isString) { array = array.split(""); } if (findLast) { var step = -1; var i = array.length - 1; var end = -1; } else { var step = 1; var i = 0; var end = array.length; } if (identity) { while (i != end) { if (array[i] === value) { return i; } i += step; } } else { while (i != end) { if (array[i] == value) { return i; } i += step; } } return -1; }; dojo.lang.indexOf = dojo.lang.find; dojo.lang.findLast = function (array, value, identity) { return dojo.lang.find(array, value, identity, true); }; dojo.lang.lastIndexOf = dojo.lang.findLast; dojo.lang.inArray = function (array, value) { return dojo.lang.find(array, value) > -1; }; dojo.lang.isObject = function (it) { if (typeof it == "undefined") { return false; } return (typeof it == "object" || it === null || dojo.lang.isArray(it) || dojo.lang.isFunction(it)); }; dojo.lang.isArray = function (it) { return (it && it instanceof Array || typeof it == "array"); }; dojo.lang.isArrayLike = function (it) { if ((!it) || (dojo.lang.isUndefined(it))) { return false; } if (dojo.lang.isString(it)) { return false; } if (dojo.lang.isFunction(it)) { return false; } if (dojo.lang.isArray(it)) { return true; } if ((it.tagName) && (it.tagName.toLowerCase() == "form")) { return false; } if (dojo.lang.isNumber(it.length) && isFinite(it.length)) { return true; } return false; }; dojo.lang.isFunction = function (it) { return (it instanceof Function || typeof it == "function"); }; (function () { if ((dojo.render.html.capable) && (dojo.render.html["safari"])) { dojo.lang.isFunction = function (it) { if ((typeof (it) == "function") && (it == "[object NodeList]")) { return false; } return (it instanceof Function || typeof it == "function"); }; } })(); dojo.lang.isString = function (it) { return (typeof it == "string" || it instanceof String); }; dojo.lang.isAlien = function (it) { if (!it) { return false; } return !dojo.lang.isFunction(it) && /\{\s*\[native code\]\s*\}/.test(String(it)); }; dojo.lang.isBoolean = function (it) { return (it instanceof Boolean || typeof it == "boolean"); }; dojo.lang.isNumber = function (it) { return (it instanceof Number || typeof it == "number"); }; dojo.lang.isUndefined = function (it) { return ((typeof (it) == "undefined") && (it == undefined)); }; }});

__CPAN_FILE__ src/lang/type.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.lang.type"], ["require", "dojo.lang.common"]], definePackage:function (dojo) { dojo.provide("dojo.lang.type"); dojo.require("dojo.lang.common"); dojo.lang.whatAmI = function (value) { dojo.deprecated("dojo.lang.whatAmI", "use dojo.lang.getType instead", "0.5"); return dojo.lang.getType(value); }; dojo.lang.whatAmI.custom = {}; dojo.lang.getType = function (value) { try { if (dojo.lang.isArray(value)) { return "array"; } if (dojo.lang.isFunction(value)) { return "function"; } if (dojo.lang.isString(value)) { return "string"; } if (dojo.lang.isNumber(value)) { return "number"; } if (dojo.lang.isBoolean(value)) { return "boolean"; } if (dojo.lang.isAlien(value)) { return "alien"; } if (dojo.lang.isUndefined(value)) { return "undefined"; } for (var name in dojo.lang.whatAmI.custom) { if (dojo.lang.whatAmI.custom[name](value)) { return name; } } if (dojo.lang.isObject(value)) { return "object"; } } catch (e) { } return "unknown"; }; dojo.lang.isNumeric = function (value) { return (!isNaN(value) && isFinite(value) && (value != null) && !dojo.lang.isBoolean(value) && !dojo.lang.isArray(value) && !/^\s*$/.test(value)); }; dojo.lang.isBuiltIn = function (value) { return (dojo.lang.isArray(value) || dojo.lang.isFunction(value) || dojo.lang.isString(value) || dojo.lang.isNumber(value) || dojo.lang.isBoolean(value) || (value == null) || (value instanceof Error) || (typeof value == "error")); }; dojo.lang.isPureObject = function (value) { return ((value != null) && dojo.lang.isObject(value) && value.constructor == Object); }; dojo.lang.isOfType = function (value, type, keywordParameters) { var optional = false; if (keywordParameters) { optional = keywordParameters["optional"]; } if (optional && ((value === null) || dojo.lang.isUndefined(value))) { return true; } if (dojo.lang.isArray(type)) { var arrayOfTypes = type; for (var i in arrayOfTypes) { var aType = arrayOfTypes[i]; if (dojo.lang.isOfType(value, aType)) { return true; } } return false; } else { if (dojo.lang.isString(type)) { type = type.toLowerCase(); } switch (type) { case Array: case "array": return dojo.lang.isArray(value); case Function: case "function": return dojo.lang.isFunction(value); case String: case "string": return dojo.lang.isString(value); case Number: case "number": return dojo.lang.isNumber(value); case "numeric": return dojo.lang.isNumeric(value); case Boolean: case "boolean": return dojo.lang.isBoolean(value); case Object: case "object": return dojo.lang.isObject(value); case "pureobject": return dojo.lang.isPureObject(value); case "builtin": return dojo.lang.isBuiltIn(value); case "alien": return dojo.lang.isAlien(value); case "undefined": return dojo.lang.isUndefined(value); case null: case "null": return (value === null); case "optional": dojo.deprecated("dojo.lang.isOfType(value, [type, \"optional\"])", "use dojo.lang.isOfType(value, type, {optional: true} ) instead", "0.5"); return ((value === null) || dojo.lang.isUndefined(value)); default: if (dojo.lang.isFunction(type)) { return (value instanceof type); } else { dojo.raise("dojo.lang.isOfType() was passed an invalid type"); } } } dojo.raise("If we get here, it means a bug was introduced above."); }; dojo.lang.getObject = function (str) { var parts = str.split("."), i = 0, obj = dj_global; do { obj = obj[parts[i++]]; } while (i < parts.length && obj); return (obj != dj_global) ? obj : null; }; dojo.lang.doesObjectExist = function (str) { var parts = str.split("."), i = 0, obj = dj_global; do { obj = obj[parts[i++]]; } while (i < parts.length && obj); return (obj && obj != dj_global); }; }});

__CPAN_FILE__ src/lang/assert.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.lang.assert"], ["require", "dojo.lang.common"], ["require", "dojo.lang.array"], ["require", "dojo.lang.type"]], definePackage:function (dojo) { dojo.provide("dojo.lang.assert"); dojo.require("dojo.lang.common"); dojo.require("dojo.lang.array"); dojo.require("dojo.lang.type"); dojo.lang.assert = function (booleanValue, message) { if (!booleanValue) { var errorMessage = "An assert statement failed.\n" + "The method dojo.lang.assert() was called with a 'false' value.\n"; if (message) { errorMessage += "Here's the assert message:\n" + message + "\n"; } throw new Error(errorMessage); } }; dojo.lang.assertType = function (value, type, keywordParameters) { if (dojo.lang.isString(keywordParameters)) { dojo.deprecated("dojo.lang.assertType(value, type, \"message\")", "use dojo.lang.assertType(value, type) instead", "0.5"); } if (!dojo.lang.isOfType(value, type, keywordParameters)) { if (!dojo.lang.assertType._errorMessage) { dojo.lang.assertType._errorMessage = "Type mismatch: dojo.lang.assertType() failed."; } dojo.lang.assert(false, dojo.lang.assertType._errorMessage); } }; dojo.lang.assertValidKeywords = function (object, expectedProperties, message) { var key; if (!message) { if (!dojo.lang.assertValidKeywords._errorMessage) { dojo.lang.assertValidKeywords._errorMessage = "In dojo.lang.assertValidKeywords(), found invalid keyword:"; } message = dojo.lang.assertValidKeywords._errorMessage; } if (dojo.lang.isArray(expectedProperties)) { for (key in object) { if (!dojo.lang.inArray(expectedProperties, key)) { dojo.lang.assert(false, message + " " + key); } } } else { for (key in object) { if (!(key in expectedProperties)) { dojo.lang.assert(false, message + " " + key); } } } }; }});

__CPAN_FILE__ src/lang/extras.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.lang.extras"); dojo.require("dojo.lang.common"); dojo.lang.setTimeout = function (func, delay) { var context = window, argsStart = 2; if (!dojo.lang.isFunction(func)) { context = func; func = delay; delay = arguments[2]; argsStart++; } if (dojo.lang.isString(func)) { func = context[func]; } var args = []; for (var i = argsStart; i < arguments.length; i++) { args.push(arguments[i]); } return dojo.global().setTimeout(function () { func.apply(context, args); }, delay); }; dojo.lang.clearTimeout = function (timer) { dojo.global().clearTimeout(timer); }; dojo.lang.getNameInObj = function (ns, item) { if (!ns) { ns = dj_global; } for (var x in ns) { if (ns[x] === item) { return new String(x); } } return null; }; dojo.lang.shallowCopy = function (obj, deep) { var i, ret; if (obj === null) { return null; } if (dojo.lang.isObject(obj)) { ret = new obj.constructor(); for (i in obj) { if (dojo.lang.isUndefined(ret[i])) { ret[i] = deep ? dojo.lang.shallowCopy(obj[i], deep) : obj[i]; } } } else { if (dojo.lang.isArray(obj)) { ret = []; for (i = 0; i < obj.length; i++) { ret[i] = deep ? dojo.lang.shallowCopy(obj[i], deep) : obj[i]; } } else { ret = obj; } } return ret; }; dojo.lang.firstValued = function () { for (var i = 0; i < arguments.length; i++) { if (typeof arguments[i] != "undefined") { return arguments[i]; } } return undefined; }; dojo.lang.getObjPathValue = function (objpath, context, create) { with (dojo.parseObjPath(objpath, context, create)) { return dojo.evalProp(prop, obj, create); } }; dojo.lang.setObjPathValue = function (objpath, value, context, create) { dojo.deprecated("dojo.lang.setObjPathValue", "use dojo.parseObjPath and the '=' operator", "0.6"); if (arguments.length < 4) { create = true; } with (dojo.parseObjPath(objpath, context, create)) { if (obj && (create || (prop in obj))) { obj[prop] = value; } } };

__CPAN_FILE__ src/lang/repr.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.lang.repr"], ["require", "dojo.lang.common"], ["require", "dojo.AdapterRegistry"], ["require", "dojo.string.extras"]], definePackage:function (dojo) { dojo.provide("dojo.lang.repr"); dojo.require("dojo.lang.common"); dojo.require("dojo.AdapterRegistry"); dojo.require("dojo.string.extras"); dojo.lang.reprRegistry = new dojo.AdapterRegistry(); dojo.lang.registerRepr = function (name, check, wrap, override) { dojo.lang.reprRegistry.register(name, check, wrap, override); }; dojo.lang.repr = function (obj) { if (typeof (obj) == "undefined") { return "undefined"; } else { if (obj === null) { return "null"; } } try { if (typeof (obj["__repr__"]) == "function") { return obj["__repr__"](); } else { if ((typeof (obj["repr"]) == "function") && (obj.repr != arguments.callee)) { return obj["repr"](); } } return dojo.lang.reprRegistry.match(obj); } catch (e) { if (typeof (obj.NAME) == "string" && (obj.toString == Function.prototype.toString || obj.toString == Object.prototype.toString)) { return obj.NAME; } } if (typeof (obj) == "function") { obj = (obj + "").replace(/^\s+/, ""); var idx = obj.indexOf("{"); if (idx != -1) { obj = obj.substr(0, idx) + "{...}"; } } return obj + ""; }; dojo.lang.reprArrayLike = function (arr) { try { var na = dojo.lang.map(arr, dojo.lang.repr); return "[" + na.join(", ") + "]"; } catch (e) { } }; (function () { var m = dojo.lang; m.registerRepr("arrayLike", m.isArrayLike, m.reprArrayLike); m.registerRepr("string", m.isString, m.reprString); m.registerRepr("numbers", m.isNumber, m.reprNumber); m.registerRepr("boolean", m.isBoolean, m.reprNumber); })(); }});

__CPAN_FILE__ src/lang/declare.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.lang.declare"); dojo.require("dojo.lang.common"); dojo.require("dojo.lang.extras"); dojo.lang.declare = function (className, superclass, init, props) { if ((dojo.lang.isFunction(props)) || ((!props) && (!dojo.lang.isFunction(init)))) { var temp = props; props = init; init = temp; } var mixins = []; if (dojo.lang.isArray(superclass)) { mixins = superclass; superclass = mixins.shift(); } if (!init) { init = dojo.evalObjPath(className, false); if ((init) && (!dojo.lang.isFunction(init))) { init = null; } } var ctor = dojo.lang.declare._makeConstructor(); var scp = (superclass ? superclass.prototype : null); if (scp) { scp.prototyping = true; ctor.prototype = new superclass(); scp.prototyping = false; } ctor.superclass = scp; ctor.mixins = mixins; for (var i = 0, l = mixins.length; i < l; i++) { dojo.lang.extend(ctor, mixins[i].prototype); } ctor.prototype.initializer = null; ctor.prototype.declaredClass = className; if (dojo.lang.isArray(props)) { dojo.lang.extend.apply(dojo.lang, [ctor].concat(props)); } else { dojo.lang.extend(ctor, (props) || {}); } dojo.lang.extend(ctor, dojo.lang.declare._common); ctor.prototype.constructor = ctor; ctor.prototype.initializer = (ctor.prototype.initializer) || (init) || (function () { }); var created = dojo.parseObjPath(className, null, true); created.obj[created.prop] = ctor; return ctor; }; dojo.lang.declare._makeConstructor = function () { return function () { var self = this._getPropContext(); var s = self.constructor.superclass; if ((s) && (s.constructor)) { if (s.constructor == arguments.callee) { this._inherited("constructor", arguments); } else { this._contextMethod(s, "constructor", arguments); } } var ms = (self.constructor.mixins) || ([]); for (var i = 0, m; (m = ms[i]); i++) { (((m.prototype) && (m.prototype.initializer)) || (m)).apply(this, arguments); } if ((!this.prototyping) && (self.initializer)) { self.initializer.apply(this, arguments); } }; }; dojo.lang.declare._common = {_getPropContext:function () { return (this.___proto || this); }, _contextMethod:function (ptype, method, args) { var result, stack = this.___proto; this.___proto = ptype; try { result = ptype[method].apply(this, (args || [])); } catch (e) { throw e; } finally { this.___proto = stack; } return result; }, _inherited:function (prop, args) { var p = this._getPropContext(); do { if ((!p.constructor) || (!p.constructor.superclass)) { return; } p = p.constructor.superclass; } while (!(prop in p)); return (dojo.lang.isFunction(p[prop]) ? this._contextMethod(p, prop, args) : p[prop]); }, inherited:function (prop, args) { dojo.deprecated("'inherited' method is dangerous, do not up-call! 'inherited' is slated for removal in 0.5; name your super class (or use superclass property) instead.", "0.5"); this._inherited(prop, args); }}; dojo.declare = dojo.lang.declare;

__CPAN_FILE__ src/lang/func.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.lang.func"], ["require", "dojo.lang.common"]], definePackage:function (dojo) { dojo.provide("dojo.lang.func"); dojo.require("dojo.lang.common"); dojo.lang.hitch = function (thisObject, method) { var args = []; for (var x = 2; x < arguments.length; x++) { args.push(arguments[x]); } var fcn = (dojo.lang.isString(method) ? thisObject[method] : method) || function () { }; return function () { var ta = args.concat([]); for (var x = 0; x < arguments.length; x++) { ta.push(arguments[x]); } return fcn.apply(thisObject, ta); }; }; dojo.lang.anonCtr = 0; dojo.lang.anon = {}; dojo.lang.nameAnonFunc = function (anonFuncPtr, thisObj, searchForNames) { var nso = (thisObj || dojo.lang.anon); if ((searchForNames) || ((dj_global["djConfig"]) && (djConfig["slowAnonFuncLookups"] == true))) { for (var x in nso) { try { if (nso[x] === anonFuncPtr) { return x; } } catch (e) { } } } var ret = "__" + dojo.lang.anonCtr++; while (typeof nso[ret] != "undefined") { ret = "__" + dojo.lang.anonCtr++; } nso[ret] = anonFuncPtr; return ret; }; dojo.lang.forward = function (funcName) { return function () { return this[funcName].apply(this, arguments); }; }; dojo.lang.curry = function (thisObj, func) { var outerArgs = []; thisObj = thisObj || dj_global; if (dojo.lang.isString(func)) { func = thisObj[func]; } for (var x = 2; x < arguments.length; x++) { outerArgs.push(arguments[x]); } var ecount = (func["__preJoinArity"] || func.length) - outerArgs.length; function gather(nextArgs, innerArgs, expected) { var texpected = expected; var totalArgs = innerArgs.slice(0); for (var x = 0; x < nextArgs.length; x++) { totalArgs.push(nextArgs[x]); } expected = expected - nextArgs.length; if (expected <= 0) { var res = func.apply(thisObj, totalArgs); expected = texpected; return res; } else { return function () { return gather(arguments, totalArgs, expected); }; } } return gather([], outerArgs, ecount); }; dojo.lang.curryArguments = function (thisObj, func, args, offset) { var targs = []; var x = offset || 0; for (x = offset; x < args.length; x++) { targs.push(args[x]); } return dojo.lang.curry.apply(dojo.lang, [thisObj, func].concat(targs)); }; dojo.lang.tryThese = function () { for (var x = 0; x < arguments.length; x++) { try { if (typeof arguments[x] == "function") { var ret = (arguments[x]()); if (ret) { return ret; } } } catch (e) { dojo.debug(e); } } }; dojo.lang.delayThese = function (farr, cb, delay, onend) { if (!farr.length) { if (typeof onend == "function") { onend(); } return; } if ((typeof delay == "undefined") && (typeof cb == "number")) { delay = cb; cb = function () { }; } else { if (!cb) { cb = function () { }; if (!delay) { delay = 0; } } } setTimeout(function () { (farr.shift())(); cb(); dojo.lang.delayThese(farr, cb, delay, onend); }, delay); }; }});

__CPAN_DIR__ src/lang/timing __CPAN_FILE__ src/lang/timing/Timer.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.lang.timing.Timer"], ["require", "dojo.lang.func"]], definePackage:function (dojo) { dojo.provide("dojo.lang.timing.Timer"); dojo.require("dojo.lang.func"); dojo.lang.timing.Timer = function (interval) { this.timer = null; this.isRunning = false; this.interval = interval; this.onStart = null; this.onStop = null; }; dojo.extend(dojo.lang.timing.Timer, {onTick:function () { }, setInterval:function (interval) { if (this.isRunning) { dj_global.clearInterval(this.timer); } this.interval = interval; if (this.isRunning) { this.timer = dj_global.setInterval(dojo.lang.hitch(this, "onTick"), this.interval); } }, start:function () { if (typeof this.onStart == "function") { this.onStart(); } this.isRunning = true; this.timer = dj_global.setInterval(dojo.lang.hitch(this, "onTick"), this.interval); }, stop:function () { if (typeof this.onStop == "function") { this.onStop(); } this.isRunning = false; dj_global.clearInterval(this.timer); }}); }});

__CPAN_FILE__ src/lang/timing/Timer.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.lang.timing.Timer"); dojo.require("dojo.lang.func"); dojo.lang.timing.Timer = function (interval) { this.timer = null; this.isRunning = false; this.interval = interval; this.onStart = null; this.onStop = null; }; dojo.extend(dojo.lang.timing.Timer, {onTick:function () { }, setInterval:function (interval) { if (this.isRunning) { dj_global.clearInterval(this.timer); } this.interval = interval; if (this.isRunning) { this.timer = dj_global.setInterval(dojo.lang.hitch(this, "onTick"), this.interval); } }, start:function () { if (typeof this.onStart == "function") { this.onStart(); } this.isRunning = true; this.timer = dj_global.setInterval(dojo.lang.hitch(this, "onTick"), this.interval); }, stop:function () { if (typeof this.onStop == "function") { this.onStop(); } this.isRunning = false; dj_global.clearInterval(this.timer); }});

__CPAN_FILE__ src/lang/timing/Streamer.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.lang.timing.Streamer"); dojo.require("dojo.lang.timing.Timer"); dojo.lang.timing.Streamer = function (input, output, interval, minimum, initialData) { var self = this; var queue = []; this.interval = interval || 1000; this.minimumSize = minimum || 10; this.inputFunction = input || function (q) { }; this.outputFunction = output || function (point) { }; var timer = new dojo.lang.timing.Timer(this.interval); var tick = function () { self.onTick(self); if (queue.length < self.minimumSize) { self.inputFunction(queue); } var obj = queue.shift(); while (typeof (obj) == "undefined" && queue.length > 0) { obj = queue.shift(); } if (typeof (obj) == "undefined") { self.stop(); return; } self.outputFunction(obj); }; this.setInterval = function (ms) { this.interval = ms; timer.setInterval(ms); }; this.onTick = function (obj) { }; this.start = function () { if (typeof (this.inputFunction) == "function" && typeof (this.outputFunction) == "function") { timer.start(); return; } dojo.raise("You cannot start a Streamer without an input and an output function."); }; this.onStart = function () { }; this.stop = function () { timer.stop(); }; this.onStop = function () { }; timer.onTick = this.tick; timer.onStart = this.onStart; timer.onStop = this.onStop; if (initialData) { queue.concat(initialData); } };

__CPAN_FILE__ src/lang/timing/__package__.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.lang.timing.*");

__CPAN_FILE__ src/lang/timing/__package__.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.lang.timing.*"]], definePackage:function (dojo) { dojo.provide("dojo.lang.timing.*"); }});

__CPAN_FILE__ src/lang/timing/Streamer.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.lang.timing.Streamer"], ["require", "dojo.lang.timing.Timer"]], definePackage:function (dojo) { dojo.provide("dojo.lang.timing.Streamer"); dojo.require("dojo.lang.timing.Timer"); dojo.lang.timing.Streamer = function (input, output, interval, minimum, initialData) { var self = this; var queue = []; this.interval = interval || 1000; this.minimumSize = minimum || 10; this.inputFunction = input || function (q) { }; this.outputFunction = output || function (point) { }; var timer = new dojo.lang.timing.Timer(this.interval); var tick = function () { self.onTick(self); if (queue.length < self.minimumSize) { self.inputFunction(queue); } var obj = queue.shift(); while (typeof (obj) == "undefined" && queue.length > 0) { obj = queue.shift(); } if (typeof (obj) == "undefined") { self.stop(); return; } self.outputFunction(obj); }; this.setInterval = function (ms) { this.interval = ms; timer.setInterval(ms); }; this.onTick = function (obj) { }; this.start = function () { if (typeof (this.inputFunction) == "function" && typeof (this.outputFunction) == "function") { timer.start(); return; } dojo.raise("You cannot start a Streamer without an input and an output function."); }; this.onStart = function () { }; this.stop = function () { timer.stop(); }; this.onStop = function () { }; timer.onTick = this.tick; timer.onStart = this.onStart; timer.onStop = this.onStop; if (initialData) { queue.concat(initialData); } }; }});

__CPAN_DIR__ src/data __CPAN_FILE__ src/data/OpmlStore.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.data.OpmlStore"); dojo.require("dojo.data.core.Read"); dojo.require("dojo.data.core.Result"); dojo.require("dojo.lang.assert"); dojo.require("dojo.json"); dojo.require("dojo.experimental"); dojo.experimental("dojo.data.OpmlStore"); dojo.declare("dojo.data.OpmlStore", dojo.data.core.Read, {initializer:function (keywordParameters) { this._arrayOfTopLevelItems = []; this._metadataNodes = null; this._loadFinished = false; this._opmlFileUrl = keywordParameters["url"]; }, _assertIsItem:function (item) { if (!this.isItem(item)) { throw new Error("dojo.data.OpmlStore: a function was passed an item argument that was not an item"); } }, _removeChildNodesThatAreNotElementNodes:function (node, recursive) { var childNodes = node.childNodes; if (childNodes.length == 0) { return; } var nodesToRemove = []; var i, childNode; for (i = 0; i < childNodes.length; ++i) { childNode = childNodes[i]; if (childNode.nodeType != Node.ELEMENT_NODE) { nodesToRemove.push(childNode); } } for (i = 0; i < nodesToRemove.length; ++i) { childNode = nodesToRemove[i]; node.removeChild(childNode); } if (recursive) { for (i = 0; i < childNodes.length; ++i) { childNode = childNodes[i]; this._removeChildNodesThatAreNotElementNodes(childNode, recursive); } } }, _processRawXmlTree:function (rawXmlTree) { var headNodes = rawXmlTree.getElementsByTagName("head"); var headNode = headNodes[0]; this._removeChildNodesThatAreNotElementNodes(headNode); this._metadataNodes = headNode.childNodes; var bodyNodes = rawXmlTree.getElementsByTagName("body"); var bodyNode = bodyNodes[0]; this._removeChildNodesThatAreNotElementNodes(bodyNode, true); var bodyChildNodes = bodyNodes[0].childNodes; for (var i = 0; i < bodyChildNodes.length; ++i) { var node = bodyChildNodes[i]; if (node.tagName == "outline") { this._arrayOfTopLevelItems.push(node); } } }, get:function (item, attribute, defaultValue) { this._assertIsItem(item); if (attribute == "children") { return (item.firstChild || defaultValue); } else { var value = item.getAttribute(attribute); value = (value != undefined) ? value : defaultValue; return value; } }, getValues:function (item, attribute) { this._assertIsItem(item); if (attribute == "children") { var array = []; for (var i = 0; i < item.childNodes.length; ++i) { array.push(item.childNodes[i]); } return array; } else { return [item.getAttribute(attribute)]; } }, getAttributes:function (item) { this._assertIsItem(item); var attributes = []; var xmlNode = item; var xmlAttributes = xmlNode.attributes; for (var i = 0; i < xmlAttributes.length; ++i) { var xmlAttribute = xmlAttributes.item(i); attributes.push(xmlAttribute.nodeName); } if (xmlNode.childNodes.length > 0) { attributes.push("children"); } return attributes; }, hasAttribute:function (item, attribute) { return (this.getValues(item, attribute).length > 0); }, containsValue:function (item, attribute, value) { var values = this.getValues(item, attribute); for (var i = 0; i < values.length; ++i) { var possibleValue = values[i]; if (value == possibleValue) { return true; } } return false; }, isItem:function (something) { return (something && something.nodeType == Node.ELEMENT_NODE && something.tagName == "outline"); }, isItemAvailable:function (something) { return this.isItem(something); }, find:function (keywordArgs) { var result = null; if (keywordArgs instanceof dojo.data.core.Result) { result = keywordArgs; result.store = this; } else { result = new dojo.data.core.Result(keywordArgs, this); } var self = this; var bindHandler = function (type, data, evt) { var scope = result.scope || dj_global; if (type == "load") { self._processRawXmlTree(data); if (result.saveResult) { result.items = self._arrayOfTopLevelItems; } if (result.onbegin) { result.onbegin.call(scope, result); } for (var i = 0; i < self._arrayOfTopLevelItems.length; i++) { var item = self._arrayOfTopLevelItems[i]; if (result.onnext && !result._aborted) { result.onnext.call(scope, item, result); } } if (result.oncompleted && !result._aborted) { result.oncompleted.call(scope, result); } } else { if (type == "error" || type == "timeout") { var errorObject = data; if (result.onerror) { result.onerror.call(scope, data); } } } }; if (!this._loadFinished) { if (this._opmlFileUrl) { var bindRequest = dojo.io.bind({url:this._opmlFileUrl, handle:bindHandler, mimetype:"text/xml", sync:(result.sync || false)}); result._abortFunc = bindRequest.abort; } } return result; }, getIdentity:function (item) { dojo.unimplemented("dojo.data.OpmlStore.getIdentity()"); return null; }, findByIdentity:function (identity) { dojo.unimplemented("dojo.data.OpmlStore.findByIdentity()"); return null; }});

__CPAN_FILE__ src/data/YahooStore.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.data.YahooStore"); dojo.require("dojo.data.core.RemoteStore"); dojo.require("dojo.lang.declare"); dojo.require("dojo.io.ScriptSrcIO"); dojo.declare("dojo.data.YahooStore", dojo.data.core.RemoteStore, {_setupQueryRequest:function (result, requestKw) { var start = 1; var count = 1; if (result) { start = result.start || start; count = result.count || count; } var sourceUrl = "http://api.search.yahoo.com/WebSearchService/V1/webSearch?appid=dojo&language=en&query=" + result.query + "&start=" + start + "&results=" + count + "&output=json"; requestKw.url = sourceUrl; requestKw.transport = "ScriptSrcTransport"; requestKw.mimetype = "text/json"; requestKw.jsonParamName = "callback"; }, _resultToQueryMetadata:function (json) { return json.ResultSet; }, _resultToQueryData:function (json) { var data = {}; for (var i = 0; i < json.ResultSet.totalResultsReturned; ++i) { var record = json.ResultSet.Result[i]; var item = {}; item["Url"] = [record.Url]; item["Title"] = [record.Title]; item["Summary"] = [record.Summary]; var arrayIndex = (json.ResultSet.firstResultPosition - 1) + i; data[arrayIndex.toString()] = item; } return data; }});

__CPAN_FILE__ src/data/OpmlStore.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.data.OpmlStore"], ["require", "dojo.data.core.Read"], ["require", "dojo.data.core.Result"], ["require", "dojo.lang.assert"], ["require", "dojo.json"], ["require", "dojo.experimental"]], definePackage:function (dojo) { dojo.provide("dojo.data.OpmlStore"); dojo.require("dojo.data.core.Read"); dojo.require("dojo.data.core.Result"); dojo.require("dojo.lang.assert"); dojo.require("dojo.json"); dojo.require("dojo.experimental"); dojo.experimental("dojo.data.OpmlStore"); dojo.declare("dojo.data.OpmlStore", dojo.data.core.Read, {initializer:function (keywordParameters) { this._arrayOfTopLevelItems = []; this._metadataNodes = null; this._loadFinished = false; this._opmlFileUrl = keywordParameters["url"]; }, _assertIsItem:function (item) { if (!this.isItem(item)) { throw new Error("dojo.data.OpmlStore: a function was passed an item argument that was not an item"); } }, _removeChildNodesThatAreNotElementNodes:function (node, recursive) { var childNodes = node.childNodes; if (childNodes.length == 0) { return; } var nodesToRemove = []; var i, childNode; for (i = 0; i < childNodes.length; ++i) { childNode = childNodes[i]; if (childNode.nodeType != Node.ELEMENT_NODE) { nodesToRemove.push(childNode); } } for (i = 0; i < nodesToRemove.length; ++i) { childNode = nodesToRemove[i]; node.removeChild(childNode); } if (recursive) { for (i = 0; i < childNodes.length; ++i) { childNode = childNodes[i]; this._removeChildNodesThatAreNotElementNodes(childNode, recursive); } } }, _processRawXmlTree:function (rawXmlTree) { var headNodes = rawXmlTree.getElementsByTagName("head"); var headNode = headNodes[0]; this._removeChildNodesThatAreNotElementNodes(headNode); this._metadataNodes = headNode.childNodes; var bodyNodes = rawXmlTree.getElementsByTagName("body"); var bodyNode = bodyNodes[0]; this._removeChildNodesThatAreNotElementNodes(bodyNode, true); var bodyChildNodes = bodyNodes[0].childNodes; for (var i = 0; i < bodyChildNodes.length; ++i) { var node = bodyChildNodes[i]; if (node.tagName == "outline") { this._arrayOfTopLevelItems.push(node); } } }, get:function (item, attribute, defaultValue) { this._assertIsItem(item); if (attribute == "children") { return (item.firstChild || defaultValue); } else { var value = item.getAttribute(attribute); value = (value != undefined) ? value : defaultValue; return value; } }, getValues:function (item, attribute) { this._assertIsItem(item); if (attribute == "children") { var array = []; for (var i = 0; i < item.childNodes.length; ++i) { array.push(item.childNodes[i]); } return array; } else { return [item.getAttribute(attribute)]; } }, getAttributes:function (item) { this._assertIsItem(item); var attributes = []; var xmlNode = item; var xmlAttributes = xmlNode.attributes; for (var i = 0; i < xmlAttributes.length; ++i) { var xmlAttribute = xmlAttributes.item(i); attributes.push(xmlAttribute.nodeName); } if (xmlNode.childNodes.length > 0) { attributes.push("children"); } return attributes; }, hasAttribute:function (item, attribute) { return (this.getValues(item, attribute).length > 0); }, containsValue:function (item, attribute, value) { var values = this.getValues(item, attribute); for (var i = 0; i < values.length; ++i) { var possibleValue = values[i]; if (value == possibleValue) { return true; } } return false; }, isItem:function (something) { return (something && something.nodeType == Node.ELEMENT_NODE && something.tagName == "outline"); }, isItemAvailable:function (something) { return this.isItem(something); }, find:function (keywordArgs) { var result = null; if (keywordArgs instanceof dojo.data.core.Result) { result = keywordArgs; result.store = this; } else { result = new dojo.data.core.Result(keywordArgs, this); } var self = this; var bindHandler = function (type, data, evt) { var scope = result.scope || dj_global; if (type == "load") { self._processRawXmlTree(data); if (result.saveResult) { result.items = self._arrayOfTopLevelItems; } if (result.onbegin) { result.onbegin.call(scope, result); } for (var i = 0; i < self._arrayOfTopLevelItems.length; i++) { var item = self._arrayOfTopLevelItems[i]; if (result.onnext && !result._aborted) { result.onnext.call(scope, item, result); } } if (result.oncompleted && !result._aborted) { result.oncompleted.call(scope, result); } } else { if (type == "error" || type == "timeout") { var errorObject = data; if (result.onerror) { result.onerror.call(scope, data); } } } }; if (!this._loadFinished) { if (this._opmlFileUrl) { var bindRequest = dojo.io.bind({url:this._opmlFileUrl, handle:bindHandler, mimetype:"text/xml", sync:(result.sync || false)}); result._abortFunc = bindRequest.abort; } } return result; }, getIdentity:function (item) { dojo.unimplemented("dojo.data.OpmlStore.getIdentity()"); return null; }, findByIdentity:function (identity) { dojo.unimplemented("dojo.data.OpmlStore.findByIdentity()"); return null; }}); }});

__CPAN_FILE__ src/data/RdfStore.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.data.RdfStore"); dojo.provide("dojo.data.RhizomeStore"); dojo.require("dojo.lang.declare"); dojo.require("dojo.data.core.RemoteStore"); dojo.require("dojo.experimental"); dojo.data.RdfDatatypeSerializer = function (type, convertFunc, uri) { this.type = type; this._converter = convertFunc; this.uri = uri; this.serialize = function (value) { return this._converter.call(value, value); }; }; dojo.declare("dojo.data.RdfStore", dojo.data.core.RemoteStore, {_datatypeMap:{literal:function (value) { var literal = value.value; if (value["xml:lang"]) { literal.lang = value["xml:lang"]; } return literal; }, uri:function (value) { return {id:value.value}; }, bnode:function (value) { return {id:"_:" + value.value}; }, "http://www.w3.org/2001/XMLSchema#int":function (value) { return parseInt(value.value); }, "http://www.w3.org/2001/XMLSchema#integer":function (value) { return parseInt(value.value); }, "http://www.w3.org/2001/XMLSchema#long":function (value) { return parseInt(value.value); }, "http://www.w3.org/2001/XMLSchema#float":function (value) { return parseFloat(value.value); }, "http://www.w3.org/2001/XMLSchema#double":function (value) { return parseFloat(value.value); }, "http://www.w3.org/2001/XMLSchema#boolean":function (value) { return !value || value == "false" || value == "0" ? false : true; }}, _datatypeSerializers:[new dojo.data.RdfDatatypeSerializer(Number, Number.toString, "http://www.w3.org/2001/XMLSchema#float"), new dojo.data.RdfDatatypeSerializer(Boolean, Boolean.toString, "http://www.w3.org/2001/XMLSchema#boolean")], _findDatatypeSerializer:function (value) { var length = this._datatypeSerializers.length; for (var i = 0; i < length; i++) { var datatype = this._datatypeSerializers[i]; if (value instanceof datatype.type) { return datatype; } } }, _toRDFValue:function (value) { var rdfvalue = {}; if (value.id) { if (value.id.slice(0, 2) == "_:") { rdfvalue.type = "bnode"; rdfvalue.value = value.id.substring(2); } else { rdfvalue.type = "uri"; rdfvalue.value = value.id; } } else { if (typeof value == "string" || value instanceof String) { rdfvalue.type = "literal"; rdfvalue.value = value; if (value.lang) { rdfvalue["xml:lang"] = value.lang; } } else { if (typeof value == "number") { value = new Number(value); } else { if (typeof value == "boolean") { value = new Boolean(value); } } var datatype = this._findDatatypeSerializer(value); if (datatype) { rdfvalue = {"type":"typed-literal", "datatype":datatype.uri, "value":value.toString()}; } else { rdfvalue = {"type":"literal", "value":value.toString()}; } } } return rdfvalue; }, _setupSaveRequest:function (saveKeywordArgs, requestKw) { var rdfResult = {"head":{"vars":["s", "p", "o"]}, "results":{"bindings":[]}}; var resources = []; for (var key in this._deleted) { resources.push(key); } rdfResult.results.deleted = resources; for (key in this._changed) { var subject = this._toRDFValue(this.getIdentity(key)); var attributes = this._changed[key]; for (var attr in attributes) { var predicate = {type:"uri", value:attr}; var values = attributes[attr]; if (!values.length) { continue; } var rdfvalues = []; for (var i = 0; i < values.length; i++) { var rdfvalue = this._toRDFValue(values[i]); rdfResult.results.bindings.push({s:subject, p:predicate, o:rdfvalue}); } } } var oldRegistry = dojo.json.jsonRegistry; dojo.json.jsonRegistry = this._jsonRegistry; var jsonString = dojo.json.serialize(rdfResult); dojo.json.jsonRegistry = oldRegistry; requestKw.postContent = jsonString; }, _resultToQueryMetadata:function (json) { return json.head; }, _resultToQueryData:function (json) { var items = {}; var stmts = json.results.bindings; for (var i = 0; i < stmts.length; i++) { var stmt = stmts[i]; var subject = stmt.s.value; if (stmt.s.type == "bnode") { subject = "_:" + subject; } var attributes = data[subject]; if (!attributes) { attributes = {}; data[stmt.s] = attributes; } var attr = attributes[stmt.p.value]; if (!attr) { attributes[stmt.p.value] = [stmt.o]; } else { attr.push(stmt.o); } } return items; }}); dojo.declare("dojo.data.RhizomeStore", dojo.data.RdfStore, {initializer:function (kwArgs) { this._serverQueryUrl = kwArgs.baseUrl + "search?view=json&searchType=RxPath&search="; this._serverSaveUrl = kwArgs.baseUrl + "save-metadata"; }, _resultToQueryMetadata:function (json) { return json; }, _resultToQueryData:function (json) { return json; }, _setupSaveRequest:function (saveKeywordArgs, requestKw) { requestKw.url = this._serverSaveUrl; requestKw.method = "post"; requestKw.mimetype = "text/plain"; var resources = []; for (var key in this._deleted) { resources.push(key); } var changes = {}; for (key in this._changed) { if (!this._added[key]) { resources.push(key); } var attributes = this._changed[key]; var rdfattributes = {}; for (var attr in attributes) { var values = attributes[attr]; if (!values.length) { continue; } var rdfvalues = []; for (var i = 0; i < values.length; i++) { var rdfvalue = this._toRDFValue(values[i]); rdfvalues.push(rdfvalue); } rdfattributes[attr] = rdfvalues; } changes[key] = rdfattributes; } var oldRegistry = dojo.json.jsonRegistry; dojo.json.jsonRegistry = this._jsonRegistry; var jsonString = dojo.json.serialize(changes); dojo.json.jsonRegistry = oldRegistry; requestKw.content = {rdfFormat:"json", resource:resources, metadata:jsonString}; }});

__CPAN_FILE__ src/data/YahooStore.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.data.YahooStore"], ["require", "dojo.data.core.RemoteStore"], ["require", "dojo.lang.declare"], ["require", "dojo.io.ScriptSrcIO"]], definePackage:function (dojo) { dojo.provide("dojo.data.YahooStore"); dojo.require("dojo.data.core.RemoteStore"); dojo.require("dojo.lang.declare"); dojo.require("dojo.io.ScriptSrcIO"); dojo.declare("dojo.data.YahooStore", dojo.data.core.RemoteStore, {_setupQueryRequest:function (result, requestKw) { var start = 1; var count = 1; if (result) { start = result.start || start; count = result.count || count; } var sourceUrl = "http://api.search.yahoo.com/WebSearchService/V1/webSearch?appid=dojo&language=en&query=" + result.query + "&start=" + start + "&results=" + count + "&output=json"; requestKw.url = sourceUrl; requestKw.transport = "ScriptSrcTransport"; requestKw.mimetype = "text/json"; requestKw.jsonParamName = "callback"; }, _resultToQueryMetadata:function (json) { return json.ResultSet; }, _resultToQueryData:function (json) { var data = {}; for (var i = 0; i < json.ResultSet.totalResultsReturned; ++i) { var record = json.ResultSet.Result[i]; var item = {}; item["Url"] = [record.Url]; item["Title"] = [record.Title]; item["Summary"] = [record.Summary]; var arrayIndex = (json.ResultSet.firstResultPosition - 1) + i; data[arrayIndex.toString()] = item; } return data; }}); }});

__CPAN_FILE__ src/data/CsvStore.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.data.CsvStore"], ["require", "dojo.data.core.RemoteStore"], ["require", "dojo.lang.assert"]], definePackage:function (dojo) { dojo.provide("dojo.data.CsvStore"); dojo.require("dojo.data.core.RemoteStore"); dojo.require("dojo.lang.assert"); dojo.declare("dojo.data.CsvStore", dojo.data.core.RemoteStore, {_setupQueryRequest:function (result, requestKw) { var serverQueryUrl = this._serverQueryUrl ? this._serverQueryUrl : ""; var queryUrl = result.query ? result.query : ""; requestKw.url = serverQueryUrl + queryUrl; requestKw.method = "get"; }, _resultToQueryData:function (serverResponseData) { var csvFileContentString = serverResponseData; var arrayOfArrays = this._getArrayOfArraysFromCsvFileContents(csvFileContentString); var arrayOfObjects = this._getArrayOfObjectsFromArrayOfArrays(arrayOfArrays); var remoteStoreData = this._getRemoteStoreDataFromArrayOfObjects(arrayOfObjects); return remoteStoreData; }, _setupSaveRequest:function (saveKeywordArgs, requestKw) { }, _getArrayOfArraysFromCsvFileContents:function (csvFileContents) { dojo.lang.assertType(csvFileContents, String); var lineEndingCharacters = new RegExp("\r\n|\n|\r"); var leadingWhiteSpaceCharacters = new RegExp("^\\s+", "g"); var trailingWhiteSpaceCharacters = new RegExp("\\s+$", "g"); var doubleQuotes = new RegExp("\"\"", "g"); var arrayOfOutputRecords = []; var arrayOfInputLines = csvFileContents.split(lineEndingCharacters); for (var i in arrayOfInputLines) { var singleLine = arrayOfInputLines[i]; if (singleLine.length > 0) { var listOfFields = singleLine.split(","); var j = 0; while (j < listOfFields.length) { var space_field_space = listOfFields[j]; var field_space = space_field_space.replace(leadingWhiteSpaceCharacters, ""); var field = field_space.replace(trailingWhiteSpaceCharacters, ""); var firstChar = field.charAt(0); var lastChar = field.charAt(field.length - 1); var secondToLastChar = field.charAt(field.length - 2); var thirdToLastChar = field.charAt(field.length - 3); if ((firstChar == "\"") && ((lastChar != "\"") || ((lastChar == "\"") && (secondToLastChar == "\"") && (thirdToLastChar != "\"")))) { if (j + 1 === listOfFields.length) { return null; } var nextField = listOfFields[j + 1]; listOfFields[j] = field_space + "," + nextField; listOfFields.splice(j + 1, 1); } else { if ((firstChar == "\"") && (lastChar == "\"")) { field = field.slice(1, (field.length - 1)); field = field.replace(doubleQuotes, "\""); } listOfFields[j] = field; j += 1; } } arrayOfOutputRecords.push(listOfFields); } } return arrayOfOutputRecords; }, _getArrayOfObjectsFromArrayOfArrays:function (arrayOfArrays) { dojo.lang.assertType(arrayOfArrays, Array); var arrayOfItems = []; if (arrayOfArrays.length > 1) { var arrayOfKeys = arrayOfArrays[0]; for (var i = 1; i < arrayOfArrays.length; ++i) { var row = arrayOfArrays[i]; var item = {}; for (var j in row) { var value = row[j]; var key = arrayOfKeys[j]; item[key] = value; } arrayOfItems.push(item); } } return arrayOfItems; }, _getRemoteStoreDataFromArrayOfObjects:function (arrayOfObjects) { dojo.lang.assertType(arrayOfObjects, Array); var output = {}; for (var i = 0; i < arrayOfObjects.length; ++i) { var object = arrayOfObjects[i]; for (var key in object) { var value = object[key]; object[key] = [value]; } output[i] = object; } return output; }, newItem:function (attributes, keywordArgs) { dojo.unimplemented("dojo.data.CsvStore.newItem"); }, deleteItem:function (item) { dojo.unimplemented("dojo.data.CsvStore.deleteItem"); }, setValues:function (item, attribute, values) { dojo.unimplemented("dojo.data.CsvStore.setValues"); }, set:function (item, attribute, value) { dojo.unimplemented("dojo.data.CsvStore.set"); }, unsetAttribute:function (item, attribute) { dojo.unimplemented("dojo.data.CsvStore.unsetAttribute"); }, save:function (keywordArgs) { dojo.unimplemented("dojo.data.CsvStore.save"); }, revert:function () { dojo.unimplemented("dojo.data.CsvStore.revert"); }, isDirty:function (item) { dojo.unimplemented("dojo.data.CsvStore.isDirty"); }}); }});

__CPAN_FILE__ src/data/CsvStore.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.data.CsvStore"); dojo.require("dojo.data.core.RemoteStore"); dojo.require("dojo.lang.assert"); dojo.declare("dojo.data.CsvStore", dojo.data.core.RemoteStore, {_setupQueryRequest:function (result, requestKw) { var serverQueryUrl = this._serverQueryUrl ? this._serverQueryUrl : ""; var queryUrl = result.query ? result.query : ""; requestKw.url = serverQueryUrl + queryUrl; requestKw.method = "get"; }, _resultToQueryData:function (serverResponseData) { var csvFileContentString = serverResponseData; var arrayOfArrays = this._getArrayOfArraysFromCsvFileContents(csvFileContentString); var arrayOfObjects = this._getArrayOfObjectsFromArrayOfArrays(arrayOfArrays); var remoteStoreData = this._getRemoteStoreDataFromArrayOfObjects(arrayOfObjects); return remoteStoreData; }, _setupSaveRequest:function (saveKeywordArgs, requestKw) { }, _getArrayOfArraysFromCsvFileContents:function (csvFileContents) { dojo.lang.assertType(csvFileContents, String); var lineEndingCharacters = new RegExp("\r\n|\n|\r"); var leadingWhiteSpaceCharacters = new RegExp("^\\s+", "g"); var trailingWhiteSpaceCharacters = new RegExp("\\s+$", "g"); var doubleQuotes = new RegExp("\"\"", "g"); var arrayOfOutputRecords = []; var arrayOfInputLines = csvFileContents.split(lineEndingCharacters); for (var i in arrayOfInputLines) { var singleLine = arrayOfInputLines[i]; if (singleLine.length > 0) { var listOfFields = singleLine.split(","); var j = 0; while (j < listOfFields.length) { var space_field_space = listOfFields[j]; var field_space = space_field_space.replace(leadingWhiteSpaceCharacters, ""); var field = field_space.replace(trailingWhiteSpaceCharacters, ""); var firstChar = field.charAt(0); var lastChar = field.charAt(field.length - 1); var secondToLastChar = field.charAt(field.length - 2); var thirdToLastChar = field.charAt(field.length - 3); if ((firstChar == "\"") && ((lastChar != "\"") || ((lastChar == "\"") && (secondToLastChar == "\"") && (thirdToLastChar != "\"")))) { if (j + 1 === listOfFields.length) { return null; } var nextField = listOfFields[j + 1]; listOfFields[j] = field_space + "," + nextField; listOfFields.splice(j + 1, 1); } else { if ((firstChar == "\"") && (lastChar == "\"")) { field = field.slice(1, (field.length - 1)); field = field.replace(doubleQuotes, "\""); } listOfFields[j] = field; j += 1; } } arrayOfOutputRecords.push(listOfFields); } } return arrayOfOutputRecords; }, _getArrayOfObjectsFromArrayOfArrays:function (arrayOfArrays) { dojo.lang.assertType(arrayOfArrays, Array); var arrayOfItems = []; if (arrayOfArrays.length > 1) { var arrayOfKeys = arrayOfArrays[0]; for (var i = 1; i < arrayOfArrays.length; ++i) { var row = arrayOfArrays[i]; var item = {}; for (var j in row) { var value = row[j]; var key = arrayOfKeys[j]; item[key] = value; } arrayOfItems.push(item); } } return arrayOfItems; }, _getRemoteStoreDataFromArrayOfObjects:function (arrayOfObjects) { dojo.lang.assertType(arrayOfObjects, Array); var output = {}; for (var i = 0; i < arrayOfObjects.length; ++i) { var object = arrayOfObjects[i]; for (var key in object) { var value = object[key]; object[key] = [value]; } output[i] = object; } return output; }, newItem:function (attributes, keywordArgs) { dojo.unimplemented("dojo.data.CsvStore.newItem"); }, deleteItem:function (item) { dojo.unimplemented("dojo.data.CsvStore.deleteItem"); }, setValues:function (item, attribute, values) { dojo.unimplemented("dojo.data.CsvStore.setValues"); }, set:function (item, attribute, value) { dojo.unimplemented("dojo.data.CsvStore.set"); }, unsetAttribute:function (item, attribute) { dojo.unimplemented("dojo.data.CsvStore.unsetAttribute"); }, save:function (keywordArgs) { dojo.unimplemented("dojo.data.CsvStore.save"); }, revert:function () { dojo.unimplemented("dojo.data.CsvStore.revert"); }, isDirty:function (item) { dojo.unimplemented("dojo.data.CsvStore.isDirty"); }});

__CPAN_FILE__ src/data/RdfStore.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.data.RdfStore"], ["provide", "dojo.data.RhizomeStore"], ["require", "dojo.lang.declare"], ["require", "dojo.data.core.RemoteStore"], ["require", "dojo.experimental"]], definePackage:function (dojo) { dojo.provide("dojo.data.RdfStore"); dojo.provide("dojo.data.RhizomeStore"); dojo.require("dojo.lang.declare"); dojo.require("dojo.data.core.RemoteStore"); dojo.require("dojo.experimental"); dojo.data.RdfDatatypeSerializer = function (type, convertFunc, uri) { this.type = type; this._converter = convertFunc; this.uri = uri; this.serialize = function (value) { return this._converter.call(value, value); }; }; dojo.declare("dojo.data.RdfStore", dojo.data.core.RemoteStore, {_datatypeMap:{literal:function (value) { var literal = value.value; if (value["xml:lang"]) { literal.lang = value["xml:lang"]; } return literal; }, uri:function (value) { return {id:value.value}; }, bnode:function (value) { return {id:"_:" + value.value}; }, "http://www.w3.org/2001/XMLSchema#int":function (value) { return parseInt(value.value); }, "http://www.w3.org/2001/XMLSchema#integer":function (value) { return parseInt(value.value); }, "http://www.w3.org/2001/XMLSchema#long":function (value) { return parseInt(value.value); }, "http://www.w3.org/2001/XMLSchema#float":function (value) { return parseFloat(value.value); }, "http://www.w3.org/2001/XMLSchema#double":function (value) { return parseFloat(value.value); }, "http://www.w3.org/2001/XMLSchema#boolean":function (value) { return !value || value == "false" || value == "0" ? false : true; }}, _datatypeSerializers:[new dojo.data.RdfDatatypeSerializer(Number, Number.toString, "http://www.w3.org/2001/XMLSchema#float"), new dojo.data.RdfDatatypeSerializer(Boolean, Boolean.toString, "http://www.w3.org/2001/XMLSchema#boolean")], _findDatatypeSerializer:function (value) { var length = this._datatypeSerializers.length; for (var i = 0; i < length; i++) { var datatype = this._datatypeSerializers[i]; if (value instanceof datatype.type) { return datatype; } } }, _toRDFValue:function (value) { var rdfvalue = {}; if (value.id) { if (value.id.slice(0, 2) == "_:") { rdfvalue.type = "bnode"; rdfvalue.value = value.id.substring(2); } else { rdfvalue.type = "uri"; rdfvalue.value = value.id; } } else { if (typeof value == "string" || value instanceof String) { rdfvalue.type = "literal"; rdfvalue.value = value; if (value.lang) { rdfvalue["xml:lang"] = value.lang; } } else { if (typeof value == "number") { value = new Number(value); } else { if (typeof value == "boolean") { value = new Boolean(value); } } var datatype = this._findDatatypeSerializer(value); if (datatype) { rdfvalue = {"type":"typed-literal", "datatype":datatype.uri, "value":value.toString()}; } else { rdfvalue = {"type":"literal", "value":value.toString()}; } } } return rdfvalue; }, _setupSaveRequest:function (saveKeywordArgs, requestKw) { var rdfResult = {"head":{"vars":["s", "p", "o"]}, "results":{"bindings":[]}}; var resources = []; for (var key in this._deleted) { resources.push(key); } rdfResult.results.deleted = resources; for (key in this._changed) { var subject = this._toRDFValue(this.getIdentity(key)); var attributes = this._changed[key]; for (var attr in attributes) { var predicate = {type:"uri", value:attr}; var values = attributes[attr]; if (!values.length) { continue; } var rdfvalues = []; for (var i = 0; i < values.length; i++) { var rdfvalue = this._toRDFValue(values[i]); rdfResult.results.bindings.push({s:subject, p:predicate, o:rdfvalue}); } } } var oldRegistry = dojo.json.jsonRegistry; dojo.json.jsonRegistry = this._jsonRegistry; var jsonString = dojo.json.serialize(rdfResult); dojo.json.jsonRegistry = oldRegistry; requestKw.postContent = jsonString; }, _resultToQueryMetadata:function (json) { return json.head; }, _resultToQueryData:function (json) { var items = {}; var stmts = json.results.bindings; for (var i = 0; i < stmts.length; i++) { var stmt = stmts[i]; var subject = stmt.s.value; if (stmt.s.type == "bnode") { subject = "_:" + subject; } var attributes = data[subject]; if (!attributes) { attributes = {}; data[stmt.s] = attributes; } var attr = attributes[stmt.p.value]; if (!attr) { attributes[stmt.p.value] = [stmt.o]; } else { attr.push(stmt.o); } } return items; }}); dojo.declare("dojo.data.RhizomeStore", dojo.data.RdfStore, {initializer:function (kwArgs) { this._serverQueryUrl = kwArgs.baseUrl + "search?view=json&searchType=RxPath&search="; this._serverSaveUrl = kwArgs.baseUrl + "save-metadata"; }, _resultToQueryMetadata:function (json) { return json; }, _resultToQueryData:function (json) { return json; }, _setupSaveRequest:function (saveKeywordArgs, requestKw) { requestKw.url = this._serverSaveUrl; requestKw.method = "post"; requestKw.mimetype = "text/plain"; var resources = []; for (var key in this._deleted) { resources.push(key); } var changes = {}; for (key in this._changed) { if (!this._added[key]) { resources.push(key); } var attributes = this._changed[key]; var rdfattributes = {}; for (var attr in attributes) { var values = attributes[attr]; if (!values.length) { continue; } var rdfvalues = []; for (var i = 0; i < values.length; i++) { var rdfvalue = this._toRDFValue(values[i]); rdfvalues.push(rdfvalue); } rdfattributes[attr] = rdfvalues; } changes[key] = rdfattributes; } var oldRegistry = dojo.json.jsonRegistry; dojo.json.jsonRegistry = this._jsonRegistry; var jsonString = dojo.json.serialize(changes); dojo.json.jsonRegistry = oldRegistry; requestKw.content = {rdfFormat:"json", resource:resources, metadata:jsonString}; }}); }});

__CPAN_DIR__ src/data/core __CPAN_FILE__ src/data/core/Read.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.data.core.Read"); dojo.require("dojo.data.core.Result"); dojo.require("dojo.lang.declare"); dojo.require("dojo.experimental"); dojo.experimental("dojo.data.core.Read"); dojo.declare("dojo.data.core.Read", null, {get:function (item, attribute, defaultValue) { dojo.unimplemented("dojo.data.core.Read.get"); var attributeValue = null; return attributeValue; }, getValues:function (item, attribute) { dojo.unimplemented("dojo.data.core.Read.getValues"); var array = null; return array; }, getAttributes:function (item) { dojo.unimplemented("dojo.data.core.Read.getAttributes"); var array = null; return array; }, hasAttribute:function (item, attribute) { dojo.unimplemented("dojo.data.core.Read.hasAttribute"); return false; }, containsValue:function (item, attribute, value) { dojo.unimplemented("dojo.data.core.Read.containsValue"); return false; }, isItem:function (something) { dojo.unimplemented("dojo.data.core.Read.isItem"); return false; }, isItemAvailable:function (something) { dojo.unimplemented("dojo.data.core.Read.isItemAvailable"); return false; }, find:function (keywordArgs) { dojo.unimplemented("dojo.data.core.Read.find"); var result = null; return result; }, getIdentity:function (item) { dojo.unimplemented("dojo.data.core.Read.getIdentity"); var itemIdentifyString = null; return itemIdentifyString; }, findByIdentity:function (identity) { dojo.unimplemented("dojo.data.core.Read.getByIdentity"); var item = null; return item; }});

__CPAN_FILE__ src/data/core/Read.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.data.core.Read"], ["require", "dojo.data.core.Result"], ["require", "dojo.lang.declare"], ["require", "dojo.experimental"]], definePackage:function (dojo) { dojo.provide("dojo.data.core.Read"); dojo.require("dojo.data.core.Result"); dojo.require("dojo.lang.declare"); dojo.require("dojo.experimental"); dojo.experimental("dojo.data.core.Read"); dojo.declare("dojo.data.core.Read", null, {get:function (item, attribute, defaultValue) { dojo.unimplemented("dojo.data.core.Read.get"); var attributeValue = null; return attributeValue; }, getValues:function (item, attribute) { dojo.unimplemented("dojo.data.core.Read.getValues"); var array = null; return array; }, getAttributes:function (item) { dojo.unimplemented("dojo.data.core.Read.getAttributes"); var array = null; return array; }, hasAttribute:function (item, attribute) { dojo.unimplemented("dojo.data.core.Read.hasAttribute"); return false; }, containsValue:function (item, attribute, value) { dojo.unimplemented("dojo.data.core.Read.containsValue"); return false; }, isItem:function (something) { dojo.unimplemented("dojo.data.core.Read.isItem"); return false; }, isItemAvailable:function (something) { dojo.unimplemented("dojo.data.core.Read.isItemAvailable"); return false; }, find:function (keywordArgs) { dojo.unimplemented("dojo.data.core.Read.find"); var result = null; return result; }, getIdentity:function (item) { dojo.unimplemented("dojo.data.core.Read.getIdentity"); var itemIdentifyString = null; return itemIdentifyString; }, findByIdentity:function (identity) { dojo.unimplemented("dojo.data.core.Read.getByIdentity"); var item = null; return item; }}); }});

__CPAN_FILE__ src/data/core/RemoteStore.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.data.core.RemoteStore"); dojo.require("dojo.data.core.Read"); dojo.require("dojo.data.core.Write"); dojo.require("dojo.data.core.Result"); dojo.require("dojo.experimental"); dojo.require("dojo.Deferred"); dojo.require("dojo.lang.declare"); dojo.require("dojo.json"); dojo.require("dojo.io.*"); dojo.experimental("dojo.data.core.RemoteStore"); dojo.lang.declare("dojo.data.core.RemoteStore", [dojo.data.core.Read, dojo.data.core.Write], {_datatypeMap:{}, _jsonRegistry:dojo.json.jsonRegistry, initializer:function (kwArgs) { if (!kwArgs) { kwArgs = {}; } this._serverQueryUrl = kwArgs.queryUrl || ""; this._serverSaveUrl = kwArgs.saveUrl || ""; this._deleted = {}; this._changed = {}; this._added = {}; this._results = {}; this._data = {}; this._numItems = 0; }, _setupQueryRequest:function (result, requestKw) { result.query = result.query || ""; requestKw.url = this._serverQueryUrl + encodeURIComponent(result.query); requestKw.method = "get"; requestKw.mimetype = "text/json"; }, _resultToQueryMetadata:function (serverResponseData) { return serverResponseData; }, _resultToQueryData:function (serverResponseData) { return serverResponseData.data; }, _remoteToLocalValues:function (attributes) { for (var key in attributes) { var values = attributes[key]; for (var i = 0; i < values.length; i++) { var value = values[i]; var type = value.datatype || value.type; if (type) { var localValue = value.value; if (this._datatypeMap[type]) { localValue = this._datatypeMap[type](value); } values[i] = localValue; } } } return attributes; }, _queryToQueryKey:function (query) { if (typeof query == "string") { return query; } else { return dojo.json.serialize(query); } }, _assertIsItem:function (item) { if (!this.isItem(item)) { throw new Error("dojo.data.RemoteStore: a function was passed an item argument that was not an item"); } }, get:function (item, attribute, defaultValue) { var valueArray = this.getValues(item, attribute); if (valueArray.length == 0) { return defaultValue; } return valueArray[0]; }, getValues:function (item, attribute) { var itemIdentity = this.getIdentity(item); this._assertIsItem(itemIdentity); var changes = this._changed[itemIdentity]; if (changes) { var newvalues = changes[attribute]; if (newvalues !== undefined) { return newvalues; } else { return []; } } return this._data[itemIdentity][0][attribute]; }, getAttributes:function (item) { var itemIdentity = this.getIdentity(item); if (!itemIdentity) { return undefined; } var atts = []; var attrDict = this._data[itemIdentity][0]; for (var att in attrDict) { atts.push(att); } return atts; }, hasAttribute:function (item, attribute) { var valueArray = this.getValues(item, attribute); return valueArray.length ? true : false; }, containsValue:function (item, attribute, value) { var valueArray = this.getValues(item, attribute); for (var i = 0; i < valueArray.length; i++) { if (valueArray[i] == value) { return true; } } return false; }, isItem:function (something) { if (!something) { return false; } var itemIdentity = something; if (this._deleted[itemIdentity]) { return false; } if (this._data[itemIdentity]) { return true; } if (this._added[itemIdentity]) { return true; } return false; }, find:function (keywordArgs) { var result = null; if (keywordArgs instanceof dojo.data.core.Result) { result = keywordArgs; result.store = this; } else { result = new dojo.data.core.Result(keywordArgs, this); } var query = result.query; var self = this; var bindfunc = function (type, data, evt) { var scope = result.scope || dj_global; if (type == "load") { result.resultMetadata = self._resultToQueryMetadata(data); var dataDict = self._resultToQueryData(data); if (result.onbegin) { result.onbegin.call(scope, result); } var count = 0; var resultData = []; var newItemCount = 0; for (var key in dataDict) { if (result._aborted) { break; } if (!self._deleted[key]) { var values = dataDict[key]; var attributeDict = self._remoteToLocalValues(values); var existingValue = self._data[key]; var refCount = 1; if (existingValue) { refCount = ++existingValue[1]; } else { newItemCount++; } self._data[key] = [attributeDict, refCount]; resultData.push(key); count++; if (result.onnext) { result.onnext.call(scope, key, result); } } } self._results[self._queryToQueryKey(query)] = resultData; self._numItems += newItemCount; result.length = count; if (result.saveResult) { result.items = resultData; } if (!result._aborted && result.oncompleted) { result.oncompleted.call(scope, result); } } else { if (type == "error" || type == "timeout") { dojo.debug("find error: " + dojo.json.serialize(data)); if (result.onerror) { result.onerror.call(scope, data); } } } }; var bindKw = keywordArgs.bindArgs || {}; bindKw.sync = result.sync; bindKw.handle = bindfunc; this._setupQueryRequest(result, bindKw); var request = dojo.io.bind(bindKw); result._abortFunc = request.abort; return result; }, getIdentity:function (item) { if (!this.isItem(item)) { return null; } return (item.id ? item.id : item); }, newItem:function (attributes, keywordArgs) { var itemIdentity = keywordArgs["identity"]; if (this._deleted[itemIdentity]) { delete this._deleted[itemIdentity]; } else { this._added[itemIdentity] = 1; } if (attributes) { for (var attribute in attributes) { var valueOrArrayOfValues = attributes[attribute]; if (dojo.lang.isArray(valueOrArrayOfValues)) { this.setValues(itemIdentity, attribute, valueOrArrayOfValues); } else { this.set(itemIdentity, attribute, valueOrArrayOfValues); } } } return {id:itemIdentity}; }, deleteItem:function (item) { var identity = this.getIdentity(item); if (!identity) { return false; } if (this._added[identity]) { delete this._added[identity]; } else { this._deleted[identity] = 1; } if (this._changed[identity]) { delete this._changed[identity]; } return true; }, setValues:function (item, attribute, values) { var identity = this.getIdentity(item); if (!identity) { return undefined; } var changes = this._changed[identity]; if (!changes) { changes = {}; this._changed[identity] = changes; } changes[attribute] = values; return true; }, set:function (item, attribute, value) { return this.setValues(item, attribute, [value]); }, unsetAttribute:function (item, attribute) { return this.setValues(item, attribute, []); }, _initChanges:function () { this._deleted = {}; this._changed = {}; this._added = {}; }, _setupSaveRequest:function (saveKeywordArgs, requestKw) { requestKw.url = this._serverSaveUrl; requestKw.method = "post"; requestKw.mimetype = "text/plain"; var deleted = []; for (var key in this._deleted) { deleted.push(key); } var saveStruct = {"changed":this._changed, "deleted":deleted}; var oldRegistry = dojo.json.jsonRegistry; dojo.json.jsonRegistry = this._jsonRegistry; var jsonString = dojo.json.serialize(saveStruct); dojo.json.jsonRegistry = oldRegistry; requestKw.postContent = jsonString; }, save:function (keywordArgs) { keywordArgs = keywordArgs || {}; var result = new dojo.Deferred(); var self = this; var bindfunc = function (type, data, evt) { if (type == "load") { if (result.fired == 1) { return; } var key = null; for (key in self._added) { if (!self._data[key]) { self._data[key] = [{}, 1]; } } for (key in self._changed) { var existing = self._data[key]; var changes = self._changed[key]; if (existing) { existing[0] = changes; } else { self._data[key] = [changes, 1]; } } for (key in self._deleted) { if (self._data[key]) { delete self._data[key]; } } self._initChanges(); result.callback(true); } else { if (type == "error" || type == "timeout") { result.errback(data); } } }; var bindKw = {sync:keywordArgs["sync"], handle:bindfunc}; this._setupSaveRequest(keywordArgs, bindKw); var request = dojo.io.bind(bindKw); result.canceller = function (deferred) { request.abort(); }; return result; }, revert:function () { this._initChanges(); return true; }, isDirty:function (item) { if (item) { var identity = item.id || item; return this._deleted[identity] || this._changed[identity]; } else { var key = null; for (key in this._changed) { return true; } for (key in this._deleted) { return true; } for (key in this._added) { return true; } return false; } }, createReference:function (idstring) { return {id:idstring}; }, getSize:function () { return this._numItems; }, forgetResults:function (query) { var queryKey = this._queryToQueryKey(query); var results = this._results[queryKey]; if (!results) { return false; } var removed = 0; for (var i = 0; i < results.length; i++) { var key = results[i]; var existingValue = this._data[key]; if (existingValue[1] <= 1) { delete this._data[key]; removed++; } else { existingValue[1] = --existingValue[1]; } } delete this._results[queryKey]; this._numItems -= removed; return true; }});

__CPAN_FILE__ src/data/core/Result.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.data.core.Result"], ["require", "dojo.lang.declare"], ["require", "dojo.experimental"]], definePackage:function (dojo) { dojo.provide("dojo.data.core.Result"); dojo.require("dojo.lang.declare"); dojo.require("dojo.experimental"); dojo.experimental("dojo.data.core.Result"); dojo.declare("dojo.data.core.Result", null, {initializer:function (keywordArgs, store) { this.fromKwArgs(keywordArgs || {}); this.items = null; this.resultMetadata = null; this.length = -1; this.store = store; this._aborted = false; this._abortFunc = null; }, sync:true, abort:function () { this._aborted = true; if (this._abortFunc) { this._abortFunc(); } }, fromKwArgs:function (kwArgs) { if (typeof kwArgs.saveResult == "undefined") { this.saveResult = kwArgs.onnext ? false : true; } dojo.lang.mixin(this, kwArgs); }}); }});

__CPAN_FILE__ src/data/core/Write.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.data.core.Write"); dojo.require("dojo.data.core.Read"); dojo.require("dojo.lang.declare"); dojo.require("dojo.experimental"); dojo.experimental("dojo.data.core.Write"); dojo.declare("dojo.data.core.Write", dojo.data.core.Read, {newItem:function (keywordArgs) { var newItem; dojo.unimplemented("dojo.data.core.Write.newItem"); return newItem; }, deleteItem:function (item) { dojo.unimplemented("dojo.data.core.Write.deleteItem"); return false; }, set:function (item, attribute, value) { dojo.unimplemented("dojo.data.core.Write.set"); return false; }, setValues:function (item, attribute, values) { dojo.unimplemented("dojo.data.core.Write.setValues"); return false; }, unsetAttribute:function (item, attribute) { dojo.unimplemented("dojo.data.core.Write.clear"); return false; }, save:function () { dojo.unimplemented("dojo.data.core.Write.save"); return false; }, revert:function () { dojo.unimplemented("dojo.data.core.Write.revert"); return false; }, isDirty:function (item) { dojo.unimplemented("dojo.data.core.Write.isDirty"); return false; }});

__CPAN_FILE__ src/data/core/Write.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.data.core.Write"], ["require", "dojo.data.core.Read"], ["require", "dojo.lang.declare"], ["require", "dojo.experimental"]], definePackage:function (dojo) { dojo.provide("dojo.data.core.Write"); dojo.require("dojo.data.core.Read"); dojo.require("dojo.lang.declare"); dojo.require("dojo.experimental"); dojo.experimental("dojo.data.core.Write"); dojo.declare("dojo.data.core.Write", dojo.data.core.Read, {newItem:function (keywordArgs) { var newItem; dojo.unimplemented("dojo.data.core.Write.newItem"); return newItem; }, deleteItem:function (item) { dojo.unimplemented("dojo.data.core.Write.deleteItem"); return false; }, set:function (item, attribute, value) { dojo.unimplemented("dojo.data.core.Write.set"); return false; }, setValues:function (item, attribute, values) { dojo.unimplemented("dojo.data.core.Write.setValues"); return false; }, unsetAttribute:function (item, attribute) { dojo.unimplemented("dojo.data.core.Write.clear"); return false; }, save:function () { dojo.unimplemented("dojo.data.core.Write.save"); return false; }, revert:function () { dojo.unimplemented("dojo.data.core.Write.revert"); return false; }, isDirty:function (item) { dojo.unimplemented("dojo.data.core.Write.isDirty"); return false; }}); }});

__CPAN_FILE__ src/data/core/Result.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.data.core.Result"); dojo.require("dojo.lang.declare"); dojo.require("dojo.experimental"); dojo.experimental("dojo.data.core.Result"); dojo.declare("dojo.data.core.Result", null, {initializer:function (keywordArgs, store) { this.fromKwArgs(keywordArgs || {}); this.items = null; this.resultMetadata = null; this.length = -1; this.store = store; this._aborted = false; this._abortFunc = null; }, sync:true, abort:function () { this._aborted = true; if (this._abortFunc) { this._abortFunc(); } }, fromKwArgs:function (kwArgs) { if (typeof kwArgs.saveResult == "undefined") { this.saveResult = kwArgs.onnext ? false : true; } dojo.lang.mixin(this, kwArgs); }});

__CPAN_FILE__ src/data/core/RemoteStore.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.data.core.RemoteStore"], ["require", "dojo.data.core.Read"], ["require", "dojo.data.core.Write"], ["require", "dojo.data.core.Result"], ["require", "dojo.experimental"], ["require", "dojo.Deferred"], ["require", "dojo.lang.declare"], ["require", "dojo.json"], ["require", "dojo.io.*"]], definePackage:function (dojo) { dojo.provide("dojo.data.core.RemoteStore"); dojo.require("dojo.data.core.Read"); dojo.require("dojo.data.core.Write"); dojo.require("dojo.data.core.Result"); dojo.require("dojo.experimental"); dojo.require("dojo.Deferred"); dojo.require("dojo.lang.declare"); dojo.require("dojo.json"); dojo.require("dojo.io.*"); dojo.experimental("dojo.data.core.RemoteStore"); dojo.lang.declare("dojo.data.core.RemoteStore", [dojo.data.core.Read, dojo.data.core.Write], {_datatypeMap:{}, _jsonRegistry:dojo.json.jsonRegistry, initializer:function (kwArgs) { if (!kwArgs) { kwArgs = {}; } this._serverQueryUrl = kwArgs.queryUrl || ""; this._serverSaveUrl = kwArgs.saveUrl || ""; this._deleted = {}; this._changed = {}; this._added = {}; this._results = {}; this._data = {}; this._numItems = 0; }, _setupQueryRequest:function (result, requestKw) { result.query = result.query || ""; requestKw.url = this._serverQueryUrl + encodeURIComponent(result.query); requestKw.method = "get"; requestKw.mimetype = "text/json"; }, _resultToQueryMetadata:function (serverResponseData) { return serverResponseData; }, _resultToQueryData:function (serverResponseData) { return serverResponseData.data; }, _remoteToLocalValues:function (attributes) { for (var key in attributes) { var values = attributes[key]; for (var i = 0; i < values.length; i++) { var value = values[i]; var type = value.datatype || value.type; if (type) { var localValue = value.value; if (this._datatypeMap[type]) { localValue = this._datatypeMap[type](value); } values[i] = localValue; } } } return attributes; }, _queryToQueryKey:function (query) { if (typeof query == "string") { return query; } else { return dojo.json.serialize(query); } }, _assertIsItem:function (item) { if (!this.isItem(item)) { throw new Error("dojo.data.RemoteStore: a function was passed an item argument that was not an item"); } }, get:function (item, attribute, defaultValue) { var valueArray = this.getValues(item, attribute); if (valueArray.length == 0) { return defaultValue; } return valueArray[0]; }, getValues:function (item, attribute) { var itemIdentity = this.getIdentity(item); this._assertIsItem(itemIdentity); var changes = this._changed[itemIdentity]; if (changes) { var newvalues = changes[attribute]; if (newvalues !== undefined) { return newvalues; } else { return []; } } return this._data[itemIdentity][0][attribute]; }, getAttributes:function (item) { var itemIdentity = this.getIdentity(item); if (!itemIdentity) { return undefined; } var atts = []; var attrDict = this._data[itemIdentity][0]; for (var att in attrDict) { atts.push(att); } return atts; }, hasAttribute:function (item, attribute) { var valueArray = this.getValues(item, attribute); return valueArray.length ? true : false; }, containsValue:function (item, attribute, value) { var valueArray = this.getValues(item, attribute); for (var i = 0; i < valueArray.length; i++) { if (valueArray[i] == value) { return true; } } return false; }, isItem:function (something) { if (!something) { return false; } var itemIdentity = something; if (this._deleted[itemIdentity]) { return false; } if (this._data[itemIdentity]) { return true; } if (this._added[itemIdentity]) { return true; } return false; }, find:function (keywordArgs) { var result = null; if (keywordArgs instanceof dojo.data.core.Result) { result = keywordArgs; result.store = this; } else { result = new dojo.data.core.Result(keywordArgs, this); } var query = result.query; var self = this; var bindfunc = function (type, data, evt) { var scope = result.scope || dj_global; if (type == "load") { result.resultMetadata = self._resultToQueryMetadata(data); var dataDict = self._resultToQueryData(data); if (result.onbegin) { result.onbegin.call(scope, result); } var count = 0; var resultData = []; var newItemCount = 0; for (var key in dataDict) { if (result._aborted) { break; } if (!self._deleted[key]) { var values = dataDict[key]; var attributeDict = self._remoteToLocalValues(values); var existingValue = self._data[key]; var refCount = 1; if (existingValue) { refCount = ++existingValue[1]; } else { newItemCount++; } self._data[key] = [attributeDict, refCount]; resultData.push(key); count++; if (result.onnext) { result.onnext.call(scope, key, result); } } } self._results[self._queryToQueryKey(query)] = resultData; self._numItems += newItemCount; result.length = count; if (result.saveResult) { result.items = resultData; } if (!result._aborted && result.oncompleted) { result.oncompleted.call(scope, result); } } else { if (type == "error" || type == "timeout") { dojo.debug("find error: " + dojo.json.serialize(data)); if (result.onerror) { result.onerror.call(scope, data); } } } }; var bindKw = keywordArgs.bindArgs || {}; bindKw.sync = result.sync; bindKw.handle = bindfunc; this._setupQueryRequest(result, bindKw); var request = dojo.io.bind(bindKw); result._abortFunc = request.abort; return result; }, getIdentity:function (item) { if (!this.isItem(item)) { return null; } return (item.id ? item.id : item); }, newItem:function (attributes, keywordArgs) { var itemIdentity = keywordArgs["identity"]; if (this._deleted[itemIdentity]) { delete this._deleted[itemIdentity]; } else { this._added[itemIdentity] = 1; } if (attributes) { for (var attribute in attributes) { var valueOrArrayOfValues = attributes[attribute]; if (dojo.lang.isArray(valueOrArrayOfValues)) { this.setValues(itemIdentity, attribute, valueOrArrayOfValues); } else { this.set(itemIdentity, attribute, valueOrArrayOfValues); } } } return {id:itemIdentity}; }, deleteItem:function (item) { var identity = this.getIdentity(item); if (!identity) { return false; } if (this._added[identity]) { delete this._added[identity]; } else { this._deleted[identity] = 1; } if (this._changed[identity]) { delete this._changed[identity]; } return true; }, setValues:function (item, attribute, values) { var identity = this.getIdentity(item); if (!identity) { return undefined; } var changes = this._changed[identity]; if (!changes) { changes = {}; this._changed[identity] = changes; } changes[attribute] = values; return true; }, set:function (item, attribute, value) { return this.setValues(item, attribute, [value]); }, unsetAttribute:function (item, attribute) { return this.setValues(item, attribute, []); }, _initChanges:function () { this._deleted = {}; this._changed = {}; this._added = {}; }, _setupSaveRequest:function (saveKeywordArgs, requestKw) { requestKw.url = this._serverSaveUrl; requestKw.method = "post"; requestKw.mimetype = "text/plain"; var deleted = []; for (var key in this._deleted) { deleted.push(key); } var saveStruct = {"changed":this._changed, "deleted":deleted}; var oldRegistry = dojo.json.jsonRegistry; dojo.json.jsonRegistry = this._jsonRegistry; var jsonString = dojo.json.serialize(saveStruct); dojo.json.jsonRegistry = oldRegistry; requestKw.postContent = jsonString; }, save:function (keywordArgs) { keywordArgs = keywordArgs || {}; var result = new dojo.Deferred(); var self = this; var bindfunc = function (type, data, evt) { if (type == "load") { if (result.fired == 1) { return; } var key = null; for (key in self._added) { if (!self._data[key]) { self._data[key] = [{}, 1]; } } for (key in self._changed) { var existing = self._data[key]; var changes = self._changed[key]; if (existing) { existing[0] = changes; } else { self._data[key] = [changes, 1]; } } for (key in self._deleted) { if (self._data[key]) { delete self._data[key]; } } self._initChanges(); result.callback(true); } else { if (type == "error" || type == "timeout") { result.errback(data); } } }; var bindKw = {sync:keywordArgs["sync"], handle:bindfunc}; this._setupSaveRequest(keywordArgs, bindKw); var request = dojo.io.bind(bindKw); result.canceller = function (deferred) { request.abort(); }; return result; }, revert:function () { this._initChanges(); return true; }, isDirty:function (item) { if (item) { var identity = item.id || item; return this._deleted[identity] || this._changed[identity]; } else { var key = null; for (key in this._changed) { return true; } for (key in this._deleted) { return true; } for (key in this._added) { return true; } return false; } }, createReference:function (idstring) { return {id:idstring}; }, getSize:function () { return this._numItems; }, forgetResults:function (query) { var queryKey = this._queryToQueryKey(query); var results = this._results[queryKey]; if (!results) { return false; } var removed = 0; for (var i = 0; i < results.length; i++) { var key = results[i]; var existingValue = this._data[key]; if (existingValue[1] <= 1) { delete this._data[key]; removed++; } else { existingValue[1] = --existingValue[1]; } } delete this._results[queryKey]; this._numItems -= removed; return true; }}); }});

__CPAN_DIR__ src/data/old __CPAN_FILE__ src/data/old/to_do.txt Existing Features * can import data from .json or .csv format files * can import data from del.icio.us * can create and modify data programmatically * can bind data to dojo.widget.Chart * can bind data to dojo.widget.SortableTable * can bind one data set to multiple widgets * notifications: widgets are notified when data changes * notification available per-item or per-resultSet * can create ad-hoc attributes * attributes can be loosely-typed * attributes can have meta-data like type and display name * half-implemented support for sorting * half-implemented support for export to .json * API for getting data in simple arrays * API for getting ResultSets with iterators (precursor to support for something like the openrico.org live grid)

~~~~~~~~~~~~~~~~~~~~~~~~ To-Do List * be able to import data from an html <table></table> * think about being able to import data from some type of XML * think about integration with dojo.undo.Manager * think more about how to represent the notion of different data types * think about what problems we'll run into when we have a MySQL data provider * in TableBindingHack, improve support for data types in the SortableTable binding * deal with ids (including MySQL multi-field keys) * add support for item-references: employeeItem.set('department', departmentItem); * deal with Attributes as instances of Items, not just subclasses of Items * unit tests for compare/sort code * unit tests for everything * implement item.toString('json') and item.toString('xml') * implement dataProvider.newItem({name: 'foo', age: 26}) * deal better with transactions * add support for deleting items * don't send out multiple notifications to the same observer * deal with item versions * prototype a Yahoo data provider -- http://developer.yahoo.net/common/json.html * prototype a data provider that enforces strong typing * prototype a data provider that prevents ad-hoc attributes * prototype a data provider that enforces single-kind item * prototype a data provider that allows for login/authentication * have loosely typed result sets play nicely with widgets that expect strong typing * prototype an example of spreadsheet-style formulas or derivation rules * experiment with some sort of fetch() that returns only a subset of a data provider's items

__CPAN_FILE__ src/data/old/Item.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.data.old.Item"); dojo.require("dojo.data.old.Observable"); dojo.require("dojo.data.old.Value"); dojo.require("dojo.lang.common"); dojo.require("dojo.lang.assert"); dojo.data.old.Item = function (dataProvider) { dojo.lang.assertType(dataProvider, dojo.data.old.provider.Base, {optional:true}); dojo.data.old.Observable.call(this); this._dataProvider = dataProvider; this._dictionaryOfAttributeValues = {}; }; dojo.inherits(dojo.data.old.Item, dojo.data.old.Observable); dojo.data.old.Item.compare = function (itemOne, itemTwo) { dojo.lang.assertType(itemOne, dojo.data.old.Item); if (!dojo.lang.isOfType(itemTwo, dojo.data.old.Item)) { return -1; } var nameOne = itemOne.getName(); var nameTwo = itemTwo.getName(); if (nameOne == nameTwo) { var attributeArrayOne = itemOne.getAttributes(); var attributeArrayTwo = itemTwo.getAttributes(); if (attributeArrayOne.length != attributeArrayTwo.length) { if (attributeArrayOne.length > attributeArrayTwo.length) { return 1; } else { return -1; } } for (var i in attributeArrayOne) { var attribute = attributeArrayOne[i]; var arrayOfValuesOne = itemOne.getValues(attribute); var arrayOfValuesTwo = itemTwo.getValues(attribute); dojo.lang.assert(arrayOfValuesOne && (arrayOfValuesOne.length > 0)); if (!arrayOfValuesTwo) { return 1; } if (arrayOfValuesOne.length != arrayOfValuesTwo.length) { if (arrayOfValuesOne.length > arrayOfValuesTwo.length) { return 1; } else { return -1; } } for (var j in arrayOfValuesOne) { var value = arrayOfValuesOne[j]; if (!itemTwo.hasAttributeValue(value)) { return 1; } } return 0; } } else { if (nameOne > nameTwo) { return 1; } else { return -1; } } }; dojo.data.old.Item.prototype.toString = function () { var arrayOfStrings = []; var attributes = this.getAttributes(); for (var i in attributes) { var attribute = attributes[i]; var arrayOfValues = this.getValues(attribute); var valueString; if (arrayOfValues.length == 1) { valueString = arrayOfValues[0]; } else { valueString = "["; valueString += arrayOfValues.join(", "); valueString += "]"; } arrayOfStrings.push(" " + attribute + ": " + valueString); } var returnString = "{ "; returnString += arrayOfStrings.join(",\n"); returnString += " }"; return returnString; }; dojo.data.old.Item.prototype.compare = function (otherItem) { return dojo.data.old.Item.compare(this, otherItem); }; dojo.data.old.Item.prototype.isEqual = function (otherItem) { return (this.compare(otherItem) == 0); }; dojo.data.old.Item.prototype.getName = function () { return this.get("name"); }; dojo.data.old.Item.prototype.get = function (attributeId) { var literalOrValueOrArray = this._dictionaryOfAttributeValues[attributeId]; if (dojo.lang.isUndefined(literalOrValueOrArray)) { return null; } if (literalOrValueOrArray instanceof dojo.data.old.Value) { return literalOrValueOrArray.getValue(); } if (dojo.lang.isArray(literalOrValueOrArray)) { var dojoDataValue = literalOrValueOrArray[0]; return dojoDataValue.getValue(); } return literalOrValueOrArray; }; dojo.data.old.Item.prototype.getValue = function (attributeId) { var literalOrValueOrArray = this._dictionaryOfAttributeValues[attributeId]; if (dojo.lang.isUndefined(literalOrValueOrArray)) { return null; } if (literalOrValueOrArray instanceof dojo.data.old.Value) { return literalOrValueOrArray; } if (dojo.lang.isArray(literalOrValueOrArray)) { var dojoDataValue = literalOrValueOrArray[0]; return dojoDataValue; } var literal = literalOrValueOrArray; dojoDataValue = new dojo.data.old.Value(literal); this._dictionaryOfAttributeValues[attributeId] = dojoDataValue; return dojoDataValue; }; dojo.data.old.Item.prototype.getValues = function (attributeId) { var literalOrValueOrArray = this._dictionaryOfAttributeValues[attributeId]; if (dojo.lang.isUndefined(literalOrValueOrArray)) { return null; } if (literalOrValueOrArray instanceof dojo.data.old.Value) { var array = [literalOrValueOrArray]; this._dictionaryOfAttributeValues[attributeId] = array; return array; } if (dojo.lang.isArray(literalOrValueOrArray)) { return literalOrValueOrArray; } var literal = literalOrValueOrArray; var dojoDataValue = new dojo.data.old.Value(literal); array = [dojoDataValue]; this._dictionaryOfAttributeValues[attributeId] = array; return array; }; dojo.data.old.Item.prototype.load = function (attributeId, value) { this._dataProvider.registerAttribute(attributeId); var literalOrValueOrArray = this._dictionaryOfAttributeValues[attributeId]; if (dojo.lang.isUndefined(literalOrValueOrArray)) { this._dictionaryOfAttributeValues[attributeId] = value; return; } if (!(value instanceof dojo.data.old.Value)) { value = new dojo.data.old.Value(value); } if (literalOrValueOrArray instanceof dojo.data.old.Value) { var array = [literalOrValueOrArray, value]; this._dictionaryOfAttributeValues[attributeId] = array; return; } if (dojo.lang.isArray(literalOrValueOrArray)) { literalOrValueOrArray.push(value); return; } var literal = literalOrValueOrArray; var dojoDataValue = new dojo.data.old.Value(literal); array = [dojoDataValue, value]; this._dictionaryOfAttributeValues[attributeId] = array; }; dojo.data.old.Item.prototype.set = function (attributeId, value) { this._dataProvider.registerAttribute(attributeId); this._dictionaryOfAttributeValues[attributeId] = value; this._dataProvider.noteChange(this, attributeId, value); }; dojo.data.old.Item.prototype.setValue = function (attributeId, value) { this.set(attributeId, value); }; dojo.data.old.Item.prototype.addValue = function (attributeId, value) { this.load(attributeId, value); this._dataProvider.noteChange(this, attributeId, value); }; dojo.data.old.Item.prototype.setValues = function (attributeId, arrayOfValues) { dojo.lang.assertType(arrayOfValues, Array); this._dataProvider.registerAttribute(attributeId); var finalArray = []; this._dictionaryOfAttributeValues[attributeId] = finalArray; for (var i in arrayOfValues) { var value = arrayOfValues[i]; if (!(value instanceof dojo.data.old.Value)) { value = new dojo.data.old.Value(value); } finalArray.push(value); this._dataProvider.noteChange(this, attributeId, value); } }; dojo.data.old.Item.prototype.getAttributes = function () { var arrayOfAttributes = []; for (var key in this._dictionaryOfAttributeValues) { arrayOfAttributes.push(this._dataProvider.getAttribute(key)); } return arrayOfAttributes; }; dojo.data.old.Item.prototype.hasAttribute = function (attributeId) { return (attributeId in this._dictionaryOfAttributeValues); }; dojo.data.old.Item.prototype.hasAttributeValue = function (attributeId, value) { var arrayOfValues = this.getValues(attributeId); for (var i in arrayOfValues) { var candidateValue = arrayOfValues[i]; if (candidateValue.isEqual(value)) { return true; } } return false; };

__CPAN_FILE__ src/data/old/Type.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.data.old.Type"); dojo.require("dojo.data.old.Item"); dojo.data.old.Type = function (dataProvider) { dojo.data.old.Item.call(this, dataProvider); }; dojo.inherits(dojo.data.old.Type, dojo.data.old.Item);

__CPAN_FILE__ src/data/old/Attribute.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.data.old.Attribute"], ["require", "dojo.data.old.Item"], ["require", "dojo.lang.assert"]], definePackage:function (dojo) { dojo.provide("dojo.data.old.Attribute"); dojo.require("dojo.data.old.Item"); dojo.require("dojo.lang.assert"); dojo.data.old.Attribute = function (dataProvider, attributeId) { dojo.lang.assertType(dataProvider, dojo.data.old.provider.Base, {optional:true}); dojo.lang.assertType(attributeId, String); dojo.data.old.Item.call(this, dataProvider); this._attributeId = attributeId; }; dojo.inherits(dojo.data.old.Attribute, dojo.data.old.Item); dojo.data.old.Attribute.prototype.toString = function () { return this._attributeId; }; dojo.data.old.Attribute.prototype.getAttributeId = function () { return this._attributeId; }; dojo.data.old.Attribute.prototype.getType = function () { return this.get("type"); }; dojo.data.old.Attribute.prototype.setType = function (type) { this.set("type", type); }; }});

__CPAN_FILE__ src/data/old/ResultSet.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.data.old.ResultSet"); dojo.require("dojo.lang.assert"); dojo.require("dojo.collections.Collections"); dojo.data.old.ResultSet = function (dataProvider, arrayOfItems) { dojo.lang.assertType(dataProvider, dojo.data.old.provider.Base, {optional:true}); dojo.lang.assertType(arrayOfItems, Array, {optional:true}); dojo.data.old.Observable.call(this); this._dataProvider = dataProvider; this._arrayOfItems = []; if (arrayOfItems) { this._arrayOfItems = arrayOfItems; } }; dojo.inherits(dojo.data.old.ResultSet, dojo.data.old.Observable); dojo.data.old.ResultSet.prototype.toString = function () { var returnString = this._arrayOfItems.join(", "); return returnString; }; dojo.data.old.ResultSet.prototype.toArray = function () { return this._arrayOfItems; }; dojo.data.old.ResultSet.prototype.getIterator = function () { return new dojo.collections.Iterator(this._arrayOfItems); }; dojo.data.old.ResultSet.prototype.getLength = function () { return this._arrayOfItems.length; }; dojo.data.old.ResultSet.prototype.getItemAt = function (index) { return this._arrayOfItems[index]; }; dojo.data.old.ResultSet.prototype.indexOf = function (item) { return dojo.lang.indexOf(this._arrayOfItems, item); }; dojo.data.old.ResultSet.prototype.contains = function (item) { return dojo.lang.inArray(this._arrayOfItems, item); }; dojo.data.old.ResultSet.prototype.getDataProvider = function () { return this._dataProvider; };

__CPAN_FILE__ src/data/old/ResultSet.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.data.old.ResultSet"], ["require", "dojo.lang.assert"], ["require", "dojo.collections.Collections"]], definePackage:function (dojo) { dojo.provide("dojo.data.old.ResultSet"); dojo.require("dojo.lang.assert"); dojo.require("dojo.collections.Collections"); dojo.data.old.ResultSet = function (dataProvider, arrayOfItems) { dojo.lang.assertType(dataProvider, dojo.data.old.provider.Base, {optional:true}); dojo.lang.assertType(arrayOfItems, Array, {optional:true}); dojo.data.old.Observable.call(this); this._dataProvider = dataProvider; this._arrayOfItems = []; if (arrayOfItems) { this._arrayOfItems = arrayOfItems; } }; dojo.inherits(dojo.data.old.ResultSet, dojo.data.old.Observable); dojo.data.old.ResultSet.prototype.toString = function () { var returnString = this._arrayOfItems.join(", "); return returnString; }; dojo.data.old.ResultSet.prototype.toArray = function () { return this._arrayOfItems; }; dojo.data.old.ResultSet.prototype.getIterator = function () { return new dojo.collections.Iterator(this._arrayOfItems); }; dojo.data.old.ResultSet.prototype.getLength = function () { return this._arrayOfItems.length; }; dojo.data.old.ResultSet.prototype.getItemAt = function (index) { return this._arrayOfItems[index]; }; dojo.data.old.ResultSet.prototype.indexOf = function (item) { return dojo.lang.indexOf(this._arrayOfItems, item); }; dojo.data.old.ResultSet.prototype.contains = function (item) { return dojo.lang.inArray(this._arrayOfItems, item); }; dojo.data.old.ResultSet.prototype.getDataProvider = function () { return this._dataProvider; }; }});

__CPAN_FILE__ src/data/old/Value.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.data.old.Value"], ["require", "dojo.lang.assert"]], definePackage:function (dojo) { dojo.provide("dojo.data.old.Value"); dojo.require("dojo.lang.assert"); dojo.data.old.Value = function (value) { this._value = value; this._type = null; }; dojo.data.old.Value.prototype.toString = function () { return this._value.toString(); }; dojo.data.old.Value.prototype.getValue = function () { return this._value; }; dojo.data.old.Value.prototype.getType = function () { dojo.unimplemented("dojo.data.old.Value.prototype.getType"); return this._type; }; dojo.data.old.Value.prototype.compare = function () { dojo.unimplemented("dojo.data.old.Value.prototype.compare"); }; dojo.data.old.Value.prototype.isEqual = function () { dojo.unimplemented("dojo.data.old.Value.prototype.isEqual"); }; }});

__CPAN_FILE__ src/data/old/Attribute.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.data.old.Attribute"); dojo.require("dojo.data.old.Item"); dojo.require("dojo.lang.assert"); dojo.data.old.Attribute = function (dataProvider, attributeId) { dojo.lang.assertType(dataProvider, dojo.data.old.provider.Base, {optional:true}); dojo.lang.assertType(attributeId, String); dojo.data.old.Item.call(this, dataProvider); this._attributeId = attributeId; }; dojo.inherits(dojo.data.old.Attribute, dojo.data.old.Item); dojo.data.old.Attribute.prototype.toString = function () { return this._attributeId; }; dojo.data.old.Attribute.prototype.getAttributeId = function () { return this._attributeId; }; dojo.data.old.Attribute.prototype.getType = function () { return this.get("type"); }; dojo.data.old.Attribute.prototype.setType = function (type) { this.set("type", type); };

__CPAN_FILE__ src/data/old/Kind.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.data.old.Kind"); dojo.require("dojo.data.old.Item"); dojo.data.old.Kind = function (dataProvider) { dojo.data.old.Item.call(this, dataProvider); }; dojo.inherits(dojo.data.old.Kind, dojo.data.old.Item);

__CPAN_FILE__ src/data/old/Observable.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.data.old.Observable"], ["require", "dojo.lang.common"], ["require", "dojo.lang.assert"]], definePackage:function (dojo) { dojo.provide("dojo.data.old.Observable"); dojo.require("dojo.lang.common"); dojo.require("dojo.lang.assert"); dojo.data.old.Observable = function () { }; dojo.data.old.Observable.prototype.addObserver = function (observer) { dojo.lang.assertType(observer, Object); dojo.lang.assertType(observer.observedObjectHasChanged, Function); if (!this._arrayOfObservers) { this._arrayOfObservers = []; } if (!dojo.lang.inArray(this._arrayOfObservers, observer)) { this._arrayOfObservers.push(observer); } }; dojo.data.old.Observable.prototype.removeObserver = function (observer) { if (!this._arrayOfObservers) { return; } var index = dojo.lang.indexOf(this._arrayOfObservers, observer); if (index != -1) { this._arrayOfObservers.splice(index, 1); } }; dojo.data.old.Observable.prototype.getObservers = function () { return this._arrayOfObservers; }; }});

__CPAN_FILE__ src/data/old/Type.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.data.old.Type"], ["require", "dojo.data.old.Item"]], definePackage:function (dojo) { dojo.provide("dojo.data.old.Type"); dojo.require("dojo.data.old.Item"); dojo.data.old.Type = function (dataProvider) { dojo.data.old.Item.call(this, dataProvider); }; dojo.inherits(dojo.data.old.Type, dojo.data.old.Item); }});

__CPAN_FILE__ src/data/old/Observable.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.data.old.Observable"); dojo.require("dojo.lang.common"); dojo.require("dojo.lang.assert"); dojo.data.old.Observable = function () { }; dojo.data.old.Observable.prototype.addObserver = function (observer) { dojo.lang.assertType(observer, Object); dojo.lang.assertType(observer.observedObjectHasChanged, Function); if (!this._arrayOfObservers) { this._arrayOfObservers = []; } if (!dojo.lang.inArray(this._arrayOfObservers, observer)) { this._arrayOfObservers.push(observer); } }; dojo.data.old.Observable.prototype.removeObserver = function (observer) { if (!this._arrayOfObservers) { return; } var index = dojo.lang.indexOf(this._arrayOfObservers, observer); if (index != -1) { this._arrayOfObservers.splice(index, 1); } }; dojo.data.old.Observable.prototype.getObservers = function () { return this._arrayOfObservers; };

__CPAN_FILE__ src/data/old/Value.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.data.old.Value"); dojo.require("dojo.lang.assert"); dojo.data.old.Value = function (value) { this._value = value; this._type = null; }; dojo.data.old.Value.prototype.toString = function () { return this._value.toString(); }; dojo.data.old.Value.prototype.getValue = function () { return this._value; }; dojo.data.old.Value.prototype.getType = function () { dojo.unimplemented("dojo.data.old.Value.prototype.getType"); return this._type; }; dojo.data.old.Value.prototype.compare = function () { dojo.unimplemented("dojo.data.old.Value.prototype.compare"); }; dojo.data.old.Value.prototype.isEqual = function () { dojo.unimplemented("dojo.data.old.Value.prototype.isEqual"); };

__CPAN_FILE__ src/data/old/__package__.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.require("dojo.experimental"); dojo.experimental("dojo.data.old.*"); dojo.kwCompoundRequire({common:["dojo.data.old.Item", "dojo.data.old.ResultSet", "dojo.data.old.provider.FlatFile"]}); dojo.provide("dojo.data.old.*");

__CPAN_FILE__ src/data/old/Item.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.data.old.Item"], ["require", "dojo.data.old.Observable"], ["require", "dojo.data.old.Value"], ["require", "dojo.lang.common"], ["require", "dojo.lang.assert"]], definePackage:function (dojo) { dojo.provide("dojo.data.old.Item"); dojo.require("dojo.data.old.Observable"); dojo.require("dojo.data.old.Value"); dojo.require("dojo.lang.common"); dojo.require("dojo.lang.assert"); dojo.data.old.Item = function (dataProvider) { dojo.lang.assertType(dataProvider, dojo.data.old.provider.Base, {optional:true}); dojo.data.old.Observable.call(this); this._dataProvider = dataProvider; this._dictionaryOfAttributeValues = {}; }; dojo.inherits(dojo.data.old.Item, dojo.data.old.Observable); dojo.data.old.Item.compare = function (itemOne, itemTwo) { dojo.lang.assertType(itemOne, dojo.data.old.Item); if (!dojo.lang.isOfType(itemTwo, dojo.data.old.Item)) { return -1; } var nameOne = itemOne.getName(); var nameTwo = itemTwo.getName(); if (nameOne == nameTwo) { var attributeArrayOne = itemOne.getAttributes(); var attributeArrayTwo = itemTwo.getAttributes(); if (attributeArrayOne.length != attributeArrayTwo.length) { if (attributeArrayOne.length > attributeArrayTwo.length) { return 1; } else { return -1; } } for (var i in attributeArrayOne) { var attribute = attributeArrayOne[i]; var arrayOfValuesOne = itemOne.getValues(attribute); var arrayOfValuesTwo = itemTwo.getValues(attribute); dojo.lang.assert(arrayOfValuesOne && (arrayOfValuesOne.length > 0)); if (!arrayOfValuesTwo) { return 1; } if (arrayOfValuesOne.length != arrayOfValuesTwo.length) { if (arrayOfValuesOne.length > arrayOfValuesTwo.length) { return 1; } else { return -1; } } for (var j in arrayOfValuesOne) { var value = arrayOfValuesOne[j]; if (!itemTwo.hasAttributeValue(value)) { return 1; } } return 0; } } else { if (nameOne > nameTwo) { return 1; } else { return -1; } } }; dojo.data.old.Item.prototype.toString = function () { var arrayOfStrings = []; var attributes = this.getAttributes(); for (var i in attributes) { var attribute = attributes[i]; var arrayOfValues = this.getValues(attribute); var valueString; if (arrayOfValues.length == 1) { valueString = arrayOfValues[0]; } else { valueString = "["; valueString += arrayOfValues.join(", "); valueString += "]"; } arrayOfStrings.push(" " + attribute + ": " + valueString); } var returnString = "{ "; returnString += arrayOfStrings.join(",\n"); returnString += " }"; return returnString; }; dojo.data.old.Item.prototype.compare = function (otherItem) { return dojo.data.old.Item.compare(this, otherItem); }; dojo.data.old.Item.prototype.isEqual = function (otherItem) { return (this.compare(otherItem) == 0); }; dojo.data.old.Item.prototype.getName = function () { return this.get("name"); }; dojo.data.old.Item.prototype.get = function (attributeId) { var literalOrValueOrArray = this._dictionaryOfAttributeValues[attributeId]; if (dojo.lang.isUndefined(literalOrValueOrArray)) { return null; } if (literalOrValueOrArray instanceof dojo.data.old.Value) { return literalOrValueOrArray.getValue(); } if (dojo.lang.isArray(literalOrValueOrArray)) { var dojoDataValue = literalOrValueOrArray[0]; return dojoDataValue.getValue(); } return literalOrValueOrArray; }; dojo.data.old.Item.prototype.getValue = function (attributeId) { var literalOrValueOrArray = this._dictionaryOfAttributeValues[attributeId]; if (dojo.lang.isUndefined(literalOrValueOrArray)) { return null; } if (literalOrValueOrArray instanceof dojo.data.old.Value) { return literalOrValueOrArray; } if (dojo.lang.isArray(literalOrValueOrArray)) { var dojoDataValue = literalOrValueOrArray[0]; return dojoDataValue; } var literal = literalOrValueOrArray; dojoDataValue = new dojo.data.old.Value(literal); this._dictionaryOfAttributeValues[attributeId] = dojoDataValue; return dojoDataValue; }; dojo.data.old.Item.prototype.getValues = function (attributeId) { var literalOrValueOrArray = this._dictionaryOfAttributeValues[attributeId]; if (dojo.lang.isUndefined(literalOrValueOrArray)) { return null; } if (literalOrValueOrArray instanceof dojo.data.old.Value) { var array = [literalOrValueOrArray]; this._dictionaryOfAttributeValues[attributeId] = array; return array; } if (dojo.lang.isArray(literalOrValueOrArray)) { return literalOrValueOrArray; } var literal = literalOrValueOrArray; var dojoDataValue = new dojo.data.old.Value(literal); array = [dojoDataValue]; this._dictionaryOfAttributeValues[attributeId] = array; return array; }; dojo.data.old.Item.prototype.load = function (attributeId, value) { this._dataProvider.registerAttribute(attributeId); var literalOrValueOrArray = this._dictionaryOfAttributeValues[attributeId]; if (dojo.lang.isUndefined(literalOrValueOrArray)) { this._dictionaryOfAttributeValues[attributeId] = value; return; } if (!(value instanceof dojo.data.old.Value)) { value = new dojo.data.old.Value(value); } if (literalOrValueOrArray instanceof dojo.data.old.Value) { var array = [literalOrValueOrArray, value]; this._dictionaryOfAttributeValues[attributeId] = array; return; } if (dojo.lang.isArray(literalOrValueOrArray)) { literalOrValueOrArray.push(value); return; } var literal = literalOrValueOrArray; var dojoDataValue = new dojo.data.old.Value(literal); array = [dojoDataValue, value]; this._dictionaryOfAttributeValues[attributeId] = array; }; dojo.data.old.Item.prototype.set = function (attributeId, value) { this._dataProvider.registerAttribute(attributeId); this._dictionaryOfAttributeValues[attributeId] = value; this._dataProvider.noteChange(this, attributeId, value); }; dojo.data.old.Item.prototype.setValue = function (attributeId, value) { this.set(attributeId, value); }; dojo.data.old.Item.prototype.addValue = function (attributeId, value) { this.load(attributeId, value); this._dataProvider.noteChange(this, attributeId, value); }; dojo.data.old.Item.prototype.setValues = function (attributeId, arrayOfValues) { dojo.lang.assertType(arrayOfValues, Array); this._dataProvider.registerAttribute(attributeId); var finalArray = []; this._dictionaryOfAttributeValues[attributeId] = finalArray; for (var i in arrayOfValues) { var value = arrayOfValues[i]; if (!(value instanceof dojo.data.old.Value)) { value = new dojo.data.old.Value(value); } finalArray.push(value); this._dataProvider.noteChange(this, attributeId, value); } }; dojo.data.old.Item.prototype.getAttributes = function () { var arrayOfAttributes = []; for (var key in this._dictionaryOfAttributeValues) { arrayOfAttributes.push(this._dataProvider.getAttribute(key)); } return arrayOfAttributes; }; dojo.data.old.Item.prototype.hasAttribute = function (attributeId) { return (attributeId in this._dictionaryOfAttributeValues); }; dojo.data.old.Item.prototype.hasAttributeValue = function (attributeId, value) { var arrayOfValues = this.getValues(attributeId); for (var i in arrayOfValues) { var candidateValue = arrayOfValues[i]; if (candidateValue.isEqual(value)) { return true; } } return false; }; }});

__CPAN_FILE__ src/data/old/__package__.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["require", "dojo.experimental"], ["kwCompoundRequire", {common:["dojo.data.old.Item", "dojo.data.old.ResultSet", "dojo.data.old.provider.FlatFile"]}], ["provide", "dojo.data.old.*"]], definePackage:function (dojo) { dojo.require("dojo.experimental"); dojo.experimental("dojo.data.old.*"); dojo.kwCompoundRequire({common:["dojo.data.old.Item", "dojo.data.old.ResultSet", "dojo.data.old.provider.FlatFile"]}); dojo.provide("dojo.data.old.*"); }});

__CPAN_FILE__ src/data/old/Kind.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.data.old.Kind"], ["require", "dojo.data.old.Item"]], definePackage:function (dojo) { dojo.provide("dojo.data.old.Kind"); dojo.require("dojo.data.old.Item"); dojo.data.old.Kind = function (dataProvider) { dojo.data.old.Item.call(this, dataProvider); }; dojo.inherits(dojo.data.old.Kind, dojo.data.old.Item); }});

__CPAN_DIR__ src/data/old/provider __CPAN_FILE__ src/data/old/provider/MySql.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.data.old.provider.MySql"); dojo.require("dojo.data.old.provider.Base"); dojo.data.old.provider.MySql = function () { dojo.unimplemented("dojo.data.old.provider.MySql"); }; dojo.inherits(dojo.data.old.provider.MySql, dojo.data.old.provider.Base);

__CPAN_FILE__ src/data/old/provider/Base.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.data.old.provider.Base"], ["require", "dojo.lang.assert"]], definePackage:function (dojo) { dojo.provide("dojo.data.old.provider.Base"); dojo.require("dojo.lang.assert"); dojo.data.old.provider.Base = function () { this._countOfNestedTransactions = 0; this._changesInCurrentTransaction = null; }; dojo.data.old.provider.Base.prototype.beginTransaction = function () { if (this._countOfNestedTransactions === 0) { this._changesInCurrentTransaction = []; } this._countOfNestedTransactions += 1; }; dojo.data.old.provider.Base.prototype.endTransaction = function () { this._countOfNestedTransactions -= 1; dojo.lang.assert(this._countOfNestedTransactions >= 0); if (this._countOfNestedTransactions === 0) { var listOfChangesMade = this._saveChanges(); this._changesInCurrentTransaction = null; if (listOfChangesMade.length > 0) { this._notifyObserversOfChanges(listOfChangesMade); } } }; dojo.data.old.provider.Base.prototype.getNewItemToLoad = function () { return this._newItem(); }; dojo.data.old.provider.Base.prototype.newItem = function (itemName) { dojo.lang.assertType(itemName, String, {optional:true}); var item = this._newItem(); if (itemName) { item.set("name", itemName); } return item; }; dojo.data.old.provider.Base.prototype.newAttribute = function (attributeId) { dojo.lang.assertType(attributeId, String, {optional:true}); var attribute = this._newAttribute(attributeId); return attribute; }; dojo.data.old.provider.Base.prototype.getAttribute = function (attributeId) { dojo.unimplemented("dojo.data.old.provider.Base"); var attribute; return attribute; }; dojo.data.old.provider.Base.prototype.getAttributes = function () { dojo.unimplemented("dojo.data.old.provider.Base"); return this._arrayOfAttributes; }; dojo.data.old.provider.Base.prototype.fetchArray = function () { dojo.unimplemented("dojo.data.old.provider.Base"); return []; }; dojo.data.old.provider.Base.prototype.fetchResultSet = function () { dojo.unimplemented("dojo.data.old.provider.Base"); var resultSet; return resultSet; }; dojo.data.old.provider.Base.prototype.noteChange = function (item, attribute, value) { var change = {item:item, attribute:attribute, value:value}; if (this._countOfNestedTransactions === 0) { this.beginTransaction(); this._changesInCurrentTransaction.push(change); this.endTransaction(); } else { this._changesInCurrentTransaction.push(change); } }; dojo.data.old.provider.Base.prototype.addItemObserver = function (item, observer) { dojo.lang.assertType(item, dojo.data.old.Item); item.addObserver(observer); }; dojo.data.old.provider.Base.prototype.removeItemObserver = function (item, observer) { dojo.lang.assertType(item, dojo.data.old.Item); item.removeObserver(observer); }; dojo.data.old.provider.Base.prototype._newItem = function () { var item = new dojo.data.old.Item(this); return item; }; dojo.data.old.provider.Base.prototype._newAttribute = function (attributeId) { var attribute = new dojo.data.old.Attribute(this); return attribute; }; dojo.data.old.provider.Base.prototype._saveChanges = function () { var arrayOfChangesMade = this._changesInCurrentTransaction; return arrayOfChangesMade; }; dojo.data.old.provider.Base.prototype._notifyObserversOfChanges = function (arrayOfChanges) { var arrayOfResultSets = this._getResultSets(); for (var i in arrayOfChanges) { var change = arrayOfChanges[i]; var changedItem = change.item; var arrayOfItemObservers = changedItem.getObservers(); for (var j in arrayOfItemObservers) { var observer = arrayOfItemObservers[j]; observer.observedObjectHasChanged(changedItem, change); } for (var k in arrayOfResultSets) { var resultSet = arrayOfResultSets[k]; var arrayOfResultSetObservers = resultSet.getObservers(); for (var m in arrayOfResultSetObservers) { observer = arrayOfResultSetObservers[m]; observer.observedObjectHasChanged(resultSet, change); } } } }; dojo.data.old.provider.Base.prototype._getResultSets = function () { dojo.unimplemented("dojo.data.old.provider.Base"); return []; }; }});

__CPAN_FILE__ src/data/old/provider/Delicious.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.data.old.provider.Delicious"); dojo.require("dojo.data.old.provider.FlatFile"); dojo.require("dojo.data.old.format.Json"); dojo.data.old.provider.Delicious = function () { dojo.data.old.provider.FlatFile.call(this); if (Delicious && Delicious.posts) { dojo.data.old.format.Json.loadDataProviderFromArrayOfJsonData(this, Delicious.posts); } else { } var u = this.registerAttribute("u"); var d = this.registerAttribute("d"); var t = this.registerAttribute("t"); u.load("name", "Bookmark"); d.load("name", "Description"); t.load("name", "Tags"); u.load("type", "String"); d.load("type", "String"); t.load("type", "String"); }; dojo.inherits(dojo.data.old.provider.Delicious, dojo.data.old.provider.FlatFile);

__CPAN_FILE__ src/data/old/provider/JotSpot.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.data.old.provider.JotSpot"], ["require", "dojo.data.old.provider.Base"]], definePackage:function (dojo) { dojo.provide("dojo.data.old.provider.JotSpot"); dojo.require("dojo.data.old.provider.Base"); dojo.data.old.provider.JotSpot = function () { dojo.unimplemented("dojo.data.old.provider.JotSpot"); }; dojo.inherits(dojo.data.old.provider.JotSpot, dojo.data.old.provider.Base); }});

__CPAN_FILE__ src/data/old/provider/FlatFile.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.data.old.provider.FlatFile"); dojo.require("dojo.data.old.provider.Base"); dojo.require("dojo.data.old.Item"); dojo.require("dojo.data.old.Attribute"); dojo.require("dojo.data.old.ResultSet"); dojo.require("dojo.data.old.format.Json"); dojo.require("dojo.data.old.format.Csv"); dojo.require("dojo.lang.assert"); dojo.data.old.provider.FlatFile = function (keywordParameters) { dojo.lang.assertType(keywordParameters, "pureobject", {optional:true}); dojo.data.old.provider.Base.call(this); this._arrayOfItems = []; this._resultSet = null; this._dictionaryOfAttributes = {}; if (keywordParameters) { var jsonObjects = keywordParameters["jsonObjects"]; var jsonString = keywordParameters["jsonString"]; var fileUrl = keywordParameters["url"]; if (jsonObjects) { dojo.data.old.format.Json.loadDataProviderFromArrayOfJsonData(this, jsonObjects); } if (jsonString) { dojo.data.old.format.Json.loadDataProviderFromFileContents(this, jsonString); } if (fileUrl) { var arrayOfParts = fileUrl.split("."); var lastPart = arrayOfParts[(arrayOfParts.length - 1)]; var formatParser = null; if (lastPart == "json") { formatParser = dojo.data.old.format.Json; } if (lastPart == "csv") { formatParser = dojo.data.old.format.Csv; } if (formatParser) { var fileContents = dojo.hostenv.getText(fileUrl); formatParser.loadDataProviderFromFileContents(this, fileContents); } else { dojo.lang.assert(false, "new dojo.data.old.provider.FlatFile({url: }) was passed a file without a .csv or .json suffix"); } } } }; dojo.inherits(dojo.data.old.provider.FlatFile, dojo.data.old.provider.Base); dojo.data.old.provider.FlatFile.prototype.getProviderCapabilities = function (keyword) { dojo.lang.assertType(keyword, String, {optional:true}); if (!this._ourCapabilities) { this._ourCapabilities = {transactions:false, undo:false, login:false, versioning:false, anonymousRead:true, anonymousWrite:false, permissions:false, queries:false, strongTyping:false, datatypes:[String, Date, Number]}; } if (keyword) { return this._ourCapabilities[keyword]; } else { return this._ourCapabilities; } }; dojo.data.old.provider.FlatFile.prototype.registerAttribute = function (attributeId) { var registeredAttribute = this.getAttribute(attributeId); if (!registeredAttribute) { var newAttribute = new dojo.data.old.Attribute(this, attributeId); this._dictionaryOfAttributes[attributeId] = newAttribute; registeredAttribute = newAttribute; } return registeredAttribute; }; dojo.data.old.provider.FlatFile.prototype.getAttribute = function (attributeId) { var attribute = (this._dictionaryOfAttributes[attributeId] || null); return attribute; }; dojo.data.old.provider.FlatFile.prototype.getAttributes = function () { var arrayOfAttributes = []; for (var key in this._dictionaryOfAttributes) { var attribute = this._dictionaryOfAttributes[key]; arrayOfAttributes.push(attribute); } return arrayOfAttributes; }; dojo.data.old.provider.FlatFile.prototype.fetchArray = function (query) { return this._arrayOfItems; }; dojo.data.old.provider.FlatFile.prototype.fetchResultSet = function (query) { if (!this._resultSet) { this._resultSet = new dojo.data.old.ResultSet(this, this.fetchArray(query)); } return this._resultSet; }; dojo.data.old.provider.FlatFile.prototype._newItem = function () { var item = new dojo.data.old.Item(this); this._arrayOfItems.push(item); return item; }; dojo.data.old.provider.FlatFile.prototype._newAttribute = function (attributeId) { dojo.lang.assertType(attributeId, String); dojo.lang.assert(this.getAttribute(attributeId) === null); var attribute = new dojo.data.old.Attribute(this, attributeId); this._dictionaryOfAttributes[attributeId] = attribute; return attribute; }; dojo.data.old.provider.Base.prototype._getResultSets = function () { return [this._resultSet]; };

__CPAN_FILE__ src/data/old/provider/JotSpot.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.data.old.provider.JotSpot"); dojo.require("dojo.data.old.provider.Base"); dojo.data.old.provider.JotSpot = function () { dojo.unimplemented("dojo.data.old.provider.JotSpot"); }; dojo.inherits(dojo.data.old.provider.JotSpot, dojo.data.old.provider.Base);

__CPAN_FILE__ src/data/old/provider/MySql.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.data.old.provider.MySql"], ["require", "dojo.data.old.provider.Base"]], definePackage:function (dojo) { dojo.provide("dojo.data.old.provider.MySql"); dojo.require("dojo.data.old.provider.Base"); dojo.data.old.provider.MySql = function () { dojo.unimplemented("dojo.data.old.provider.MySql"); }; dojo.inherits(dojo.data.old.provider.MySql, dojo.data.old.provider.Base); }});

__CPAN_FILE__ src/data/old/provider/FlatFile.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.data.old.provider.FlatFile"], ["require", "dojo.data.old.provider.Base"], ["require", "dojo.data.old.Item"], ["require", "dojo.data.old.Attribute"], ["require", "dojo.data.old.ResultSet"], ["require", "dojo.data.old.format.Json"], ["require", "dojo.data.old.format.Csv"], ["require", "dojo.lang.assert"]], definePackage:function (dojo) { dojo.provide("dojo.data.old.provider.FlatFile"); dojo.require("dojo.data.old.provider.Base"); dojo.require("dojo.data.old.Item"); dojo.require("dojo.data.old.Attribute"); dojo.require("dojo.data.old.ResultSet"); dojo.require("dojo.data.old.format.Json"); dojo.require("dojo.data.old.format.Csv"); dojo.require("dojo.lang.assert"); dojo.data.old.provider.FlatFile = function (keywordParameters) { dojo.lang.assertType(keywordParameters, "pureobject", {optional:true}); dojo.data.old.provider.Base.call(this); this._arrayOfItems = []; this._resultSet = null; this._dictionaryOfAttributes = {}; if (keywordParameters) { var jsonObjects = keywordParameters["jsonObjects"]; var jsonString = keywordParameters["jsonString"]; var fileUrl = keywordParameters["url"]; if (jsonObjects) { dojo.data.old.format.Json.loadDataProviderFromArrayOfJsonData(this, jsonObjects); } if (jsonString) { dojo.data.old.format.Json.loadDataProviderFromFileContents(this, jsonString); } if (fileUrl) { var arrayOfParts = fileUrl.split("."); var lastPart = arrayOfParts[(arrayOfParts.length - 1)]; var formatParser = null; if (lastPart == "json") { formatParser = dojo.data.old.format.Json; } if (lastPart == "csv") { formatParser = dojo.data.old.format.Csv; } if (formatParser) { var fileContents = dojo.hostenv.getText(fileUrl); formatParser.loadDataProviderFromFileContents(this, fileContents); } else { dojo.lang.assert(false, "new dojo.data.old.provider.FlatFile({url: }) was passed a file without a .csv or .json suffix"); } } } }; dojo.inherits(dojo.data.old.provider.FlatFile, dojo.data.old.provider.Base); dojo.data.old.provider.FlatFile.prototype.getProviderCapabilities = function (keyword) { dojo.lang.assertType(keyword, String, {optional:true}); if (!this._ourCapabilities) { this._ourCapabilities = {transactions:false, undo:false, login:false, versioning:false, anonymousRead:true, anonymousWrite:false, permissions:false, queries:false, strongTyping:false, datatypes:[String, Date, Number]}; } if (keyword) { return this._ourCapabilities[keyword]; } else { return this._ourCapabilities; } }; dojo.data.old.provider.FlatFile.prototype.registerAttribute = function (attributeId) { var registeredAttribute = this.getAttribute(attributeId); if (!registeredAttribute) { var newAttribute = new dojo.data.old.Attribute(this, attributeId); this._dictionaryOfAttributes[attributeId] = newAttribute; registeredAttribute = newAttribute; } return registeredAttribute; }; dojo.data.old.provider.FlatFile.prototype.getAttribute = function (attributeId) { var attribute = (this._dictionaryOfAttributes[attributeId] || null); return attribute; }; dojo.data.old.provider.FlatFile.prototype.getAttributes = function () { var arrayOfAttributes = []; for (var key in this._dictionaryOfAttributes) { var attribute = this._dictionaryOfAttributes[key]; arrayOfAttributes.push(attribute); } return arrayOfAttributes; }; dojo.data.old.provider.FlatFile.prototype.fetchArray = function (query) { return this._arrayOfItems; }; dojo.data.old.provider.FlatFile.prototype.fetchResultSet = function (query) { if (!this._resultSet) { this._resultSet = new dojo.data.old.ResultSet(this, this.fetchArray(query)); } return this._resultSet; }; dojo.data.old.provider.FlatFile.prototype._newItem = function () { var item = new dojo.data.old.Item(this); this._arrayOfItems.push(item); return item; }; dojo.data.old.provider.FlatFile.prototype._newAttribute = function (attributeId) { dojo.lang.assertType(attributeId, String); dojo.lang.assert(this.getAttribute(attributeId) === null); var attribute = new dojo.data.old.Attribute(this, attributeId); this._dictionaryOfAttributes[attributeId] = attribute; return attribute; }; dojo.data.old.provider.Base.prototype._getResultSets = function () { return [this._resultSet]; }; }});

__CPAN_FILE__ src/data/old/provider/Delicious.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.data.old.provider.Delicious"], ["require", "dojo.data.old.provider.FlatFile"], ["require", "dojo.data.old.format.Json"]], definePackage:function (dojo) { dojo.provide("dojo.data.old.provider.Delicious"); dojo.require("dojo.data.old.provider.FlatFile"); dojo.require("dojo.data.old.format.Json"); dojo.data.old.provider.Delicious = function () { dojo.data.old.provider.FlatFile.call(this); if (Delicious && Delicious.posts) { dojo.data.old.format.Json.loadDataProviderFromArrayOfJsonData(this, Delicious.posts); } else { } var u = this.registerAttribute("u"); var d = this.registerAttribute("d"); var t = this.registerAttribute("t"); u.load("name", "Bookmark"); d.load("name", "Description"); t.load("name", "Tags"); u.load("type", "String"); d.load("type", "String"); t.load("type", "String"); }; dojo.inherits(dojo.data.old.provider.Delicious, dojo.data.old.provider.FlatFile); }});

__CPAN_FILE__ src/data/old/provider/Base.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.data.old.provider.Base"); dojo.require("dojo.lang.assert"); dojo.data.old.provider.Base = function () { this._countOfNestedTransactions = 0; this._changesInCurrentTransaction = null; }; dojo.data.old.provider.Base.prototype.beginTransaction = function () { if (this._countOfNestedTransactions === 0) { this._changesInCurrentTransaction = []; } this._countOfNestedTransactions += 1; }; dojo.data.old.provider.Base.prototype.endTransaction = function () { this._countOfNestedTransactions -= 1; dojo.lang.assert(this._countOfNestedTransactions >= 0); if (this._countOfNestedTransactions === 0) { var listOfChangesMade = this._saveChanges(); this._changesInCurrentTransaction = null; if (listOfChangesMade.length > 0) { this._notifyObserversOfChanges(listOfChangesMade); } } }; dojo.data.old.provider.Base.prototype.getNewItemToLoad = function () { return this._newItem(); }; dojo.data.old.provider.Base.prototype.newItem = function (itemName) { dojo.lang.assertType(itemName, String, {optional:true}); var item = this._newItem(); if (itemName) { item.set("name", itemName); } return item; }; dojo.data.old.provider.Base.prototype.newAttribute = function (attributeId) { dojo.lang.assertType(attributeId, String, {optional:true}); var attribute = this._newAttribute(attributeId); return attribute; }; dojo.data.old.provider.Base.prototype.getAttribute = function (attributeId) { dojo.unimplemented("dojo.data.old.provider.Base"); var attribute; return attribute; }; dojo.data.old.provider.Base.prototype.getAttributes = function () { dojo.unimplemented("dojo.data.old.provider.Base"); return this._arrayOfAttributes; }; dojo.data.old.provider.Base.prototype.fetchArray = function () { dojo.unimplemented("dojo.data.old.provider.Base"); return []; }; dojo.data.old.provider.Base.prototype.fetchResultSet = function () { dojo.unimplemented("dojo.data.old.provider.Base"); var resultSet; return resultSet; }; dojo.data.old.provider.Base.prototype.noteChange = function (item, attribute, value) { var change = {item:item, attribute:attribute, value:value}; if (this._countOfNestedTransactions === 0) { this.beginTransaction(); this._changesInCurrentTransaction.push(change); this.endTransaction(); } else { this._changesInCurrentTransaction.push(change); } }; dojo.data.old.provider.Base.prototype.addItemObserver = function (item, observer) { dojo.lang.assertType(item, dojo.data.old.Item); item.addObserver(observer); }; dojo.data.old.provider.Base.prototype.removeItemObserver = function (item, observer) { dojo.lang.assertType(item, dojo.data.old.Item); item.removeObserver(observer); }; dojo.data.old.provider.Base.prototype._newItem = function () { var item = new dojo.data.old.Item(this); return item; }; dojo.data.old.provider.Base.prototype._newAttribute = function (attributeId) { var attribute = new dojo.data.old.Attribute(this); return attribute; }; dojo.data.old.provider.Base.prototype._saveChanges = function () { var arrayOfChangesMade = this._changesInCurrentTransaction; return arrayOfChangesMade; }; dojo.data.old.provider.Base.prototype._notifyObserversOfChanges = function (arrayOfChanges) { var arrayOfResultSets = this._getResultSets(); for (var i in arrayOfChanges) { var change = arrayOfChanges[i]; var changedItem = change.item; var arrayOfItemObservers = changedItem.getObservers(); for (var j in arrayOfItemObservers) { var observer = arrayOfItemObservers[j]; observer.observedObjectHasChanged(changedItem, change); } for (var k in arrayOfResultSets) { var resultSet = arrayOfResultSets[k]; var arrayOfResultSetObservers = resultSet.getObservers(); for (var m in arrayOfResultSetObservers) { observer = arrayOfResultSetObservers[m]; observer.observedObjectHasChanged(resultSet, change); } } } }; dojo.data.old.provider.Base.prototype._getResultSets = function () { dojo.unimplemented("dojo.data.old.provider.Base"); return []; };

__CPAN_DIR__ src/data/old/format __CPAN_FILE__ src/data/old/format/Csv.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.data.old.format.Csv"], ["require", "dojo.lang.assert"]], definePackage:function (dojo) { dojo.provide("dojo.data.old.format.Csv"); dojo.require("dojo.lang.assert"); dojo.data.old.format.Csv = new function () { this.getArrayStructureFromCsvFileContents = function (csvFileContents) { dojo.lang.assertType(csvFileContents, String); var lineEndingCharacters = new RegExp("\r\n|\n|\r"); var leadingWhiteSpaceCharacters = new RegExp("^\\s+", "g"); var trailingWhiteSpaceCharacters = new RegExp("\\s+$", "g"); var doubleQuotes = new RegExp("\"\"", "g"); var arrayOfOutputRecords = []; var arrayOfInputLines = csvFileContents.split(lineEndingCharacters); for (var i in arrayOfInputLines) { var singleLine = arrayOfInputLines[i]; if (singleLine.length > 0) { var listOfFields = singleLine.split(","); var j = 0; while (j < listOfFields.length) { var space_field_space = listOfFields[j]; var field_space = space_field_space.replace(leadingWhiteSpaceCharacters, ""); var field = field_space.replace(trailingWhiteSpaceCharacters, ""); var firstChar = field.charAt(0); var lastChar = field.charAt(field.length - 1); var secondToLastChar = field.charAt(field.length - 2); var thirdToLastChar = field.charAt(field.length - 3); if ((firstChar == "\"") && ((lastChar != "\"") || ((lastChar == "\"") && (secondToLastChar == "\"") && (thirdToLastChar != "\"")))) { if (j + 1 === listOfFields.length) { return null; } var nextField = listOfFields[j + 1]; listOfFields[j] = field_space + "," + nextField; listOfFields.splice(j + 1, 1); } else { if ((firstChar == "\"") && (lastChar == "\"")) { field = field.slice(1, (field.length - 1)); field = field.replace(doubleQuotes, "\""); } listOfFields[j] = field; j += 1; } } arrayOfOutputRecords.push(listOfFields); } } return arrayOfOutputRecords; }; this.loadDataProviderFromFileContents = function (dataProvider, csvFileContents) { dojo.lang.assertType(dataProvider, dojo.data.old.provider.Base); dojo.lang.assertType(csvFileContents, String); var arrayOfArrays = this.getArrayStructureFromCsvFileContents(csvFileContents); if (arrayOfArrays) { var arrayOfKeys = arrayOfArrays[0]; for (var i = 1; i < arrayOfArrays.length; ++i) { var row = arrayOfArrays[i]; var item = dataProvider.getNewItemToLoad(); for (var j in row) { var value = row[j]; var key = arrayOfKeys[j]; item.load(key, value); } } } }; this.getCsvStringFromResultSet = function (resultSet) { dojo.unimplemented("dojo.data.old.format.Csv.getCsvStringFromResultSet"); var csvString = null; return csvString; }; }(); }});

__CPAN_FILE__ src/data/old/format/Json.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.data.old.format.Json"); dojo.require("dojo.lang.assert"); dojo.data.old.format.Json = new function () { this.loadDataProviderFromFileContents = function (dataProvider, jsonFileContents) { dojo.lang.assertType(dataProvider, dojo.data.old.provider.Base); dojo.lang.assertType(jsonFileContents, String); var arrayOfJsonData = eval("(" + jsonFileContents + ")"); this.loadDataProviderFromArrayOfJsonData(dataProvider, arrayOfJsonData); }; this.loadDataProviderFromArrayOfJsonData = function (dataProvider, arrayOfJsonData) { dojo.lang.assertType(arrayOfJsonData, Array, {optional:true}); if (arrayOfJsonData && (arrayOfJsonData.length > 0)) { var firstRow = arrayOfJsonData[0]; dojo.lang.assertType(firstRow, [Array, "pureobject"]); if (dojo.lang.isArray(firstRow)) { _loadDataProviderFromArrayOfArrays(dataProvider, arrayOfJsonData); } else { dojo.lang.assertType(firstRow, "pureobject"); _loadDataProviderFromArrayOfObjects(dataProvider, arrayOfJsonData); } } }; this.getJsonStringFromResultSet = function (resultSet) { dojo.unimplemented("dojo.data.old.format.Json.getJsonStringFromResultSet"); var jsonString = null; return jsonString; }; function _loadDataProviderFromArrayOfArrays(dataProvider, arrayOfJsonData) { var arrayOfKeys = arrayOfJsonData[0]; for (var i = 1; i < arrayOfJsonData.length; ++i) { var row = arrayOfJsonData[i]; var item = dataProvider.getNewItemToLoad(); for (var j in row) { var value = row[j]; var key = arrayOfKeys[j]; item.load(key, value); } } } function _loadDataProviderFromArrayOfObjects(dataProvider, arrayOfJsonData) { for (var i in arrayOfJsonData) { var row = arrayOfJsonData[i]; var item = dataProvider.getNewItemToLoad(); for (var key in row) { var value = row[key]; if (dojo.lang.isArray(value)) { var arrayOfValues = value; for (var j in arrayOfValues) { value = arrayOfValues[j]; item.load(key, value); } } else { item.load(key, value); } } } } }();

__CPAN_FILE__ src/data/old/format/Csv.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.data.old.format.Csv"); dojo.require("dojo.lang.assert"); dojo.data.old.format.Csv = new function () { this.getArrayStructureFromCsvFileContents = function (csvFileContents) { dojo.lang.assertType(csvFileContents, String); var lineEndingCharacters = new RegExp("\r\n|\n|\r"); var leadingWhiteSpaceCharacters = new RegExp("^\\s+", "g"); var trailingWhiteSpaceCharacters = new RegExp("\\s+$", "g"); var doubleQuotes = new RegExp("\"\"", "g"); var arrayOfOutputRecords = []; var arrayOfInputLines = csvFileContents.split(lineEndingCharacters); for (var i in arrayOfInputLines) { var singleLine = arrayOfInputLines[i]; if (singleLine.length > 0) { var listOfFields = singleLine.split(","); var j = 0; while (j < listOfFields.length) { var space_field_space = listOfFields[j]; var field_space = space_field_space.replace(leadingWhiteSpaceCharacters, ""); var field = field_space.replace(trailingWhiteSpaceCharacters, ""); var firstChar = field.charAt(0); var lastChar = field.charAt(field.length - 1); var secondToLastChar = field.charAt(field.length - 2); var thirdToLastChar = field.charAt(field.length - 3); if ((firstChar == "\"") && ((lastChar != "\"") || ((lastChar == "\"") && (secondToLastChar == "\"") && (thirdToLastChar != "\"")))) { if (j + 1 === listOfFields.length) { return null; } var nextField = listOfFields[j + 1]; listOfFields[j] = field_space + "," + nextField; listOfFields.splice(j + 1, 1); } else { if ((firstChar == "\"") && (lastChar == "\"")) { field = field.slice(1, (field.length - 1)); field = field.replace(doubleQuotes, "\""); } listOfFields[j] = field; j += 1; } } arrayOfOutputRecords.push(listOfFields); } } return arrayOfOutputRecords; }; this.loadDataProviderFromFileContents = function (dataProvider, csvFileContents) { dojo.lang.assertType(dataProvider, dojo.data.old.provider.Base); dojo.lang.assertType(csvFileContents, String); var arrayOfArrays = this.getArrayStructureFromCsvFileContents(csvFileContents); if (arrayOfArrays) { var arrayOfKeys = arrayOfArrays[0]; for (var i = 1; i < arrayOfArrays.length; ++i) { var row = arrayOfArrays[i]; var item = dataProvider.getNewItemToLoad(); for (var j in row) { var value = row[j]; var key = arrayOfKeys[j]; item.load(key, value); } } } }; this.getCsvStringFromResultSet = function (resultSet) { dojo.unimplemented("dojo.data.old.format.Csv.getCsvStringFromResultSet"); var csvString = null; return csvString; }; }();

__CPAN_FILE__ src/data/old/format/Json.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.data.old.format.Json"], ["require", "dojo.lang.assert"]], definePackage:function (dojo) { dojo.provide("dojo.data.old.format.Json"); dojo.require("dojo.lang.assert"); dojo.data.old.format.Json = new function () { this.loadDataProviderFromFileContents = function (dataProvider, jsonFileContents) { dojo.lang.assertType(dataProvider, dojo.data.old.provider.Base); dojo.lang.assertType(jsonFileContents, String); var arrayOfJsonData = eval("(" + jsonFileContents + ")"); this.loadDataProviderFromArrayOfJsonData(dataProvider, arrayOfJsonData); }; this.loadDataProviderFromArrayOfJsonData = function (dataProvider, arrayOfJsonData) { dojo.lang.assertType(arrayOfJsonData, Array, {optional:true}); if (arrayOfJsonData && (arrayOfJsonData.length > 0)) { var firstRow = arrayOfJsonData[0]; dojo.lang.assertType(firstRow, [Array, "pureobject"]); if (dojo.lang.isArray(firstRow)) { _loadDataProviderFromArrayOfArrays(dataProvider, arrayOfJsonData); } else { dojo.lang.assertType(firstRow, "pureobject"); _loadDataProviderFromArrayOfObjects(dataProvider, arrayOfJsonData); } } }; this.getJsonStringFromResultSet = function (resultSet) { dojo.unimplemented("dojo.data.old.format.Json.getJsonStringFromResultSet"); var jsonString = null; return jsonString; }; function _loadDataProviderFromArrayOfArrays(dataProvider, arrayOfJsonData) { var arrayOfKeys = arrayOfJsonData[0]; for (var i = 1; i < arrayOfJsonData.length; ++i) { var row = arrayOfJsonData[i]; var item = dataProvider.getNewItemToLoad(); for (var j in row) { var value = row[j]; var key = arrayOfKeys[j]; item.load(key, value); } } } function _loadDataProviderFromArrayOfObjects(dataProvider, arrayOfJsonData) { for (var i in arrayOfJsonData) { var row = arrayOfJsonData[i]; var item = dataProvider.getNewItemToLoad(); for (var key in row) { var value = row[key]; if (dojo.lang.isArray(value)) { var arrayOfValues = value; for (var j in arrayOfValues) { value = arrayOfValues[j]; item.load(key, value); } } else { item.load(key, value); } } } } }(); }});

__CPAN_DIR__ src/storage __CPAN_FILE__ src/storage/browser.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.storage.browser"); dojo.require("dojo.storage"); dojo.require("dojo.flash"); dojo.require("dojo.json"); dojo.require("dojo.uri.*"); dojo.storage.browser.FileStorageProvider = function () { }; dojo.inherits(dojo.storage.browser.FileStorageProvider, dojo.storage); dojo.storage.browser.FileStorageProvider._KEY_INDEX_FILENAME = "__dojoAllKeys"; dojo.storage.browser.FileStorageProvider._APPLET_ID = "__dojoFileJavaObj"; dojo.lang.extend(dojo.storage.browser.FileStorageProvider, {namespace:"default", initialized:false, _available:null, _statusHandler:null, _keyIndex:new Array(), initialize:function () { if (djConfig["disableFileStorage"] == true) { return; } this._loadKeyIndex(); this.initialized = true; dojo.storage.manager.loaded(); }, isAvailable:function () { this._available = false; var protocol = window.location.protocol; if (protocol.indexOf("file") != -1 || protocol.indexOf("chrome") != -1) { this._available = this._isAvailableXPCOM(); if (this._available == false) { this._available = this._isAvailableActiveX(); } } return this._available; }, put:function (key, value, resultsHandler) { if (this.isValidKey(key) == false) { dojo.raise("Invalid key given: " + key); } this._statusHandler = resultsHandler; try { this._save(key, value); resultsHandler.call(null, dojo.storage.SUCCESS, key); } catch (e) { this._statusHandler.call(null, dojo.storage.FAILED, key, e.toString()); } }, get:function (key) { if (this.isValidKey(key) == false) { dojo.raise("Invalid key given: " + key); } var results = this._load(key); return results; }, getKeys:function () { return this._keyIndex; }, hasKey:function (key) { if (this.isValidKey(key) == false) { dojo.raise("Invalid key given: " + key); } this._loadKeyIndex(); var exists = false; for (var i = 0; i < this._keyIndex.length; i++) { if (this._keyIndex[i] == key) { exists = true; } } return exists; }, clear:function () { this._loadKeyIndex(); var keyIndex = new Array(); for (var i = 0; i < this._keyIndex.length; i++) { keyIndex[keyIndex.length] = new String(this._keyIndex[i]); } for (var i = 0; i < keyIndex.length; i++) { this.remove(keyIndex[i]); } }, remove:function (key) { if (this.isValidKey(key) == false) { dojo.raise("Invalid key given: " + key); } this._loadKeyIndex(); for (var i = 0; i < this._keyIndex.length; i++) { if (this._keyIndex[i] == key) { this._keyIndex.splice(i, 1); break; } } this._save(dojo.storage.browser.FileStorageProvider._KEY_INDEX_FILENAME, this._keyIndex, false); var fullPath = this._getPagePath() + key + ".txt"; if (this._isAvailableXPCOM()) { this._removeXPCOM(fullPath); } else { if (this._isAvailableActiveX()) { this._removeActiveX(fullPath); } } }, isPermanent:function () { return true; }, getMaximumSize:function () { return dojo.storage.SIZE_NO_LIMIT; }, hasSettingsUI:function () { return false; }, showSettingsUI:function () { dojo.raise(this.getType() + " does not support a storage settings user-interface"); }, hideSettingsUI:function () { dojo.raise(this.getType() + " does not support a storage settings user-interface"); }, getType:function () { return "dojo.storage.browser.FileStorageProvider"; }, _save:function (key, value, updateKeyIndex) { if (typeof updateKeyIndex == "undefined") { updateKeyIndex = true; } if (dojo.lang.isString(value) == false) { value = dojo.json.serialize(value); value = "/* JavaScript */\n" + value + "\n\n"; } var fullPath = this._getPagePath() + key + ".txt"; if (this._isAvailableXPCOM()) { this._saveFileXPCOM(fullPath, value); } else { if (this._isAvailableActiveX()) { this._saveFileActiveX(fullPath, value); } } if (updateKeyIndex) { this._updateKeyIndex(key); } }, _load:function (key) { var fullPath = this._getPagePath() + key + ".txt"; var results = null; if (this._isAvailableXPCOM()) { results = this._loadFileXPCOM(fullPath); } else { if (this._isAvailableActiveX()) { results = this._loadFileActiveX(fullPath); } else { if (this._isAvailableJava()) { results = this._loadFileJava(fullPath); } } } if (results == null) { return null; } if (!dojo.lang.isUndefined(results) && results != null && /^\/\* JavaScript \*\//.test(results)) { results = dojo.json.evalJson(results); } return results; }, _updateKeyIndex:function (key) { this._loadKeyIndex(); var alreadyAdded = false; for (var i = 0; i < this._keyIndex.length; i++) { if (this._keyIndex[i] == key) { alreadyAdded = true; break; } } if (alreadyAdded == false) { this._keyIndex[this._keyIndex.length] = key; } this._save(dojo.storage.browser.FileStorageProvider._KEY_INDEX_FILENAME, this._keyIndex, false); }, _loadKeyIndex:function () { var indexContents = this._load(dojo.storage.browser.FileStorageProvider._KEY_INDEX_FILENAME); if (indexContents == null) { this._keyIndex = new Array(); } else { this._keyIndex = indexContents; } }, _saveFileXPCOM:function (filename, value) { try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); var f = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); f.initWithPath(filename); var ouputStream = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream); ouputStream.init(f, 32 | 4 | 8, 256 + 128, null); ouputStream.write(value, value.length); ouputStream.close(); } catch (e) { var msg = e.toString(); if (e.name && e.message) { msg = e.name + ": " + e.message; } dojo.raise("dojo.storage.browser.FileStorageProvider._saveFileXPCOM(): " + msg); } }, _loadFileXPCOM:function (filename) { try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); var f = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); f.initWithPath(filename); if (f.exists() == false) { return null; } var inp = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream); inp.init(f, 1, 4, null); var inputStream = Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream); inputStream.init(inp); var results = inputStream.read(inputStream.available()); return results; } catch (e) { var msg = e.toString(); if (e.name && e.message) { msg = e.name + ": " + e.message; } dojo.raise("dojo.storage.browser.FileStorageProvider._loadFileXPCOM(): " + msg); } return null; }, _saveFileActiveX:function (filename, value) { try { var fileSystem = new ActiveXObject("Scripting.FileSystemObject"); var f = fileSystem.OpenTextFile(filename, 2, true); f.Write(value); f.Close(); } catch (e) { var msg = e.toString(); if (e.name && e.message) { msg = e.name + ": " + e.message; } dojo.raise("dojo.storage.browser.FileStorageProvider._saveFileActiveX(): " + msg); } }, _loadFileActiveX:function (filename) { try { var fileSystem = new ActiveXObject("Scripting.FileSystemObject"); if (fileSystem.FileExists(filename) == false) { return null; } var f = fileSystem.OpenTextFile(filename, 1); var results = f.ReadAll(); f.Close(); return results; } catch (e) { var msg = e.toString(); if (e.name && e.message) { msg = e.name + ": " + e.message; } dojo.raise("dojo.storage.browser.FileStorageProvider._loadFileActiveX(): " + msg); } }, _saveFileJava:function (filename, value) { try { var applet = dojo.byId(dojo.storage.browser.FileStorageProvider._APPLET_ID); applet.save(filename, value); } catch (e) { var msg = e.toString(); if (e.name && e.message) { msg = e.name + ": " + e.message; } dojo.raise("dojo.storage.browser.FileStorageProvider._saveFileJava(): " + msg); } }, _loadFileJava:function (filename) { try { var applet = dojo.byId(dojo.storage.browser.FileStorageProvider._APPLET_ID); var results = applet.load(filename); return results; } catch (e) { var msg = e.toString(); if (e.name && e.message) { msg = e.name + ": " + e.message; } dojo.raise("dojo.storage.browser.FileStorageProvider._loadFileJava(): " + msg); } }, _isAvailableActiveX:function () { try { if (window.ActiveXObject) { var fileSystem = new window.ActiveXObject("Scripting.FileSystemObject"); return true; } } catch (e) { dojo.debug(e); } return false; }, _isAvailableXPCOM:function () { try { if (window.Components) { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); return true; } } catch (e) { dojo.debug(e); } return false; }, _isAvailableJava:function () { try { if (dojo.render.html.safari == true || dojo.render.html.opera == true()) { if (navigator.javaEnabled() == true) { return true; } } } catch (e) { dojo.debug(e); } return false; }, _getPagePath:function () { var path = window.location.pathname; if (/\.html?$/i.test(path)) { path = path.replace(/(?:\/|\\)?[^\.\/\\]*\.html?$/, ""); } if (/^\/?[a-z]+\:/i.test(path)) { path = path.replace(/^\/?/, ""); path = path.replace(/\//g, "\\"); } else { if (/^[\/\\]{2,3}[^\/]/.test(path)) { path = path.replace(/^[\/\\]{2,3}/, ""); path = path.replace(/\//g, "\\"); path = "\\\\" + path; } } if (/\/$/.test(path) == false && /\\$/.test(path) == false) { if (/\//.test(path)) { path += "/"; } else { path += "\\"; } } path = unescape(path); return path; }, _removeXPCOM:function (filename) { try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); var f = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); f.initWithPath(filename); if (f.exists() == false || f.isDirectory()) { return; } if (f.isFile()) { f.remove(false); } } catch (e) { dojo.raise("dojo.storage.browser.FileStorageProvider.remove(): " + e.toString()); } }, _removeActiveX:function (filename) { try { var fileSystem = new ActiveXObject("Scripting.FileSystemObject"); fileSystem.DeleteFile(filename); } catch (e) { dojo.raise("dojo.storage.browser.FileStorageProvider.remove(): " + e.toString()); } }, _removeJava:function (filename) { try { var applet = dojo.byId(dojo.storage.browser.FileStorageProvider._APPLET_ID); applet.remove(filename); } catch (e) { var msg = e.toString(); if (e.name && e.message) { msg = e.name + ": " + e.message; } dojo.raise("dojo.storage.browser.FileStorageProvider._removeJava(): " + msg); } }, _writeApplet:function () { var archive = dojo.uri.moduleUri("dojo", "../DojoFileStorageProvider.jar").toString(); var tag = "<applet " + "id='" + dojo.storage.browser.FileStorageProvider._APPLET_ID + "' " + "style='position: absolute; top: -500px; left: -500px; width: 1px; height: 1px;' " + "code='DojoFileStorageProvider.class' " + "archive='" + archive + "' " + "width='1' " + "height='1' " + ">" + "</applet>"; document.writeln(tag); }}); dojo.storage.browser.WhatWGStorageProvider = function () { }; dojo.inherits(dojo.storage.browser.WhatWGStorageProvider, dojo.storage); dojo.lang.extend(dojo.storage.browser.WhatWGStorageProvider, {namespace:"default", initialized:false, _domain:null, _available:null, _statusHandler:null, initialize:function () { if (djConfig["disableWhatWGStorage"] == true) { return; } this._domain = location.hostname; this.initialized = true; dojo.storage.manager.loaded(); }, isAvailable:function () { try { var myStorage = globalStorage[location.hostname]; } catch (e) { this._available = false; return this._available; } this._available = true; return this._available; }, put:function (key, value, resultsHandler) { if (this.isValidKey(key) == false) { dojo.raise("Invalid key given: " + key); } this._statusHandler = resultsHandler; if (dojo.lang.isString(value)) { value = "string:" + value; } else { value = dojo.json.serialize(value); } window.addEventListener("storage", function (evt) { resultsHandler.call(null, dojo.storage.SUCCESS, key); }, false); try { var myStorage = globalStorage[this._domain]; myStorage.setItem(key, value); } catch (e) { this._statusHandler.call(null, dojo.storage.FAILED, key, e.toString()); } }, get:function (key) { if (this.isValidKey(key) == false) { dojo.raise("Invalid key given: " + key); } var myStorage = globalStorage[this._domain]; var results = myStorage.getItem(key); if (results == null) { return null; } results = results.value; if (!dojo.lang.isUndefined(results) && results != null && /^string:/.test(results)) { results = results.substring("string:".length); } else { results = dojo.json.evalJson(results); } return results; }, getKeys:function () { var myStorage = globalStorage[this._domain]; var keysArray = new Array(); for (i = 0; i < myStorage.length; i++) { keysArray[i] = myStorage.key(i); } return keysArray; }, clear:function () { var myStorage = globalStorage[this._domain]; var keys = new Array(); for (var i = 0; i < myStorage.length; i++) { keys[keys.length] = myStorage.key(i); } for (var i = 0; i < keys.length; i++) { myStorage.removeItem(keys[i]); } }, remove:function (key) { var myStorage = globalStorage[this._domain]; myStorage.removeItem(key); }, isPermanent:function () { return true; }, getMaximumSize:function () { return dojo.storage.SIZE_NO_LIMIT; }, hasSettingsUI:function () { return false; }, showSettingsUI:function () { dojo.raise(this.getType() + " does not support a storage settings user-interface"); }, hideSettingsUI:function () { dojo.raise(this.getType() + " does not support a storage settings user-interface"); }, getType:function () { return "dojo.storage.browser.WhatWGProvider"; }}); dojo.storage.browser.FlashStorageProvider = function () { }; dojo.inherits(dojo.storage.browser.FlashStorageProvider, dojo.storage); dojo.lang.extend(dojo.storage.browser.FlashStorageProvider, {namespace:"default", initialized:false, _available:null, _statusHandler:null, initialize:function () { if (djConfig["disableFlashStorage"] == true) { return; } var loadedListener = function () { dojo.storage._flashLoaded(); }; dojo.flash.addLoadedListener(loadedListener); var swfloc6 = dojo.uri.moduleUri("dojo", "../Storage_version6.swf").toString(); var swfloc8 = dojo.uri.moduleUri("dojo", "../Storage_version8.swf").toString(); dojo.flash.setSwf({flash6:swfloc6, flash8:swfloc8, visible:false}); }, isAvailable:function () { if (djConfig["disableFlashStorage"] == true) { this._available = false; } else { this._available = true; } return this._available; }, put:function (key, value, resultsHandler) { if (this.isValidKey(key) == false) { dojo.raise("Invalid key given: " + key); } this._statusHandler = resultsHandler; if (dojo.lang.isString(value)) { value = "string:" + value; } else { value = dojo.json.serialize(value); } dojo.flash.comm.put(key, value, this.namespace); }, get:function (key) { if (this.isValidKey(key) == false) { dojo.raise("Invalid key given: " + key); } var results = dojo.flash.comm.get(key, this.namespace); if (results == "") { return null; } if (!dojo.lang.isUndefined(results) && results != null && /^string:/.test(results)) { results = results.substring("string:".length); } else { results = dojo.json.evalJson(results); } return results; }, getKeys:function () { var results = dojo.flash.comm.getKeys(this.namespace); if (results == "") { return []; } return results.split(","); }, clear:function () { dojo.flash.comm.clear(this.namespace); }, remove:function (key) { dojo.unimplemented("dojo.storage.browser.FlashStorageProvider.remove"); }, isPermanent:function () { return true; }, getMaximumSize:function () { return dojo.storage.SIZE_NO_LIMIT; }, hasSettingsUI:function () { return true; }, showSettingsUI:function () { dojo.flash.comm.showSettings(); dojo.flash.obj.setVisible(true); dojo.flash.obj.center(); }, hideSettingsUI:function () { dojo.flash.obj.setVisible(false); if (dojo.storage.onHideSettingsUI != null && !dojo.lang.isUndefined(dojo.storage.onHideSettingsUI)) { dojo.storage.onHideSettingsUI.call(null); } }, getType:function () { return "dojo.storage.browser.FlashStorageProvider"; }, _flashLoaded:function () { this._initialized = true; dojo.storage.manager.loaded(); }, _onStatus:function (statusResult, key) { var ds = dojo.storage; var dfo = dojo.flash.obj; if (statusResult == ds.PENDING) { dfo.center(); dfo.setVisible(true); } else { dfo.setVisible(false); } if ((!dj_undef("_statusHandler", ds)) && (ds._statusHandler != null)) { ds._statusHandler.call(null, statusResult, key); } }}); dojo.storage.manager.register("dojo.storage.browser.FileStorageProvider", new dojo.storage.browser.FileStorageProvider()); dojo.storage.manager.register("dojo.storage.browser.WhatWGStorageProvider", new dojo.storage.browser.WhatWGStorageProvider()); dojo.storage.manager.register("dojo.storage.browser.FlashStorageProvider", new dojo.storage.browser.FlashStorageProvider()); dojo.storage.manager.initialize();

__CPAN_FILE__ src/storage/browser.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.storage.browser"], ["require", "dojo.storage"], ["require", "dojo.flash"], ["require", "dojo.json"], ["require", "dojo.uri.*"]], definePackage:function (dojo) { dojo.provide("dojo.storage.browser"); dojo.require("dojo.storage"); dojo.require("dojo.flash"); dojo.require("dojo.json"); dojo.require("dojo.uri.*"); dojo.storage.browser.FileStorageProvider = function () { }; dojo.inherits(dojo.storage.browser.FileStorageProvider, dojo.storage); dojo.storage.browser.FileStorageProvider._KEY_INDEX_FILENAME = "__dojoAllKeys"; dojo.storage.browser.FileStorageProvider._APPLET_ID = "__dojoFileJavaObj"; dojo.lang.extend(dojo.storage.browser.FileStorageProvider, {namespace:"default", initialized:false, _available:null, _statusHandler:null, _keyIndex:new Array(), initialize:function () { if (djConfig["disableFileStorage"] == true) { return; } this._loadKeyIndex(); this.initialized = true; dojo.storage.manager.loaded(); }, isAvailable:function () { this._available = false; var protocol = window.location.protocol; if (protocol.indexOf("file") != -1 || protocol.indexOf("chrome") != -1) { this._available = this._isAvailableXPCOM(); if (this._available == false) { this._available = this._isAvailableActiveX(); } } return this._available; }, put:function (key, value, resultsHandler) { if (this.isValidKey(key) == false) { dojo.raise("Invalid key given: " + key); } this._statusHandler = resultsHandler; try { this._save(key, value); resultsHandler.call(null, dojo.storage.SUCCESS, key); } catch (e) { this._statusHandler.call(null, dojo.storage.FAILED, key, e.toString()); } }, get:function (key) { if (this.isValidKey(key) == false) { dojo.raise("Invalid key given: " + key); } var results = this._load(key); return results; }, getKeys:function () { return this._keyIndex; }, hasKey:function (key) { if (this.isValidKey(key) == false) { dojo.raise("Invalid key given: " + key); } this._loadKeyIndex(); var exists = false; for (var i = 0; i < this._keyIndex.length; i++) { if (this._keyIndex[i] == key) { exists = true; } } return exists; }, clear:function () { this._loadKeyIndex(); var keyIndex = new Array(); for (var i = 0; i < this._keyIndex.length; i++) { keyIndex[keyIndex.length] = new String(this._keyIndex[i]); } for (var i = 0; i < keyIndex.length; i++) { this.remove(keyIndex[i]); } }, remove:function (key) { if (this.isValidKey(key) == false) { dojo.raise("Invalid key given: " + key); } this._loadKeyIndex(); for (var i = 0; i < this._keyIndex.length; i++) { if (this._keyIndex[i] == key) { this._keyIndex.splice(i, 1); break; } } this._save(dojo.storage.browser.FileStorageProvider._KEY_INDEX_FILENAME, this._keyIndex, false); var fullPath = this._getPagePath() + key + ".txt"; if (this._isAvailableXPCOM()) { this._removeXPCOM(fullPath); } else { if (this._isAvailableActiveX()) { this._removeActiveX(fullPath); } } }, isPermanent:function () { return true; }, getMaximumSize:function () { return dojo.storage.SIZE_NO_LIMIT; }, hasSettingsUI:function () { return false; }, showSettingsUI:function () { dojo.raise(this.getType() + " does not support a storage settings user-interface"); }, hideSettingsUI:function () { dojo.raise(this.getType() + " does not support a storage settings user-interface"); }, getType:function () { return "dojo.storage.browser.FileStorageProvider"; }, _save:function (key, value, updateKeyIndex) { if (typeof updateKeyIndex == "undefined") { updateKeyIndex = true; } if (dojo.lang.isString(value) == false) { value = dojo.json.serialize(value); value = "/* JavaScript */\n" + value + "\n\n"; } var fullPath = this._getPagePath() + key + ".txt"; if (this._isAvailableXPCOM()) { this._saveFileXPCOM(fullPath, value); } else { if (this._isAvailableActiveX()) { this._saveFileActiveX(fullPath, value); } } if (updateKeyIndex) { this._updateKeyIndex(key); } }, _load:function (key) { var fullPath = this._getPagePath() + key + ".txt"; var results = null; if (this._isAvailableXPCOM()) { results = this._loadFileXPCOM(fullPath); } else { if (this._isAvailableActiveX()) { results = this._loadFileActiveX(fullPath); } else { if (this._isAvailableJava()) { results = this._loadFileJava(fullPath); } } } if (results == null) { return null; } if (!dojo.lang.isUndefined(results) && results != null && /^\/\* JavaScript \*\//.test(results)) { results = dojo.json.evalJson(results); } return results; }, _updateKeyIndex:function (key) { this._loadKeyIndex(); var alreadyAdded = false; for (var i = 0; i < this._keyIndex.length; i++) { if (this._keyIndex[i] == key) { alreadyAdded = true; break; } } if (alreadyAdded == false) { this._keyIndex[this._keyIndex.length] = key; } this._save(dojo.storage.browser.FileStorageProvider._KEY_INDEX_FILENAME, this._keyIndex, false); }, _loadKeyIndex:function () { var indexContents = this._load(dojo.storage.browser.FileStorageProvider._KEY_INDEX_FILENAME); if (indexContents == null) { this._keyIndex = new Array(); } else { this._keyIndex = indexContents; } }, _saveFileXPCOM:function (filename, value) { try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); var f = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); f.initWithPath(filename); var ouputStream = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream); ouputStream.init(f, 32 | 4 | 8, 256 + 128, null); ouputStream.write(value, value.length); ouputStream.close(); } catch (e) { var msg = e.toString(); if (e.name && e.message) { msg = e.name + ": " + e.message; } dojo.raise("dojo.storage.browser.FileStorageProvider._saveFileXPCOM(): " + msg); } }, _loadFileXPCOM:function (filename) { try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); var f = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); f.initWithPath(filename); if (f.exists() == false) { return null; } var inp = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream); inp.init(f, 1, 4, null); var inputStream = Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream); inputStream.init(inp); var results = inputStream.read(inputStream.available()); return results; } catch (e) { var msg = e.toString(); if (e.name && e.message) { msg = e.name + ": " + e.message; } dojo.raise("dojo.storage.browser.FileStorageProvider._loadFileXPCOM(): " + msg); } return null; }, _saveFileActiveX:function (filename, value) { try { var fileSystem = new ActiveXObject("Scripting.FileSystemObject"); var f = fileSystem.OpenTextFile(filename, 2, true); f.Write(value); f.Close(); } catch (e) { var msg = e.toString(); if (e.name && e.message) { msg = e.name + ": " + e.message; } dojo.raise("dojo.storage.browser.FileStorageProvider._saveFileActiveX(): " + msg); } }, _loadFileActiveX:function (filename) { try { var fileSystem = new ActiveXObject("Scripting.FileSystemObject"); if (fileSystem.FileExists(filename) == false) { return null; } var f = fileSystem.OpenTextFile(filename, 1); var results = f.ReadAll(); f.Close(); return results; } catch (e) { var msg = e.toString(); if (e.name && e.message) { msg = e.name + ": " + e.message; } dojo.raise("dojo.storage.browser.FileStorageProvider._loadFileActiveX(): " + msg); } }, _saveFileJava:function (filename, value) { try { var applet = dojo.byId(dojo.storage.browser.FileStorageProvider._APPLET_ID); applet.save(filename, value); } catch (e) { var msg = e.toString(); if (e.name && e.message) { msg = e.name + ": " + e.message; } dojo.raise("dojo.storage.browser.FileStorageProvider._saveFileJava(): " + msg); } }, _loadFileJava:function (filename) { try { var applet = dojo.byId(dojo.storage.browser.FileStorageProvider._APPLET_ID); var results = applet.load(filename); return results; } catch (e) { var msg = e.toString(); if (e.name && e.message) { msg = e.name + ": " + e.message; } dojo.raise("dojo.storage.browser.FileStorageProvider._loadFileJava(): " + msg); } }, _isAvailableActiveX:function () { try { if (window.ActiveXObject) { var fileSystem = new window.ActiveXObject("Scripting.FileSystemObject"); return true; } } catch (e) { dojo.debug(e); } return false; }, _isAvailableXPCOM:function () { try { if (window.Components) { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); return true; } } catch (e) { dojo.debug(e); } return false; }, _isAvailableJava:function () { try { if (dojo.render.html.safari == true || dojo.render.html.opera == true()) { if (navigator.javaEnabled() == true) { return true; } } } catch (e) { dojo.debug(e); } return false; }, _getPagePath:function () { var path = window.location.pathname; if (/\.html?$/i.test(path)) { path = path.replace(/(?:\/|\\)?[^\.\/\\]*\.html?$/, ""); } if (/^\/?[a-z]+\:/i.test(path)) { path = path.replace(/^\/?/, ""); path = path.replace(/\//g, "\\"); } else { if (/^[\/\\]{2,3}[^\/]/.test(path)) { path = path.replace(/^[\/\\]{2,3}/, ""); path = path.replace(/\//g, "\\"); path = "\\\\" + path; } } if (/\/$/.test(path) == false && /\\$/.test(path) == false) { if (/\//.test(path)) { path += "/"; } else { path += "\\"; } } path = unescape(path); return path; }, _removeXPCOM:function (filename) { try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); var f = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); f.initWithPath(filename); if (f.exists() == false || f.isDirectory()) { return; } if (f.isFile()) { f.remove(false); } } catch (e) { dojo.raise("dojo.storage.browser.FileStorageProvider.remove(): " + e.toString()); } }, _removeActiveX:function (filename) { try { var fileSystem = new ActiveXObject("Scripting.FileSystemObject"); fileSystem.DeleteFile(filename); } catch (e) { dojo.raise("dojo.storage.browser.FileStorageProvider.remove(): " + e.toString()); } }, _removeJava:function (filename) { try { var applet = dojo.byId(dojo.storage.browser.FileStorageProvider._APPLET_ID); applet.remove(filename); } catch (e) { var msg = e.toString(); if (e.name && e.message) { msg = e.name + ": " + e.message; } dojo.raise("dojo.storage.browser.FileStorageProvider._removeJava(): " + msg); } }, _writeApplet:function () { var archive = dojo.uri.moduleUri("dojo", "../DojoFileStorageProvider.jar").toString(); var tag = "<applet " + "id='" + dojo.storage.browser.FileStorageProvider._APPLET_ID + "' " + "style='position: absolute; top: -500px; left: -500px; width: 1px; height: 1px;' " + "code='DojoFileStorageProvider.class' " + "archive='" + archive + "' " + "width='1' " + "height='1' " + ">" + "</applet>"; document.writeln(tag); }}); dojo.storage.browser.WhatWGStorageProvider = function () { }; dojo.inherits(dojo.storage.browser.WhatWGStorageProvider, dojo.storage); dojo.lang.extend(dojo.storage.browser.WhatWGStorageProvider, {namespace:"default", initialized:false, _domain:null, _available:null, _statusHandler:null, initialize:function () { if (djConfig["disableWhatWGStorage"] == true) { return; } this._domain = location.hostname; this.initialized = true; dojo.storage.manager.loaded(); }, isAvailable:function () { try { var myStorage = globalStorage[location.hostname]; } catch (e) { this._available = false; return this._available; } this._available = true; return this._available; }, put:function (key, value, resultsHandler) { if (this.isValidKey(key) == false) { dojo.raise("Invalid key given: " + key); } this._statusHandler = resultsHandler; if (dojo.lang.isString(value)) { value = "string:" + value; } else { value = dojo.json.serialize(value); } window.addEventListener("storage", function (evt) { resultsHandler.call(null, dojo.storage.SUCCESS, key); }, false); try { var myStorage = globalStorage[this._domain]; myStorage.setItem(key, value); } catch (e) { this._statusHandler.call(null, dojo.storage.FAILED, key, e.toString()); } }, get:function (key) { if (this.isValidKey(key) == false) { dojo.raise("Invalid key given: " + key); } var myStorage = globalStorage[this._domain]; var results = myStorage.getItem(key); if (results == null) { return null; } results = results.value; if (!dojo.lang.isUndefined(results) && results != null && /^string:/.test(results)) { results = results.substring("string:".length); } else { results = dojo.json.evalJson(results); } return results; }, getKeys:function () { var myStorage = globalStorage[this._domain]; var keysArray = new Array(); for (i = 0; i < myStorage.length; i++) { keysArray[i] = myStorage.key(i); } return keysArray; }, clear:function () { var myStorage = globalStorage[this._domain]; var keys = new Array(); for (var i = 0; i < myStorage.length; i++) { keys[keys.length] = myStorage.key(i); } for (var i = 0; i < keys.length; i++) { myStorage.removeItem(keys[i]); } }, remove:function (key) { var myStorage = globalStorage[this._domain]; myStorage.removeItem(key); }, isPermanent:function () { return true; }, getMaximumSize:function () { return dojo.storage.SIZE_NO_LIMIT; }, hasSettingsUI:function () { return false; }, showSettingsUI:function () { dojo.raise(this.getType() + " does not support a storage settings user-interface"); }, hideSettingsUI:function () { dojo.raise(this.getType() + " does not support a storage settings user-interface"); }, getType:function () { return "dojo.storage.browser.WhatWGProvider"; }}); dojo.storage.browser.FlashStorageProvider = function () { }; dojo.inherits(dojo.storage.browser.FlashStorageProvider, dojo.storage); dojo.lang.extend(dojo.storage.browser.FlashStorageProvider, {namespace:"default", initialized:false, _available:null, _statusHandler:null, initialize:function () { if (djConfig["disableFlashStorage"] == true) { return; } var loadedListener = function () { dojo.storage._flashLoaded(); }; dojo.flash.addLoadedListener(loadedListener); var swfloc6 = dojo.uri.moduleUri("dojo", "../Storage_version6.swf").toString(); var swfloc8 = dojo.uri.moduleUri("dojo", "../Storage_version8.swf").toString(); dojo.flash.setSwf({flash6:swfloc6, flash8:swfloc8, visible:false}); }, isAvailable:function () { if (djConfig["disableFlashStorage"] == true) { this._available = false; } else { this._available = true; } return this._available; }, put:function (key, value, resultsHandler) { if (this.isValidKey(key) == false) { dojo.raise("Invalid key given: " + key); } this._statusHandler = resultsHandler; if (dojo.lang.isString(value)) { value = "string:" + value; } else { value = dojo.json.serialize(value); } dojo.flash.comm.put(key, value, this.namespace); }, get:function (key) { if (this.isValidKey(key) == false) { dojo.raise("Invalid key given: " + key); } var results = dojo.flash.comm.get(key, this.namespace); if (results == "") { return null; } if (!dojo.lang.isUndefined(results) && results != null && /^string:/.test(results)) { results = results.substring("string:".length); } else { results = dojo.json.evalJson(results); } return results; }, getKeys:function () { var results = dojo.flash.comm.getKeys(this.namespace); if (results == "") { return []; } return results.split(","); }, clear:function () { dojo.flash.comm.clear(this.namespace); }, remove:function (key) { dojo.unimplemented("dojo.storage.browser.FlashStorageProvider.remove"); }, isPermanent:function () { return true; }, getMaximumSize:function () { return dojo.storage.SIZE_NO_LIMIT; }, hasSettingsUI:function () { return true; }, showSettingsUI:function () { dojo.flash.comm.showSettings(); dojo.flash.obj.setVisible(true); dojo.flash.obj.center(); }, hideSettingsUI:function () { dojo.flash.obj.setVisible(false); if (dojo.storage.onHideSettingsUI != null && !dojo.lang.isUndefined(dojo.storage.onHideSettingsUI)) { dojo.storage.onHideSettingsUI.call(null); } }, getType:function () { return "dojo.storage.browser.FlashStorageProvider"; }, _flashLoaded:function () { this._initialized = true; dojo.storage.manager.loaded(); }, _onStatus:function (statusResult, key) { var ds = dojo.storage; var dfo = dojo.flash.obj; if (statusResult == ds.PENDING) { dfo.center(); dfo.setVisible(true); } else { dfo.setVisible(false); } if ((!dj_undef("_statusHandler", ds)) && (ds._statusHandler != null)) { ds._statusHandler.call(null, statusResult, key); } }}); dojo.storage.manager.register("dojo.storage.browser.FileStorageProvider", new dojo.storage.browser.FileStorageProvider()); dojo.storage.manager.register("dojo.storage.browser.WhatWGStorageProvider", new dojo.storage.browser.WhatWGStorageProvider()); dojo.storage.manager.register("dojo.storage.browser.FlashStorageProvider", new dojo.storage.browser.FlashStorageProvider()); dojo.storage.manager.initialize(); }});

__CPAN_FILE__ src/storage/storage_dialog.fla ࡱ>   Root Entryp|YrRASH !eContents {jPage 1Media 1BRoot Entryp|YrRASH:73dContents{jPage 1Media 1 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     !"#$%&'()*+,-./0123456789:;<=>?@A  !"#$%&'()*+,-./0123456789:CDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~8CDocumentPagePage 1Scene 18">DGDCSwfPageMedia 1Button W?ԱCButtonButtonmx.controls.ButtonC:\Documents and Settings\bradneuberg\Local Settings\Application Data\Macromedia\Flash MX 2004\en\Configuration\TMP3yjbts6p08..swf]oCWSx; l\q].)")RE,˺,ɇDYڕ!_O&iĉ#a";NUIѺp&ܴ5hѴH44{+(o޼y3f{o _W=#ZV { '"`^|"X{_n~lՋ)<?N=`^.ObG}s9ج떊R~8g`a:?~9N~rt?q.oyoׅkW?;WƁCqkC歂5RrJп -Ba- v ɥ^Frsp`E8rY\t !c9 H9t֛q&iUL{ť;G̏}s?4qϋgR&M4,M^(j3;97_}gֺʶd>1ߢe0Z0Z-OV6~oߒ,}`,#y+{!a 9\&FaC =waιy@rq*Ӽ/YPu+8h> 7+G]؀wऎUqvulfuv ywqI2wV(jvGd !џ:oe]xHV* )®ylZ0m:HY}b !kƱ/Zg*Eۚ;mV/@b5V( Kq2/: Řf8P(]ΖAch]p}2YB}g@nYǟb1yrqQj,[P*[!qzqm0{gOb9H gA4IG \ dfҔEiJ˚J.,v"TQ=cdCrtIxdv}k'o#2 Ɲ-qa2v[zxqg:ȷC_l l7;Ήže`<ZKi]#!?:a '4 -<yE!yEh[cP!D]$9{5bIM3C2t&"'oԖ:p r nZOЫw0 2_xϡ i jH,g@j 5tLS]qa\^6 }xD/‰4֛&4WBd1ҚbP >7`G٢#BG)tf(vֱ~Ԩ$;_-|MxϚ,ڄ'ץciAK>>и:;D0 =HTڍoԄe,n;;Gb=7*d) R4߇AGx\}$Yy^ )x@~rs﯑l4A^쐻$w"ױ(k]hXm1FcM(~g&ÊLKDp^n`Ṱ MT-eb0!WES4QWNV0a[E(2rVۣa0d"eVboGRaw^IT'㤓!<Z ܏YoCɉR ƪˎIQm5@奈۷us0=B7ǡ7(ߑNA$k]t#ɝO@ hA[cy]u$HӉHۈsv'v_G=iCPicPage CPicLayer CPicFrameCPicSwf % I}v closeButton iconiconFLs labelFinishedlabel Eb[cFE\GlabelPlacementleftrighttopbottomlabelPlacement啢TI^Dselectedfalseselected/?ZJ|gtogglefalsetogglegYD̜enabledtrueenabled!RG5S8bmOthervisibletruevisibleD*LcXTC$vOther minHeight0 minHeightPKu@&jSizeminWidth0minWidth! 7C2I l/Size<component metaDataFetched='true' schemaUrl='' schemaOperation='' sceneRootLabel='Scene 1' oldCopiedComponentPath='1'> <eventMap> <property name="selected" value="click" /> </eventMap> <property name="selected"> <schema name="Boolean" base="Boolean" class="mx.data.types.Bool" required="true" readonly="false" writeonly="false" category="simple" original="true"> <properties> <property name="defaultLabel" value="" /> <property name="defaultUIControl" value="" /> </properties> </schema> </property> </component> CPicText / X _sans(Press Finished when done_!l00_!0l?ZzV// know when the close button is pressed; this is needed as a workaround when // showing the storage configuration dialog, since there is no way we can // know when that panel's close button is pressed closeButton.onMouseDown = function(){ // some versions of Flash don't have access to containing parents // objects, like DojoExternalInterface; only Flash 8 seems to have access if(typeof DojoExternalInterface != "undefined"){ // flash 8 DojoExternalInterface.call("dojo.storage.hideSettingsUI", null); }else{ // flash 6 fscommand("call", "dojo.storage.hideSettingsUI"); } }; Layer 1OO", "dojo.storage.hideSettingsUI"); }; Layer 1OOrighttopbottomlabelPlacement啢TI^Dselected8CDocumentPagePage 1Scene 18">DGDCSwfPageMedia 1Button W?ԱCButtonButtonmx.controls.ButtonC:\Documents and Settings\bradneuberg\Local Settings\Application Data\Macromedia\Flash MX 2004\en\Configuration\TMP3yjbts6p08..swf]oCWSx; l\q].)")RE,˺,ɇDYڕ!_O&iĉ#a";NUIѺp&ܴ5hѴH44{+(o޼y3f{o _W=#ZV { '"`^|"X{_n~lՋ)<?N=`^.ObG}s9ج떊R~8g`a:?~9N~rt?q.oyoׅkW?;WƁCqkC歂5RrJп -Ba- v ɥ^Frsp`E8rY\t !c9 H9t֛q&iUL{ť;G̏}s?4qϋgR&M4,M^(j3;97_}gֺʶd>1ߢe0Z0Z-OV6~oߒ,}`,#y+{!a 9\&FaC =waιy@rq*Ӽ/YPu+8h> 7+G]؀wऎUqvulfuv ywqI2wV(jvGd !џ:oe]xHV* )®ylZ0m:HY}b !kƱ/Zg*Eۚ;mV/@b5V( Kq2/: Řf8P(]ΖAch]p}2YB}g@nYǟb1yrqQj,[P*[!qzqm0{gOb9H gA4IG \ dfҔEiJ˚J.,v"TQ=cdCrtIxdv}k'o#2 Ɲ-qa2v[zxqg:ȷC_l l7;Ήže`<ZKi]#!?:a '4 -<yE!yEh[cP!D]$9{5bIM3C2t&"'oԖ:p r nZOЫw0 2_xϡ i jH,g@j 5tLS]qa\^6 }xD/‰4֛&4WBd1ҚbP >7`G٢#BG)tf(vֱ~Ԩ$;_-|MxϚ,ڄ'ץciAK>>и:;D0 =HTڍoԄe,n;;Gb=7*d) R4߇AGx\}$Yy^ )x@~rs﯑l4A^쐻$w"ױ(k]hXm1FcM(~g&ÊLKDp^n`Ṱ MT-eb0!WES4QWNV0a[E(2rVۣa0d"eVboGRaw^IT'㤓!<Z ܏YoCɉR ƪˎIQm5@奈۷us0=B7ǡ7(ߑNA$k]t#ɝO@ hA[cy]u$HӉHۈsv'v_G=iZ|o4aIm>db)#2O$M,R0QH)\ҙ4>~ MaMXtVoK~[<@ߋߔhV`O,NFnasP|M:H5KbxN]O{1d 'kJlϓEY--:ԥC2)!HR0Q0^;4ZVn{Cqo&!9=9bt#Bn-dztb?ՠלT!SR9on#0@6,ևBڬ_fa!za&pQ12 f/k!jAK% S~H(1J38ʍ *c<n|^`8y8d'&ZwJȻe!_tLOOw̕]ѓ#xIe^+sQ+_zOD'Wz};>a;baZZP͛/fCIv±J2IFKF >oDv_Ìv1tކn^uV\E`:xUXcL0AM\huä](;-=R|ŏ5y썵z+*9 G `9/t=s}w?]~_:n1w%@ޞ;tG4 _;C} ۡ&6tu2+k?-V޾)\]E0(~j QBk_KSXS DʛpT&.WJ-M) 5(9JlUa=m6kQrK܉/ ū+w`Ԛ61JBVýRcl޵UT$ع44?2J".4Zl8+x7"h-ds{B/ݎw/T}G;h}[ xуp5~NZB4ٌm7Pw9u,B<ZO,i;#SJ);y:/egiqOtGF̲;[0kvǺ"芨5\E)ɯS6 "ski0R*KEzގsVRg٥khER+wߓˍAHM!)(~FOO+!qr[+H+c䥰"6 !h0$Bڮs26@@#@PHeۑP d @Z-F"_")#IQU:&j)p]EShw+QL2J33㣜rU4pS=KP`#H Q]pTh5joZz}1FP[Po=LƯ/S,2}dB]xK&sBY%q0@a.MtfMɜ1З; ;ydu&tԋ2zibo2\)%wlyf1U9d4c"(ǐx,+Eӱd&:ICNNZJ<3U8ׯR <iD,^;JqG q'N<_ 8b0hlq0];7} tu@Ӂ.vr}%;;qͿėx$:" nWidJr߹ зC Z_9<6xW,]g0q]z]3J(s X/j$](1d( ³gm`,zNk|y-ĝGЃne6ʶS+m&ޓɈrGW@kw`Rކe,S6+!S%F^2"ePWB=]uzV!sT<gW˦͏]$$I\P˯C!)hJ0U`R,~LEA(![GEx(RYP۸Y&p:Ψ] j4=ɋpLxZ=@? Ϻ% }&#P;~%$ZD)?Yk-'6yB6T$iCRkfc1U/-J9:X3TPa`eJK:jQYX2L\;zѴ Y*EJn̕?UV2edʂU۩b\<R GGQvV~0U]f*Ze4b Te4 $씍,n*Ꜷf.*)!6ʞ53(dSZ,^#f)blU3*E5~[XӘNϸYdKaY)Sg9zivE}fvC7;$jj"T*U!b _[)+7^O;6NC1(H8+Su3:QĸdjLӬʌUg(ݳso!D/1=R$_* TXVڢ[Zf.٦-p.#6.,m2=N!<x^gh:!rzG3Έ}Zeך}m}˼}x}e 7fS}|w+jmYmH!^j Scٿƛ&JA"JvW7,:"_u9oCH[qQ8F$rG@Ul/wK6љGQJAM<x]k #V6yZhQIlli/PٛdLI܎rxv<r4ᓻu'O2PSs. tbBv᧻=T0QNgeUmlhBCYooC$EKU.݌)k=|Z%T@KKԽOBXu{dj{֤wy@@&QwՍJȅ:U2uA-wy&|V3BcLu̅*| JOqx0'1}S#'CoxoZ'W0kOku(:8ۈsTme!>-[ y[WD٫6E^t1&U!Q7s$~~]F| 9HF%D8#: t4^gkM+#MhL*z>nca<(ʦ#USb4u-^\K:1`iw#cvRRM.kΈ"-17<4 XRuaPCؿKPP04' ԇN'#+p(Z[]F$5 E:-NL,mOwkERjQF 9ZA4 pMr9B@(. hnM[ȃ-C({iĒJ?jT}<}X _F''~4:6P^%Q(8F JAhzr)\T{M?XӤ?;mv̴[s[^@WۭSʧET1҄/,p+de{9THS:b7>)6@J*)sGG#J`~\pUܾ!Jp7Jx3>܌u5ݣ굢Auq{Ih:ׁ\1)9?U}S%H!>$WV5jchv%9͕:/&YP@ t9ɼRdS)#tޛ@u]~U¾ @NNw $@dIP (Ȳ%^X^fly88N39v%Lwr<>>8#̻[DuTۗᄏ^ ϱ zz|tUOIL% w|x"*7[` nۜ+>'M1G1O+ >o/Zp+gP<2͋fQb` ac|d4Of5o:o$Cd`n.FYZ6aSIzR BB:ԺkrjSEZuj7{I2A;nԺnq9SXSFeF: Nݛ1uouңPh?uS1>ε>h8?jSc1=~ {QvN?@(>>uap渙)Vs(zVЩN \A4ZV3 ƹ 5*hMքy&bئń_"Y/ J8&G֎q#c*'1q*2L$0Ġz3&BlxY^<`s'.!#]Y8UcG @u#xK O/芩W"1 N)e@3:d4#'F݈gۍYiN'H0BY,|V 7c7JmPWԧ^ԧڠM5\6'WWða_9U!yxIf@WKg`7'Q# =$C29LtV;%(wG26`&:%OXW!ĒSk_H|2a;r@2Kp|M+>hg`Ҹ:5M˙Mщ_pWqv7f1[{Pٿfo쭘͸17ڛF|\07㲛1[FD}2Z緔flhH 'D,JΖrjB,WrEqNA?(`Y 1kYTEfZ M/)DdJSH)<HS w p%L(j>t,VYlu|L89mi(jЅu+Tf,\D[[xom(\s CB=UQ;Juf/ na'&&JSESxϮFX"$8!Rb cmIvteiU imK&/0=H;iFUFJtHvТxAh_xcn*m$[%^p8oIx{jP#A1B;]K|w-]\6N[-mQ߆\r'4,K ,we-:dwuRwwiEZpѻ ǹNee<XVXVU{w}+_z{*7R C.PM}ջCUI`ˆx@0`l']8]8j-N'dM.d{<d[_)noI `A7$Qޮ4'$<Ĭ ;\d,(&M0MblI*b4!EΖQk-ʑ H3-נIDǘtǿ- LhrZ0hV6> 6a-0>dލRƟVkHj؎#ջWk売-wlBTI)F'f<Ԋ֯š'b34uM [XPy,MN<R,챉I 9ZQQ R!@LGEPN枝)v+HgKkn`4c0mNF@s&EޕYXQL8%RvkoZa/LN@1 .|K{x"B~Js`JgTCiyW2i>4vC}$^dTSYJJ8jtfgun1qPDf7+Q&%0hd`ꉮ':n)n0r0x4F5ѽ@rт&q5__-מNd=9pkJDjur]BV_F֊:[/~om,~[ome[}Co`{ veD; f=y+Dg()dlяxl-5?+:'q8GwBN޴yjޏY5[PS'~+UGPv=Z9հ\ ndRSuy}+U[#5Z%Uij]MVB:9(HC{hmRGsx١̓$*2fF^kiAqRKkhЇPWY-yL6)307먒#S:' "v;X_Q8(dŴJ"zȚpS3&r"4cP P)JUP o6UÊ B8m̰"إs3Eh '[7-ٶ`T@C7=4iɴSl~33sʆ4L% ըZ;m![\Z%YwspH T تC!)j!CLzⷀLܺ!5fBYBECtxLJG.bmRiiS%ht`?? VM e@ PQYu$}q)`8XRX֮*ޭJ%OdաV˾De/V(|ZVg)&4`DG ͍Wk*A)L7i|3nʳІLY7(tFeoTV#h~~<N'})z'ދ\F?1$ʢ')9[IR[U:dsRNb8aؑx;mA "Kt)濋a#@G-?=<mH5yWWff#˲%ƣ+gI1耒'Zr`p'fo*@EC Ħ fᙣڎ.x̾p$*G?2Tn8>'xIG#ٽ:J\~K֎6)Li26pycs[5Umi:p#]qֵn>lŁs3e@lLqR\BL L .dz8NYC04TE,"hAaaicGL3l0"ű&/">*^/;ݯ@{B^Vv:J #&S}1^b7;1遆'6m6X2E*1٩1*$hԊΊ՛)DX39on@kTxzٲ(uUP(gv]Ǡ1BcjX;[Y:O6B.Ie\ıV$!ؤ̸he/9W~*,͖ѻ>-NаeJoCFG?v]Z>>"cvހ[P~D/‹vnZ΄8eU[" Dөep-琡#c 19b媢ٔ .#D7UMx~{FPbGH4‡RiUE(YOUE;:ǩK:eFQT%F1X>'N;7:߰G7[7 w.zi ŽZR(ʧB7IzՐ/1Qɔ$4t%ϳAܼwwԢ!-45DJJ/' I^d,7[f*ٵsGWr!5H Y[ǒJնYR =}1 iE!O[pM:I~^@tʥ_skM]:~<oCX_aP՝o N'y@\]Q34UP\Ĺ7d 葽7v*X݋ZJ\WV'x{xc)z\ycWXg8<ܰGlՊNM8dUlQI,'nVꊣ=0Pns&+XXlXjJ-oOϐdzR1٥Jґ:<ԑφt 'X|5tTBixfJE7 ]봈x57 o"r +m帗=9^${7 $R_`/WDْ-+ ng׶rԮ=<Er@8CI { K qm:D|wd%μGDw2NД..]% Vg= 'HxISoDF֑~#ۆĽ897Ň(?,P(hu|3Poɫ$HX™_^=r߀Y|YVpeQ"@|+`c:[ $5L~yZ>}V}H9-O~0=(#g!S+2j^b5Δ-ؘ3攖SzĜң:)=fNM{Z^ws<,g̣ u<-}߼)C3ϧC-u|]<Xcob=;:̡x㪟 1 ~ v?%Bֆ^n*?j/Ʒ?ڿuմ?jPP=8toATLrK2E`;^ :bmyehžڹuyI9q7.bMC)y kY}:x,16>{X~egH*;ˎ;-jxm@Խr .b(9j5=iƙO 9lai|p-1>q*Fp//xw>^ظ'R@ N% ҁP{Q拾p6*f<"R'\_R^LUH3i~_ 8Q^6FgQM < &Ε/Yh _/x6yB>eVR42 o-^tpsky9!cJY5J>d媗<ۅBR0DRNΏ}4T\QX4_VKK(,h܎#S5\68l@ǹ|#y;|R#F0|GphC|C@@!** * }Q~I}YU+*U R:/qhiY=|C¡sA+zS=*r7<_Ѓ@Z8C94|CKbeDz"e"Keb<"-,-QPcñEޤi 疀i>u8/ +VXH;1pO3O ^>|<e<Dn369.=/Rg5.+,&GJH|:]_/"FWکWWר)u#?)o >?hT&]amʞ=ىS=ڰƃCtg쉒:]un4QI$$ob !\!)yʎ@PJV(^ВZ7%krCRZkE2!:P"pzbRfv-`H2HgKv)P(sBmhKCI{Z@v.(^jˡ8\0k^9Cd19( hA%GdN,?NkbQa/?(K/NLS`%Ĉha;32$F*z~9Űײd+y h1"Ww?CJ@ )oI7E66a#of('2/(Y/FTOڅ`,PN'_8'ZS'c )Po50;SAeI|hVW0٢B\|!]y/ ۍ,&ẶU]Xvٹg)!|4Rf9q9wq.!Ζqh%5`PWM%!.`h\0[ 琕sXotf$1R=fR߄ؾkV]QrۧO41BEǏ2EUpVszCDMH)DYِZL]b=Pr6q,@Za }y@}imѥ#>S5b;mYS>h\0"Y7!&܄MH C3VS'# Ю6;_шZ:=D4t+^6}lUDi`K]p# y:~#hU w C&7p׆f(+5I4kZj"Qa4f{(PuPM 0i"ׇddpfϯ3z4XtjqPU?\lVC&.$5U,3r$;c@5&yL=wu߄ ^/Yf2qkej'% SDNaa̩SI@d,99bX }L)m6WY&{.uy?oÂ.L)1_LE[קHTs=98 xp[?{@xP!ћ3ySo0'0< 6K̈Pk(^92kt*r\6QLW&xĴHJk0-I:&ԛt-Y+SLWԸiY͖xbl58#;gPd7xZ M$I݈`>9r UgMQD*D$kiM.-z*t] VU EWVK*4BUhJJ*4zk0CT23 R츥ߕXV{wgy` AnfeA96&>8o"{ȮZvE݅ \'D̦A+s z.AZ[˰eBz)j2yp[ Yjϱvs@{)B2(ㅩ"+CMOO^f 3}3fCA5/}nt޵KACy7<z,_M^O~Fɛ䋖Rptf,&.+HMJizgTݚh83I Ec"Ehk.ep@;lMHϡNƗK%VQ_4H&}b⧔Dz,0 R*hAHs<gP^ 4Wr+&.|' TEyEUkQL~ [;'I l]'B&dOU .).>] pc<c7S,%ς lAS&Lh}9<TƒѳvTo@ ` +UAejWZvG_-/ToN\q]<Xv?UT&O2HJSeG=Zq(U6-F94#Sٵb|iVLƠ Kg B ]CCI`(CJYjhR[(LL@8c2(iK @NCt&KWΈ5iM] _aRnc?=F f)>}8$9^}'U#k"Z*\*"XV`ۯ޸ؙZhR5naDgnKZ[cݗf`Ȣ* ZMTHg⭇devdؿBMMG;2Cl%[KY[d,2JCE5|?ͻ;|wU>yz.RR]5DJs{U&XN{ul`aVlDskols8R2[$C?x\-D]*T1^!I>[r]Ӥ-6$v TYOc1bGn7u-lbQU}$XN(m).iKl-T14skjIJrb>i;I ڗE43cr]aļ*xsMa(`Ф*-`2v`==x<o]l /Q=hhZ&j<y“ \6ԄE;-^.H+''8 QhW,].W."*5Slۨ?pջ-L|Fy)1.Ζ.{'mpTkLlÀJ+Ge< !jlZF\.\"I-+9RhKXw*Rؤȡ.'eE,_b$?ZOBB4>4sD6dY5;20B^űXP-H!36Aϐ%8H"#Tծ,x`!ylmQ8!;YEd6ڠ[ښdҌI&ёWi/KO9IebF]8>oyr)A [I3chnjef"GF>ã^uaC[dLqE+Adl(*Dtf@s lzRv055w`uy) cW[h R!t#C`l-"EFV&"ddl;dd씑]"KFv؆٣aeJCC%]i?  8@=DT#ҷAgCț*~|})#Glk '@s2tJir\H${evrIڽzQ5J z\!qN: ?`7dtWc<jP08ŕJA=׺~pP ɃhOi -ufLѝճ\,j9yuɹX}*=lU7L^K9iVIe$P Ph8ۄdX~>Y1a0PoGȀLP6A'<a?K".يLjl 7\oa5ĆryNx3']RlTϐ%ȂuTкM+|K 58됓/8'ni%={qH_h{/)%P~!֛4TT MPYOlri~#C s 젢(/֦)ʱRj<5<kEڿVY6,'XsesI%Kgx~눭pR#5%M 3Y=731zfbFuP.'j"QvB6)`QLxJ%qR5mt%J3˜*/ΔXQlnhuk%z o4=7^1 s|;.Li'KK'JW D.NOg lB94Lg봊BC^IΣY cb!KWxW0q6l0['3PkVOf#bxvC۵K'y(oʎ(|4͡D-}vb0WЍxI,X 1̙µҜ7=V,^-\c l zaO:wĨx"'͛0;3q<U.wĉ 4A>@=pfJb ?#s3J~T(_&n?aͷj 8oNɿT'QEj/5%؋A2gd"XѨM6#ٵ:%֠.,Lߑ/t(p͑yVrrw=̪!Ua"#kxX{º,>;66&#~ل*lЖ`+9C$]n'{Kh/+7~ۇ;9.smf_y >Fm7}_pت}dQs:(69^Rcٿ|dYd헼r>^PEF9nFNQs/N~/THNj'0RjyaJ޺ ݗ_mVULU;j,rg/YUֵ;o~I GB - ylzӀ0r0_F.k >Ix[ʼn(m<E- vFڅE$[#8 r0^pf{Y M}tS My5Ͽꥮy+^zKx/(LNV\dDkF,p[bX?!"`.-L$g=RLhd4Djl$z|@-6j"ʁ QO\US-0 fuyZ=jAf͌VP8OZX)!(1J4 ~kԟt˃rT?yNՀ[1 YɾV ls~6AleQXfeڙP?2 8e)^\g#?'3>{z|;6&ױӴt.Z-zgL .\]^Q1WgUQ3Y*Zkj9b>}v93$_,g܍ybRq}=ֺP61'Cyռq{j" ZNhm\e9{>u(^,>Yx>1Z`4b%[D^=>+ﲯI~>rNngGю6lv/v7t7@V&:U:3̇b=(R}z<[0a2dfXiR#I1p,>SD^,i7'DӮ[hB 3L>^oqzv\z3$Y6}7QZLJax!e4DkUCIC)cԼ&(Okk1ae+GgldJ2$*|{f'Q}UjMMu#Ѫ]6\yiTEjf ^\x0MɍׄLM:~5<ߦw ?ieQ\]mKHKBBKʠ#ٳ珎AT!`i5g.#$גy

R7(YlwAP/+*k/XyI=5@E)c@} E0{]k^ ':j@R>2Duȗ~}_È mu6/&b!{Sݲ{J90.(I(Fʒ_XEV7m(CBVLOUO4EIG{-UR TAZkňT #>.X(0RĜB->ldlN7Ӳ&gvo (abmFD}BIp[O+.695nu;,G׫E:!HQ=zumXT;I"aNgϢ:o2R}?+7 ߤef]<,*\|<RGo4ytXѹJ>:]6g\dR~]R8|ֻgcPƻ"я%ax<׺*M%OKSJN'KW<Hd<S'HY=N\C95v.˥SsS(@p,43Gaj9K]<KbR\rkO/ȵ!K,17BK az|ޖy #&C q3kt4YnAS-%A>-fޥ|IC)E݀i PohTTw~57p}_XOl9-%Q[2 0,frb䜟@K'Oʸ\'Ш ~Bqfr<2l m4/(xaXlo<x1&{.;8<qxY9|rEe I n&4 Kis>6{n0R1=m)a=dTRaF…ȟ)نO>5a|Λ%Lh)0V7jzKY'yF`kf3#uVZ%t]VX " 5ݘF/jPͶ- ,d$akXef *i`58\f\s|Oqr7[#A:lq)50}|>Ag)$*Wp:? ^M/`KLN S”8ZV[GuOs>v%g OB4wح_W}ɼ>@mjdwQ ֠ zὊ-b6@ {] doTz2j31.H11ƆMr5r)!'Wk\+'N[CGEs6,H:D+,=1uh3Ef{$5eщ+C[3松.C I*'}DP۬2j4D tp'B%*L' <G88u8aU'3]G}`sSf*n ml26e7e.)s)eUGA"|)a!l!njXsu n_de ۿ_3z2c)P=dvnlSZ⦿5 ÑznLMQY"e>lu):+ )hmRܓ30X~E8SOϋ?= 4}r55/ f!8mcgkmWO^Fi0SCԌ^בG]^lDN9'00hj}kkآ*yeR݅#閦Tw9'耉/yjl#>s rF!LnMvͧCG'ry MO,+M*֏q+/{UX'*1pJ=2f^G.OKD|10sڍ_ yƙzg4]#|(<exDZQ~ hOC<C|4XČx %ܚog_ՑNF6fK(KEOEft#:"g~c!hX+ܢ>Z}`YcİUdm"S6#ZZ(ZWԼ/2Բ*,W:ٹ8{ZN+ƌep:,x WŽ?5Z=2A֋`g*<V,9ef'K#ܵl,-Ek 9ytFɿ)P)>Sa"ٹef$zUV׮.TM+iւ{9'YpԳ7Q~4G2O5+V2Ѣj1_2r T:&es3Eacd/gU/hzV h6MS˥N/{%K`@; s`-ږzg ELAʪY땋qX!yMgV9"Cc3Yo=N/F0fcSyE Sb>B@6~0@8#FɴLΰPM{2|/bB8pMfaJ3mw}B<5nCg!|@55*G&'F.9&ᘁoaTo֌'f+ q7Q88cC)il0wŢCW+qп\ s4P {,BّWan{ఇ`"h $AF0ZȚ.x,BG֔BVr..daeDXkC T|&z4Kw]AE"8maS%e~Ƥ6 NH_Ol4p:Yl4w6A~P#܄&w҇LI7;ֺ%yMlY5޴Zrت~4J(ftЀWeFVo2%);EɄCH딛c9&.[mʍˬ s*H*['xSڎclailmR"֒`"XN N)ע=K6|d;Iv3hڝތmQ0xs`Ľ(YMNPw[34_pۜ6gا`4N;aVf;5=^5}4&_cq 0=LU4wn:vݫFzPcbTH[o!n3%]TsJ^j lƒuNB;!MtGdp@+UMOHeCx?[H،uY,$cʆcvr.^p"On:ީ;Fs3~DY1ߗSr6xU|9n,R%R,<~GN*= Y36U`*wgl'#ʧۘf*wyj=jgeҝEbWp D!hkd%_1"?ps?Hlx@ϮČW7Y*]jADs LX87k$NC4A`*߃YS;y2Y hDYed3QE%F%>l$09>@5#端9LyFd7&#Fkcu6?]Q BYrëBFsL'#y&ƼFqj~r0]г<⣦yA=PN ʏ$ҜDMzɑ<IlX/qF6GGEFn"!P^[9-ysE/VW`|.gwDO+h9H'/k/b*FN _Y#+ZKcqC4Kl4gNTZ͵Dm pza]XtAw.T݅E.41t4I+a6QLp4L+d2L 0V0Z'6 LFa2R&#a2a&fdDMxm"3ԑ́Q蠒l@o&"0JL   _>6ެ咺d蝡e0 ;@5ZqC^R~,cyÚ~^pvޔ/Rbp8G6^ͤ3 ;7Ǘq.?x!|A1,nCK~ ܪk3¡z7#r=_8~ZYQ*y$JPd_J }o萶EVC{YwUPg{TiI=z;=h2$1M^4_'<C ԏ߷q/xD$q'my%&⎤?\ jTԿ9=e~S79zgSƍ A,jcPZ'a!"`Þ5$UA>!s{b|i<RxL2 Ye`D 2p!Mp0:UJ%QRH,? :i[̅*(X'omdz:ޅP.߉*/._ϳΞrOTh8&O7+5'B~L:˰Tx񓰾b7N/IrxBr\4)PgmQiIk -LKƓtA;m*:z@'@s e8@yȚr%D<T.*mEFPꐺVҙs1}@gU903=PEjQbY>懴5o1`0Qw R%ZTbij$c@Bv?joW2w-uzC^!b̖Jd.o٤=kRX_l{F0I|( yńM>%^,ޏ%NVu~?#~C%`{&_$.żZj33kp IAty Пs䪈Ky~9NV 5?+QM6E^ĺ~$ȵ؆<0si{1Ұ/ІgQ٢"X>@vV3^5^{=$b^zdهa&ww& |)>(/pQ6B%B޴_Ŀ@%9JM>?Q%!zvAF "7ړTkiQ2؋n$4e2kӡ]ɐ(P8`y(CCQX&ʐZRHUd@tmx(jw#Wr{^ gAy{<)TdXl!jY:S&Xf'\ҔۄNeBMi#P~:}eЩ2h53 լt/br]2ʈ5D̤1Ҫ(S9pK\HAeD IdK`)fjdzΘVo|5A!Nrji*97Z.֠T +Lie^iw$nv:i9?[+|+Xg|ǖC% *xA;2?k@ɟ1sP/^>{qD5o`8W(+3aWԯY]l=z7hd]ԆRkFlDK(*w +uڷ[Q 0 ݣv-wKIcnB,oD:`cnsdOKgUItm'Ó@0=|&V•5ȥ~q/;qU^Eܻ=LHߔSFE#>ш2WC4MHHSS*R^+BD b7U\mEjɉk^$.0~ns:3FP\Y; j*>YIn#VIY}Y:1C$RlA3z}N*"_u3px#A-*ިNצh_F;-j|{#/)5G u4/J _4/|o2q6%ml/% tq)$*<vL;CX8 MFNBXC<ĀH&t9Rvރ`ϲ["܅dI޵TbP(m$i.cZ`uYm'H%dE[e}Buml56jŵ: ZkZm}J-D;nܾSŗ!M I @$ȵ]d;[Oz-M:ǼQ3e4qso1_c;ӗ+NQ`7r5St, ! VQ_gJ&^1+Fidb^rdF=}uK7:ʔ{[LAmo}›@e9مu&A.LjF±֧w0gF1RL u 7UG­$!̆^QxM\W^Qxm\uid=٩tޢÇ#9ڰ˃ۋWgv ] ih"hAԀjg8Qlؾ'xuKSNLqӼE|ܛLtqEEO\. ۺF }+1#94zb!Dfqؓ=_ǜ^ 0VW| v`ͼPþ u7[$W4v;N):6.ـ$xkI4Etl|Qߒ׽on- Rac+%Ke`lA1Es\^)5r.g銓W:XnuPz<u&I<821|vlPɜ0-Nw7QdCDQluhLqr7lT)e]cQl|9%i!B3&GSaC, i8$65CJcװ1*ʢ v1R&)Lat|H`ALL]> :û4/L̊Z1WRŅ*v2ՐňwE>tW&~& Lz=^ fcwP(jQx,[2s*"5PsU~ j/8,A֯/nR*F g܈I}1/&c*Qen,DEUwR@1w?6do_H-<FivQ?* 22dWۛHJSy\F+rA[Bf,jf HNeO IN MF,m(:!V#`|Fnc8a[_Np[Y* X͜V41ƕڍ:dvL.Ң2rŐbqԈuhQbIlFۄ-{k] s%Z*THwI`b%&k\^SIyj3aVkto?c7gKr>#e_ {F#d\=m?K ?R,y'^Ufs6luJo_:pmH.c)a@2ww2ʼn&v)CߤSLFaŃ }Ko}K@@4H N4@%DГ0R`j8JأJAV}84.MЌGk{@4Cf0}X3x!d}f3~m}ŊYQQ݇YQQ݇YQQ݇5^G>jA0vO_ʈz7o}Xo߇,>lJgs\++YȈ/w#-.]e}a7qи#T$kڡ,PPKs3!Ǵbd-m/,6FSj!Mx;} _$VGuv`en/ J#"W9,唑NZ^yFv7>AKhtoJIk ZE7H7ϥ\*o?QEi5IpC^sz\6d' Dx)Im8rpۙ0F.d ”7#ItFrThX9}gZ(V Lh<VjR0oGnA%L*qb{2 ,ζտ(-3B {(%fW3#e46V.Ba+y86 d[&7܇]) kJj"簦q<^-]yFNtUewalP Z^zþa̘p6d5ksn^ʫ]ۯ5LhhAQA^JiޭL M"~'I@y((+oqN͈QXөʬRCjHi/ Uel:[3XΧlR [PwC5Z`6lu0efG[,[I>jήlߦ#|#g;㷓 s"A7~{C%ϨOy'nx7n8O֠ul*ʺX{8 :{crqnE>B SD˳3sPPE1U^8A8Bq3 ro0Cv r|\[׊<Ѝ?hn;;;Kc厠K#}SDZ+c[D];hX$%ǽ?ns^ Z>|}=HFdl$tHIk㣭"YMY,wsi?2LS"MȎVqCVwVy(᝽}%4krN],EVB`*}{={z 1HՂbv˵ip*GGh|{ӕPC1cHƎ!1V;܇<9.Ia)$&M*TnoFu1݀N\W`n?wTZi џ\V[pRcZՊRgJSu+ ;q6D'?Owu0x7 低3t6ha;t~= ?ZwF]kη~Vy{ETwCT\ϋt_3?gNJww?J,9-ﭯsL/&ƒ"L0ݜ8ef3V CUyPb=4yIshSJRcK6Uqrbs4cy+Լ.`eNN$7đA[wg,+Na8S-ȓnfeh;iTiGCt0ΛI4"PgI1=,<Ksk0"LoX?) ts85ǭ.GaMIjZ+NbkcZͨBiab%'l:9&(&'"Ta~Fy`4y`i[ZP^LC-*VdosZ-аM[7ݷ*=QCAƁ0 SwfzHk Ln&QҭER3_| ^.aKF MSE,V9r'dMXyf|jV j,#Z+˪Ċ $+Znܖc<PzSYWʳ vՙͺڊN SպVYtu՘DZwƝ}6JO"XŻN],];u@~kԀZd(itX+~~xw%;knY/֡U b FDDYbo `FɌ&T/rLY=V|&.MpSl]R6m8Ml\!8]8|Z%qk` (J @>u/*V;ۿo?z'd}QX/Q:JV"ueu{{_^WzW^y%z4L1atSWg /MJޖ  Xb5'""7̲hl jؙ;b\5;RuecT2vbʋ{|]hOeFVjo }lWT{~@"10aN`ǽYRιU:}|g/7 Fv{ّ=^fd#/{sM12 >Z.yͭYXV*<JC[ 6q4V>1]} ﻬ&U;>?j[:酾WB(!I:Hpo } M];kGk^p48Եq%g}bփZoxuAL$_A.Gut odoE]nt@-! 0nGyqpA;[<6"tZEpp"% FRqӢH'ՋRVJ>l%Z(<OGj(퉋3|[ƹ5g몪1Qd'oai]y1Ъ+/'.P5dHȌfgJ&.OOIR cTZVLj)pEr]ex[ww͞b˳̃ieT6_Qdw >&'i ,d%&I̤tNǚ~^,'ĈW1c iconiconFLs labelButtonlabel Eb[cFE\GlabelPlacementleftrighttopbottomlabelPlacement啢TI^Dselectedfalseselected/?ZJ|gtogglefalsetogglegYD̜enabledtrueenabled!RG5S8bmOthervisibletruevisibleD*LcXTC$vOther minHeight0 minHeightPKu@&jSizeminWidth0minWidth! 7C2I l/Size)<?xml version="1.0" encoding ="utf-8"?> <componentPackage xmlns="http://www.macromedia.com/flash/swccatalog/7"> <component id="Button" class="mx.controls.Button" implementation="Button.swf" iconFile="Button.png" tooltip="Button" src="mx.controls.Button.asi" modified="1059073889"> <movieBounds xmin="0" xmax="2000" ymin="0" ymax="440" /> <include id="BoundingBox"/> <include id="SimpleButton"/> <include id="Border"/> <include id="RectBorder"/> <include id="ButtonSkin"/> <exportAfter id="__Packages.mx.controls.Button"/> <class id="mx.controls.Button" > <Event param1="click" /> <TagName param1="Button" /> <IconFile param1="Button.png" /> <property id="_inherited_selected" type="Boolean" > <Bindable /> <ChangeEvent param1="click" /> </property> <method id="icon" > <param id="linkage" /> <Inspectable defaultValue="" /> </method> <method id="label" > <param id="lbl" type="String" /> <Inspectable defaultValue="Button" /> </method> <method id="labelPlacement" > <param id="val" type="String" /> <Inspectable enumeration="left,right,top,bottom" defaultValue="right" /> </method> </class> <class id="mx.controls.SimpleButton" > <Event param1="click" /> <TagName param1="SimpleButton" /> <method id="selected" returnType="Boolean"> <Inspectable defaultValue="false" /> </method> <method id="toggle" returnType="Boolean"> <Inspectable defaultValue="false" /> </method> </class> <class id="mx.core.UIComponent" > <Event param1="focusIn" /> <Event param1="focusOut" /> <Event param1="keyDown" /> <Event param1="keyUp" /> <property id="enabled" type="Boolean" > <Inspectable defaultValue="true" verbose="1" category="Other" /> </property> </class> <class id="mx.core.UIObject" > <Event param1="resize" /> <Event param1="move" /> <Event param1="draw" /> <Event param1="load" /> <Event param1="unload" /> <method id="minHeight" returnType="Number"> <Inspectable defaultValue="0" verbose="1" category="Size" /> </method> <method id="minWidth" returnType="Number"> <Inspectable defaultValue="0" verbose="1" category="Size" /> </method> <method id="visible" returnType="Boolean"> <Inspectable defaultValue="true" verbose="1" category="Other" /> </method> </class> <asset id="BoundingBox" modified="1054593655"> </asset> <asset id="UIComponentExtensions" modified="1058814666"> <exportAfter id="__Packages.mx.core.ext.UIComponentExtensions"/> </asset> <asset id="FocusRect" modified="1055744819"> <include id="BoundingBox"/> <exportAfter id="__Packages.mx.skins.halo.FocusRect"/> </asset> <asset id="FocusManager" modified="1055744781"> <include id="FocusRect"/> <include id="UIObject"/> <exportAfter id="__Packages.mx.managers.FocusManager"/> </asset> <asset id="UIObjectExtensions" modified="1058814702"> <exportAfter id="__Packages.mx.core.ext.UIObjectExtensions"/> </asset> <asset id="Defaults" modified="1055737279"> <exportAfter id="__Packages.mx.skins.halo.Defaults"/> </asset> <asset id="UIObject" modified="1058814731"> <include id="Defaults"/> <include id="UIObjectExtensions"/> <exportAfter id="__Packages.mx.core.UIObject"/> </asset> <asset id="UIComponent" modified="1058814700"> <include id="UIObject"/> <include id="FocusManager"/> <include id="UIComponentExtensions"/> <exportAfter id="__Packages.mx.core.UIComponent"/> </asset> <asset id="SimpleButtonUp" modified="1062225026"> <include id="BrdrBlk"/> <include id="BrdrFace"/> <include id="BrdrShdw"/> <include id="BrdrHilght"/> <include id="BrdrFace"/> </asset> <asset id="BrdrHilght" modified="1052770908"> </asset> <asset id="BrdrBlk" modified="1052770913"> </asset> <asset id="SimpleButtonIn" modified="1062225020"> <include id="BrdrBlk"/> <include id="BrdrHilght"/> <include id="BrdrShdw"/> <include id="BrdrFace"/> </asset> <asset id="BrdrFace" modified="1051767541"> </asset> <asset id="BrdrShdw" modified="1058931521"> </asset> <asset id="SimpleButtonDown" modified="1062225019"> <include id="BrdrShdw"/> <include id="BrdrFace"/> </asset> <asset id="SimpleButton" modified="1055744781"> <include id="BoundingBox"/> <include id="SimpleButtonDown"/> <include id="SimpleButtonIn"/> <include id="SimpleButtonUp"/> <include id="UIComponent"/> <exportAfter id="__Packages.mx.controls.SimpleButton"/> </asset> <asset id="Border" modified="1062224872"> <include id="UIObject"/> <exportAfter id="__Packages.mx.skins.Border"/> </asset> <asset id="RectBorder" modified="1062224887"> <include id="Border"/> <exportAfter id="__Packages.mx.skins.halo.RectBorder"/> </asset> <asset id="ButtonSkin" modified="1062224893"> <exportAfter id="__Packages.mx.skins.halo.ButtonSkin"/> </asset> <asset id="__Packages.mx.skins.ColoredSkinElement" src="mx.skins.ColoredSkinElement.asi" modified="1062582563"> </asset> <asset id="__Packages.mx.core.UIObject" src="mx.core.UIObject.asi" modified="1062582563"> <include id="__Packages.mx.skins.SkinElement" /> <include id="__Packages.mx.styles.CSSStyleDeclaration" /> <include id="__Packages.mx.styles.StyleManager" /> </asset> <asset id="__Packages.mx.skins.SkinElement" src="mx.skins.SkinElement.asi" modified="1062582564"> </asset> <asset id="__Packages.mx.styles.CSSTextStyles" src="mx.styles.CSSTextStyles.asi" modified="1062582564"> </asset> <asset id="__Packages.mx.styles.CSSStyleDeclaration" src="mx.styles.CSSStyleDeclaration.asi" modified="1062582564"> <include id="__Packages.mx.styles.StyleManager" /> <exportAfter id="__Packages.mx.styles.CSSTextStyles" /> </asset> <asset id="__Packages.mx.styles.StyleManager" src="mx.styles.StyleManager.asi" modified="1062582564"> </asset> <asset id="__Packages.mx.core.UIComponent" src="mx.core.UIComponent.asi" modified="1062582563"> <exportAfter id="__Packages.mx.core.UIObject" /> </asset> <asset id="__Packages.mx.controls.SimpleButton" src="mx.controls.SimpleButton.asi" modified="1061503691"> <exportAfter id="__Packages.mx.core.UIComponent" /> </asset> <asset id="__Packages.mx.controls.Button" src="mx.controls.Button.asi" modified="1061503690"> <exportAfter id="__Packages.mx.controls.SimpleButton" /> <exportAfter id="__Packages.mx.core.UIObject" /> </asset> <asset id="__Packages.mx.events.EventDispatcher" src="mx.events.EventDispatcher.asi" modified="1062582563"> </asset> <asset id="__Packages.mx.events.UIEventDispatcher" src="mx.events.UIEventDispatcher.asi" modified="1062582563"> <exportAfter id="__Packages.mx.events.EventDispatcher" /> </asset> <asset id="__Packages.mx.core.ext.UIObjectExtensions" src="mx.core.ext.UIObjectExtensions.asi" modified="1062582563"> <include id="__Packages.mx.skins.ColoredSkinElement" /> <include id="__Packages.mx.styles.CSSStyleDeclaration" /> <exportAfter id="__Packages.mx.core.UIObject" /> <exportAfter id="__Packages.mx.skins.SkinElement" /> <exportAfter id="__Packages.mx.styles.CSSTextStyles" /> <exportAfter id="__Packages.mx.events.UIEventDispatcher" /> </asset> <asset id="__Packages.mx.skins.halo.Defaults" src="mx.skins.halo.Defaults.asi" modified="1062582564"> <include id="__Packages.mx.core.UIComponent" /> <exportAfter id="__Packages.mx.core.UIObject" /> <exportAfter id="__Packages.mx.styles.CSSStyleDeclaration" /> <exportAfter id="__Packages.mx.core.ext.UIObjectExtensions" /> </asset> <asset id="__Packages.mx.skins.halo.FocusRect" src="mx.skins.halo.FocusRect.asi" modified="1062582564"> <include id="__Packages.mx.managers.DepthManager" /> <exportAfter id="__Packages.mx.core.UIComponent" /> <exportAfter id="__Packages.mx.skins.SkinElement" /> <exportAfter id="__Packages.mx.skins.halo.Defaults" /> </asset> <asset id="__Packages.mx.managers.DepthManager" src="mx.managers.DepthManager.asi" modified="1062582563"> <include id="__Packages.mx.core.UIObject" /> </asset> <asset id="__Packages.mx.managers.FocusManager" src="mx.managers.FocusManager.asi" modified="1062726409"> <include id="__Packages.mx.controls.SimpleButton" /> <include id="__Packages.mx.managers.DepthManager" /> <include id="__Packages.mx.managers.SystemManager" /> <exportAfter id="__Packages.mx.core.UIComponent" /> <exportAfter id="__Packages.mx.core.ext.UIObjectExtensions" /> </asset> <asset id="__Packages.mx.managers.SystemManager" src="mx.managers.SystemManager.asi" modified="1062582563"> <include id="__Packages.mx.core.UIComponent" /> <include id="__Packages.mx.events.EventDispatcher" /> </asset> <asset id="__Packages.mx.managers.OverlappedWindows" src="mx.managers.OverlappedWindows.asi" modified="1062582563"> <include id="__Packages.mx.core.UIComponent" /> <exportAfter id="__Packages.mx.managers.SystemManager" /> </asset> <asset id="__Packages.mx.core.ext.UIComponentExtensions" src="mx.core.ext.UIComponentExtensions.asi" modified="1062582563"> <include id="__Packages.mx.styles.CSSSetStyle" /> <exportAfter id="__Packages.mx.core.UIComponent" /> <exportAfter id="__Packages.mx.managers.FocusManager" /> <exportAfter id="__Packages.mx.managers.OverlappedWindows" /> </asset> <asset id="__Packages.mx.styles.CSSSetStyle" src="mx.styles.CSSSetStyle.asi" modified="1062582564"> <include id="__Packages.mx.styles.StyleManager" /> <exportAfter id="__Packages.mx.styles.CSSStyleDeclaration" /> </asset> <asset id="__Packages.mx.skins.Border" src="mx.skins.Border.asi" modified="1062582563"> <exportAfter id="__Packages.mx.core.UIObject" /> </asset> <asset id="__Packages.mx.skins.RectBorder" src="mx.skins.RectBorder.asi" modified="1062582564"> <exportAfter id="__Packages.mx.skins.Border" /> </asset> <asset id="__Packages.mx.skins.halo.ButtonSkin" src="mx.skins.halo.ButtonSkin.asi" modified="1062582563"> <exportAfter id="__Packages.mx.core.ext.UIObjectExtensions" /> <exportAfter id="__Packages.mx.skins.RectBorder" /> </asset> <asset id="__Packages.mx.skins.halo.RectBorder" src="mx.skins.halo.RectBorder.asi" modified="1062582564"> <include id="__Packages.mx.styles.CSSStyleDeclaration" /> <exportAfter id="__Packages.mx.core.ext.UIObjectExtensions" /> <exportAfter id="__Packages.mx.skins.RectBorder" /> </asset> </component> </componentPackage> Media 1Bitmap 1 Button.pngԱCԱC2Hxi @!ENw'w* Qa}$K=EFs_ ,)CQjQYZquD܊SyK0z _Y?A7IsQ$ButtonButton Button.swf W?+BorderBorder Button.swfCP?UIObject Button.swf__Packages.mx.skins.Border Button.swf BoundingBox BoundingBox Button.swfw>BrdrBlkBrdrBlk Button.swfa>BrdrFaceBrdrFace Button.swf> BrdrHilght BrdrHilght Button.swf\>BrdrShdwBrdrShdw Button.swfA? ButtonSkin ButtonSkin Button.swfCP?#__Packages.mx.skins.halo.ButtonSkin Button.swfDefaultsDefaults Button.swfE>!__Packages.mx.skins.halo.Defaults Button.swf FocusManager FocusManager Button.swfc> FocusRect Button.swfUIObject Button.swf#__Packages.mx.managers.FocusManager Button.swf FocusRect FocusRect Button.swf3c> BoundingBox Button.swf"__Packages.mx.skins.halo.FocusRect Button.swf RectBorder RectBorder Button.swfCP?Border Button.swf#__Packages.mx.skins.halo.RectBorder Button.swf SimpleButton SimpleButton Button.swfc> BoundingBox Button.swfSimpleButtonDown Button.swfSimpleButtonIn Button.swfSimpleButtonUp Button.swf UIComponent Button.swf#__Packages.mx.controls.SimpleButton Button.swfSimpleButtonDownSimpleButtonDown Button.swf{DP?BrdrShdw Button.swfBrdrFace Button.swfSimpleButtonInSimpleButtonIn Button.swf|DP?BrdrBlk Button.swf BrdrHilght Button.swfBrdrShdw Button.swfBrdrFace Button.swfSimpleButtonUpSimpleButtonUp Button.swfDP?BrdrBlk Button.swfBrdrFace Button.swfBrdrShdw Button.swf BrdrHilght Button.swfBrdrFace Button.swf UIComponent UIComponent Button.swf:?UIObject Button.swf FocusManager Button.swfUIComponentExtensions Button.swf__Packages.mx.core.UIComponent Button.swfUIComponentExtensionsUIComponentExtensions Button.swf:?,__Packages.mx.core.ext.UIComponentExtensions Button.swfUIObjectUIObject Button.swf ;?Defaults Button.swfUIObjectExtensions Button.swf__Packages.mx.core.UIObject Button.swfUIObjectExtensionsUIObjectExtensions Button.swf:?)__Packages.mx.core.ext.UIObjectExtensions Button.swf__Packages.mx.controls.Button__Packages.mx.controls.Button Button.swfBE?#__Packages.mx.controls.SimpleButton Button.swf__Packages.mx.core.UIObject Button.swfmx.controls.Buttonq import mx.core.UIObject; import mx.controls.SimpleButton; import mx.core.UIComponent; [Event("click")] [TagName("Button")] [IconFile("Button.png")] intrinsic class mx.controls.Button extends mx.controls.SimpleButton { public function Button(); public var __get__icon:Function; public var __get__label:Function; public var __get__labelPlacement:Function; public var __label:String; public var __labelPlacement:String; public var _color; public function _getIcon(Void):String; public var _iconLinkageName:String; [Bindable] [ChangeEvent("click")] public var _inherited_selected:Boolean; public function _setIcon(linkage):Void; public var borderW:Number; public var btnOffset:Number; public function calcSize(tag:Number, ref:Object):Void; public var centerContent:Boolean; public var className:String; public var clipParameters:Object; public function createChildren(Void):Void; public function draw(); public var falseDisabledIcon:String; public var falseDisabledSkin:String; public var falseDownIcon:String; public var falseDownSkin:String; public var falseOverIcon:String; public var falseOverSkin:String; public var falseUpIcon:String; public var falseUpSkin:String; public function getBtnOffset(Void):Number; public function getLabel(Void):String; public function getLabelPlacement(Void):String; public var hitArea_mc:MovieClip; function get icon():String; [Inspectable(defaultValue="")] function set icon(linkage); public function init(Void):Void; public var initIcon; public function invalidateStyle(c:String):Void; [Inspectable(defaultValue="Button")] function set label(lbl:String); function get label():String; public var labelPath:Object; [Inspectable(enumeration="left,right,top,bottom"defaultValue="right")] function set labelPlacement(val:String); function get labelPlacement():String; static var mergedClipParameters:Boolean; public function onRelease(Void):Void; public function setColor(c:Number):Void; public function setEnabled(enable:Boolean):Void; public function setHitArea(w:Number, h:Number); public function setLabel(label:String):Void; public function setLabelPlacement(val:String):Void; public function setSkin(tag:Number, linkageName:String, initobj:Object):MovieClip; public function setView(offset:Number):Void; public function size(Void):Void; static var symbolName:String; static var symbolOwner; public var trueDisabledIcon:String; public var trueDisabledSkin:String; public var trueDownIcon:String; public var trueDownSkin:String; public var trueOverIcon:String; public var trueOverSkin:String; public var trueUpIcon:String; public var trueUpSkin:String; static var version:String; public function viewSkin(varName:String):Void; }; #__Packages.mx.controls.SimpleButton#__Packages.mx.controls.SimpleButton Button.swfBE?__Packages.mx.core.UIComponent Button.swfmx.controls.SimpleButtonimport mx.core.UIComponent; [Event("click")] [TagName("SimpleButton")] intrinsic class mx.controls.SimpleButton extends mx.core.UIComponent { public function SimpleButton(); public var __emphasized:Boolean; public var __emphatic:Boolean; public var __emphaticStyleName:String; public var __get__emphasized:Function; public var __get__selected:Function; public var __get__toggle:Function; public var __get__value:Function; public var __state:Boolean; public var __toggle:Boolean; public var autoRepeat:Boolean; public var boundingBox_mc:MovieClip; public var btnOffset:Number; public var buttonDownHandler:Function; public function calcSize(Void):Void; public function changeIcon(tag:Number, linkageName:String):Void; public function changeSkin(tag:Number, linkageName:String):Void; public var className:String; public var clickHandler:Function; public function createChildren(Void):Void; public var detail:Number; public var dfi; public var dfs; public var disabledIcon:Object; public var disabledSkin:Object; public var downIcon:Object; public var downSkin:Object; public function draw(Void):Void; public var dti; public var dts; function get emphasized():Boolean; function set emphasized(val:Boolean); static var emphasizedStyleDeclaration; static var falseDisabled:Number; public var falseDisabledIcon:String; public var falseDisabledIconEmphasized:String; public var falseDisabledSkin:String; public var falseDisabledSkinEmphasized:String; static var falseDown:Number; public var falseDownIcon:String; public var falseDownIconEmphasized:String; public var falseDownSkin:String; public var falseDownSkinEmphasized:String; static var falseOver:Number; public var falseOverIcon:String; public var falseOverIconEmphasized:String; public var falseOverSkin:String; public var falseOverSkinEmphasized:String; static var falseUp:Number; public var falseUpIcon:String; public var falseUpIconEmphasized:String; public var falseUpSkin:String; public var falseUpSkinEmphasized:String; public var fdi; public var fds; public var fri; public var frs; public var fui; public var fus; public function getLabel(Void):String; public function getSelected():Boolean; public function getState(Void):Boolean; public function getToggle(Void):Boolean; public var iconName:Object; public var idNames; public function init(Void):Void; public var initializing:Boolean; public var interval; public function keyDown(e:Object):Void; public function keyUp(e:Object):Void; public var linkLength:Number; public function onDragOut(Void):Void; public function onDragOver(Void):Void; public function onKillFocus(newFocus:Object):Void; public function onPress(Void):Void; public function onPressDelay(Void):Void; public function onPressRepeat(Void):Void; public function onRelease(Void):Void; public function onReleaseOutside(Void):Void; public function onRollOut(Void):Void; public function onRollOver(Void):Void; public var phase:String; public var preset:Boolean; public var refNames; public function refresh(Void):Void; public function removeIcons(); public var rolloverIcon:Object; public var rolloverSkin:Object; function set selected(val:Boolean); [Inspectable(defaultValue=false)] function get selected():Boolean; public function setEnabled(val:Boolean):Void; public function setIcon(tag:Number, linkageName:String):Object; public function setLabel(val:String):Void; public function setSelected(val:Boolean); public function setSkin(tag:Number, linkageName:String, initobj:Object):MovieClip; public function setState(state:Boolean):Void; public function setStateVar(state:Boolean):Void; public function setToggle(val:Boolean); public function setView(offset:Boolean):Void; public function showEmphasized(e:Boolean):Void; public function size(Void):Void; public var skinName:Object; public var stateNames; public var style3dInset:Number; static var symbolName:String; static var symbolOwner:Object; public var tagMap; public var tdi; public var tds; function set toggle(val:Boolean); [Inspectable(defaultValue=false)] function get toggle():Boolean; public var tri; public var trs; static var trueDisabled:Number; public var trueDisabledIcon:String; public var trueDisabledIconEmphasized:String; public var trueDisabledSkin:String; public var trueDisabledSkinEmphasized:String; static var trueDown:Number; public var trueDownIcon:String; public var trueDownIconEmphasized:String; public var trueDownSkin:String; public var trueDownSkinEmphasized:String; static var trueOver:Number; public var trueOverIcon:String; public var trueOverIconEmphasized:String; public var trueOverSkin:String; public var trueOverSkinEmphasized:String; static var trueUp:Number; public var trueUpIcon:String; public var trueUpIconEmphasized:String; public var trueUpSkin:String; public var trueUpSkinEmphasized:String; public var tui; public var tus; public var upIcon:Object; public var upSkin:Object; function set value(val:Boolean); function get value():Boolean; static var version:String; public function viewIcon(varName:String):Void; public function viewSkin(varName:String, initObj:Object):Void; }; __Packages.mx.core.UIComponent__Packages.mx.core.UIComponent Button.swf#U?__Packages.mx.core.UIObject Button.swfmx.core.UIComponentimport mx.core.UIObject; import mx.skins.SkinElement; [Event("focusIn")] [Event("focusOut")] [Event("keyDown")] [Event("keyUp")] intrinsic class mx.core.UIComponent extends mx.core.UIObject { public function UIComponent(); public var clipParameters:Object; public function dispatchValueChangedEvent(value):Void; public var drawFocus:Function; [Inspectable(defaultValue=true, verbose=1, category="Other")] public var enabled:Boolean; public function enabledChanged(id:String, oldValue:Boolean, newValue:Boolean):Boolean; public function findFocusFromObject(o:Object):Object; public function findFocusInChildren(o:Object):Object; public var focusEnabled:Boolean; public var focusManager:MovieClip; public var focusTextField:Object; public function getFocus():Object; public function getFocusManager():Object; public var groupName:String; function get height():Number; public function init():Void; public function isParent(o:Object):Boolean; static var kStretch:Number; static var mergedClipParameters:Boolean; public function onKillFocus(newFocus:Object):Void; public function onSetFocus(oldFocus:Object):Void; public var origBorderStyles:Object; public var origBorderValues:Object; public var popUp:Boolean; public function pressFocus():Void; public function releaseFocus():Void; public function setEnabled(enabled:Boolean):Void; public function setFocus():Void; public function setVisible(x:Boolean, noEvent:Boolean):Void; public function size():Void; static var symbolName:String; static var symbolOwner:Object; public var tabEnabled:Boolean; public var tabIndex:Number; static var version:String; function get width():Number; }; __Packages.mx.core.UIObject__Packages.mx.core.UIObject Button.swf#U?__Packages.mx.skins.SkinElement Button.swf(__Packages.mx.styles.CSSStyleDeclaration Button.swf!__Packages.mx.styles.StyleManager Button.swfmx.core.UIObjectimport mx.styles.StyleManager; import mx.styles.CSSStyleDeclaration; import mx.skins.SkinElement; [Event("resize")] [Event("move")] [Event("draw")] [Event("load")] [Event("unload")] intrinsic class mx.core.UIObject extends MovieClip { public function UIObject(); public function __getTextFormat(tf:TextFormat, bAll:Boolean):Boolean; public var __get__minHeight:Function; public var __get__minWidth:Function; public var __get__scaleX:Function; public var __get__scaleY:Function; public var __get__visible:Function; public var __height:Number; private var __onUnload:Function; public var __width:Number; public var _color; public function _createChildren(Void):Void; private var _endInit:Function; public function _getTextFormat(Void):TextFormat; private var _id:String; private var _maxHeight:Number; private var _maxWidth:Number; private var _minHeight:Number; private var _minWidth:Number; private var _preferredHeight:Number; private var _preferredWidth:Number; private var _tf:TextFormat; public var _topmost:Boolean; public var addEventListener:Function; function get bottom():Number; public var buildDepthTable:Function; public function cancelAllDoLaters(Void):Void; public var changeColorStyleInChildren:Function; public var changeTextStyleInChildren:Function; public var childrenCreated:Boolean; public var className:String; public var clipParameters:Object; public var color:Number; public function constructObject(Void):Void; public var createAccessibilityImplementation:Function; public var createChildAtDepth:Function; public function createChildren(Void):Void; public var createClassChildAtDepth:Function; public function createClassObject(className:Function, id:String, depth:Number, initobj:Object):mx.core.UIObject; public function createEmptyObject(id:String, depth:Number):mx.core.UIObject; public var createEvent:Function; public function createLabel(name:String, depth:Number, text):TextField; public function createObject(linkageName:String, id:String, depth:Number, initobj:Object):MovieClip; public function createSkin(tag:Number):mx.core.UIObject; public function destroyObject(id:String):Void; public var dispatchEvent:Function; public function doLater(obj:Object, fn:String):Void; public function doLaterDispatcher(Void):Void; public function draw(Void):Void; public function drawRect(x1:Number, y1:Number, x2:Number, y2:Number):Void; public var embedFonts:Boolean; public var findNextAvailableDepth:Function; public var fontFamily:String; public var fontSize:Number; public var fontStyle:String; public var fontWeight:String; public function getClassStyleDeclaration(Void):mx.styles.CSSStyleDeclaration; public function getMinHeight(Void):Number; public function getMinWidth(Void):Number; public function getSkinIDName(tag:Number):String; public function getStyle(styleProp:String); public function getStyleName(Void):String; public var handleEvent:Function; function get height():Number; public var idNames:Array; public var ignoreClassStyleDeclaration:Object; public function init(Void):Void; public function initFromClipParameters(Void):Void; public var initProperties:Function; public function invalidate(Void):Void; private var invalidateFlag:Boolean; public function invalidateStyle(Void):Void; function get left():Number; private var lineColor:Number; private var lineWidth:Number; public var marginLeft:Number; public var marginRight:Number; static function mergeClipParameters(o, p):Boolean; public var methodTable:Array; [Inspectable(defaultValue=0, verbose=1, category="Size")] function get minHeight():Number; function set minHeight(h:Number):Void; [Inspectable(defaultValue=0, verbose=1, category="Size")] function get minWidth():Number; function set minWidth(w:Number):Void; public function move(x:Number, y:Number, noEvent:Boolean):Void; public var notifyStyleChangeInChildren:Function; public function redraw(bAlways:Boolean):Void; public var removeEventListener:Function; function get right():Number; function get scaleX():Number; function set scaleX(x:Number):Void; function get scaleY():Number; function set scaleY(y:Number):Void; public function setColor(color:Number):Void; public function setMinHeight(h:Number):Void; public function setMinWidth(w:Number):Void; public function setSize(w:Number, h:Number, noEvent:Boolean):Void; public function setSkin(tag:Number, linkageName:String, initObj:Object):MovieClip; public var setStyle:Function; public function setVisible(x:Boolean, noEvent:Boolean):Void; public function size(Void):Void; public var styleName:String; public var stylecache:Object; static var symbolName:String; static var symbolOwner:Object; public var tabEnabled:Boolean; public var textAlign:String; static var textColorList; public var textDecoration:String; public var textIndent:Number; private var tfList:Object; function get top():Number; public var validateNow:Boolean; static var version:String; [Inspectable(defaultValue=true, verbose=1, category="Other")] function get visible():Boolean; function set visible(x:Boolean):Void; function get width():Number; function get x():Number; function get y():Number; }; ,__Packages.mx.core.ext.UIComponentExtensions,__Packages.mx.core.ext.UIComponentExtensions Button.swf#U? __Packages.mx.styles.CSSSetStyle Button.swf__Packages.mx.core.UIComponent Button.swf#__Packages.mx.managers.FocusManager Button.swf(__Packages.mx.managers.OverlappedWindows Button.swf!mx.core.ext.UIComponentExtensions:import mx.core.UIComponent; intrinsic class mx.core.ext.UIComponentExtensions { static function Extensions():Boolean; static var FocusManagerDependency; static var OverlappedWindowsDependency; static var UIComponentDependency; static var UIComponentExtended; static var bExtended; }; )__Packages.mx.core.ext.UIObjectExtensions)__Packages.mx.core.ext.UIObjectExtensions Button.swf#U?&__Packages.mx.skins.ColoredSkinElement Button.swf(__Packages.mx.styles.CSSStyleDeclaration Button.swf__Packages.mx.core.UIObject Button.swf__Packages.mx.skins.SkinElement Button.swf"__Packages.mx.styles.CSSTextStyles Button.swf&__Packages.mx.events.UIEventDispatcher Button.swfmx.core.ext.UIObjectExtensionsimport mx.core.UIObject; import mx.styles.CSSStyleDeclaration; import mx.skins.SkinElement; import mx.events.UIEventDispatcher; intrinsic class mx.core.ext.UIObjectExtensions { static var CSSTextStylesDependency; static function Extensions():Boolean; static var SkinElementDependency; static var UIEventDispatcherDependency; static var UIObjectDependency; static var UIObjectExtended; static function addGeometry(tf:Object, ui:Object):Void; static var bExtended; }; $__Packages.mx.events.EventDispatcher$__Packages.mx.events.EventDispatcher Button.swf#U?mx.events.EventDispatcher intrinsic class mx.events.EventDispatcher { static var _fEventDispatcher:mx.events.EventDispatcher; static function _removeEventListener(queue:Object, event:String, handler):Void; public function addEventListener(event:String, handler):Void; public function dispatchEvent(eventObj:Object):Void; public function dispatchQueue(queueObj:Object, eventObj:Object):Void; static function initialize(object:Object):Void; public function removeEventListener(event:String, handler):Void; }; &__Packages.mx.events.UIEventDispatcher&__Packages.mx.events.UIEventDispatcher Button.swf#U?$__Packages.mx.events.EventDispatcher Button.swfmx.events.UIEventDispatcherimport mx.core.UIObject; import mx.events.EventDispatcher; intrinsic class mx.events.UIEventDispatcher extends mx.events.EventDispatcher { public function __addEventListener(event:String, handler):Void; public var __origAddEventListener:Function; public var __sentLoadEvent; static var _fEventDispatcher:mx.events.UIEventDispatcher; static function addKeyEvents(obj:Object):Void; static function addLoadEvents(obj:Object):Void; public function dispatchEvent(eventObj:Object):Void; static function initialize(obj:Object):Void; static var keyEvents:Object; static var loadEvents:Object; static var lowLevelEvents:Object; public function onKeyDown(Void):Void; public function onKeyUp(Void):Void; public function onLoad(Void):Void; public function onUnload(Void):Void; public var owner:Object; public function removeEventListener(event:String, handler):Void; static function removeKeyEvents(obj:Object):Void; static function removeLoadEvents(obj:Object):Void; }; #__Packages.mx.managers.DepthManager#__Packages.mx.managers.DepthManager Button.swf#U?__Packages.mx.core.UIObject Button.swfmx.managers.DepthManageroimport mx.core.UIObject; intrinsic class mx.managers.DepthManager { public function DepthManager(); static var __depthManager:mx.managers.DepthManager; public var _childCounter:Number; public var _parent:MovieClip; public var _topmost:Boolean; public function buildDepthTable(Void):Array; public function createChildAtDepth(linkageName:String, depthFlag:Number, initObj:Object):MovieClip; public function createClassChildAtDepth(className:Function, depthFlag:Number, initObj:Object):mx.core.UIObject; public var createClassObject:Function; static function createClassObjectAtDepth(className:Object, depthSpace:Number, initObj:Object):mx.core.UIObject; public var createObject:Function; static function createObjectAtDepth(linkageName:String, depthSpace:Number, initObj:Object):MovieClip; public function findNextAvailableDepth(targetDepth:Number, depthTable:Array, direction:String):Number; public var getDepth:Function; public function getDepthByFlag(depthFlag:Number, depthTable:Array):Number; static var highestDepth:Number; static private var holder:MovieClip; static var kBottom:Number; static var kCursor:Number; static var kNotopmost:Number; static var kTooltip:Number; static var kTop:Number; static var kTopmost:Number; static var lowestDepth:Number; static var numberOfAuthortimeLayers:Number; static var reservedDepth:Number; public function setDepthAbove(targetInstance:MovieClip):Void; public function setDepthBelow(targetInstance:MovieClip):Void; public function setDepthTo(depthFlag:Number):Void; public function shuffleDepths(subject:MovieClip, targetDepth:Number, depthTable:Array, direction:String):Void; static function sortFunction(a:MovieClip, b:MovieClip):Number; public var swapDepths:Function; static function test(depth:Number):Boolean; }; #__Packages.mx.managers.FocusManager#__Packages.mx.managers.FocusManager Button.swf W?#__Packages.mx.controls.SimpleButton Button.swf#__Packages.mx.managers.DepthManager Button.swf$__Packages.mx.managers.SystemManager Button.swf__Packages.mx.core.UIComponent Button.swf)__Packages.mx.core.ext.UIObjectExtensions Button.swfmx.managers.FocusManager import mx.core.UIObject; import mx.managers.SystemManager; import mx.controls.SimpleButton; import mx.core.UIComponent; intrinsic class mx.managers.FocusManager extends mx.core.UIComponent { public function FocusManager(); static var UIObjectExtensionsDependency; public var __defaultPushButton:mx.controls.SimpleButton; public var __get__defaultPushButton:Function; private var _firstNode:Object; private var _firstObj:Object; private var _foundList:Object; private var _lastNode:Object; private var _lastObj:Object; private var _lastTarget:Object; private var _lastx:Object; private var _needPrev:Boolean; private var _nextIsNext:Boolean; private var _nextNode:Object; private var _nextObj:Object; public function _onMouseDown(Void):Void; private var _prevNode:Object; private var _prevObj:Object; private var _searchKey:Number; public function activate(Void):Void; private var activated:Boolean; public var bDrawFocus:Boolean; public var bNeedFocus:Boolean; public var className:String; public function deactivate(Void):Void; public var defPushButton:mx.controls.SimpleButton; function get defaultPushButton():mx.controls.SimpleButton; function set defaultPushButton(x:mx.controls.SimpleButton); public var defaultPushButtonEnabled:Boolean; static function enableFocusManagement():Void; public function enabledChanged(id:String, oldValue:Boolean, newValue:Boolean):Boolean; public var form; public function getActualFocus(o:Object):Object; public function getFocus(Void):Object; public function getFocusManagerFromObject(o:Object):Object; public function getMaxTabIndex(o:mx.core.UIComponent):Number; public function getMousedComponentFromChildren(x:Number, y:Number, o:Object):Object; public function getNextTabIndex(Void):Number; public function getSelectionFocus():Object; public function getTabCandidate(o:MovieClip, index:Number, groupName:String, dir:Boolean, firstChild:Boolean):Void; public function getTabCandidateFromChildren(o:MovieClip, index:Number, groupName:String, dir:Boolean, firstChild:Boolean):Void; public function handleEvent(e:Object); public function init(Void):Void; static var initialized:Boolean; public function isOurFocus(o:Object):Boolean; public var lastFocus:Object; public var lastSelFocus:Object; public var lastTabFocus:Object; public var lastXMouse:Number; public var lastYMouse:Number; public function mouseActivate(Void):Void; function get nextTabIndex():Number; public function onKeyDown(Void):Void; public function onMouseUp(Void):Void; public function onSetFocus(o:Object, n:Object):Void; public function onUnload(Void):Void; public function relocate(Void):Void; public function restoreFocus(Void):Void; public function sendDefaultPushButtonEvent(Void):Void; public function setFocus(o:Object):Void; static var symbolName:String; static var symbolOwner:Object; private var tabCapture:MovieClip; public function tabHandler(Void):Void; static var version:String; public function walkTree(p:MovieClip, index:Number, groupName:String, dir:Boolean, lookup:Boolean, firstChild:Boolean):Void; }; (__Packages.mx.managers.OverlappedWindows(__Packages.mx.managers.OverlappedWindows Button.swf#U?__Packages.mx.core.UIComponent Button.swf$__Packages.mx.managers.SystemManager Button.swfmx.managers.OverlappedWindows(import mx.managers.SystemManager; import mx.core.UIComponent; intrinsic class mx.managers.OverlappedWindows { static var SystemManagerDependency; static function __addEventListener(e:String, o:Object, l:Function):Void; static function __removeEventListener(e:String, o:Object, l:Function):Void; static function activate(f:MovieClip):Void; static function addFocusManager(f:mx.core.UIComponent):Void; static function checkIdle(Void):Void; static function deactivate(f:MovieClip):Void; static function enableOverlappedWindows():Void; static var initialized:Boolean; static function onMouseDown(Void):Void; static function onMouseMove(Void):Void; static function onMouseUp(Void):Void; static function removeFocusManager(f:mx.core.UIComponent):Void; }; $__Packages.mx.managers.SystemManager$__Packages.mx.managers.SystemManager Button.swf#U?__Packages.mx.core.UIComponent Button.swf$__Packages.mx.events.EventDispatcher Button.swfmx.managers.SystemManagerimport mx.events.EventDispatcher; import mx.core.UIComponent; [Event("idle")] [Event("resize")] intrinsic class mx.managers.SystemManager { static var __addEventListener:Function; static var __removeEventListener:Function; static var __screen:Object; static private var _initialized:Boolean; static var _xAddEventListener:Function; static var _xRemoveEventListener:Function; static var activate:Function; static var addEventListener:Function; static function addFocusManager(f:mx.core.UIComponent):Void; static var checkIdle:Function; static var deactivate:Function; static var dispatchEvent:Function; static var form:MovieClip; static var forms:Array; static var idleFrames:Number; static function init(Void):Void; static var interval:Number; static var isMouseDown; static function onMouseDown(Void):Void; static var onMouseMove:Function; static var onMouseUp:Function; static function onResize(Void):Void; static var removeEventListener:Function; static function removeFocusManager(f:mx.core.UIComponent):Void; static function get screen():Object; }; __Packages.mx.skins.Border__Packages.mx.skins.Border Button.swf#U?__Packages.mx.core.UIObject Button.swfmx.skins.Borderhimport mx.core.UIObject; intrinsic class mx.skins.Border extends mx.core.UIObject { public function Border(); public var borderStyle:String; public var className:String; public var idNames:Array; public function init(Void):Void; static var symbolName:String; static var symbolOwner:Object; public var tagBorder:Number; }; &__Packages.mx.skins.ColoredSkinElement&__Packages.mx.skins.ColoredSkinElement Button.swf#U?mx.skins.ColoredSkinElement intrinsic class mx.skins.ColoredSkinElement { public var _color; public function draw(Void):Void; public var getStyle:Function; public function invalidateStyle(Void):Void; static var mixins:mx.skins.ColoredSkinElement; public var onEnterFrame:Function; public function setColor(c:Number):Void; static function setColorStyle(p:Object, colorStyle:String):Void; }; __Packages.mx.skins.RectBorder__Packages.mx.skins.RectBorder Button.swf$U?__Packages.mx.skins.Border Button.swfmx.skins.RectBorderimport mx.skins.Border; import mx.styles.CSSStyleDeclaration; intrinsic class mx.skins.RectBorder extends mx.skins.Border { public function RectBorder(); public var __borderMetrics:Object; public var backgroundColorName:String; public var borderColorName:String; function get borderMetrics():Object; public var borderStyleName:String; public var buttonColorName:String; public var className:String; public function draw(Void):Void; public function drawBorder(Void):Void; public function getBorderMetrics(Void):Object; function get height():Number; public var highlightColorName:String; public function init(Void):Void; public var offset:Number; public function setColor(Void):Void; public var shadowColorName:String; public function size(Void):Void; static var symbolName:String; static var symbolOwner:Object; static var version:String; function get width():Number; }; __Packages.mx.skins.SkinElement__Packages.mx.skins.SkinElement Button.swf$U?mx.skins.SkinElement intrinsic class mx.skins.SkinElement extends MovieClip { public function __set__visible(visible:Boolean):Void; public var height:Number; public function move(x:Number, y:Number):Void; static function registerElement(name:String, className:Function):Void; public function setSize(w:Number, h:Number):Void; public var top:Number; public var visible:Boolean; public var width:Number; }; #__Packages.mx.skins.halo.ButtonSkin#__Packages.mx.skins.halo.ButtonSkin Button.swf#U?)__Packages.mx.core.ext.UIObjectExtensions Button.swf__Packages.mx.skins.RectBorder Button.swfmx.skins.halo.ButtonSkinimport mx.skins.RectBorder; import mx.core.ext.UIObjectExtensions; import mx.skins.SkinElement; intrinsic class mx.skins.halo.ButtonSkin extends mx.skins.RectBorder { public function ButtonSkin(); static var UIObjectExtensionsDependency; public var backgroundColorName; static function classConstruct():Boolean; static var classConstructed:Boolean; public var className; public function drawHaloRect(w:Number, h:Number):Void; public var drawRoundRect:Function; public function init():Void; public function size():Void; static var symbolName:String; static var symbolOwner:Object; }; !__Packages.mx.skins.halo.Defaults!__Packages.mx.skins.halo.Defaults Button.swf$U?__Packages.mx.core.UIComponent Button.swf__Packages.mx.core.UIObject Button.swf(__Packages.mx.styles.CSSStyleDeclaration Button.swf)__Packages.mx.core.ext.UIObjectExtensions Button.swfmx.skins.halo.Defaultsimport mx.core.UIObject; import mx.core.ext.UIObjectExtensions; import mx.styles.CSSStyleDeclaration; intrinsic class mx.skins.halo.Defaults { static var CSSStyleDeclarationDependency; static var UIObjectDependency; static var UIObjectExtensionsDependency; public var beginFill:Function; public var beginGradientFill:Function; static function classConstruct():Boolean; static var classConstructed; public var curveTo:Function; public function drawRoundRect(x, y, w, h, r, c, alpha, rot, gradient, ratios); public var endFill:Function; public var lineTo:Function; public var moveTo:Function; static function setThemeDefaults():Void; }; "__Packages.mx.skins.halo.FocusRect"__Packages.mx.skins.halo.FocusRect Button.swf$U?#__Packages.mx.managers.DepthManager Button.swf__Packages.mx.core.UIComponent Button.swf__Packages.mx.skins.SkinElement Button.swf!__Packages.mx.skins.halo.Defaults Button.swfmx.skins.halo.FocusRectimport mx.core.UIObject; import mx.skins.halo.Defaults; import mx.managers.DepthManager; import mx.skins.SkinElement; import mx.core.UIComponent; intrinsic class mx.skins.halo.FocusRect extends mx.skins.SkinElement { static var DefaultsDependency:mx.skins.halo.Defaults; public function FocusRect(); static var UIComponentDependency:mx.core.UIComponent; public var boundingBox_mc:MovieClip; static function classConstruct():Boolean; static var classConstructed:Boolean; public function draw(o:Object):Void; public var drawRoundRect:Function; public function handleEvent(e:Object):Void; public function setSize(w:Number, h:Number, r, a:Number, rectCol:Number):Void; }; #__Packages.mx.skins.halo.RectBorder#__Packages.mx.skins.halo.RectBorder Button.swf$U?(__Packages.mx.styles.CSSStyleDeclaration Button.swf)__Packages.mx.core.ext.UIObjectExtensions Button.swf__Packages.mx.skins.RectBorder Button.swfmx.skins.halo.RectBorderoimport mx.core.ext.UIObjectExtensions; import mx.skins.Border; import mx.styles.CSSStyleDeclaration; intrinsic class mx.skins.halo.RectBorder extends mx.skins.RectBorder { public function RectBorder(); static var UIObjectExtensionsDependency; public var borderCapColorName:String; private var borderWidths:Object; static function classConstruct():Boolean; static var classConstructed:Boolean; private var colorList:Object; public function draw3dBorder(c1:Number, c2:Number, c3:Number, c4:Number, c5:Number, c6:Number):Void; public function drawBorder(Void):Void; public var drawRoundRect:Function; public function getBorderMetrics(Void):Object; public function init(Void):Void; public var shadowCapColorName:String; static var symbolName:String; static var symbolOwner:Object; static var version:String; }; __Packages.mx.styles.CSSSetStyle __Packages.mx.styles.CSSSetStyle Button.swf$U?!__Packages.mx.styles.StyleManager Button.swf(__Packages.mx.styles.CSSStyleDeclaration Button.swfmx.styles.CSSSetStylebimport mx.styles.StyleManager; import mx.styles.CSSStyleDeclaration; intrinsic class mx.styles.CSSSetStyle { static var CSSStyleDeclarationDependency; public var _color:Number; public function _setStyle(styleProp:String, newValue):Void; public function changeColorStyleInChildren(sheetName:String, colorStyle:String, newValue):Void; public function changeTextStyleInChildren(styleProp:String):Void; static function classConstruct():Boolean; static var classConstructed:Boolean; static function enableRunTimeCSS():Void; public var invalidateStyle:Function; public function notifyStyleChangeInChildren(sheetName:String, styleProp:String, newValue):Void; public var setColor:Function; public function setStyle(styleProp:String, newValue):Void; public var styleName:String; public var stylecache:Object; }; (__Packages.mx.styles.CSSStyleDeclaration(__Packages.mx.styles.CSSStyleDeclaration Button.swf$U?!__Packages.mx.styles.StyleManager Button.swf"__Packages.mx.styles.CSSTextStyles Button.swfmx.styles.CSSStyleDeclaration%import mx.styles.StyleManager; import mx.styles.CSSTextStyles; intrinsic class mx.styles.CSSStyleDeclaration { static var CSSTextStylesDependency; public function __getTextFormat(tf:TextFormat, bAll:Boolean):Boolean; public var _tf:TextFormat; static function classConstruct():Boolean; static var classConstructed:Boolean; public var color:Number; public var embedFonts:Boolean; public var fontFamily:String; public var fontSize:Number; public var fontStyle:String; public var fontWeight:String; public function getStyle(styleProp:String); public var marginLeft:Number; public var marginRight:Number; public var styleName:String; public var textAlign:String; public var textDecoration:String; public var textIndent:Number; }; "__Packages.mx.styles.CSSTextStyles"__Packages.mx.styles.CSSTextStyles Button.swf$U?mx.styles.CSSTextStylest intrinsic class mx.styles.CSSTextStyles { static function addTextStyles(o:Object, bColor:Boolean):Void; }; !__Packages.mx.styles.StyleManager!__Packages.mx.styles.StyleManager Button.swf$U?mx.styles.StyleManager intrinsic class mx.styles.StyleManager { static var TextFormatStyleProps:Object; static var TextStyleMap:Object; static var colorNames:Object; static var colorStyles:Object; static function getColorName(colorName:String):Number; static var inheritingStyles:Object; static function isColorName(colorName:String):Boolean; static function isColorStyle(styleName:String):Boolean; static function isInheritingStyle(styleName:String):Boolean; static function registerColorName(colorName:String, colorValue:Number):Void; static function registerColorStyle(styleName:String):Void; static function registerInheritingStyle(styleName:String):Void; };  BoundingBox Button.swf SimpleButton Button.swfBorder Button.swf RectBorder Button.swf ButtonSkin Button.swf__Packages.mx.controls.Button Button.swfmx.controls.Buttonq import mx.core.UIObject; import mx.controls.SimpleButton; import mx.core.UIComponent; [Event("click")] [TagName("Button")] [IconFile("Button.png")] intrinsic class mx.controls.Button extends mx.controls.SimpleButton { public function Button(); public var __get__icon:Function; public var __get__label:Function; public var __get__labelPlacement:Function; public var __label:String; public var __labelPlacement:String; public var _color; public function _getIcon(Void):String; public var _iconLinkageName:String; [Bindable] [ChangeEvent("click")] public var _inherited_selected:Boolean; public function _setIcon(linkage):Void; public var borderW:Number; public var btnOffset:Number; public function calcSize(tag:Number, ref:Object):Void; public var centerContent:Boolean; public var className:String; public var clipParameters:Object; public function createChildren(Void):Void; public function draw(); public var falseDisabledIcon:String; public var falseDisabledSkin:String; public var falseDownIcon:String; public var falseDownSkin:String; public var falseOverIcon:String; public var falseOverSkin:String; public var falseUpIcon:String; public var falseUpSkin:String; public function getBtnOffset(Void):Number; public function getLabel(Void):String; public function getLabelPlacement(Void):String; public var hitArea_mc:MovieClip; function get icon():String; [Inspectable(defaultValue="")] function set icon(linkage); public function init(Void):Void; public var initIcon; public function invalidateStyle(c:String):Void; [Inspectable(defaultValue="Button")] function set label(lbl:String); function get label():String; public var labelPath:Object; [Inspectable(enumeration="left,right,top,bottom"defaultValue="right")] function set labelPlacement(val:String); function get labelPlacement():String; static var mergedClipParameters:Boolean; public function onRelease(Void):Void; public function setColor(c:Number):Void; public function setEnabled(enable:Boolean):Void; public function setHitArea(w:Number, h:Number); public function setLabel(label:String):Void; public function setLabelPlacement(val:String):Void; public function setSkin(tag:Number, linkageName:String, initobj:Object):MovieClip; public function setView(offset:Number):Void; public function size(Void):Void; static var symbolName:String; static var symbolOwner; public var trueDisabledIcon:String; public var trueDisabledSkin:String; public var trueDownIcon:String; public var trueDownSkin:String; public var trueOverIcon:String; public var trueOverSkin:String; public var trueUpIcon:String; public var trueUpSkin:String; static var version:String; public function viewSkin(varName:String):Void; };  hhhhh PropSheet::ActiveTab7641!PublishGifProperties::PaletteName PublishRNWKProperties::speed256K0"PublishHtmlProperties::StartPaused0%PublishFormatProperties::htmlFileNamestorage_dialog.html PublishQTProperties::LayerOption PublishQTProperties::AlphaOption"PublishQTProperties::MatchMovieDim1Vector::Debugging Permitted0PublishProfileProperties::nameDefaultPublishHtmlProperties::Loop1PublishFormatProperties::jpeg0PublishQTProperties::Width215$PublishPNGProperties::OptimizeColors1&PublishRNWKProperties::speedSingleISDN0&PublishRNWKProperties::singleRateAudio0Vector::External Player%PublishHtmlProperties::showTagWarnMsg1PublishHtmlProperties::Units04PublishHtmlProperties::UsingDefaultAlternateFilename1PublishGifProperties::Smooth1%PublishRNWKProperties::mediaCopyright(c) 2000#PublishRNWKProperties::flashBitRate1200Vector::Compress Movie1Vector::Package Paths&PublishFormatProperties::flashFileName..\..\storage_dialog.swf'PublishFormatProperties::gifDefaultName1%PublishFormatProperties::projectorMac0"PublishGifProperties::DitherOption!PublishRNWKProperties::exportSMIL1 PublishRNWKProperties::speed384K0"PublishRNWKProperties::exportAudio1Vector::FireFox0PublishHtmlProperties::Quality4(PublishHtmlProperties::VerticalAlignment1$PublishFormatProperties::pngFileNamestorage_dialog.pngPublishFormatProperties::html0"PublishPNGProperties::FilterOption'PublishRNWKProperties::mediaDescriptionVector::Override Sounds0!PublishHtmlProperties::DeviceFont0-PublishFormatProperties::generatorDefaultName1PublishQTProperties::Flatten1PublishPNGProperties::BitDepth24-bit with AlphaPublishPNGProperties::Smooth1"PublishGifProperties::DitherSolids0PublishGifProperties::Interlace0PublishJpegProperties::DPI4718592Vector::Quality80Vector::Protect0"PublishHtmlProperties::DisplayMenu1*PublishHtmlProperties::HorizontalAlignment12PublishHtmlProperties::VersionDetectionIfAvailable0Vector::Template0*PublishFormatProperties::generatorFileNamestorage_dialog.swt(PublishFormatProperties::rnwkDefaultName1(PublishFormatProperties::jpegDefaultName1PublishFormatProperties::gif0PublishGifProperties::Loop1PublishGifProperties::Width215$PublishRNWKProperties::mediaKeywords!PublishRNWKProperties::mediaTitlePublishRNWKProperties::speed28K1#PublishFormatProperties::qtFileNamestorage_dialog.mov"PublishPNGProperties::DitherOption#PublishGifProperties::PaletteOption#PublishGifProperties::MatchMovieDim1$PublishRNWKProperties::speedDualISDN0$PublishRNWKProperties::realVideoRate100000PublishJpegProperties::Quality80PublishFormatProperties::flash1#PublishPNGProperties::PaletteOption#PublishPNGProperties::MatchMovieDim1$PublishJpegProperties::MatchMovieDim1Vector::Package Export Frame1!PublishProfileProperties::version1PublishHtmlProperties::Align0-PublishFormatProperties::projectorWinFileNamestorage_dialog.exe'PublishFormatProperties::pngDefaultName10PublishFormatProperties::projectorMacDefaultName1#PublishQTProperties::PlayEveryFrame0"PublishPNGProperties::DitherSolids0"PublishJpegProperties::Progressive0Vector::Debugging PasswordVector::Omit Trace Actions0PublishHtmlProperties::Height138PublishHtmlProperties::Width215%PublishFormatProperties::jpegFileNamestorage_dialog.jpg)PublishFormatProperties::flashDefaultName0PublishPNGProperties::Interlace0PublishGifProperties::Height138PublishJpegProperties::Size0Vector::DeviceSound0Vector::TopDown0'PublishHtmlProperties::TemplateFileNameC:\Documents and Settings\bradneuberg\Local Settings\Application Data\Macromedia\Flash MX 2004\en\Configuration\Html\Default.html!PublishHtmlProperties::WindowMode02PublishHtmlProperties::UsingDefaultContentFilename1-PublishFormatProperties::projectorMacFileNamestorage_dialog.hqx(PublishFormatProperties::htmlDefaultName1PublishFormatProperties::rnwk0PublishFormatProperties::png0PublishQTProperties::Height138%PublishPNGProperties::RemoveGradients0PublishGifProperties::MaxColors255'PublishGifProperties::TransparentOptionPublishGifProperties::LoopCountPublishRNWKProperties::speed56K1Vector::Report0+PublishHtmlProperties::OwnAlternateFilename(PublishHtmlProperties::AlternateFilename&PublishHtmlProperties::ContentFilename"PublishFormatProperties::generator0$PublishGifProperties::OptimizeColors1"PublishRNWKProperties::audioFormat0Vector::Version7Vector::Event Format0Vector::Stream Compress7PublishFormatProperties::qt0PublishPNGProperties::Height138PublishPNGProperties::Width215%PublishGifProperties::Z|o4aIm>db)#2O$M,R0QH)\ҙ4>~ MaMXtVoK~[<@ߋߔhV`O,NFnasP|M:H5KbxN]O{1d 'kJlϓEY--:ԥC2)!HR0Q0^;4ZVn{Cqo&!9=9bt#Bn-dztb?ՠלT!SR9on#0@6,ևBڬ_fa!za&pQ12 f/k!jAK% S~H(1J38ʍ *c<n|^`8y8d'&ZwJȻe!_tLOOw̕]ѓ#xIe^+sQ+_zOD'Wz};>a;baZZP͛/fCIv±J2IFKF >oDv_Ìv1tކn^uV\E`:xUXcL0AM\huä](;-=R|ŏ5y썵z+*9 G `9/t=s}w?]~_:n1w%@ޞ;tG4 _;C} ۡ&6tu2+k?-V޾)\]E0(~j QBk_KSXS DʛpT&.WJ-M) 5(9JlUa=m6kQrK܉/ ū+w`Ԛ61JBVýRcl޵UT$ع44?2J".4Zl8+x7"h-ds{B/ݎw/T}G;h}[ xуp5~NZB4ٌm7Pw9u,B<ZO,i;#SJ);y:/egiqOtGF̲;[0kvǺ"芨5\E)ɯS6 "ski0R*KEzގsVRg٥khER+wߓˍAHM!)(~FOO+!qr[+H+c䥰"6 !h0$Bڮs26@@#@PHeۑP d @Z-F"_")#IQU:&j)p]EShw+QL2J33㣜rU4pS=KP`#H Q]pTh5joZz}1FP[Po=LƯ/S,2}dB]xK&sBY%q0@a.MtfMɜ1З; ;ydu&tԋ2zibo2\)%wlyf1U9d4c"(ǐx,+Eӱd&:ICNNZJ<3U8ׯR <iD,^;JqG q'N<_ 8b0hlq0];7} tu@Ӂ.vr}%;;qͿėx$:" nWidJr߹ зC Z_9<6xW,]g0q]z]3J(s X/j$](1d( ³gm`,zNk|y-ĝGЃne6ʶS+m&ޓɈrGW@kw`Rކe,S6+!S%F^2"ePWB=]uzV!sT<gW˦͏]$$I\P˯C!)hJ0U`R,~LEA(![GEx(RYP۸Y&p:Ψ] j4=ɋpLxZ=@? Ϻ% }&#P;~%$ZD)?Yk-'6yB6T$iCRkfc1U/-J9:X3TPa`eJK:jQYX2L\;zѴ Y*EJn̕?UV2edʂU۩b\<R GGQvV~0U]f*Ze4b Te4 $씍,n*Ꜷf.*)!6ʞ53(dSZ,^#f)blU3*E5~[XӘNϸYdKaY)Sg9zivE}fvC7;$jj"T*U!b _[)+7^O;6NC1(H8+Su3:QĸdjLӬʌUg(ݳso!D/1=R$_* TXVڢ[Zf.٦-p.#6.,m2=N!<x^gh:!rzG3Έ}Zeך}m}˼}x}e 7fS}|w+jmYmH!^j Scٿƛ&JA"JvW7,:"_u9oCH[qQ8F$rG@Ul/wK6љGQJAM<x]k #V6yZhQIlli/PٛdLI܎rxv<r4ᓻu'O2PSs. tbBv᧻=T0QNgeUmlhBCYooC$EKU.݌)k=|Z%T@KKԽOBXu{dj{֤wy@@&QwՍJȅ:U2uA-wy&|V3BcLu̅*| JOqx0'1}S#'CoxoZ'W0kOku(:8ۈsTme!>-[ y[WD٫6E^t1&U!Q7s$~~]F| 9HF%D8#: t4^gkM+#MhL*z>nca<(ʦ#USb4u-^\K:1`iw#cvRRM.kΈ"-17<4 XRuaPCؿKPP04' ԇN'#+p(Z[]F$5 E:-NL,mOwkERjQF 9ZA4 pMr9B@(. hnM[ȃ-C({iĒJ?jT}<}X _F''~4:6P^%Q(8F JAhzr)\T{M?XӤ?;mv̴[s[^@WۭSʧET1҄/,p+de{9THS:b7>)6@J*)sGG#J`~\pUܾ!Jp7Jx3>܌u5ݣ굢Auq{Ih:ׁ\1)9?U}S%H!>$WV5jchv%9͕:/&YP@ t9ɼRdS)#tޛ@u]~U¾ @NNw $@dIP (Ȳ%^X^fly88N39v%Lwr<>>8#̻[DuTۗᄏ^ ϱ zz|tUOIL% w|x"*7[` nۜ+>'M1G1O+ >o/Zp+gP<2͋fQb` ac|d4Of5o:o$Cd`n.FYZ6aSIzR BB:ԺkrjSEZuj7{I2A;nԺnq9SXSFeF: Nݛ1uouңPh?uS1>ε>h8?jSc1=~ {QvN?@(>>uap渙)Vs(zVЩN \A4ZV3 ƹ 5*hMքy&bئń_"Y/ J8&G֎q#c*'1q*2L$0Ġz3&BlxY^<`s'.!#]Y8UcG @u#xK O/芩W"1 N)e@3:d4#'F݈gۍYiN'H0BY,|V 7c7JmPWԧ^ԧڠM5\6'WWða_9U!yxIf@WKg`7'Q# =$C29LtV;%(wG26`&:%OXW!ĒSk_H|2a;r@2Kp|M+>hg`Ҹ:5M˙Mщ_pWqv7f1[{Pٿfo쭘͸17ڛF|\07㲛1[FD}2Z緔flhH 'D,JΖrjB,WrEqNA?(`Y 1kYTEfZ M/)DdJSH)<HS w p%L(j>t,VYlu|L89mi(jЅu+Tf,\D[[xom(\s CB=UQ;Juf/ na'&&JSESxϮFX"$8!Rb cmIvteiU imK&/0=H;iFUFJtHvТxAh_xcn*m$[%^p8oIx{jP#A1B;]K|w-]\6N[-mQ߆\r'4,K ,we-:dwuRwwiEZpѻ ǹNee<XVXVU{w}+_z{*7R C.PM}ջCUI`ˆx@0`l']8]8j-N'dM.d{<d[_)noI `A7$Qޮ4'$<Ĭ ;\d,(&M0MblI*b4!EΖQk-ʑ H3-נIDǘtǿ- LhrZ0hV6> 6a-0>dލRƟVkHj؎#ջWk売-wlBTI)F'f<Ԋ֯š'b34uM [XPy,MN<R,챉I 9ZQQ R!@LGEPN枝)v+HgKkn`4c0mNF@s&EޕYXQL8%RvkoZa/LN@1 .|K{x"B~Js`JgTCiyW2i>4vC}$^dTSYJJ8jtfgun1qPDf7+Q&%0hd`ꉮ':n)n0r0x4F5ѽ@rт&q5__-מNd=9pkJDjur]BV_F֊:[/~om,~[ome[}Co`{ veD; f=y+Dg()dlяxl-5?+:'q8GwBN޴yjޏY5[PS'~+UGPv=Z9հ\ ndRSuy}+U[#5Z%Uij]MVB:9(HC{hmRGsx١̓$*2fF^kiAqRKkhЇPWY-yL6)307먒#S:' "v;X_Q8(dŴJ"zȚpS3&r"4cP P)JUP o6UÊ B8m̰"إs3Eh '[7-ٶ`T@C7=4iɴSl~33sʆ4L% ըZ;m![\Z%YwspH T تC!)j!CLzⷀLܺ!5fBYBECtxLJG.bmRiiS%ht`?? VM e@ PQYu$}q)`8XRX֮*ޭJ%OdաV˾De/V(|ZVg)&4`DG ͍Wk*A)L7i|3nʳІLY7(tFeoTV#h~~<N'})z'ދ\F?1$ʢ')9[IR[U:dsRNb8aؑx;mA "Kt)濋a#@G-?=<mH5yWWff#˲%ƣ+gI1耒'Zr`p'fo*@EC Ħ fᙣڎ.x̾p$*G?2Tn8>'xIG#ٽ:J\~K֎6)Li26pycs[5Umi:p#]qֵn>lŁs3e@lLqR\BL L .dz8NYC04TE,"hAaaicGL3l0"ű&/">*^/;ݯ@{B^Vv:J #&S}1^b7;1遆'6m6X2E*1٩1*$hԊΊ՛)DX39on@kTxzٲ(uUP(gv]Ǡ1BcjX;[Y:O6B.Ie\ıV$!ؤ̸he/9W~*,͖ѻ>-NаeJoCFG?v]Z>>"cvހ[P~D/‹vnZ΄8eU[" Dөep-琡#c 19b媢ٔ .#D7UMx~{FPbGH4‡RiUE(YOUE;:ǩK:eFQT%F1X>'N;7:߰G7[7 w.zi ŽZR(ʧB7IzՐ/1Qɔ$4t%ϳAܼwwԢ!-45DJJ/' I^d,7[f*ٵsGWr!5H Y[ǒJնYR =}1 iE!O[pM:I~^@tʥ_skM]:~<oCX_aP՝o N'y@\]Q34UP\Ĺ7d 葽7v*X݋ZJ\WV'x{xc)z\ycWXg8<ܰGlՊNM8dUlQI,'nVꊣ=0Pns&+XXlXjJ-oOϐdzR1٥Jґ:<ԑφt 'X|5tTBixfJE7 ]봈x57 o"r +m帗=9^${7 $R_`/WDْ-+ ng׶rԮ=<Er@8CI { K qm:D|wd%μGDw2NД..]% Vg= 'HxISoDF֑~#ۆĽ897Ň(?,P(hu|3Poɫ$HX™_^=r߀Y|YVpeQ"@|+`c:[ $5L~yZ>}V}H9-O~0=(#g!S+2j^b5Δ-ؘ3攖SzĜң:)=fNM{Z^ws<,g̣ u<-}߼)C3ϧC-u|]<Xcob=;:̡x㪟 1 ~ v?%Bֆ^n*?j/Ʒ?ڿuմ?jPP=8toATLrK2E`;^ :bmyehžڹuyI9q7.bMC)y kY}:x,16>{X~egH*;ˎ;-jxm@Խr .b(9j5=iƙO 9lai|p-1>q*Fp//xw>^ظ'R@ N% ҁP{Q拾p6*f<"R'\_R^LUH3i~_ 8Q^6FgQM < &Ε/Yh _/x6yB>eVR42 o-^tpsky9!cJY5J>d媗<ۅBR0DRNΏ}4T\QX4_VKK(,h܎#S5\68l@ǹ|#y;|R#F0|GphC|C@@!** * }Q~I}YU+*U R:/qhiY=|C¡sA+zS=*r7<_Ѓ@Z8C94|CKbeDz"e"Keb<"-,-QPcñEޤi 疀i>u8/ +VXH;1pO3O ^>|<e<Dn369.=/Rg5.+,&GJH|:]_/"FWکWWר)u#?)o >?hT&]amʞ=ىS=ڰƃCtg쉒:]un4QI$$ob !\!)yʎ@PJV(^ВZ7%krCRZkE2!:P"pzbRfv-`H2HgKv)P(sBmhKCI{Z@v.(^jˡ8\0k^9Cd19( hA%GdN,?NkbQa/?(K/NLS`%Ĉha;32$F*z~9Űײd+y h1"Ww?CJ@ )oI7E66a#of('2/(Y/FTOڅ`,PN'_8'ZS'c )Po50;SAeI|hVW0٢B\|!]y/ ۍ,&ẶU]Xvٹg)!|4Rf9q9wq.!Ζqh%5`PWM%!.`h\0[ 琕sXotf$1R=fR߄ؾkV]QrۧO41BEǏ2EUpVszCDMH)DYِZL]b=Pr6q,@Za }y@}imѥ#>S5b;mYS>h\0"Y7!&܄MH C3VS'# Ю6;_шZ:=D4t+^6}lUDi`K]p# y:~#hU w C&7p׆f(+5I4kZj"Qa4f{(PuPM 0i"ׇddpfϯ3z4XtjqPU?\lVC&.$5U,3r$;c@5&yL=wu߄ ^/Yf2qkej'% SDNaa̩SI@d,99bX }L)m6WY&{.uy?oÂ.L)1_LE[קHTs=98 xp[?{@xP!ћ3ySo0'0< 6K̈Pk(^92kt*r\6QLW&xĴHJk0-I:&ԛt-Y+SLWԸiY͖xbl58#;gPd7xZ M$I݈`>9r UgMQD*D$kiM.-z*t] VU EWVK*4BUhJJ*4zk0CT23 R츥ߕXV{wgy` AnfeA96&>8o"{ȮZvE݅ \'D̦A+s z.AZ[˰eBz)j2yp[ Yjϱvs@{)B2(ㅩ"+CMOO^f 3}3fCA5/}nt޵KACy7<z,_M^O~Fɛ䋖Rptf,&.+HMJizgTݚh83I Ec"Ehk.ep@;lMHϡNƗK%VQ_4H&}b⧔Dz,0 R*hAHs<gP^ 4Wr+&.|' TEyEUkQL~ [;'I l]'B&dOU .).>] pc<c7S,%ς lAS&Lh}9<TƒѳvTo@ ` +UAejWZvG_-/ToN\q]<Xv?UT&O2HJSeG=Zq(U6-F94#Sٵb|iVLƠ Kg B ]CCI`(CJYjhR[(LL@8c2(iK @NCt&KWΈ5iM] _aRnc?=F f)>}8$9^}'U#k"Z*\*"XV`ۯ޸ؙZhR5naDgnKZ[cݗf`Ȣ* ZMTHg⭇devdؿBMMG;2Cl%[KY[d,2JCE5|?ͻ;|wU>yz.RR]5DJs{U&XN{ul`aVlDskols8R2[$C?x\-D]*T1^!I>[r]Ӥ-6$v TYOc1bGn7u-lbQU}$XN(m).iKl-T14skjIJrb>i;I ڗE43cr]aļ*xsMa(`Ф*-`2v`==x<o]l /Q=hhZ&j<y“ \6ԄE;-^.H+''8 QhW,].W."*5Slۨ?pջ-L|Fy)1.Ζ.{'mpTkLlÀJ+Ge< !jlZF\.\"I-+9RhKXw*Rؤȡ.'eE,_b$?ZOBB4>4sD6dY5;20B^űXP-H!36Aϐ%8H"#Tծ,x`!ylmQ8!;YEd6ڠ[ښdҌI&ёWi/KO9IebF]8>oyr)A [I3chnjef"GF>ã^uaC[dLqE+Adl(*Dtf@s lzRv055w`uy) cW[h R!t#C`l-"EFV&"ddl;dd씑]"KFv؆٣aeJCC%]i?  8@=DT#ҷAgCț*~|})#Glk '@s2tJir\H${evrIڽzQ5J z\!qN: ?`7dtWc<jP08ŕJA=׺~pP ɃhOi -ufLѝճ\,j9yuɹX}*=lU7L^K9iVIe$P Ph8ۄdX~>Y1a0PoGȀLP6A'<a?K".يLjl 7\oa5ĆryNx3']RlTϐ%ȂuTкM+|K 58됓/8'ni%={qH_h{/)%P~!֛4TT MPYOlri~#C s 젢(/֦)ʱRj<5<kEڿVY6,'XsesI%Kgx~눭pR#5%M 3Y=731zfbFuP.'j"QvB6)`QLxJ%qR5mt%J3˜*/ΔXQlnhuk%z o4=7^1 s|;.Li'KK'JW D.NOg lB94Lg봊BC^IΣY cb!KWxW0q6l0['3PkVOf#bxvC۵K'y(oʎ(|4͡D-}vb0WЍxI,X 1̙µҜ7=V,^-\c l zaO:wĨx"'͛0;3q<U.wĉ 4A>@=pfJb ?#s3J~T(_&n?aͷj 8oNɿT'QEj/5%؋A2gd"XѨM6#ٵ:%֠.,Lߑ/t(p͑yVrrw=̪!Ua"#kxX{º,>;66&#~ل*lЖ`+9C$]n'{Kh/+7~ۇ;9.smf_y >Fm7}_pت}dQs:(69^Rcٿ|dYd헼r>^PEF9nFNQs/N~/THNj'0RjyaJ޺ ݗ_mVULU;j,rg/YUֵ;o~I GB - ylzӀ0r0_F.k >Ix[ʼn(m<E- vFڅE$[#8 r0^pf{Y M}tS My5Ͽꥮy+^zKx/(LNV\dDkF,p[bX?!"`.-L$g=RLhd4Djl$z|@-6j"ʁ QO\US-0 fuyZ=jAf͌VP8OZX)!(1J4 ~kԟt˃rT?yNՀ[1 YɾV ls~6AleQXfeڙP?2 8e)^\g#?'3>{z|;6&ױӴt.Z-zgL .\]^Q1WgUQ3Y*Zkj9b>}v93$_,g܍ybRq}=ֺP61'Cyռq{j" ZNhm\e9{>u(^,>Yx>1Z`4b%[D^=>+ﲯI~>rNngGю6lv/v7t7@V&:U:3̇b=(R}z<[0a2dfXiR#I1p,>SD^,i7'DӮ[hB 3L>^oqzv\z3$Y6}7QZLJax!e4DkUCIC)cԼ&(Okk1ae+GgldJ2$*|{f'Q}UjMMu#Ѫ]6\yiTEjf ^\x0MɍׄLM:~5<ߦw ?ieQ\]mKHKBBKʠ#ٳ珎AT!`i5g.#$גy

R7(YlwAP/+*k/XyI=5@E)c@} E0{]k^ ':j@R>2Duȗ~}_È mu6/&b!{Sݲ{J90.(I(Fʒ_XEV7m(CBVLOUO4EIG{-UR TAZkňT #>.X(0RĜB->ldlN7Ӳ&gvo (abmFD}BIp[O+.695nu;,G׫E:!HQ=zumXT;I"aNgϢ:o2R}?+7 ߤef]<,*\|<RGo4ytXѹJ>:]6g\dR~]R8|ֻgcPƻ"я%ax<׺*M%OKSJN'KW<Hd<S'HY=N\C95v.˥SsS(@p,43Gaj9K]<KbR\rkO/ȵ!K,17BK az|ޖy #&C q3kt4YnAS-%A>-fޥ|IC)E݀i PohTTw~57p}_XOl9-%Q[2 0,frb䜟@K'Oʸ\'Ш ~Bqfr<2l m4/(xaXlo<x1&{.;8<qxY9|rEe I n&4 Kis>6{n0R1=m)a=dTRaF…ȟ)نO>5a|Λ%Lh)0V7jzKY'yF`kf3#uVZ%t]VX " 5ݘF/jPͶ- ,d$akXef *i`58\f\s|Oqr7[#A:lq)50}|>Ag)$*Wp:? ^M/`KLN S”8ZV[GuOs>v%g OB4wح_W}ɼ>@mjdwQ ֠ zὊ-b6@ {] doTz2j31.H11ƆMr5r)!'Wk\+'N[CGEs6,H:D+,=1uh3Ef{$5eщ+C[3松.C I*'}DP۬2j4D tp'B%*L' <G88u8aU'3]G}`sSf*n ml26e7e.)s)eUGA"|)a!l!njXsu n_de ۿ_3z2c)P=dvnlSZ⦿5 ÑznLMQY"e>lu):+ )hmRܓ30X~E8SOϋ?= 4}r55/ f!8mcgkmWO^Fi0SCԌ^בG]^lDN9'00hj}kkآ*yeR݅#閦Tw9'耉/yjl#>s rF!LnMvͧCG'ry MO,+M*֏q+/{UX'*1pJ=2f^G.OKD|10sڍ_ yƙzg4]#|(<exDZQ~ hOC<C|4XČx %ܚog_ՑNF6fK(KEOEft#:"g~c!hX+ܢ>Z}`YcİUdm"S6#ZZ(ZWԼ/2Բ*,W:ٹ8{ZN+ƌep:,x WŽ?5Z=2A֋`g*<V,9ef'K#ܵl,-Ek 9ytFɿ)P)>Sa"ٹef$zUV׮.TM+iւ{9'YpԳ7Q~4G2O5+V2Ѣj1_2r T:&es3Eacd/gU/hzV h6MS˥N/{%K`@; s`-ږzg ELAʪY땋qX!yMgV9"Cc3Yo=N/F0fcSyE Sb>B@6~0@8#FɴLΰPM{2|/bB8pMfaJ3mw}B<5nCg!|@55*G&'F.9&ᘁoaTo֌'f+ q7Q88cC)il0wŢCW+qп\ s4P {,BّWan{ఇ`"h $AF0ZȚ.x,BG֔BVr..daeDXkC T|&z4Kw]AE"8maS%e~Ƥ6 NH_Ol4p:Yl4w6A~P#܄&w҇LI7;ֺ%yMlY5޴Zrت~4J(ftЀWeFVo2%);EɄCH딛c9&.[mʍˬ s*H*['xSڎclailmR"֒`"XN N)ע=K6|d;Iv3hڝތmQ0xs`Ľ(YMNPw[34_pۜ6gا`4N;aVf;5=^5}4&_cq 0=LU4wn:vݫFzPcbTH[o!n3%]TsJ^j lƒuNB;!MtGdp@+UMOHeCx?[H،uY,$cʆcvr.^p"On:ީ;Fs3~DY1ߗSr6xU|9n,R%R,<~GN*= Y36U`*wgl'#ʧۘf*wyj=jgeҝEbWp D!hkd%_1"?ps?Hlx@ϮČW7Y*]jADs LX87k$NC4A`*߃YS;y2Y hDYed3QE%F%>l$09>@5#端9LyFd7&#Fkcu6?]Q BYrëBFsL'#y&ƼFqj~r0]г<⣦yA=PN ʏ$ҜDMzɑ<IlX/qF6GGEFn"!P^[9-ysE/VW`|.gwDO+h9H'/k/b*FN _Y#+ZKcqC4Kl4gNTZ͵Dm pza]XtAw.T݅E.41t4I+a6QLp4L+d2L 0V0Z'6 LFa2R&#a2a&fdDMxm"3ԑ́Q蠒l@o&"0JL   _>6ެ咺d蝡e0 ;@5ZqC^R~,cyÚ~^pvޔ/Rbp8G6^ͤ3 ;7Ǘq.?x!|A1,nCK~ ܪk3¡z7#r=_8~ZYQ*y$JPd_J }o萶EVC{YwUPg{TiI=z;=h2$1M^4_'<C ԏ߷q/xD$q'my%&⎤?\ jTԿ9=e~S79zgSƍ A,jcPZ'a!"`Þ5$UA>!s{b|i<RxL2 Ye`D 2p!Mp0:UJ%QRH,? :i[̅*(X'omdz:ޅP.߉*/._ϳΞrOTh8&O7+5'B~L:˰Tx񓰾b7N/IrxBr\4)PgmQiIk -LKƓtA;m*:z@'@s e8@yȚr%D<T.*mEFPꐺVҙs1}@gU903=PEjQbY>懴5o1`0Qw R%ZTbij$c@Bv?joW2w-uzC^!b̖Jd.o٤=kRX_l{F0I|( yńM>%^,ޏ%NVu~?#~C%`{&_$.żZj33kp IAty Пs䪈Ky~9NV 5?+QM6E^ĺ~$ȵ؆<0si{1Ұ/ІgQ٢"X>@vV3^5^{=$b^zdهa&ww& |)>(/pQ6B%B޴_Ŀ@%9JM>?Q%!zvAF "7ړTkiQ2؋n$4e2kӡ]ɐ(P8`y(CCQX&ʐZRHUd@tmx(jw#Wr{^ gAy{<)TdXl!jY:S&Xf'\ҔۄNeBMi#P~:}eЩ2h53 լt/br]2ʈ5D̤1Ҫ(S9pK\HAeD IdK`)fjdzΘVo|5A!Nrji*97Z.֠T +Lie^iw$nv:i9?[+|+Xg|ǖC% *xA;2?k@ɟ1sP/^>{qD5o`8W(+3aWԯY]l=z7hd]ԆRkFlDK(*w +uڷ[Q 0 ݣv-wKIcnB,oD:`cnsdOKgUItm'Ó@0=|&V•5ȥ~q/;qU^Eܻ=LHߔSFE#>ш2WC4MHHSS*R^+BD b7U\mEjɉk^$.0~ns:3FP\Y; j*>YIn#VIY}Y:1C$RlA3z}N*"_u3px#A-*ިNצh_F;-j|{#/)5G u4/J _4/|o2q6%ml/% tq)$*<vL;CX8 MFNBXC<ĀH&t9Rvރ`ϲ["܅dI޵TbP(m$i.cZ`uYm'H%dE[e}Buml56jŵ: ZkZm}J-D;nܾSŗ!M I @$ȵ]d;[Oz-M:ǼQ3e4qso1_c;ӗ+NQ`7r5St, ! VQ_gJ&^1+Fidb^rdF=}uK7:ʔ{[LAmo}›@e9مu&A.LjF±֧w0gF1RL u 7UG­$!̆^QxM\W^Qxm\uid=٩tޢÇ#9ڰ˃ۋWgv ] ih"hAԀjg8Qlؾ'xuKSNLqӼE|ܛLtqEEO\. ۺF }+1#94zb!Dfqؓ=_ǜ^ 0VW| v`ͼPþ u7[$W4v;N):6.ـ$xkI4Etl|Qߒ׽on- Rac+%Ke`lA1Es\^)5r.g銓W:XnuPz<u&I<821|vlPɜ0-Nw7QdCDQluhLqr7lT)e]cQl|9%i!B3&GSaC, i8$65CJcװ1*ʢ v1R&)Lat|H`ALL]> :û4/L̊Z1WRŅ*v2ՐňwE>tW&~& Lz=^ fcwP(jQx,[2s*"5PsU~ j/8,A֯/nR*F g܈I}1/&c*Qen,DEUwR@1w?6do_H-<FivQ?* 22dWۛHJSy\F+rA[Bf,jf HNeO IN MF,m(:!V#`|Fnc8a[_Np[Y* X͜V41ƕڍ:dvL.Ң2rŐbqԈuhQbIlFۄ-{k] s%Z*THwI`b%&k\^SIyj3aVkto?c7gKr>#e_ {F#d\=m?K ?R,y'^Ufs6luJo_:pmH.c)a@2ww2ʼn&v)CߤSLFaŃ }Ko}K@@4H N4@%DГ0R`j8JأJAV}84.MЌGk{@4Cf0}X3x!d}f3~m}ŊYQQ݇YQQ݇YQQ݇5^G>jA0vO_ʈz7o}Xo߇,>lJgs\++YȈ/w#-.]e}a7qи#T$kڡ,PPKs3!Ǵbd-m/,6FSj!Mx;} _$VGuv`en/ J#"W9,唑NZ^yFv7>AKhtoJIk ZE7H7ϥ\*o?QEi5IpC^sz\6d' Dx)Im8rpۙ0F.d ”7#ItFrThX9}gZ(V Lh<VjR0oGnA%L*qb{2 ,ζտ(-3B {(%fW3#e46V.Ba+y86 d[&7܇]) kJj"簦q<^-]yFNtUewalP Z^zþa̘p6d5ksn^ʫ]ۯ5LhhAQA^JiޭL M"~'I@y((+oqN͈QXөʬRCjHi/ Uel:[3XΧlR [PwC5Z`6lu0efG[,[I>jήlߦ#|#g;㷓 s"A7~{C%ϨOy'nx7n8O֠ul*ʺX{8 :{crqnE>B SD˳3sPPE1U^8A8Bq3 ro0Cv r|\[׊<Ѝ?hn;;;Kc厠K#}SDZ+c[D];hX$%ǽ?ns^ Z>|}=HFdl$tHIk㣭"YMY,wsi?2LS"MȎVqCVwVy(᝽}%4krN],EVB`*}{={z 1HՂbv˵ip*GGh|{ӕPC1cHƎ!1V;܇<9.Ia)$&M*TnoFu1݀N\W`n?wTZi џ\V[pRcZՊRgJSu+ ;q6D'?Owu0x7 低3t6ha;t~= ?ZwF]kη~Vy{ETwCT\ϋt_3?gNJww?J,9-ﭯsL/&ƒ"L0ݜ8ef3V CUyPb=4yIshSJRcK6Uqrbs4cy+Լ.`eNN$7đA[wg,+Na8S-ȓnfeh;iTiGCt0ΛI4"PgI1=,<Ksk0"LoX?) ts85ǭ.GaMIjZ+NbkcZͨBiab%'l:9&(&'"Ta~Fy`4y`i[ZP^LC-*VdosZ-аM[7ݷ*=QCAƁ0 SwfzHk Ln&QҭER3_| ^.aKF MSE,V9r'dMXyf|jV j,#Z+˪Ċ $+Znܖc<PzSYWʳ vՙͺڊN SպVYtu՘DZwƝ}6JO"XŻN],];u@~kԀZd(itX+~~xw%;knY/֡U b FDDYbo `FɌ&T/rLY=V|&.MpSl]R6m8Ml\!8]8|Z%qk` (J @>u/*V;ۿo?z'd}QX/Q:JV"ueu{{_^WzW^y%z4L1atSWg /MJޖ  Xb5'""7̲hl jؙ;b\5;RuecT2vbʋ{|]hOeFVjo }lWT{~@"10aN`ǽYRιU:}|g/7 Fv{ّ=^fd#/{sM12 >Z.yͭYXV*<JC[ 6q4V>1]} ﻬ&U;>?j[:酾WB(!I:Hpo } M];kGk^p48Եq%g}bփZoxuAL$_A.Gut odoE]nt@-! 0nGyqpA;[<6"tZEpp"% FRqӢH'ՋRVJ>l%Z(<OGj(퉋3|[ƹ5g몪1Qd'oai]y1Ъ+/'.P5dHȌfgJ&.OOIR cTZVLj)pEr]ex[ww͞b˳̃ieT6_Qdw >&'i ,d%&I̤tNǚ~^,'ĈW1c iconiconFLs labelButtonlabel Eb[cFE\GlabelPlacementleftrighttopbottomlabelPlacement啢TI^Dselectedfalseselected/?ZJ|gtogglefalsetogglegYD̜enabledtrueenabled!RG5S8bmOthervisibletruevisibleD*LcXTC$vOther minHeight0 minHeightPKu@&jSizeminWidth0minWidth! 7C2I l/Size)<?xml version="1.0" encoding ="utf-8"?> <componentPackage xmlns="http://www.macromedia.com/flash/swccatalog/7"> <component id="Button" class="mx.controls.Button" implementation="Button.swf" iconFile="Button.png" tooltip="Button" src="mx.controls.Button.asi" modified="1059073889"> <movieBounds xmin="0" xmax="2000" ymin="0" ymax="440" /> <include id="BoundingBox"/> <include id="SimpleButton"/> <include id="Border"/> <include id="RectBorder"/> <include id="ButtonSkin"/> <exportAfter id="__Packages.mx.controls.Button"/> <class id="mx.controls.Button" > <Event param1="click" /> <TagName param1="Button" /> <IconFile param1="Button.png" /> <property id="_inherited_selected" type="Boolean" > <Bindable /> <ChangeEvent param1="click" /> </property> <method id="icon" > <param id="linkage" /> <Inspectable defaultValue="" /> </method> <method id="label" > <param id="lbl" type="String" /> <Inspectable defaultValue="Button" /> </method> <method id="labelPlacement" > <param id="val" type="String" /> <Inspectable enumeration="left,right,top,bottom" defaultValue="right" /> </method> </class> <class id="mx.controls.SimpleButton" > <Event param1="click" /> <TagName param1="SimpleButton" /> <method id="selected" returnType="Boolean"> <Inspectable defaultValue="false" /> </method> <method id="toggle" returnType="Boolean"> <Inspectable defaultValue="false" /> </method> </class> <class id="mx.core.UIComponent" > <Event param1="focusIn" /> <Event param1="focusOut" /> <Event param1="keyDown" /> <Event param1="keyUp" /> <property id="enabled" type="Boolean" > <Inspectable defaultValue="true" verbose="1" category="Other" /> </property> </class> <class id="mx.core.UIObject" > <Event param1="resize" /> <Event param1="move" /> <Event param1="draw" /> <Event param1="load" /> <Event param1="unload" /> <method id="minHeight" returnType="Number"> <Inspectable defaultValue="0" verbose="1" category="Size" /> </method> <method id="minWidth" returnType="Number"> <Inspectable defaultValue="0" verbose="1" category="Size" /> </method> <method id="visible" returnType="Boolean"> <Inspectable defaultValue="true" verbose="1" category="Other" /> </method> </class> <asset id="BoundingBox" modified="1054593655"> </asset> <asset id="UIComponentExtensions" modified="1058814666"> <exportAfter id="__Packages.mx.core.ext.UIComponentExtensions"/> </asset> <asset id="FocusRect" modified="1055744819"> <include id="BoundingBox"/> <exportAfter id="__Packages.mx.skins.halo.FocusRect"/> </asset> <asset id="FocusManager" modified="1055744781"> <include id="FocusRect"/> <include id="UIObject"/> <exportAfter id="__Packages.mx.managers.FocusManager"/> </asset> <asset id="UIObjectExtensions" modified="1058814702"> <exportAfter id="__Packages.mx.core.ext.UIObjectExtensions"/> </asset> <asset id="Defaults" modified="1055737279"> <exportAfter id="__Packages.mx.skins.halo.Defaults"/> </asset> <asset id="UIObject" modified="1058814731"> <include id="Defaults"/> <include id="UIObjectExtensions"/> <exportAfter id="__Packages.mx.core.UIObject"/> </asset> <asset id="UIComponent" modified="1058814700"> <include id="UIObject"/> <include id="FocusManager"/> <include id="UIComponentExtensions"/> <exportAfter id="__Packages.mx.core.UIComponent"/> </asset> <asset id="SimpleButtonUp" modified="1062225026"> <include id="BrdrBlk"/> <include id="BrdrFace"/> <include id="BrdrShdw"/> <include id="BrdrHilght"/> <include id="BrdrFace"/> </asset> <asset id="BrdrHilght" modified="1052770908"> </asset> <asset id="BrdrBlk" modified="1052770913"> </asset> <asset id="SimpleButtonIn" modified="1062225020"> <include id="BrdrBlk"/> <include id="BrdrHilght"/> <include id="BrdrShdw"/> <include id="BrdrFace"/> </asset> <asset id="BrdrFace" modified="1051767541"> </asset> <asset id="BrdrShdw" modified="1058931521"> </asset> <asset id="SimpleButtonDown" modified="1062225019"> <include id="BrdrShdw"/> <include id="BrdrFace"/> </asset> <asset id="SimpleButton" modified="1055744781"> <include id="BoundingBox"/> <include id="SimpleButtonDown"/> <include id="SimpleButtonIn"/> <include id="SimpleButtonUp"/> <include id="UIComponent"/> <exportAfter id="__Packages.mx.controls.SimpleButton"/> </asset> <asset id="Border" modified="1062224872"> <include id="UIObject"/> <exportAfter id="__Packages.mx.skins.Border"/> </asset> <asset id="RectBorder" modified="1062224887"> <include id="Border"/> <exportAfter id="__Packages.mx.skins.halo.RectBorder"/> </asset> <asset id="ButtonSkin" modified="1062224893"> <exportAfter id="__Packages.mx.skins.halo.ButtonSkin"/> </asset> <asset id="__Packages.mx.skins.ColoredSkinElement" src="mx.skins.ColoredSkinElement.asi" modified="1062582563"> </asset> <asset id="__Packages.mx.core.UIObject" src="mx.core.UIObject.asi" modified="1062582563"> <include id="__Packages.mx.skins.SkinElement" /> <include id="__Packages.mx.styles.CSSStyleDeclaration" /> <include id="__Packages.mx.styles.StyleManager" /> </asset> <asset id="__Packages.mx.skins.SkinElement" src="mx.skins.SkinElement.asi" modified="1062582564"> </asset> <asset id="__Packages.mx.styles.CSSTextStyles" src="mx.styles.CSSTextStyles.asi" modified="1062582564"> </asset> <asset id="__Packages.mx.styles.CSSStyleDeclaration" src="mx.styles.CSSStyleDeclaration.asi" modified="1062582564"> <include id="__Packages.mx.styles.StyleManager" /> <exportAfter id="__Packages.mx.styles.CSSTextStyles" /> </asset> <asset id="__Packages.mx.styles.StyleManager" src="mx.styles.StyleManager.asi" modified="1062582564"> </asset> <asset id="__Packages.mx.core.UIComponent" src="mx.core.UIComponent.asi" modified="1062582563"> <exportAfter id="__Packages.mx.core.UIObject" /> </asset> <asset id="__Packages.mx.controls.SimpleButton" src="mx.controls.SimpleButton.asi" modified="1061503691"> <exportAfter id="__Packages.mx.core.UIComponent" /> </asset> <asset id="__Packages.mx.controls.Button" src="mx.controls.Button.asi" modified="1061503690"> <exportAfter id="__Packages.mx.controls.SimpleButton" /> <exportAfter id="__Packages.mx.core.UIObject" /> </asset> <asset id="__Packages.mx.events.EventDispatcher" src="mx.events.EventDispatcher.asi" modified="1062582563"> </asset> <asset id="__Packages.mx.events.UIEventDispatcher" src="mx.events.UIEventDispatcher.asi" modified="1062582563"> <exportAfter id="__Packages.mx.events.EventDispatcher" /> </asset> <asset id="__Packages.mx.core.ext.UIObjectExtensions" src="mx.core.ext.UIObjectExtensions.asi" modified="1062582563"> <include id="__Packages.mx.skins.ColoredSkinElement" /> <include id="__Packages.mx.styles.CSSStyleDeclaration" /> <exportAfter id="__Packages.mx.core.UIObject" /> <exportAfter id="__Packages.mx.skins.SkinElement" /> <exportAfter id="__Packages.mx.styles.CSSTextStyles" /> <exportAfter id="__Packages.mx.events.UIEventDispatcher" /> </asset> <asset id="__Packages.mx.skins.halo.Defaults" src="mx.skins.halo.Defaults.asi" modified="1062582564"> <include id="__Packages.mx.core.UIComponent" /> <exportAfter id="__Packages.mx.core.UIObject" /> <exportAfter id="__Packages.mx.styles.CSSStyleDeclaration" /> <exportAfter id="__Packages.mx.core.ext.UIObjectExtensions" /> </asset> <asset id="__Packages.mx.skins.halo.FocusRect" src="mx.skins.halo.FocusRect.asi" modified="1062582564"> <include id="__Packages.mx.managers.DepthManager" /> <exportAfter id="__Packages.mx.core.UIComponent" /> <exportAfter id="__Packages.mx.skins.SkinElement" /> <exportAfter id="__Packages.mx.skins.halo.Defaults" /> </asset> <asset id="__Packages.mx.managers.DepthManager" src="mx.managers.DepthManager.asi" modified="1062582563"> <include id="__Packages.mx.core.UIObject" /> </asset> <asset id="__Packages.mx.managers.FocusManager" src="mx.managers.FocusManager.asi" modified="1062726409"> <include id="__Packages.mx.controls.SimpleButton" /> <include id="__Packages.mx.managers.DepthManager" /> <include id="__Packages.mx.managers.SystemManager" /> <exportAfter id="__Packages.mx.core.UIComponent" /> <exportAfter id="__Packages.mx.core.ext.UIObjectExtensions" /> </asset> <asset id="__Packages.mx.managers.SystemManager" src="mx.managers.SystemManager.asi" modified="1062582563"> <include id="__Packages.mx.core.UIComponent" /> <include id="__Packages.mx.events.EventDispatcher" /> </asset> <asset id="__Packages.mx.managers.OverlappedWindows" src="mx.managers.OverlappedWindows.asi" modified="1062582563"> <include id="__Packages.mx.core.UIComponent" /> <exportAfter id="__Packages.mx.managers.SystemManager" /> </asset> <asset id="__Packages.mx.core.ext.UIComponentExtensions" src="mx.core.ext.UIComponentExtensions.asi" modified="1062582563"> <include id="__Packages.mx.styles.CSSSetStyle" /> <exportAfter id="__Packages.mx.core.UIComponent" /> <exportAfter id="__Packages.mx.managers.FocusManager" /> <exportAfter id="__Packages.mx.managers.OverlappedWindows" /> </asset> <asset id="__Packages.mx.styles.CSSSetStyle" src="mx.styles.CSSSetStyle.asi" modified="1062582564"> <include id="__Packages.mx.styles.StyleManager" /> <exportAfter id="__Packages.mx.styles.CSSStyleDeclaration" /> </asset> <asset id="__Packages.mx.skins.Border" src="mx.skins.Border.asi" modified="1062582563"> <exportAfter id="__Packages.mx.core.UIObject" /> </asset> <asset id="__Packages.mx.skins.RectBorder" src="mx.skins.RectBorder.asi" modified="1062582564"> <exportAfter id="__Packages.mx.skins.Border" /> </asset> <asset id="__Packages.mx.skins.halo.ButtonSkin" src="mx.skins.halo.ButtonSkin.asi" modified="1062582563"> <exportAfter id="__Packages.mx.core.ext.UIObjectExtensions" /> <exportAfter id="__Packages.mx.skins.RectBorder" /> </asset> <asset id="__Packages.mx.skins.halo.RectBorder" src="mx.skins.halo.RectBorder.asi" modified="1062582564"> <include id="__Packages.mx.styles.CSSStyleDeclaration" /> <exportAfter id="__Packages.mx.core.ext.UIObjectExtensions" /> <exportAfter id="__Packages.mx.skins.RectBorder" /> </asset> </component> </componentPackage> Media 1Bitmap 1 Button.pngԱCԱC2Hxi @!ENw'w* Qa}$K=EFs_ ,)CQjQYZquD܊SyK0z _Y?A7IsQ$ButtonButton Button.swf W?+BorderBorder Button.swfCP?UIObject Button.swf__Packages.mx.skins.Border Button.swf BoundingBox BoundingBox Button.swfw>BrdrBlkBrdrBlk Button.swfa>BrdrFaceBrdrFace Button.swf> BrdrHilght BrdrHilght Button.swf\>BrdrShdwBrdrShdw Button.swfA? ButtonSkin ButtonSkin Button.swfCP?#__Packages.mx.skins.halo.ButtonSkin Button.swfDefaultsDefaults Button.swfE>!__Packages.mx.skins.halo.Defaults Button.swf FocusManager FocusManager Button.swfc> FocusRect Button.swfUIObject Button.swf#__Packages.mx.managers.FocusManager Button.swf FocusRect FocusRect Button.swf3c> BoundingBox Button.swf"__Packages.mx.skins.halo.FocusRect Button.swf RectBorder RectBorder Button.swfCP?Border Button.swf#__Packages.mx.skins.halo.RectBorder Button.swf SimpleButton SimpleButton Button.swfc> BoundingBox Button.swfSimpleButtonDown Button.swfSimpleButtonIn Button.swfSimpleButtonUp Button.swf UIComponent Button.swf#__Packages.mx.controls.SimpleButton Button.swfSimpleButtonDownSimpleButtonDown Button.swf{DP?BrdrShdw Button.swfBrdrFace Button.swfSimpleButtonInSimpleButtonIn Button.swf|DP?BrdrBlk Button.swf BrdrHilght Button.swfBrdrShdw Button.swfBrdrFace Button.swfSimpleButtonUpSimpleButtonUp Button.swfDP?BrdrBlk Button.swfBrdrFace Button.swfBrdrShdw Button.swf BrdrHilght Button.swfBrdrFace Button.swf UIComponent UIComponent Button.swf:?UIObject Button.swf FocusManager Button.swfUIComponentExtensions Button.swf__Packages.mx.core.UIComponent Button.swfUIComponentExtensionsUIComponentExtensions Button.swf:?,__Packages.mx.core.ext.UIComponentExtensions Button.swfUIObjectUIObject Button.swf ;?Defaults Button.swfUIObjectExtensions Button.swf__Packages.mx.core.UIObject Button.swfUIObjectExtensionsUIObjectExtensions Button.swf:?)__Packages.mx.core.ext.UIObjectExtensions Button.swf__Packages.mx.controls.Button__Packages.mx.controls.Button Button.swfBE?#__Packages.mx.controls.SimpleButton Button.swf__Packages.mx.core.UIObject Button.swfmx.controls.Buttonq import mx.core.UIObject; import mx.controls.SimpleButton; import mx.core.UIComponent; [Event("click")] [TagName("Button")] [IconFile("Button.png")] intrinsic class mx.controls.Button extends mx.controls.SimpleButton { public function Button(); public var __get__icon:Function; public var __get__label:Function; public var __get__labelPlacement:Function; public var __label:String; public var __labelPlacement:String; public var _color; public function _getIcon(Void):String; public var _iconLinkageName:String; [Bindable] [ChangeEvent("click")] public var _inherited_selected:Boolean; public function _setIcon(linkage):Void; public var borderW:Number; public var btnOffset:Number; public function calcSize(tag:Number, ref:Object):Void; public var centerContent:Boolean; public var className:String; public var clipParameters:Object; public function createChildren(Void):Void; public function draw(); public var falseDisabledIcon:String; public var falseDisabledSkin:String; public var falseDownIcon:String; public var falseDownSkin:String; public var falseOverIcon:String; public var falseOverSkin:String; public var falseUpIcon:String; public var falseUpSkin:String; public function getBtnOffset(Void):Number; public function getLabel(Void):String; public function getLabelPlacement(Void):String; public var hitArea_mc:MovieClip; function get icon():String; [Inspectable(defaultValue="")] function set icon(linkage); public function init(Void):Void; public var initIcon; public function invalidateStyle(c:String):Void; [Inspectable(defaultValue="Button")] function set label(lbl:String); function get label():String; public var labelPath:Object; [Inspectable(enumeration="left,right,top,bottom"defaultValue="right")] function set labelPlacement(val:String); function get labelPlacement():String; static var mergedClipParameters:Boolean; public function onRelease(Void):Void; public function setColor(c:Number):Void; public function setEnabled(enable:Boolean):Void; public function setHitArea(w:Number, h:Number); public function setLabel(label:String):Void; public function setLabelPlacement(val:String):Void; public function setSkin(tag:Number, linkageName:String, initobj:Object):MovieClip; public function setView(offset:Number):Void; public function size(Void):Void; static var symbolName:String; static var symbolOwner; public var trueDisabledIcon:String; public var trueDisabledSkin:String; public var trueDownIcon:String; public var trueDownSkin:String; public var trueOverIcon:String; public var trueOverSkin:String; public var trueUpIcon:String; public var trueUpSkin:String; static var version:String; public function viewSkin(varName:String):Void; }; #__Packages.mx.controls.SimpleButton#__Packages.mx.controls.SimpleButton Button.swfBE?__Packages.mx.core.UIComponent Button.swfmx.controls.SimpleButtonimport mx.core.UIComponent; [Event("click")] [TagName("SimpleButton")] intrinsic class mx.controls.SimpleButton extends mx.core.UIComponent { public function SimpleButton(); public var __emphasized:Boolean; public var __emphatic:Boolean; public var __emphaticStyleName:String; public var __get__emphasized:Function; public var __get__selected:Function; public var __get__toggle:Function; public var __get__value:Function; public var __state:Boolean; public var __toggle:Boolean; public var autoRepeat:Boolean; public var boundingBox_mc:MovieClip; public var btnOffset:Number; public var buttonDownHandler:Function; public function calcSize(Void):Void; public function changeIcon(tag:Number, linkageName:String):Void; public function changeSkin(tag:Number, linkageName:String):Void; public var className:String; public var clickHandler:Function; public function createChildren(Void):Void; public var detail:Number; public var dfi; public var dfs; public var disabledIcon:Object; public var disabledSkin:Object; public var downIcon:Object; public var downSkin:Object; public function draw(Void):Void; public var dti; public var dts; function get emphasized():Boolean; function set emphasized(val:Boolean); static var emphasizedStyleDeclaration; static var falseDisabled:Number; public var falseDisabledIcon:String; public var falseDisabledIconEmphasized:String; public var falseDisabledSkin:String; public var falseDisabledSkinEmphasized:String; static var falseDown:Number; public var falseDownIcon:String; public var falseDownIconEmphasized:String; public var falseDownSkin:String; public var falseDownSkinEmphasized:String; static var falseOver:Number; public var falseOverIcon:String; public var falseOverIconEmphasized:String; public var falseOverSkin:String; public var falseOverSkinEmphasized:String; static var falseUp:Number; public var falseUpIcon:String; public var falseUpIconEmphasized:String; public var falseUpSkin:String; public var falseUpSkinEmphasized:String; public var fdi; public var fds; public var fri; public var frs; public var fui; public var fus; public function getLabel(Void):String; public function getSelected():Boolean; public function getState(Void):Boolean; public function getToggle(Void):Boolean; public var iconName:Object; public var idNames; public function init(Void):Void; public var initializing:Boolean; public var interval; public function keyDown(e:Object):Void; public function keyUp(e:Object):Void; public var linkLength:Number; public function onDragOut(Void):Void; public function onDragOver(Void):Void; public function onKillFocus(newFocus:Object):Void; public function onPress(Void):Void; public function onPressDelay(Void):Void; public function onPressRepeat(Void):Void; public function onRelease(Void):Void; public function onReleaseOutside(Void):Void; public function onRollOut(Void):Void; public function onRollOver(Void):Void; public var phase:String; public var preset:Boolean; public var refNames; public function refresh(Void):Void; public function removeIcons(); public var rolloverIcon:Object; public var rolloverSkin:Object; function set selected(val:Boolean); [Inspectable(defaultValue=false)] function get selected():Boolean; public function setEnabled(val:Boolean):Void; public function setIcon(tag:Number, linkageName:String):Object; public function setLabel(val:String):Void; public function setSelected(val:Boolean); public function setSkin(tag:Number, linkageName:String, initobj:Object):MovieClip; public function setState(state:Boolean):Void; public function setStateVar(state:Boolean):Void; public function setToggle(val:Boolean); public function setView(offset:Boolean):Void; public function showEmphasized(e:Boolean):Void; public function size(Void):Void; public var skinName:Object; public var stateNames; public var style3dInset:Number; static var symbolName:String; static var symbolOwner:Object; public var tagMap; public var tdi; public var tds; function set toggle(val:Boolean); [Inspectable(defaultValue=false)] function get toggle():Boolean; public var tri; public var trs; static var trueDisabled:Number; public var trueDisabledIcon:String; public var trueDisabledIconEmphasized:String; public var trueDisabledSkin:String; public var trueDisabledSkinEmphasized:String; static var trueDown:Number; public var trueDownIcon:String; public var trueDownIconEmphasized:String; public var trueDownSkin:String; public var trueDownSkinEmphasized:String; static var trueOver:Number; public var trueOverIcon:String; public var trueOverIconEmphasized:String; public var trueOverSkin:String; public var trueOverSkinEmphasized:String; static var trueUp:Number; public var trueUpIcon:String; public var trueUpIconEmphasized:String; public var trueUpSkin:String; public var trueUpSkinEmphasized:String; public var tui; public var tus; public var upIcon:Object; public var upSkin:Object; function set value(val:Boolean); function get value():Boolean; static var version:String; public function viewIcon(varName:String):Void; public function viewSkin(varName:String, initObj:Object):Void; }; __Packages.mx.core.UIComponent__Packages.mx.core.UIComponent Button.swf#U?__Packages.mx.core.UIObject Button.swfmx.core.UIComponentimport mx.core.UIObject; import mx.skins.SkinElement; [Event("focusIn")] [Event("focusOut")] [Event("keyDown")] [Event("keyUp")] intrinsic class mx.core.UIComponent extends mx.core.UIObject { public function UIComponent(); public var clipParameters:Object; public function dispatchValueChangedEvent(value):Void; public var drawFocus:Function; [Inspectable(defaultValue=true, verbose=1, category="Other")] public var enabled:Boolean; public function enabledChanged(id:String, oldValue:Boolean, newValue:Boolean):Boolean; public function findFocusFromObject(o:Object):Object; public function findFocusInChildren(o:Object):Object; public var focusEnabled:Boolean; public var focusManager:MovieClip; public var focusTextField:Object; public function getFocus():Object; public function getFocusManager():Object; public var groupName:String; function get height():Number; public function init():Void; public function isParent(o:Object):Boolean; static var kStretch:Number; static var mergedClipParameters:Boolean; public function onKillFocus(newFocus:Object):Void; public function onSetFocus(oldFocus:Object):Void; public var origBorderStyles:Object; public var origBorderValues:Object; public var popUp:Boolean; public function pressFocus():Void; public function releaseFocus():Void; public function setEnabled(enabled:Boolean):Void; public function setFocus():Void; public function setVisible(x:Boolean, noEvent:Boolean):Void; public function size():Void; static var symbolName:String; static var symbolOwner:Object; public var tabEnabled:Boolean; public var tabIndex:Number; static var version:String; function get width():Number; }; __Packages.mx.core.UIObject__Packages.mx.core.UIObject Button.swf#U?__Packages.mx.skins.SkinElement Button.swf(__Packages.mx.styles.CSSStyleDeclaration Button.swf!__Packages.mx.styles.StyleManager Button.swfmx.core.UIObjectimport mx.styles.StyleManager; import mx.styles.CSSStyleDeclaration; import mx.skins.SkinElement; [Event("resize")] [Event("move")] [Event("draw")] [Event("load")] [Event("unload")] intrinsic class mx.core.UIObject extends MovieClip { public function UIObject(); public function __getTextFormat(tf:TextFormat, bAll:Boolean):Boolean; public var __get__minHeight:Function; public var __get__minWidth:Function; public var __get__scaleX:Function; public var __get__scaleY:Function; public var __get__visible:Function; public var __height:Number; private var __onUnload:Function; public var __width:Number; public var _color; public function _createChildren(Void):Void; private var _endInit:Function; public function _getTextFormat(Void):TextFormat; private var _id:String; private var _maxHeight:Number; private var _maxWidth:Number; private var _minHeight:Number; private var _minWidth:Number; private var _preferredHeight:Number; private var _preferredWidth:Number; private var _tf:TextFormat; public var _topmost:Boolean; public var addEventListener:Function; function get bottom():Number; public var buildDepthTable:Function; public function cancelAllDoLaters(Void):Void; public var changeColorStyleInChildren:Function; public var changeTextStyleInChildren:Function; public var childrenCreated:Boolean; public var className:String; public var clipParameters:Object; public var color:Number; public function constructObject(Void):Void; public var createAccessibilityImplementation:Function; public var createChildAtDepth:Function; public function createChildren(Void):Void; public var createClassChildAtDepth:Function; public function createClassObject(className:Function, id:String, depth:Number, initobj:Object):mx.core.UIObject; public function createEmptyObject(id:String, depth:Number):mx.core.UIObject; public var createEvent:Function; public function createLabel(name:String, depth:Number, text):TextField; public function createObject(linkageName:String, id:String, depth:Number, initobj:Object):MovieClip; public function createSkin(tag:Number):mx.core.UIObject; public function destroyObject(id:String):Void; public var dispatchEvent:Function; public function doLater(obj:Object, fn:String):Void; public function doLaterDispatcher(Void):Void; public function draw(Void):Void; public function drawRect(x1:Number, y1:Number, x2:Number, y2:Number):Void; public var embedFonts:Boolean; public var findNextAvailableDepth:Function; public var fontFamily:String; public var fontSize:Number; public var fontStyle:String; public var fontWeight:String; public function getClassStyleDeclaration(Void):mx.styles.CSSStyleDeclaration; public function getMinHeight(Void):Number; public function getMinWidth(Void):Number; public function getSkinIDName(tag:Number):String; public function getStyle(styleProp:String); public function getStyleName(Void):String; public var handleEvent:Function; function get height():Number; public var idNames:Array; public var ignoreClassStyleDeclaration:Object; public function init(Void):Void; public function initFromClipParameters(Void):Void; public var initProperties:Function; public function invalidate(Void):Void; private var invalidateFlag:Boolean; public function invalidateStyle(Void):Void; function get left():Number; private var lineColor:Number; private var lineWidth:Number; public var marginLeft:Number; public var marginRight:Number; static function mergeClipParameters(o, p):Boolean; public var methodTable:Array; [Inspectable(defaultValue=0, verbose=1, category="Size")] function get minHeight():Number; function set minHeight(h:Number):Void; [Inspectable(defaultValue=0, verbose=1, category="Size")] function get minWidth():Number; function set minWidth(w:Number):Void; public function move(x:Number, y:Number, noEvent:Boolean):Void; public var notifyStyleChangeInChildren:Function; public function redraw(bAlways:Boolean):Void; public var removeEventListener:Function; function get right():Number; function get scaleX():Number; function set scaleX(x:Number):Void; function get scaleY():Number; function set scaleY(y:Number):Void; public function setColor(color:Number):Void; public function setMinHeight(h:Number):Void; public function setMinWidth(w:Number):Void; public function setSize(w:Number, h:Number, noEvent:Boolean):Void; public function setSkin(tag:Number, linkageName:String, initObj:Object):MovieClip; public var setStyle:Function; public function setVisible(x:Boolean, noEvent:Boolean):Void; public function size(Void):Void; public var styleName:String; public var stylecache:Object; static var symbolName:String; static var symbolOwner:Object; public var tabEnabled:Boolean; public var textAlign:String; static var textColorList; public var textDecoration:String; public var textIndent:Number; private var tfList:Object; function get top():Number; public var validateNow:Boolean; static var version:String; [Inspectable(defaultValue=true, verbose=1, category="Other")] function get visible():Boolean; function set visible(x:Boolean):Void; function get width():Number; function get x():Number; function get y():Number; }; ,__Packages.mx.core.ext.UIComponentExtensions,__Packages.mx.core.ext.UIComponentExtensions Button.swf#U? __Packages.mx.styles.CSSSetStyle Button.swf__Packages.mx.core.UIComponent Button.swf#__Packages.mx.managers.FocusManager Button.swf(__Packages.mx.managers.OverlappedWindows Button.swf!mx.core.ext.UIComponentExtensions:import mx.core.UIComponent; intrinsic class mx.core.ext.UIComponentExtensions { static function Extensions():Boolean; static var FocusManagerDependency; static var OverlappedWindowsDependency; static var UIComponentDependency; static var UIComponentExtended; static var bExtended; }; )__Packages.mx.core.ext.UIObjectExtensions)__Packages.mx.core.ext.UIObjectExtensions Button.swf#U?&__Packages.mx.skins.ColoredSkinElement Button.swf(__Packages.mx.styles.CSSStyleDeclaration Button.swf__Packages.mx.core.UIObject Button.swf__Packages.mx.skins.SkinElement Button.swf"__Packages.mx.styles.CSSTextStyles Button.swf&__Packages.mx.events.UIEventDispatcher Button.swfmx.core.ext.UIObjectExtensionsimport mx.core.UIObject; import mx.styles.CSSStyleDeclaration; import mx.skins.SkinElement; import mx.events.UIEventDispatcher; intrinsic class mx.core.ext.UIObjectExtensions { static var CSSTextStylesDependency; static function Extensions():Boolean; static var SkinElementDependency; static var UIEventDispatcherDependency; static var UIObjectDependency; static var UIObjectExtended; static function addGeometry(tf:Object, ui:Object):Void; static var bExtended; }; $__Packages.mx.events.EventDispatcher$__Packages.mx.events.EventDispatcher Button.swf#U?mx.events.EventDispatcher intrinsic class mx.events.EventDispatcher { static var _fEventDispatcher:mx.events.EventDispatcher; static function _removeEventListener(queue:Object, event:String, handler):Void; public function addEventListener(event:String, handler):Void; public function dispatchEvent(eventObj:Object):Void; public function dispatchQueue(queueObj:Object, eventObj:Object):Void; static function initialize(object:Object):Void; public function removeEventListener(event:String, handler):Void; }; &__Packages.mx.events.UIEventDispatcher&__Packages.mx.events.UIEventDispatcher Button.swf#U?$__Packages.mx.events.EventDispatcher Button.swfmx.events.UIEventDispatcherimport mx.core.UIObject; import mx.events.EventDispatcher; intrinsic class mx.events.UIEventDispatcher extends mx.events.EventDispatcher { public function __addEventListener(event:String, handler):Void; public var __origAddEventListener:Function; public var __sentLoadEvent; static var _fEventDispatcher:mx.events.UIEventDispatcher; static function addKeyEvents(obj:Object):Void; static function addLoadEvents(obj:Object):Void; public function dispatchEvent(eventObj:Object):Void; static function initialize(obj:Object):Void; static var keyEvents:Object; static var loadEvents:Object; static var lowLevelEvents:Object; public function onKeyDown(Void):Void; public function onKeyUp(Void):Void; public function onLoad(Void):Void; public function onUnload(Void):Void; public var owner:Object; public function removeEventListener(event:String, handler):Void; static function removeKeyEvents(obj:Object):Void; static function removeLoadEvents(obj:Object):Void; }; #__Packages.mx.managers.DepthManager#__Packages.mx.managers.DepthManager Button.swf#U?__Packages.mx.core.UIObject Button.swfmx.managers.DepthManageroimport mx.core.UIObject; intrinsic class mx.managers.DepthManager { public function DepthManager(); static var __depthManager:mx.managers.DepthManager; public var _childCounter:Number; public var _parent:MovieClip; public var _topmost:Boolean; public function buildDepthTable(Void):Array; public function createChildAtDepth(linkageName:String, depthFlag:Number, initObj:Object):MovieClip; public function createClassChildAtDepth(className:Function, depthFlag:Number, initObj:Object):mx.     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstcore.UIObject; public var createClassObject:Function; static function createClassObjectAtDepth(className:Object, depthSpace:Number, initObj:Object):mx.core.UIObject; public var createObject:Function; static function createObjectAtDepth(linkageName:String, depthSpace:Number, initObj:Object):MovieClip; public function findNextAvailableDepth(targetDepth:Number, depthTable:Array, direction:String):Number; public var getDepth:Function; public function getDepthByFlag(depthFlag:Number, depthTable:Array):Number; static var highestDepth:Number; static private var holder:MovieClip; static var kBottom:Number; static var kCursor:Number; static var kNotopmost:Number; static var kTooltip:Number; static var kTop:Number; static var kTopmost:Number; static var lowestDepth:Number; static var numberOfAuthortimeLayers:Number; static var reservedDepth:Number; public function setDepthAbove(targetInstance:MovieClip):Void; public function setDepthBelow(targetInstance:MovieClip):Void; public function setDepthTo(depthFlag:Number):Void; public function shuffleDepths(subject:MovieClip, targetDepth:Number, depthTable:Array, direction:String):Void; static function sortFunction(a:MovieClip, b:MovieClip):Number; public var swapDepths:Function; static function test(depth:Number):Boolean; }; #__Packages.mx.managers.FocusManager#__Packages.mx.managers.FocusManager Button.swf W?#__Packages.mx.controls.SimpleButton Button.swf#__Packages.mx.managers.DepthManager Button.swf$__Packages.mx.managers.SystemManager Button.swf__Packages.mx.core.UIComponent Button.swf)__Packages.mx.core.ext.UIObjectExtensions Button.swfmx.managers.FocusManager import mx.core.UIObject; import mx.managers.SystemManager; import mx.controls.SimpleButton; import mx.core.UIComponent; intrinsic class mx.managers.FocusManager extends mx.core.UIComponent { public function FocusManager(); static var UIObjectExtensionsDependency; public var __defaultPushButton:mx.controls.SimpleButton; public var __get__defaultPushButton:Function; private var _firstNode:Object; private var _firstObj:Object; private var _foundList:Object; private var _lastNode:Object; private var _lastObj:Object; private var _lastTarget:Object; private var _lastx:Object; private var _needPrev:Boolean; private var _nextIsNext:Boolean; private var _nextNode:Object; private var _nextObj:Object; public function _onMouseDown(Void):Void; private var _prevNode:Object; private var _prevObj:Object; private var _searchKey:Number; public function activate(Void):Void; private var activated:Boolean; public var bDrawFocus:Boolean; public var bNeedFocus:Boolean; public var className:String; public function deactivate(Void):Void; public var defPushButton:mx.controls.SimpleButton; function get defaultPushButton():mx.controls.SimpleButton; function set defaultPushButton(x:mx.controls.SimpleButton); public var defaultPushButtonEnabled:Boolean; static function enableFocusManagement():Void; public function enabledChanged(id:String, oldValue:Boolean, newValue:Boolean):Boolean; public var form; public function getActualFocus(o:Object):Object; public function getFocus(Void):Object; public function getFocusManagerFromObject(o:Object):Object; public function getMaxTabIndex(o:mx.core.UIComponent):Number; public function getMousedComponentFromChildren(x:Number, y:Number, o:Object):Object; public function getNextTabIndex(Void):Number; public function getSelectionFocus():Object; public function getTabCandidate(o:MovieClip, index:Number, groupName:String, dir:Boolean, firstChild:Boolean):Void; public function getTabCandidateFromChildren(o:MovieClip, index:Number, groupName:String, dir:Boolean, firstChild:Boolean):Void; public function handleEvent(e:Object); public function init(Void):Void; static var initialized:Boolean; public function isOurFocus(o:Object):Boolean; public var lastFocus:Object; public var lastSelFocus:Object; public var lastTabFocus:Object; public var lastXMouse:Number; public var lastYMouse:Number; public function mouseActivate(Void):Void; function get nextTabIndex():Number; public function onKeyDown(Void):Void; public function onMouseUp(Void):Void; public function onSetFocus(o:Object, n:Object):Void; public function onUnload(Void):Void; public function relocate(Void):Void; public function restoreFocus(Void):Void; public function sendDefaultPushButtonEvent(Void):Void; public function setFocus(o:Object):Void; static var symbolName:String; static var symbolOwner:Object; private var tabCapture:MovieClip; public function tabHandler(Void):Void; static var version:String; public function walkTree(p:MovieClip, index:Number, groupName:String, dir:Boolean, lookup:Boolean, firstChild:Boolean):Void; }; (__Packages.mx.managers.OverlappedWindows(__Packages.mx.managers.OverlappedWindows Button.swf#U?__Packages.mx.core.UIComponent Button.swf$__Packages.mx.managers.SystemManager Button.swfmx.managers.OverlappedWindows(import mx.managers.SystemManager; import mx.core.UIComponent; intrinsic class mx.managers.OverlappedWindows { static var SystemManagerDependency; static function __addEventListener(e:String, o:Object, l:Function):Void; static function __removeEventListener(e:String, o:Object, l:Function):Void; static function activate(f:MovieClip):Void; static function addFocusManager(f:mx.core.UIComponent):Void; static function checkIdle(Void):Void; static function deactivate(f:MovieClip):Void; static function enableOverlappedWindows():Void; static var initialized:Boolean; static function onMouseDown(Void):Void; static function onMouseMove(Void):Void; static function onMouseUp(Void):Void; static function removeFocusManager(f:mx.core.UIComponent):Void; }; $__Packages.mx.managers.SystemManager$__Packages.mx.managers.SystemManager Button.swf#U?__Packages.mx.core.UIComponent Button.swf$__Packages.mx.events.EventDispatcher Button.swfmx.managers.SystemManagerimport mx.events.EventDispatcher; import mx.core.UIComponent; [Event("idle")] [Event("resize")] intrinsic class mx.managers.SystemManager { static var __addEventListener:Function; static var __removeEventListener:Function; static var __screen:Object; static private var _initialized:Boolean; static var _xAddEventListener:Function; static var _xRemoveEventListener:Function; static var activate:Function; static var addEventListener:Function; static function addFocusManager(f:mx.core.UIComponent):Void; static var checkIdle:Function; static var deactivate:Function; static var dispatchEvent:Function; static var form:MovieClip; static var forms:Array; static var idleFrames:Number; static function init(Void):Void; static var interval:Number; static var isMouseDown; static function onMouseDown(Void):Void; static var onMouseMove:Function; static var onMouseUp:Function; static function onResize(Void):Void; static var removeEventListener:Function; static function removeFocusManager(f:mx.core.UIComponent):Void; static function get screen():Object; }; __Packages.mx.skins.Border__Packages.mx.skins.Border Button.swf#U?__Packages.mx.core.UIObject Button.swfmx.skins.Borderhimport mx.core.UIObject; intrinsic class mx.skins.Border extends mx.core.UIObject { public function Border(); public var borderStyle:String; public var className:String; public var idNames:Array; public function init(Void):Void; static var symbolName:String; static var symbolOwner:Object; public var tagBorder:Number; }; &__Packages.mx.skins.ColoredSkinElement&__Packages.mx.skins.ColoredSkinElement Button.swf#U?mx.skins.ColoredSkinElement intrinsic class mx.skins.ColoredSkinElement { public var _color; public function draw(Void):Void; public var getStyle:Function; public function invalidateStyle(Void):Void; static var mixins:mx.skins.ColoredSkinElement; public var onEnterFrame:Function; public function setColor(c:Number):Void; static function setColorStyle(p:Object, colorStyle:String):Void; }; __Packages.mx.skins.RectBorder__Packages.mx.skins.RectBorder Button.swf$U?__Packages.mx.skins.Border Button.swfmx.skins.RectBorderimport mx.skins.Border; import mx.styles.CSSStyleDeclaration; intrinsic class mx.skins.RectBorder extends mx.skins.Border { public function RectBorder(); public var __borderMetrics:Object; public var backgroundColorName:String; public var borderColorName:String; function get borderMetrics():Object; public var borderStyleName:String; public var buttonColorName:String; public var className:String; public function draw(Void):Void; public function drawBorder(Void):Void; public function getBorderMetrics(Void):Object; function get height():Number; public var highlightColorName:String; public function init(Void):Void; public var offset:Number; public function setColor(Void):Void; public var shadowColorName:String; public function size(Void):Void; static var symbolName:String; static var symbolOwner:Object; static var version:String; function get width():Number; }; __Packages.mx.skins.SkinElement__Packages.mx.skins.SkinElement Button.swf$U?mx.skins.SkinElement intrinsic class mx.skins.SkinElement extends MovieClip { public function __set__visible(visible:Boolean):Void; public var height:Number; public function move(x:Number, y:Number):Void; static function registerElement(name:String, className:Function):Void; public function setSize(w:Number, h:Number):Void; public var top:Number; public var visible:Boolean; public var width:Number; }; #__Packages.mx.skins.halo.ButtonSkin#__Packages.mx.skins.halo.ButtonSkin Button.swf#U?)__Packages.mx.core.ext.UIObjectExtensions Button.swf__Packages.mx.skins.RectBorder Button.swfmx.skins.halo.ButtonSkinimport mx.skins.RectBorder; import mx.core.ext.UIObjectExtensions; import mx.skins.SkinElement; intrinsic class mx.skins.halo.ButtonSkin extends mx.skins.RectBorder { public function ButtonSkin(); static var UIObjectExtensionsDependency; public var backgroundColorName; static function classConstruct():Boolean; static var classConstructed:Boolean; public var className; public function drawHaloRect(w:Number, h:Number):Void; public var drawRoundRect:Function; public function init():Void; public function size():Void; static var symbolName:String; static var symbolOwner:Object; }; !__Packages.mx.skins.halo.Defaults!__Packages.mx.skins.halo.Defaults Button.swf$U?__Packages.mx.core.UIComponent Button.swf__Packages.mx.core.UIObject Button.swf(__Packages.mx.styles.CSSStyleDeclaration Button.swf)__Packages.mx.core.ext.UIObjectExtensions Button.swfmx.skins.halo.Defaultsimport mx.core.UIObject; import mx.core.ext.UIObjectExtensions; import mx.styles.CSSStyleDeclaration; intrinsic class mx.skins.halo.Defaults { static var CSSStyleDeclarationDependency; static var UIObjectDependency; static var UIObjectExtensionsDependency; public var beginFill:Function; public var beginGradientFill:Function; static function classConstruct():Boolean; static var classConstructed; public var curveTo:Function; public function drawRoundRect(x, y, w, h, r, c, alpha, rot, gradient, ratios); public var endFill:Function; public var lineTo:Function; public var moveTo:Function; static function setThemeDefaults():Void; }; "__Packages.mx.skins.halo.FocusRect"__Packages.mx.skins.halo.FocusRect Button.swf$U?#__Packages.mx.managers.DepthManager Button.swf__Packages.mx.core.UIComponent Button.swf__Packages.mx.skins.SkinElement Button.swf!__Packages.mx.skins.halo.Defaults Button.swfmx.skins.halo.FocusRectimport mx.core.UIObject; import mx.skins.halo.Defaults; import mx.managers.DepthManager; import mx.skins.SkinElement; import mx.core.UIComponent; intrinsic class mx.skins.halo.FocusRect extends mx.skins.SkinElement { static var DefaultsDependency:mx.skins.halo.Defaults; public function FocusRect(); static var UIComponentDependency:mx.core.UIComponent; public var boundingBox_mc:MovieClip; static function classConstruct():Boolean; static var classConstructed:Boolean; public function draw(o:Object):Void; public var drawRoundRect:Function; public function handleEvent(e:Object):Void; public function setSize(w:Number, h:Number, r, a:Number, rectCol:Number):Void; }; #__Packages.mx.skins.halo.RectBorder#__Packages.mx.skins.halo.RectBorder Button.swf$U?(__Packages.mx.styles.CSSStyleDeclaration Button.swf)__Packages.mx.core.ext.UIObjectExtensions Button.swf__Packages.mx.skins.RectBorder Button.swfmx.skins.halo.RectBorderoimport mx.core.ext.UIObjectExtensions; import mx.skins.Border; import mx.styles.CSSStyleDeclaration; intrinsic class mx.skins.halo.RectBorder extends mx.skins.RectBorder { public function RectBorder(); static var UIObjectExtensionsDependency; public var borderCapColorName:String; private var borderWidths:Object; static function classConstruct():Boolean; static var classConstructed:Boolean; private var colorList:Object; public function draw3dBorder(c1:Number, c2:Number, c3:Number, c4:Number, c5:Number, c6:Number):Void; public function drawBorder(Void):Void; public var drawRoundRect:Function; public function getBorderMetrics(Void):Object; public function init(Void):Void; public var shadowCapColorName:String; static var symbolName:String; static var symbolOwner:Object; static var version:String; }; __Packages.mx.styles.CSSSetStyle __Packages.mx.styles.CSSSetStyle Button.swf$U?!__Packages.mx.styles.StyleManager Button.swf(__Packages.mx.styles.CSSStyleDeclaration Button.swfmx.styles.CSSSetStylebimport mx.styles.StyleManager; import mx.styles.CSSStyleDeclaration; intrinsic class mx.styles.CSSSetStyle { static var CSSStyleDeclarationDependency; public var _color:Number; public function _setStyle(styleProp:String, newValue):Void; public function changeColorStyleInChildren(sheetName:String, colorStyle:String, newValue):Void; public function changeTextStyleInChildren(styleProp:String):Void; static function classConstruct():Boolean; static var classConstructed:Boolean; static function enableRunTimeCSS():Void; public var invalidateStyle:Function; public function notifyStyleChangeInChildren(sheetName:String, styleProp:String, newValue):Void; public var setColor:Function; public function setStyle(styleProp:String, newValue):Void; public var styleName:String; public var stylecache:Object; }; (__Packages.mx.styles.CSSStyleDeclaration(__Packages.mx.styles.CSSStyleDeclaration Button.swf$U?!__Packages.mx.styles.StyleManager Button.swf"__Packages.mx.styles.CSSTextStyles Button.swfmx.styles.CSSStyleDeclaration%import mx.styles.StyleManager; import mx.styles.CSSTextStyles; intrinsic class mx.styles.CSSStyleDeclaration { static var CSSTextStylesDependency; public function __getTextFormat(tf:TextFormat, bAll:Boolean):Boolean; public var _tf:TextFormat; static function classConstruct():Boolean; static var classConstructed:Boolean; public var color:Number; public var embedFonts:Boolean; public var fontFamily:String; public var fontSize:Number; public var fontStyle:String; public var fontWeight:String; public function getStyle(styleProp:String); public var marginLeft:Number; public var marginRight:Number; public var styleName:String; public var textAlign:String; public var textDecoration:String; public var textIndent:Number; }; "__Packages.mx.styles.CSSTextStyles"__Packages.mx.styles.CSSTextStyles Button.swf$U?mx.styles.CSSTextStylest intrinsic class mx.styles.CSSTextStyles { static function addTextStyles(o:Object, bColor:Boolean):Void; }; !__Packages.mx.styles.StyleManager!__Packages.mx.styles.StyleManager Button.swf$U?mx.styles.StyleManager intrinsic class mx.styles.StyleManager { static var TextFormatStyleProps:Object; static var TextStyleMap:Object; static var colorNames:Object; static var colorStyles:Object; static function getColorName(colorName:String):Number; static var inheritingStyles:Object; static function isColorName(colorName:String):Boolean; static function isColorStyle(styleName:String):Boolean; static function isInheritingStyle(styleName:String):Boolean; static function registerColorName(colorName:String, colorValue:Number):Void; static function registerColorStyle(styleName:String):Void; static function registerInheritingStyle(styleName:String):Void; };  BoundingBox Button.swf SimpleButton Button.swfBorder Button.swf RectBorder Button.swf ButtonSkin Button.swf__Packages.mx.controls.Button Button.swfmx.controls.Buttonq import mx.core.UIObject; import mx.controls.SimpleButton; import mx.core.UIComponent; [Event("click")] [TagName("Button")] [IconFile("Button.png")] intrinsic class mx.controls.Button extends mx.controls.SimpleButton { public function Button(); public var __get__icon:Function; public var __get__label:Function; public var __get__labelPlacement:Function; public var __label:String; public var __labelPlacement:String; public var _color; public function _getIcon(Void):String; public var _iconLinkageName:String; [Bindable] [ChangeEvent("click")] public var _inherited_selected:Boolean; public function _setIcon(linkage):Void; public var borderW:Number; public var btnOffset:Number; public function calcSize(tag:Number, ref:Object):Void; public var centerContent:Boolean; public var className:String; public var clipParameters:Object; public function createChildren(Void):Void; public function draw(); public var falseDisabledIcon:String; public var falseDisabledSkin:String; public var falseDownIcon:String; public var falseDownSkin:String; public var falseOverIcon:String; public var falseOverSkin:String; public var falseUpIcon:String; public var falseUpSkin:String; public function getBtnOffset(Void):Number; public function getLabel(Void):String; public function getLabelPlacement(Void):String; public var hitArea_mc:MovieClip; function get icon():String; [Inspectable(defaultValue="")] function set icon(linkage); public function init(Void):Void; public var initIcon; public function invalidateStyle(c:String):Void; [Inspectable(defaultValue="Button")] function set label(lbl:String); function get label():String; public var labelPath:Object; [Inspectable(enumeration="left,right,top,bottom"defaultValue="right")] function set labelPlacement(val:String); function get labelPlacement():String; static var mergedClipParameters:Boolean; public function onRelease(Void):Void; public function setColor(c:Number):Void; public function setEnabled(enable:Boolean):Void; public function setHitArea(w:Number, h:Number); public function setLabel(label:String):Void; public function setLabelPlacement(val:String):Void; public function setSkin(tag:Number, linkageName:String, initobj:Object):MovieClip; public function setView(offset:Number):Void; public function size(Void):Void; static var symbolName:String; static var symbolOwner; public var trueDisabledIcon:String; public var trueDisabledSkin:String; public var trueDownIcon:String; public var trueDownSkin:String; public var trueOverIcon:String; public var trueOverSkin:String; public var trueUpIcon:String; public var trueUpSkin:String; static var version:String; public function viewSkin(varName:String):Void; };  hhhhh PropSheet::ActiveTab7641!PublishGifProperties::PaletteName PublishRNWKProperties::speed256K0"PublishHtmlProperties::StartPaused0%PublishFormatProperties::htmlFileNamestorage_dialog.html PublishQTProperties::LayerOption PublishQTProperties::AlphaOption"PublishQTProperties::MatchMovieDim1Vector::Debugging Permitted0PublishProfileProperties::nameDefaultPublishHtmlProperties::Loop1PublishFormatProperties::jpeg0PublishQTProperties::Width215$PublishPNGProperties::OptimizeColors1&PublishRNWKProperties::speedSingleISDN0&PublishRNWKProperties::singleRateAudio0Vector::External Player%PublishHtmlProperties::showTagWarnMsg1PublishHtmlProperties::Units04PublishHtmlProperties::UsingDefaultAlternateFilename1PublishGifProperties::Smooth1%PublishRNWKProperties::mediaCopyright(c) 2000#PublishRNWKProperties::flashBitRate1200Vector::Compress Movie1Vector::Package Paths&PublishFormatProperties::flashFileName..\..\storage_dialog.swf'PublishFormatProperties::gifDefaultName1%PublishFormatProperties::projectorMac0"PublishGifProperties::DitherOption!PublishRNWKProperties::exportSMIL1 PublishRNWKProperties::speed384K0"PublishRNWKProperties::exportAudio1Vector::FireFox0PublishHtmlProperties::Quality4(PublishHtmlProperties::VerticalAlignment1$PublishFormatProperties::pngFileNamestorage_dialog.pngPublishFormatProperties::html0"PublishPNGProperties::FilterOption'PublishRNWKProperties::mediaDescriptionVector::Override Sounds0!PublishHtmlProperties::DeviceFont0-PublishFormatProperties::generatorDefaultName1PublishQTProperties::Flatten1PublishPNGProperties::BitDepth24-bit with AlphaPublishPNGProperties::Smooth1"PublishGifProperties::DitherSolids0PublishGifProperties::Interlace0PublishJpegProperties::DPI4718592Vector::Quality80Vector::Protect0"PublishHtmlProperties::DisplayMenu1*PublishHtmlProperties::HorizontalAlignment12PublishHtmlProperties::VersionDetectionIfAvailable0Vector::Template0*PublishFormatProperties::generatorFileNamestorage_dialog.swt(PublishFormatProperties::rnwkDefaultName1(PublishFormatProperties::jpegDefaultName1PublishFormatProperties::gif0PublishGifProperties::Loop1PublishGifProperties::Width215$PublishRNWKProperties::mediaKeywords!PublishRNWKProperties::mediaTitlePublishRNWKProperties::speed28K1#PublishFormatProperties::qtFileNamestorage_dialog.mov"PublishPNGProperties::DitherOption#PublishGifProperties::PaletteOption#PublishGifProperties::MatchMovieDim1$PublishRNWKProperties::speedDualISDN0$PublishRNWKProperties::realVideoRate100000PublishJpegProperties::Quality80PublishFormatProperties::flash1#PublishPNGProperties::PaletteOption#PublishPNGProperties::MatchMovieDim1$PublishJpegProperties::MatchMovieDim1Vector::Package Export Frame1!PublishProfileProperties::version1PublishHtmlProperties::Align0-PublishFormatProperties::projectorWinFileNamestorage_dialog.exe'PublishFormatProperties::pngDefaultName10PublishFormatProperties::projectorMacDefaultName1#PublishQTProperties::PlayEveryFrame0"PublishPNGProperties::DitherSolids0"PublishJpegProperties::Progressive0Vector::Debugging PasswordVector::Omit Trace Actions0PublishHtmlProperties::Height138PublishHtmlProperties::Width215%PublishFormatProperties::jpegFileNamestorage_dialog.jpg)PublishFormatProperties::flashDefaultName0PublishPNGProperties::Interlace0PublishGifProperties::Height138PublishJpegProperties::Size0Vector::DeviceSound0Vector::TopDown0'PublishHtmlProperties::TemplateFileNameC:\Documents and Settings\bradneuberg\Local Settings\Application Data\Macromedia\Flash MX 2004\en\Configuration\Html\Default.html!PublishHtmlProperties::WindowMode02PublishHtmlProperties::UsingDefaultContentFilename1-PublishFormatProperties::projectorMacFileNamestorage_dialog.hqx(PublishFormatProperties::htmlDefaultName1PublishFormatProperties::rnwk0PublishFormatProperties::png0PublishQTProperties::Height138%PublishPNGProperties::RemoveGradients0PublishGifProperties::MaxColors255'PublishGifProperties::TransparentOptionPublishGifProperties::LoopCountPublishRNWKProperties::speed56K1Vector::Report0+PublishHtmlProperties::OwnAlternateFilename(PublishHtmlProperties::AlternateFilename&PublishHtmlProperties::ContentFilename"PublishFormatProperties::generator0$PublishGifProperties::OptimizeColors1"PublishRNWKProperties::audioFormat0Vector::Version7Vector::Event Format0Vector::Stream Compress7PublishFormatProperties::qt0PublishPNGProperties::Height138PublishPNGProperties::Width215%PublishGifProperties::RemoveGradients0 PublishRNWKProperties::speed512K0PublishJpegProperties::Height138Vector::ActionScriptVersion2Vector::Event Compress7PublishHtmlProperties::Scale00PublishFormatProperties::projectorWinDefaultName1PublishQTProperties::Looping0*PublishQTProperties::UseQTSoundCompression0!PublishPNGProperties::PaletteName!PublishPNGProperties::Transparent0&PublishGifProperties::TransparentAlpha128PublishGifProperties::Animated0"PublishRNWKProperties::mediaAuthor(PublishRNWKProperties::speedCorporateLAN0&PublishRNWKProperties::showBitrateDlog1"PublishRNWKProperties::exportFlash1PublishJpegProperties::Width215Vector::Stream Format0"PublishHtmlProperties::VersionInfo$PublishFormatProperties::gifFileNamestorage_dialog.gif&PublishFormatProperties::qtDefaultName1"PublishQTProperties::PausedAtStart0%PublishQTProperties::ControllerOption0PublishPNGProperties::MaxColors255,PublishHtmlProperties::UsingOwnAlternateFile0%PublishFormatProperties::rnwkFileNamestorage_dialog.smil%PublishFormatProperties::projectorWin0%PublishFormatProperties::defaultNames0 CColorDef3PfP0PHP`Px333(3f<03CH3F`3Hxf0f30ff(0f5Hf<`f@x3330333xf3d03]H3Z`3Xx3333303f3PPH33Px`33Px33Pf30f33PHff3(PHf3<x`f3Cxf3Ffff`f03f0ffx0fkHfd`f`x3f033fPH3ffxPH3fdx`3f]x3fZff0f3fPHfff`ffP0xffPxffPH3HfHxH̙n`hx3H33x`3fx`3xx`3̙kx3dfHf3x`ff0xfx0xf̙dxf]`3`f``x`px3`33x3fx3x3xx3nf`f3xffxfxfxxfkx3xfxxxxx3x333f333xfxf3fffffxxH3HfH(H2`8x`3 `f`̙`(`0xx3xfxx x(xPx3H33x`f3x`3(x`35x3<3`33xf3x̙3x3(x323x33f3 333(xfH3fx`ff0xf(0xf<xfCf`3fxffx̙fxf(xf5fx3ffffff((xH3x`f0x̙PPP`3xfx̙P̙(P<x3f̙(xx`3xfxPxPd`3xfx̙PPx3f(xx3fxx3f̙xx3ff`zf*]"PublishQTProperties::QTSndSettingsCQTAudioSettingsh 8PublishJpegProperties::Size0Vector::DeviceSound0Vector::TopDown0'PublishHtmlProperties::TemplateFileNameC:\Documents and Settings\bradneuberg\Local Settings\Application Data\Macromedia\Flash MX 2004\en\Configuration\Html\Default.html!PublishHtmlProperties::WindowMode02PublishHtmlProperties::UsingDefaultContentFilename1-PublishFormatProperties::projectorMacFileNamestorage_dialog.hqx(PublishFormatProperties::htmlDefaultName1PublishFormatProperties::rnwk0PublishFormatProperties::png0PublishQTProperties::Height138%PublishPNGProperties::RemoveGradients0PublishGifProperties::MaxColors255'PublishGifProperties::TransparentOptionPublishGifProperties::LoopCountPublishRNWKProperties::speed56K1Vector::Report0+PublishHtmlProperties::OwnAlternateFilename(PublishHtmlProperties::AlternateFilename&PublishHtmlProperties::ContentFilename"PublishFormatProperties::generator0$PublishGifProperties::OptimizeColors1"PublishRNWKProperties::audioFormat0Vector::Version7Vector::Event Format0Vector::Stream Compress7PublishFormatProperties::qt0PublishPNGProperties::Height138PublishPNGProperties::Width215%PublishGifProperties::RemoveGradients0 PublishRNWKProperties::speed512K0PublishJpegProperties::Height138Vector::ActionScriptVersion2Vector::Event Compress7PublishHtmlProperties::Scale00PublishFormatProperties::projectorWinDefaultName1PublishQTProperties::Looping0*PublishQTProperties::UseQTSoundCompression0!PublishPNGProperties::PaletteName!PublishPNGProperties::Transparent0&PublishGifProperties::TransparentAlpha128PublishGifProperties::Animated0"PublishRNWKProperties::mediaAuthor(PublishRNWKProperties::speedCorporateLAN0&PublishRNWKProperties::showBitrateDlog1"PublishRNWKProperties::exportFlash1PublishJpegProperties::Width215Vector::Stream Format0"PublishHtmlProperties::VersionInfo$PublishFormatProperties::gifFileNamestorage_dialog.gif&PublishFormatProperties::qtDefaultName1"PublishQTProperties::PausedAtStart0%PublishQTProperties::ControllerOption0PublishPNGProperties::MaxColors255,PublishHtmlProperties::UsingOwnAlternateFile0%PublishFormatProperties::rnwkFileNamestorage_dialog.smil%PublishFormatProperties::projectorWin0%PublishFormatProperties::defaultNames0 CColorDef3PfP0PHP`Px333(3f<03CH3F`3Hxf0f30ff(0f5Hf<`f@x3330333xf3d03]H3Z`3Xx3333303f3PPH33Px`33Px33Pf30f33PHff3(PHf3<x`f3Cxf3Ffff`f03f0ffx0fkHfd`f`x3f033fPH3ffxPH3fdx`3f]x3fZff0f3fPHfff`ffP0xffPxffPH3HfHxH̙n`hx3H33x`3fx`3xx`3̙kx3dfHf3x`ff0xfx0xf̙dxf]`3`f``x`px3`33x3fx3x3xx3nf`f3xffxfxfxxfkx3xfxxxxx3x333f333xfxf3fffffxxH3HfH(H2`8x`3 `f`̙`(`0xx3xfxx x(xPx3H33x`f3x`3(x`35x3<3`33xf3x̙3x3(x323x33f3 333(xfH3fx`ff0xf(0xf<xfCf`3fxffx̙fxf(xf5fx3ffffff((xH3x`f0x̙PPP`3xfx̙P̙(P<x3f̙(xx`3xfxPxPd`3xfx̙PPx3f(xx3fxx3f̙xx3fRemoveGradients0 PublishRNWKProperties::speed512K0PublishJpegProperties::Height138Vector::ActionScriptVersion2Vector::Event Compress7PublishHtmlProperties::Scale00PublishFormatProperties::projectorWinDefaultName1PublishQTProperties::Looping0*PublishQTProperties::UseQTSoundCompression0!PublishPNGProperties::PaletteName!PublishPNGProperties::Transparent0&PublishGifProperties::TransparentAlpha128PublishGifProperties::Animated0"PublishRNWKProperties::mediaAuthor(PublishRNWKProperties::speedCorporateLAN0&PublishRNWKProperties::showBitrateDlog1"PublishRNWKProperties::exportFlash1PublishJpegProperties::Width215Vector::Stream Format0"PublishHtmlProperties::VersionInfo$PublishFormatProperties::gifFileNamestorage_dialog.gif&PublishFormatProperties::qtDefaultName1"PublishQTProperties::PausedAtStart0%PublishQTProperties::ControllerOption0PublishPNGProperties::MaxColors255,PublishHtmlProperties::UsingOwnAlternateFile0%PublishFormatProperties::rnwkFileNamestorage_dialog.smil%PublishFormatProperties::projectorWin0%PublishFormatProperties::defaultNames0 CColorDef3PfP0PHP`Px333(3f<03CH3F`3Hxf0f3f`zf*]"PublishQTProperties::QTSndSettingsCQTAudioSettin0ff(0f5Hf<`f@x3330333xf3d03]H3Z`3Xx3333303f3PPH33Px`33Px33Pf30f33PHff3(PHf3<x`f3Cxf3Ffff`f03f0ffx0fkHfd`fgsh `x3f033fPH3ffxPH3fdx`3f]x3fZff0f3fPHfff`ffP0xffPxffPH3HfHxH̙n`hx3H33x`3fx`3xx`3̙kx3dfHf3x`ff0xfx0xf̙dxf]`3`f``x`px3`33x3fx3x3xx3nf`f3xffxfxfxxfkx3xfxxxxx3x333f333xfxf3fffffxxH3HfH(H2`8x`3 `f`̙`(`0xx3xfxx x(xPx3H33x`f3x`3(x`35x3<3`33xf3x̙3x3(x323x33f3 333(xfH3fx`ff0xf(0xf<xfCf`3fxffx̙fxf(xf5fx3ffffff((xH3x`f0x̙PPP`3xfx̙P̙(P<x3f̙(xx`3xfxPxPd`3xfx̙PPx3f(xx3fxx3f̙xx3ff`zf*]"PublishQTProperties::QTSndSettingsCQTAudioSettingsh  __CPAN_FILE__ src/storage/__package__.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.kwCompoundRequire({common:["dojo.storage"], browser:["dojo.storage.browser"]}); dojo.provide("dojo.storage.*");

__CPAN_FILE__ src/storage/__package__.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["kwCompoundRequire", {common:["dojo.storage"], browser:["dojo.storage.browser"]}], ["provide", "dojo.storage.*"]], definePackage:function (dojo) { dojo.kwCompoundRequire({common:["dojo.storage"], browser:["dojo.storage.browser"]}); dojo.provide("dojo.storage.*"); }});

__CPAN_FILE__ src/storage/Storage.as /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/

import DojoExternalInterface;

class Storage { public static var SUCCESS = "success"; public static var FAILED = "failed"; public static var PENDING = "pending";

	public var so;

	public function Storage(){
		//getURL("javascript:dojo.debug('FLASH:Storage constructor')");
		DojoExternalInterface.initialize();
		DojoExternalInterface.addCallback("put", this, put);
		DojoExternalInterface.addCallback("get", this, get);
		DojoExternalInterface.addCallback("showSettings", this, showSettings);
		DojoExternalInterface.addCallback("clear", this, clear);
		DojoExternalInterface.addCallback("getKeys", this, getKeys);
		DojoExternalInterface.addCallback("remove", this, remove);
		DojoExternalInterface.loaded();

		// preload the System Settings finished button movie for offline
		// access so it is in the cache
		_root.createEmptyMovieClip("_settingsBackground", 1);
		// getURL("javascript:alert('"+DojoExternalInterface.dojoPath+"');");
		_root._settingsBackground.loadMovie(DojoExternalInterface.dojoPath + "storage_dialog.swf");
	}

	public function put(keyName, keyValue, namespace){
		// Get the SharedObject for these values and save it
		so = SharedObject.getLocal(namespace);

		// prepare a storage status handler
		var self = this;
		so.onStatus = function(infoObject:Object){
			//getURL("javascript:dojo.debug('FLASH: onStatus, infoObject="+infoObject.code+"')");

			// delete the data value if the request was denied
			if (infoObject.code == "SharedObject.Flush.Failed"){
				delete self.so.data[keyName];
			}

			var statusResults;
			if(infoObject.code == "SharedObject.Flush.Failed"){
				statusResults = Storage.FAILED;
			}else if(infoObject.code == "SharedObject.Flush.Pending"){
				statusResults = Storage.PENDING;
			}else if(infoObject.code == "SharedObject.Flush.Success"){
				statusResults = Storage.SUCCESS;
			}
			//getURL("javascript:dojo.debug('FLASH: onStatus, statusResults="+statusResults+"')");

			// give the status results to JavaScript
			DojoExternalInterface.call("dojo.storage._onStatus", null, statusResults, 
																 keyName);
		}

		// save the key and value
		so.data[keyName] = keyValue;
		var flushResults = so.flush();

		// return results of this command to JavaScript
		var statusResults;
		if(flushResults == true){
			statusResults = Storage.SUCCESS;
		}else if(flushResults == "pending"){
			statusResults = Storage.PENDING;
		}else{
			statusResults = Storage.FAILED;
		}

		DojoExternalInterface.call("dojo.storage._onStatus", null, statusResults, 
															 keyName);
	}

	public function get(keyName, namespace){
		// Get the SharedObject for these values and save it
		so = SharedObject.getLocal(namespace);
		var results = so.data[keyName];

		return results;
	}

	public function showSettings(){
		// Show the configuration options for the Flash player, opened to the
		// section for local storage controls (pane 1)
		System.showSettings(1);

		// there is no way we can intercept when the Close button is pressed, allowing us
		// to hide the Flash dialog. Instead, we need to load a movie in the
		// background that we can show a close button on.
		_root.createEmptyMovieClip("_settingsBackground", 1);
		_root._settingsBackground.loadMovie(DojoExternalInterface.dojoPath + "storage_dialog.swf");
	}

	public function clear(namespace){
		so = SharedObject.getLocal(namespace);
		so.clear();
		so.flush();
	}

	public function getKeys(namespace){
		// Returns a list of the available keys in this namespace

		// get the storage object
		so = SharedObject.getLocal(namespace);

		// get all of the keys
		var results = new Array();
		for(var i in so.data)
			results.push(i);	

		// join the keys together in a comma seperated string
		results = results.join(",");

		return results;
	}

	public function remove(keyName, namespace){
		// Removes a key

		// get the storage object
		so = SharedObject.getLocal(namespace);

		// delete this value
		delete so.data[keyName];

		// save the changes
		so.flush();
	}

	static function main(mc){
		//getURL("javascript:dojo.debug('FLASH: storage loaded')");
		_root.app = new Storage(); 
	}
}




__CPAN_DIR__ src/storage/java __CPAN_FILE__ src/storage/java/DojoFileStorageProvider.class -b :; :<= > ? @ A B CDEF G H H I BJ > K L M NOP<init>()VCodeLineNumberTableLocalVariableTablethisLDojoFileStorageProvider;load&(Ljava/lang/String;)Ljava/lang/String;filePathLjava/lang/String;resultsLjava/lang/StringBuffer;readerLjava/io/BufferedReader;line ExceptionsQRsave'(Ljava/lang/String;Ljava/lang/String;)VcontentwriterLjava/io/PrintWriter;remove(Ljava/lang/String;)VfLjava/io/File; SourceFileDojoFileStorageProvider.java java/lang/StringBufferjava/io/BufferedReaderjava/io/FileReader 5 S TU VW X YUjava/io/PrintWriterjava/io/BufferedWriterjava/io/FileWriter Z [ \5 java/io/File ]^ _^ `^ a^DojoFileStorageProviderjava/lang/Objectjava/io/IOExceptionjava/io/FileNotFoundException(Ljava/io/Reader;)VreadLine()Ljava/lang/String;append,(Ljava/lang/String;)Ljava/lang/StringBuffer;closetoString(Ljava/lang/String;Z)V(Ljava/io/Writer;)Vprintexists()Z isDirectoryisFiledelete!/* !"#$8YMYY+N:-Y:, W- , "%,/3 48!"8%&0'( )*+&,-./0v" YYY+N-,-"%'!( *"!""%&"1& 23,-.45~,Y+M, ,,,,W, ./2&3+5 ,!",%& #67,-.89 __CPAN_FILE__ src/storage/java/DojoFileStorageProvider.java /** This is a simple class that can load, save, and remove files from the native file system. It is needed by Safari and Opera for the dojo.storage.browser.FileStorageProvider, since both of these platforms have no native way to talk to the file system for file:// URLs. Safari supports LiveConnect, but only for talking to an applet, not for generic scripting by JavaScript, so we must have an applet.

	@author Brad Neuberg, bkn3@columbia.edu
*/

import java.io.*; import java.util.*;

public class DojoFileStorageProvider{ public String load(String filePath) throws IOException, FileNotFoundException{ StringBuffer results = new StringBuffer(); BufferedReader reader = new BufferedReader( new FileReader(filePath)); String line = null; while((line = reader.readLine()) != null){ results.append(line); }

		reader.close();

		return results.toString();
	}

	public void save(String filePath, String content) 
			throws IOException, FileNotFoundException{
		PrintWriter writer = new PrintWriter(
					new BufferedWriter(
						new FileWriter(filePath, false)));
		writer.print(content);

		writer.close();
	}

	public void remove(String filePath)
			throws IOException, FileNotFoundException{
		File f = new File(filePath);

		if(f.exists() == false || f.isDirectory()){
			return;
		}

		if(f.exists() && f.isFile()){
			f.delete();
		}
	}
}

__CPAN_DIR__ src/io __CPAN_FILE__ src/io/xip_server.html <!-- /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

		Licensed under the Academic Free License version 2.1 or above OR the
		modified BSD license. For more information on Dojo licensing, see:

			http://dojotoolkit.org/community/licensing.shtml
	*/
	Pieces taken from Dojo source to make this file stand-alone
-->
<html>
<head>
	<title></title>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
	<script type="text/javascript" src="isAllowed.js"></script>
	<!--
	BY DEFAULT THIS FILE DOES NOT WORK SO THAT YOU DON'T ACCIDENTALLY EXPOSE
	ALL OF YOUR XHR-ENABLED SERVICES ON YOUR SITE. 

	In order for this file to work, you need to uncomment the script element,
	and you should define a function with the following signature:

	function isAllowedRequest(request){
		return false;	
	}

	Return true out of the function if you want to allow the cross-domain request.

	DON'T DEFINE THIS FUNCTION IN THIS FILE! Define it in a separate file called isAllowed.js
	and include it in this page with a script tag that has a src attribute pointing to the file.
	See the very first script tag in this file for an example. You do not have to place the
	script file in the same directory as this file, just update the path above if you move it
	somewhere else.

	Customize the isAllowedRequest function to restrict what types of requests are allowed
	for this server. The request object has the following properties:
	- requestHeaders: an object with the request headers that are to be added to
	                  the XHR request.
	- method: the HTTP method (GET, POST, etc...)
	- uri: The URI for the request.
	- data: The URL-encoded data for the request. For a GET request, this would
	        be the querystring parameters. For a POST request, it wll be the
	        body data.

	See xip_client.html for more info on the xip fragment identifier protocol.	
	-->

	<!-- Security protection: uncomment the script tag to enable. -->
	<!-- script type="text/javascript" -->
	// <!--
		//Core XHR handling taken from Dojo IO code.
		dojo = {};
		dojo.hostenv = {};
		// These are in order of decreasing likelihood; this will change in time.
		dojo.hostenv._XMLHTTP_PROGIDS = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0'];

		dojo.hostenv.getXmlhttpObject = function(){
				var http = null;
			var last_e = null;
			try{ http = new XMLHttpRequest(); }catch(e){}
				if(!http){
				for(var i=0; i<3; ++i){
					var progid = dojo.hostenv._XMLHTTP_PROGIDS[i];
					try{
						http = new ActiveXObject(progid);
					}catch(e){
						last_e = e;
					}

					if(http){
						dojo.hostenv._XMLHTTP_PROGIDS = [progid];  // so faster next time
						break;
					}
				}

				/*if(http && !http.toString) {
					http.toString = function() { "[object XMLHttpRequest]"; }
				}*/
			}

			if(!http){
				throw "xip_server.html: XMLHTTP not available: " + last_e;
			}

			return http;
		}

		dojo.setHeaders = function(http, headers){
			if(headers) {
				for(var header in headers) {
					var headerValue = headers[header];
					http.setRequestHeader(header, headerValue);
				}
			}
		}

	//MSIE has the lowest limit for URLs with fragment identifiers,
	//at around 4K. Choosing a slightly smaller number for good measure.
	xipUrlLimit = 4000;
	xipIdCounter = 1;

	function xipServerInit(){
		xipStateId = "";
		xipCurrentHash = "";
		xipRequestMessage = "";
		xipResponseParts = [];
		xipPartIndex = 0;
	}

	function pollHash(){
		//Can't use location.hash because at least Firefox does a decodeURIComponent on it.
		var urlParts = window.location.href.split("#");
		if(urlParts.length == 2){
			var newHash = urlParts[1];
			if(newHash != xipCurrentHash){
				try{
					messageReceived(newHash);
				}catch(e){
					//Make sure to not keep processing the error hash value.
					xipCurrentHash = newHash;
					throw e;
				}
				xipCurrentHash = newHash;
			}
		}
	}

	function messageReceived(encodedData){
		var msg = unpackMessage(encodedData);

		switch(msg.command){
			case "ok":
				sendResponsePart();
				break;
			case "start":
				xipRequestMessage = "";
				xipRequestMessage += msg.message;
				setClientUrl("ok");
				break;
			case "part":
				xipRequestMessage += msg.message;			
				setClientUrl("ok");
				break;
			case "end":
				setClientUrl("ok");
				xipRequestMessage += msg.message;
				sendXhr();
				break;
		}
	}

	function sendResponse(encodedData){
		//Break the message into parts, if necessary.
		xipResponseParts = [];
		var resData = encodedData;
		var urlLength = xipClientUrl.length;
		var partLength = xipUrlLimit - urlLength;
		var resIndex = 0;

		while((resData.length - resIndex) + urlLength > xipUrlLimit){
			var part = resData.substring(resIndex, resIndex + partLength);
			//Safari will do some extra hex escaping unless we keep the original hex
			//escaping complete.
			var percentIndex = part.lastIndexOf("%");
			if(percentIndex == part.length - 1 || percentIndex == part.length - 2){
				part = part.substring(0, percentIndex);
			}
			xipResponseParts.push(part);
			resIndex += part.length;
		}
		xipResponseParts.push(resData.substring(resIndex, resData.length));

		xipPartIndex = 0;
		sendResponsePart();
	}

	function sendResponsePart(){
		if(xipPartIndex < xipResponseParts.length){
			//Get the message part.
			var partData = xipResponseParts[xipPartIndex];

			//Get the command.
			var cmd = "part";
			if(xipPartIndex + 1 == xipResponseParts.length){
				cmd = "end";
			}else if (xipPartIndex == 0){
				cmd = "start";
			}

			setClientUrl(cmd, partData);
			xipPartIndex++;
		}else{
			xipServerInit();
		}
	}

	function setClientUrl(cmd, message){
		var clientUrl = makeClientUrl(cmd, message);
		//Safari won't let us replace across domains.
		if(navigator.userAgent.indexOf("Safari") == -1){
			parent.location.replace(clientUrl);
		}else{
			parent.location = clientUrl;
		}
	}

	function makeClientUrl(cmd, message){
		var clientUrl = xipClientUrl + "#" + (xipIdCounter++) + ":" + cmd;
		if(message){
			clientUrl += ":" + message;
		}
		return clientUrl
	}

	function xhrDone(xhr){
		/* Need to pull off and return the following data:
			- responseHeaders
			- status
			- statusText
			- responseText
		*/
		var response = {};

		if(typeof(xhr.getAllResponseHeaders) != "undefined"){
			var allHeaders = xhr.getAllResponseHeaders();
			if(allHeaders){
				response.responseHeaders = allHeaders;
			}
		}

		if(xhr.status == 0 || xhr.status){
			response.status = xhr.status;
		}

		if(xhr.statusText){
			response.statusText = xhr.statusText;
		}

		if(xhr.responseText){
			response.responseText = xhr.responseText;
		}

		//Build a string of the response object.
		var result = "";
		var isFirst = true;
		for (var param in response){
			if(isFirst){
				isFirst = false;
			}else{
				result += "&";
			}
			result += param + "=" + encodeURIComponent(response[param]);
		}
		sendResponse(result);
	}

	function sendXhr(){
		var request = {};
		var nvPairs = xipRequestMessage.split("&");
		var i = 0;
		var nameValue = null;
		for(i = 0; i < nvPairs.length; i++){
			if(nvPairs[i]){
				var nameValue = nvPairs[i].split("=");
				request[decodeURIComponent(nameValue[0])] = decodeURIComponent(nameValue[1]);
			}
		}

		//Split up the request headers, if any.
		var headers = {};
		if(request.requestHeaders){
			nvPairs = request.requestHeaders.split("\r\n");
			for(i = 0; i < nvPairs.length; i++){
				if(nvPairs[i]){
					nameValue = nvPairs[i].split(": ");
					headers[decodeURIComponent(nameValue[0])] = decodeURIComponent(nameValue[1]);
				}
			}

			request.requestHeaders = headers;
		}

		if(isAllowedRequest(request)){

			//The request is allowed, so set up the XHR object.
			var xhr = dojo.hostenv.getXmlhttpObject();

			//Start timer to look for readyState.
			var xhrIntervalId = setInterval(function(){

				if(xhr.readyState == 4){
					clearInterval(xhrIntervalId);
					xhrDone(xhr);
				}
			}, 10);

			//Actually start up the XHR request.
			xhr.open(request.method, request.uri, true);
			dojo.setHeaders(xhr, request.requestHeaders);

			var content = "";
			if(request.data){
				content = request.data;
			}

			try{
				xhr.send(content);
			}catch(e){
				if(typeof xhr.abort == "function"){
					xhr.abort();
					xhrDone({status: 404, statusText: "xip_server.html error: " + e});
				}
			}
		}
	}

	function unpackMessage(encodedMessage){
		var parts = encodedMessage.split(":");
		var command = parts[1];
		encodedMessage = parts[2] || "";

		var config = null;
		if(command == "init"){
			var configParts = encodedMessage.split("&");
			config = {};
			for(var i = 0; i < configParts.length; i++){
				var nameValue = configParts[i].split("=");
				config[decodeURIComponent(nameValue[0])] = decodeURIComponent(nameValue[1]);
			}
		}
		return {command: command, message: encodedMessage, config: config};
	}

	function onServerLoad(){
		xipServerInit();

		//Decode the init params
		var config = unpackMessage(window.location.href.split("#")[1]).config;

		xipStateId = config.id;
		xipClientUrl = config.client;

		//Make sure we don't have a javascript: url, just for good measure.
		if(xipClientUrl.split(":")[0].match(/javascript/i)){
			throw "Invalid client URL";
		}
		if(!xipStateId.match(/^XhrIframeProxy[0-9]+$/)){
			throw "Invalid state ID";
		}

		xipUseFrameRecursion = config["fr"];

		setInterval(pollHash, 10);

		if(xipUseFrameRecursion == "true"){
			var serverUrl = window.location.href.split("#")[0];
			document.getElementById("iframeHolder").innerHTML = '<iframe name="'
				+ xipStateId + '_clientEndPoint'
				+ '" src="javascript:false">'
				+ '</iframe>';
			var iframeNode = document.getElementsByTagName("iframe")[0];
			iframeNode.src = makeClientUrl("init", 'id=' + xipStateId + '&server='
				+ encodeURIComponent(serverUrl) + '&fr=endpoint');
		}else{
			setClientUrl("loaded");
		}
	}

	if(typeof(window.addEventListener) == "undefined"){
		window.attachEvent("onload", onServerLoad);
	}else{
		window.addEventListener('load', onServerLoad, false);
	}
	// -->
	</script>
</head>
<body>
	<h4>The Dojo Toolkit -- xip_server.html</h4>

	<p>This file is used for Dojo's XMLHttpRequest Iframe Proxy. This is the the file
	that should go on the server that will actually be doing the XHR request.</p>
	<div id="iframeHolder"></div>
</body>
</html>

__CPAN_FILE__ src/io/cometd.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["require", "dojo.io.common"], ["provide", "dojo.io.cometd"], ["require", "dojo.AdapterRegistry"], ["require", "dojo.json"], ["require", "dojo.io.BrowserIO"], ["require", "dojo.io.IframeIO"], ["require", "dojo.io.ScriptSrcIO"], ["require", "dojo.io.cookie"], ["require", "dojo.event.*"], ["require", "dojo.lang.common"], ["require", "dojo.lang.func"]], definePackage:function (dojo) { dojo.require("dojo.io.common"); dojo.provide("dojo.io.cometd"); dojo.require("dojo.AdapterRegistry"); dojo.require("dojo.json"); dojo.require("dojo.io.BrowserIO"); dojo.require("dojo.io.IframeIO"); dojo.require("dojo.io.ScriptSrcIO"); dojo.require("dojo.io.cookie"); dojo.require("dojo.event.*"); dojo.require("dojo.lang.common"); dojo.require("dojo.lang.func"); cometd = new function () { this.initialized = false; this.connected = false; this.connectionTypes = new dojo.AdapterRegistry(true); this.version = 0.1; this.minimumVersion = 0.1; this.clientId = null; this._isXD = false; this.handshakeReturn = null; this.currentTransport = null; this.url = null; this.lastMessage = null; this.globalTopicChannels = {}; this.backlog = []; this.tunnelInit = function (childLocation, childDomain) { }; this.tunnelCollapse = function () { dojo.debug("tunnel collapsed!"); }; this.init = function (props, root, bargs) { props = props || {}; props.version = this.version; props.minimumVersion = this.minimumVersion; props.channel = "/meta/handshake"; this.url = root || djConfig["cometdRoot"]; if (!this.url) { dojo.debug("no cometd root specified in djConfig and no root passed"); return; } var bindArgs = {url:this.url, method:"POST", mimetype:"text/json", load:dojo.lang.hitch(this, "finishInit"), content:{"message":dojo.json.serialize([props])}}; var regexp = "^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$"; var r = ("" + window.location).match(new RegExp(regexp)); if (r[4]) { var tmp = r[4].split(":"); var thisHost = tmp[0]; var thisPort = tmp[1] || "80"; r = this.url.match(new RegExp(regexp)); if (r[4]) { tmp = r[4].split(":"); var urlHost = tmp[0]; var urlPort = tmp[1] || "80"; if ((urlHost != thisHost) || (urlPort != thisPort)) { dojo.debug(thisHost, urlHost); dojo.debug(thisPort, urlPort); this._isXD = true; bindArgs.transport = "ScriptSrcTransport"; bindArgs.jsonParamName = "jsonp"; bindArgs.method = "GET"; } } } if (bargs) { dojo.lang.mixin(bindArgs, bargs); } return dojo.io.bind(bindArgs); }; this.finishInit = function (type, data, evt, request) { data = data[0]; this.handshakeReturn = data; if (data["authSuccessful"] == false) { dojo.debug("cometd authentication failed"); return; } if (data.version < this.minimumVersion) { dojo.debug("cometd protocol version mismatch. We wanted", this.minimumVersion, "but got", data.version); return; } this.currentTransport = this.connectionTypes.match(data.supportedConnectionTypes, data.version, this._isXD); this.currentTransport.version = data.version; this.clientId = data.clientId; this.tunnelInit = dojo.lang.hitch(this.currentTransport, "tunnelInit"); this.tunnelCollapse = dojo.lang.hitch(this.currentTransport, "tunnelCollapse"); this.initialized = true; this.currentTransport.startup(data); while (this.backlog.length != 0) { var cur = this.backlog.shift(); var fn = cur.shift(); this[fn].apply(this, cur); } }; this._getRandStr = function () { return Math.random().toString().substring(2, 10); }; this.deliver = function (messages) { dojo.lang.forEach(messages, this._deliver, this); }; this._deliver = function (message) { if (!message["channel"]) { dojo.debug("cometd error: no channel for message!"); return; } if (!this.currentTransport) { this.backlog.push(["deliver", message]); return; } this.lastMessage = message; if ((message.channel.length > 5) && (message.channel.substr(0, 5) == "/meta")) { switch (message.channel) { case "/meta/subscribe": if (!message.successful) { dojo.debug("cometd subscription error for channel", message.channel, ":", message.error); return; } this.subscribed(message.subscription, message); break; case "/meta/unsubscribe": if (!message.successful) { dojo.debug("cometd unsubscription error for channel", message.channel, ":", message.error); return; } this.unsubscribed(message.subscription, message); break; } } this.currentTransport.deliver(message); if (message.data) { var tname = (this.globalTopicChannels[message.channel]) ? message.channel : "/cometd" + message.channel; dojo.event.topic.publish(tname, message); } }; this.disconnect = function () { if (!this.currentTransport) { dojo.debug("no current transport to disconnect from"); return; } this.currentTransport.disconnect(); }; this.publish = function (channel, data, properties) { if (!this.currentTransport) { this.backlog.push(["publish", channel, data, properties]); return; } var message = {data:data, channel:channel}; if (properties) { dojo.lang.mixin(message, properties); } return this.currentTransport.sendMessage(message); }; this.subscribe = function (channel, useLocalTopics, objOrFunc, funcName) { if (!this.currentTransport) { this.backlog.push(["subscribe", channel, useLocalTopics, objOrFunc, funcName]); return; } if (objOrFunc) { var tname = (useLocalTopics) ? channel : "/cometd" + channel; if (useLocalTopics) { this.globalTopicChannels[channel] = true; } dojo.event.topic.subscribe(tname, objOrFunc, funcName); } return this.currentTransport.sendMessage({channel:"/meta/subscribe", subscription:channel}); }; this.subscribed = function (channel, message) { dojo.debug(channel); dojo.debugShallow(message); }; this.unsubscribe = function (channel, useLocalTopics, objOrFunc, funcName) { if (!this.currentTransport) { this.backlog.push(["unsubscribe", channel, useLocalTopics, objOrFunc, funcName]); return; } if (objOrFunc) { var tname = (useLocalTopics) ? channel : "/cometd" + channel; dojo.event.topic.unsubscribe(tname, objOrFunc, funcName); } return this.currentTransport.sendMessage({channel:"/meta/unsubscribe", subscription:channel}); }; this.unsubscribed = function (channel, message) { dojo.debug(channel); dojo.debugShallow(message); }; }; cometd.iframeTransport = new function () { this.connected = false; this.connectionId = null; this.rcvNode = null; this.rcvNodeName = ""; this.phonyForm = null; this.authToken = null; this.lastTimestamp = null; this.lastId = null; this.backlog = []; this.check = function (types, version, xdomain) { return ((!xdomain) && (!dojo.render.html.safari) && (dojo.lang.inArray(types, "iframe"))); }; this.tunnelInit = function () { this.postToIframe({message:dojo.json.serialize([{channel:"/meta/connect", clientId:cometd.clientId, connectionType:"iframe"}])}); }; this.tunnelCollapse = function () { if (this.connected) { this.connected = false; this.postToIframe({message:dojo.json.serialize([{channel:"/meta/reconnect", clientId:cometd.clientId, connectionId:this.connectionId, timestamp:this.lastTimestamp, id:this.lastId}])}); } }; this.deliver = function (message) { if (message["timestamp"]) { this.lastTimestamp = message.timestamp; } if (message["id"]) { this.lastId = message.id; } if ((message.channel.length > 5) && (message.channel.substr(0, 5) == "/meta")) { switch (message.channel) { case "/meta/connect": if (!message.successful) { dojo.debug("cometd connection error:", message.error); return; } this.connectionId = message.connectionId; this.connected = true; this.processBacklog(); break; case "/meta/reconnect": if (!message.successful) { dojo.debug("cometd reconnection error:", message.error); return; } this.connected = true; break; case "/meta/subscribe": if (!message.successful) { dojo.debug("cometd subscription error for channel", message.channel, ":", message.error); return; } dojo.debug(message.channel); break; } } }; this.widenDomain = function (domainStr) { var cd = domainStr || document.domain; if (cd.indexOf(".") == -1) { return; } var dps = cd.split("."); if (dps.length <= 2) { return; } dps = dps.slice(dps.length - 2); document.domain = dps.join("."); return document.domain; }; this.postToIframe = function (content, url) { if (!this.phonyForm) { if (dojo.render.html.ie) { this.phonyForm = document.createElement("<form enctype='application/x-www-form-urlencoded' method='POST' style='display: none;'>"); dojo.body().appendChild(this.phonyForm); } else { this.phonyForm = document.createElement("form"); this.phonyForm.style.display = "none"; dojo.body().appendChild(this.phonyForm); this.phonyForm.enctype = "application/x-www-form-urlencoded"; this.phonyForm.method = "POST"; } } this.phonyForm.action = url || cometd.url; this.phonyForm.target = this.rcvNodeName; this.phonyForm.setAttribute("target", this.rcvNodeName); while (this.phonyForm.firstChild) { this.phonyForm.removeChild(this.phonyForm.firstChild); } for (var x in content) { var tn; if (dojo.render.html.ie) { tn = document.createElement("<input type='hidden' name='" + x + "' value='" + content[x] + "'>"); this.phonyForm.appendChild(tn); } else { tn = document.createElement("input"); this.phonyForm.appendChild(tn); tn.type = "hidden"; tn.name = x; tn.value = content[x]; } } this.phonyForm.submit(); }; this.processBacklog = function () { while (this.backlog.length > 0) { this.sendMessage(this.backlog.shift(), true); } }; this.sendMessage = function (message, bypassBacklog) { if ((bypassBacklog) || (this.connected)) { message.connectionId = this.connectionId; message.clientId = cometd.clientId; var bindArgs = {url:cometd.url || djConfig["cometdRoot"], method:"POST", mimetype:"text/json", content:{message:dojo.json.serialize([message])}}; return dojo.io.bind(bindArgs); } else { this.backlog.push(message); } }; this.startup = function (handshakeData) { dojo.debug("startup!"); dojo.debug(dojo.json.serialize(handshakeData)); if (this.connected) { return; } this.rcvNodeName = "cometdRcv_" + cometd._getRandStr(); var initUrl = cometd.url + "/?tunnelInit=iframe"; if (false && dojo.render.html.ie) { this.rcvNode = new ActiveXObject("htmlfile"); this.rcvNode.open(); this.rcvNode.write("<html>"); this.rcvNode.write("<script>document.domain = '" + document.domain + "'"); this.rcvNode.write("</html>"); this.rcvNode.close(); var ifrDiv = this.rcvNode.createElement("div"); this.rcvNode.appendChild(ifrDiv); this.rcvNode.parentWindow.dojo = dojo; ifrDiv.innerHTML = "<iframe src='" + initUrl + "'></iframe>"; } else { this.rcvNode = dojo.io.createIFrame(this.rcvNodeName, "", initUrl); } }; }; cometd.mimeReplaceTransport = new function () { this.connected = false; this.connectionId = null; this.xhr = null; this.authToken = null; this.lastTimestamp = null; this.lastId = null; this.backlog = []; this.check = function (types, version, xdomain) { return ((!xdomain) && (dojo.render.html.mozilla) && (dojo.lang.inArray(types, "mime-message-block"))); }; this.tunnelInit = function () { if (this.connected) { return; } this.openTunnelWith({message:dojo.json.serialize([{channel:"/meta/connect", clientId:cometd.clientId, connectionType:"mime-message-block"}])}); this.connected = true; }; this.tunnelCollapse = function () { if (this.connected) { this.connected = false; this.openTunnelWith({message:dojo.json.serialize([{channel:"/meta/reconnect", clientId:cometd.clientId, connectionId:this.connectionId, timestamp:this.lastTimestamp, id:this.lastId}])}); } }; this.deliver = cometd.iframeTransport.deliver; this.handleOnLoad = function (resp) { cometd.deliver(dojo.json.evalJson(this.xhr.responseText)); }; this.openTunnelWith = function (content, url) { this.xhr = dojo.hostenv.getXmlhttpObject(); this.xhr.multipart = true; if (dojo.render.html.mozilla) { this.xhr.addEventListener("load", dojo.lang.hitch(this, "handleOnLoad"), false); } else { if (dojo.render.html.safari) { dojo.debug("Webkit is broken with multipart responses over XHR = ("); this.xhr.onreadystatechange = dojo.lang.hitch(this, "handleOnLoad"); } else { this.xhr.onload = dojo.lang.hitch(this, "handleOnLoad"); } } this.xhr.open("POST", (url || cometd.url), true); this.xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); dojo.debug(dojo.json.serialize(content)); this.xhr.send(dojo.io.argsFromMap(content, "utf8")); }; this.processBacklog = function () { while (this.backlog.length > 0) { this.sendMessage(this.backlog.shift(), true); } }; this.sendMessage = function (message, bypassBacklog) { if ((bypassBacklog) || (this.connected)) { message.connectionId = this.connectionId; message.clientId = cometd.clientId; var bindArgs = {url:cometd.url || djConfig["cometdRoot"], method:"POST", mimetype:"text/json", content:{message:dojo.json.serialize([message])}}; return dojo.io.bind(bindArgs); } else { this.backlog.push(message); } }; this.startup = function (handshakeData) { dojo.debugShallow(handshakeData); if (this.connected) { return; } this.tunnelInit(); }; }; cometd.longPollTransport = new function () { this.connected = false; this.connectionId = null; this.authToken = null; this.lastTimestamp = null; this.lastId = null; this.backlog = []; this.check = function (types, version, xdomain) { return ((!xdomain) && (dojo.lang.inArray(types, "long-polling"))); }; this.tunnelInit = function () { if (this.connected) { return; } this.openTunnelWith({message:dojo.json.serialize([{channel:"/meta/connect", clientId:cometd.clientId, connectionType:"long-polling"}])}); this.connected = true; }; this.tunnelCollapse = function () { if (!this.connected) { this.connected = false; dojo.debug("clientId:", cometd.clientId); this.openTunnelWith({message:dojo.json.serialize([{channel:"/meta/reconnect", connectionType:"long-polling", clientId:cometd.clientId, connectionId:this.connectionId, timestamp:this.lastTimestamp, id:this.lastId}])}); } }; this.deliver = cometd.iframeTransport.deliver; this.openTunnelWith = function (content, url) { dojo.io.bind({url:(url || cometd.url), method:"post", content:content, mimetype:"text/json", load:dojo.lang.hitch(this, function (type, data, evt, args) { cometd.deliver(data); this.connected = false; this.tunnelCollapse(); }), error:function () { dojo.debug("tunnel opening failed"); }}); this.connected = true; }; this.processBacklog = function () { while (this.backlog.length > 0) { this.sendMessage(this.backlog.shift(), true); } }; this.sendMessage = function (message, bypassBacklog) { if ((bypassBacklog) || (this.connected)) { message.connectionId = this.connectionId; message.clientId = cometd.clientId; var bindArgs = {url:cometd.url || djConfig["cometdRoot"], method:"post", mimetype:"text/json", content:{message:dojo.json.serialize([message])}, load:dojo.lang.hitch(this, function (type, data, evt, args) { cometd.deliver(data); })}; return dojo.io.bind(bindArgs); } else { this.backlog.push(message); } }; this.startup = function (handshakeData) { if (this.connected) { return; } this.tunnelInit(); }; }; cometd.callbackPollTransport = new function () { this.connected = false; this.connectionId = null; this.authToken = null; this.lastTimestamp = null; this.lastId = null; this.backlog = []; this.check = function (types, version, xdomain) { return dojo.lang.inArray(types, "callback-polling"); }; this.tunnelInit = function () { if (this.connected) { return; } this.openTunnelWith({message:dojo.json.serialize([{channel:"/meta/connect", clientId:cometd.clientId, connectionType:"callback-polling"}])}); this.connected = true; }; this.tunnelCollapse = function () { if (!this.connected) { this.connected = false; this.openTunnelWith({message:dojo.json.serialize([{channel:"/meta/reconnect", connectionType:"long-polling", clientId:cometd.clientId, connectionId:this.connectionId, timestamp:this.lastTimestamp, id:this.lastId}])}); } }; this.deliver = cometd.iframeTransport.deliver; this.openTunnelWith = function (content, url) { var req = dojo.io.bind({url:(url || cometd.url), content:content, mimetype:"text/json", transport:"ScriptSrcTransport", jsonParamName:"jsonp", load:dojo.lang.hitch(this, function (type, data, evt, args) { cometd.deliver(data); this.connected = false; this.tunnelCollapse(); }), error:function () { dojo.debug("tunnel opening failed"); }}); this.connected = true; }; this.processBacklog = function () { while (this.backlog.length > 0) { this.sendMessage(this.backlog.shift(), true); } }; this.sendMessage = function (message, bypassBacklog) { if ((bypassBacklog) || (this.connected)) { message.connectionId = this.connectionId; message.clientId = cometd.clientId; var bindArgs = {url:cometd.url || djConfig["cometdRoot"], mimetype:"text/json", transport:"ScriptSrcTransport", jsonParamName:"jsonp", content:{message:dojo.json.serialize([message])}, load:dojo.lang.hitch(this, function (type, data, evt, args) { cometd.deliver(data); })}; return dojo.io.bind(bindArgs); } else { this.backlog.push(message); } }; this.startup = function (handshakeData) { if (this.connected) { return; } this.tunnelInit(); }; }; cometd.connectionTypes.register("mime-message-block", cometd.mimeReplaceTransport.check, cometd.mimeReplaceTransport); cometd.connectionTypes.register("long-polling", cometd.longPollTransport.check, cometd.longPollTransport); cometd.connectionTypes.register("callback-polling", cometd.callbackPollTransport.check, cometd.callbackPollTransport); cometd.connectionTypes.register("iframe", cometd.iframeTransport.check, cometd.iframeTransport); dojo.io.cometd = cometd; }});

__CPAN_FILE__ src/io/BrowserIO.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.io.BrowserIO"); dojo.require("dojo.io.common"); dojo.require("dojo.lang.array"); dojo.require("dojo.lang.func"); dojo.require("dojo.string.extras"); dojo.require("dojo.dom"); dojo.require("dojo.undo.browser"); if (!dj_undef("window")) { dojo.io.checkChildrenForFile = function (node) { var hasFile = false; var inputs = node.getElementsByTagName("input"); dojo.lang.forEach(inputs, function (input) { if (hasFile) { return; } if (input.getAttribute("type") == "file") { hasFile = true; } }); return hasFile; }; dojo.io.formHasFile = function (formNode) { return dojo.io.checkChildrenForFile(formNode); }; dojo.io.updateNode = function (node, urlOrArgs) { node = dojo.byId(node); var args = urlOrArgs; if (dojo.lang.isString(urlOrArgs)) { args = {url:urlOrArgs}; } args.mimetype = "text/html"; args.load = function (t, d, e) { while (node.firstChild) { dojo.dom.destroyNode(node.firstChild); } node.innerHTML = d; }; dojo.io.bind(args); }; dojo.io.formFilter = function (node) { var type = (node.type || "").toLowerCase(); return !node.disabled && node.name && !dojo.lang.inArray(["file", "submit", "image", "reset", "button"], type); }; dojo.io.encodeForm = function (formNode, encoding, formFilter) { if ((!formNode) || (!formNode.tagName) || (!formNode.tagName.toLowerCase() == "form")) { dojo.raise("Attempted to encode a non-form element."); } if (!formFilter) { formFilter = dojo.io.formFilter; } var enc = /utf/i.test(encoding || "") ? encodeURIComponent : dojo.string.encodeAscii; var values = []; for (var i = 0; i < formNode.elements.length; i++) { var elm = formNode.elements[i]; if (!elm || elm.tagName.toLowerCase() == "fieldset" || !formFilter(elm)) { continue; } var name = enc(elm.name); var type = elm.type.toLowerCase(); if (type == "select-multiple") { for (var j = 0; j < elm.options.length; j++) { if (elm.options[j].selected) { values.push(name + "=" + enc(elm.options[j].value)); } } } else { if (dojo.lang.inArray(["radio", "checkbox"], type)) { if (elm.checked) { values.push(name + "=" + enc(elm.value)); } } else { values.push(name + "=" + enc(elm.value)); } } } var inputs = formNode.getElementsByTagName("input"); for (var i = 0; i < inputs.length; i++) { var input = inputs[i]; if (input.type.toLowerCase() == "image" && input.form == formNode && formFilter(input)) { var name = enc(input.name); values.push(name + "=" + enc(input.value)); values.push(name + ".x=0"); values.push(name + ".y=0"); } } return values.join("&") + "&"; }; dojo.io.FormBind = function (args) { this.bindArgs = {}; if (args && args.formNode) { this.init(args); } else { if (args) { this.init({formNode:args}); } } }; dojo.lang.extend(dojo.io.FormBind, {form:null, bindArgs:null, clickedButton:null, init:function (args) { var form = dojo.byId(args.formNode); if (!form || !form.tagName || form.tagName.toLowerCase() != "form") { throw new Error("FormBind: Couldn't apply, invalid form"); } else { if (this.form == form) { return; } else { if (this.form) { throw new Error("FormBind: Already applied to a form"); } } } dojo.lang.mixin(this.bindArgs, args); this.form = form; this.connect(form, "onsubmit", "submit"); for (var i = 0; i < form.elements.length; i++) { var node = form.elements[i]; if (node && node.type && dojo.lang.inArray(["submit", "button"], node.type.toLowerCase())) { this.connect(node, "onclick", "click"); } } var inputs = form.getElementsByTagName("input"); for (var i = 0; i < inputs.length; i++) { var input = inputs[i]; if (input.type.toLowerCase() == "image" && input.form == form) { this.connect(input, "onclick", "click"); } } }, onSubmit:function (form) { return true; }, submit:function (e) { e.preventDefault(); if (this.onSubmit(this.form)) { dojo.io.bind(dojo.lang.mixin(this.bindArgs, {formFilter:dojo.lang.hitch(this, "formFilter")})); } }, click:function (e) { var node = e.currentTarget; if (node.disabled) { return; } this.clickedButton = node; }, formFilter:function (node) { var type = (node.type || "").toLowerCase(); var accept = false; if (node.disabled || !node.name) { accept = false; } else { if (dojo.lang.inArray(["submit", "button", "image"], type)) { if (!this.clickedButton) { this.clickedButton = node; } accept = node == this.clickedButton; } else { accept = !dojo.lang.inArray(["file", "submit", "reset", "button"], type); } } return accept; }, connect:function (srcObj, srcFcn, targetFcn) { if (dojo.evalObjPath("dojo.event.connect")) { dojo.event.connect(srcObj, srcFcn, this, targetFcn); } else { var fcn = dojo.lang.hitch(this, targetFcn); srcObj[srcFcn] = function (e) { if (!e) { e = window.event; } if (!e.currentTarget) { e.currentTarget = e.srcElement; } if (!e.preventDefault) { e.preventDefault = function () { window.event.returnValue = false; }; } fcn(e); }; } }}); dojo.io.XMLHTTPTransport = new function () { var _this = this; var _cache = {}; this.useCache = false; this.preventCache = false; function getCacheKey(url, query, method) { return url + "|" + query + "|" + method.toLowerCase(); } function addToCache(url, query, method, http) { _cache[getCacheKey(url, query, method)] = http; } function getFromCache(url, query, method) { return _cache[getCacheKey(url, query, method)]; } this.clearCache = function () { _cache = {}; }; function doLoad(kwArgs, http, url, query, useCache) { if (((http.status >= 200) && (http.status < 300)) || (http.status == 304) || (http.status == 1223) || (location.protocol == "file:" && (http.status == 0 || http.status == undefined)) || (location.protocol == "chrome:" && (http.status == 0 || http.status == undefined))) { var ret; if (kwArgs.method.toLowerCase() == "head") { var headers = http.getAllResponseHeaders(); ret = {}; ret.toString = function () { return headers; }; var values = headers.split(/[\r\n]+/g); for (var i = 0; i < values.length; i++) { var pair = values[i].match(/^([^:]+)\s*:\s*(.+)$/i); if (pair) { ret[pair[1]] = pair[2]; } } } else { if (kwArgs.mimetype == "text/javascript") { try { ret = dj_eval(http.responseText); } catch (e) { dojo.debug(e); dojo.debug(http.responseText); ret = null; } } else { if (kwArgs.mimetype.substr(0, 9) == "text/json" || kwArgs.mimetype.substr(0, 16) == "application/json") { try { ret = dj_eval("(" + kwArgs.jsonFilter(http.responseText) + ")"); } catch (e) { dojo.debug(e); dojo.debug(http.responseText); ret = false; } } else { if ((kwArgs.mimetype == "application/xml") || (kwArgs.mimetype == "text/xml")) { ret = http.responseXML; if (!ret || typeof ret == "string" || !http.getResponseHeader("Content-Type")) { ret = dojo.dom.createDocumentFromText(http.responseText); } } else { ret = http.responseText; } } } } if (useCache) { addToCache(url, query, kwArgs.method, http); } kwArgs[(typeof kwArgs.load == "function") ? "load" : "handle"]("load", ret, http, kwArgs); } else { var errObj = new dojo.io.Error("XMLHttpTransport Error: " + http.status + " " + http.statusText); kwArgs[(typeof kwArgs.error == "function") ? "error" : "handle"]("error", errObj, http, kwArgs); } } function setHeaders(http, kwArgs) { if (kwArgs["headers"]) { for (var header in kwArgs["headers"]) { if (header.toLowerCase() == "content-type" && !kwArgs["contentType"]) { kwArgs["contentType"] = kwArgs["headers"][header]; } else { http.setRequestHeader(header, kwArgs["headers"][header]); } } } } this.inFlight = []; this.inFlightTimer = null; this.startWatchingInFlight = function () { if (!this.inFlightTimer) { this.inFlightTimer = setTimeout("dojo.io.XMLHTTPTransport.watchInFlight();", 10); } }; this.watchInFlight = function () { var now = null; if (!dojo.hostenv._blockAsync && !_this._blockAsync) { for (var x = this.inFlight.length - 1; x >= 0; x--) { try { var tif = this.inFlight[x]; if (!tif || tif.http._aborted || !tif.http.readyState) { this.inFlight.splice(x, 1); continue; } if (4 == tif.http.readyState) { this.inFlight.splice(x, 1); doLoad(tif.req, tif.http, tif.url, tif.query, tif.useCache); } else { if (tif.startTime) { if (!now) { now = (new Date()).getTime(); } if (tif.startTime + (tif.req.timeoutSeconds * 1000) < now) { if (typeof tif.http.abort == "function") { tif.http.abort(); } this.inFlight.splice(x, 1); tif.req[(typeof tif.req.timeout == "function") ? "timeout" : "handle"]("timeout", null, tif.http, tif.req); } } } } catch (e) { try { var errObj = new dojo.io.Error("XMLHttpTransport.watchInFlight Error: " + e); tif.req[(typeof tif.req.error == "function") ? "error" : "handle"]("error", errObj, tif.http, tif.req); } catch (e2) { dojo.debug("XMLHttpTransport error callback failed: " + e2); } } } } clearTimeout(this.inFlightTimer); if (this.inFlight.length == 0) { this.inFlightTimer = null; return; } this.inFlightTimer = setTimeout("dojo.io.XMLHTTPTransport.watchInFlight();", 10); }; var hasXmlHttp = dojo.hostenv.getXmlhttpObject() ? true : false; this.canHandle = function (kwArgs) { var mlc = kwArgs["mimetype"].toLowerCase() || ""; return hasXmlHttp && ((dojo.lang.inArray(["text/plain", "text/html", "application/xml", "text/xml", "text/javascript"], mlc)) || (mlc.substr(0, 9) == "text/json" || mlc.substr(0, 16) == "application/json")) && !(kwArgs["formNode"] && dojo.io.formHasFile(kwArgs["formNode"])); }; this.multipartBoundary = "45309FFF-BD65-4d50-99C9-36986896A96F"; this.bind = function (kwArgs) { if (!kwArgs["url"]) { if (!kwArgs["formNode"] && (kwArgs["backButton"] || kwArgs["back"] || kwArgs["changeUrl"] || kwArgs["watchForURL"]) && (!djConfig.preventBackButtonFix)) { dojo.deprecated("Using dojo.io.XMLHTTPTransport.bind() to add to browser history without doing an IO request", "Use dojo.undo.browser.addToHistory() instead.", "0.4"); dojo.undo.browser.addToHistory(kwArgs); return true; } } var url = kwArgs.url; var query = ""; if (kwArgs["formNode"]) { var ta = kwArgs.formNode.getAttribute("action"); if ((ta) && (!kwArgs["url"])) { url = ta; } var tp = kwArgs.formNode.getAttribute("method"); if ((tp) && (!kwArgs["method"])) { kwArgs.method = tp; } query += dojo.io.encodeForm(kwArgs.formNode, kwArgs.encoding, kwArgs["formFilter"]); } if (url.indexOf("#") > -1) { dojo.debug("Warning: dojo.io.bind: stripping hash values from url:", url); url = url.split("#")[0]; } if (kwArgs["file"]) { kwArgs.method = "post"; } if (!kwArgs["method"]) { kwArgs.method = "get"; } if (kwArgs.method.toLowerCase() == "get") { kwArgs.multipart = false; } else { if (kwArgs["file"]) { kwArgs.multipart = true; } else { if (!kwArgs["multipart"]) { kwArgs.multipart = false; } } } if (kwArgs["backButton"] || kwArgs["back"] || kwArgs["changeUrl"]) { dojo.undo.browser.addToHistory(kwArgs); } var content = kwArgs["content"] || {}; if (kwArgs.sendTransport) { content["dojo.transport"] = "xmlhttp"; } do { if (kwArgs.postContent) { query = kwArgs.postContent; break; } if (content) { query += dojo.io.argsFromMap(content, kwArgs.encoding); } if (kwArgs.method.toLowerCase() == "get" || !kwArgs.multipart) { break; } var t = []; if (query.length) { var q = query.split("&"); for (var i = 0; i < q.length; ++i) { if (q[i].length) { var p = q[i].split("="); t.push("--" + this.multipartBoundary, "Content-Disposition: form-data; name=\"" + p[0] + "\"", "", p[1]); } } } if (kwArgs.file) { if (dojo.lang.isArray(kwArgs.file)) { for (var i = 0; i < kwArgs.file.length; ++i) { var o = kwArgs.file[i]; t.push("--" + this.multipartBoundary, "Content-Disposition: form-data; name=\"" + o.name + "\"; filename=\"" + ("fileName" in o ? o.fileName : o.name) + "\"", "Content-Type: " + ("contentType" in o ? o.contentType : "application/octet-stream"), "", o.content); } } else { var o = kwArgs.file; t.push("--" + this.multipartBoundary, "Content-Disposition: form-data; name=\"" + o.name + "\"; filename=\"" + ("fileName" in o ? o.fileName : o.name) + "\"", "Content-Type: " + ("contentType" in o ? o.contentType : "application/octet-stream"), "", o.content); } } if (t.length) { t.push("--" + this.multipartBoundary + "--", ""); query = t.join("\r\n"); } } while (false); var async = kwArgs["sync"] ? false : true; var preventCache = kwArgs["preventCache"] || (this.preventCache == true && kwArgs["preventCache"] != false); var useCache = kwArgs["useCache"] == true || (this.useCache == true && kwArgs["useCache"] != false); if (!preventCache && useCache) { var cachedHttp = getFromCache(url, query, kwArgs.method); if (cachedHttp) { doLoad(kwArgs, cachedHttp, url, query, false); return; } } var http = dojo.hostenv.getXmlhttpObject(kwArgs); var received = false; if (async) { var startTime = this.inFlight.push({"req":kwArgs, "http":http, "url":url, "query":query, "useCache":useCache, "startTime":kwArgs.timeoutSeconds ? (new Date()).getTime() : 0}); this.startWatchingInFlight(); } else { _this._blockAsync = true; } if (kwArgs.method.toLowerCase() == "post") { if (!kwArgs.user) { http.open("POST", url, async); } else { http.open("POST", url, async, kwArgs.user, kwArgs.password); } setHeaders(http, kwArgs); http.setRequestHeader("Content-Type", kwArgs.multipart ? ("multipart/form-data; boundary=" + this.multipartBoundary) : (kwArgs.contentType || "application/x-www-form-urlencoded")); try { http.send(query); } catch (e) { if (typeof http.abort == "function") { http.abort(); } doLoad(kwArgs, {status:404}, url, query, useCache); } } else { var tmpUrl = url; if (query != "") { tmpUrl += (tmpUrl.indexOf("?") > -1 ? "&" : "?") + query; } if (preventCache) { tmpUrl += (dojo.string.endsWithAny(tmpUrl, "?", "&") ? "" : (tmpUrl.indexOf("?") > -1 ? "&" : "?")) + "dojo.preventCache=" + new Date().valueOf(); } if (!kwArgs.user) { http.open(kwArgs.method.toUpperCase(), tmpUrl, async); } else { http.open(kwArgs.method.toUpperCase(), tmpUrl, async, kwArgs.user, kwArgs.password); } setHeaders(http, kwArgs); try { http.send(null); } catch (e) { if (typeof http.abort == "function") { http.abort(); } doLoad(kwArgs, {status:404}, url, query, useCache); } } if (!async) { doLoad(kwArgs, http, url, query, useCache); _this._blockAsync = false; } kwArgs.abort = function () { try { http._aborted = true; } catch (e) { } return http.abort(); }; return; }; dojo.io.transports.addTransport("XMLHTTPTransport"); }; }

__CPAN_FILE__ src/io/XhrIframeProxy.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.io.XhrIframeProxy"], ["require", "dojo.experimental"], ["require", "dojo.io.IframeIO"], ["require", "dojo.dom"], ["require", "dojo.uri.Uri"]], definePackage:function (dojo) { dojo.provide("dojo.io.XhrIframeProxy"); dojo.require("dojo.experimental"); dojo.experimental("dojo.io.XhrIframeProxy"); dojo.require("dojo.io.IframeIO"); dojo.require("dojo.dom"); dojo.require("dojo.uri.Uri"); dojo.io.XhrIframeProxy = {xipClientUrl:djConfig["xipClientUrl"] || dojo.uri.moduleUri("dojo.io", "xip_client.html"), _state:{}, _stateIdCounter:0, needFrameRecursion:function () { return (true == dojo.render.html.ie70); }, send:function (facade) { var stateId = "XhrIframeProxy" + (this._stateIdCounter++); facade._stateId = stateId; var frameUrl = this.xipClientUrl + "#0:init:id=" + stateId + "&server=" + encodeURIComponent(facade._ifpServerUrl) + "&fr=false"; if (this.needFrameRecursion()) { var fullClientUrl = window.location.href; if ((this.xipClientUrl + "").charAt(0) == "/") { var endIndex = fullClientUrl.indexOf("://"); endIndex = fullClientUrl.indexOf("/", endIndex + 1); fullClientUrl = fullClientUrl.substring(0, endIndex); } else { fullClientUrl = fullClientUrl.substring(0, fullClientUrl.lastIndexOf("/") + 1); } fullClientUrl += this.xipClientUrl; var serverUrl = facade._ifpServerUrl + (facade._ifpServerUrl.indexOf("?") == -1 ? "?" : "&") + "dojo.fr=1"; frameUrl = serverUrl + "#0:init:id=" + stateId + "&client=" + encodeURIComponent(fullClientUrl) + "&fr=" + this.needFrameRecursion(); } this._state[stateId] = {facade:facade, stateId:stateId, clientFrame:dojo.io.createIFrame(stateId, "", frameUrl)}; return stateId; }, receive:function (stateId, urlEncodedData) { var response = {}; var nvPairs = urlEncodedData.split("&"); for (var i = 0; i < nvPairs.length; i++) { if (nvPairs[i]) { var nameValue = nvPairs[i].split("="); response[decodeURIComponent(nameValue[0])] = decodeURIComponent(nameValue[1]); } } var state = this._state[stateId]; var facade = state.facade; facade._setResponseHeaders(response.responseHeaders); if (response.status == 0 || response.status) { facade.status = parseInt(response.status, 10); } if (response.statusText) { facade.statusText = response.statusText; } if (response.responseText) { facade.responseText = response.responseText; var contentType = facade.getResponseHeader("Content-Type"); if (contentType && (contentType == "application/xml" || contentType == "text/xml")) { facade.responseXML = dojo.dom.createDocumentFromText(response.responseText, contentType); } } facade.readyState = 4; this.destroyState(stateId); }, clientFrameLoaded:function (stateId) { var state = this._state[stateId]; var facade = state.facade; if (this.needFrameRecursion()) { var clientWindow = window.open("", state.stateId + "_clientEndPoint"); } else { var clientWindow = state.clientFrame.contentWindow; } var reqHeaders = []; for (var param in facade._requestHeaders) { reqHeaders.push(param + ": " + facade._requestHeaders[param]); } var requestData = {uri:facade._uri}; if (reqHeaders.length > 0) { requestData.requestHeaders = reqHeaders.join("\r\n"); } if (facade._method) { requestData.method = facade._method; } if (facade._bodyData) { requestData.data = facade._bodyData; } clientWindow.send(dojo.io.argsFromMap(requestData, "utf8")); }, destroyState:function (stateId) { var state = this._state[stateId]; if (state) { delete this._state[stateId]; var parentNode = state.clientFrame.parentNode; parentNode.removeChild(state.clientFrame); state.clientFrame = null; state = null; } }, createFacade:function () { if (arguments && arguments[0] && arguments[0]["iframeProxyUrl"]) { return new dojo.io.XhrIframeFacade(arguments[0]["iframeProxyUrl"]); } else { return dojo.io.XhrIframeProxy.oldGetXmlhttpObject.apply(dojo.hostenv, arguments); } }}; dojo.io.XhrIframeProxy.oldGetXmlhttpObject = dojo.hostenv.getXmlhttpObject; dojo.hostenv.getXmlhttpObject = dojo.io.XhrIframeProxy.createFacade; dojo.io.XhrIframeFacade = function (ifpServerUrl) { this._requestHeaders = {}; this._allResponseHeaders = null; this._responseHeaders = {}; this._method = null; this._uri = null; this._bodyData = null; this.responseText = null; this.responseXML = null; this.status = null; this.statusText = null; this.readyState = 0; this._ifpServerUrl = ifpServerUrl; this._stateId = null; }; dojo.lang.extend(dojo.io.XhrIframeFacade, {open:function (method, uri) { this._method = method; this._uri = uri; this.readyState = 1; }, setRequestHeader:function (header, value) { this._requestHeaders[header] = value; }, send:function (stringData) { this._bodyData = stringData; this._stateId = dojo.io.XhrIframeProxy.send(this); this.readyState = 2; }, abort:function () { dojo.io.XhrIframeProxy.destroyState(this._stateId); }, getAllResponseHeaders:function () { return this._allResponseHeaders; }, getResponseHeader:function (header) { return this._responseHeaders[header]; }, _setResponseHeaders:function (allHeaders) { if (allHeaders) { this._allResponseHeaders = allHeaders; allHeaders = allHeaders.replace(/\r/g, ""); var nvPairs = allHeaders.split("\n"); for (var i = 0; i < nvPairs.length; i++) { if (nvPairs[i]) { var nameValue = nvPairs[i].split(": "); this._responseHeaders[nameValue[0]] = nameValue[1]; } } } }}); }});

__CPAN_FILE__ src/io/common.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.io.common"); dojo.require("dojo.string"); dojo.require("dojo.lang.extras"); dojo.io.transports = []; dojo.io.hdlrFuncNames = ["load", "error", "timeout"]; dojo.io.Request = function (url, mimetype, transport, changeUrl) { if ((arguments.length == 1) && (arguments[0].constructor == Object)) { this.fromKwArgs(arguments[0]); } else { this.url = url; if (mimetype) { this.mimetype = mimetype; } if (transport) { this.transport = transport; } if (arguments.length >= 4) { this.changeUrl = changeUrl; } } }; dojo.lang.extend(dojo.io.Request, {url:"", mimetype:"text/plain", method:"GET", content:undefined, transport:undefined, changeUrl:undefined, formNode:undefined, sync:false, bindSuccess:false, useCache:false, preventCache:false, jsonFilter:function (value) { if ((this.mimetype == "text/json-comment-filtered") || (this.mimetype == "application/json-comment-filtered")) { var cStartIdx = value.indexOf("/*"); var cEndIdx = value.lastIndexOf("*/"); if ((cStartIdx == -1) || (cEndIdx == -1)) { dojo.debug("your JSON wasn't comment filtered!"); return ""; } return value.substring(cStartIdx + 2, cEndIdx); } dojo.debug("please consider using a mimetype of text/json-comment-filtered to avoid potential security issues with JSON endpoints"); return value; }, load:function (type, data, transportImplementation, kwArgs) { }, error:function (type, error, transportImplementation, kwArgs) { }, timeout:function (type, empty, transportImplementation, kwArgs) { }, handle:function (type, data, transportImplementation, kwArgs) { }, timeoutSeconds:0, abort:function () { }, fromKwArgs:function (kwArgs) { if (kwArgs["url"]) { kwArgs.url = kwArgs.url.toString(); } if (kwArgs["formNode"]) { kwArgs.formNode = dojo.byId(kwArgs.formNode); } if (!kwArgs["method"] && kwArgs["formNode"] && kwArgs["formNode"].method) { kwArgs.method = kwArgs["formNode"].method; } if (!kwArgs["handle"] && kwArgs["handler"]) { kwArgs.handle = kwArgs.handler; } if (!kwArgs["load"] && kwArgs["loaded"]) { kwArgs.load = kwArgs.loaded; } if (!kwArgs["changeUrl"] && kwArgs["changeURL"]) { kwArgs.changeUrl = kwArgs.changeURL; } kwArgs.encoding = dojo.lang.firstValued(kwArgs["encoding"], djConfig["bindEncoding"], ""); kwArgs.sendTransport = dojo.lang.firstValued(kwArgs["sendTransport"], djConfig["ioSendTransport"], false); var isFunction = dojo.lang.isFunction; for (var x = 0; x < dojo.io.hdlrFuncNames.length; x++) { var fn = dojo.io.hdlrFuncNames[x]; if (kwArgs[fn] && isFunction(kwArgs[fn])) { continue; } if (kwArgs["handle"] && isFunction(kwArgs["handle"])) { kwArgs[fn] = kwArgs.handle; } } dojo.lang.mixin(this, kwArgs); }}); dojo.io.Error = function (msg, type, num) { this.message = msg; this.type = type || "unknown"; this.number = num || 0; }; dojo.io.transports.addTransport = function (name) { this.push(name); this[name] = dojo.io[name]; }; dojo.io.bind = function (request) { if (!(request instanceof dojo.io.Request)) { try { request = new dojo.io.Request(request); } catch (e) { dojo.debug(e); } } var tsName = ""; if (request["transport"]) { tsName = request["transport"]; if (!this[tsName]) { dojo.io.sendBindError(request, "No dojo.io.bind() transport with name '" + request["transport"] + "'."); return request; } if (!this[tsName].canHandle(request)) { dojo.io.sendBindError(request, "dojo.io.bind() transport with name '" + request["transport"] + "' cannot handle this type of request."); return request; } } else { for (var x = 0; x < dojo.io.transports.length; x++) { var tmp = dojo.io.transports[x]; if ((this[tmp]) && (this[tmp].canHandle(request))) { tsName = tmp; break; } } if (tsName == "") { dojo.io.sendBindError(request, "None of the loaded transports for dojo.io.bind()" + " can handle the request."); return request; } } this[tsName].bind(request); request.bindSuccess = true; return request; }; dojo.io.sendBindError = function (request, message) { if ((typeof request.error == "function" || typeof request.handle == "function") && (typeof setTimeout == "function" || typeof setTimeout == "object")) { var errorObject = new dojo.io.Error(message); setTimeout(function () { request[(typeof request.error == "function") ? "error" : "handle"]("error", errorObject, null, request); }, 50); } else { dojo.raise(message); } }; dojo.io.queueBind = function (request) { if (!(request instanceof dojo.io.Request)) { try { request = new dojo.io.Request(request); } catch (e) { dojo.debug(e); } } var oldLoad = request.load; request.load = function () { dojo.io._queueBindInFlight = false; var ret = oldLoad.apply(this, arguments); dojo.io._dispatchNextQueueBind(); return ret; }; var oldErr = request.error; request.error = function () { dojo.io._queueBindInFlight = false; var ret = oldErr.apply(this, arguments); dojo.io._dispatchNextQueueBind(); return ret; }; dojo.io._bindQueue.push(request); dojo.io._dispatchNextQueueBind(); return request; }; dojo.io._dispatchNextQueueBind = function () { if (!dojo.io._queueBindInFlight) { dojo.io._queueBindInFlight = true; if (dojo.io._bindQueue.length > 0) { dojo.io.bind(dojo.io._bindQueue.shift()); } else { dojo.io._queueBindInFlight = false; } } }; dojo.io._bindQueue = []; dojo.io._queueBindInFlight = false; dojo.io.argsFromMap = function (map, encoding, last) { var enc = /utf/i.test(encoding || "") ? encodeURIComponent : dojo.string.encodeAscii; var mapped = []; var control = new Object(); for (var name in map) { var domap = function (elt) { var val = enc(name) + "=" + enc(elt); mapped[(last == name) ? "push" : "unshift"](val); }; if (!control[name]) { var value = map[name]; if (dojo.lang.isArray(value)) { dojo.lang.forEach(value, domap); } else { domap(value); } } } return mapped.join("&"); }; dojo.io.setIFrameSrc = function (iframe, src, replace) { try { var r = dojo.render.html; if (!replace) { if (r.safari) { iframe.location = src; } else { frames[iframe.name].location = src; } } else { var idoc; if (r.ie) { idoc = iframe.contentWindow.document; } else { if (r.safari) { idoc = iframe.document; } else { idoc = iframe.contentWindow; } } if (!idoc) { iframe.location = src; return; } else { idoc.location.replace(src); } } } catch (e) { dojo.debug(e); dojo.debug("setIFrameSrc: " + e); } };

__CPAN_FILE__ src/io/cometd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.require("dojo.io.common"); dojo.provide("dojo.io.cometd"); dojo.require("dojo.AdapterRegistry"); dojo.require("dojo.json"); dojo.require("dojo.io.BrowserIO"); dojo.require("dojo.io.IframeIO"); dojo.require("dojo.io.ScriptSrcIO"); dojo.require("dojo.io.cookie"); dojo.require("dojo.event.*"); dojo.require("dojo.lang.common"); dojo.require("dojo.lang.func"); cometd = new function () { this.initialized = false; this.connected = false; this.connectionTypes = new dojo.AdapterRegistry(true); this.version = 0.1; this.minimumVersion = 0.1; this.clientId = null; this._isXD = false; this.handshakeReturn = null; this.currentTransport = null; this.url = null; this.lastMessage = null; this.globalTopicChannels = {}; this.backlog = []; this.tunnelInit = function (childLocation, childDomain) { }; this.tunnelCollapse = function () { dojo.debug("tunnel collapsed!"); }; this.init = function (props, root, bargs) { props = props || {}; props.version = this.version; props.minimumVersion = this.minimumVersion; props.channel = "/meta/handshake"; this.url = root || djConfig["cometdRoot"]; if (!this.url) { dojo.debug("no cometd root specified in djConfig and no root passed"); return; } var bindArgs = {url:this.url, method:"POST", mimetype:"text/json", load:dojo.lang.hitch(this, "finishInit"), content:{"message":dojo.json.serialize([props])}}; var regexp = "^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$"; var r = ("" + window.location).match(new RegExp(regexp)); if (r[4]) { var tmp = r[4].split(":"); var thisHost = tmp[0]; var thisPort = tmp[1] || "80"; r = this.url.match(new RegExp(regexp)); if (r[4]) { tmp = r[4].split(":"); var urlHost = tmp[0]; var urlPort = tmp[1] || "80"; if ((urlHost != thisHost) || (urlPort != thisPort)) { dojo.debug(thisHost, urlHost); dojo.debug(thisPort, urlPort); this._isXD = true; bindArgs.transport = "ScriptSrcTransport"; bindArgs.jsonParamName = "jsonp"; bindArgs.method = "GET"; } } } if (bargs) { dojo.lang.mixin(bindArgs, bargs); } return dojo.io.bind(bindArgs); }; this.finishInit = function (type, data, evt, request) { data = data[0]; this.handshakeReturn = data; if (data["authSuccessful"] == false) { dojo.debug("cometd authentication failed"); return; } if (data.version < this.minimumVersion) { dojo.debug("cometd protocol version mismatch. We wanted", this.minimumVersion, "but got", data.version); return; } this.currentTransport = this.connectionTypes.match(data.supportedConnectionTypes, data.version, this._isXD); this.currentTransport.version = data.version; this.clientId = data.clientId; this.tunnelInit = dojo.lang.hitch(this.currentTransport, "tunnelInit"); this.tunnelCollapse = dojo.lang.hitch(this.currentTransport, "tunnelCollapse"); this.initialized = true; this.currentTransport.startup(data); while (this.backlog.length != 0) { var cur = this.backlog.shift(); var fn = cur.shift(); this[fn].apply(this, cur); } }; this._getRandStr = function () { return Math.random().toString().substring(2, 10); }; this.deliver = function (messages) { dojo.lang.forEach(messages, this._deliver, this); }; this._deliver = function (message) { if (!message["channel"]) { dojo.debug("cometd error: no channel for message!"); return; } if (!this.currentTransport) { this.backlog.push(["deliver", message]); return; } this.lastMessage = message; if ((message.channel.length > 5) && (message.channel.substr(0, 5) == "/meta")) { switch (message.channel) { case "/meta/subscribe": if (!message.successful) { dojo.debug("cometd subscription error for channel", message.channel, ":", message.error); return; } this.subscribed(message.subscription, message); break; case "/meta/unsubscribe": if (!message.successful) { dojo.debug("cometd unsubscription error for channel", message.channel, ":", message.error); return; } this.unsubscribed(message.subscription, message); break; } } this.currentTransport.deliver(message); if (message.data) { var tname = (this.globalTopicChannels[message.channel]) ? message.channel : "/cometd" + message.channel; dojo.event.topic.publish(tname, message); } }; this.disconnect = function () { if (!this.currentTransport) { dojo.debug("no current transport to disconnect from"); return; } this.currentTransport.disconnect(); }; this.publish = function (channel, data, properties) { if (!this.currentTransport) { this.backlog.push(["publish", channel, data, properties]); return; } var message = {data:data, channel:channel}; if (properties) { dojo.lang.mixin(message, properties); } return this.currentTransport.sendMessage(message); }; this.subscribe = function (channel, useLocalTopics, objOrFunc, funcName) { if (!this.currentTransport) { this.backlog.push(["subscribe", channel, useLocalTopics, objOrFunc, funcName]); return; } if (objOrFunc) { var tname = (useLocalTopics) ? channel : "/cometd" + channel; if (useLocalTopics) { this.globalTopicChannels[channel] = true; } dojo.event.topic.subscribe(tname, objOrFunc, funcName); } return this.currentTransport.sendMessage({channel:"/meta/subscribe", subscription:channel}); }; this.subscribed = function (channel, message) { dojo.debug(channel); dojo.debugShallow(message); }; this.unsubscribe = function (channel, useLocalTopics, objOrFunc, funcName) { if (!this.currentTransport) { this.backlog.push(["unsubscribe", channel, useLocalTopics, objOrFunc, funcName]); return; } if (objOrFunc) { var tname = (useLocalTopics) ? channel : "/cometd" + channel; dojo.event.topic.unsubscribe(tname, objOrFunc, funcName); } return this.currentTransport.sendMessage({channel:"/meta/unsubscribe", subscription:channel}); }; this.unsubscribed = function (channel, message) { dojo.debug(channel); dojo.debugShallow(message); }; }; cometd.iframeTransport = new function () { this.connected = false; this.connectionId = null; this.rcvNode = null; this.rcvNodeName = ""; this.phonyForm = null; this.authToken = null; this.lastTimestamp = null; this.lastId = null; this.backlog = []; this.check = function (types, version, xdomain) { return ((!xdomain) && (!dojo.render.html.safari) && (dojo.lang.inArray(types, "iframe"))); }; this.tunnelInit = function () { this.postToIframe({message:dojo.json.serialize([{channel:"/meta/connect", clientId:cometd.clientId, connectionType:"iframe"}])}); }; this.tunnelCollapse = function () { if (this.connected) { this.connected = false; this.postToIframe({message:dojo.json.serialize([{channel:"/meta/reconnect", clientId:cometd.clientId, connectionId:this.connectionId, timestamp:this.lastTimestamp, id:this.lastId}])}); } }; this.deliver = function (message) { if (message["timestamp"]) { this.lastTimestamp = message.timestamp; } if (message["id"]) { this.lastId = message.id; } if ((message.channel.length > 5) && (message.channel.substr(0, 5) == "/meta")) { switch (message.channel) { case "/meta/connect": if (!message.successful) { dojo.debug("cometd connection error:", message.error); return; } this.connectionId = message.connectionId; this.connected = true; this.processBacklog(); break; case "/meta/reconnect": if (!message.successful) { dojo.debug("cometd reconnection error:", message.error); return; } this.connected = true; break; case "/meta/subscribe": if (!message.successful) { dojo.debug("cometd subscription error for channel", message.channel, ":", message.error); return; } dojo.debug(message.channel); break; } } }; this.widenDomain = function (domainStr) { var cd = domainStr || document.domain; if (cd.indexOf(".") == -1) { return; } var dps = cd.split("."); if (dps.length <= 2) { return; } dps = dps.slice(dps.length - 2); document.domain = dps.join("."); return document.domain; }; this.postToIframe = function (content, url) { if (!this.phonyForm) { if (dojo.render.html.ie) { this.phonyForm = document.createElement("<form enctype='application/x-www-form-urlencoded' method='POST' style='display: none;'>"); dojo.body().appendChild(this.phonyForm); } else { this.phonyForm = document.createElement("form"); this.phonyForm.style.display = "none"; dojo.body().appendChild(this.phonyForm); this.phonyForm.enctype = "application/x-www-form-urlencoded"; this.phonyForm.method = "POST"; } } this.phonyForm.action = url || cometd.url; this.phonyForm.target = this.rcvNodeName; this.phonyForm.setAttribute("target", this.rcvNodeName); while (this.phonyForm.firstChild) { this.phonyForm.removeChild(this.phonyForm.firstChild); } for (var x in content) { var tn; if (dojo.render.html.ie) { tn = document.createElement("<input type='hidden' name='" + x + "' value='" + content[x] + "'>"); this.phonyForm.appendChild(tn); } else { tn = document.createElement("input"); this.phonyForm.appendChild(tn); tn.type = "hidden"; tn.name = x; tn.value = content[x]; } } this.phonyForm.submit(); }; this.processBacklog = function () { while (this.backlog.length > 0) { this.sendMessage(this.backlog.shift(), true); } }; this.sendMessage = function (message, bypassBacklog) { if ((bypassBacklog) || (this.connected)) { message.connectionId = this.connectionId; message.clientId = cometd.clientId; var bindArgs = {url:cometd.url || djConfig["cometdRoot"], method:"POST", mimetype:"text/json", content:{message:dojo.json.serialize([message])}}; return dojo.io.bind(bindArgs); } else { this.backlog.push(message); } }; this.startup = function (handshakeData) { dojo.debug("startup!"); dojo.debug(dojo.json.serialize(handshakeData)); if (this.connected) { return; } this.rcvNodeName = "cometdRcv_" + cometd._getRandStr(); var initUrl = cometd.url + "/?tunnelInit=iframe"; if (false && dojo.render.html.ie) { this.rcvNode = new ActiveXObject("htmlfile"); this.rcvNode.open(); this.rcvNode.write("<html>"); this.rcvNode.write("<script>document.domain = '" + document.domain + "'"); this.rcvNode.write("</html>"); this.rcvNode.close(); var ifrDiv = this.rcvNode.createElement("div"); this.rcvNode.appendChild(ifrDiv); this.rcvNode.parentWindow.dojo = dojo; ifrDiv.innerHTML = "<iframe src='" + initUrl + "'></iframe>"; } else { this.rcvNode = dojo.io.createIFrame(this.rcvNodeName, "", initUrl); } }; }; cometd.mimeReplaceTransport = new function () { this.connected = false; this.connectionId = null; this.xhr = null; this.authToken = null; this.lastTimestamp = null; this.lastId = null; this.backlog = []; this.check = function (types, version, xdomain) { return ((!xdomain) && (dojo.render.html.mozilla) && (dojo.lang.inArray(types, "mime-message-block"))); }; this.tunnelInit = function () { if (this.connected) { return; } this.openTunnelWith({message:dojo.json.serialize([{channel:"/meta/connect", clientId:cometd.clientId, connectionType:"mime-message-block"}])}); this.connected = true; }; this.tunnelCollapse = function () { if (this.connected) { this.connected = false; this.openTunnelWith({message:dojo.json.serialize([{channel:"/meta/reconnect", clientId:cometd.clientId, connectionId:this.connectionId, timestamp:this.lastTimestamp, id:this.lastId}])}); } }; this.deliver = cometd.iframeTransport.deliver; this.handleOnLoad = function (resp) { cometd.deliver(dojo.json.evalJson(this.xhr.responseText)); }; this.openTunnelWith = function (content, url) { this.xhr = dojo.hostenv.getXmlhttpObject(); this.xhr.multipart = true; if (dojo.render.html.mozilla) { this.xhr.addEventListener("load", dojo.lang.hitch(this, "handleOnLoad"), false); } else { if (dojo.render.html.safari) { dojo.debug("Webkit is broken with multipart responses over XHR = ("); this.xhr.onreadystatechange = dojo.lang.hitch(this, "handleOnLoad"); } else { this.xhr.onload = dojo.lang.hitch(this, "handleOnLoad"); } } this.xhr.open("POST", (url || cometd.url), true); this.xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); dojo.debug(dojo.json.serialize(content)); this.xhr.send(dojo.io.argsFromMap(content, "utf8")); }; this.processBacklog = function () { while (this.backlog.length > 0) { this.sendMessage(this.backlog.shift(), true); } }; this.sendMessage = function (message, bypassBacklog) { if ((bypassBacklog) || (this.connected)) { message.connectionId = this.connectionId; message.clientId = cometd.clientId; var bindArgs = {url:cometd.url || djConfig["cometdRoot"], method:"POST", mimetype:"text/json", content:{message:dojo.json.serialize([message])}}; return dojo.io.bind(bindArgs); } else { this.backlog.push(message); } }; this.startup = function (handshakeData) { dojo.debugShallow(handshakeData); if (this.connected) { return; } this.tunnelInit(); }; }; cometd.longPollTransport = new function () { this.connected = false; this.connectionId = null; this.authToken = null; this.lastTimestamp = null; this.lastId = null; this.backlog = []; this.check = function (types, version, xdomain) { return ((!xdomain) && (dojo.lang.inArray(types, "long-polling"))); }; this.tunnelInit = function () { if (this.connected) { return; } this.openTunnelWith({message:dojo.json.serialize([{channel:"/meta/connect", clientId:cometd.clientId, connectionType:"long-polling"}])}); this.connected = true; }; this.tunnelCollapse = function () { if (!this.connected) { this.connected = false; dojo.debug("clientId:", cometd.clientId); this.openTunnelWith({message:dojo.json.serialize([{channel:"/meta/reconnect", connectionType:"long-polling", clientId:cometd.clientId, connectionId:this.connectionId, timestamp:this.lastTimestamp, id:this.lastId}])}); } }; this.deliver = cometd.iframeTransport.deliver; this.openTunnelWith = function (content, url) { dojo.io.bind({url:(url || cometd.url), method:"post", content:content, mimetype:"text/json", load:dojo.lang.hitch(this, function (type, data, evt, args) { cometd.deliver(data); this.connected = false; this.tunnelCollapse(); }), error:function () { dojo.debug("tunnel opening failed"); }}); this.connected = true; }; this.processBacklog = function () { while (this.backlog.length > 0) { this.sendMessage(this.backlog.shift(), true); } }; this.sendMessage = function (message, bypassBacklog) { if ((bypassBacklog) || (this.connected)) { message.connectionId = this.connectionId; message.clientId = cometd.clientId; var bindArgs = {url:cometd.url || djConfig["cometdRoot"], method:"post", mimetype:"text/json", content:{message:dojo.json.serialize([message])}, load:dojo.lang.hitch(this, function (type, data, evt, args) { cometd.deliver(data); })}; return dojo.io.bind(bindArgs); } else { this.backlog.push(message); } }; this.startup = function (handshakeData) { if (this.connected) { return; } this.tunnelInit(); }; }; cometd.callbackPollTransport = new function () { this.connected = false; this.connectionId = null; this.authToken = null; this.lastTimestamp = null; this.lastId = null; this.backlog = []; this.check = function (types, version, xdomain) { return dojo.lang.inArray(types, "callback-polling"); }; this.tunnelInit = function () { if (this.connected) { return; } this.openTunnelWith({message:dojo.json.serialize([{channel:"/meta/connect", clientId:cometd.clientId, connectionType:"callback-polling"}])}); this.connected = true; }; this.tunnelCollapse = function () { if (!this.connected) { this.connected = false; this.openTunnelWith({message:dojo.json.serialize([{channel:"/meta/reconnect", connectionType:"long-polling", clientId:cometd.clientId, connectionId:this.connectionId, timestamp:this.lastTimestamp, id:this.lastId}])}); } }; this.deliver = cometd.iframeTransport.deliver; this.openTunnelWith = function (content, url) { var req = dojo.io.bind({url:(url || cometd.url), content:content, mimetype:"text/json", transport:"ScriptSrcTransport", jsonParamName:"jsonp", load:dojo.lang.hitch(this, function (type, data, evt, args) { cometd.deliver(data); this.connected = false; this.tunnelCollapse(); }), error:function () { dojo.debug("tunnel opening failed"); }}); this.connected = true; }; this.processBacklog = function () { while (this.backlog.length > 0) { this.sendMessage(this.backlog.shift(), true); } }; this.sendMessage = function (message, bypassBacklog) { if ((bypassBacklog) || (this.connected)) { message.connectionId = this.connectionId; message.clientId = cometd.clientId; var bindArgs = {url:cometd.url || djConfig["cometdRoot"], mimetype:"text/json", transport:"ScriptSrcTransport", jsonParamName:"jsonp", content:{message:dojo.json.serialize([message])}, load:dojo.lang.hitch(this, function (type, data, evt, args) { cometd.deliver(data); })}; return dojo.io.bind(bindArgs); } else { this.backlog.push(message); } }; this.startup = function (handshakeData) { if (this.connected) { return; } this.tunnelInit(); }; }; cometd.connectionTypes.register("mime-message-block", cometd.mimeReplaceTransport.check, cometd.mimeReplaceTransport); cometd.connectionTypes.register("long-polling", cometd.longPollTransport.check, cometd.longPollTransport); cometd.connectionTypes.register("callback-polling", cometd.callbackPollTransport.check, cometd.callbackPollTransport); cometd.connectionTypes.register("iframe", cometd.iframeTransport.check, cometd.iframeTransport); dojo.io.cometd = cometd;

__CPAN_FILE__ src/io/RepubsubIO.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["require", "dojo.event.*"], ["require", "dojo.io.BrowserIO"], ["provide", "dojo.io.RepubsubIO"]], definePackage:function (dojo) { dojo.require("dojo.event.*"); dojo.require("dojo.io.BrowserIO"); dojo.provide("dojo.io.RepubsubIO"); dojo.io.repubsubTranport = new function () { var rps = dojo.io.repubsub; this.canHandle = function (kwArgs) { if ((kwArgs["mimetype"] == "text/javascript") && (kwArgs["method"] == "repubsub")) { return true; } return false; }; this.bind = function (kwArgs) { if (!rps.isInitialized) { rps.init(); } if (!rps.topics[kwArgs.url]) { kwArgs.rpsLoad = function (evt) { kwArgs.load("load", evt); }; rps.subscribe(kwArgs.url, kwArgs, "rpsLoad"); } if (kwArgs["content"]) { var cEvt = dojo.io.repubsubEvent.initFromProperties(kwArgs.content); rps.publish(kwArgs.url, cEvt); } }; dojo.io.transports.addTransport("repubsubTranport"); }; dojo.io.repubsub = new function () { this.initDoc = "init.html"; this.isInitialized = false; this.subscriptionBacklog = []; this.debug = true; this.rcvNodeName = null; this.sndNodeName = null; this.rcvNode = null; this.sndNode = null; this.canRcv = false; this.canSnd = false; this.canLog = false; this.sndTimer = null; this.windowRef = window; this.backlog = []; this.tunnelInitCount = 0; this.tunnelFrameKey = "tunnel_frame"; this.serverBaseURL = location.protocol + "//" + location.host + location.pathname; this.logBacklog = []; this.getRandStr = function () { return Math.random().toString().substring(2, 10); }; this.userid = "guest"; this.tunnelID = this.getRandStr(); this.attachPathList = []; this.topics = []; this.parseGetStr = function () { var baseUrl = document.location.toString(); var params = baseUrl.split("?", 2); if (params.length > 1) { var paramStr = params[1]; var pairs = paramStr.split("&"); var opts = []; for (var x in pairs) { var sp = pairs[x].split("="); try { opts[sp[0]] = eval(sp[1]); } catch (e) { opts[sp[0]] = sp[1]; } } return opts; } else { return []; } }; var getOpts = this.parseGetStr(); for (var x in getOpts) { this[x] = getOpts[x]; } if (!this["tunnelURI"]) { this.tunnelURI = ["/who/", escape(this.userid), "/s/", this.getRandStr(), "/kn_journal"].join(""); } if (window["repubsubOpts"] || window["rpsOpts"]) { var optObj = window["repubsubOpts"] || window["rpsOpts"]; for (var x in optObj) { this[x] = optObj[x]; } } this.tunnelCloseCallback = function () { dojo.io.setIFrameSrc(this.rcvNode, this.initDoc + "?callback=repubsub.rcvNodeReady&domain=" + document.domain); }; this.receiveEventFromTunnel = function (evt, srcWindow) { if (!evt["elements"]) { this.log("bailing! event received without elements!", "error"); return; } var e = {}; for (var i = 0; i < evt.elements.length; i++) { var ee = evt.elements[i]; e[ee.name || ee.nameU] = (ee.value || ee.valueU); this.log("[event]: " + (ee.name || ee.nameU) + ": " + e[ee.name || ee.nameU]); } this.dispatch(e); }; this.widenDomain = function (domainStr) { var cd = domainStr || document.domain; if (cd.indexOf(".") == -1) { return; } var dps = cd.split("."); if (dps.length <= 2) { return; } dps = dps.slice(dps.length - 2); document.domain = dps.join("."); }; this.parseCookie = function () { var cs = document.cookie; var keypairs = cs.split(";"); for (var x = 0; x < keypairs.length; x++) { keypairs[x] = keypairs[x].split("="); if (x != keypairs.length - 1) { cs += ";"; } } return keypairs; }; this.setCookie = function (keypairs, clobber) { if ((clobber) && (clobber == true)) { document.cookie = ""; } var cs = ""; for (var x = 0; x < keypairs.length; x++) { cs += keypairs[x][0] + "=" + keypairs[x][1]; if (x != keypairs.length - 1) { cs += ";"; } } document.cookie = cs; }; this.log = function (str, lvl) { if (!this.debug) { return; } while (this.logBacklog.length > 0) { if (!this.canLog) { break; } var blo = this.logBacklog.shift(); this.writeLog("[" + blo[0] + "]: " + blo[1], blo[2]); } this.writeLog(str, lvl); }; this.writeLog = function (str, lvl) { dojo.debug(((new Date()).toLocaleTimeString()) + ": " + str); }; this.init = function () { this.widenDomain(); this.openTunnel(); this.isInitialized = true; while (this.subscriptionBacklog.length) { this.subscribe.apply(this, this.subscriptionBacklog.shift()); } }; this.clobber = function () { if (this.rcvNode) { this.setCookie([[this.tunnelFrameKey, "closed"], ["path", "/"]], false); } }; this.openTunnel = function () { this.rcvNodeName = "rcvIFrame_" + this.getRandStr(); this.setCookie([[this.tunnelFrameKey, this.rcvNodeName], ["path", "/"]], false); this.rcvNode = dojo.io.createIFrame(this.rcvNodeName); dojo.io.setIFrameSrc(this.rcvNode, this.initDoc + "?callback=repubsub.rcvNodeReady&domain=" + document.domain); this.sndNodeName = "sndIFrame_" + this.getRandStr(); this.sndNode = dojo.io.createIFrame(this.sndNodeName); dojo.io.setIFrameSrc(this.sndNode, this.initDoc + "?callback=repubsub.sndNodeReady&domain=" + document.domain); }; this.rcvNodeReady = function () { var statusURI = [this.tunnelURI, "/kn_status/", this.getRandStr(), "_", String(this.tunnelInitCount++)].join(""); this.log("rcvNodeReady"); var initURIArr = [this.serverBaseURL, "/kn?kn_from=", escape(this.tunnelURI), "&kn_id=", escape(this.tunnelID), "&kn_status_from=", escape(statusURI)]; dojo.io.setIFrameSrc(this.rcvNode, initURIArr.join("")); this.subscribe(statusURI, this, "statusListener", true); this.log(initURIArr.join("")); }; this.sndNodeReady = function () { this.canSnd = true; this.log("sndNodeReady"); this.log(this.backlog.length); if (this.backlog.length > 0) { this.dequeueEvent(); } }; this.statusListener = function (evt) { this.log("status listener called"); this.log(evt.status, "info"); }; this.dispatch = function (evt) { if (evt["to"] || evt["kn_routed_from"]) { var rf = evt["to"] || evt["kn_routed_from"]; var topic = rf.split(this.serverBaseURL, 2)[1]; if (!topic) { topic = rf; } this.log("[topic] " + topic); if (topic.length > 3) { if (topic.slice(0, 3) == "/kn") { topic = topic.slice(3); } } if (this.attachPathList[topic]) { this.attachPathList[topic](evt); } } }; this.subscribe = function (topic, toObj, toFunc, dontTellServer) { if (!this.isInitialized) { this.subscriptionBacklog.push([topic, toObj, toFunc, dontTellServer]); return; } if (!this.attachPathList[topic]) { this.attachPathList[topic] = function () { return true; }; this.log("subscribing to: " + topic); this.topics.push(topic); } var revt = new dojo.io.repubsubEvent(this.tunnelURI, topic, "route"); var rstr = [this.serverBaseURL + "/kn", revt.toGetString()].join(""); dojo.event.kwConnect({once:true, srcObj:this.attachPathList, srcFunc:topic, adviceObj:toObj, adviceFunc:toFunc}); if (!this.rcvNode) { } if (dontTellServer) { return; } this.log("sending subscription to: " + topic); this.sendTopicSubToServer(topic, rstr); }; this.sendTopicSubToServer = function (topic, str) { if (!this.attachPathList[topic]["subscriptions"]) { this.enqueueEventStr(str); this.attachPathList[topic].subscriptions = 0; } this.attachPathList[topic].subscriptions++; }; this.unSubscribe = function (topic, toObj, toFunc) { dojo.event.kwDisconnect({srcObj:this.attachPathList, srcFunc:topic, adviceObj:toObj, adviceFunc:toFunc}); }; this.publish = function (topic, event) { var evt = dojo.io.repubsubEvent.initFromProperties(event); evt.to = topic; var evtURLParts = []; evtURLParts.push(this.serverBaseURL + "/kn"); evtURLParts.push(evt.toGetString()); this.enqueueEventStr(evtURLParts.join("")); }; this.enqueueEventStr = function (evtStr) { this.log("enqueueEventStr"); this.backlog.push(evtStr); this.dequeueEvent(); }; this.dequeueEvent = function (force) { this.log("dequeueEvent"); if (this.backlog.length <= 0) { return; } if ((this.canSnd) || (force)) { dojo.io.setIFrameSrc(this.sndNode, this.backlog.shift() + "&callback=repubsub.sndNodeReady"); this.canSnd = false; } else { this.log("sndNode not available yet!", "debug"); } }; }; dojo.io.repubsubEvent = function (to, from, method, id, routeURI, payload, dispname, uid) { this.to = to; this.from = from; this.method = method || "route"; this.id = id || repubsub.getRandStr(); this.uri = routeURI; this.displayname = dispname || repubsub.displayname; this.userid = uid || repubsub.userid; this.payload = payload || ""; this.flushChars = 4096; this.initFromProperties = function (evt) { if (evt.constructor = dojo.io.repubsubEvent) { for (var x in evt) { this[x] = evt[x]; } } else { for (var x in evt) { if (typeof this.forwardPropertiesMap[x] == "string") { this[this.forwardPropertiesMap[x]] = evt[x]; } else { this[x] = evt[x]; } } } }; this.toGetString = function (noQmark) { var qs = [((noQmark) ? "" : "?")]; for (var x = 0; x < this.properties.length; x++) { var tp = this.properties[x]; if (this[tp[0]]) { qs.push(tp[1] + "=" + encodeURIComponent(String(this[tp[0]]))); } } return qs.join("&"); }; }; dojo.io.repubsubEvent.prototype.properties = [["from", "kn_from"], ["to", "kn_to"], ["method", "do_method"], ["id", "kn_id"], ["uri", "kn_uri"], ["displayname", "kn_displayname"], ["userid", "kn_userid"], ["payload", "kn_payload"], ["flushChars", "kn_response_flush"], ["responseFormat", "kn_response_format"]]; dojo.io.repubsubEvent.prototype.forwardPropertiesMap = {}; dojo.io.repubsubEvent.prototype.reversePropertiesMap = {}; for (var x = 0; x < dojo.io.repubsubEvent.prototype.properties.length; x++) { var tp = dojo.io.repubsubEvent.prototype.properties[x]; dojo.io.repubsubEvent.prototype.reversePropertiesMap[tp[0]] = tp[1]; dojo.io.repubsubEvent.prototype.forwardPropertiesMap[tp[1]] = tp[0]; } dojo.io.repubsubEvent.initFromProperties = function (evt) { var eventObj = new dojo.io.repubsubEvent(); eventObj.initFromProperties(evt); return eventObj; }; }});

__CPAN_FILE__ src/io/ScriptSrcIO.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.io.ScriptSrcIO"], ["require", "dojo.io.BrowserIO"], ["require", "dojo.undo.browser"]], definePackage:function (dojo) { dojo.provide("dojo.io.ScriptSrcIO"); dojo.require("dojo.io.BrowserIO"); dojo.require("dojo.undo.browser"); dojo.io.ScriptSrcTransport = new function () { this.preventCache = false; this.maxUrlLength = 1000; this.inFlightTimer = null; this.DsrStatusCodes = {Continue:100, Ok:200, Error:500}; this.startWatchingInFlight = function () { if (!this.inFlightTimer) { this.inFlightTimer = setInterval("dojo.io.ScriptSrcTransport.watchInFlight();", 100); } }; this.watchInFlight = function () { var totalCount = 0; var doneCount = 0; for (var param in this._state) { totalCount++; var currentState = this._state[param]; if (currentState.isDone) { doneCount++; delete this._state[param]; } else { if (!currentState.isFinishing) { var listener = currentState.kwArgs; try { if (currentState.checkString && eval("typeof(" + currentState.checkString + ") != 'undefined'")) { currentState.isFinishing = true; this._finish(currentState, "load"); doneCount++; delete this._state[param]; } else { if (listener.timeoutSeconds && listener.timeout) { if (currentState.startTime + (listener.timeoutSeconds * 1000) < (new Date()).getTime()) { currentState.isFinishing = true; this._finish(currentState, "timeout"); doneCount++; delete this._state[param]; } } else { if (!listener.timeoutSeconds) { doneCount++; } } } } catch (e) { currentState.isFinishing = true; this._finish(currentState, "error", {status:this.DsrStatusCodes.Error, response:e}); } } } } if (doneCount >= totalCount) { clearInterval(this.inFlightTimer); this.inFlightTimer = null; } }; this.canHandle = function (kwArgs) { return dojo.lang.inArray(["text/javascript", "text/json", "application/json"], (kwArgs["mimetype"].toLowerCase())) && (kwArgs["method"].toLowerCase() == "get") && !(kwArgs["formNode"] && dojo.io.formHasFile(kwArgs["formNode"])) && (!kwArgs["sync"] || kwArgs["sync"] == false) && !kwArgs["file"] && !kwArgs["multipart"]; }; this.removeScripts = function () { var scripts = document.getElementsByTagName("script"); for (var i = 0; scripts && i < scripts.length; i++) { var scriptTag = scripts[i]; if (scriptTag.className == "ScriptSrcTransport") { var parent = scriptTag.parentNode; parent.removeChild(scriptTag); i--; } } }; this.bind = function (kwArgs) { var url = kwArgs.url; var query = ""; if (kwArgs["formNode"]) { var ta = kwArgs.formNode.getAttribute("action"); if ((ta) && (!kwArgs["url"])) { url = ta; } var tp = kwArgs.formNode.getAttribute("method"); if ((tp) && (!kwArgs["method"])) { kwArgs.method = tp; } query += dojo.io.encodeForm(kwArgs.formNode, kwArgs.encoding, kwArgs["formFilter"]); } if (url.indexOf("#") > -1) { dojo.debug("Warning: dojo.io.bind: stripping hash values from url:", url); url = url.split("#")[0]; } var urlParts = url.split("?"); if (urlParts && urlParts.length == 2) { url = urlParts[0]; query += (query ? "&" : "") + urlParts[1]; } if (kwArgs["backButton"] || kwArgs["back"] || kwArgs["changeUrl"]) { dojo.undo.browser.addToHistory(kwArgs); } var id = kwArgs["apiId"] ? kwArgs["apiId"] : "id" + this._counter++; var content = kwArgs["content"]; var jsonpName = kwArgs.jsonParamName; if (kwArgs.sendTransport || jsonpName) { if (!content) { content = {}; } if (kwArgs.sendTransport) { content["dojo.transport"] = "scriptsrc"; } if (jsonpName) { content[jsonpName] = "dojo.io.ScriptSrcTransport._state." + id + ".jsonpCall"; } } if (kwArgs.postContent) { query = kwArgs.postContent; } else { if (content) { query += ((query) ? "&" : "") + dojo.io.argsFromMap(content, kwArgs.encoding, jsonpName); } } if (kwArgs["apiId"]) { kwArgs["useRequestId"] = true; } var state = {"id":id, "idParam":"_dsrid=" + id, "url":url, "query":query, "kwArgs":kwArgs, "startTime":(new Date()).getTime(), "isFinishing":false}; if (!url) { this._finish(state, "error", {status:this.DsrStatusCodes.Error, statusText:"url.none"}); return; } if (content && content[jsonpName]) { state.jsonp = content[jsonpName]; state.jsonpCall = function (data) { if (data["Error"] || data["error"]) { if (dojo["json"] && dojo["json"]["serialize"]) { dojo.debug(dojo.json.serialize(data)); } dojo.io.ScriptSrcTransport._finish(this, "error", data); } else { dojo.io.ScriptSrcTransport._finish(this, "load", data); } }; } if (kwArgs["useRequestId"] || kwArgs["checkString"] || state["jsonp"]) { this._state[id] = state; } if (kwArgs["checkString"]) { state.checkString = kwArgs["checkString"]; } state.constantParams = (kwArgs["constantParams"] == null ? "" : kwArgs["constantParams"]); if (kwArgs["preventCache"] || (this.preventCache == true && kwArgs["preventCache"] != false)) { state.nocacheParam = "dojo.preventCache=" + new Date().valueOf(); } else { state.nocacheParam = ""; } var urlLength = state.url.length + state.query.length + state.constantParams.length + state.nocacheParam.length + this._extraPaddingLength; if (kwArgs["useRequestId"]) { urlLength += state.idParam.length; } if (!kwArgs["checkString"] && kwArgs["useRequestId"] && !state["jsonp"] && !kwArgs["forceSingleRequest"] && urlLength > this.maxUrlLength) { if (url > this.maxUrlLength) { this._finish(state, "error", {status:this.DsrStatusCodes.Error, statusText:"url.tooBig"}); return; } else { this._multiAttach(state, 1); } } else { var queryParams = [state.constantParams, state.nocacheParam, state.query]; if (kwArgs["useRequestId"] && !state["jsonp"]) { queryParams.unshift(state.idParam); } var finalUrl = this._buildUrl(state.url, queryParams); state.finalUrl = finalUrl; this._attach(state.id, finalUrl); } this.startWatchingInFlight(); }; this._counter = 1; this._state = {}; this._extraPaddingLength = 16; this._buildUrl = function (url, nameValueArray) { var finalUrl = url; var joiner = "?"; for (var i = 0; i < nameValueArray.length; i++) { if (nameValueArray[i]) { finalUrl += joiner + nameValueArray[i]; joiner = "&"; } } return finalUrl; }; this._attach = function (id, url) { var element = document.createElement("script"); element.type = "text/javascript"; element.src = url; element.id = id; element.className = "ScriptSrcTransport"; document.getElementsByTagName("head")[0].appendChild(element); }; this._multiAttach = function (state, part) { if (state.query == null) { this._finish(state, "error", {status:this.DsrStatusCodes.Error, statusText:"query.null"}); return; } if (!state.constantParams) { state.constantParams = ""; } var queryMax = this.maxUrlLength - state.idParam.length - state.constantParams.length - state.url.length - state.nocacheParam.length - this._extraPaddingLength; var isDone = state.query.length < queryMax; var currentQuery; if (isDone) { currentQuery = state.query; state.query = null; } else { var ampEnd = state.query.lastIndexOf("&", queryMax - 1); var eqEnd = state.query.lastIndexOf("=", queryMax - 1); if (ampEnd > eqEnd || eqEnd == queryMax - 1) { currentQuery = state.query.substring(0, ampEnd); state.query = state.query.substring(ampEnd + 1, state.query.length); } else { currentQuery = state.query.substring(0, queryMax); var queryName = currentQuery.substring((ampEnd == -1 ? 0 : ampEnd + 1), eqEnd); state.query = queryName + "=" + state.query.substring(queryMax, state.query.length); } } var queryParams = [currentQuery, state.idParam, state.constantParams, state.nocacheParam]; if (!isDone) { queryParams.push("_part=" + part); } var url = this._buildUrl(state.url, queryParams); this._attach(state.id + "_" + part, url); }; this._finish = function (state, callback, event) { if (callback != "partOk" && !state.kwArgs[callback] && !state.kwArgs["handle"]) { if (callback == "error") { state.isDone = true; throw event; } } else { switch (callback) { case "load": var response = event ? event.response : null; if (!response) { response = event; } state.kwArgs[(typeof state.kwArgs.load == "function") ? "load" : "handle"]("load", response, event, state.kwArgs); state.isDone = true; break; case "partOk": var part = parseInt(event.response.part, 10) + 1; if (event.response.constantParams) { state.constantParams = event.response.constantParams; } this._multiAttach(state, part); state.isDone = false; break; case "error": state.kwArgs[(typeof state.kwArgs.error == "function") ? "error" : "handle"]("error", event.response, event, state.kwArgs); state.isDone = true; break; default: state.kwArgs[(typeof state.kwArgs[callback] == "function") ? callback : "handle"](callback, event, event, state.kwArgs); state.isDone = true; } } }; dojo.io.transports.addTransport("ScriptSrcTransport"); }; window.onscriptload = function (event) { var state = null; var transport = dojo.io.ScriptSrcTransport; if (transport._state[event.id]) { state = transport._state[event.id]; } else { var tempState; for (var param in transport._state) { tempState = transport._state[param]; if (tempState.finalUrl && tempState.finalUrl == event.id) { state = tempState; break; } } if (state == null) { var scripts = document.getElementsByTagName("script"); for (var i = 0; scripts && i < scripts.length; i++) { var scriptTag = scripts[i]; if (scriptTag.getAttribute("class") == "ScriptSrcTransport" && scriptTag.src == event.id) { state = transport._state[scriptTag.id]; break; } } } if (state == null) { throw "No matching state for onscriptload event.id: " + event.id; } } var callbackName = "error"; switch (event.status) { case dojo.io.ScriptSrcTransport.DsrStatusCodes.Continue: callbackName = "partOk"; break; case dojo.io.ScriptSrcTransport.DsrStatusCodes.Ok: callbackName = "load"; break; } transport._finish(state, callbackName, event); }; }});

__CPAN_FILE__ src/io/XhrIframeProxy.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.io.XhrIframeProxy"); dojo.require("dojo.experimental"); dojo.experimental("dojo.io.XhrIframeProxy"); dojo.require("dojo.io.IframeIO"); dojo.require("dojo.dom"); dojo.require("dojo.uri.Uri"); dojo.io.XhrIframeProxy = {xipClientUrl:djConfig["xipClientUrl"] || dojo.uri.moduleUri("dojo.io", "xip_client.html"), _state:{}, _stateIdCounter:0, needFrameRecursion:function () { return (true == dojo.render.html.ie70); }, send:function (facade) { var stateId = "XhrIframeProxy" + (this._stateIdCounter++); facade._stateId = stateId; var frameUrl = this.xipClientUrl + "#0:init:id=" + stateId + "&server=" + encodeURIComponent(facade._ifpServerUrl) + "&fr=false"; if (this.needFrameRecursion()) { var fullClientUrl = window.location.href; if ((this.xipClientUrl + "").charAt(0) == "/") { var endIndex = fullClientUrl.indexOf("://"); endIndex = fullClientUrl.indexOf("/", endIndex + 1); fullClientUrl = fullClientUrl.substring(0, endIndex); } else { fullClientUrl = fullClientUrl.substring(0, fullClientUrl.lastIndexOf("/") + 1); } fullClientUrl += this.xipClientUrl; var serverUrl = facade._ifpServerUrl + (facade._ifpServerUrl.indexOf("?") == -1 ? "?" : "&") + "dojo.fr=1"; frameUrl = serverUrl + "#0:init:id=" + stateId + "&client=" + encodeURIComponent(fullClientUrl) + "&fr=" + this.needFrameRecursion(); } this._state[stateId] = {facade:facade, stateId:stateId, clientFrame:dojo.io.createIFrame(stateId, "", frameUrl)}; return stateId; }, receive:function (stateId, urlEncodedData) { var response = {}; var nvPairs = urlEncodedData.split("&"); for (var i = 0; i < nvPairs.length; i++) { if (nvPairs[i]) { var nameValue = nvPairs[i].split("="); response[decodeURIComponent(nameValue[0])] = decodeURIComponent(nameValue[1]); } } var state = this._state[stateId]; var facade = state.facade; facade._setResponseHeaders(response.responseHeaders); if (response.status == 0 || response.status) { facade.status = parseInt(response.status, 10); } if (response.statusText) { facade.statusText = response.statusText; } if (response.responseText) { facade.responseText = response.responseText; var contentType = facade.getResponseHeader("Content-Type"); if (contentType && (contentType == "application/xml" || contentType == "text/xml")) { facade.responseXML = dojo.dom.createDocumentFromText(response.responseText, contentType); } } facade.readyState = 4; this.destroyState(stateId); }, clientFrameLoaded:function (stateId) { var state = this._state[stateId]; var facade = state.facade; if (this.needFrameRecursion()) { var clientWindow = window.open("", state.stateId + "_clientEndPoint"); } else { var clientWindow = state.clientFrame.contentWindow; } var reqHeaders = []; for (var param in facade._requestHeaders) { reqHeaders.push(param + ": " + facade._requestHeaders[param]); } var requestData = {uri:facade._uri}; if (reqHeaders.length > 0) { requestData.requestHeaders = reqHeaders.join("\r\n"); } if (facade._method) { requestData.method = facade._method; } if (facade._bodyData) { requestData.data = facade._bodyData; } clientWindow.send(dojo.io.argsFromMap(requestData, "utf8")); }, destroyState:function (stateId) { var state = this._state[stateId]; if (state) { delete this._state[stateId]; var parentNode = state.clientFrame.parentNode; parentNode.removeChild(state.clientFrame); state.clientFrame = null; state = null; } }, createFacade:function () { if (arguments && arguments[0] && arguments[0]["iframeProxyUrl"]) { return new dojo.io.XhrIframeFacade(arguments[0]["iframeProxyUrl"]); } else { return dojo.io.XhrIframeProxy.oldGetXmlhttpObject.apply(dojo.hostenv, arguments); } }}; dojo.io.XhrIframeProxy.oldGetXmlhttpObject = dojo.hostenv.getXmlhttpObject; dojo.hostenv.getXmlhttpObject = dojo.io.XhrIframeProxy.createFacade; dojo.io.XhrIframeFacade = function (ifpServerUrl) { this._requestHeaders = {}; this._allResponseHeaders = null; this._responseHeaders = {}; this._method = null; this._uri = null; this._bodyData = null; this.responseText = null; this.responseXML = null; this.status = null; this.statusText = null; this.readyState = 0; this._ifpServerUrl = ifpServerUrl; this._stateId = null; }; dojo.lang.extend(dojo.io.XhrIframeFacade, {open:function (method, uri) { this._method = method; this._uri = uri; this.readyState = 1; }, setRequestHeader:function (header, value) { this._requestHeaders[header] = value; }, send:function (stringData) { this._bodyData = stringData; this._stateId = dojo.io.XhrIframeProxy.send(this); this.readyState = 2; }, abort:function () { dojo.io.XhrIframeProxy.destroyState(this._stateId); }, getAllResponseHeaders:function () { return this._allResponseHeaders; }, getResponseHeader:function (header) { return this._responseHeaders[header]; }, _setResponseHeaders:function (allHeaders) { if (allHeaders) { this._allResponseHeaders = allHeaders; allHeaders = allHeaders.replace(/\r/g, ""); var nvPairs = allHeaders.split("\n"); for (var i = 0; i < nvPairs.length; i++) { if (nvPairs[i]) { var nameValue = nvPairs[i].split(": "); this._responseHeaders[nameValue[0]] = nameValue[1]; } } } }});

__CPAN_FILE__ src/io/RhinoIO.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.io.RhinoIO"); dojo.require("dojo.io.common"); dojo.require("dojo.lang.func"); dojo.require("dojo.lang.array"); dojo.require("dojo.string.extras"); dojo.io.RhinoHTTPTransport = new function () { this.canHandle = function (req) { if (dojo.lang.find(["text/plain", "text/html", "text/xml", "text/javascript", "text/json", "application/json"], (req.mimetype.toLowerCase() || "")) < 0) { return false; } if (req.url.substr(0, 7) != "http://") { return false; } return true; }; function doLoad(req, conn) { var ret; if (req.method.toLowerCase() == "head") { } else { var stream = conn.getContent(); var reader = new java.io.BufferedReader(new java.io.InputStreamReader(stream)); var text = ""; var line = null; while ((line = reader.readLine()) != null) { text += line; } if (req.mimetype == "text/javascript") { try { ret = dj_eval(text); } catch (e) { dojo.debug(e); dojo.debug(text); ret = null; } } else { if (req.mimetype == "text/json" || req.mimetype == "application/json") { try { ret = dj_eval("(" + text + ")"); } catch (e) { dojo.debug(e); dojo.debug(text); ret = false; } } else { ret = text; } } } req.load("load", ret, req); } function connect(req) { var content = req.content || {}; var query; if (req.sendTransport) { content["dojo.transport"] = "rhinohttp"; } if (req.postContent) { query = req.postContent; } else { query = dojo.io.argsFromMap(content, req.encoding); } var url_text = req.url; if (req.method.toLowerCase() == "get" && query != "") { url_text = url_text + "?" + query; } var url = new java.net.URL(url_text); var conn = url.openConnection(); conn.setRequestMethod(req.method.toUpperCase()); if (req.headers) { for (var header in req.headers) { if (header.toLowerCase() == "content-type" && !req.contentType) { req.contentType = req.headers[header]; } else { conn.setRequestProperty(header, req.headers[header]); } } } if (req.contentType) { conn.setRequestProperty("Content-Type", req.contentType); } if (req.method.toLowerCase() == "post") { conn.setDoOutput(true); var output_stream = conn.getOutputStream(); var byte_array = (new java.lang.String(query)).getBytes(); output_stream.write(byte_array, 0, byte_array.length); } conn.connect(); doLoad(req, conn); } this.bind = function (req) { var async = req["sync"] ? false : true; if (async) { setTimeout(dojo.lang.hitch(this, function () { connect(req); }), 1); } else { connect(req); } }; dojo.io.transports.addTransport("RhinoHTTPTransport"); };

__CPAN_FILE__ src/io/__package__.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.kwCompoundRequire({common:["dojo.io.common"], rhino:["dojo.io.RhinoIO"], browser:["dojo.io.BrowserIO", "dojo.io.cookie"], dashboard:["dojo.io.BrowserIO", "dojo.io.cookie"]}); dojo.provide("dojo.io.*");

__CPAN_FILE__ src/io/ScriptSrcIO.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.io.ScriptSrcIO"); dojo.require("dojo.io.BrowserIO"); dojo.require("dojo.undo.browser"); dojo.io.ScriptSrcTransport = new function () { this.preventCache = false; this.maxUrlLength = 1000; this.inFlightTimer = null; this.DsrStatusCodes = {Continue:100, Ok:200, Error:500}; this.startWatchingInFlight = function () { if (!this.inFlightTimer) { this.inFlightTimer = setInterval("dojo.io.ScriptSrcTransport.watchInFlight();", 100); } }; this.watchInFlight = function () { var totalCount = 0; var doneCount = 0; for (var param in this._state) { totalCount++; var currentState = this._state[param]; if (currentState.isDone) { doneCount++; delete this._state[param]; } else { if (!currentState.isFinishing) { var listener = currentState.kwArgs; try { if (currentState.checkString && eval("typeof(" + currentState.checkString + ") != 'undefined'")) { currentState.isFinishing = true; this._finish(currentState, "load"); doneCount++; delete this._state[param]; } else { if (listener.timeoutSeconds && listener.timeout) { if (currentState.startTime + (listener.timeoutSeconds * 1000) < (new Date()).getTime()) { currentState.isFinishing = true; this._finish(currentState, "timeout"); doneCount++; delete this._state[param]; } } else { if (!listener.timeoutSeconds) { doneCount++; } } } } catch (e) { currentState.isFinishing = true; this._finish(currentState, "error", {status:this.DsrStatusCodes.Error, response:e}); } } } } if (doneCount >= totalCount) { clearInterval(this.inFlightTimer); this.inFlightTimer = null; } }; this.canHandle = function (kwArgs) { return dojo.lang.inArray(["text/javascript", "text/json", "application/json"], (kwArgs["mimetype"].toLowerCase())) && (kwArgs["method"].toLowerCase() == "get") && !(kwArgs["formNode"] && dojo.io.formHasFile(kwArgs["formNode"])) && (!kwArgs["sync"] || kwArgs["sync"] == false) && !kwArgs["file"] && !kwArgs["multipart"]; }; this.removeScripts = function () { var scripts = document.getElementsByTagName("script"); for (var i = 0; scripts && i < scripts.length; i++) { var scriptTag = scripts[i]; if (scriptTag.className == "ScriptSrcTransport") { var parent = scriptTag.parentNode; parent.removeChild(scriptTag); i--; } } }; this.bind = function (kwArgs) { var url = kwArgs.url; var query = ""; if (kwArgs["formNode"]) { var ta = kwArgs.formNode.getAttribute("action"); if ((ta) && (!kwArgs["url"])) { url = ta; } var tp = kwArgs.formNode.getAttribute("method"); if ((tp) && (!kwArgs["method"])) { kwArgs.method = tp; } query += dojo.io.encodeForm(kwArgs.formNode, kwArgs.encoding, kwArgs["formFilter"]); } if (url.indexOf("#") > -1) { dojo.debug("Warning: dojo.io.bind: stripping hash values from url:", url); url = url.split("#")[0]; } var urlParts = url.split("?"); if (urlParts && urlParts.length == 2) { url = urlParts[0]; query += (query ? "&" : "") + urlParts[1]; } if (kwArgs["backButton"] || kwArgs["back"] || kwArgs["changeUrl"]) { dojo.undo.browser.addToHistory(kwArgs); } var id = kwArgs["apiId"] ? kwArgs["apiId"] : "id" + this._counter++; var content = kwArgs["content"]; var jsonpName = kwArgs.jsonParamName; if (kwArgs.sendTransport || jsonpName) { if (!content) { content = {}; } if (kwArgs.sendTransport) { content["dojo.transport"] = "scriptsrc"; } if (jsonpName) { content[jsonpName] = "dojo.io.ScriptSrcTransport._state." + id + ".jsonpCall"; } } if (kwArgs.postContent) { query = kwArgs.postContent; } else { if (content) { query += ((query) ? "&" : "") + dojo.io.argsFromMap(content, kwArgs.encoding, jsonpName); } } if (kwArgs["apiId"]) { kwArgs["useRequestId"] = true; } var state = {"id":id, "idParam":"_dsrid=" + id, "url":url, "query":query, "kwArgs":kwArgs, "startTime":(new Date()).getTime(), "isFinishing":false}; if (!url) { this._finish(state, "error", {status:this.DsrStatusCodes.Error, statusText:"url.none"}); return; } if (content && content[jsonpName]) { state.jsonp = content[jsonpName]; state.jsonpCall = function (data) { if (data["Error"] || data["error"]) { if (dojo["json"] && dojo["json"]["serialize"]) { dojo.debug(dojo.json.serialize(data)); } dojo.io.ScriptSrcTransport._finish(this, "error", data); } else { dojo.io.ScriptSrcTransport._finish(this, "load", data); } }; } if (kwArgs["useRequestId"] || kwArgs["checkString"] || state["jsonp"]) { this._state[id] = state; } if (kwArgs["checkString"]) { state.checkString = kwArgs["checkString"]; } state.constantParams = (kwArgs["constantParams"] == null ? "" : kwArgs["constantParams"]); if (kwArgs["preventCache"] || (this.preventCache == true && kwArgs["preventCache"] != false)) { state.nocacheParam = "dojo.preventCache=" + new Date().valueOf(); } else { state.nocacheParam = ""; } var urlLength = state.url.length + state.query.length + state.constantParams.length + state.nocacheParam.length + this._extraPaddingLength; if (kwArgs["useRequestId"]) { urlLength += state.idParam.length; } if (!kwArgs["checkString"] && kwArgs["useRequestId"] && !state["jsonp"] && !kwArgs["forceSingleRequest"] && urlLength > this.maxUrlLength) { if (url > this.maxUrlLength) { this._finish(state, "error", {status:this.DsrStatusCodes.Error, statusText:"url.tooBig"}); return; } else { this._multiAttach(state, 1); } } else { var queryParams = [state.constantParams, state.nocacheParam, state.query]; if (kwArgs["useRequestId"] && !state["jsonp"]) { queryParams.unshift(state.idParam); } var finalUrl = this._buildUrl(state.url, queryParams); state.finalUrl = finalUrl; this._attach(state.id, finalUrl); } this.startWatchingInFlight(); }; this._counter = 1; this._state = {}; this._extraPaddingLength = 16; this._buildUrl = function (url, nameValueArray) { var finalUrl = url; var joiner = "?"; for (var i = 0; i < nameValueArray.length; i++) { if (nameValueArray[i]) { finalUrl += joiner + nameValueArray[i]; joiner = "&"; } } return finalUrl; }; this._attach = function (id, url) { var element = document.createElement("script"); element.type = "text/javascript"; element.src = url; element.id = id; element.className = "ScriptSrcTransport"; document.getElementsByTagName("head")[0].appendChild(element); }; this._multiAttach = function (state, part) { if (state.query == null) { this._finish(state, "error", {status:this.DsrStatusCodes.Error, statusText:"query.null"}); return; } if (!state.constantParams) { state.constantParams = ""; } var queryMax = this.maxUrlLength - state.idParam.length - state.constantParams.length - state.url.length - state.nocacheParam.length - this._extraPaddingLength; var isDone = state.query.length < queryMax; var currentQuery; if (isDone) { currentQuery = state.query; state.query = null; } else { var ampEnd = state.query.lastIndexOf("&", queryMax - 1); var eqEnd = state.query.lastIndexOf("=", queryMax - 1); if (ampEnd > eqEnd || eqEnd == queryMax - 1) { currentQuery = state.query.substring(0, ampEnd); state.query = state.query.substring(ampEnd + 1, state.query.length); } else { currentQuery = state.query.substring(0, queryMax); var queryName = currentQuery.substring((ampEnd == -1 ? 0 : ampEnd + 1), eqEnd); state.query = queryName + "=" + state.query.substring(queryMax, state.query.length); } } var queryParams = [currentQuery, state.idParam, state.constantParams, state.nocacheParam]; if (!isDone) { queryParams.push("_part=" + part); } var url = this._buildUrl(state.url, queryParams); this._attach(state.id + "_" + part, url); }; this._finish = function (state, callback, event) { if (callback != "partOk" && !state.kwArgs[callback] && !state.kwArgs["handle"]) { if (callback == "error") { state.isDone = true; throw event; } } else { switch (callback) { case "load": var response = event ? event.response : null; if (!response) { response = event; } state.kwArgs[(typeof state.kwArgs.load == "function") ? "load" : "handle"]("load", response, event, state.kwArgs); state.isDone = true; break; case "partOk": var part = parseInt(event.response.part, 10) + 1; if (event.response.constantParams) { state.constantParams = event.response.constantParams; } this._multiAttach(state, part); state.isDone = false; break; case "error": state.kwArgs[(typeof state.kwArgs.error == "function") ? "error" : "handle"]("error", event.response, event, state.kwArgs); state.isDone = true; break; default: state.kwArgs[(typeof state.kwArgs[callback] == "function") ? callback : "handle"](callback, event, event, state.kwArgs); state.isDone = true; } } }; dojo.io.transports.addTransport("ScriptSrcTransport"); }; window.onscriptload = function (event) { var state = null; var transport = dojo.io.ScriptSrcTransport; if (transport._state[event.id]) { state = transport._state[event.id]; } else { var tempState; for (var param in transport._state) { tempState = transport._state[param]; if (tempState.finalUrl && tempState.finalUrl == event.id) { state = tempState; break; } } if (state == null) { var scripts = document.getElementsByTagName("script"); for (var i = 0; scripts && i < scripts.length; i++) { var scriptTag = scripts[i]; if (scriptTag.getAttribute("class") == "ScriptSrcTransport" && scriptTag.src == event.id) { state = transport._state[scriptTag.id]; break; } } } if (state == null) { throw "No matching state for onscriptload event.id: " + event.id; } } var callbackName = "error"; switch (event.status) { case dojo.io.ScriptSrcTransport.DsrStatusCodes.Continue: callbackName = "partOk"; break; case dojo.io.ScriptSrcTransport.DsrStatusCodes.Ok: callbackName = "load"; break; } transport._finish(state, callbackName, event); };

__CPAN_FILE__ src/io/cookie.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.io.cookie"); dojo.io.cookie.setCookie = function (name, value, days, path, domain, secure) { var expires = -1; if ((typeof days == "number") && (days >= 0)) { var d = new Date(); d.setTime(d.getTime() + (days * 24 * 60 * 60 * 1000)); expires = d.toGMTString(); } value = escape(value); document.cookie = name + "=" + value + ";" + (expires != -1 ? " expires=" + expires + ";" : "") + (path ? "path=" + path : "") + (domain ? "; domain=" + domain : "") + (secure ? "; secure" : ""); }; dojo.io.cookie.set = dojo.io.cookie.setCookie; dojo.io.cookie.getCookie = function (name) { var idx = document.cookie.lastIndexOf(name + "="); if (idx == -1) { return null; } var value = document.cookie.substring(idx + name.length + 1); var end = value.indexOf(";"); if (end == -1) { end = value.length; } value = value.substring(0, end); value = unescape(value); return value; }; dojo.io.cookie.get = dojo.io.cookie.getCookie; dojo.io.cookie.deleteCookie = function (name) { dojo.io.cookie.setCookie(name, "-", 0); }; dojo.io.cookie.setObjectCookie = function (name, obj, days, path, domain, secure, clearCurrent) { if (arguments.length == 5) { clearCurrent = domain; domain = null; secure = null; } var pairs = [], cookie, value = ""; if (!clearCurrent) { cookie = dojo.io.cookie.getObjectCookie(name); } if (days >= 0) { if (!cookie) { cookie = {}; } for (var prop in obj) { if (obj[prop] == null) { delete cookie[prop]; } else { if ((typeof obj[prop] == "string") || (typeof obj[prop] == "number")) { cookie[prop] = obj[prop]; } } } prop = null; for (var prop in cookie) { pairs.push(escape(prop) + "=" + escape(cookie[prop])); } value = pairs.join("&"); } dojo.io.cookie.setCookie(name, value, days, path, domain, secure); }; dojo.io.cookie.getObjectCookie = function (name) { var values = null, cookie = dojo.io.cookie.getCookie(name); if (cookie) { values = {}; var pairs = cookie.split("&"); for (var i = 0; i < pairs.length; i++) { var pair = pairs[i].split("="); var value = pair[1]; if (isNaN(value)) { value = unescape(pair[1]); } values[unescape(pair[0])] = value; } } return values; }; dojo.io.cookie.isSupported = function () { if (typeof navigator.cookieEnabled != "boolean") { dojo.io.cookie.setCookie("__TestingYourBrowserForCookieSupport__", "CookiesAllowed", 90, null); var cookieVal = dojo.io.cookie.getCookie("__TestingYourBrowserForCookieSupport__"); navigator.cookieEnabled = (cookieVal == "CookiesAllowed"); if (navigator.cookieEnabled) { this.deleteCookie("__TestingYourBrowserForCookieSupport__"); } } return navigator.cookieEnabled; }; if (!dojo.io.cookies) { dojo.io.cookies = dojo.io.cookie; }

__CPAN_FILE__ src/io/__package__.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["kwCompoundRequire", {common:["dojo.io.common"], rhino:["dojo.io.RhinoIO"], browser:["dojo.io.BrowserIO", "dojo.io.cookie"], dashboard:["dojo.io.BrowserIO", "dojo.io.cookie"]}], ["provide", "dojo.io.*"]], definePackage:function (dojo) { dojo.kwCompoundRequire({common:["dojo.io.common"], rhino:["dojo.io.RhinoIO"], browser:["dojo.io.BrowserIO", "dojo.io.cookie"], dashboard:["dojo.io.BrowserIO", "dojo.io.cookie"]}); dojo.provide("dojo.io.*"); }});

__CPAN_FILE__ src/io/common.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.io.common"], ["require", "dojo.string"], ["require", "dojo.lang.extras"]], definePackage:function (dojo) { dojo.provide("dojo.io.common"); dojo.require("dojo.string"); dojo.require("dojo.lang.extras"); dojo.io.transports = []; dojo.io.hdlrFuncNames = ["load", "error", "timeout"]; dojo.io.Request = function (url, mimetype, transport, changeUrl) { if ((arguments.length == 1) && (arguments[0].constructor == Object)) { this.fromKwArgs(arguments[0]); } else { this.url = url; if (mimetype) { this.mimetype = mimetype; } if (transport) { this.transport = transport; } if (arguments.length >= 4) { this.changeUrl = changeUrl; } } }; dojo.lang.extend(dojo.io.Request, {url:"", mimetype:"text/plain", method:"GET", content:undefined, transport:undefined, changeUrl:undefined, formNode:undefined, sync:false, bindSuccess:false, useCache:false, preventCache:false, jsonFilter:function (value) { if ((this.mimetype == "text/json-comment-filtered") || (this.mimetype == "application/json-comment-filtered")) { var cStartIdx = value.indexOf("/*"); var cEndIdx = value.lastIndexOf("*/"); if ((cStartIdx == -1) || (cEndIdx == -1)) { dojo.debug("your JSON wasn't comment filtered!"); return ""; } return value.substring(cStartIdx + 2, cEndIdx); } dojo.debug("please consider using a mimetype of text/json-comment-filtered to avoid potential security issues with JSON endpoints"); return value; }, load:function (type, data, transportImplementation, kwArgs) { }, error:function (type, error, transportImplementation, kwArgs) { }, timeout:function (type, empty, transportImplementation, kwArgs) { }, handle:function (type, data, transportImplementation, kwArgs) { }, timeoutSeconds:0, abort:function () { }, fromKwArgs:function (kwArgs) { if (kwArgs["url"]) { kwArgs.url = kwArgs.url.toString(); } if (kwArgs["formNode"]) { kwArgs.formNode = dojo.byId(kwArgs.formNode); } if (!kwArgs["method"] && kwArgs["formNode"] && kwArgs["formNode"].method) { kwArgs.method = kwArgs["formNode"].method; } if (!kwArgs["handle"] && kwArgs["handler"]) { kwArgs.handle = kwArgs.handler; } if (!kwArgs["load"] && kwArgs["loaded"]) { kwArgs.load = kwArgs.loaded; } if (!kwArgs["changeUrl"] && kwArgs["changeURL"]) { kwArgs.changeUrl = kwArgs.changeURL; } kwArgs.encoding = dojo.lang.firstValued(kwArgs["encoding"], djConfig["bindEncoding"], ""); kwArgs.sendTransport = dojo.lang.firstValued(kwArgs["sendTransport"], djConfig["ioSendTransport"], false); var isFunction = dojo.lang.isFunction; for (var x = 0; x < dojo.io.hdlrFuncNames.length; x++) { var fn = dojo.io.hdlrFuncNames[x]; if (kwArgs[fn] && isFunction(kwArgs[fn])) { continue; } if (kwArgs["handle"] && isFunction(kwArgs["handle"])) { kwArgs[fn] = kwArgs.handle; } } dojo.lang.mixin(this, kwArgs); }}); dojo.io.Error = function (msg, type, num) { this.message = msg; this.type = type || "unknown"; this.number = num || 0; }; dojo.io.transports.addTransport = function (name) { this.push(name); this[name] = dojo.io[name]; }; dojo.io.bind = function (request) { if (!(request instanceof dojo.io.Request)) { try { request = new dojo.io.Request(request); } catch (e) { dojo.debug(e); } } var tsName = ""; if (request["transport"]) { tsName = request["transport"]; if (!this[tsName]) { dojo.io.sendBindError(request, "No dojo.io.bind() transport with name '" + request["transport"] + "'."); return request; } if (!this[tsName].canHandle(request)) { dojo.io.sendBindError(request, "dojo.io.bind() transport with name '" + request["transport"] + "' cannot handle this type of request."); return request; } } else { for (var x = 0; x < dojo.io.transports.length; x++) { var tmp = dojo.io.transports[x]; if ((this[tmp]) && (this[tmp].canHandle(request))) { tsName = tmp; break; } } if (tsName == "") { dojo.io.sendBindError(request, "None of the loaded transports for dojo.io.bind()" + " can handle the request."); return request; } } this[tsName].bind(request); request.bindSuccess = true; return request; }; dojo.io.sendBindError = function (request, message) { if ((typeof request.error == "function" || typeof request.handle == "function") && (typeof setTimeout == "function" || typeof setTimeout == "object")) { var errorObject = new dojo.io.Error(message); setTimeout(function () { request[(typeof request.error == "function") ? "error" : "handle"]("error", errorObject, null, request); }, 50); } else { dojo.raise(message); } }; dojo.io.queueBind = function (request) { if (!(request instanceof dojo.io.Request)) { try { request = new dojo.io.Request(request); } catch (e) { dojo.debug(e); } } var oldLoad = request.load; request.load = function () { dojo.io._queueBindInFlight = false; var ret = oldLoad.apply(this, arguments); dojo.io._dispatchNextQueueBind(); return ret; }; var oldErr = request.error; request.error = function () { dojo.io._queueBindInFlight = false; var ret = oldErr.apply(this, arguments); dojo.io._dispatchNextQueueBind(); return ret; }; dojo.io._bindQueue.push(request); dojo.io._dispatchNextQueueBind(); return request; }; dojo.io._dispatchNextQueueBind = function () { if (!dojo.io._queueBindInFlight) { dojo.io._queueBindInFlight = true; if (dojo.io._bindQueue.length > 0) { dojo.io.bind(dojo.io._bindQueue.shift()); } else { dojo.io._queueBindInFlight = false; } } }; dojo.io._bindQueue = []; dojo.io._queueBindInFlight = false; dojo.io.argsFromMap = function (map, encoding, last) { var enc = /utf/i.test(encoding || "") ? encodeURIComponent : dojo.string.encodeAscii; var mapped = []; var control = new Object(); for (var name in map) { var domap = function (elt) { var val = enc(name) + "=" + enc(elt); mapped[(last == name) ? "push" : "unshift"](val); }; if (!control[name]) { var value = map[name]; if (dojo.lang.isArray(value)) { dojo.lang.forEach(value, domap); } else { domap(value); } } } return mapped.join("&"); }; dojo.io.setIFrameSrc = function (iframe, src, replace) { try { var r = dojo.render.html; if (!replace) { if (r.safari) { iframe.location = src; } else { frames[iframe.name].location = src; } } else { var idoc; if (r.ie) { idoc = iframe.contentWindow.document; } else { if (r.safari) { idoc = iframe.document; } else { idoc = iframe.contentWindow; } } if (!idoc) { iframe.location = src; return; } else { idoc.location.replace(src); } } } catch (e) { dojo.debug(e); dojo.debug("setIFrameSrc: " + e); } }; }});

__CPAN_FILE__ src/io/IframeIO.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.io.IframeIO"], ["require", "dojo.io.BrowserIO"], ["require", "dojo.uri.*"]], definePackage:function (dojo) { dojo.provide("dojo.io.IframeIO"); dojo.require("dojo.io.BrowserIO"); dojo.require("dojo.uri.*"); dojo.io.createIFrame = function (fname, onloadstr, uri) { if (window[fname]) { return window[fname]; } if (window.frames[fname]) { return window.frames[fname]; } var r = dojo.render.html; var cframe = null; var turi = uri; if (!turi) { if (djConfig["useXDomain"] && !djConfig["dojoIframeHistoryUrl"]) { dojo.debug("dojo.io.createIFrame: When using cross-domain Dojo builds," + " please save iframe_history.html to your domain and set djConfig.dojoIframeHistoryUrl" + " to the path on your domain to iframe_history.html"); } turi = (djConfig["dojoIframeHistoryUrl"] || dojo.uri.moduleUri("dojo", "../iframe_history.html")) + "#noInit=true"; } var ifrstr = ((r.ie) && (dojo.render.os.win)) ? "<iframe name=\"" + fname + "\" src=\"" + turi + "\" onload=\"" + onloadstr + "\">" : "iframe"; cframe = document.createElement(ifrstr); with (cframe) { name = fname; setAttribute("name", fname); id = fname; } dojo.body().appendChild(cframe); window[fname] = cframe; with (cframe.style) { if (!r.safari) { position = "absolute"; } left = top = "0px"; height = width = "1px"; visibility = "hidden"; } if (!r.ie) { dojo.io.setIFrameSrc(cframe, turi, true); cframe.onload = new Function(onloadstr); } return cframe; }; dojo.io.IframeTransport = new function () { var _this = this; this.currentRequest = null; this.requestQueue = []; this.iframeName = "dojoIoIframe"; this.fireNextRequest = function () { try { if ((this.currentRequest) || (this.requestQueue.length == 0)) { return; } var cr = this.currentRequest = this.requestQueue.shift(); cr._contentToClean = []; var fn = cr["formNode"]; var content = cr["content"] || {}; if (cr.sendTransport) { content["dojo.transport"] = "iframe"; } if (fn) { if (content) { for (var x in content) { if (!fn[x]) { var tn; if (dojo.render.html.ie) { tn = document.createElement("<input type='hidden' name='" + x + "' value='" + content[x] + "'>"); fn.appendChild(tn); } else { tn = document.createElement("input"); fn.appendChild(tn); tn.type = "hidden"; tn.name = x; tn.value = content[x]; } cr._contentToClean.push(x); } else { fn[x].value = content[x]; } } } if (cr["url"]) { cr._originalAction = fn.getAttribute("action"); fn.setAttribute("action", cr.url); } if (!fn.getAttribute("method")) { fn.setAttribute("method", (cr["method"]) ? cr["method"] : "post"); } cr._originalTarget = fn.getAttribute("target"); fn.setAttribute("target", this.iframeName); fn.target = this.iframeName; fn.submit(); } else { var query = dojo.io.argsFromMap(this.currentRequest.content); var tmpUrl = cr.url + (cr.url.indexOf("?") > -1 ? "&" : "?") + query; dojo.io.setIFrameSrc(this.iframe, tmpUrl, true); } } catch (e) { this.iframeOnload(e); } }; this.canHandle = function (kwArgs) { return ((dojo.lang.inArray(["text/plain", "text/html", "text/javascript", "text/json", "application/json"], kwArgs["mimetype"])) && (dojo.lang.inArray(["post", "get"], kwArgs["method"].toLowerCase())) && (!((kwArgs["sync"]) && (kwArgs["sync"] == true)))); }; this.bind = function (kwArgs) { if (!this["iframe"]) { this.setUpIframe(); } this.requestQueue.push(kwArgs); this.fireNextRequest(); return; }; this.setUpIframe = function () { this.iframe = dojo.io.createIFrame(this.iframeName, "dojo.io.IframeTransport.iframeOnload();"); }; this.iframeOnload = function (errorObject) { if (!_this.currentRequest) { _this.fireNextRequest(); return; } var req = _this.currentRequest; if (req.formNode) { var toClean = req._contentToClean; for (var i = 0; i < toClean.length; i++) { var key = toClean[i]; if (dojo.render.html.safari) { var fNode = req.formNode; for (var j = 0; j < fNode.childNodes.length; j++) { var chNode = fNode.childNodes[j]; if (chNode.name == key) { var pNode = chNode.parentNode; pNode.removeChild(chNode); break; } } } else { var input = req.formNode[key]; req.formNode.removeChild(input); req.formNode[key] = null; } } if (req["_originalAction"]) { req.formNode.setAttribute("action", req._originalAction); } if (req["_originalTarget"]) { req.formNode.setAttribute("target", req._originalTarget); req.formNode.target = req._originalTarget; } } var contentDoc = function (iframe_el) { var doc = iframe_el.contentDocument || ((iframe_el.contentWindow) && (iframe_el.contentWindow.document)) || ((iframe_el.name) && (document.frames[iframe_el.name]) && (document.frames[iframe_el.name].document)) || null; return doc; }; var value; var success = false; if (errorObject) { this._callError(req, "IframeTransport Request Error: " + errorObject); } else { var ifd = contentDoc(_this.iframe); try { var cmt = req.mimetype; if ((cmt == "text/javascript") || (cmt == "text/json") || (cmt == "application/json")) { var js = ifd.getElementsByTagName("textarea")[0].value; if (cmt == "text/json" || cmt == "application/json") { js = "(" + js + ")"; } value = dj_eval(js); } else { if (cmt == "text/html") { value = ifd; } else { value = ifd.getElementsByTagName("textarea")[0].value; } } success = true; } catch (e) { this._callError(req, "IframeTransport Error: " + e); } } try { if (success && dojo.lang.isFunction(req["load"])) { req.load("load", value, req); } } catch (e) { throw e; } finally { _this.currentRequest = null; _this.fireNextRequest(); } }; this._callError = function (req, message) { var errObj = new dojo.io.Error(message); if (dojo.lang.isFunction(req["error"])) { req.error("error", errObj, req); } }; dojo.io.transports.addTransport("IframeTransport"); }; }});

__CPAN_FILE__ src/io/RepubsubIO.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.require("dojo.event.*"); dojo.require("dojo.io.BrowserIO"); dojo.provide("dojo.io.RepubsubIO"); dojo.io.repubsubTranport = new function () { var rps = dojo.io.repubsub; this.canHandle = function (kwArgs) { if ((kwArgs["mimetype"] == "text/javascript") && (kwArgs["method"] == "repubsub")) { return true; } return false; }; this.bind = function (kwArgs) { if (!rps.isInitialized) { rps.init(); } if (!rps.topics[kwArgs.url]) { kwArgs.rpsLoad = function (evt) { kwArgs.load("load", evt); }; rps.subscribe(kwArgs.url, kwArgs, "rpsLoad"); } if (kwArgs["content"]) { var cEvt = dojo.io.repubsubEvent.initFromProperties(kwArgs.content); rps.publish(kwArgs.url, cEvt); } }; dojo.io.transports.addTransport("repubsubTranport"); }; dojo.io.repubsub = new function () { this.initDoc = "init.html"; this.isInitialized = false; this.subscriptionBacklog = []; this.debug = true; this.rcvNodeName = null; this.sndNodeName = null; this.rcvNode = null; this.sndNode = null; this.canRcv = false; this.canSnd = false; this.canLog = false; this.sndTimer = null; this.windowRef = window; this.backlog = []; this.tunnelInitCount = 0; this.tunnelFrameKey = "tunnel_frame"; this.serverBaseURL = location.protocol + "//" + location.host + location.pathname; this.logBacklog = []; this.getRandStr = function () { return Math.random().toString().substring(2, 10); }; this.userid = "guest"; this.tunnelID = this.getRandStr(); this.attachPathList = []; this.topics = []; this.parseGetStr = function () { var baseUrl = document.location.toString(); var params = baseUrl.split("?", 2); if (params.length > 1) { var paramStr = params[1]; var pairs = paramStr.split("&"); var opts = []; for (var x in pairs) { var sp = pairs[x].split("="); try { opts[sp[0]] = eval(sp[1]); } catch (e) { opts[sp[0]] = sp[1]; } } return opts; } else { return []; } }; var getOpts = this.parseGetStr(); for (var x in getOpts) { this[x] = getOpts[x]; } if (!this["tunnelURI"]) { this.tunnelURI = ["/who/", escape(this.userid), "/s/", this.getRandStr(), "/kn_journal"].join(""); } if (window["repubsubOpts"] || window["rpsOpts"]) { var optObj = window["repubsubOpts"] || window["rpsOpts"]; for (var x in optObj) { this[x] = optObj[x]; } } this.tunnelCloseCallback = function () { dojo.io.setIFrameSrc(this.rcvNode, this.initDoc + "?callback=repubsub.rcvNodeReady&domain=" + document.domain); }; this.receiveEventFromTunnel = function (evt, srcWindow) { if (!evt["elements"]) { this.log("bailing! event received without elements!", "error"); return; } var e = {}; for (var i = 0; i < evt.elements.length; i++) { var ee = evt.elements[i]; e[ee.name || ee.nameU] = (ee.value || ee.valueU); this.log("[event]: " + (ee.name || ee.nameU) + ": " + e[ee.name || ee.nameU]); } this.dispatch(e); }; this.widenDomain = function (domainStr) { var cd = domainStr || document.domain; if (cd.indexOf(".") == -1) { return; } var dps = cd.split("."); if (dps.length <= 2) { return; } dps = dps.slice(dps.length - 2); document.domain = dps.join("."); }; this.parseCookie = function () { var cs = document.cookie; var keypairs = cs.split(";"); for (var x = 0; x < keypairs.length; x++) { keypairs[x] = keypairs[x].split("="); if (x != keypairs.length - 1) { cs += ";"; } } return keypairs; }; this.setCookie = function (keypairs, clobber) { if ((clobber) && (clobber == true)) { document.cookie = ""; } var cs = ""; for (var x = 0; x < keypairs.length; x++) { cs += keypairs[x][0] + "=" + keypairs[x][1]; if (x != keypairs.length - 1) { cs += ";"; } } document.cookie = cs; }; this.log = function (str, lvl) { if (!this.debug) { return; } while (this.logBacklog.length > 0) { if (!this.canLog) { break; } var blo = this.logBacklog.shift(); this.writeLog("[" + blo[0] + "]: " + blo[1], blo[2]); } this.writeLog(str, lvl); }; this.writeLog = function (str, lvl) { dojo.debug(((new Date()).toLocaleTimeString()) + ": " + str); }; this.init = function () { this.widenDomain(); this.openTunnel(); this.isInitialized = true; while (this.subscriptionBacklog.length) { this.subscribe.apply(this, this.subscriptionBacklog.shift()); } }; this.clobber = function () { if (this.rcvNode) { this.setCookie([[this.tunnelFrameKey, "closed"], ["path", "/"]], false); } }; this.openTunnel = function () { this.rcvNodeName = "rcvIFrame_" + this.getRandStr(); this.setCookie([[this.tunnelFrameKey, this.rcvNodeName], ["path", "/"]], false); this.rcvNode = dojo.io.createIFrame(this.rcvNodeName); dojo.io.setIFrameSrc(this.rcvNode, this.initDoc + "?callback=repubsub.rcvNodeReady&domain=" + document.domain); this.sndNodeName = "sndIFrame_" + this.getRandStr(); this.sndNode = dojo.io.createIFrame(this.sndNodeName); dojo.io.setIFrameSrc(this.sndNode, this.initDoc + "?callback=repubsub.sndNodeReady&domain=" + document.domain); }; this.rcvNodeReady = function () { var statusURI = [this.tunnelURI, "/kn_status/", this.getRandStr(), "_", String(this.tunnelInitCount++)].join(""); this.log("rcvNodeReady"); var initURIArr = [this.serverBaseURL, "/kn?kn_from=", escape(this.tunnelURI), "&kn_id=", escape(this.tunnelID), "&kn_status_from=", escape(statusURI)]; dojo.io.setIFrameSrc(this.rcvNode, initURIArr.join("")); this.subscribe(statusURI, this, "statusListener", true); this.log(initURIArr.join("")); }; this.sndNodeReady = function () { this.canSnd = true; this.log("sndNodeReady"); this.log(this.backlog.length); if (this.backlog.length > 0) { this.dequeueEvent(); } }; this.statusListener = function (evt) { this.log("status listener called"); this.log(evt.status, "info"); }; this.dispatch = function (evt) { if (evt["to"] || evt["kn_routed_from"]) { var rf = evt["to"] || evt["kn_routed_from"]; var topic = rf.split(this.serverBaseURL, 2)[1]; if (!topic) { topic = rf; } this.log("[topic] " + topic); if (topic.length > 3) { if (topic.slice(0, 3) == "/kn") { topic = topic.slice(3); } } if (this.attachPathList[topic]) { this.attachPathList[topic](evt); } } }; this.subscribe = function (topic, toObj, toFunc, dontTellServer) { if (!this.isInitialized) { this.subscriptionBacklog.push([topic, toObj, toFunc, dontTellServer]); return; } if (!this.attachPathList[topic]) { this.attachPathList[topic] = function () { return true; }; this.log("subscribing to: " + topic); this.topics.push(topic); } var revt = new dojo.io.repubsubEvent(this.tunnelURI, topic, "route"); var rstr = [this.serverBaseURL + "/kn", revt.toGetString()].join(""); dojo.event.kwConnect({once:true, srcObj:this.attachPathList, srcFunc:topic, adviceObj:toObj, adviceFunc:toFunc}); if (!this.rcvNode) { } if (dontTellServer) { return; } this.log("sending subscription to: " + topic); this.sendTopicSubToServer(topic, rstr); }; this.sendTopicSubToServer = function (topic, str) { if (!this.attachPathList[topic]["subscriptions"]) { this.enqueueEventStr(str); this.attachPathList[topic].subscriptions = 0; } this.attachPathList[topic].subscriptions++; }; this.unSubscribe = function (topic, toObj, toFunc) { dojo.event.kwDisconnect({srcObj:this.attachPathList, srcFunc:topic, adviceObj:toObj, adviceFunc:toFunc}); }; this.publish = function (topic, event) { var evt = dojo.io.repubsubEvent.initFromProperties(event); evt.to = topic; var evtURLParts = []; evtURLParts.push(this.serverBaseURL + "/kn"); evtURLParts.push(evt.toGetString()); this.enqueueEventStr(evtURLParts.join("")); }; this.enqueueEventStr = function (evtStr) { this.log("enqueueEventStr"); this.backlog.push(evtStr); this.dequeueEvent(); }; this.dequeueEvent = function (force) { this.log("dequeueEvent"); if (this.backlog.length <= 0) { return; } if ((this.canSnd) || (force)) { dojo.io.setIFrameSrc(this.sndNode, this.backlog.shift() + "&callback=repubsub.sndNodeReady"); this.canSnd = false; } else { this.log("sndNode not available yet!", "debug"); } }; }; dojo.io.repubsubEvent = function (to, from, method, id, routeURI, payload, dispname, uid) { this.to = to; this.from = from; this.method = method || "route"; this.id = id || repubsub.getRandStr(); this.uri = routeURI; this.displayname = dispname || repubsub.displayname; this.userid = uid || repubsub.userid; this.payload = payload || ""; this.flushChars = 4096; this.initFromProperties = function (evt) { if (evt.constructor = dojo.io.repubsubEvent) { for (var x in evt) { this[x] = evt[x]; } } else { for (var x in evt) { if (typeof this.forwardPropertiesMap[x] == "string") { this[this.forwardPropertiesMap[x]] = evt[x]; } else { this[x] = evt[x]; } } } }; this.toGetString = function (noQmark) { var qs = [((noQmark) ? "" : "?")]; for (var x = 0; x < this.properties.length; x++) { var tp = this.properties[x]; if (this[tp[0]]) { qs.push(tp[1] + "=" + encodeURIComponent(String(this[tp[0]]))); } } return qs.join("&"); }; }; dojo.io.repubsubEvent.prototype.properties = [["from", "kn_from"], ["to", "kn_to"], ["method", "do_method"], ["id", "kn_id"], ["uri", "kn_uri"], ["displayname", "kn_displayname"], ["userid", "kn_userid"], ["payload", "kn_payload"], ["flushChars", "kn_response_flush"], ["responseFormat", "kn_response_format"]]; dojo.io.repubsubEvent.prototype.forwardPropertiesMap = {}; dojo.io.repubsubEvent.prototype.reversePropertiesMap = {}; for (var x = 0; x < dojo.io.repubsubEvent.prototype.properties.length; x++) { var tp = dojo.io.repubsubEvent.prototype.properties[x]; dojo.io.repubsubEvent.prototype.reversePropertiesMap[tp[0]] = tp[1]; dojo.io.repubsubEvent.prototype.forwardPropertiesMap[tp[1]] = tp[0]; } dojo.io.repubsubEvent.initFromProperties = function (evt) { var eventObj = new dojo.io.repubsubEvent(); eventObj.initFromProperties(evt); return eventObj; };

__CPAN_FILE__ src/io/BrowserIO.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.io.BrowserIO"], ["require", "dojo.io.common"], ["require", "dojo.lang.array"], ["require", "dojo.lang.func"], ["require", "dojo.string.extras"], ["require", "dojo.dom"], ["require", "dojo.undo.browser"]], definePackage:function (dojo) { dojo.provide("dojo.io.BrowserIO"); dojo.require("dojo.io.common"); dojo.require("dojo.lang.array"); dojo.require("dojo.lang.func"); dojo.require("dojo.string.extras"); dojo.require("dojo.dom"); dojo.require("dojo.undo.browser"); if (!dj_undef("window")) { dojo.io.checkChildrenForFile = function (node) { var hasFile = false; var inputs = node.getElementsByTagName("input"); dojo.lang.forEach(inputs, function (input) { if (hasFile) { return; } if (input.getAttribute("type") == "file") { hasFile = true; } }); return hasFile; }; dojo.io.formHasFile = function (formNode) { return dojo.io.checkChildrenForFile(formNode); }; dojo.io.updateNode = function (node, urlOrArgs) { node = dojo.byId(node); var args = urlOrArgs; if (dojo.lang.isString(urlOrArgs)) { args = {url:urlOrArgs}; } args.mimetype = "text/html"; args.load = function (t, d, e) { while (node.firstChild) { dojo.dom.destroyNode(node.firstChild); } node.innerHTML = d; }; dojo.io.bind(args); }; dojo.io.formFilter = function (node) { var type = (node.type || "").toLowerCase(); return !node.disabled && node.name && !dojo.lang.inArray(["file", "submit", "image", "reset", "button"], type); }; dojo.io.encodeForm = function (formNode, encoding, formFilter) { if ((!formNode) || (!formNode.tagName) || (!formNode.tagName.toLowerCase() == "form")) { dojo.raise("Attempted to encode a non-form element."); } if (!formFilter) { formFilter = dojo.io.formFilter; } var enc = /utf/i.test(encoding || "") ? encodeURIComponent : dojo.string.encodeAscii; var values = []; for (var i = 0; i < formNode.elements.length; i++) { var elm = formNode.elements[i]; if (!elm || elm.tagName.toLowerCase() == "fieldset" || !formFilter(elm)) { continue; } var name = enc(elm.name); var type = elm.type.toLowerCase(); if (type == "select-multiple") { for (var j = 0; j < elm.options.length; j++) { if (elm.options[j].selected) { values.push(name + "=" + enc(elm.options[j].value)); } } } else { if (dojo.lang.inArray(["radio", "checkbox"], type)) { if (elm.checked) { values.push(name + "=" + enc(elm.value)); } } else { values.push(name + "=" + enc(elm.value)); } } } var inputs = formNode.getElementsByTagName("input"); for (var i = 0; i < inputs.length; i++) { var input = inputs[i]; if (input.type.toLowerCase() == "image" && input.form == formNode && formFilter(input)) { var name = enc(input.name); values.push(name + "=" + enc(input.value)); values.push(name + ".x=0"); values.push(name + ".y=0"); } } return values.join("&") + "&"; }; dojo.io.FormBind = function (args) { this.bindArgs = {}; if (args && args.formNode) { this.init(args); } else { if (args) { this.init({formNode:args}); } } }; dojo.lang.extend(dojo.io.FormBind, {form:null, bindArgs:null, clickedButton:null, init:function (args) { var form = dojo.byId(args.formNode); if (!form || !form.tagName || form.tagName.toLowerCase() != "form") { throw new Error("FormBind: Couldn't apply, invalid form"); } else { if (this.form == form) { return; } else { if (this.form) { throw new Error("FormBind: Already applied to a form"); } } } dojo.lang.mixin(this.bindArgs, args); this.form = form; this.connect(form, "onsubmit", "submit"); for (var i = 0; i < form.elements.length; i++) { var node = form.elements[i]; if (node && node.type && dojo.lang.inArray(["submit", "button"], node.type.toLowerCase())) { this.connect(node, "onclick", "click"); } } var inputs = form.getElementsByTagName("input"); for (var i = 0; i < inputs.length; i++) { var input = inputs[i]; if (input.type.toLowerCase() == "image" && input.form == form) { this.connect(input, "onclick", "click"); } } }, onSubmit:function (form) { return true; }, submit:function (e) { e.preventDefault(); if (this.onSubmit(this.form)) { dojo.io.bind(dojo.lang.mixin(this.bindArgs, {formFilter:dojo.lang.hitch(this, "formFilter")})); } }, click:function (e) { var node = e.currentTarget; if (node.disabled) { return; } this.clickedButton = node; }, formFilter:function (node) { var type = (node.type || "").toLowerCase(); var accept = false; if (node.disabled || !node.name) { accept = false; } else { if (dojo.lang.inArray(["submit", "button", "image"], type)) { if (!this.clickedButton) { this.clickedButton = node; } accept = node == this.clickedButton; } else { accept = !dojo.lang.inArray(["file", "submit", "reset", "button"], type); } } return accept; }, connect:function (srcObj, srcFcn, targetFcn) { if (dojo.evalObjPath("dojo.event.connect")) { dojo.event.connect(srcObj, srcFcn, this, targetFcn); } else { var fcn = dojo.lang.hitch(this, targetFcn); srcObj[srcFcn] = function (e) { if (!e) { e = window.event; } if (!e.currentTarget) { e.currentTarget = e.srcElement; } if (!e.preventDefault) { e.preventDefault = function () { window.event.returnValue = false; }; } fcn(e); }; } }}); dojo.io.XMLHTTPTransport = new function () { var _this = this; var _cache = {}; this.useCache = false; this.preventCache = false; function getCacheKey(url, query, method) { return url + "|" + query + "|" + method.toLowerCase(); } function addToCache(url, query, method, http) { _cache[getCacheKey(url, query, method)] = http; } function getFromCache(url, query, method) { return _cache[getCacheKey(url, query, method)]; } this.clearCache = function () { _cache = {}; }; function doLoad(kwArgs, http, url, query, useCache) { if (((http.status >= 200) && (http.status < 300)) || (http.status == 304) || (http.status == 1223) || (location.protocol == "file:" && (http.status == 0 || http.status == undefined)) || (location.protocol == "chrome:" && (http.status == 0 || http.status == undefined))) { var ret; if (kwArgs.method.toLowerCase() == "head") { var headers = http.getAllResponseHeaders(); ret = {}; ret.toString = function () { return headers; }; var values = headers.split(/[\r\n]+/g); for (var i = 0; i < values.length; i++) { var pair = values[i].match(/^([^:]+)\s*:\s*(.+)$/i); if (pair) { ret[pair[1]] = pair[2]; } } } else { if (kwArgs.mimetype == "text/javascript") { try { ret = dj_eval(http.responseText); } catch (e) { dojo.debug(e); dojo.debug(http.responseText); ret = null; } } else { if (kwArgs.mimetype.substr(0, 9) == "text/json" || kwArgs.mimetype.substr(0, 16) == "application/json") { try { ret = dj_eval("(" + kwArgs.jsonFilter(http.responseText) + ")"); } catch (e) { dojo.debug(e); dojo.debug(http.responseText); ret = false; } } else { if ((kwArgs.mimetype == "application/xml") || (kwArgs.mimetype == "text/xml")) { ret = http.responseXML; if (!ret || typeof ret == "string" || !http.getResponseHeader("Content-Type")) { ret = dojo.dom.createDocumentFromText(http.responseText); } } else { ret = http.responseText; } } } } if (useCache) { addToCache(url, query, kwArgs.method, http); } kwArgs[(typeof kwArgs.load == "function") ? "load" : "handle"]("load", ret, http, kwArgs); } else { var errObj = new dojo.io.Error("XMLHttpTransport Error: " + http.status + " " + http.statusText); kwArgs[(typeof kwArgs.error == "function") ? "error" : "handle"]("error", errObj, http, kwArgs); } } function setHeaders(http, kwArgs) { if (kwArgs["headers"]) { for (var header in kwArgs["headers"]) { if (header.toLowerCase() == "content-type" && !kwArgs["contentType"]) { kwArgs["contentType"] = kwArgs["headers"][header]; } else { http.setRequestHeader(header, kwArgs["headers"][header]); } } } } this.inFlight = []; this.inFlightTimer = null; this.startWatchingInFlight = function () { if (!this.inFlightTimer) { this.inFlightTimer = setTimeout("dojo.io.XMLHTTPTransport.watchInFlight();", 10); } }; this.watchInFlight = function () { var now = null; if (!dojo.hostenv._blockAsync && !_this._blockAsync) { for (var x = this.inFlight.length - 1; x >= 0; x--) { try { var tif = this.inFlight[x]; if (!tif || tif.http._aborted || !tif.http.readyState) { this.inFlight.splice(x, 1); continue; } if (4 == tif.http.readyState) { this.inFlight.splice(x, 1); doLoad(tif.req, tif.http, tif.url, tif.query, tif.useCache); } else { if (tif.startTime) { if (!now) { now = (new Date()).getTime(); } if (tif.startTime + (tif.req.timeoutSeconds * 1000) < now) { if (typeof tif.http.abort == "function") { tif.http.abort(); } this.inFlight.splice(x, 1); tif.req[(typeof tif.req.timeout == "function") ? "timeout" : "handle"]("timeout", null, tif.http, tif.req); } } } } catch (e) { try { var errObj = new dojo.io.Error("XMLHttpTransport.watchInFlight Error: " + e); tif.req[(typeof tif.req.error == "function") ? "error" : "handle"]("error", errObj, tif.http, tif.req); } catch (e2) { dojo.debug("XMLHttpTransport error callback failed: " + e2); } } } } clearTimeout(this.inFlightTimer); if (this.inFlight.length == 0) { this.inFlightTimer = null; return; } this.inFlightTimer = setTimeout("dojo.io.XMLHTTPTransport.watchInFlight();", 10); }; var hasXmlHttp = dojo.hostenv.getXmlhttpObject() ? true : false; this.canHandle = function (kwArgs) { var mlc = kwArgs["mimetype"].toLowerCase() || ""; return hasXmlHttp && ((dojo.lang.inArray(["text/plain", "text/html", "application/xml", "text/xml", "text/javascript"], mlc)) || (mlc.substr(0, 9) == "text/json" || mlc.substr(0, 16) == "application/json")) && !(kwArgs["formNode"] && dojo.io.formHasFile(kwArgs["formNode"])); }; this.multipartBoundary = "45309FFF-BD65-4d50-99C9-36986896A96F"; this.bind = function (kwArgs) { if (!kwArgs["url"]) { if (!kwArgs["formNode"] && (kwArgs["backButton"] || kwArgs["back"] || kwArgs["changeUrl"] || kwArgs["watchForURL"]) && (!djConfig.preventBackButtonFix)) { dojo.deprecated("Using dojo.io.XMLHTTPTransport.bind() to add to browser history without doing an IO request", "Use dojo.undo.browser.addToHistory() instead.", "0.4"); dojo.undo.browser.addToHistory(kwArgs); return true; } } var url = kwArgs.url; var query = ""; if (kwArgs["formNode"]) { var ta = kwArgs.formNode.getAttribute("action"); if ((ta) && (!kwArgs["url"])) { url = ta; } var tp = kwArgs.formNode.getAttribute("method"); if ((tp) && (!kwArgs["method"])) { kwArgs.method = tp; } query += dojo.io.encodeForm(kwArgs.formNode, kwArgs.encoding, kwArgs["formFilter"]); } if (url.indexOf("#") > -1) { dojo.debug("Warning: dojo.io.bind: stripping hash values from url:", url); url = url.split("#")[0]; } if (kwArgs["file"]) { kwArgs.method = "post"; } if (!kwArgs["method"]) { kwArgs.method = "get"; } if (kwArgs.method.toLowerCase() == "get") { kwArgs.multipart = false; } else { if (kwArgs["file"]) { kwArgs.multipart = true; } else { if (!kwArgs["multipart"]) { kwArgs.multipart = false; } } } if (kwArgs["backButton"] || kwArgs["back"] || kwArgs["changeUrl"]) { dojo.undo.browser.addToHistory(kwArgs); } var content = kwArgs["content"] || {}; if (kwArgs.sendTransport) { content["dojo.transport"] = "xmlhttp"; } do { if (kwArgs.postContent) { query = kwArgs.postContent; break; } if (content) { query += dojo.io.argsFromMap(content, kwArgs.encoding); } if (kwArgs.method.toLowerCase() == "get" || !kwArgs.multipart) { break; } var t = []; if (query.length) { var q = query.split("&"); for (var i = 0; i < q.length; ++i) { if (q[i].length) { var p = q[i].split("="); t.push("--" + this.multipartBoundary, "Content-Disposition: form-data; name=\"" + p[0] + "\"", "", p[1]); } } } if (kwArgs.file) { if (dojo.lang.isArray(kwArgs.file)) { for (var i = 0; i < kwArgs.file.length; ++i) { var o = kwArgs.file[i]; t.push("--" + this.multipartBoundary, "Content-Disposition: form-data; name=\"" + o.name + "\"; filename=\"" + ("fileName" in o ? o.fileName : o.name) + "\"", "Content-Type: " + ("contentType" in o ? o.contentType : "application/octet-stream"), "", o.content); } } else { var o = kwArgs.file; t.push("--" + this.multipartBoundary, "Content-Disposition: form-data; name=\"" + o.name + "\"; filename=\"" + ("fileName" in o ? o.fileName : o.name) + "\"", "Content-Type: " + ("contentType" in o ? o.contentType : "application/octet-stream"), "", o.content); } } if (t.length) { t.push("--" + this.multipartBoundary + "--", ""); query = t.join("\r\n"); } } while (false); var async = kwArgs["sync"] ? false : true; var preventCache = kwArgs["preventCache"] || (this.preventCache == true && kwArgs["preventCache"] != false); var useCache = kwArgs["useCache"] == true || (this.useCache == true && kwArgs["useCache"] != false); if (!preventCache && useCache) { var cachedHttp = getFromCache(url, query, kwArgs.method); if (cachedHttp) { doLoad(kwArgs, cachedHttp, url, query, false); return; } } var http = dojo.hostenv.getXmlhttpObject(kwArgs); var received = false; if (async) { var startTime = this.inFlight.push({"req":kwArgs, "http":http, "url":url, "query":query, "useCache":useCache, "startTime":kwArgs.timeoutSeconds ? (new Date()).getTime() : 0}); this.startWatchingInFlight(); } else { _this._blockAsync = true; } if (kwArgs.method.toLowerCase() == "post") { if (!kwArgs.user) { http.open("POST", url, async); } else { http.open("POST", url, async, kwArgs.user, kwArgs.password); } setHeaders(http, kwArgs); http.setRequestHeader("Content-Type", kwArgs.multipart ? ("multipart/form-data; boundary=" + this.multipartBoundary) : (kwArgs.contentType || "application/x-www-form-urlencoded")); try { http.send(query); } catch (e) { if (typeof http.abort == "function") { http.abort(); } doLoad(kwArgs, {status:404}, url, query, useCache); } } else { var tmpUrl = url; if (query != "") { tmpUrl += (tmpUrl.indexOf("?") > -1 ? "&" : "?") + query; } if (preventCache) { tmpUrl += (dojo.string.endsWithAny(tmpUrl, "?", "&") ? "" : (tmpUrl.indexOf("?") > -1 ? "&" : "?")) + "dojo.preventCache=" + new Date().valueOf(); } if (!kwArgs.user) { http.open(kwArgs.method.toUpperCase(), tmpUrl, async); } else { http.open(kwArgs.method.toUpperCase(), tmpUrl, async, kwArgs.user, kwArgs.password); } setHeaders(http, kwArgs); try { http.send(null); } catch (e) { if (typeof http.abort == "function") { http.abort(); } doLoad(kwArgs, {status:404}, url, query, useCache); } } if (!async) { doLoad(kwArgs, http, url, query, useCache); _this._blockAsync = false; } kwArgs.abort = function () { try { http._aborted = true; } catch (e) { } return http.abort(); }; return; }; dojo.io.transports.addTransport("XMLHTTPTransport"); }; } }});

__CPAN_FILE__ src/io/RhinoIO.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.io.RhinoIO"], ["require", "dojo.io.common"], ["require", "dojo.lang.func"], ["require", "dojo.lang.array"], ["require", "dojo.string.extras"]], definePackage:function (dojo) { dojo.provide("dojo.io.RhinoIO"); dojo.require("dojo.io.common"); dojo.require("dojo.lang.func"); dojo.require("dojo.lang.array"); dojo.require("dojo.string.extras"); dojo.io.RhinoHTTPTransport = new function () { this.canHandle = function (req) { if (dojo.lang.find(["text/plain", "text/html", "text/xml", "text/javascript", "text/json", "application/json"], (req.mimetype.toLowerCase() || "")) < 0) { return false; } if (req.url.substr(0, 7) != "http://") { return false; } return true; }; function doLoad(req, conn) { var ret; if (req.method.toLowerCase() == "head") { } else { var stream = conn.getContent(); var reader = new java.io.BufferedReader(new java.io.InputStreamReader(stream)); var text = ""; var line = null; while ((line = reader.readLine()) != null) { text += line; } if (req.mimetype == "text/javascript") { try { ret = dj_eval(text); } catch (e) { dojo.debug(e); dojo.debug(text); ret = null; } } else { if (req.mimetype == "text/json" || req.mimetype == "application/json") { try { ret = dj_eval("(" + text + ")"); } catch (e) { dojo.debug(e); dojo.debug(text); ret = false; } } else { ret = text; } } } req.load("load", ret, req); } function connect(req) { var content = req.content || {}; var query; if (req.sendTransport) { content["dojo.transport"] = "rhinohttp"; } if (req.postContent) { query = req.postContent; } else { query = dojo.io.argsFromMap(content, req.encoding); } var url_text = req.url; if (req.method.toLowerCase() == "get" && query != "") { url_text = url_text + "?" + query; } var url = new java.net.URL(url_text); var conn = url.openConnection(); conn.setRequestMethod(req.method.toUpperCase()); if (req.headers) { for (var header in req.headers) { if (header.toLowerCase() == "content-type" && !req.contentType) { req.contentType = req.headers[header]; } else { conn.setRequestProperty(header, req.headers[header]); } } } if (req.contentType) { conn.setRequestProperty("Content-Type", req.contentType); } if (req.method.toLowerCase() == "post") { conn.setDoOutput(true); var output_stream = conn.getOutputStream(); var byte_array = (new java.lang.String(query)).getBytes(); output_stream.write(byte_array, 0, byte_array.length); } conn.connect(); doLoad(req, conn); } this.bind = function (req) { var async = req["sync"] ? false : true; if (async) { setTimeout(dojo.lang.hitch(this, function () { connect(req); }), 1); } else { connect(req); } }; dojo.io.transports.addTransport("RhinoHTTPTransport"); }; }});

__CPAN_FILE__ src/io/IframeIO.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.io.IframeIO"); dojo.require("dojo.io.BrowserIO"); dojo.require("dojo.uri.*"); dojo.io.createIFrame = function (fname, onloadstr, uri) { if (window[fname]) { return window[fname]; } if (window.frames[fname]) { return window.frames[fname]; } var r = dojo.render.html; var cframe = null; var turi = uri; if (!turi) { if (djConfig["useXDomain"] && !djConfig["dojoIframeHistoryUrl"]) { dojo.debug("dojo.io.createIFrame: When using cross-domain Dojo builds," + " please save iframe_history.html to your domain and set djConfig.dojoIframeHistoryUrl" + " to the path on your domain to iframe_history.html"); } turi = (djConfig["dojoIframeHistoryUrl"] || dojo.uri.moduleUri("dojo", "../iframe_history.html")) + "#noInit=true"; } var ifrstr = ((r.ie) && (dojo.render.os.win)) ? "<iframe name=\"" + fname + "\" src=\"" + turi + "\" onload=\"" + onloadstr + "\">" : "iframe"; cframe = document.createElement(ifrstr); with (cframe) { name = fname; setAttribute("name", fname); id = fname; } dojo.body().appendChild(cframe); window[fname] = cframe; with (cframe.style) { if (!r.safari) { position = "absolute"; } left = top = "0px"; height = width = "1px"; visibility = "hidden"; } if (!r.ie) { dojo.io.setIFrameSrc(cframe, turi, true); cframe.onload = new Function(onloadstr); } return cframe; }; dojo.io.IframeTransport = new function () { var _this = this; this.currentRequest = null; this.requestQueue = []; this.iframeName = "dojoIoIframe"; this.fireNextRequest = function () { try { if ((this.currentRequest) || (this.requestQueue.length == 0)) { return; } var cr = this.currentRequest = this.requestQueue.shift(); cr._contentToClean = []; var fn = cr["formNode"]; var content = cr["content"] || {}; if (cr.sendTransport) { content["dojo.transport"] = "iframe"; } if (fn) { if (content) { for (var x in content) { if (!fn[x]) { var tn; if (dojo.render.html.ie) { tn = document.createElement("<input type='hidden' name='" + x + "' value='" + content[x] + "'>"); fn.appendChild(tn); } else { tn = document.createElement("input"); fn.appendChild(tn); tn.type = "hidden"; tn.name = x; tn.value = content[x]; } cr._contentToClean.push(x); } else { fn[x].value = content[x]; } } } if (cr["url"]) { cr._originalAction = fn.getAttribute("action"); fn.setAttribute("action", cr.url); } if (!fn.getAttribute("method")) { fn.setAttribute("method", (cr["method"]) ? cr["method"] : "post"); } cr._originalTarget = fn.getAttribute("target"); fn.setAttribute("target", this.iframeName); fn.target = this.iframeName; fn.submit(); } else { var query = dojo.io.argsFromMap(this.currentRequest.content); var tmpUrl = cr.url + (cr.url.indexOf("?") > -1 ? "&" : "?") + query; dojo.io.setIFrameSrc(this.iframe, tmpUrl, true); } } catch (e) { this.iframeOnload(e); } }; this.canHandle = function (kwArgs) { return ((dojo.lang.inArray(["text/plain", "text/html", "text/javascript", "text/json", "application/json"], kwArgs["mimetype"])) && (dojo.lang.inArray(["post", "get"], kwArgs["method"].toLowerCase())) && (!((kwArgs["sync"]) && (kwArgs["sync"] == true)))); }; this.bind = function (kwArgs) { if (!this["iframe"]) { this.setUpIframe(); } this.requestQueue.push(kwArgs); this.fireNextRequest(); return; }; this.setUpIframe = function () { this.iframe = dojo.io.createIFrame(this.iframeName, "dojo.io.IframeTransport.iframeOnload();"); }; this.iframeOnload = function (errorObject) { if (!_this.currentRequest) { _this.fireNextRequest(); return; } var req = _this.currentRequest; if (req.formNode) { var toClean = req._contentToClean; for (var i = 0; i < toClean.length; i++) { var key = toClean[i]; if (dojo.render.html.safari) { var fNode = req.formNode; for (var j = 0; j < fNode.childNodes.length; j++) { var chNode = fNode.childNodes[j]; if (chNode.name == key) { var pNode = chNode.parentNode; pNode.removeChild(chNode); break; } } } else { var input = req.formNode[key]; req.formNode.removeChild(input); req.formNode[key] = null; } } if (req["_originalAction"]) { req.formNode.setAttribute("action", req._originalAction); } if (req["_originalTarget"]) { req.formNode.setAttribute("target", req._originalTarget); req.formNode.target = req._originalTarget; } } var contentDoc = function (iframe_el) { var doc = iframe_el.contentDocument || ((iframe_el.contentWindow) && (iframe_el.contentWindow.document)) || ((iframe_el.name) && (document.frames[iframe_el.name]) && (document.frames[iframe_el.name].document)) || null; return doc; }; var value; var success = false; if (errorObject) { this._callError(req, "IframeTransport Request Error: " + errorObject); } else { var ifd = contentDoc(_this.iframe); try { var cmt = req.mimetype; if ((cmt == "text/javascript") || (cmt == "text/json") || (cmt == "application/json")) { var js = ifd.getElementsByTagName("textarea")[0].value; if (cmt == "text/json" || cmt == "application/json") { js = "(" + js + ")"; } value = dj_eval(js); } else { if (cmt == "text/html") { value = ifd; } else { value = ifd.getElementsByTagName("textarea")[0].value; } } success = true; } catch (e) { this._callError(req, "IframeTransport Error: " + e); } } try { if (success && dojo.lang.isFunction(req["load"])) { req.load("load", value, req); } } catch (e) { throw e; } finally { _this.currentRequest = null; _this.fireNextRequest(); } }; this._callError = function (req, message) { var errObj = new dojo.io.Error(message); if (dojo.lang.isFunction(req["error"])) { req.error("error", errObj, req); } }; dojo.io.transports.addTransport("IframeTransport"); };

__CPAN_FILE__ src/io/cookie.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.io.cookie"]], definePackage:function (dojo) { dojo.provide("dojo.io.cookie"); dojo.io.cookie.setCookie = function (name, value, days, path, domain, secure) { var expires = -1; if ((typeof days == "number") && (days >= 0)) { var d = new Date(); d.setTime(d.getTime() + (days * 24 * 60 * 60 * 1000)); expires = d.toGMTString(); } value = escape(value); document.cookie = name + "=" + value + ";" + (expires != -1 ? " expires=" + expires + ";" : "") + (path ? "path=" + path : "") + (domain ? "; domain=" + domain : "") + (secure ? "; secure" : ""); }; dojo.io.cookie.set = dojo.io.cookie.setCookie; dojo.io.cookie.getCookie = function (name) { var idx = document.cookie.lastIndexOf(name + "="); if (idx == -1) { return null; } var value = document.cookie.substring(idx + name.length + 1); var end = value.indexOf(";"); if (end == -1) { end = value.length; } value = value.substring(0, end); value = unescape(value); return value; }; dojo.io.cookie.get = dojo.io.cookie.getCookie; dojo.io.cookie.deleteCookie = function (name) { dojo.io.cookie.setCookie(name, "-", 0); }; dojo.io.cookie.setObjectCookie = function (name, obj, days, path, domain, secure, clearCurrent) { if (arguments.length == 5) { clearCurrent = domain; domain = null; secure = null; } var pairs = [], cookie, value = ""; if (!clearCurrent) { cookie = dojo.io.cookie.getObjectCookie(name); } if (days >= 0) { if (!cookie) { cookie = {}; } for (var prop in obj) { if (obj[prop] == null) { delete cookie[prop]; } else { if ((typeof obj[prop] == "string") || (typeof obj[prop] == "number")) { cookie[prop] = obj[prop]; } } } prop = null; for (var prop in cookie) { pairs.push(escape(prop) + "=" + escape(cookie[prop])); } value = pairs.join("&"); } dojo.io.cookie.setCookie(name, value, days, path, domain, secure); }; dojo.io.cookie.getObjectCookie = function (name) { var values = null, cookie = dojo.io.cookie.getCookie(name); if (cookie) { values = {}; var pairs = cookie.split("&"); for (var i = 0; i < pairs.length; i++) { var pair = pairs[i].split("="); var value = pair[1]; if (isNaN(value)) { value = unescape(pair[1]); } values[unescape(pair[0])] = value; } } return values; }; dojo.io.cookie.isSupported = function () { if (typeof navigator.cookieEnabled != "boolean") { dojo.io.cookie.setCookie("__TestingYourBrowserForCookieSupport__", "CookiesAllowed", 90, null); var cookieVal = dojo.io.cookie.getCookie("__TestingYourBrowserForCookieSupport__"); navigator.cookieEnabled = (cookieVal == "CookiesAllowed"); if (navigator.cookieEnabled) { this.deleteCookie("__TestingYourBrowserForCookieSupport__"); } } return navigator.cookieEnabled; }; if (!dojo.io.cookies) { dojo.io.cookies = dojo.io.cookie; } }});

__CPAN_FILE__ src/io/xip_client.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta> <!-- Security protection: uncomment the script tag to enable. --> <!-- script type="text/javascript" --> // <!-- /* This file is really focused on just sending one message to the server, and receiving one response. The code does not expect to be re-used for multiple messages. This might be reworked later if performance indicates a need for it.

	xip fragment identifier/hash values have the form:
	#id:cmd:realEncodedMessage

	id: some ID that should be unique among messages. No inherent meaning,
	        just something to make sure the hash value is unique so the message
	        receiver knows a new message is available.

	cmd: command to the receiver. Valid values are:
	         - init: message used to init the frame. Sent as the first URL when loading
	                 the page. Contains some config parameters.
	         - loaded: the remote frame is loaded. Only sent from server to client.
	         - ok: the message that this page sent was received OK. The next message may
	               now be sent.
	         - start: the start message of a block of messages (a complete message may
	                  need to be segmented into many messages to get around the limitiations
	                  of the size of an URL that a browser accepts.
	         - part: indicates this is a part of a message.
	         - end: the end message of a block of messages. The message can now be acted upon.
	                If the message is small enough that it doesn't need to be segmented, then
	                just one hash value message can be sent with "end" as the command.

	To reassemble a segmented message, the realEncodedMessage parts just have to be concatenated
	together.
	*/

	//MSIE has the lowest limit for URLs with fragment identifiers,
	//at around 4K. Choosing a slightly smaller number for good measure.
	xipUrlLimit = 4000;
	xipIdCounter = 1;

	function xipInit(){
		xipStateId = "";
		xipIsSending = false;
		xipServerUrl = null;
		xipStateId = null;
		xipRequestData = null;
		xipCurrentHash = "";
		xipResponseMessage = "";
		xipRequestParts = [];
		xipPartIndex = 0;
		xipServerWindow = null;
		xipUseFrameRecursion = false;
	}
	xipInit();

	function send(encodedData){
		if(xipUseFrameRecursion == "true"){
			var clientEndPoint = window.open(xipStateId + "_clientEndPoint");
			clientEndPoint.send(encodedData);
		}else{
			if(!xipIsSending){
				xipIsSending = true;

				xipRequestData = encodedData || "";

				//Get a handle to the server iframe.
				xipServerWindow = frames[xipStateId + "_frame"];
				if (!xipServerWindow){
					xipServerWindow = document.getElementById(xipStateId + "_frame").contentWindow;
				}

				sendRequestStart();
			}
		}
	}

	//Modify the server URL if it is a local path and 
	//This is done for local/same domain testing.
	function fixServerUrl(ifpServerUrl){
		if(ifpServerUrl.indexOf("..") == 0){
			var parts = ifpServerUrl.split("/");
			ifpServerUrl = parts[parts.length - 1];
		}
		return ifpServerUrl;
	}

	


	function pollHash(){
		//Can't use location.hash because at least Firefox does a decodeURIComponent on it.
		var urlParts = window.location.href.split("#");
		if(urlParts.length == 2){
			var newHash = urlParts[1];
			if(newHash != xipCurrentHash){
				try{
					messageReceived(newHash);
				}catch(e){
					//Make sure to not keep processing the error hash value.
					xipCurrentHash = newHash;
					throw e;
				}
				xipCurrentHash = newHash;
			}
		}
	}

	function messageReceived(encodedData){
		var msg = unpackMessage(encodedData);

		switch(msg.command){
			case "loaded":
				xipMasterFrame.dojo.io.XhrIframeProxy.clientFrameLoaded(xipStateId);
				break;
			case "ok":
				sendRequestPart();
				break;
			case "start":
				xipResponseMessage = "";
				xipResponseMessage += msg.message;
				setServerUrl("ok");
				break;
			case "part":
				xipResponseMessage += msg.message;			
				setServerUrl("ok");
				break;
			case "end":
				setServerUrl("ok");
				xipResponseMessage += msg.message;
				xipMasterFrame.dojo.io.XhrIframeProxy.receive(xipStateId, xipResponseMessage);
				break;
		}
	}

	function sendRequestStart(){
		//Break the message into parts, if necessary.
		xipRequestParts = [];
		var reqData = xipRequestData;
		var urlLength = xipServerUrl.length;
		var partLength = xipUrlLimit - urlLength;
		var reqIndex = 0;

		while((reqData.length - reqIndex) + urlLength > xipUrlLimit){
			var part = reqData.substring(reqIndex, reqIndex + partLength);
			//Safari will do some extra hex escaping unless we keep the original hex
			//escaping complete.
			var percentIndex = part.lastIndexOf("%");
			if(percentIndex == part.length - 1 || percentIndex == part.length - 2){
				part = part.substring(0, percentIndex);
			}
			xipRequestParts.push(part);
			reqIndex += part.length;
		}
		xipRequestParts.push(reqData.substring(reqIndex, reqData.length));

		xipPartIndex = 0;
		sendRequestPart();

	}

	function sendRequestPart(){
		if(xipPartIndex < xipRequestParts.length){
			//Get the message part.
			var partData = xipRequestParts[xipPartIndex];

			//Get the command.
			var cmd = "part";
			if(xipPartIndex + 1 == xipRequestParts.length){
				cmd = "end";
			}else if (xipPartIndex == 0){
				cmd = "start";
			}

			setServerUrl(cmd, partData);
			xipPartIndex++;
		}
	}

	function setServerUrl(cmd, message){
		var serverUrl = makeServerUrl(cmd, message);

		//Safari won't let us replace across domains.
		if(navigator.userAgent.indexOf("Safari") == -1){
			xipServerWindow.location.replace(serverUrl);
		}else{
			xipServerWindow.location = serverUrl;
		}
	}

	function makeServerUrl(cmd, message){
		var serverUrl = xipServerUrl + "#" + (xipIdCounter++) + ":" + cmd;
		if(message){
			serverUrl += ":" + message;
		}
		return serverUrl;
	}

	function unpackMessage(encodedMessage){
		var parts = encodedMessage.split(":");
		var command = parts[1];
		encodedMessage = parts[2] || "";

		var config = null;
		if(command == "init"){
			var configParts = encodedMessage.split("&");
			config = {};
			for(var i = 0; i < configParts.length; i++){
				var nameValue = configParts[i].split("=");
				config[decodeURIComponent(nameValue[0])] = decodeURIComponent(nameValue[1]);
			}
		}
		return {command: command, message: encodedMessage, config: config};
	}

	function onClientLoad(){
		//Decode the init params
		var config = unpackMessage(window.location.href.split("#")[1]).config;

		xipStateId = config.id;

		//Remove the query param for the IE7 recursive case.
		xipServerUrl = fixServerUrl(config.server).replace(/(\?|\&)dojo\.fr\=1/, "");

		//Make sure we don't have a javascript: url, just for good measure.
		if(xipServerUrl.split(":")[0].match(/javascript/i)){
			throw "Invalid server URL";
		}

		xipUseFrameRecursion = config["fr"];

		if(xipUseFrameRecursion == "endpoint"){
			xipMasterFrame = parent.parent;
		}else{
			xipMasterFrame = parent;
		}

		//Start counter to inspect hash value.
		setInterval(pollHash, 10);

		var clientUrl = window.location.href.split("#")[0];
		var iframeNode = document.getElementsByTagName("iframe")[0];
		iframeNode.id = xipStateId + "_frame";
		iframeNode.src = makeServerUrl("init", 'id=' + xipStateId + '&client='
			+ encodeURIComponent(clientUrl) + '&fr=' + xipUseFrameRecursion);
	}

	if(typeof(window.addEventListener) == "undefined"){
		window.attachEvent("onload", onClientLoad);
	}else{
		window.addEventListener('load', onClientLoad, false);
	}

	// -->
	</script>
</head>
<body>
	<h4>The Dojo Toolkit -- xip_client.html</h4>

	<p>This file is used for Dojo's XMLHttpRequest Iframe Proxy. This is the "client" file used
	internally by dojo.io.XhrIframeProxy.</p>

	<iframe src="javascript:false"></iframe>
</body>
</html>

__CPAN_DIR__ src/charting __CPAN_FILE__ src/charting/Plot.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.charting.Plot"); dojo.require("dojo.lang.common"); dojo.require("dojo.charting.Axis"); dojo.require("dojo.charting.Series"); dojo.charting.RenderPlotSeries = {Singly:"single", Grouped:"grouped"}; dojo.charting.Plot = function (xaxis, yaxis, series) { var id = "dojo-charting-plot-" + dojo.charting.Plot.count++; this.getId = function () { return id; }; this.setId = function (key) { id = key; }; this.axisX = null; this.axisY = null; this.series = []; this.dataNode = null; this.renderType = dojo.charting.RenderPlotSeries.Singly; if (xaxis) { this.setAxis(xaxis, "x"); } if (yaxis) { this.setAxis(yaxis, "y"); } if (series) { for (var i = 0; i < series.length; i++) { this.addSeries(series[i]); } } }; dojo.charting.Plot.count = 0; dojo.extend(dojo.charting.Plot, {addSeries:function (series, plotter) { if (series.plotter) { this.series.push(series); } else { this.series.push({data:series, plotter:plotter || dojo.charting.Plotters["Default"]}); } }, setAxis:function (axis, which) { if (which.toLowerCase() == "x") { this.axisX = axis; } else { if (which.toLowerCase() == "y") { this.axisY = axis; } } }, getRanges:function () { var xmin, xmax, ymin, ymax; xmin = ymin = Number.MAX_VALUE; xmax = ymax = Number.MIN_VALUE; for (var i = 0; i < this.series.length; i++) { var values = this.series[i].data.evaluate(); for (var j = 0; j < values.length; j++) { var comp = values[j]; xmin = Math.min(comp.x, xmin); ymin = Math.min(comp.y, ymin); xmax = Math.max(comp.x, xmax); ymax = Math.max(comp.y, ymax); } } return {x:{upper:xmax, lower:xmin}, y:{upper:ymax, lower:ymin}, toString:function () { return "[ x:" + xmax + " - " + xmin + ", y:" + ymax + " - " + ymin + "]"; }}; }, destroy:function () { var node = this.dataNode; while (node && node.childNodes && node.childNodes.length > 0) { node.removeChild(node.childNodes[0]); } this.dataNode = null; }});

__CPAN_FILE__ src/charting/README.txt Dojo Charting Engine ========================================================================= The Dojo Charting Engine is a (fairly) complex object structure, designed to provide as much flexibility as possible in terms of chart construction. To this end, the engine details the following structure:

Chart ---PlotArea[] ------Plot[] ---------Axis (axisX) ---------Axis (axisY) ---------Series[]

A Chart object is the main entity; it is the entire graphic. A Chart may have any number of PlotArea objects, which are the basic canvas against which data is plotted. A PlotArea may have any number of Plot objects, which is a container representing up to 2 axes and any number of series to be plotted against those axes; a Series represents a binding against two fields from a data source (initial rev, this data source is always of type dojo.collections.Store but this will probably change once dojo.data is in production).

The point of this structure is to allow for as much flexibility as possible in terms of what kinds of charts can be represented by the engine. The current plan is to accomodate up to analytical financial charts, which tend to have 3 plot areas and any number of different types of axes on each one.

The main exception to this is the pie chart, which will have it's own custom codebase. Also, 3D charts are not accounted for at this time, although the only thing that will probably need to be altered to make that work would be Plot and Series (to accomodate the additional Z axis).

Finally, a Plot will render its series[] through the use of Plotters, which are custom methods to render specific types of charts. ------------------------------------------------------------------------- In terms of widgets, the basic concept is that there is a central, super- flexible Chart widget (Chart, oddly enough), and then any number of preset chart type widgets, that are basically built to serve a simple, easy purpose. For instance, if someone just needs to plot a series of lines, they would be better off using the LineChart widget; but if someone needed to plot a combo chart, that has 2 Y Axes (one linear, one log) against the same X Axis, using lines and areas, then they will want to use a Chart widget. Note also that unlike other widgets, the Charting engine *can* be called directly from script *without* the need for the actual widget engine to be loaded; the Chart widgets are thin wrappers around the charting engine. __CPAN_FILE__ src/charting/Chart.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.charting.Chart"], ["require", "dojo.lang.common"], ["require", "dojo.charting.PlotArea"]], definePackage:function (dojo) { dojo.provide("dojo.charting.Chart"); dojo.require("dojo.lang.common"); dojo.require("dojo.charting.PlotArea"); dojo.charting.Chart = function (node, title, description) { this.node = node || null; this.title = title || "Chart"; this.description = description || ""; this.plotAreas = []; }; dojo.extend(dojo.charting.Chart, {addPlotArea:function (obj, doRender) { if (obj.x != null && obj.left == null) { obj.left = obj.x; } if (obj.y != null && obj.top == null) { obj.top = obj.y; } this.plotAreas.push(obj); if (doRender) { this.render(); } }, onInitialize:function (chart) { }, onRender:function (chart) { }, onDestroy:function (chart) { }, initialize:function () { if (!this.node) { dojo.raise("dojo.charting.Chart.initialize: there must be a root node defined for the Chart."); } this.destroy(); this.render(); this.onInitialize(this); }, render:function () { if (this.node.style.position != "absolute") { this.node.style.position = "relative"; } for (var i = 0; i < this.plotAreas.length; i++) { var area = this.plotAreas[i].plotArea; var node = area.initialize(); node.style.position = "absolute"; node.style.top = this.plotAreas[i].top + "px"; node.style.left = this.plotAreas[i].left + "px"; this.node.appendChild(node); area.render(); } }, destroy:function () { for (var i = 0; i < this.plotAreas.length; i++) { this.plotAreas[i].plotArea.destroy(); } while (this.node && this.node.childNodes && this.node.childNodes.length > 0) { this.node.removeChild(this.node.childNodes[0]); } }}); }});

__CPAN_FILE__ src/charting/PlotArea.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.charting.PlotArea"); dojo.require("dojo.lang.common"); dojo.require("dojo.gfx.color"); dojo.require("dojo.gfx.color.hsl"); dojo.require("dojo.charting.Plot"); dojo.charting.PlotArea = function () { var id = "dojo-charting-plotarea-" + dojo.charting.PlotArea.count++; this.getId = function () { return id; }; this.setId = function (key) { id = key; }; this.areaType = "standard"; this.plots = []; this.size = {width:600, height:400}; this.padding = {top:10, right:10, bottom:20, left:20}; this.nodes = {main:null, area:null, background:null, axes:null, plots:null}; this._color = {h:140, s:120, l:120, step:27}; }; dojo.charting.PlotArea.count = 0; dojo.extend(dojo.charting.PlotArea, {nextColor:function () { var rgb = dojo.gfx.color.hsl2rgb(this._color.h, this._color.s, this._color.l); this._color.h = (this._color.h + this._color.step) % 360; while (this._color.h < 140) { this._color.h += this._color.step; } return dojo.gfx.color.rgb2hex(rgb[0], rgb[1], rgb[2]); }, getArea:function () { return {left:this.padding.left, right:this.size.width - this.padding.right, top:this.padding.top, bottom:this.size.height - this.padding.bottom, toString:function () { var a = [this.top, this.right, this.bottom, this.left]; return "[" + a.join() + "]"; }}; }, getAxes:function () { var axes = {}; for (var i = 0; i < this.plots.length; i++) { var plot = this.plots[i]; axes[plot.axisX.getId()] = {axis:plot.axisX, drawAgainst:plot.axisY, plot:plot, plane:"x"}; axes[plot.axisY.getId()] = {axis:plot.axisY, drawAgainst:plot.axisX, plot:plot, plane:"y"}; } return axes; }, getLegendInfo:function () { var a = []; for (var i = 0; i < this.plots.length; i++) { for (var j = 0; j < this.plots[i].series.length; j++) { var data = this.plots[i].series[j].data; a.push({label:data.label, color:data.color}); } } return a; }, setAxesRanges:function () { var ranges = {}; var axes = {}; for (var i = 0; i < this.plots.length; i++) { var plot = this.plots[i]; var ranges = plot.getRanges(); var x = ranges.x; var y = ranges.y; var ax, ay; if (!axes[plot.axisX.getId()]) { axes[plot.axisX.getId()] = plot.axisX; ranges[plot.axisX.getId()] = {upper:x.upper, lower:x.lower}; } ax = ranges[plot.axisX.getId()]; ax.upper = Math.max(ax.upper, x.upper); ax.lower = Math.min(ax.lower, x.lower); if (!axes[plot.axisY.getId()]) { axes[plot.axisY.getId()] = plot.axisY; ranges[plot.axisY.getId()] = {upper:y.upper, lower:y.lower}; } ay = ranges[plot.axisY.getId()]; ay.upper = Math.max(ay.upper, y.upper); ay.lower = Math.min(ay.lower, y.lower); } for (var p in axes) { axes[p].range = ranges[p]; } }, render:function (kwArgs, applyToData) { if (!this.nodes.main || !this.nodes.area || !this.nodes.background || !this.nodes.plots || !this.nodes.axes) { this.initialize(); } this.resize(); for (var i = 0; i < this.plots.length; i++) { var plot = this.plots[i]; if (plot.dataNode) { this.nodes.plots.removeChild(plot.dataNode); } var target = this.initializePlot(plot); switch (plot.renderType) { case dojo.charting.RenderPlotSeries.Grouped: if (plot.series[0]) { target.appendChild(plot.series[0].plotter(this, plot, kwArgs, applyToData)); } break; case dojo.charting.RenderPlotSeries.Singly: default: for (var j = 0; j < plot.series.length; j++) { var series = plot.series[j]; var data = series.data.evaluate(kwArgs); target.appendChild(series.plotter(data, this, plot, applyToData)); } } this.nodes.plots.appendChild(target); } }, destroy:function () { for (var i = 0; i < this.plots.length; i++) { this.plots[i].destroy(); } for (var p in this.nodes) { var node = this.nodes[p]; if (!node) { continue; } if (!node.childNodes) { continue; } while (node.childNodes.length > 0) { node.removeChild(node.childNodes[0]); } this.nodes[p] = null; } }}); dojo.requireIf(dojo.render.svg.capable, "dojo.charting.svg.PlotArea"); dojo.requireIf(dojo.render.vml.capable, "dojo.charting.vml.PlotArea");

__CPAN_FILE__ src/charting/Series.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.charting.Series"); dojo.require("dojo.lang.common"); dojo.require("dojo.charting.Plotters"); dojo.charting.Series = function (kwArgs) { var args = kwArgs || {length:1}; this.dataSource = args.dataSource || null; this.bindings = {}; this.color = args.color; this.label = args.label; if (args.bindings) { for (var p in args.bindings) { this.addBinding(p, args.bindings[p]); } } }; dojo.extend(dojo.charting.Series, {bind:function (src, bindings) { this.dataSource = src; this.bindings = bindings; }, addBinding:function (name, binding) { this.bindings[name] = binding; }, evaluate:function (kwArgs) { var ret = []; var a = this.dataSource.getData(); var l = a.length; var start = 0; var end = l; if (kwArgs) { if (kwArgs.between) { for (var i = 0; i < l; i++) { var fld = this.dataSource.getField(a[i], kwArgs.between.field); if (fld >= kwArgs.between.low && fld <= kwArgs.between.high) { var o = {src:a[i], series:this}; for (var p in this.bindings) { o[p] = this.dataSource.getField(a[i], this.bindings[p]); } ret.push(o); } } } else { if (kwArgs.from || kwArgs.length) { if (kwArgs.from) { start = Math.max(kwArgs.from, 0); if (kwArgs.to) { end = Math.min(kwArgs.to, end); } } else { if (kwArgs.length < 0) { start = Math.max((end + length), 0); } else { end = Math.min((start + length), end); } } for (var i = start; i < end; i++) { var o = {src:a[i], series:this}; for (var p in this.bindings) { o[p] = this.dataSource.getField(a[i], this.bindings[p]); } ret.push(o); } } } } else { for (var i = start; i < end; i++) { var o = {src:a[i], series:this}; for (var p in this.bindings) { o[p] = this.dataSource.getField(a[i], this.bindings[p]); } ret.push(o); } } if (ret.length > 0 && typeof (ret[0].x) != "undefined") { ret.sort(function (a, b) { if (a.x > b.x) { return 1; } if (a.x < b.x) { return -1; } return 0; }); } return ret; }, trends:{createRange:function (values, len) { var idx = values.length - 1; var length = (len || values.length); return {"index":idx, "length":length, "start":Math.max(idx - length, 0)}; }, mean:function (values, len) { var range = this.createRange(values, len); if (range.index < 0) { return 0; } var total = 0; var count = 0; for (var i = range.index; i >= range.start; i--) { total += values[i].y; count++; } total /= Math.max(count, 1); return total; }, variance:function (values, len) { var range = this.createRange(values, len); if (range.index < 0) { return 0; } var total = 0; var square = 0; var count = 0; for (var i = range.index; i >= range.start; i--) { total += values[i].y; square += Math.pow(values[i].y, 2); count++; } return (square / count) - Math.pow(total / count, 2); }, standardDeviation:function (values, len) { return Math.sqrt(this.getVariance(values, len)); }, max:function (values, len) { var range = this.createRange(values, len); if (range.index < 0) { return 0; } var max = Number.MIN_VALUE; for (var i = range.index; i >= range.start; i--) { max = Math.max(values[i].y, max); } return max; }, min:function (values, len) { var range = this.createRange(values, len); if (range.index < 0) { return 0; } var min = Number.MAX_VALUE; for (var i = range.index; i >= range.start; i--) { min = Math.min(values[i].y, min); } return min; }, median:function (values, len) { var range = this.createRange(values, len); if (range.index < 0) { return 0; } var a = []; for (var i = range.index; i >= range.start; i--) { var b = false; for (var j = 0; j < a.length; j++) { if (values[i].y == a[j]) { b = true; break; } } if (!b) { a.push(values[i].y); } } a.sort(); if (a.length > 0) { return a[Math.ceil(a.length / 2)]; } return 0; }, mode:function (values, len) { var range = this.createRange(values, len); if (range.index < 0) { return 0; } var o = {}; var ret = 0; var median = Number.MIN_VALUE; for (var i = range.index; i >= range.start; i--) { if (!o[values[i].y]) { o[values[i].y] = 1; } else { o[values[i].y]++; } } for (var p in o) { if (median < o[p]) { median = o[p]; ret = p; } } return ret; }}});

__CPAN_FILE__ src/charting/Plotters.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.charting.Plotters"], ["requireIf", dojo.render.svg.capable, "dojo.charting.svg.Plotters"], ["requireIf", dojo.render.vml.capable, "dojo.charting.vml.Plotters"]], definePackage:function (dojo) { dojo.provide("dojo.charting.Plotters"); dojo.requireIf(dojo.render.svg.capable, "dojo.charting.svg.Plotters"); dojo.requireIf(dojo.render.vml.capable, "dojo.charting.vml.Plotters"); }});

__CPAN_FILE__ src/charting/Series.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.charting.Series"], ["require", "dojo.lang.common"], ["require", "dojo.charting.Plotters"]], definePackage:function (dojo) { dojo.provide("dojo.charting.Series"); dojo.require("dojo.lang.common"); dojo.require("dojo.charting.Plotters"); dojo.charting.Series = function (kwArgs) { var args = kwArgs || {length:1}; this.dataSource = args.dataSource || null; this.bindings = {}; this.color = args.color; this.label = args.label; if (args.bindings) { for (var p in args.bindings) { this.addBinding(p, args.bindings[p]); } } }; dojo.extend(dojo.charting.Series, {bind:function (src, bindings) { this.dataSource = src; this.bindings = bindings; }, addBinding:function (name, binding) { this.bindings[name] = binding; }, evaluate:function (kwArgs) { var ret = []; var a = this.dataSource.getData(); var l = a.length; var start = 0; var end = l; if (kwArgs) { if (kwArgs.between) { for (var i = 0; i < l; i++) { var fld = this.dataSource.getField(a[i], kwArgs.between.field); if (fld >= kwArgs.between.low && fld <= kwArgs.between.high) { var o = {src:a[i], series:this}; for (var p in this.bindings) { o[p] = this.dataSource.getField(a[i], this.bindings[p]); } ret.push(o); } } } else { if (kwArgs.from || kwArgs.length) { if (kwArgs.from) { start = Math.max(kwArgs.from, 0); if (kwArgs.to) { end = Math.min(kwArgs.to, end); } } else { if (kwArgs.length < 0) { start = Math.max((end + length), 0); } else { end = Math.min((start + length), end); } } for (var i = start; i < end; i++) { var o = {src:a[i], series:this}; for (var p in this.bindings) { o[p] = this.dataSource.getField(a[i], this.bindings[p]); } ret.push(o); } } } } else { for (var i = start; i < end; i++) { var o = {src:a[i], series:this}; for (var p in this.bindings) { o[p] = this.dataSource.getField(a[i], this.bindings[p]); } ret.push(o); } } if (ret.length > 0 && typeof (ret[0].x) != "undefined") { ret.sort(function (a, b) { if (a.x > b.x) { return 1; } if (a.x < b.x) { return -1; } return 0; }); } return ret; }, trends:{createRange:function (values, len) { var idx = values.length - 1; var length = (len || values.length); return {"index":idx, "length":length, "start":Math.max(idx - length, 0)}; }, mean:function (values, len) { var range = this.createRange(values, len); if (range.index < 0) { return 0; } var total = 0; var count = 0; for (var i = range.index; i >= range.start; i--) { total += values[i].y; count++; } total /= Math.max(count, 1); return total; }, variance:function (values, len) { var range = this.createRange(values, len); if (range.index < 0) { return 0; } var total = 0; var square = 0; var count = 0; for (var i = range.index; i >= range.start; i--) { total += values[i].y; square += Math.pow(values[i].y, 2); count++; } return (square / count) - Math.pow(total / count, 2); }, standardDeviation:function (values, len) { return Math.sqrt(this.getVariance(values, len)); }, max:function (values, len) { var range = this.createRange(values, len); if (range.index < 0) { return 0; } var max = Number.MIN_VALUE; for (var i = range.index; i >= range.start; i--) { max = Math.max(values[i].y, max); } return max; }, min:function (values, len) { var range = this.createRange(values, len); if (range.index < 0) { return 0; } var min = Number.MAX_VALUE; for (var i = range.index; i >= range.start; i--) { min = Math.min(values[i].y, min); } return min; }, median:function (values, len) { var range = this.createRange(values, len); if (range.index < 0) { return 0; } var a = []; for (var i = range.index; i >= range.start; i--) { var b = false; for (var j = 0; j < a.length; j++) { if (values[i].y == a[j]) { b = true; break; } } if (!b) { a.push(values[i].y); } } a.sort(); if (a.length > 0) { return a[Math.ceil(a.length / 2)]; } return 0; }, mode:function (values, len) { var range = this.createRange(values, len); if (range.index < 0) { return 0; } var o = {}; var ret = 0; var median = Number.MIN_VALUE; for (var i = range.index; i >= range.start; i--) { if (!o[values[i].y]) { o[values[i].y] = 1; } else { o[values[i].y]++; } } for (var p in o) { if (median < o[p]) { median = o[p]; ret = p; } } return ret; }}}); }});

__CPAN_FILE__ src/charting/Chart.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.charting.Chart"); dojo.require("dojo.lang.common"); dojo.require("dojo.charting.PlotArea"); dojo.charting.Chart = function (node, title, description) { this.node = node || null; this.title = title || "Chart"; this.description = description || ""; this.plotAreas = []; }; dojo.extend(dojo.charting.Chart, {addPlotArea:function (obj, doRender) { if (obj.x != null && obj.left == null) { obj.left = obj.x; } if (obj.y != null && obj.top == null) { obj.top = obj.y; } this.plotAreas.push(obj); if (doRender) { this.render(); } }, onInitialize:function (chart) { }, onRender:function (chart) { }, onDestroy:function (chart) { }, initialize:function () { if (!this.node) { dojo.raise("dojo.charting.Chart.initialize: there must be a root node defined for the Chart."); } this.destroy(); this.render(); this.onInitialize(this); }, render:function () { if (this.node.style.position != "absolute") { this.node.style.position = "relative"; } for (var i = 0; i < this.plotAreas.length; i++) { var area = this.plotAreas[i].plotArea; var node = area.initialize(); node.style.position = "absolute"; node.style.top = this.plotAreas[i].top + "px"; node.style.left = this.plotAreas[i].left + "px"; this.node.appendChild(node); area.render(); } }, destroy:function () { for (var i = 0; i < this.plotAreas.length; i++) { this.plotAreas[i].plotArea.destroy(); } while (this.node && this.node.childNodes && this.node.childNodes.length > 0) { this.node.removeChild(this.node.childNodes[0]); } }});

__CPAN_FILE__ src/charting/Axis.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.charting.Axis"], ["require", "dojo.lang.common"], ["requireIf", dojo.render.svg.capable, "dojo.charting.svg.Axis"], ["requireIf", dojo.render.vml.capable, "dojo.charting.vml.Axis"]], definePackage:function (dojo) { dojo.provide("dojo.charting.Axis"); dojo.require("dojo.lang.common"); dojo.charting.Axis = function (label, scale, labels) { var id = "dojo-charting-axis-" + dojo.charting.Axis.count++; this.getId = function () { return id; }; this.setId = function (key) { id = key; }; this.scale = scale || "linear"; this.label = label || ""; this.showLabel = true; this.showLabels = true; this.showLines = false; this.showTicks = false; this.range = {upper:100, lower:0}; this.origin = "min"; this._origin = null; this.labels = labels || []; this._labels = []; this.nodes = {main:null, axis:null, label:null, labels:null, lines:null, ticks:null}; this._rerender = false; }; dojo.charting.Axis.count = 0; dojo.extend(dojo.charting.Axis, {getCoord:function (val, plotArea, plot) { val = parseFloat(val, 10); var area = plotArea.getArea(); if (plot.axisX == this) { var offset = 0 - this.range.lower; var min = this.range.lower + offset; var max = this.range.upper + offset; val += offset; return (val * ((area.right - area.left) / max)) + area.left; } else { var max = this.range.upper; var min = this.range.lower; var offset = 0; if (min < 0) { offset += Math.abs(min); } max += offset; min += offset; val += offset; var pmin = area.bottom; var pmax = area.top; return (((pmin - pmax) / (max - min)) * (max - val)) + pmax; } }, initializeOrigin:function (drawAgainst, plane) { if (this._origin == null) { this._origin = this.origin; } if (isNaN(this._origin)) { if (this._origin.toLowerCase() == "max") { this.origin = drawAgainst.range[(plane == "y") ? "upper" : "lower"]; } else { if (this._origin.toLowerCase() == "min") { this.origin = drawAgainst.range[(plane == "y") ? "lower" : "upper"]; } else { this.origin = 0; } } } }, initializeLabels:function () { this._labels = []; if (this.labels.length == 0) { this.showLabels = false; this.showLines = false; this.showTicks = false; } else { if (this.labels[0].label && this.labels[0].value != null) { for (var i = 0; i < this.labels.length; i++) { this._labels.push(this.labels[i]); } } else { if (!isNaN(this.labels[0])) { for (var i = 0; i < this.labels.length; i++) { this._labels.push({label:this.labels[i], value:this.labels[i]}); } } else { var a = []; for (var i = 0; i < this.labels.length; i++) { a.push(this.labels[i]); } var s = a.shift(); this._labels.push({label:s, value:this.range.lower}); if (a.length > 0) { var s = a.pop(); this._labels.push({label:s, value:this.range.upper}); } if (a.length > 0) { var range = this.range.upper - this.range.lower; var step = range / (this.labels.length - 1); for (var i = 1; i <= a.length; i++) { this._labels.push({label:a[i - 1], value:this.range.lower + (step * i)}); } } } } } }, initialize:function (plotArea, plot, drawAgainst, plane) { this.destroy(); this.initializeOrigin(drawAgainst, plane); this.initializeLabels(); var node = this.render(plotArea, plot, drawAgainst, plane); return node; }, destroy:function () { for (var p in this.nodes) { while (this.nodes[p] && this.nodes[p].childNodes.length > 0) { this.nodes[p].removeChild(this.nodes[p].childNodes[0]); } if (this.nodes[p] && this.nodes[p].parentNode) { this.nodes[p].parentNode.removeChild(this.nodes[p]); } this.nodes[p] = null; } }}); dojo.requireIf(dojo.render.svg.capable, "dojo.charting.svg.Axis"); dojo.requireIf(dojo.render.vml.capable, "dojo.charting.vml.Axis"); }});

__CPAN_FILE__ src/charting/PlotArea.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.charting.PlotArea"], ["require", "dojo.lang.common"], ["require", "dojo.gfx.color"], ["require", "dojo.gfx.color.hsl"], ["require", "dojo.charting.Plot"], ["requireIf", dojo.render.svg.capable, "dojo.charting.svg.PlotArea"], ["requireIf", dojo.render.vml.capable, "dojo.charting.vml.PlotArea"]], definePackage:function (dojo) { dojo.provide("dojo.charting.PlotArea"); dojo.require("dojo.lang.common"); dojo.require("dojo.gfx.color"); dojo.require("dojo.gfx.color.hsl"); dojo.require("dojo.charting.Plot"); dojo.charting.PlotArea = function () { var id = "dojo-charting-plotarea-" + dojo.charting.PlotArea.count++; this.getId = function () { return id; }; this.setId = function (key) { id = key; }; this.areaType = "standard"; this.plots = []; this.size = {width:600, height:400}; this.padding = {top:10, right:10, bottom:20, left:20}; this.nodes = {main:null, area:null, background:null, axes:null, plots:null}; this._color = {h:140, s:120, l:120, step:27}; }; dojo.charting.PlotArea.count = 0; dojo.extend(dojo.charting.PlotArea, {nextColor:function () { var rgb = dojo.gfx.color.hsl2rgb(this._color.h, this._color.s, this._color.l); this._color.h = (this._color.h + this._color.step) % 360; while (this._color.h < 140) { this._color.h += this._color.step; } return dojo.gfx.color.rgb2hex(rgb[0], rgb[1], rgb[2]); }, getArea:function () { return {left:this.padding.left, right:this.size.width - this.padding.right, top:this.padding.top, bottom:this.size.height - this.padding.bottom, toString:function () { var a = [this.top, this.right, this.bottom, this.left]; return "[" + a.join() + "]"; }}; }, getAxes:function () { var axes = {}; for (var i = 0; i < this.plots.length; i++) { var plot = this.plots[i]; axes[plot.axisX.getId()] = {axis:plot.axisX, drawAgainst:plot.axisY, plot:plot, plane:"x"}; axes[plot.axisY.getId()] = {axis:plot.axisY, drawAgainst:plot.axisX, plot:plot, plane:"y"}; } return axes; }, getLegendInfo:function () { var a = []; for (var i = 0; i < this.plots.length; i++) { for (var j = 0; j < this.plots[i].series.length; j++) { var data = this.plots[i].series[j].data; a.push({label:data.label, color:data.color}); } } return a; }, setAxesRanges:function () { var ranges = {}; var axes = {}; for (var i = 0; i < this.plots.length; i++) { var plot = this.plots[i]; var ranges = plot.getRanges(); var x = ranges.x; var y = ranges.y; var ax, ay; if (!axes[plot.axisX.getId()]) { axes[plot.axisX.getId()] = plot.axisX; ranges[plot.axisX.getId()] = {upper:x.upper, lower:x.lower}; } ax = ranges[plot.axisX.getId()]; ax.upper = Math.max(ax.upper, x.upper); ax.lower = Math.min(ax.lower, x.lower); if (!axes[plot.axisY.getId()]) { axes[plot.axisY.getId()] = plot.axisY; ranges[plot.axisY.getId()] = {upper:y.upper, lower:y.lower}; } ay = ranges[plot.axisY.getId()]; ay.upper = Math.max(ay.upper, y.upper); ay.lower = Math.min(ay.lower, y.lower); } for (var p in axes) { axes[p].range = ranges[p]; } }, render:function (kwArgs, applyToData) { if (!this.nodes.main || !this.nodes.area || !this.nodes.background || !this.nodes.plots || !this.nodes.axes) { this.initialize(); } this.resize(); for (var i = 0; i < this.plots.length; i++) { var plot = this.plots[i]; if (plot.dataNode) { this.nodes.plots.removeChild(plot.dataNode); } var target = this.initializePlot(plot); switch (plot.renderType) { case dojo.charting.RenderPlotSeries.Grouped: if (plot.series[0]) { target.appendChild(plot.series[0].plotter(this, plot, kwArgs, applyToData)); } break; case dojo.charting.RenderPlotSeries.Singly: default: for (var j = 0; j < plot.series.length; j++) { var series = plot.series[j]; var data = series.data.evaluate(kwArgs); target.appendChild(series.plotter(data, this, plot, applyToData)); } } this.nodes.plots.appendChild(target); } }, destroy:function () { for (var i = 0; i < this.plots.length; i++) { this.plots[i].destroy(); } for (var p in this.nodes) { var node = this.nodes[p]; if (!node) { continue; } if (!node.childNodes) { continue; } while (node.childNodes.length > 0) { node.removeChild(node.childNodes[0]); } this.nodes[p] = null; } }}); dojo.requireIf(dojo.render.svg.capable, "dojo.charting.svg.PlotArea"); dojo.requireIf(dojo.render.vml.capable, "dojo.charting.vml.PlotArea"); }});

__CPAN_FILE__ src/charting/Plotters.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.charting.Plotters"); dojo.requireIf(dojo.render.svg.capable, "dojo.charting.svg.Plotters"); dojo.requireIf(dojo.render.vml.capable, "dojo.charting.vml.Plotters");

__CPAN_FILE__ src/charting/__package__.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.charting.*");

__CPAN_FILE__ src/charting/Axis.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.charting.Axis"); dojo.require("dojo.lang.common"); dojo.charting.Axis = function (label, scale, labels) { var id = "dojo-charting-axis-" + dojo.charting.Axis.count++; this.getId = function () { return id; }; this.setId = function (key) { id = key; }; this.scale = scale || "linear"; this.label = label || ""; this.showLabel = true; this.showLabels = true; this.showLines = false; this.showTicks = false; this.range = {upper:100, lower:0}; this.origin = "min"; this._origin = null; this.labels = labels || []; this._labels = []; this.nodes = {main:null, axis:null, label:null, labels:null, lines:null, ticks:null}; this._rerender = false; }; dojo.charting.Axis.count = 0; dojo.extend(dojo.charting.Axis, {getCoord:function (val, plotArea, plot) { val = parseFloat(val, 10); var area = plotArea.getArea(); if (plot.axisX == this) { var offset = 0 - this.range.lower; var min = this.range.lower + offset; var max = this.range.upper + offset; val += offset; return (val * ((area.right - area.left) / max)) + area.left; } else { var max = this.range.upper; var min = this.range.lower; var offset = 0; if (min < 0) { offset += Math.abs(min); } max += offset; min += offset; val += offset; var pmin = area.bottom; var pmax = area.top; return (((pmin - pmax) / (max - min)) * (max - val)) + pmax; } }, initializeOrigin:function (drawAgainst, plane) { if (this._origin == null) { this._origin = this.origin; } if (isNaN(this._origin)) { if (this._origin.toLowerCase() == "max") { this.origin = drawAgainst.range[(plane == "y") ? "upper" : "lower"]; } else { if (this._origin.toLowerCase() == "min") { this.origin = drawAgainst.range[(plane == "y") ? "lower" : "upper"]; } else { this.origin = 0; } } } }, initializeLabels:function () { this._labels = []; if (this.labels.length == 0) { this.showLabels = false; this.showLines = false; this.showTicks = false; } else { if (this.labels[0].label && this.labels[0].value != null) { for (var i = 0; i < this.labels.length; i++) { this._labels.push(this.labels[i]); } } else { if (!isNaN(this.labels[0])) { for (var i = 0; i < this.labels.length; i++) { this._labels.push({label:this.labels[i], value:this.labels[i]}); } } else { var a = []; for (var i = 0; i < this.labels.length; i++) { a.push(this.labels[i]); } var s = a.shift(); this._labels.push({label:s, value:this.range.lower}); if (a.length > 0) { var s = a.pop(); this._labels.push({label:s, value:this.range.upper}); } if (a.length > 0) { var range = this.range.upper - this.range.lower; var step = range / (this.labels.length - 1); for (var i = 1; i <= a.length; i++) { this._labels.push({label:a[i - 1], value:this.range.lower + (step * i)}); } } } } } }, initialize:function (plotArea, plot, drawAgainst, plane) { this.destroy(); this.initializeOrigin(drawAgainst, plane); this.initializeLabels(); var node = this.render(plotArea, plot, drawAgainst, plane); return node; }, destroy:function () { for (var p in this.nodes) { while (this.nodes[p] && this.nodes[p].childNodes.length > 0) { this.nodes[p].removeChild(this.nodes[p].childNodes[0]); } if (this.nodes[p] && this.nodes[p].parentNode) { this.nodes[p].parentNode.removeChild(this.nodes[p]); } this.nodes[p] = null; } }}); dojo.requireIf(dojo.render.svg.capable, "dojo.charting.svg.Axis"); dojo.requireIf(dojo.render.vml.capable, "dojo.charting.vml.Axis");

__CPAN_FILE__ src/charting/__package__.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.charting.*"]], definePackage:function (dojo) { dojo.provide("dojo.charting.*"); }});

__CPAN_FILE__ src/charting/Plot.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.charting.Plot"], ["require", "dojo.lang.common"], ["require", "dojo.charting.Axis"], ["require", "dojo.charting.Series"]], definePackage:function (dojo) { dojo.provide("dojo.charting.Plot"); dojo.require("dojo.lang.common"); dojo.require("dojo.charting.Axis"); dojo.require("dojo.charting.Series"); dojo.charting.RenderPlotSeries = {Singly:"single", Grouped:"grouped"}; dojo.charting.Plot = function (xaxis, yaxis, series) { var id = "dojo-charting-plot-" + dojo.charting.Plot.count++; this.getId = function () { return id; }; this.setId = function (key) { id = key; }; this.axisX = null; this.axisY = null; this.series = []; this.dataNode = null; this.renderType = dojo.charting.RenderPlotSeries.Singly; if (xaxis) { this.setAxis(xaxis, "x"); } if (yaxis) { this.setAxis(yaxis, "y"); } if (series) { for (var i = 0; i < series.length; i++) { this.addSeries(series[i]); } } }; dojo.charting.Plot.count = 0; dojo.extend(dojo.charting.Plot, {addSeries:function (series, plotter) { if (series.plotter) { this.series.push(series); } else { this.series.push({data:series, plotter:plotter || dojo.charting.Plotters["Default"]}); } }, setAxis:function (axis, which) { if (which.toLowerCase() == "x") { this.axisX = axis; } else { if (which.toLowerCase() == "y") { this.axisY = axis; } } }, getRanges:function () { var xmin, xmax, ymin, ymax; xmin = ymin = Number.MAX_VALUE; xmax = ymax = Number.MIN_VALUE; for (var i = 0; i < this.series.length; i++) { var values = this.series[i].data.evaluate(); for (var j = 0; j < values.length; j++) { var comp = values[j]; xmin = Math.min(comp.x, xmin); ymin = Math.min(comp.y, ymin); xmax = Math.max(comp.x, xmax); ymax = Math.max(comp.y, ymax); } } return {x:{upper:xmax, lower:xmin}, y:{upper:ymax, lower:ymin}, toString:function () { return "[ x:" + xmax + " - " + xmin + ", y:" + ymax + " - " + ymin + "]"; }}; }, destroy:function () { var node = this.dataNode; while (node && node.childNodes && node.childNodes.length > 0) { node.removeChild(node.childNodes[0]); } this.dataNode = null; }}); }});

__CPAN_DIR__ src/charting/svg __CPAN_FILE__ src/charting/svg/PlotArea.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.charting.svg.PlotArea"); dojo.require("dojo.lang.common"); if (dojo.render.svg.capable) { dojo.require("dojo.svg"); dojo.extend(dojo.charting.PlotArea, {resize:function () { var area = this.getArea(); this.nodes.area.setAttribute("width", this.size.width); this.nodes.area.setAttribute("height", this.size.height); var rect = this.nodes.area.getElementsByTagName("rect")[0]; rect.setAttribute("x", area.left); rect.setAttribute("y", area.top); rect.setAttribute("width", area.right - area.left); rect.setAttribute("height", area.bottom - area.top); this.nodes.background.setAttribute("width", this.size.width); this.nodes.background.setAttribute("height", this.size.height); if (this.nodes.plots) { this.nodes.area.removeChild(this.nodes.plots); this.nodes.plots = null; } this.nodes.plots = document.createElementNS(dojo.svg.xmlns.svg, "g"); this.nodes.plots.setAttribute("id", this.getId() + "-plots"); this.nodes.plots.setAttribute("style", "clip-path:url(#" + this.getId() + "-clip);"); this.nodes.area.appendChild(this.nodes.plots); for (var i = 0; i < this.plots.length; i++) { this.nodes.plots.appendChild(this.initializePlot(this.plots[i])); } if (this.nodes.axes) { this.nodes.area.removeChild(this.nodes.axes); this.nodes.axes = null; } this.nodes.axes = document.createElementNS(dojo.svg.xmlns.svg, "g"); this.nodes.axes.setAttribute("id", this.getId() + "-axes"); this.nodes.area.appendChild(this.nodes.axes); var axes = this.getAxes(); for (var p in axes) { var obj = axes[p]; this.nodes.axes.appendChild(obj.axis.initialize(this, obj.plot, obj.drawAgainst, obj.plane)); } }, initializePlot:function (plot) { plot.destroy(); plot.dataNode = document.createElementNS(dojo.svg.xmlns.svg, "g"); plot.dataNode.setAttribute("id", plot.getId()); return plot.dataNode; }, initialize:function () { this.destroy(); this.nodes.main = document.createElement("div"); this.nodes.area = document.createElementNS(dojo.svg.xmlns.svg, "svg"); this.nodes.area.setAttribute("id", this.getId()); this.nodes.main.appendChild(this.nodes.area); var defs = document.createElementNS(dojo.svg.xmlns.svg, "defs"); var clip = document.createElementNS(dojo.svg.xmlns.svg, "clipPath"); clip.setAttribute("id", this.getId() + "-clip"); var rect = document.createElementNS(dojo.svg.xmlns.svg, "rect"); clip.appendChild(rect); defs.appendChild(clip); this.nodes.area.appendChild(defs); this.nodes.background = document.createElementNS(dojo.svg.xmlns.svg, "rect"); this.nodes.background.setAttribute("id", this.getId() + "-background"); this.nodes.background.setAttribute("fill", "#fff"); this.nodes.area.appendChild(this.nodes.background); this.resize(); return this.nodes.main; }}); }

__CPAN_FILE__ src/charting/svg/Plotters.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.charting.svg.Plotters"], ["require", "dojo.lang.common"], ["require", "dojo.svg"]], definePackage:function (dojo) { dojo.provide("dojo.charting.svg.Plotters"); dojo.require("dojo.lang.common"); if (dojo.render.svg.capable) { dojo.require("dojo.svg"); dojo.mixin(dojo.charting.Plotters, {Bar:function (plotarea, plot, kwArgs, applyTo) { var area = plotarea.getArea(); var group = document.createElementNS(dojo.svg.xmlns.svg, "g"); var n = plot.series.length; var data = []; for (var i = 0; i < n; i++) { var tmp = plot.series[i].data.evaluate(kwArgs); data.push(tmp); } var space = 8; var nPoints = data[0].length; if (nPoints == 0) { return group; } var width = ((area.right - area.left) - (space * (nPoints - 1))) / nPoints; var barWidth = width / n; var yOrigin = plot.axisY.getCoord(plot.axisX.origin, plotarea, plot); for (var i = 0; i < nPoints; i++) { var xStart = area.left + (width * i) + (space * i); for (var j = 0; j < n; j++) { var value = data[j][i].y; var yA = yOrigin; var x = xStart + (barWidth * j); var y = plot.axisY.getCoord(value, plotarea, plot); var h = Math.abs(yA - y); if (value < plot.axisX.origin) { yA = y; y = yOrigin; } var bar = document.createElementNS(dojo.svg.xmlns.svg, "rect"); bar.setAttribute("fill", data[j][i].series.color); bar.setAttribute("stroke-width", "0"); bar.setAttribute("x", x); bar.setAttribute("y", y); bar.setAttribute("width", barWidth); bar.setAttribute("height", h); bar.setAttribute("fill-opacity", "0.6"); if (applyTo) { applyTo(bar, data[j][i].src); } group.appendChild(bar); } } return group; }, HorizontalBar:function (plotarea, plot, kwArgs, applyTo) { var area = plotarea.getArea(); var group = document.createElementNS(dojo.svg.xmlns.svg, "g"); var n = plot.series.length; var data = []; for (var i = 0; i < n; i++) { var tmp = plot.series[i].data.evaluate(kwArgs); data.push(tmp); } var space = 6; var nPoints = data[0].length; if (nPoints == 0) { return group; } var h = ((area.bottom - area.top) - (space * (nPoints - 1))) / nPoints; var barH = h / n; var xOrigin = plot.axisX.getCoord(0, plotarea, plot); for (var i = 0; i < nPoints; i++) { var yStart = area.top + (h * i) + (space * i); for (var j = 0; j < n; j++) { var value = data[j][i].y; var y = yStart + (barH * j); var xA = xOrigin; var x = plot.axisX.getCoord(value, plotarea, plot); var w = Math.abs(x - xA); if (value > 0) { x = xOrigin; } var bar = document.createElementNS(dojo.svg.xmlns.svg, "rect"); bar.setAttribute("fill", data[j][i].series.color); bar.setAttribute("stroke-width", "0"); bar.setAttribute("x", xA); bar.setAttribute("y", y); bar.setAttribute("width", w); bar.setAttribute("height", barH); bar.setAttribute("fill-opacity", "0.6"); if (applyTo) { applyTo(bar, data[j][i].src); } group.appendChild(bar); } } return group; }, Gantt:function (plotarea, plot, kwArgs, applyTo) { var area = plotarea.getArea(); var group = document.createElementNS(dojo.svg.xmlns.svg, "g"); var n = plot.series.length; var data = []; for (var i = 0; i < n; i++) { var tmp = plot.series[i].data.evaluate(kwArgs); data.push(tmp); } var space = 2; var nPoints = data[0].length; if (nPoints == 0) { return group; } var h = ((area.bottom - area.top) - (space * (nPoints - 1))) / nPoints; var barH = h / n; for (var i = 0; i < nPoints; i++) { var yStart = area.top + (h * i) + (space * i); for (var j = 0; j < n; j++) { var high = data[j][i].high; var low = data[j][i].low; if (low > high) { var t = high; high = low; low = t; } var x = plot.axisX.getCoord(low, plotarea, plot); var w = plot.axisX.getCoord(high, plotarea, plot) - x; var y = yStart + (barH * j); var bar = document.createElementNS(dojo.svg.xmlns.svg, "rect"); bar.setAttribute("fill", data[j][i].series.color); bar.setAttribute("stroke-width", "0"); bar.setAttribute("x", x); bar.setAttribute("y", y); bar.setAttribute("width", w); bar.setAttribute("height", barH); bar.setAttribute("fill-opacity", "0.6"); if (applyTo) { applyTo(bar, data[j][i].src); } group.appendChild(bar); } } return group; }, StackedArea:function (plotarea, plot, kwArgs, applyTo) { var area = plotarea.getArea(); var group = document.createElementNS(dojo.svg.xmlns.svg, "g"); var n = plot.series.length; var data = []; var totals = []; for (var i = 0; i < n; i++) { var tmp = plot.series[i].data.evaluate(kwArgs); for (var j = 0; j < tmp.length; j++) { if (i == 0) { totals.push(tmp[j].y); } else { totals[j] += tmp[j].y; } tmp[j].y = totals[j]; } data.push(tmp); } for (var i = n - 1; i >= 0; i--) { var path = document.createElementNS(dojo.svg.xmlns.svg, "path"); path.setAttribute("fill", data[i][0].series.color); path.setAttribute("fill-opacity", "0.4"); path.setAttribute("stroke", data[i][0].series.color); path.setAttribute("stroke-width", "1"); path.setAttribute("stroke-opacity", "0.85"); var cmd = []; var r = 3; for (var j = 0; j < data[i].length; j++) { var values = data[i]; var x = plot.axisX.getCoord(values[j].x, plotarea, plot); var y = plot.axisY.getCoord(values[j].y, plotarea, plot); if (j == 0) { cmd.push("M"); } else { cmd.push("L"); } cmd.push(x + "," + y); var c = document.createElementNS(dojo.svg.xmlns.svg, "circle"); c.setAttribute("cx", x); c.setAttribute("cy", y); c.setAttribute("r", "3"); c.setAttribute("fill", values[j].series.color); c.setAttribute("fill-opacity", "0.6"); c.setAttribute("stroke-width", "1"); c.setAttribute("stroke-opacity", "0.85"); group.appendChild(c); if (applyTo) { applyTo(c, data[i].src); } } if (i == 0) { cmd.push("L"); cmd.push(x + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)); cmd.push("L"); cmd.push(plot.axisX.getCoord(data[0][0].x, plotarea, plot) + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)); cmd.push("Z"); } else { var values = data[i - 1]; cmd.push("L"); cmd.push(x + "," + Math.round(plot.axisY.getCoord(values[values.length - 1].y, plotarea, plot))); for (var j = values.length - 2; j >= 0; j--) { var x = plot.axisX.getCoord(values[j].x, plotarea, plot); var y = plot.axisY.getCoord(values[j].y, plotarea, plot); cmd.push("L"); cmd.push(x + "," + y); } } path.setAttribute("d", cmd.join(" ") + " Z"); group.appendChild(path); } return group; }, StackedCurvedArea:function (plotarea, plot, kwArgs, applyTo) { var tension = 3; var area = plotarea.getArea(); var group = document.createElementNS(dojo.svg.xmlns.svg, "g"); var n = plot.series.length; var data = []; var totals = []; for (var i = 0; i < n; i++) { var tmp = plot.series[i].data.evaluate(kwArgs); for (var j = 0; j < tmp.length; j++) { if (i == 0) { totals.push(tmp[j].y); } else { totals[j] += tmp[j].y; } tmp[j].y = totals[j]; } data.push(tmp); } for (var i = n - 1; i >= 0; i--) { var path = document.createElementNS(dojo.svg.xmlns.svg, "path"); path.setAttribute("fill", data[i][0].series.color); path.setAttribute("fill-opacity", "0.4"); path.setAttribute("stroke", data[i][0].series.color); path.setAttribute("stroke-width", "1"); path.setAttribute("stroke-opacity", "0.85"); var cmd = []; var r = 3; for (var j = 0; j < data[i].length; j++) { var values = data[i]; var x = plot.axisX.getCoord(values[j].x, plotarea, plot); var y = plot.axisY.getCoord(values[j].y, plotarea, plot); var dx = area.left + 1; var dy = area.bottom; if (j > 0) { dx = x - plot.axisX.getCoord(values[j - 1].x, plotarea, plot); dy = plot.axisY.getCoord(values[j - 1].y, plotarea, plot); } if (j == 0) { cmd.push("M"); } else { cmd.push("C"); var cx = x - (tension - 1) * (dx / tension); cmd.push(cx + "," + dy); cx = x - (dx / tension); cmd.push(cx + "," + y); } cmd.push(x + "," + y); var c = document.createElementNS(dojo.svg.xmlns.svg, "circle"); c.setAttribute("cx", x); c.setAttribute("cy", y); c.setAttribute("r", "3"); c.setAttribute("fill", values[j].series.color); c.setAttribute("fill-opacity", "0.6"); c.setAttribute("stroke-width", "1"); c.setAttribute("stroke-opacity", "0.85"); group.appendChild(c); if (applyTo) { applyTo(c, data[i].src); } } if (i == 0) { cmd.push("L"); cmd.push(x + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)); cmd.push("L"); cmd.push(plot.axisX.getCoord(data[0][0].x, plotarea, plot) + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)); cmd.push("Z"); } else { var values = data[i - 1]; cmd.push("L"); cmd.push(x + "," + Math.round(plot.axisY.getCoord(values[values.length - 1].y, plotarea, plot))); for (var j = values.length - 2; j >= 0; j--) { var x = plot.axisX.getCoord(values[j].x, plotarea, plot); var y = plot.axisY.getCoord(values[j].y, plotarea, plot); var dx = x - plot.axisX.getCoord(values[j + 1].x, plotarea, plot); var dy = plot.axisY.getCoord(values[j + 1].y, plotarea, plot); cmd.push("C"); var cx = x - (tension - 1) * (dx / tension); cmd.push(cx + "," + dy); cx = x - (dx / tension); cmd.push(cx + "," + y); cmd.push(x + "," + y); } } path.setAttribute("d", cmd.join(" ") + " Z"); group.appendChild(path); } return group; }, DataBar:function (data, plotarea, plot, applyTo) { var area = plotarea.getArea(); var group = document.createElementNS(dojo.svg.xmlns.svg, "g"); var n = data.length; var w = (area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower); var yOrigin = plot.axisY.getCoord(plot.axisX.origin, plotarea, plot); for (var i = 0; i < n; i++) { var value = data[i].y; var yA = yOrigin; var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2); var y = plot.axisY.getCoord(value, plotarea, plot); var h = Math.abs(yA - y); if (value < plot.axisX.origin) { yA = y; y = yOrigin; } var bar = document.createElementNS(dojo.svg.xmlns.svg, "rect"); bar.setAttribute("fill", data[i].series.color); bar.setAttribute("stroke-width", "0"); bar.setAttribute("x", x); bar.setAttribute("y", y); bar.setAttribute("width", w); bar.setAttribute("height", h); bar.setAttribute("fill-opacity", "0.6"); if (applyTo) { applyTo(bar, data[i].src); } group.appendChild(bar); } return group; }, Line:function (data, plotarea, plot, applyTo) { var area = plotarea.getArea(); var line = document.createElementNS(dojo.svg.xmlns.svg, "g"); if (data.length == 0) { return line; } var path = document.createElementNS(dojo.svg.xmlns.svg, "path"); line.appendChild(path); path.setAttribute("fill", "none"); path.setAttribute("stroke", data[0].series.color); path.setAttribute("stroke-width", "2"); path.setAttribute("stroke-opacity", "0.85"); if (data[0].series.label != null) { path.setAttribute("title", data[0].series.label); } var cmd = []; for (var i = 0; i < data.length; i++) { var x = plot.axisX.getCoord(data[i].x, plotarea, plot); var y = plot.axisY.getCoord(data[i].y, plotarea, plot); if (i == 0) { cmd.push("M"); } else { cmd.push("L"); } cmd.push(x + "," + y); var c = document.createElementNS(dojo.svg.xmlns.svg, "circle"); c.setAttribute("cx", x); c.setAttribute("cy", y); c.setAttribute("r", "3"); c.setAttribute("fill", data[i].series.color); c.setAttribute("fill-opacity", "0.6"); c.setAttribute("stroke-width", "1"); c.setAttribute("stroke-opacity", "0.85"); line.appendChild(c); if (applyTo) { applyTo(c, data[i].src); } } path.setAttribute("d", cmd.join(" ")); return line; }, CurvedLine:function (data, plotarea, plot, applyTo) { var tension = 3; var area = plotarea.getArea(); var line = document.createElementNS(dojo.svg.xmlns.svg, "g"); if (data.length == 0) { return line; } var path = document.createElementNS(dojo.svg.xmlns.svg, "path"); line.appendChild(path); path.setAttribute("fill", "none"); path.setAttribute("stroke", data[0].series.color); path.setAttribute("stroke-width", "2"); path.setAttribute("stroke-opacity", "0.85"); if (data[0].series.label != null) { path.setAttribute("title", data[0].series.label); } var cmd = []; for (var i = 0; i < data.length; i++) { var x = plot.axisX.getCoord(data[i].x, plotarea, plot); var y = plot.axisY.getCoord(data[i].y, plotarea, plot); var dx = area.left + 1; var dy = area.bottom; if (i > 0) { dx = x - plot.axisX.getCoord(data[i - 1].x, plotarea, plot); dy = plot.axisY.getCoord(data[i - 1].y, plotarea, plot); } if (i == 0) { cmd.push("M"); } else { cmd.push("C"); var cx = x - (tension - 1) * (dx / tension); cmd.push(cx + "," + dy); cx = x - (dx / tension); cmd.push(cx + "," + y); } cmd.push(x + "," + y); var c = document.createElementNS(dojo.svg.xmlns.svg, "circle"); c.setAttribute("cx", x); c.setAttribute("cy", y); c.setAttribute("r", "3"); c.setAttribute("fill", data[i].series.color); c.setAttribute("fill-opacity", "0.6"); c.setAttribute("stroke-width", "1"); c.setAttribute("stroke-opacity", "0.85"); line.appendChild(c); if (applyTo) { applyTo(c, data[i].src); } } path.setAttribute("d", cmd.join(" ")); return line; }, Area:function (data, plotarea, plot, applyTo) { var area = plotarea.getArea(); var line = document.createElementNS(dojo.svg.xmlns.svg, "g"); if (data.length == 0) { return line; } var path = document.createElementNS(dojo.svg.xmlns.svg, "path"); line.appendChild(path); path.setAttribute("fill", data[0].series.color); path.setAttribute("fill-opacity", "0.4"); path.setAttribute("stroke", data[0].series.color); path.setAttribute("stroke-width", "1"); path.setAttribute("stroke-opacity", "0.85"); if (data[0].series.label != null) { path.setAttribute("title", data[0].series.label); } var cmd = []; for (var i = 0; i < data.length; i++) { var x = plot.axisX.getCoord(data[i].x, plotarea, plot); var y = plot.axisY.getCoord(data[i].y, plotarea, plot); if (i == 0) { cmd.push("M"); } else { cmd.push("L"); } cmd.push(x + "," + y); var c = document.createElementNS(dojo.svg.xmlns.svg, "circle"); c.setAttribute("cx", x); c.setAttribute("cy", y); c.setAttribute("r", "3"); c.setAttribute("fill", data[i].series.color); c.setAttribute("fill-opacity", "0.6"); c.setAttribute("stroke-width", "1"); c.setAttribute("stroke-opacity", "0.85"); line.appendChild(c); if (applyTo) { applyTo(c, data[i].src); } } cmd.push("L"); cmd.push(x + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)); cmd.push("L"); cmd.push(plot.axisX.getCoord(data[0].x, plotarea, plot) + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)); cmd.push("Z"); path.setAttribute("d", cmd.join(" ")); return line; }, CurvedArea:function (data, plotarea, plot, applyTo) { var tension = 3; var area = plotarea.getArea(); var line = document.createElementNS(dojo.svg.xmlns.svg, "g"); if (data.length == 0) { return line; } var path = document.createElementNS(dojo.svg.xmlns.svg, "path"); line.appendChild(path); path.setAttribute("fill", data[0].series.color); path.setAttribute("fill-opacity", "0.4"); path.setAttribute("stroke", data[0].series.color); path.setAttribute("stroke-width", "1"); path.setAttribute("stroke-opacity", "0.85"); if (data[0].series.label != null) { path.setAttribute("title", data[0].series.label); } var cmd = []; for (var i = 0; i < data.length; i++) { var x = plot.axisX.getCoord(data[i].x, plotarea, plot); var y = plot.axisY.getCoord(data[i].y, plotarea, plot); var dx = area.left + 1; var dy = area.bottom; if (i > 0) { dx = x - plot.axisX.getCoord(data[i - 1].x, plotarea, plot); dy = plot.axisY.getCoord(data[i - 1].y, plotarea, plot); } if (i == 0) { cmd.push("M"); } else { cmd.push("C"); var cx = x - (tension - 1) * (dx / tension); cmd.push(cx + "," + dy); cx = x - (dx / tension); cmd.push(cx + "," + y); } cmd.push(x + "," + y); var c = document.createElementNS(dojo.svg.xmlns.svg, "circle"); c.setAttribute("cx", x); c.setAttribute("cy", y); c.setAttribute("r", "3"); c.setAttribute("fill", data[i].series.color); c.setAttribute("fill-opacity", "0.6"); c.setAttribute("stroke-width", "1"); c.setAttribute("stroke-opacity", "0.85"); line.appendChild(c); if (applyTo) { applyTo(c, data[i].src); } } cmd.push("L"); cmd.push(x + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)); cmd.push("L"); cmd.push(plot.axisX.getCoord(data[0].x, plotarea, plot) + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)); cmd.push("Z"); path.setAttribute("d", cmd.join(" ")); return line; }, HighLow:function (data, plotarea, plot, applyTo) { var area = plotarea.getArea(); var group = document.createElementNS(dojo.svg.xmlns.svg, "g"); var n = data.length; var part = ((area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower)) / 4; var w = part * 2; for (var i = 0; i < n; i++) { var high = data[i].high; var low = data[i].low; if (low > high) { var t = low; low = high; high = t; } var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2); var y = plot.axisY.getCoord(high, plotarea, plot); var h = plot.axisY.getCoord(low, plotarea, plot) - y; var bar = document.createElementNS(dojo.svg.xmlns.svg, "rect"); bar.setAttribute("fill", data[i].series.color); bar.setAttribute("stroke-width", "0"); bar.setAttribute("x", x); bar.setAttribute("y", y); bar.setAttribute("width", w); bar.setAttribute("height", h); bar.setAttribute("fill-opacity", "0.6"); if (applyTo) { applyTo(bar, data[i].src); } group.appendChild(bar); } return group; }, HighLowClose:function (data, plotarea, plot, applyTo) { var area = plotarea.getArea(); var group = document.createElementNS(dojo.svg.xmlns.svg, "g"); var n = data.length; var part = ((area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower)) / 4; var w = part * 2; for (var i = 0; i < n; i++) { var high = data[i].high; var low = data[i].low; if (low > high) { var t = low; low = high; high = t; } var c = data[i].close; var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2); var y = plot.axisY.getCoord(high, plotarea, plot); var h = plot.axisY.getCoord(low, plotarea, plot) - y; var close = plot.axisY.getCoord(c, plotarea, plot); var g = document.createElementNS(dojo.svg.xmlns.svg, "g"); var bar = document.createElementNS(dojo.svg.xmlns.svg, "rect"); bar.setAttribute("fill", data[i].series.color); bar.setAttribute("stroke-width", "0"); bar.setAttribute("x", x); bar.setAttribute("y", y); bar.setAttribute("width", w); bar.setAttribute("height", h); bar.setAttribute("fill-opacity", "0.6"); g.appendChild(bar); var line = document.createElementNS(dojo.svg.xmlns.svg, "line"); line.setAttribute("x1", x); line.setAttribute("x2", x + w + (part * 2)); line.setAttribute("y1", close); line.setAttribute("y2", close); line.setAttribute("style", "stroke:" + data[i].series.color + ";stroke-width:1px;stroke-opacity:0.6;"); g.appendChild(line); if (applyTo) { applyTo(g, data[i].src); } group.appendChild(g); } return group; }, HighLowOpenClose:function (data, plotarea, plot, applyTo) { var area = plotarea.getArea(); var group = document.createElementNS(dojo.svg.xmlns.svg, "g"); var n = data.length; var part = ((area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower)) / 4; var w = part * 2; for (var i = 0; i < n; i++) { var high = data[i].high; var low = data[i].low; if (low > high) { var t = low; low = high; high = t; } var o = data[i].open; var c = data[i].close; var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2); var y = plot.axisY.getCoord(high, plotarea, plot); var h = plot.axisY.getCoord(low, plotarea, plot) - y; var open = plot.axisY.getCoord(o, plotarea, plot); var close = plot.axisY.getCoord(c, plotarea, plot); var g = document.createElementNS(dojo.svg.xmlns.svg, "g"); var bar = document.createElementNS(dojo.svg.xmlns.svg, "rect"); bar.setAttribute("fill", data[i].series.color); bar.setAttribute("stroke-width", "0"); bar.setAttribute("x", x); bar.setAttribute("y", y); bar.setAttribute("width", w); bar.setAttribute("height", h); bar.setAttribute("fill-opacity", "0.6"); g.appendChild(bar); var line = document.createElementNS(dojo.svg.xmlns.svg, "line"); line.setAttribute("x1", x - (part * 2)); line.setAttribute("x2", x + w); line.setAttribute("y1", open); line.setAttribute("y2", open); line.setAttribute("style", "stroke:" + data[i].series.color + ";stroke-width:1px;stroke-opacity:0.6;"); g.appendChild(line); var line = document.createElementNS(dojo.svg.xmlns.svg, "line"); line.setAttribute("x1", x); line.setAttribute("x2", x + w + (part * 2)); line.setAttribute("y1", close); line.setAttribute("y2", close); line.setAttribute("style", "stroke:" + data[i].series.color + ";stroke-width:1px;stroke-opacity:0.6;"); g.appendChild(line); if (applyTo) { applyTo(g, data[i].src); } group.appendChild(g); } return group; }, Scatter:function (data, plotarea, plot, applyTo) { var r = 7; var group = document.createElementNS(dojo.svg.xmlns.svg, "g"); for (var i = 0; i < data.length; i++) { var x = plot.axisX.getCoord(data[i].x, plotarea, plot); var y = plot.axisY.getCoord(data[i].y, plotarea, plot); var point = document.createElementNS(dojo.svg.xmlns.svg, "path"); point.setAttribute("fill", data[i].series.color); point.setAttribute("stroke-width", "0"); point.setAttribute("d", "M " + x + "," + (y - r) + " " + "Q " + x + "," + y + " " + (x + r) + "," + y + " " + "Q " + x + "," + y + " " + x + "," + (y + r) + " " + "Q " + x + "," + y + " " + (x - r) + "," + y + " " + "Q " + x + "," + y + " " + x + "," + (y - r) + " " + "Z"); if (applyTo) { applyTo(point, data[i].src); } group.appendChild(point); } return group; }, Bubble:function (data, plotarea, plot, applyTo) { var group = document.createElementNS(dojo.svg.xmlns.svg, "g"); var sizeFactor = 1; for (var i = 0; i < data.length; i++) { var x = plot.axisX.getCoord(data[i].x, plotarea, plot); var y = plot.axisY.getCoord(data[i].y, plotarea, plot); if (i == 0) { var raw = data[i].size; var dy = plot.axisY.getCoord(data[i].y + raw, plotarea, plot) - y; sizeFactor = dy / raw; } if (sizeFactor < 1) { sizeFactor = 1; } var point = document.createElementNS(dojo.svg.xmlns.svg, "circle"); point.setAttribute("fill", data[i].series.color); point.setAttribute("fill-opacity", "0.8"); point.setAttribute("stroke", data[i].series.color); point.setAttribute("stroke-width", "1"); point.setAttribute("cx", x); point.setAttribute("cy", y); point.setAttribute("r", (data[i].size / 2) * sizeFactor); if (applyTo) { applyTo(point, data[i].src); } group.appendChild(point); } return group; }}); dojo.charting.Plotters["Default"] = dojo.charting.Plotters.Line; } }});

__CPAN_FILE__ src/charting/svg/Axis.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.charting.svg.Axis"], ["require", "dojo.lang.common"]], definePackage:function (dojo) { dojo.provide("dojo.charting.svg.Axis"); dojo.require("dojo.lang.common"); if (dojo.render.svg.capable) { dojo.extend(dojo.charting.Axis, {renderLines:function (plotArea, plot, plane) { if (this.nodes.lines) { while (this.nodes.lines.childNodes.length > 0) { this.nodes.lines.removeChild(this.nodes.lines.childNodes[0]); } if (this.nodes.lines.parentNode) { this.nodes.lines.parentNode.removeChild(this.nodes.lines); this.nodes.lines = null; } } var area = plotArea.getArea(); var g = this.nodes.lines = document.createElementNS(dojo.svg.xmlns.svg, "g"); g.setAttribute("id", this.getId() + "-lines"); for (var i = 0; i < this._labels.length; i++) { if (this._labels[i].value == this.origin) { continue; } var v = this.getCoord(this._labels[i].value, plotArea, plot); var l = document.createElementNS(dojo.svg.xmlns.svg, "line"); l.setAttribute("style", "stroke:#999;stroke-width:1px;stroke-dasharray:1,4;"); if (plane == "x") { l.setAttribute("y1", area.top); l.setAttribute("y2", area.bottom); l.setAttribute("x1", v); l.setAttribute("x2", v); } else { if (plane == "y") { l.setAttribute("y1", v); l.setAttribute("y2", v); l.setAttribute("x1", area.left); l.setAttribute("x2", area.right); } } g.appendChild(l); } return g; }, renderTicks:function (plotArea, plot, plane, coord) { if (this.nodes.ticks) { while (this.nodes.ticks.childNodes.length > 0) { this.nodes.ticks.removeChild(this.nodes.ticks.childNodes[0]); } if (this.nodes.ticks.parentNode) { this.nodes.ticks.parentNode.removeChild(this.nodes.ticks); this.nodes.ticks = null; } } var g = this.nodes.ticks = document.createElementNS(dojo.svg.xmlns.svg, "g"); g.setAttribute("id", this.getId() + "-ticks"); for (var i = 0; i < this._labels.length; i++) { var v = this.getCoord(this._labels[i].value, plotArea, plot); var l = document.createElementNS(dojo.svg.xmlns.svg, "line"); l.setAttribute("style", "stroke:#000;stroke-width:1pt;"); if (plane == "x") { l.setAttribute("y1", coord); l.setAttribute("y2", coord + 3); l.setAttribute("x1", v); l.setAttribute("x2", v); } else { if (plane == "y") { l.setAttribute("y1", v); l.setAttribute("y2", v); l.setAttribute("x1", coord - 2); l.setAttribute("x2", coord + 2); } } g.appendChild(l); } return g; }, renderLabels:function (plotArea, plot, plane, coord, textSize, anchor) { function createLabel(label, x, y, textSize, anchor) { var text = document.createElementNS(dojo.svg.xmlns.svg, "text"); text.setAttribute("x", x); text.setAttribute("y", (plane == "x" ? y : y + 2)); text.setAttribute("style", "text-anchor:" + anchor + ";font-family:sans-serif;font-size:" + textSize + "px;fill:#000;"); text.appendChild(document.createTextNode(label)); return text; } if (this.nodes.labels) { while (this.nodes.labels.childNodes.length > 0) { this.nodes.labels.removeChild(this.nodes.labels.childNodes[0]); } if (this.nodes.labels.parentNode) { this.nodes.labels.parentNode.removeChild(this.nodes.labels); this.nodes.labels = null; } } var g = this.nodes.labels = document.createElementNS(dojo.svg.xmlns.svg, "g"); g.setAttribute("id", this.getId() + "-labels"); for (var i = 0; i < this._labels.length; i++) { var v = this.getCoord(this._labels[i].value, plotArea, plot); if (plane == "x") { g.appendChild(createLabel(this._labels[i].label, v, coord, textSize, anchor)); } else { if (plane == "y") { g.appendChild(createLabel(this._labels[i].label, coord, v, textSize, anchor)); } } } return g; }, render:function (plotArea, plot, drawAgainst, plane) { if (!this._rerender && this.nodes.main) { return this.nodes.main; } this._rerender = false; var area = plotArea.getArea(); var stroke = 1; var style = "stroke:#000;stroke-width:" + stroke + "px;"; var textSize = 10; var coord = drawAgainst.getCoord(this.origin, plotArea, plot); this.nodes.main = document.createElementNS(dojo.svg.xmlns.svg, "g"); var g = this.nodes.main; g.setAttribute("id", this.getId()); var line = this.nodes.axis = document.createElementNS(dojo.svg.xmlns.svg, "line"); if (plane == "x") { line.setAttribute("y1", coord); line.setAttribute("y2", coord); line.setAttribute("x1", area.left - stroke); line.setAttribute("x2", area.right + stroke); line.setAttribute("style", style); var y = coord + textSize + 2; if (this.showLines) { g.appendChild(this.renderLines(plotArea, plot, plane, y)); } if (this.showTicks) { g.appendChild(this.renderTicks(plotArea, plot, plane, coord)); } if (this.showLabels) { g.appendChild(this.renderLabels(plotArea, plot, plane, y, textSize, "middle")); } if (this.showLabel && this.label) { var x = plotArea.size.width / 2; var text = document.createElementNS(dojo.svg.xmlns.svg, "text"); text.setAttribute("x", x); text.setAttribute("y", (coord + (textSize * 2) + (textSize / 2))); text.setAttribute("style", "text-anchor:middle;font-family:sans-serif;font-weight:bold;font-size:" + (textSize + 2) + "px;fill:#000;"); text.appendChild(document.createTextNode(this.label)); g.appendChild(text); } } else { line.setAttribute("x1", coord); line.setAttribute("x2", coord); line.setAttribute("y1", area.top); line.setAttribute("y2", area.bottom); line.setAttribute("style", style); var isMax = this.origin == drawAgainst.range.upper; var x = coord + (isMax ? 4 : -4); var anchor = isMax ? "start" : "end"; if (this.showLines) { g.appendChild(this.renderLines(plotArea, plot, plane, x)); } if (this.showTicks) { g.appendChild(this.renderTicks(plotArea, plot, plane, coord)); } if (this.showLabels) { g.appendChild(this.renderLabels(plotArea, plot, plane, x, textSize, anchor)); } if (this.showLabel && this.label) { var x = isMax ? (coord + (textSize * 2) + (textSize / 2)) : (coord - (textSize * 4)); var y = plotArea.size.height / 2; var text = document.createElementNS(dojo.svg.xmlns.svg, "text"); text.setAttribute("x", x); text.setAttribute("y", y); text.setAttribute("transform", "rotate(90, " + x + ", " + y + ")"); text.setAttribute("style", "text-anchor:middle;font-family:sans-serif;font-weight:bold;font-size:" + (textSize + 2) + "px;fill:#000;"); text.appendChild(document.createTextNode(this.label)); g.appendChild(text); } } g.appendChild(line); return g; }}); } }});

__CPAN_FILE__ src/charting/svg/PlotArea.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.charting.svg.PlotArea"], ["require", "dojo.lang.common"], ["require", "dojo.svg"]], definePackage:function (dojo) { dojo.provide("dojo.charting.svg.PlotArea"); dojo.require("dojo.lang.common"); if (dojo.render.svg.capable) { dojo.require("dojo.svg"); dojo.extend(dojo.charting.PlotArea, {resize:function () { var area = this.getArea(); this.nodes.area.setAttribute("width", this.size.width); this.nodes.area.setAttribute("height", this.size.height); var rect = this.nodes.area.getElementsByTagName("rect")[0]; rect.setAttribute("x", area.left); rect.setAttribute("y", area.top); rect.setAttribute("width", area.right - area.left); rect.setAttribute("height", area.bottom - area.top); this.nodes.background.setAttribute("width", this.size.width); this.nodes.background.setAttribute("height", this.size.height); if (this.nodes.plots) { this.nodes.area.removeChild(this.nodes.plots); this.nodes.plots = null; } this.nodes.plots = document.createElementNS(dojo.svg.xmlns.svg, "g"); this.nodes.plots.setAttribute("id", this.getId() + "-plots"); this.nodes.plots.setAttribute("style", "clip-path:url(#" + this.getId() + "-clip);"); this.nodes.area.appendChild(this.nodes.plots); for (var i = 0; i < this.plots.length; i++) { this.nodes.plots.appendChild(this.initializePlot(this.plots[i])); } if (this.nodes.axes) { this.nodes.area.removeChild(this.nodes.axes); this.nodes.axes = null; } this.nodes.axes = document.createElementNS(dojo.svg.xmlns.svg, "g"); this.nodes.axes.setAttribute("id", this.getId() + "-axes"); this.nodes.area.appendChild(this.nodes.axes); var axes = this.getAxes(); for (var p in axes) { var obj = axes[p]; this.nodes.axes.appendChild(obj.axis.initialize(this, obj.plot, obj.drawAgainst, obj.plane)); } }, initializePlot:function (plot) { plot.destroy(); plot.dataNode = document.createElementNS(dojo.svg.xmlns.svg, "g"); plot.dataNode.setAttribute("id", plot.getId()); return plot.dataNode; }, initialize:function () { this.destroy(); this.nodes.main = document.createElement("div"); this.nodes.area = document.createElementNS(dojo.svg.xmlns.svg, "svg"); this.nodes.area.setAttribute("id", this.getId()); this.nodes.main.appendChild(this.nodes.area); var defs = document.createElementNS(dojo.svg.xmlns.svg, "defs"); var clip = document.createElementNS(dojo.svg.xmlns.svg, "clipPath"); clip.setAttribute("id", this.getId() + "-clip"); var rect = document.createElementNS(dojo.svg.xmlns.svg, "rect"); clip.appendChild(rect); defs.appendChild(clip); this.nodes.area.appendChild(defs); this.nodes.background = document.createElementNS(dojo.svg.xmlns.svg, "rect"); this.nodes.background.setAttribute("id", this.getId() + "-background"); this.nodes.background.setAttribute("fill", "#fff"); this.nodes.area.appendChild(this.nodes.background); this.resize(); return this.nodes.main; }}); } }});

__CPAN_FILE__ src/charting/svg/Plotters.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.charting.svg.Plotters"); dojo.require("dojo.lang.common"); if (dojo.render.svg.capable) { dojo.require("dojo.svg"); dojo.mixin(dojo.charting.Plotters, {Bar:function (plotarea, plot, kwArgs, applyTo) { var area = plotarea.getArea(); var group = document.createElementNS(dojo.svg.xmlns.svg, "g"); var n = plot.series.length; var data = []; for (var i = 0; i < n; i++) { var tmp = plot.series[i].data.evaluate(kwArgs); data.push(tmp); } var space = 8; var nPoints = data[0].length; if (nPoints == 0) { return group; } var width = ((area.right - area.left) - (space * (nPoints - 1))) / nPoints; var barWidth = width / n; var yOrigin = plot.axisY.getCoord(plot.axisX.origin, plotarea, plot); for (var i = 0; i < nPoints; i++) { var xStart = area.left + (width * i) + (space * i); for (var j = 0; j < n; j++) { var value = data[j][i].y; var yA = yOrigin; var x = xStart + (barWidth * j); var y = plot.axisY.getCoord(value, plotarea, plot); var h = Math.abs(yA - y); if (value < plot.axisX.origin) { yA = y; y = yOrigin; } var bar = document.createElementNS(dojo.svg.xmlns.svg, "rect"); bar.setAttribute("fill", data[j][i].series.color); bar.setAttribute("stroke-width", "0"); bar.setAttribute("x", x); bar.setAttribute("y", y); bar.setAttribute("width", barWidth); bar.setAttribute("height", h); bar.setAttribute("fill-opacity", "0.6"); if (applyTo) { applyTo(bar, data[j][i].src); } group.appendChild(bar); } } return group; }, HorizontalBar:function (plotarea, plot, kwArgs, applyTo) { var area = plotarea.getArea(); var group = document.createElementNS(dojo.svg.xmlns.svg, "g"); var n = plot.series.length; var data = []; for (var i = 0; i < n; i++) { var tmp = plot.series[i].data.evaluate(kwArgs); data.push(tmp); } var space = 6; var nPoints = data[0].length; if (nPoints == 0) { return group; } var h = ((area.bottom - area.top) - (space * (nPoints - 1))) / nPoints; var barH = h / n; var xOrigin = plot.axisX.getCoord(0, plotarea, plot); for (var i = 0; i < nPoints; i++) { var yStart = area.top + (h * i) + (space * i); for (var j = 0; j < n; j++) { var value = data[j][i].y; var y = yStart + (barH * j); var xA = xOrigin; var x = plot.axisX.getCoord(value, plotarea, plot); var w = Math.abs(x - xA); if (value > 0) { x = xOrigin; } var bar = document.createElementNS(dojo.svg.xmlns.svg, "rect"); bar.setAttribute("fill", data[j][i].series.color); bar.setAttribute("stroke-width", "0"); bar.setAttribute("x", xA); bar.setAttribute("y", y); bar.setAttribute("width", w); bar.setAttribute("height", barH); bar.setAttribute("fill-opacity", "0.6"); if (applyTo) { applyTo(bar, data[j][i].src); } group.appendChild(bar); } } return group; }, Gantt:function (plotarea, plot, kwArgs, applyTo) { var area = plotarea.getArea(); var group = document.createElementNS(dojo.svg.xmlns.svg, "g"); var n = plot.series.length; var data = []; for (var i = 0; i < n; i++) { var tmp = plot.series[i].data.evaluate(kwArgs); data.push(tmp); } var space = 2; var nPoints = data[0].length; if (nPoints == 0) { return group; } var h = ((area.bottom - area.top) - (space * (nPoints - 1))) / nPoints; var barH = h / n; for (var i = 0; i < nPoints; i++) { var yStart = area.top + (h * i) + (space * i); for (var j = 0; j < n; j++) { var high = data[j][i].high; var low = data[j][i].low; if (low > high) { var t = high; high = low; low = t; } var x = plot.axisX.getCoord(low, plotarea, plot); var w = plot.axisX.getCoord(high, plotarea, plot) - x; var y = yStart + (barH * j); var bar = document.createElementNS(dojo.svg.xmlns.svg, "rect"); bar.setAttribute("fill", data[j][i].series.color); bar.setAttribute("stroke-width", "0"); bar.setAttribute("x", x); bar.setAttribute("y", y); bar.setAttribute("width", w); bar.setAttribute("height", barH); bar.setAttribute("fill-opacity", "0.6"); if (applyTo) { applyTo(bar, data[j][i].src); } group.appendChild(bar); } } return group; }, StackedArea:function (plotarea, plot, kwArgs, applyTo) { var area = plotarea.getArea(); var group = document.createElementNS(dojo.svg.xmlns.svg, "g"); var n = plot.series.length; var data = []; var totals = []; for (var i = 0; i < n; i++) { var tmp = plot.series[i].data.evaluate(kwArgs); for (var j = 0; j < tmp.length; j++) { if (i == 0) { totals.push(tmp[j].y); } else { totals[j] += tmp[j].y; } tmp[j].y = totals[j]; } data.push(tmp); } for (var i = n - 1; i >= 0; i--) { var path = document.createElementNS(dojo.svg.xmlns.svg, "path"); path.setAttribute("fill", data[i][0].series.color); path.setAttribute("fill-opacity", "0.4"); path.setAttribute("stroke", data[i][0].series.color); path.setAttribute("stroke-width", "1"); path.setAttribute("stroke-opacity", "0.85"); var cmd = []; var r = 3; for (var j = 0; j < data[i].length; j++) { var values = data[i]; var x = plot.axisX.getCoord(values[j].x, plotarea, plot); var y = plot.axisY.getCoord(values[j].y, plotarea, plot); if (j == 0) { cmd.push("M"); } else { cmd.push("L"); } cmd.push(x + "," + y); var c = document.createElementNS(dojo.svg.xmlns.svg, "circle"); c.setAttribute("cx", x); c.setAttribute("cy", y); c.setAttribute("r", "3"); c.setAttribute("fill", values[j].series.color); c.setAttribute("fill-opacity", "0.6"); c.setAttribute("stroke-width", "1"); c.setAttribute("stroke-opacity", "0.85"); group.appendChild(c); if (applyTo) { applyTo(c, data[i].src); } } if (i == 0) { cmd.push("L"); cmd.push(x + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)); cmd.push("L"); cmd.push(plot.axisX.getCoord(data[0][0].x, plotarea, plot) + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)); cmd.push("Z"); } else { var values = data[i - 1]; cmd.push("L"); cmd.push(x + "," + Math.round(plot.axisY.getCoord(values[values.length - 1].y, plotarea, plot))); for (var j = values.length - 2; j >= 0; j--) { var x = plot.axisX.getCoord(values[j].x, plotarea, plot); var y = plot.axisY.getCoord(values[j].y, plotarea, plot); cmd.push("L"); cmd.push(x + "," + y); } } path.setAttribute("d", cmd.join(" ") + " Z"); group.appendChild(path); } return group; }, StackedCurvedArea:function (plotarea, plot, kwArgs, applyTo) { var tension = 3; var area = plotarea.getArea(); var group = document.createElementNS(dojo.svg.xmlns.svg, "g"); var n = plot.series.length; var data = []; var totals = []; for (var i = 0; i < n; i++) { var tmp = plot.series[i].data.evaluate(kwArgs); for (var j = 0; j < tmp.length; j++) { if (i == 0) { totals.push(tmp[j].y); } else { totals[j] += tmp[j].y; } tmp[j].y = totals[j]; } data.push(tmp); } for (var i = n - 1; i >= 0; i--) { var path = document.createElementNS(dojo.svg.xmlns.svg, "path"); path.setAttribute("fill", data[i][0].series.color); path.setAttribute("fill-opacity", "0.4"); path.setAttribute("stroke", data[i][0].series.color); path.setAttribute("stroke-width", "1"); path.setAttribute("stroke-opacity", "0.85"); var cmd = []; var r = 3; for (var j = 0; j < data[i].length; j++) { var values = data[i]; var x = plot.axisX.getCoord(values[j].x, plotarea, plot); var y = plot.axisY.getCoord(values[j].y, plotarea, plot); var dx = area.left + 1; var dy = area.bottom; if (j > 0) { dx = x - plot.axisX.getCoord(values[j - 1].x, plotarea, plot); dy = plot.axisY.getCoord(values[j - 1].y, plotarea, plot); } if (j == 0) { cmd.push("M"); } else { cmd.push("C"); var cx = x - (tension - 1) * (dx / tension); cmd.push(cx + "," + dy); cx = x - (dx / tension); cmd.push(cx + "," + y); } cmd.push(x + "," + y); var c = document.createElementNS(dojo.svg.xmlns.svg, "circle"); c.setAttribute("cx", x); c.setAttribute("cy", y); c.setAttribute("r", "3"); c.setAttribute("fill", values[j].series.color); c.setAttribute("fill-opacity", "0.6"); c.setAttribute("stroke-width", "1"); c.setAttribute("stroke-opacity", "0.85"); group.appendChild(c); if (applyTo) { applyTo(c, data[i].src); } } if (i == 0) { cmd.push("L"); cmd.push(x + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)); cmd.push("L"); cmd.push(plot.axisX.getCoord(data[0][0].x, plotarea, plot) + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)); cmd.push("Z"); } else { var values = data[i - 1]; cmd.push("L"); cmd.push(x + "," + Math.round(plot.axisY.getCoord(values[values.length - 1].y, plotarea, plot))); for (var j = values.length - 2; j >= 0; j--) { var x = plot.axisX.getCoord(values[j].x, plotarea, plot); var y = plot.axisY.getCoord(values[j].y, plotarea, plot); var dx = x - plot.axisX.getCoord(values[j + 1].x, plotarea, plot); var dy = plot.axisY.getCoord(values[j + 1].y, plotarea, plot); cmd.push("C"); var cx = x - (tension - 1) * (dx / tension); cmd.push(cx + "," + dy); cx = x - (dx / tension); cmd.push(cx + "," + y); cmd.push(x + "," + y); } } path.setAttribute("d", cmd.join(" ") + " Z"); group.appendChild(path); } return group; }, DataBar:function (data, plotarea, plot, applyTo) { var area = plotarea.getArea(); var group = document.createElementNS(dojo.svg.xmlns.svg, "g"); var n = data.length; var w = (area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower); var yOrigin = plot.axisY.getCoord(plot.axisX.origin, plotarea, plot); for (var i = 0; i < n; i++) { var value = data[i].y; var yA = yOrigin; var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2); var y = plot.axisY.getCoord(value, plotarea, plot); var h = Math.abs(yA - y); if (value < plot.axisX.origin) { yA = y; y = yOrigin; } var bar = document.createElementNS(dojo.svg.xmlns.svg, "rect"); bar.setAttribute("fill", data[i].series.color); bar.setAttribute("stroke-width", "0"); bar.setAttribute("x", x); bar.setAttribute("y", y); bar.setAttribute("width", w); bar.setAttribute("height", h); bar.setAttribute("fill-opacity", "0.6"); if (applyTo) { applyTo(bar, data[i].src); } group.appendChild(bar); } return group; }, Line:function (data, plotarea, plot, applyTo) { var area = plotarea.getArea(); var line = document.createElementNS(dojo.svg.xmlns.svg, "g"); if (data.length == 0) { return line; } var path = document.createElementNS(dojo.svg.xmlns.svg, "path"); line.appendChild(path); path.setAttribute("fill", "none"); path.setAttribute("stroke", data[0].series.color); path.setAttribute("stroke-width", "2"); path.setAttribute("stroke-opacity", "0.85"); if (data[0].series.label != null) { path.setAttribute("title", data[0].series.label); } var cmd = []; for (var i = 0; i < data.length; i++) { var x = plot.axisX.getCoord(data[i].x, plotarea, plot); var y = plot.axisY.getCoord(data[i].y, plotarea, plot); if (i == 0) { cmd.push("M"); } else { cmd.push("L"); } cmd.push(x + "," + y); var c = document.createElementNS(dojo.svg.xmlns.svg, "circle"); c.setAttribute("cx", x); c.setAttribute("cy", y); c.setAttribute("r", "3"); c.setAttribute("fill", data[i].series.color); c.setAttribute("fill-opacity", "0.6"); c.setAttribute("stroke-width", "1"); c.setAttribute("stroke-opacity", "0.85"); line.appendChild(c); if (applyTo) { applyTo(c, data[i].src); } } path.setAttribute("d", cmd.join(" ")); return line; }, CurvedLine:function (data, plotarea, plot, applyTo) { var tension = 3; var area = plotarea.getArea(); var line = document.createElementNS(dojo.svg.xmlns.svg, "g"); if (data.length == 0) { return line; } var path = document.createElementNS(dojo.svg.xmlns.svg, "path"); line.appendChild(path); path.setAttribute("fill", "none"); path.setAttribute("stroke", data[0].series.color); path.setAttribute("stroke-width", "2"); path.setAttribute("stroke-opacity", "0.85"); if (data[0].series.label != null) { path.setAttribute("title", data[0].series.label); } var cmd = []; for (var i = 0; i < data.length; i++) { var x = plot.axisX.getCoord(data[i].x, plotarea, plot); var y = plot.axisY.getCoord(data[i].y, plotarea, plot); var dx = area.left + 1; var dy = area.bottom; if (i > 0) { dx = x - plot.axisX.getCoord(data[i - 1].x, plotarea, plot); dy = plot.axisY.getCoord(data[i - 1].y, plotarea, plot); } if (i == 0) { cmd.push("M"); } else { cmd.push("C"); var cx = x - (tension - 1) * (dx / tension); cmd.push(cx + "," + dy); cx = x - (dx / tension); cmd.push(cx + "," + y); } cmd.push(x + "," + y); var c = document.createElementNS(dojo.svg.xmlns.svg, "circle"); c.setAttribute("cx", x); c.setAttribute("cy", y); c.setAttribute("r", "3"); c.setAttribute("fill", data[i].series.color); c.setAttribute("fill-opacity", "0.6"); c.setAttribute("stroke-width", "1"); c.setAttribute("stroke-opacity", "0.85"); line.appendChild(c); if (applyTo) { applyTo(c, data[i].src); } } path.setAttribute("d", cmd.join(" ")); return line; }, Area:function (data, plotarea, plot, applyTo) { var area = plotarea.getArea(); var line = document.createElementNS(dojo.svg.xmlns.svg, "g"); if (data.length == 0) { return line; } var path = document.createElementNS(dojo.svg.xmlns.svg, "path"); line.appendChild(path); path.setAttribute("fill", data[0].series.color); path.setAttribute("fill-opacity", "0.4"); path.setAttribute("stroke", data[0].series.color); path.setAttribute("stroke-width", "1"); path.setAttribute("stroke-opacity", "0.85"); if (data[0].series.label != null) { path.setAttribute("title", data[0].series.label); } var cmd = []; for (var i = 0; i < data.length; i++) { var x = plot.axisX.getCoord(data[i].x, plotarea, plot); var y = plot.axisY.getCoord(data[i].y, plotarea, plot); if (i == 0) { cmd.push("M"); } else { cmd.push("L"); } cmd.push(x + "," + y); var c = document.createElementNS(dojo.svg.xmlns.svg, "circle"); c.setAttribute("cx", x); c.setAttribute("cy", y); c.setAttribute("r", "3"); c.setAttribute("fill", data[i].series.color); c.setAttribute("fill-opacity", "0.6"); c.setAttribute("stroke-width", "1"); c.setAttribute("stroke-opacity", "0.85"); line.appendChild(c); if (applyTo) { applyTo(c, data[i].src); } } cmd.push("L"); cmd.push(x + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)); cmd.push("L"); cmd.push(plot.axisX.getCoord(data[0].x, plotarea, plot) + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)); cmd.push("Z"); path.setAttribute("d", cmd.join(" ")); return line; }, CurvedArea:function (data, plotarea, plot, applyTo) { var tension = 3; var area = plotarea.getArea(); var line = document.createElementNS(dojo.svg.xmlns.svg, "g"); if (data.length == 0) { return line; } var path = document.createElementNS(dojo.svg.xmlns.svg, "path"); line.appendChild(path); path.setAttribute("fill", data[0].series.color); path.setAttribute("fill-opacity", "0.4"); path.setAttribute("stroke", data[0].series.color); path.setAttribute("stroke-width", "1"); path.setAttribute("stroke-opacity", "0.85"); if (data[0].series.label != null) { path.setAttribute("title", data[0].series.label); } var cmd = []; for (var i = 0; i < data.length; i++) { var x = plot.axisX.getCoord(data[i].x, plotarea, plot); var y = plot.axisY.getCoord(data[i].y, plotarea, plot); var dx = area.left + 1; var dy = area.bottom; if (i > 0) { dx = x - plot.axisX.getCoord(data[i - 1].x, plotarea, plot); dy = plot.axisY.getCoord(data[i - 1].y, plotarea, plot); } if (i == 0) { cmd.push("M"); } else { cmd.push("C"); var cx = x - (tension - 1) * (dx / tension); cmd.push(cx + "," + dy); cx = x - (dx / tension); cmd.push(cx + "," + y); } cmd.push(x + "," + y); var c = document.createElementNS(dojo.svg.xmlns.svg, "circle"); c.setAttribute("cx", x); c.setAttribute("cy", y); c.setAttribute("r", "3"); c.setAttribute("fill", data[i].series.color); c.setAttribute("fill-opacity", "0.6"); c.setAttribute("stroke-width", "1"); c.setAttribute("stroke-opacity", "0.85"); line.appendChild(c); if (applyTo) { applyTo(c, data[i].src); } } cmd.push("L"); cmd.push(x + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)); cmd.push("L"); cmd.push(plot.axisX.getCoord(data[0].x, plotarea, plot) + "," + plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)); cmd.push("Z"); path.setAttribute("d", cmd.join(" ")); return line; }, HighLow:function (data, plotarea, plot, applyTo) { var area = plotarea.getArea(); var group = document.createElementNS(dojo.svg.xmlns.svg, "g"); var n = data.length; var part = ((area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower)) / 4; var w = part * 2; for (var i = 0; i < n; i++) { var high = data[i].high; var low = data[i].low; if (low > high) { var t = low; low = high; high = t; } var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2); var y = plot.axisY.getCoord(high, plotarea, plot); var h = plot.axisY.getCoord(low, plotarea, plot) - y; var bar = document.createElementNS(dojo.svg.xmlns.svg, "rect"); bar.setAttribute("fill", data[i].series.color); bar.setAttribute("stroke-width", "0"); bar.setAttribute("x", x); bar.setAttribute("y", y); bar.setAttribute("width", w); bar.setAttribute("height", h); bar.setAttribute("fill-opacity", "0.6"); if (applyTo) { applyTo(bar, data[i].src); } group.appendChild(bar); } return group; }, HighLowClose:function (data, plotarea, plot, applyTo) { var area = plotarea.getArea(); var group = document.createElementNS(dojo.svg.xmlns.svg, "g"); var n = data.length; var part = ((area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower)) / 4; var w = part * 2; for (var i = 0; i < n; i++) { var high = data[i].high; var low = data[i].low; if (low > high) { var t = low; low = high; high = t; } var c = data[i].close; var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2); var y = plot.axisY.getCoord(high, plotarea, plot); var h = plot.axisY.getCoord(low, plotarea, plot) - y; var close = plot.axisY.getCoord(c, plotarea, plot); var g = document.createElementNS(dojo.svg.xmlns.svg, "g"); var bar = document.createElementNS(dojo.svg.xmlns.svg, "rect"); bar.setAttribute("fill", data[i].series.color); bar.setAttribute("stroke-width", "0"); bar.setAttribute("x", x); bar.setAttribute("y", y); bar.setAttribute("width", w); bar.setAttribute("height", h); bar.setAttribute("fill-opacity", "0.6"); g.appendChild(bar); var line = document.createElementNS(dojo.svg.xmlns.svg, "line"); line.setAttribute("x1", x); line.setAttribute("x2", x + w + (part * 2)); line.setAttribute("y1", close); line.setAttribute("y2", close); line.setAttribute("style", "stroke:" + data[i].series.color + ";stroke-width:1px;stroke-opacity:0.6;"); g.appendChild(line); if (applyTo) { applyTo(g, data[i].src); } group.appendChild(g); } return group; }, HighLowOpenClose:function (data, plotarea, plot, applyTo) { var area = plotarea.getArea(); var group = document.createElementNS(dojo.svg.xmlns.svg, "g"); var n = data.length; var part = ((area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower)) / 4; var w = part * 2; for (var i = 0; i < n; i++) { var high = data[i].high; var low = data[i].low; if (low > high) { var t = low; low = high; high = t; } var o = data[i].open; var c = data[i].close; var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2); var y = plot.axisY.getCoord(high, plotarea, plot); var h = plot.axisY.getCoord(low, plotarea, plot) - y; var open = plot.axisY.getCoord(o, plotarea, plot); var close = plot.axisY.getCoord(c, plotarea, plot); var g = document.createElementNS(dojo.svg.xmlns.svg, "g"); var bar = document.createElementNS(dojo.svg.xmlns.svg, "rect"); bar.setAttribute("fill", data[i].series.color); bar.setAttribute("stroke-width", "0"); bar.setAttribute("x", x); bar.setAttribute("y", y); bar.setAttribute("width", w); bar.setAttribute("height", h); bar.setAttribute("fill-opacity", "0.6"); g.appendChild(bar); var line = document.createElementNS(dojo.svg.xmlns.svg, "line"); line.setAttribute("x1", x - (part * 2)); line.setAttribute("x2", x + w); line.setAttribute("y1", open); line.setAttribute("y2", open); line.setAttribute("style", "stroke:" + data[i].series.color + ";stroke-width:1px;stroke-opacity:0.6;"); g.appendChild(line); var line = document.createElementNS(dojo.svg.xmlns.svg, "line"); line.setAttribute("x1", x); line.setAttribute("x2", x + w + (part * 2)); line.setAttribute("y1", close); line.setAttribute("y2", close); line.setAttribute("style", "stroke:" + data[i].series.color + ";stroke-width:1px;stroke-opacity:0.6;"); g.appendChild(line); if (applyTo) { applyTo(g, data[i].src); } group.appendChild(g); } return group; }, Scatter:function (data, plotarea, plot, applyTo) { var r = 7; var group = document.createElementNS(dojo.svg.xmlns.svg, "g"); for (var i = 0; i < data.length; i++) { var x = plot.axisX.getCoord(data[i].x, plotarea, plot); var y = plot.axisY.getCoord(data[i].y, plotarea, plot); var point = document.createElementNS(dojo.svg.xmlns.svg, "path"); point.setAttribute("fill", data[i].series.color); point.setAttribute("stroke-width", "0"); point.setAttribute("d", "M " + x + "," + (y - r) + " " + "Q " + x + "," + y + " " + (x + r) + "," + y + " " + "Q " + x + "," + y + " " + x + "," + (y + r) + " " + "Q " + x + "," + y + " " + (x - r) + "," + y + " " + "Q " + x + "," + y + " " + x + "," + (y - r) + " " + "Z"); if (applyTo) { applyTo(point, data[i].src); } group.appendChild(point); } return group; }, Bubble:function (data, plotarea, plot, applyTo) { var group = document.createElementNS(dojo.svg.xmlns.svg, "g"); var sizeFactor = 1; for (var i = 0; i < data.length; i++) { var x = plot.axisX.getCoord(data[i].x, plotarea, plot); var y = plot.axisY.getCoord(data[i].y, plotarea, plot); if (i == 0) { var raw = data[i].size; var dy = plot.axisY.getCoord(data[i].y + raw, plotarea, plot) - y; sizeFactor = dy / raw; } if (sizeFactor < 1) { sizeFactor = 1; } var point = document.createElementNS(dojo.svg.xmlns.svg, "circle"); point.setAttribute("fill", data[i].series.color); point.setAttribute("fill-opacity", "0.8"); point.setAttribute("stroke", data[i].series.color); point.setAttribute("stroke-width", "1"); point.setAttribute("cx", x); point.setAttribute("cy", y); point.setAttribute("r", (data[i].size / 2) * sizeFactor); if (applyTo) { applyTo(point, data[i].src); } group.appendChild(point); } return group; }}); dojo.charting.Plotters["Default"] = dojo.charting.Plotters.Line; }

__CPAN_FILE__ src/charting/svg/Axis.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.charting.svg.Axis"); dojo.require("dojo.lang.common"); if (dojo.render.svg.capable) { dojo.extend(dojo.charting.Axis, {renderLines:function (plotArea, plot, plane) { if (this.nodes.lines) { while (this.nodes.lines.childNodes.length > 0) { this.nodes.lines.removeChild(this.nodes.lines.childNodes[0]); } if (this.nodes.lines.parentNode) { this.nodes.lines.parentNode.removeChild(this.nodes.lines); this.nodes.lines = null; } } var area = plotArea.getArea(); var g = this.nodes.lines = document.createElementNS(dojo.svg.xmlns.svg, "g"); g.setAttribute("id", this.getId() + "-lines"); for (var i = 0; i < this._labels.length; i++) { if (this._labels[i].value == this.origin) { continue; } var v = this.getCoord(this._labels[i].value, plotArea, plot); var l = document.createElementNS(dojo.svg.xmlns.svg, "line"); l.setAttribute("style", "stroke:#999;stroke-width:1px;stroke-dasharray:1,4;"); if (plane == "x") { l.setAttribute("y1", area.top); l.setAttribute("y2", area.bottom); l.setAttribute("x1", v); l.setAttribute("x2", v); } else { if (plane == "y") { l.setAttribute("y1", v); l.setAttribute("y2", v); l.setAttribute("x1", area.left); l.setAttribute("x2", area.right); } } g.appendChild(l); } return g; }, renderTicks:function (plotArea, plot, plane, coord) { if (this.nodes.ticks) { while (this.nodes.ticks.childNodes.length > 0) { this.nodes.ticks.removeChild(this.nodes.ticks.childNodes[0]); } if (this.nodes.ticks.parentNode) { this.nodes.ticks.parentNode.removeChild(this.nodes.ticks); this.nodes.ticks = null; } } var g = this.nodes.ticks = document.createElementNS(dojo.svg.xmlns.svg, "g"); g.setAttribute("id", this.getId() + "-ticks"); for (var i = 0; i < this._labels.length; i++) { var v = this.getCoord(this._labels[i].value, plotArea, plot); var l = document.createElementNS(dojo.svg.xmlns.svg, "line"); l.setAttribute("style", "stroke:#000;stroke-width:1pt;"); if (plane == "x") { l.setAttribute("y1", coord); l.setAttribute("y2", coord + 3); l.setAttribute("x1", v); l.setAttribute("x2", v); } else { if (plane == "y") { l.setAttribute("y1", v); l.setAttribute("y2", v); l.setAttribute("x1", coord - 2); l.setAttribute("x2", coord + 2); } } g.appendChild(l); } return g; }, renderLabels:function (plotArea, plot, plane, coord, textSize, anchor) { function createLabel(label, x, y, textSize, anchor) { var text = document.createElementNS(dojo.svg.xmlns.svg, "text"); text.setAttribute("x", x); text.setAttribute("y", (plane == "x" ? y : y + 2)); text.setAttribute("style", "text-anchor:" + anchor + ";font-family:sans-serif;font-size:" + textSize + "px;fill:#000;"); text.appendChild(document.createTextNode(label)); return text; } if (this.nodes.labels) { while (this.nodes.labels.childNodes.length > 0) { this.nodes.labels.removeChild(this.nodes.labels.childNodes[0]); } if (this.nodes.labels.parentNode) { this.nodes.labels.parentNode.removeChild(this.nodes.labels); this.nodes.labels = null; } } var g = this.nodes.labels = document.createElementNS(dojo.svg.xmlns.svg, "g"); g.setAttribute("id", this.getId() + "-labels"); for (var i = 0; i < this._labels.length; i++) { var v = this.getCoord(this._labels[i].value, plotArea, plot); if (plane == "x") { g.appendChild(createLabel(this._labels[i].label, v, coord, textSize, anchor)); } else { if (plane == "y") { g.appendChild(createLabel(this._labels[i].label, coord, v, textSize, anchor)); } } } return g; }, render:function (plotArea, plot, drawAgainst, plane) { if (!this._rerender && this.nodes.main) { return this.nodes.main; } this._rerender = false; var area = plotArea.getArea(); var stroke = 1; var style = "stroke:#000;stroke-width:" + stroke + "px;"; var textSize = 10; var coord = drawAgainst.getCoord(this.origin, plotArea, plot); this.nodes.main = document.createElementNS(dojo.svg.xmlns.svg, "g"); var g = this.nodes.main; g.setAttribute("id", this.getId()); var line = this.nodes.axis = document.createElementNS(dojo.svg.xmlns.svg, "line"); if (plane == "x") { line.setAttribute("y1", coord); line.setAttribute("y2", coord); line.setAttribute("x1", area.left - stroke); line.setAttribute("x2", area.right + stroke); line.setAttribute("style", style); var y = coord + textSize + 2; if (this.showLines) { g.appendChild(this.renderLines(plotArea, plot, plane, y)); } if (this.showTicks) { g.appendChild(this.renderTicks(plotArea, plot, plane, coord)); } if (this.showLabels) { g.appendChild(this.renderLabels(plotArea, plot, plane, y, textSize, "middle")); } if (this.showLabel && this.label) { var x = plotArea.size.width / 2; var text = document.createElementNS(dojo.svg.xmlns.svg, "text"); text.setAttribute("x", x); text.setAttribute("y", (coord + (textSize * 2) + (textSize / 2))); text.setAttribute("style", "text-anchor:middle;font-family:sans-serif;font-weight:bold;font-size:" + (textSize + 2) + "px;fill:#000;"); text.appendChild(document.createTextNode(this.label)); g.appendChild(text); } } else { line.setAttribute("x1", coord); line.setAttribute("x2", coord); line.setAttribute("y1", area.top); line.setAttribute("y2", area.bottom); line.setAttribute("style", style); var isMax = this.origin == drawAgainst.range.upper; var x = coord + (isMax ? 4 : -4); var anchor = isMax ? "start" : "end"; if (this.showLines) { g.appendChild(this.renderLines(plotArea, plot, plane, x)); } if (this.showTicks) { g.appendChild(this.renderTicks(plotArea, plot, plane, coord)); } if (this.showLabels) { g.appendChild(this.renderLabels(plotArea, plot, plane, x, textSize, anchor)); } if (this.showLabel && this.label) { var x = isMax ? (coord + (textSize * 2) + (textSize / 2)) : (coord - (textSize * 4)); var y = plotArea.size.height / 2; var text = document.createElementNS(dojo.svg.xmlns.svg, "text"); text.setAttribute("x", x); text.setAttribute("y", y); text.setAttribute("transform", "rotate(90, " + x + ", " + y + ")"); text.setAttribute("style", "text-anchor:middle;font-family:sans-serif;font-weight:bold;font-size:" + (textSize + 2) + "px;fill:#000;"); text.appendChild(document.createTextNode(this.label)); g.appendChild(text); } } g.appendChild(line); return g; }}); }

__CPAN_DIR__ src/charting/vml __CPAN_FILE__ src/charting/vml/PlotArea.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.charting.vml.PlotArea"); dojo.require("dojo.lang.common"); if (dojo.render.vml.capable) { dojo.extend(dojo.charting.PlotArea, {resize:function () { var a = this.getArea(); this.nodes.area.style.width = this.size.width + "px"; this.nodes.area.style.height = this.size.height + "px"; this.nodes.background.style.width = this.size.width + "px"; this.nodes.background.style.height = this.size.height + "px"; this.nodes.plots.width = this.size.width + "px"; this.nodes.plots.height = this.size.height + "px"; this.nodes.plots.style.clip = "rect(" + a.top + " " + a.right + " " + a.bottom + " " + a.left + ")"; if (this.nodes.axes) { this.nodes.area.removeChild(this.nodes.axes); } var axes = this.nodes.axes = document.createElement("div"); axes.id = this.getId() + "-axes"; this.nodes.area.appendChild(axes); var ax = this.getAxes(); for (var p in ax) { var obj = ax[p]; axes.appendChild(obj.axis.initialize(this, obj.plot, obj.drawAgainst, obj.plane)); } }, initializePlot:function (plot) { plot.destroy(); plot.dataNode = document.createElement("div"); plot.dataNode.id = plot.getId(); return plot.dataNode; }, initialize:function () { this.destroy(); var main = this.nodes.main = document.createElement("div"); var area = this.nodes.area = document.createElement("div"); area.id = this.getId(); area.style.position = "absolute"; main.appendChild(area); var bg = this.nodes.background = document.createElement("div"); bg.id = this.getId() + "-background"; bg.style.position = "absolute"; bg.style.top = "0px"; bg.style.left = "0px"; bg.style.backgroundColor = "#fff"; area.appendChild(bg); var a = this.getArea(); var plots = this.nodes.plots = document.createElement("div"); plots.id = this.getId() + "-plots"; plots.style.position = "absolute"; plots.style.top = "0px"; plots.style.left = "0px"; area.appendChild(plots); for (var i = 0; i < this.plots.length; i++) { plots.appendChild(this.initializePlot(this.plots[i])); } this.resize(); return main; }}); }

__CPAN_FILE__ src/charting/vml/Plotters.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.charting.vml.Plotters"], ["require", "dojo.lang.common"]], definePackage:function (dojo) { dojo.provide("dojo.charting.vml.Plotters"); dojo.require("dojo.lang.common"); if (dojo.render.vml.capable) { dojo.mixin(dojo.charting.Plotters, {_group:function (plotarea) { var group = document.createElement("div"); group.style.position = "absolute"; group.style.top = "0px"; group.style.left = "0px"; group.style.width = plotarea.size.width + "px"; group.style.height = plotarea.size.height + "px"; return group; }, Bar:function (plotarea, plot, kwArgs, applyTo) { var area = plotarea.getArea(); var group = dojo.charting.Plotters._group(plotarea); var n = plot.series.length; var data = []; for (var i = 0; i < n; i++) { var tmp = plot.series[i].data.evaluate(kwArgs); data.push(tmp); } var space = 8; var nPoints = data[0].length; if (nPoints == 0) { return group; } var width = ((area.right - area.left) - (space * (nPoints - 1))) / nPoints; var barWidth = Math.round(width / n); var yOrigin = plot.axisY.getCoord(plot.axisX.origin, plotarea, plot); for (var i = 0; i < nPoints; i++) { var xStart = area.left + (width * i) + (space * i); for (var j = 0; j < n; j++) { var value = data[j][i].y; var yA = yOrigin; var x = xStart + (barWidth * j); var y = plot.axisY.getCoord(value, plotarea, plot); var h = Math.abs(yA - y); if (value < plot.axisX.origin) { yA = y; y = yOrigin; } var bar = document.createElement("v:rect"); bar.style.position = "absolute"; bar.style.top = y + 1 + "px"; bar.style.left = x + "px"; bar.style.width = barWidth + "px"; bar.style.height = h + "px"; bar.setAttribute("fillColor", data[j][i].series.color); bar.setAttribute("stroked", "false"); bar.style.antialias = "false"; var fill = document.createElement("v:fill"); fill.setAttribute("opacity", "0.6"); bar.appendChild(fill); if (applyTo) { applyTo(bar, data[j][i].src); } group.appendChild(bar); } } return group; }, HorizontalBar:function (plotarea, plot, kwArgs, applyTo) { var area = plotarea.getArea(); var group = dojo.charting.Plotters._group(plotarea); var n = plot.series.length; var data = []; for (var i = 0; i < n; i++) { var tmp = plot.series[i].data.evaluate(kwArgs); data.push(tmp); } var space = 6; var nPoints = data[0].length; if (nPoints == 0) { return group; } var h = ((area.bottom - area.top) - (space * (nPoints - 1))) / nPoints; var barH = h / n; var xOrigin = plot.axisX.getCoord(0, plotarea, plot); for (var i = 0; i < nPoints; i++) { var yStart = area.top + (h * i) + (space * i); for (var j = 0; j < n; j++) { var value = data[j][i].y; var y = yStart + (barH * j); var xA = xOrigin; var x = plot.axisX.getCoord(value, plotarea, plot); var w = Math.abs(x - xA); if (value > 0) { x = xOrigin; } var bar = document.createElement("v:rect"); bar.style.position = "absolute"; bar.style.top = y + 1 + "px"; bar.style.left = xA + "px"; bar.style.width = w + "px"; bar.style.height = barH + "px"; bar.setAttribute("fillColor", data[j][i].series.color); bar.setAttribute("stroked", "false"); bar.style.antialias = "false"; var fill = document.createElement("v:fill"); fill.setAttribute("opacity", "0.6"); bar.appendChild(fill); if (applyTo) { applyTo(bar, data[j][i].src); } group.appendChild(bar); } } var space = 4; var n = plot.series.length; var h = ((area.bottom - area.top) - (space * (n - 1))) / n; var xOrigin = plot.axisX.getCoord(0, plotarea, plot); for (var i = 0; i < n; i++) { var series = plot.series[i]; var data = series.data.evaluate(kwArgs); var y = area.top + (h * i) + (space * i); var value = data[data.length - 1].y; var xA = xOrigin; var x = plot.axisX.getCoord(value, plotarea, plot); var w = Math.abs(xA - x); if (value > 0) { xA = x; x = xOrigin; } } return group; }, Gantt:function (plotarea, plot, kwArgs, applyTo) { var area = plotarea.getArea(); var group = dojo.charting.Plotters._group(plotarea); var n = plot.series.length; var data = []; for (var i = 0; i < n; i++) { var tmp = plot.series[i].data.evaluate(kwArgs); data.push(tmp); } var space = 2; var nPoints = data[0].length; if (nPoints == 0) { return group; } var h = ((area.bottom - area.top) - (space * (nPoints - 1))) / nPoints; var barH = h / n; for (var i = 0; i < nPoints; i++) { var yStart = area.top + (h * i) + (space * i); for (var j = 0; j < n; j++) { var high = data[j][i].high; var low = data[j][i].low; if (low > high) { var t = high; high = low; low = t; } var x = plot.axisX.getCoord(low, plotarea, plot); var w = plot.axisX.getCoord(high, plotarea, plot) - x; var y = yStart + (barH * j); var bar = document.createElement("v:rect"); bar.style.position = "absolute"; bar.style.top = y + 1 + "px"; bar.style.left = x + "px"; bar.style.width = w + "px"; bar.style.height = barH + "px"; bar.setAttribute("fillColor", data[j][i].series.color); bar.setAttribute("stroked", "false"); bar.style.antialias = "false"; var fill = document.createElement("v:fill"); fill.setAttribute("opacity", "0.6"); bar.appendChild(fill); if (applyTo) { applyTo(bar, data[j][i].src); } group.appendChild(bar); } } return group; }, StackedArea:function (plotarea, plot, kwArgs, applyTo) { var area = plotarea.getArea(); var group = dojo.charting.Plotters._group(plotarea); var n = plot.series.length; var data = []; var totals = []; for (var i = 0; i < n; i++) { var tmp = plot.series[i].data.evaluate(kwArgs); for (var j = 0; j < tmp.length; j++) { if (i == 0) { totals.push(tmp[j].y); } else { totals[j] += tmp[j].y; } tmp[j].y = totals[j]; } data.push(tmp); } for (var i = n - 1; i >= 0; i--) { var path = document.createElement("v:shape"); path.setAttribute("strokeweight", "1px"); path.setAttribute("strokecolor", data[i][0].series.color); path.setAttribute("fillcolor", data[i][0].series.color); path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top)); path.style.position = "absolute"; path.style.top = "0px"; path.style.left = "0px"; path.style.width = area.right - area.left + "px"; path.style.height = area.bottom - area.top + "px"; var stroke = document.createElement("v:stroke"); stroke.setAttribute("opacity", "0.8"); path.appendChild(stroke); var fill = document.createElement("v:fill"); fill.setAttribute("opacity", "0.4"); path.appendChild(fill); var cmd = []; var r = 3; for (var j = 0; j < data[i].length; j++) { var values = data[i]; var x = Math.round(plot.axisX.getCoord(values[j].x, plotarea, plot)); var y = Math.round(plot.axisY.getCoord(values[j].y, plotarea, plot)); if (j == 0) { cmd.push("m"); cmd.push(x + "," + y); } else { cmd.push("l"); cmd.push(x + "," + y); } var c = document.createElement("v:oval"); c.setAttribute("strokeweight", "1px"); c.setAttribute("strokecolor", values[j].series.color); c.setAttribute("fillcolor", values[j].series.color); var str = document.createElement("v:stroke"); str.setAttribute("opacity", "0.8"); c.appendChild(str); str = document.createElement("v:fill"); str.setAttribute("opacity", "0.6"); c.appendChild(str); var s = c.style; s.position = "absolute"; s.top = (y - r) + "px"; s.left = (x - r) + "px"; s.width = (r * 2) + "px"; s.height = (r * 2) + "px"; group.appendChild(c); if (applyTo) { applyTo(c, data[j].src); } } if (i == 0) { cmd.push("l"); cmd.push(x + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot))); cmd.push("l"); cmd.push(Math.round(plot.axisX.getCoord(data[0][0].x, plotarea, plot)) + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot))); } else { var values = data[i - 1]; cmd.push("l"); cmd.push(x + "," + Math.round(plot.axisY.getCoord(values[values.length - 1].y, plotarea, plot))); for (var j = values.length - 2; j >= 0; j--) { var x = Math.round(plot.axisX.getCoord(values[j].x, plotarea, plot)); var y = Math.round(plot.axisY.getCoord(values[j].y, plotarea, plot)); cmd.push("l"); cmd.push(x + "," + y); } } path.setAttribute("path", cmd.join(" ") + " x e"); group.appendChild(path); } return group; }, StackedCurvedArea:function (plotarea, plot, kwArgs, applyTo) { var tension = 3; var area = plotarea.getArea(); var group = dojo.charting.Plotters._group(plotarea); var n = plot.series.length; var data = []; var totals = []; for (var i = 0; i < n; i++) { var tmp = plot.series[i].data.evaluate(kwArgs); for (var j = 0; j < tmp.length; j++) { if (i == 0) { totals.push(tmp[j].y); } else { totals[j] += tmp[j].y; } tmp[j].y = totals[j]; } data.push(tmp); } for (var i = n - 1; i >= 0; i--) { var path = document.createElement("v:shape"); path.setAttribute("strokeweight", "1px"); path.setAttribute("strokecolor", data[i][0].series.color); path.setAttribute("fillcolor", data[i][0].series.color); path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top)); path.style.position = "absolute"; path.style.top = "0px"; path.style.left = "0px"; path.style.width = area.right - area.left + "px"; path.style.height = area.bottom - area.top + "px"; var stroke = document.createElement("v:stroke"); stroke.setAttribute("opacity", "0.8"); path.appendChild(stroke); var fill = document.createElement("v:fill"); fill.setAttribute("opacity", "0.4"); path.appendChild(fill); var cmd = []; var r = 3; for (var j = 0; j < data[i].length; j++) { var values = data[i]; var x = Math.round(plot.axisX.getCoord(values[j].x, plotarea, plot)); var y = Math.round(plot.axisY.getCoord(values[j].y, plotarea, plot)); if (j == 0) { cmd.push("m"); cmd.push(x + "," + y); } else { var lastx = Math.round(plot.axisX.getCoord(values[j - 1].x, plotarea, plot)); var lasty = Math.round(plot.axisY.getCoord(values[j - 1].y, plotarea, plot)); var dx = x - lastx; var dy = y - lasty; cmd.push("c"); var cx = Math.round((x - (tension - 1) * (dx / tension))); cmd.push(cx + "," + lasty); cx = Math.round((x - (dx / tension))); cmd.push(cx + "," + y); cmd.push(x + "," + y); } var c = document.createElement("v:oval"); c.setAttribute("strokeweight", "1px"); c.setAttribute("strokecolor", values[j].series.color); c.setAttribute("fillcolor", values[j].series.color); var str = document.createElement("v:stroke"); str.setAttribute("opacity", "0.8"); c.appendChild(str); str = document.createElement("v:fill"); str.setAttribute("opacity", "0.6"); c.appendChild(str); var s = c.style; s.position = "absolute"; s.top = (y - r) + "px"; s.left = (x - r) + "px"; s.width = (r * 2) + "px"; s.height = (r * 2) + "px"; group.appendChild(c); if (applyTo) { applyTo(c, data[j].src); } } if (i == 0) { cmd.push("l"); cmd.push(x + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot))); cmd.push("l"); cmd.push(Math.round(plot.axisX.getCoord(data[0][0].x, plotarea, plot)) + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot))); } else { var values = data[i - 1]; cmd.push("l"); cmd.push(x + "," + Math.round(plot.axisY.getCoord(values[values.length - 1].y, plotarea, plot))); for (var j = values.length - 2; j >= 0; j--) { var x = Math.round(plot.axisX.getCoord(values[j].x, plotarea, plot)); var y = Math.round(plot.axisY.getCoord(values[j].y, plotarea, plot)); var lastx = Math.round(plot.axisX.getCoord(values[j + 1].x, plotarea, plot)); var lasty = Math.round(plot.axisY.getCoord(values[j + 1].y, plotarea, plot)); var dx = x - lastx; var dy = y - lasty; cmd.push("c"); var cx = Math.round((x - (tension - 1) * (dx / tension))); cmd.push(cx + "," + lasty); cx = Math.round((x - (dx / tension))); cmd.push(cx + "," + y); cmd.push(x + "," + y); } } path.setAttribute("path", cmd.join(" ") + " x e"); group.appendChild(path); } return group; }, DataBar:function (data, plotarea, plot, applyTo) { var area = plotarea.getArea(); var group = dojo.charting.Plotters._group(plotarea); var n = data.length; var w = (area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower); var yOrigin = plot.axisY.getCoord(plot.axisX.origin, plotarea, plot); for (var i = 0; i < n; i++) { var value = data[i].y; var yA = yOrigin; var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2) + 1; var y = plot.axisY.getCoord(value, plotarea, plot); var h = Math.abs(yA - y); if (value < plot.axisX.origin) { yA = y; y = yOrigin; } var bar = document.createElement("v:rect"); bar.style.position = "absolute"; bar.style.top = y + 1 + "px"; bar.style.left = x + "px"; bar.style.width = w + "px"; bar.style.height = h + "px"; bar.setAttribute("fillColor", data[i].series.color); bar.setAttribute("stroked", "false"); bar.style.antialias = "false"; var fill = document.createElement("v:fill"); fill.setAttribute("opacity", "0.6"); bar.appendChild(fill); if (applyTo) { applyTo(bar, data[i].src); } group.appendChild(bar); } return group; }, Line:function (data, plotarea, plot, applyTo) { var area = plotarea.getArea(); var group = dojo.charting.Plotters._group(plotarea); if (data.length == 0) { return group; } var path = document.createElement("v:shape"); path.setAttribute("strokeweight", "2px"); path.setAttribute("strokecolor", data[0].series.color); path.setAttribute("fillcolor", "none"); path.setAttribute("filled", "false"); path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top)); path.style.position = "absolute"; path.style.top = "0px"; path.style.left = "0px"; path.style.width = area.right - area.left + "px"; path.style.height = area.bottom - area.top + "px"; var stroke = document.createElement("v:stroke"); stroke.setAttribute("opacity", "0.8"); path.appendChild(stroke); var cmd = []; var r = 3; for (var i = 0; i < data.length; i++) { var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot)); var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot)); if (i == 0) { cmd.push("m"); cmd.push(x + "," + y); } else { cmd.push("l"); cmd.push(x + "," + y); } var c = document.createElement("v:oval"); c.setAttribute("strokeweight", "1px"); c.setAttribute("strokecolor", data[i].series.color); c.setAttribute("fillcolor", data[i].series.color); var str = document.createElement("v:stroke"); str.setAttribute("opacity", "0.8"); c.appendChild(str); str = document.createElement("v:fill"); str.setAttribute("opacity", "0.6"); c.appendChild(str); var s = c.style; s.position = "absolute"; s.top = (y - r) + "px"; s.left = (x - r) + "px"; s.width = (r * 2) + "px"; s.height = (r * 2) + "px"; group.appendChild(c); if (applyTo) { applyTo(c, data[i].src); } } path.setAttribute("path", cmd.join(" ") + " e"); group.appendChild(path); return group; }, CurvedLine:function (data, plotarea, plot, applyTo) { var tension = 3; var area = plotarea.getArea(); var group = dojo.charting.Plotters._group(plotarea); if (data.length == 0) { return group; } var path = document.createElement("v:shape"); path.setAttribute("strokeweight", "2px"); path.setAttribute("strokecolor", data[0].series.color); path.setAttribute("fillcolor", "none"); path.setAttribute("filled", "false"); path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top)); path.style.position = "absolute"; path.style.top = "0px"; path.style.left = "0px"; path.style.width = area.right - area.left + "px"; path.style.height = area.bottom - area.top + "px"; var stroke = document.createElement("v:stroke"); stroke.setAttribute("opacity", "0.8"); path.appendChild(stroke); var cmd = []; var r = 3; for (var i = 0; i < data.length; i++) { var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot)); var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot)); if (i == 0) { cmd.push("m"); cmd.push(x + "," + y); } else { var lastx = Math.round(plot.axisX.getCoord(data[i - 1].x, plotarea, plot)); var lasty = Math.round(plot.axisY.getCoord(data[i - 1].y, plotarea, plot)); var dx = x - lastx; var dy = y - lasty; cmd.push("c"); var cx = Math.round((x - (tension - 1) * (dx / tension))); cmd.push(cx + "," + lasty); cx = Math.round((x - (dx / tension))); cmd.push(cx + "," + y); cmd.push(x + "," + y); } var c = document.createElement("v:oval"); c.setAttribute("strokeweight", "1px"); c.setAttribute("strokecolor", data[i].series.color); c.setAttribute("fillcolor", data[i].series.color); var str = document.createElement("v:stroke"); str.setAttribute("opacity", "0.8"); c.appendChild(str); str = document.createElement("v:fill"); str.setAttribute("opacity", "0.6"); c.appendChild(str); var s = c.style; s.position = "absolute"; s.top = (y - r) + "px"; s.left = (x - r) + "px"; s.width = (r * 2) + "px"; s.height = (r * 2) + "px"; group.appendChild(c); if (applyTo) { applyTo(c, data[i].src); } } path.setAttribute("path", cmd.join(" ") + " e"); group.appendChild(path); return group; }, Area:function (data, plotarea, plot, applyTo) { var area = plotarea.getArea(); var group = dojo.charting.Plotters._group(plotarea); if (data.length == 0) { return group; } var path = document.createElement("v:shape"); path.setAttribute("strokeweight", "1px"); path.setAttribute("strokecolor", data[0].series.color); path.setAttribute("fillcolor", data[0].series.color); path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top)); path.style.position = "absolute"; path.style.top = "0px"; path.style.left = "0px"; path.style.width = area.right - area.left + "px"; path.style.height = area.bottom - area.top + "px"; var stroke = document.createElement("v:stroke"); stroke.setAttribute("opacity", "0.8"); path.appendChild(stroke); var fill = document.createElement("v:fill"); fill.setAttribute("opacity", "0.4"); path.appendChild(fill); var cmd = []; var r = 3; for (var i = 0; i < data.length; i++) { var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot)); var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot)); if (i == 0) { cmd.push("m"); cmd.push(x + "," + y); } else { cmd.push("l"); cmd.push(x + "," + y); } var c = document.createElement("v:oval"); c.setAttribute("strokeweight", "1px"); c.setAttribute("strokecolor", data[i].series.color); c.setAttribute("fillcolor", data[i].series.color); var str = document.createElement("v:stroke"); str.setAttribute("opacity", "0.8"); c.appendChild(str); str = document.createElement("v:fill"); str.setAttribute("opacity", "0.6"); c.appendChild(str); var s = c.style; s.position = "absolute"; s.top = (y - r) + "px"; s.left = (x - r) + "px"; s.width = (r * 2) + "px"; s.height = (r * 2) + "px"; group.appendChild(c); if (applyTo) { applyTo(c, data[i].src); } } cmd.push("l"); cmd.push(x + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot))); cmd.push("l"); cmd.push(Math.round(plot.axisX.getCoord(data[0].x, plotarea, plot)) + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot))); path.setAttribute("path", cmd.join(" ") + " x e"); group.appendChild(path); return group; }, CurvedArea:function (data, plotarea, plot, applyTo) { var tension = 3; var area = plotarea.getArea(); var group = dojo.charting.Plotters._group(plotarea); if (data.length == 0) { return group; } var path = document.createElement("v:shape"); path.setAttribute("strokeweight", "1px"); path.setAttribute("strokecolor", data[0].series.color); path.setAttribute("fillcolor", data[0].series.color); path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top)); path.style.position = "absolute"; path.style.top = "0px"; path.style.left = "0px"; path.style.width = area.right - area.left + "px"; path.style.height = area.bottom - area.top + "px"; var stroke = document.createElement("v:stroke"); stroke.setAttribute("opacity", "0.8"); path.appendChild(stroke); var fill = document.createElement("v:fill"); fill.setAttribute("opacity", "0.4"); path.appendChild(fill); var cmd = []; var r = 3; for (var i = 0; i < data.length; i++) { var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot)); var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot)); if (i == 0) { cmd.push("m"); cmd.push(x + "," + y); } else { var lastx = Math.round(plot.axisX.getCoord(data[i - 1].x, plotarea, plot)); var lasty = Math.round(plot.axisY.getCoord(data[i - 1].y, plotarea, plot)); var dx = x - lastx; var dy = y - lasty; cmd.push("c"); var cx = Math.round((x - (tension - 1) * (dx / tension))); cmd.push(cx + "," + lasty); cx = Math.round((x - (dx / tension))); cmd.push(cx + "," + y); cmd.push(x + "," + y); } var c = document.createElement("v:oval"); c.setAttribute("strokeweight", "1px"); c.setAttribute("strokecolor", data[i].series.color); c.setAttribute("fillcolor", data[i].series.color); var str = document.createElement("v:stroke"); str.setAttribute("opacity", "0.8"); c.appendChild(str); str = document.createElement("v:fill"); str.setAttribute("opacity", "0.6"); c.appendChild(str); var s = c.style; s.position = "absolute"; s.top = (y - r) + "px"; s.left = (x - r) + "px"; s.width = (r * 2) + "px"; s.height = (r * 2) + "px"; group.appendChild(c); if (applyTo) { applyTo(c, data[i].src); } } cmd.push("l"); cmd.push(x + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot))); cmd.push("l"); cmd.push(Math.round(plot.axisX.getCoord(data[0].x, plotarea, plot)) + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot))); path.setAttribute("path", cmd.join(" ") + " x e"); group.appendChild(path); return group; }, HighLow:function (data, plotarea, plot, applyTo) { var area = plotarea.getArea(); var group = dojo.charting.Plotters._group(plotarea); var n = data.length; var part = ((area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower)) / 4; var w = part * 2; for (var i = 0; i < n; i++) { var high = data[i].high; var low = data[i].low; if (low > high) { var t = low; low = high; high = t; } var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2); var y = plot.axisY.getCoord(high, plotarea, plot); var h = plot.axisY.getCoord(low, plotarea, plot) - y; var bar = document.createElement("v:rect"); bar.style.position = "absolute"; bar.style.top = y + 1 + "px"; bar.style.left = x + "px"; bar.style.width = w + "px"; bar.style.height = h + "px"; bar.setAttribute("fillColor", data[i].series.color); bar.setAttribute("stroked", "false"); bar.style.antialias = "false"; var fill = document.createElement("v:fill"); fill.setAttribute("opacity", "0.6"); bar.appendChild(fill); if (applyTo) { applyTo(bar, data[i].src); } group.appendChild(bar); } return group; }, HighLowClose:function (data, plotarea, plot, applyTo) { var area = plotarea.getArea(); var group = dojo.charting.Plotters._group(plotarea); var n = data.length; var part = ((area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower)) / 4; var w = part * 2; for (var i = 0; i < n; i++) { var high = data[i].high; var low = data[i].low; if (low > high) { var t = low; low = high; high = t; } var c = data[i].close; var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2); var y = plot.axisY.getCoord(high, plotarea, plot); var h = plot.axisY.getCoord(low, plotarea, plot) - y; var close = plot.axisY.getCoord(c, plotarea, plot); var g = document.createElement("div"); var bar = document.createElement("v:rect"); bar.style.position = "absolute"; bar.style.top = y + 1 + "px"; bar.style.left = x + "px"; bar.style.width = w + "px"; bar.style.height = h + "px"; bar.setAttribute("fillColor", data[i].series.color); bar.setAttribute("stroked", "false"); bar.style.antialias = "false"; var fill = document.createElement("v:fill"); fill.setAttribute("opacity", "0.6"); bar.appendChild(fill); g.appendChild(bar); var line = document.createElement("v:line"); line.setAttribute("strokecolor", data[i].series.color); line.setAttribute("strokeweight", "1px"); line.setAttribute("from", x + "px," + close + "px"); line.setAttribute("to", (x + w + (part * 2) - 2) + "px," + close + "px"); var s = line.style; s.position = "absolute"; s.top = "0px"; s.left = "0px"; s.antialias = "false"; var str = document.createElement("v:stroke"); str.setAttribute("opacity", "0.6"); line.appendChild(str); g.appendChild(line); if (applyTo) { applyTo(g, data[i].src); } group.appendChild(g); } return group; }, HighLowOpenClose:function (data, plotarea, plot, applyTo) { var area = plotarea.getArea(); var group = dojo.charting.Plotters._group(plotarea); var n = data.length; var part = ((area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower)) / 4; var w = part * 2; for (var i = 0; i < n; i++) { var high = data[i].high; var low = data[i].low; if (low > high) { var t = low; low = high; high = t; } var o = data[i].open; var c = data[i].close; var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2); var y = plot.axisY.getCoord(high, plotarea, plot); var h = plot.axisY.getCoord(low, plotarea, plot) - y; var open = plot.axisY.getCoord(o, plotarea, plot); var close = plot.axisY.getCoord(c, plotarea, plot); var g = document.createElement("div"); var bar = document.createElement("v:rect"); bar.style.position = "absolute"; bar.style.top = y + 1 + "px"; bar.style.left = x + "px"; bar.style.width = w + "px"; bar.style.height = h + "px"; bar.setAttribute("fillColor", data[i].series.color); bar.setAttribute("stroked", "false"); bar.style.antialias = "false"; var fill = document.createElement("v:fill"); fill.setAttribute("opacity", "0.6"); bar.appendChild(fill); g.appendChild(bar); var line = document.createElement("v:line"); line.setAttribute("strokecolor", data[i].series.color); line.setAttribute("strokeweight", "1px"); line.setAttribute("from", (x - (part * 2)) + "px," + open + "px"); line.setAttribute("to", (x + w - 2) + "px," + open + "px"); var s = line.style; s.position = "absolute"; s.top = "0px"; s.left = "0px"; s.antialias = "false"; var str = document.createElement("v:stroke"); str.setAttribute("opacity", "0.6"); line.appendChild(str); g.appendChild(line); var line = document.createElement("v:line"); line.setAttribute("strokecolor", data[i].series.color); line.setAttribute("strokeweight", "1px"); line.setAttribute("from", x + "px," + close + "px"); line.setAttribute("to", (x + w + (part * 2) - 2) + "px," + close + "px"); var s = line.style; s.position = "absolute"; s.top = "0px"; s.left = "0px"; s.antialias = "false"; var str = document.createElement("v:stroke"); str.setAttribute("opacity", "0.6"); line.appendChild(str); g.appendChild(line); if (applyTo) { applyTo(g, data[i].src); } group.appendChild(g); } return group; }, Scatter:function (data, plotarea, plot, applyTo) { var r = 6; var mod = r / 2; var area = plotarea.getArea(); var group = dojo.charting.Plotters._group(plotarea); for (var i = 0; i < data.length; i++) { var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot)); var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot)); var point = document.createElement("v:rect"); point.setAttribute("strokecolor", data[i].series.color); point.setAttribute("fillcolor", data[i].series.color); var fill = document.createElement("v:fill"); fill.setAttribute("opacity", "0.6"); point.appendChild(fill); var s = point.style; s.position = "absolute"; s.rotation = "45"; s.top = (y - mod) + "px"; s.left = (x - mod) + "px"; s.width = r + "px"; s.height = r + "px"; group.appendChild(point); if (applyTo) { applyTo(point, data[i].src); } } return group; }, Bubble:function (data, plotarea, plot, applyTo) { var sizeFactor = 1; var area = plotarea.getArea(); var group = dojo.charting.Plotters._group(plotarea); for (var i = 0; i < data.length; i++) { var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot)); var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot)); if (i == 0) { var raw = data[i].size; var dy = plot.axisY.getCoord(data[i].y + raw, plotarea, plot) - y; sizeFactor = dy / raw; } if (sizeFactor < 1) { sizeFactor = 1; } var r = (data[i].size / 2) * sizeFactor; var point = document.createElement("v:oval"); point.setAttribute("strokecolor", data[i].series.color); point.setAttribute("fillcolor", data[i].series.color); var fill = document.createElement("v:fill"); fill.setAttribute("opacity", "0.6"); point.appendChild(fill); var s = point.style; s.position = "absolute"; s.rotation = "45"; s.top = (y - r) + "px"; s.left = (x - r) + "px"; s.width = (r * 2) + "px"; s.height = (r * 2) + "px"; group.appendChild(point); if (applyTo) { applyTo(point, data[i].src); } } return group; }}); dojo.charting.Plotters["Default"] = dojo.charting.Plotters.Line; } }});

__CPAN_FILE__ src/charting/vml/Axis.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.charting.vml.Axis"], ["require", "dojo.lang.common"]], definePackage:function (dojo) { dojo.provide("dojo.charting.vml.Axis"); dojo.require("dojo.lang.common"); if (dojo.render.vml.capable) { dojo.extend(dojo.charting.Axis, {renderLines:function (plotArea, plot, plane) { if (this.nodes.lines) { while (this.nodes.lines.childNodes.length > 0) { this.nodes.lines.removeChild(this.nodes.lines.childNodes[0]); } if (this.nodes.lines.parentNode) { this.nodes.lines.parentNode.removeChild(this.nodes.lines); this.nodes.lines = null; } } var area = plotArea.getArea(); var g = this.nodes.lines = document.createElement("div"); g.setAttribute("id", this.getId() + "-lines"); for (var i = 0; i < this._labels.length; i++) { if (this._labels[i].value == this.origin) { continue; } var v = this.getCoord(this._labels[i].value, plotArea, plot); var l = document.createElement("v:line"); var str = document.createElement("v:stroke"); str.dashstyle = "dot"; l.appendChild(str); l.setAttribute("strokecolor", "#666"); l.setAttribute("strokeweight", "1px"); var s = l.style; s.position = "absolute"; s.top = "0px"; s.left = "0px"; s.antialias = "false"; if (plane == "x") { l.setAttribute("from", v + "px," + area.top + "px"); l.setAttribute("to", v + "px," + area.bottom + "px"); } else { if (plane == "y") { l.setAttribute("from", area.left + "px," + v + "px"); l.setAttribute("to", area.right + "px," + v + "px"); } } g.appendChild(l); } return g; }, renderTicks:function (plotArea, plot, plane, coord) { if (this.nodes.ticks) { while (this.nodes.ticks.childNodes.length > 0) { this.nodes.ticks.removeChild(this.nodes.ticks.childNodes[0]); } if (this.nodes.ticks.parentNode) { this.nodes.ticks.parentNode.removeChild(this.nodes.ticks); this.nodes.ticks = null; } } var g = this.nodes.ticks = document.createElement("div"); g.setAttribute("id", this.getId() + "-ticks"); for (var i = 0; i < this._labels.length; i++) { var v = this.getCoord(this._labels[i].value, plotArea, plot); var l = document.createElement("v:line"); l.setAttribute("strokecolor", "#000"); l.setAttribute("strokeweight", "1px"); var s = l.style; s.position = "absolute"; s.top = "0px"; s.left = "0px"; s.antialias = "false"; if (plane == "x") { l.setAttribute("from", v + "px," + coord + "px"); l.setAttribute("to", v + "px," + (coord + 3) + "px"); } else { if (plane == "y") { l.setAttribute("from", (coord - 2) + "px," + v + "px"); l.setAttribute("to", (coord + 2) + "px," + v + "px"); } } g.appendChild(l); } return g; }, renderLabels:function (plotArea, plot, plane, coord, textSize, anchor) { function createLabel(label, x, y, textSize, anchor) { var text = document.createElement("div"); var s = text.style; text.innerHTML = label; s.fontSize = textSize + "px"; s.fontFamily = "sans-serif"; s.position = "absolute"; s.top = y + "px"; if (anchor == "center") { s.left = x + "px"; s.textAlign = "center"; } else { if (anchor == "left") { s.left = x + "px"; s.textAlign = "left"; } else { if (anchor == "right") { s.right = x + "px"; s.textAlign = "right"; } } } return text; } if (this.nodes.labels) { while (this.nodes.labels.childNodes.length > 0) { this.nodes.labels.removeChild(this.nodes.labels.childNodes[0]); } if (this.nodes.labels.parentNode) { this.nodes.labels.parentNode.removeChild(this.nodes.labels); this.nodes.labels = null; } } var g = this.nodes.labels = document.createElement("div"); g.setAttribute("id", this.getId() + "-labels"); for (var i = 0; i < this._labels.length; i++) { var v = this.getCoord(this._labels[i].value, plotArea, plot); if (plane == "x") { var node = createLabel(this._labels[i].label, v, coord, textSize, anchor); document.body.appendChild(node); node.style.left = v - (node.offsetWidth / 2) + "px"; g.appendChild(node); } else { if (plane == "y") { var node = createLabel(this._labels[i].label, coord, v, textSize, anchor); document.body.appendChild(node); node.style.top = v - (node.offsetHeight / 2) + "px"; g.appendChild(node); } } } return g; }, render:function (plotArea, plot, drawAgainst, plane) { if (!this._rerender && this.nodes.main) { return this.nodes.main; } this._rerender = false; var area = plotArea.getArea(); var stroke = 1; var style = "stroke:#000;stroke-width:" + stroke + "px;"; var textSize = 10; var coord = drawAgainst.getCoord(this.origin, plotArea, plot); var g = this.nodes.main = document.createElement("div"); g.setAttribute("id", this.getId()); var line = this.nodes.axis = document.createElement("v:line"); line.setAttribute("strokecolor", "#000"); line.setAttribute("strokeweight", stroke + "px"); var s = line.style; s.position = "absolute"; s.top = "0px"; s.left = "0px"; s.antialias = "false"; if (plane == "x") { line.setAttribute("from", area.left + "px," + coord + "px"); line.setAttribute("to", area.right + "px," + coord + "px"); var y = coord + Math.floor(textSize / 2); if (this.showLines) { g.appendChild(this.renderLines(plotArea, plot, plane, y)); } if (this.showTicks) { g.appendChild(this.renderTicks(plotArea, plot, plane, coord)); } if (this.showLabels) { g.appendChild(this.renderLabels(plotArea, plot, plane, y, textSize, "center")); } if (this.showLabel && this.label) { var x = plotArea.size.width / 2; var y = coord + Math.round(textSize * 1.5); var text = document.createElement("div"); var s = text.style; text.innerHTML = this.label; s.fontSize = (textSize + 2) + "px"; s.fontFamily = "sans-serif"; s.fontWeight = "bold"; s.position = "absolute"; s.top = y + "px"; s.left = x + "px"; s.textAlign = "center"; document.body.appendChild(text); text.style.left = x - (text.offsetWidth / 2) + "px"; g.appendChild(text); } } else { line.setAttribute("from", coord + "px," + area.top + "px"); line.setAttribute("to", coord + "px," + area.bottom + "px"); var isMax = this.origin == drawAgainst.range.upper; var x = coord + 4; var anchor = "left"; if (!isMax) { x = area.right - coord + textSize + 4; anchor = "right"; if (coord == area.left) { x += (textSize * 2) - (textSize / 2); } } if (this.showLines) { g.appendChild(this.renderLines(plotArea, plot, plane, x)); } if (this.showTicks) { g.appendChild(this.renderTicks(plotArea, plot, plane, coord)); } if (this.showLabels) { g.appendChild(this.renderLabels(plotArea, plot, plane, x, textSize, anchor)); } if (this.showLabel && this.label) { x += (textSize * 2) - 2; var y = plotArea.size.height / 2; var text = document.createElement("div"); var s = text.style; text.innerHTML = this.label; s.fontSize = (textSize + 2) + "px"; s.fontFamily = "sans-serif"; s.fontWeight = "bold"; s.position = "absolute"; s.height = plotArea.size.height + "px"; s.writingMode = "tb-rl"; s.textAlign = "center"; s[anchor] = x + "px"; document.body.appendChild(text); s.top = y - (text.offsetHeight / 2) + "px"; g.appendChild(text); } } g.appendChild(line); return g; }}); } }});

__CPAN_FILE__ src/charting/vml/PlotArea.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.charting.vml.PlotArea"], ["require", "dojo.lang.common"]], definePackage:function (dojo) { dojo.provide("dojo.charting.vml.PlotArea"); dojo.require("dojo.lang.common"); if (dojo.render.vml.capable) { dojo.extend(dojo.charting.PlotArea, {resize:function () { var a = this.getArea(); this.nodes.area.style.width = this.size.width + "px"; this.nodes.area.style.height = this.size.height + "px"; this.nodes.background.style.width = this.size.width + "px"; this.nodes.background.style.height = this.size.height + "px"; this.nodes.plots.width = this.size.width + "px"; this.nodes.plots.height = this.size.height + "px"; this.nodes.plots.style.clip = "rect(" + a.top + " " + a.right + " " + a.bottom + " " + a.left + ")"; if (this.nodes.axes) { this.nodes.area.removeChild(this.nodes.axes); } var axes = this.nodes.axes = document.createElement("div"); axes.id = this.getId() + "-axes"; this.nodes.area.appendChild(axes); var ax = this.getAxes(); for (var p in ax) { var obj = ax[p]; axes.appendChild(obj.axis.initialize(this, obj.plot, obj.drawAgainst, obj.plane)); } }, initializePlot:function (plot) { plot.destroy(); plot.dataNode = document.createElement("div"); plot.dataNode.id = plot.getId(); return plot.dataNode; }, initialize:function () { this.destroy(); var main = this.nodes.main = document.createElement("div"); var area = this.nodes.area = document.createElement("div"); area.id = this.getId(); area.style.position = "absolute"; main.appendChild(area); var bg = this.nodes.background = document.createElement("div"); bg.id = this.getId() + "-background"; bg.style.position = "absolute"; bg.style.top = "0px"; bg.style.left = "0px"; bg.style.backgroundColor = "#fff"; area.appendChild(bg); var a = this.getArea(); var plots = this.nodes.plots = document.createElement("div"); plots.id = this.getId() + "-plots"; plots.style.position = "absolute"; plots.style.top = "0px"; plots.style.left = "0px"; area.appendChild(plots); for (var i = 0; i < this.plots.length; i++) { plots.appendChild(this.initializePlot(this.plots[i])); } this.resize(); return main; }}); } }});

__CPAN_FILE__ src/charting/vml/Plotters.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.charting.vml.Plotters"); dojo.require("dojo.lang.common"); if (dojo.render.vml.capable) { dojo.mixin(dojo.charting.Plotters, {_group:function (plotarea) { var group = document.createElement("div"); group.style.position = "absolute"; group.style.top = "0px"; group.style.left = "0px"; group.style.width = plotarea.size.width + "px"; group.style.height = plotarea.size.height + "px"; return group; }, Bar:function (plotarea, plot, kwArgs, applyTo) { var area = plotarea.getArea(); var group = dojo.charting.Plotters._group(plotarea); var n = plot.series.length; var data = []; for (var i = 0; i < n; i++) { var tmp = plot.series[i].data.evaluate(kwArgs); data.push(tmp); } var space = 8; var nPoints = data[0].length; if (nPoints == 0) { return group; } var width = ((area.right - area.left) - (space * (nPoints - 1))) / nPoints; var barWidth = Math.round(width / n); var yOrigin = plot.axisY.getCoord(plot.axisX.origin, plotarea, plot); for (var i = 0; i < nPoints; i++) { var xStart = area.left + (width * i) + (space * i); for (var j = 0; j < n; j++) { var value = data[j][i].y; var yA = yOrigin; var x = xStart + (barWidth * j); var y = plot.axisY.getCoord(value, plotarea, plot); var h = Math.abs(yA - y); if (value < plot.axisX.origin) { yA = y; y = yOrigin; } var bar = document.createElement("v:rect"); bar.style.position = "absolute"; bar.style.top = y + 1 + "px"; bar.style.left = x + "px"; bar.style.width = barWidth + "px"; bar.style.height = h + "px"; bar.setAttribute("fillColor", data[j][i].series.color); bar.setAttribute("stroked", "false"); bar.style.antialias = "false"; var fill = document.createElement("v:fill"); fill.setAttribute("opacity", "0.6"); bar.appendChild(fill); if (applyTo) { applyTo(bar, data[j][i].src); } group.appendChild(bar); } } return group; }, HorizontalBar:function (plotarea, plot, kwArgs, applyTo) { var area = plotarea.getArea(); var group = dojo.charting.Plotters._group(plotarea); var n = plot.series.length; var data = []; for (var i = 0; i < n; i++) { var tmp = plot.series[i].data.evaluate(kwArgs); data.push(tmp); } var space = 6; var nPoints = data[0].length; if (nPoints == 0) { return group; } var h = ((area.bottom - area.top) - (space * (nPoints - 1))) / nPoints; var barH = h / n; var xOrigin = plot.axisX.getCoord(0, plotarea, plot); for (var i = 0; i < nPoints; i++) { var yStart = area.top + (h * i) + (space * i); for (var j = 0; j < n; j++) { var value = data[j][i].y; var y = yStart + (barH * j); var xA = xOrigin; var x = plot.axisX.getCoord(value, plotarea, plot); var w = Math.abs(x - xA); if (value > 0) { x = xOrigin; } var bar = document.createElement("v:rect"); bar.style.position = "absolute"; bar.style.top = y + 1 + "px"; bar.style.left = xA + "px"; bar.style.width = w + "px"; bar.style.height = barH + "px"; bar.setAttribute("fillColor", data[j][i].series.color); bar.setAttribute("stroked", "false"); bar.style.antialias = "false"; var fill = document.createElement("v:fill"); fill.setAttribute("opacity", "0.6"); bar.appendChild(fill); if (applyTo) { applyTo(bar, data[j][i].src); } group.appendChild(bar); } } var space = 4; var n = plot.series.length; var h = ((area.bottom - area.top) - (space * (n - 1))) / n; var xOrigin = plot.axisX.getCoord(0, plotarea, plot); for (var i = 0; i < n; i++) { var series = plot.series[i]; var data = series.data.evaluate(kwArgs); var y = area.top + (h * i) + (space * i); var value = data[data.length - 1].y; var xA = xOrigin; var x = plot.axisX.getCoord(value, plotarea, plot); var w = Math.abs(xA - x); if (value > 0) { xA = x; x = xOrigin; } } return group; }, Gantt:function (plotarea, plot, kwArgs, applyTo) { var area = plotarea.getArea(); var group = dojo.charting.Plotters._group(plotarea); var n = plot.series.length; var data = []; for (var i = 0; i < n; i++) { var tmp = plot.series[i].data.evaluate(kwArgs); data.push(tmp); } var space = 2; var nPoints = data[0].length; if (nPoints == 0) { return group; } var h = ((area.bottom - area.top) - (space * (nPoints - 1))) / nPoints; var barH = h / n; for (var i = 0; i < nPoints; i++) { var yStart = area.top + (h * i) + (space * i); for (var j = 0; j < n; j++) { var high = data[j][i].high; var low = data[j][i].low; if (low > high) { var t = high; high = low; low = t; } var x = plot.axisX.getCoord(low, plotarea, plot); var w = plot.axisX.getCoord(high, plotarea, plot) - x; var y = yStart + (barH * j); var bar = document.createElement("v:rect"); bar.style.position = "absolute"; bar.style.top = y + 1 + "px"; bar.style.left = x + "px"; bar.style.width = w + "px"; bar.style.height = barH + "px"; bar.setAttribute("fillColor", data[j][i].series.color); bar.setAttribute("stroked", "false"); bar.style.antialias = "false"; var fill = document.createElement("v:fill"); fill.setAttribute("opacity", "0.6"); bar.appendChild(fill); if (applyTo) { applyTo(bar, data[j][i].src); } group.appendChild(bar); } } return group; }, StackedArea:function (plotarea, plot, kwArgs, applyTo) { var area = plotarea.getArea(); var group = dojo.charting.Plotters._group(plotarea); var n = plot.series.length; var data = []; var totals = []; for (var i = 0; i < n; i++) { var tmp = plot.series[i].data.evaluate(kwArgs); for (var j = 0; j < tmp.length; j++) { if (i == 0) { totals.push(tmp[j].y); } else { totals[j] += tmp[j].y; } tmp[j].y = totals[j]; } data.push(tmp); } for (var i = n - 1; i >= 0; i--) { var path = document.createElement("v:shape"); path.setAttribute("strokeweight", "1px"); path.setAttribute("strokecolor", data[i][0].series.color); path.setAttribute("fillcolor", data[i][0].series.color); path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top)); path.style.position = "absolute"; path.style.top = "0px"; path.style.left = "0px"; path.style.width = area.right - area.left + "px"; path.style.height = area.bottom - area.top + "px"; var stroke = document.createElement("v:stroke"); stroke.setAttribute("opacity", "0.8"); path.appendChild(stroke); var fill = document.createElement("v:fill"); fill.setAttribute("opacity", "0.4"); path.appendChild(fill); var cmd = []; var r = 3; for (var j = 0; j < data[i].length; j++) { var values = data[i]; var x = Math.round(plot.axisX.getCoord(values[j].x, plotarea, plot)); var y = Math.round(plot.axisY.getCoord(values[j].y, plotarea, plot)); if (j == 0) { cmd.push("m"); cmd.push(x + "," + y); } else { cmd.push("l"); cmd.push(x + "," + y); } var c = document.createElement("v:oval"); c.setAttribute("strokeweight", "1px"); c.setAttribute("strokecolor", values[j].series.color); c.setAttribute("fillcolor", values[j].series.color); var str = document.createElement("v:stroke"); str.setAttribute("opacity", "0.8"); c.appendChild(str); str = document.createElement("v:fill"); str.setAttribute("opacity", "0.6"); c.appendChild(str); var s = c.style; s.position = "absolute"; s.top = (y - r) + "px"; s.left = (x - r) + "px"; s.width = (r * 2) + "px"; s.height = (r * 2) + "px"; group.appendChild(c); if (applyTo) { applyTo(c, data[j].src); } } if (i == 0) { cmd.push("l"); cmd.push(x + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot))); cmd.push("l"); cmd.push(Math.round(plot.axisX.getCoord(data[0][0].x, plotarea, plot)) + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot))); } else { var values = data[i - 1]; cmd.push("l"); cmd.push(x + "," + Math.round(plot.axisY.getCoord(values[values.length - 1].y, plotarea, plot))); for (var j = values.length - 2; j >= 0; j--) { var x = Math.round(plot.axisX.getCoord(values[j].x, plotarea, plot)); var y = Math.round(plot.axisY.getCoord(values[j].y, plotarea, plot)); cmd.push("l"); cmd.push(x + "," + y); } } path.setAttribute("path", cmd.join(" ") + " x e"); group.appendChild(path); } return group; }, StackedCurvedArea:function (plotarea, plot, kwArgs, applyTo) { var tension = 3; var area = plotarea.getArea(); var group = dojo.charting.Plotters._group(plotarea); var n = plot.series.length; var data = []; var totals = []; for (var i = 0; i < n; i++) { var tmp = plot.series[i].data.evaluate(kwArgs); for (var j = 0; j < tmp.length; j++) { if (i == 0) { totals.push(tmp[j].y); } else { totals[j] += tmp[j].y; } tmp[j].y = totals[j]; } data.push(tmp); } for (var i = n - 1; i >= 0; i--) { var path = document.createElement("v:shape"); path.setAttribute("strokeweight", "1px"); path.setAttribute("strokecolor", data[i][0].series.color); path.setAttribute("fillcolor", data[i][0].series.color); path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top)); path.style.position = "absolute"; path.style.top = "0px"; path.style.left = "0px"; path.style.width = area.right - area.left + "px"; path.style.height = area.bottom - area.top + "px"; var stroke = document.createElement("v:stroke"); stroke.setAttribute("opacity", "0.8"); path.appendChild(stroke); var fill = document.createElement("v:fill"); fill.setAttribute("opacity", "0.4"); path.appendChild(fill); var cmd = []; var r = 3; for (var j = 0; j < data[i].length; j++) { var values = data[i]; var x = Math.round(plot.axisX.getCoord(values[j].x, plotarea, plot)); var y = Math.round(plot.axisY.getCoord(values[j].y, plotarea, plot)); if (j == 0) { cmd.push("m"); cmd.push(x + "," + y); } else { var lastx = Math.round(plot.axisX.getCoord(values[j - 1].x, plotarea, plot)); var lasty = Math.round(plot.axisY.getCoord(values[j - 1].y, plotarea, plot)); var dx = x - lastx; var dy = y - lasty; cmd.push("c"); var cx = Math.round((x - (tension - 1) * (dx / tension))); cmd.push(cx + "," + lasty); cx = Math.round((x - (dx / tension))); cmd.push(cx + "," + y); cmd.push(x + "," + y); } var c = document.createElement("v:oval"); c.setAttribute("strokeweight", "1px"); c.setAttribute("strokecolor", values[j].series.color); c.setAttribute("fillcolor", values[j].series.color); var str = document.createElement("v:stroke"); str.setAttribute("opacity", "0.8"); c.appendChild(str); str = document.createElement("v:fill"); str.setAttribute("opacity", "0.6"); c.appendChild(str); var s = c.style; s.position = "absolute"; s.top = (y - r) + "px"; s.left = (x - r) + "px"; s.width = (r * 2) + "px"; s.height = (r * 2) + "px"; group.appendChild(c); if (applyTo) { applyTo(c, data[j].src); } } if (i == 0) { cmd.push("l"); cmd.push(x + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot))); cmd.push("l"); cmd.push(Math.round(plot.axisX.getCoord(data[0][0].x, plotarea, plot)) + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot))); } else { var values = data[i - 1]; cmd.push("l"); cmd.push(x + "," + Math.round(plot.axisY.getCoord(values[values.length - 1].y, plotarea, plot))); for (var j = values.length - 2; j >= 0; j--) { var x = Math.round(plot.axisX.getCoord(values[j].x, plotarea, plot)); var y = Math.round(plot.axisY.getCoord(values[j].y, plotarea, plot)); var lastx = Math.round(plot.axisX.getCoord(values[j + 1].x, plotarea, plot)); var lasty = Math.round(plot.axisY.getCoord(values[j + 1].y, plotarea, plot)); var dx = x - lastx; var dy = y - lasty; cmd.push("c"); var cx = Math.round((x - (tension - 1) * (dx / tension))); cmd.push(cx + "," + lasty); cx = Math.round((x - (dx / tension))); cmd.push(cx + "," + y); cmd.push(x + "," + y); } } path.setAttribute("path", cmd.join(" ") + " x e"); group.appendChild(path); } return group; }, DataBar:function (data, plotarea, plot, applyTo) { var area = plotarea.getArea(); var group = dojo.charting.Plotters._group(plotarea); var n = data.length; var w = (area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower); var yOrigin = plot.axisY.getCoord(plot.axisX.origin, plotarea, plot); for (var i = 0; i < n; i++) { var value = data[i].y; var yA = yOrigin; var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2) + 1; var y = plot.axisY.getCoord(value, plotarea, plot); var h = Math.abs(yA - y); if (value < plot.axisX.origin) { yA = y; y = yOrigin; } var bar = document.createElement("v:rect"); bar.style.position = "absolute"; bar.style.top = y + 1 + "px"; bar.style.left = x + "px"; bar.style.width = w + "px"; bar.style.height = h + "px"; bar.setAttribute("fillColor", data[i].series.color); bar.setAttribute("stroked", "false"); bar.style.antialias = "false"; var fill = document.createElement("v:fill"); fill.setAttribute("opacity", "0.6"); bar.appendChild(fill); if (applyTo) { applyTo(bar, data[i].src); } group.appendChild(bar); } return group; }, Line:function (data, plotarea, plot, applyTo) { var area = plotarea.getArea(); var group = dojo.charting.Plotters._group(plotarea); if (data.length == 0) { return group; } var path = document.createElement("v:shape"); path.setAttribute("strokeweight", "2px"); path.setAttribute("strokecolor", data[0].series.color); path.setAttribute("fillcolor", "none"); path.setAttribute("filled", "false"); path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top)); path.style.position = "absolute"; path.style.top = "0px"; path.style.left = "0px"; path.style.width = area.right - area.left + "px"; path.style.height = area.bottom - area.top + "px"; var stroke = document.createElement("v:stroke"); stroke.setAttribute("opacity", "0.8"); path.appendChild(stroke); var cmd = []; var r = 3; for (var i = 0; i < data.length; i++) { var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot)); var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot)); if (i == 0) { cmd.push("m"); cmd.push(x + "," + y); } else { cmd.push("l"); cmd.push(x + "," + y); } var c = document.createElement("v:oval"); c.setAttribute("strokeweight", "1px"); c.setAttribute("strokecolor", data[i].series.color); c.setAttribute("fillcolor", data[i].series.color); var str = document.createElement("v:stroke"); str.setAttribute("opacity", "0.8"); c.appendChild(str); str = document.createElement("v:fill"); str.setAttribute("opacity", "0.6"); c.appendChild(str); var s = c.style; s.position = "absolute"; s.top = (y - r) + "px"; s.left = (x - r) + "px"; s.width = (r * 2) + "px"; s.height = (r * 2) + "px"; group.appendChild(c); if (applyTo) { applyTo(c, data[i].src); } } path.setAttribute("path", cmd.join(" ") + " e"); group.appendChild(path); return group; }, CurvedLine:function (data, plotarea, plot, applyTo) { var tension = 3; var area = plotarea.getArea(); var group = dojo.charting.Plotters._group(plotarea); if (data.length == 0) { return group; } var path = document.createElement("v:shape"); path.setAttribute("strokeweight", "2px"); path.setAttribute("strokecolor", data[0].series.color); path.setAttribute("fillcolor", "none"); path.setAttribute("filled", "false"); path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top)); path.style.position = "absolute"; path.style.top = "0px"; path.style.left = "0px"; path.style.width = area.right - area.left + "px"; path.style.height = area.bottom - area.top + "px"; var stroke = document.createElement("v:stroke"); stroke.setAttribute("opacity", "0.8"); path.appendChild(stroke); var cmd = []; var r = 3; for (var i = 0; i < data.length; i++) { var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot)); var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot)); if (i == 0) { cmd.push("m"); cmd.push(x + "," + y); } else { var lastx = Math.round(plot.axisX.getCoord(data[i - 1].x, plotarea, plot)); var lasty = Math.round(plot.axisY.getCoord(data[i - 1].y, plotarea, plot)); var dx = x - lastx; var dy = y - lasty; cmd.push("c"); var cx = Math.round((x - (tension - 1) * (dx / tension))); cmd.push(cx + "," + lasty); cx = Math.round((x - (dx / tension))); cmd.push(cx + "," + y); cmd.push(x + "," + y); } var c = document.createElement("v:oval"); c.setAttribute("strokeweight", "1px"); c.setAttribute("strokecolor", data[i].series.color); c.setAttribute("fillcolor", data[i].series.color); var str = document.createElement("v:stroke"); str.setAttribute("opacity", "0.8"); c.appendChild(str); str = document.createElement("v:fill"); str.setAttribute("opacity", "0.6"); c.appendChild(str); var s = c.style; s.position = "absolute"; s.top = (y - r) + "px"; s.left = (x - r) + "px"; s.width = (r * 2) + "px"; s.height = (r * 2) + "px"; group.appendChild(c); if (applyTo) { applyTo(c, data[i].src); } } path.setAttribute("path", cmd.join(" ") + " e"); group.appendChild(path); return group; }, Area:function (data, plotarea, plot, applyTo) { var area = plotarea.getArea(); var group = dojo.charting.Plotters._group(plotarea); if (data.length == 0) { return group; } var path = document.createElement("v:shape"); path.setAttribute("strokeweight", "1px"); path.setAttribute("strokecolor", data[0].series.color); path.setAttribute("fillcolor", data[0].series.color); path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top)); path.style.position = "absolute"; path.style.top = "0px"; path.style.left = "0px"; path.style.width = area.right - area.left + "px"; path.style.height = area.bottom - area.top + "px"; var stroke = document.createElement("v:stroke"); stroke.setAttribute("opacity", "0.8"); path.appendChild(stroke); var fill = document.createElement("v:fill"); fill.setAttribute("opacity", "0.4"); path.appendChild(fill); var cmd = []; var r = 3; for (var i = 0; i < data.length; i++) { var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot)); var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot)); if (i == 0) { cmd.push("m"); cmd.push(x + "," + y); } else { cmd.push("l"); cmd.push(x + "," + y); } var c = document.createElement("v:oval"); c.setAttribute("strokeweight", "1px"); c.setAttribute("strokecolor", data[i].series.color); c.setAttribute("fillcolor", data[i].series.color); var str = document.createElement("v:stroke"); str.setAttribute("opacity", "0.8"); c.appendChild(str); str = document.createElement("v:fill"); str.setAttribute("opacity", "0.6"); c.appendChild(str); var s = c.style; s.position = "absolute"; s.top = (y - r) + "px"; s.left = (x - r) + "px"; s.width = (r * 2) + "px"; s.height = (r * 2) + "px"; group.appendChild(c); if (applyTo) { applyTo(c, data[i].src); } } cmd.push("l"); cmd.push(x + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot))); cmd.push("l"); cmd.push(Math.round(plot.axisX.getCoord(data[0].x, plotarea, plot)) + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot))); path.setAttribute("path", cmd.join(" ") + " x e"); group.appendChild(path); return group; }, CurvedArea:function (data, plotarea, plot, applyTo) { var tension = 3; var area = plotarea.getArea(); var group = dojo.charting.Plotters._group(plotarea); if (data.length == 0) { return group; } var path = document.createElement("v:shape"); path.setAttribute("strokeweight", "1px"); path.setAttribute("strokecolor", data[0].series.color); path.setAttribute("fillcolor", data[0].series.color); path.setAttribute("coordsize", (area.right - area.left) + "," + (area.bottom - area.top)); path.style.position = "absolute"; path.style.top = "0px"; path.style.left = "0px"; path.style.width = area.right - area.left + "px"; path.style.height = area.bottom - area.top + "px"; var stroke = document.createElement("v:stroke"); stroke.setAttribute("opacity", "0.8"); path.appendChild(stroke); var fill = document.createElement("v:fill"); fill.setAttribute("opacity", "0.4"); path.appendChild(fill); var cmd = []; var r = 3; for (var i = 0; i < data.length; i++) { var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot)); var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot)); if (i == 0) { cmd.push("m"); cmd.push(x + "," + y); } else { var lastx = Math.round(plot.axisX.getCoord(data[i - 1].x, plotarea, plot)); var lasty = Math.round(plot.axisY.getCoord(data[i - 1].y, plotarea, plot)); var dx = x - lastx; var dy = y - lasty; cmd.push("c"); var cx = Math.round((x - (tension - 1) * (dx / tension))); cmd.push(cx + "," + lasty); cx = Math.round((x - (dx / tension))); cmd.push(cx + "," + y); cmd.push(x + "," + y); } var c = document.createElement("v:oval"); c.setAttribute("strokeweight", "1px"); c.setAttribute("strokecolor", data[i].series.color); c.setAttribute("fillcolor", data[i].series.color); var str = document.createElement("v:stroke"); str.setAttribute("opacity", "0.8"); c.appendChild(str); str = document.createElement("v:fill"); str.setAttribute("opacity", "0.6"); c.appendChild(str); var s = c.style; s.position = "absolute"; s.top = (y - r) + "px"; s.left = (x - r) + "px"; s.width = (r * 2) + "px"; s.height = (r * 2) + "px"; group.appendChild(c); if (applyTo) { applyTo(c, data[i].src); } } cmd.push("l"); cmd.push(x + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot))); cmd.push("l"); cmd.push(Math.round(plot.axisX.getCoord(data[0].x, plotarea, plot)) + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot))); path.setAttribute("path", cmd.join(" ") + " x e"); group.appendChild(path); return group; }, HighLow:function (data, plotarea, plot, applyTo) { var area = plotarea.getArea(); var group = dojo.charting.Plotters._group(plotarea); var n = data.length; var part = ((area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower)) / 4; var w = part * 2; for (var i = 0; i < n; i++) { var high = data[i].high; var low = data[i].low; if (low > high) { var t = low; low = high; high = t; } var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2); var y = plot.axisY.getCoord(high, plotarea, plot); var h = plot.axisY.getCoord(low, plotarea, plot) - y; var bar = document.createElement("v:rect"); bar.style.position = "absolute"; bar.style.top = y + 1 + "px"; bar.style.left = x + "px"; bar.style.width = w + "px"; bar.style.height = h + "px"; bar.setAttribute("fillColor", data[i].series.color); bar.setAttribute("stroked", "false"); bar.style.antialias = "false"; var fill = document.createElement("v:fill"); fill.setAttribute("opacity", "0.6"); bar.appendChild(fill); if (applyTo) { applyTo(bar, data[i].src); } group.appendChild(bar); } return group; }, HighLowClose:function (data, plotarea, plot, applyTo) { var area = plotarea.getArea(); var group = dojo.charting.Plotters._group(plotarea); var n = data.length; var part = ((area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower)) / 4; var w = part * 2; for (var i = 0; i < n; i++) { var high = data[i].high; var low = data[i].low; if (low > high) { var t = low; low = high; high = t; } var c = data[i].close; var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2); var y = plot.axisY.getCoord(high, plotarea, plot); var h = plot.axisY.getCoord(low, plotarea, plot) - y; var close = plot.axisY.getCoord(c, plotarea, plot); var g = document.createElement("div"); var bar = document.createElement("v:rect"); bar.style.position = "absolute"; bar.style.top = y + 1 + "px"; bar.style.left = x + "px"; bar.style.width = w + "px"; bar.style.height = h + "px"; bar.setAttribute("fillColor", data[i].series.color); bar.setAttribute("stroked", "false"); bar.style.antialias = "false"; var fill = document.createElement("v:fill"); fill.setAttribute("opacity", "0.6"); bar.appendChild(fill); g.appendChild(bar); var line = document.createElement("v:line"); line.setAttribute("strokecolor", data[i].series.color); line.setAttribute("strokeweight", "1px"); line.setAttribute("from", x + "px," + close + "px"); line.setAttribute("to", (x + w + (part * 2) - 2) + "px," + close + "px"); var s = line.style; s.position = "absolute"; s.top = "0px"; s.left = "0px"; s.antialias = "false"; var str = document.createElement("v:stroke"); str.setAttribute("opacity", "0.6"); line.appendChild(str); g.appendChild(line); if (applyTo) { applyTo(g, data[i].src); } group.appendChild(g); } return group; }, HighLowOpenClose:function (data, plotarea, plot, applyTo) { var area = plotarea.getArea(); var group = dojo.charting.Plotters._group(plotarea); var n = data.length; var part = ((area.right - area.left) / (plot.axisX.range.upper - plot.axisX.range.lower)) / 4; var w = part * 2; for (var i = 0; i < n; i++) { var high = data[i].high; var low = data[i].low; if (low > high) { var t = low; low = high; high = t; } var o = data[i].open; var c = data[i].close; var x = plot.axisX.getCoord(data[i].x, plotarea, plot) - (w / 2); var y = plot.axisY.getCoord(high, plotarea, plot); var h = plot.axisY.getCoord(low, plotarea, plot) - y; var open = plot.axisY.getCoord(o, plotarea, plot); var close = plot.axisY.getCoord(c, plotarea, plot); var g = document.createElement("div"); var bar = document.createElement("v:rect"); bar.style.position = "absolute"; bar.style.top = y + 1 + "px"; bar.style.left = x + "px"; bar.style.width = w + "px"; bar.style.height = h + "px"; bar.setAttribute("fillColor", data[i].series.color); bar.setAttribute("stroked", "false"); bar.style.antialias = "false"; var fill = document.createElement("v:fill"); fill.setAttribute("opacity", "0.6"); bar.appendChild(fill); g.appendChild(bar); var line = document.createElement("v:line"); line.setAttribute("strokecolor", data[i].series.color); line.setAttribute("strokeweight", "1px"); line.setAttribute("from", (x - (part * 2)) + "px," + open + "px"); line.setAttribute("to", (x + w - 2) + "px," + open + "px"); var s = line.style; s.position = "absolute"; s.top = "0px"; s.left = "0px"; s.antialias = "false"; var str = document.createElement("v:stroke"); str.setAttribute("opacity", "0.6"); line.appendChild(str); g.appendChild(line); var line = document.createElement("v:line"); line.setAttribute("strokecolor", data[i].series.color); line.setAttribute("strokeweight", "1px"); line.setAttribute("from", x + "px," + close + "px"); line.setAttribute("to", (x + w + (part * 2) - 2) + "px," + close + "px"); var s = line.style; s.position = "absolute"; s.top = "0px"; s.left = "0px"; s.antialias = "false"; var str = document.createElement("v:stroke"); str.setAttribute("opacity", "0.6"); line.appendChild(str); g.appendChild(line); if (applyTo) { applyTo(g, data[i].src); } group.appendChild(g); } return group; }, Scatter:function (data, plotarea, plot, applyTo) { var r = 6; var mod = r / 2; var area = plotarea.getArea(); var group = dojo.charting.Plotters._group(plotarea); for (var i = 0; i < data.length; i++) { var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot)); var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot)); var point = document.createElement("v:rect"); point.setAttribute("strokecolor", data[i].series.color); point.setAttribute("fillcolor", data[i].series.color); var fill = document.createElement("v:fill"); fill.setAttribute("opacity", "0.6"); point.appendChild(fill); var s = point.style; s.position = "absolute"; s.rotation = "45"; s.top = (y - mod) + "px"; s.left = (x - mod) + "px"; s.width = r + "px"; s.height = r + "px"; group.appendChild(point); if (applyTo) { applyTo(point, data[i].src); } } return group; }, Bubble:function (data, plotarea, plot, applyTo) { var sizeFactor = 1; var area = plotarea.getArea(); var group = dojo.charting.Plotters._group(plotarea); for (var i = 0; i < data.length; i++) { var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot)); var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot)); if (i == 0) { var raw = data[i].size; var dy = plot.axisY.getCoord(data[i].y + raw, plotarea, plot) - y; sizeFactor = dy / raw; } if (sizeFactor < 1) { sizeFactor = 1; } var r = (data[i].size / 2) * sizeFactor; var point = document.createElement("v:oval"); point.setAttribute("strokecolor", data[i].series.color); point.setAttribute("fillcolor", data[i].series.color); var fill = document.createElement("v:fill"); fill.setAttribute("opacity", "0.6"); point.appendChild(fill); var s = point.style; s.position = "absolute"; s.rotation = "45"; s.top = (y - r) + "px"; s.left = (x - r) + "px"; s.width = (r * 2) + "px"; s.height = (r * 2) + "px"; group.appendChild(point); if (applyTo) { applyTo(point, data[i].src); } } return group; }}); dojo.charting.Plotters["Default"] = dojo.charting.Plotters.Line; }

__CPAN_FILE__ src/charting/vml/Axis.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.charting.vml.Axis"); dojo.require("dojo.lang.common"); if (dojo.render.vml.capable) { dojo.extend(dojo.charting.Axis, {renderLines:function (plotArea, plot, plane) { if (this.nodes.lines) { while (this.nodes.lines.childNodes.length > 0) { this.nodes.lines.removeChild(this.nodes.lines.childNodes[0]); } if (this.nodes.lines.parentNode) { this.nodes.lines.parentNode.removeChild(this.nodes.lines); this.nodes.lines = null; } } var area = plotArea.getArea(); var g = this.nodes.lines = document.createElement("div"); g.setAttribute("id", this.getId() + "-lines"); for (var i = 0; i < this._labels.length; i++) { if (this._labels[i].value == this.origin) { continue; } var v = this.getCoord(this._labels[i].value, plotArea, plot); var l = document.createElement("v:line"); var str = document.createElement("v:stroke"); str.dashstyle = "dot"; l.appendChild(str); l.setAttribute("strokecolor", "#666"); l.setAttribute("strokeweight", "1px"); var s = l.style; s.position = "absolute"; s.top = "0px"; s.left = "0px"; s.antialias = "false"; if (plane == "x") { l.setAttribute("from", v + "px," + area.top + "px"); l.setAttribute("to", v + "px," + area.bottom + "px"); } else { if (plane == "y") { l.setAttribute("from", area.left + "px," + v + "px"); l.setAttribute("to", area.right + "px," + v + "px"); } } g.appendChild(l); } return g; }, renderTicks:function (plotArea, plot, plane, coord) { if (this.nodes.ticks) { while (this.nodes.ticks.childNodes.length > 0) { this.nodes.ticks.removeChild(this.nodes.ticks.childNodes[0]); } if (this.nodes.ticks.parentNode) { this.nodes.ticks.parentNode.removeChild(this.nodes.ticks); this.nodes.ticks = null; } } var g = this.nodes.ticks = document.createElement("div"); g.setAttribute("id", this.getId() + "-ticks"); for (var i = 0; i < this._labels.length; i++) { var v = this.getCoord(this._labels[i].value, plotArea, plot); var l = document.createElement("v:line"); l.setAttribute("strokecolor", "#000"); l.setAttribute("strokeweight", "1px"); var s = l.style; s.position = "absolute"; s.top = "0px"; s.left = "0px"; s.antialias = "false"; if (plane == "x") { l.setAttribute("from", v + "px," + coord + "px"); l.setAttribute("to", v + "px," + (coord + 3) + "px"); } else { if (plane == "y") { l.setAttribute("from", (coord - 2) + "px," + v + "px"); l.setAttribute("to", (coord + 2) + "px," + v + "px"); } } g.appendChild(l); } return g; }, renderLabels:function (plotArea, plot, plane, coord, textSize, anchor) { function createLabel(label, x, y, textSize, anchor) { var text = document.createElement("div"); var s = text.style; text.innerHTML = label; s.fontSize = textSize + "px"; s.fontFamily = "sans-serif"; s.position = "absolute"; s.top = y + "px"; if (anchor == "center") { s.left = x + "px"; s.textAlign = "center"; } else { if (anchor == "left") { s.left = x + "px"; s.textAlign = "left"; } else { if (anchor == "right") { s.right = x + "px"; s.textAlign = "right"; } } } return text; } if (this.nodes.labels) { while (this.nodes.labels.childNodes.length > 0) { this.nodes.labels.removeChild(this.nodes.labels.childNodes[0]); } if (this.nodes.labels.parentNode) { this.nodes.labels.parentNode.removeChild(this.nodes.labels); this.nodes.labels = null; } } var g = this.nodes.labels = document.createElement("div"); g.setAttribute("id", this.getId() + "-labels"); for (var i = 0; i < this._labels.length; i++) { var v = this.getCoord(this._labels[i].value, plotArea, plot); if (plane == "x") { var node = createLabel(this._labels[i].label, v, coord, textSize, anchor); document.body.appendChild(node); node.style.left = v - (node.offsetWidth / 2) + "px"; g.appendChild(node); } else { if (plane == "y") { var node = createLabel(this._labels[i].label, coord, v, textSize, anchor); document.body.appendChild(node); node.style.top = v - (node.offsetHeight / 2) + "px"; g.appendChild(node); } } } return g; }, render:function (plotArea, plot, drawAgainst, plane) { if (!this._rerender && this.nodes.main) { return this.nodes.main; } this._rerender = false; var area = plotArea.getArea(); var stroke = 1; var style = "stroke:#000;stroke-width:" + stroke + "px;"; var textSize = 10; var coord = drawAgainst.getCoord(this.origin, plotArea, plot); var g = this.nodes.main = document.createElement("div"); g.setAttribute("id", this.getId()); var line = this.nodes.axis = document.createElement("v:line"); line.setAttribute("strokecolor", "#000"); line.setAttribute("strokeweight", stroke + "px"); var s = line.style; s.position = "absolute"; s.top = "0px"; s.left = "0px"; s.antialias = "false"; if (plane == "x") { line.setAttribute("from", area.left + "px," + coord + "px"); line.setAttribute("to", area.right + "px," + coord + "px"); var y = coord + Math.floor(textSize / 2); if (this.showLines) { g.appendChild(this.renderLines(plotArea, plot, plane, y)); } if (this.showTicks) { g.appendChild(this.renderTicks(plotArea, plot, plane, coord)); } if (this.showLabels) { g.appendChild(this.renderLabels(plotArea, plot, plane, y, textSize, "center")); } if (this.showLabel && this.label) { var x = plotArea.size.width / 2; var y = coord + Math.round(textSize * 1.5); var text = document.createElement("div"); var s = text.style; text.innerHTML = this.label; s.fontSize = (textSize + 2) + "px"; s.fontFamily = "sans-serif"; s.fontWeight = "bold"; s.position = "absolute"; s.top = y + "px"; s.left = x + "px"; s.textAlign = "center"; document.body.appendChild(text); text.style.left = x - (text.offsetWidth / 2) + "px"; g.appendChild(text); } } else { line.setAttribute("from", coord + "px," + area.top + "px"); line.setAttribute("to", coord + "px," + area.bottom + "px"); var isMax = this.origin == drawAgainst.range.upper; var x = coord + 4; var anchor = "left"; if (!isMax) { x = area.right - coord + textSize + 4; anchor = "right"; if (coord == area.left) { x += (textSize * 2) - (textSize / 2); } } if (this.showLines) { g.appendChild(this.renderLines(plotArea, plot, plane, x)); } if (this.showTicks) { g.appendChild(this.renderTicks(plotArea, plot, plane, coord)); } if (this.showLabels) { g.appendChild(this.renderLabels(plotArea, plot, plane, x, textSize, anchor)); } if (this.showLabel && this.label) { x += (textSize * 2) - 2; var y = plotArea.size.height / 2; var text = document.createElement("div"); var s = text.style; text.innerHTML = this.label; s.fontSize = (textSize + 2) + "px"; s.fontFamily = "sans-serif"; s.fontWeight = "bold"; s.position = "absolute"; s.height = plotArea.size.height + "px"; s.writingMode = "tb-rl"; s.textAlign = "center"; s[anchor] = x + "px"; document.body.appendChild(text); s.top = y - (text.offsetHeight / 2) + "px"; g.appendChild(text); } } g.appendChild(line); return g; }}); }

__CPAN_DIR__ src/uri __CPAN_FILE__ src/uri/cache.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.uri.cache"]], definePackage:function (dojo) { dojo.provide("dojo.uri.cache"); dojo.uri.cache = {_cache:{}, set:function (uri, content) { this._cache[uri.toString()] = content; return uri; }, remove:function (uri) { delete this._cache[uri.toString()]; }, get:function (uri) { var key = uri.toString(); var value = this._cache[key]; if (!value) { value = dojo.hostenv.getText(key); if (value) { this._cache[key] = value; } } return value; }, allow:function (uri) { return uri; }}; }});

__CPAN_FILE__ src/uri/cache.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.uri.cache"); dojo.uri.cache = {_cache:{}, set:function (uri, content) { this._cache[uri.toString()] = content; return uri; }, remove:function (uri) { delete this._cache[uri.toString()]; }, get:function (uri) { var key = uri.toString(); var value = this._cache[key]; if (!value) { value = dojo.hostenv.getText(key); if (value) { this._cache[key] = value; } } return value; }, allow:function (uri) { return uri; }};

__CPAN_FILE__ src/uri/__package__.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.kwCompoundRequire({common:[["dojo.uri.Uri", false, false]]}); dojo.provide("dojo.uri.*");

__CPAN_FILE__ src/uri/__package__.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["kwCompoundRequire", {common:[["dojo.uri.Uri", false, false]]}], ["provide", "dojo.uri.*"]], definePackage:function (dojo) { dojo.kwCompoundRequire({common:[["dojo.uri.Uri", false, false]]}); dojo.provide("dojo.uri.*"); }});

__CPAN_FILE__ src/uri/Uri.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.uri.Uri"); dojo.uri = new function () { this.dojoUri = function (uri) { return new dojo.uri.Uri(dojo.hostenv.getBaseScriptUri(), uri); }; this.moduleUri = function (module, uri) { var loc = dojo.hostenv.getModuleSymbols(module).join("/"); if (!loc) { return null; } if (loc.lastIndexOf("/") != loc.length - 1) { loc += "/"; } var colonIndex = loc.indexOf(":"); var slashIndex = loc.indexOf("/"); if (loc.charAt(0) != "/" && (colonIndex == -1 || colonIndex > slashIndex)) { loc = dojo.hostenv.getBaseScriptUri() + loc; } return new dojo.uri.Uri(loc, uri); }; this.Uri = function () { var uri = arguments[0]; for (var i = 1; i < arguments.length; i++) { if (!arguments[i]) { continue; } var relobj = new dojo.uri.Uri(arguments[i].toString()); var uriobj = new dojo.uri.Uri(uri.toString()); if ((relobj.path == "") && (relobj.scheme == null) && (relobj.authority == null) && (relobj.query == null)) { if (relobj.fragment != null) { uriobj.fragment = relobj.fragment; } relobj = uriobj; } else { if (relobj.scheme == null) { relobj.scheme = uriobj.scheme; if (relobj.authority == null) { relobj.authority = uriobj.authority; if (relobj.path.charAt(0) != "/") { var path = uriobj.path.substring(0, uriobj.path.lastIndexOf("/") + 1) + relobj.path; var segs = path.split("/"); for (var j = 0; j < segs.length; j++) { if (segs[j] == ".") { if (j == segs.length - 1) { segs[j] = ""; } else { segs.splice(j, 1); j--; } } else { if (j > 0 && !(j == 1 && segs[0] == "") && segs[j] == ".." && segs[j - 1] != "..") { if (j == segs.length - 1) { segs.splice(j, 1); segs[j - 1] = ""; } else { segs.splice(j - 1, 2); j -= 2; } } } } relobj.path = segs.join("/"); } } } } uri = ""; if (relobj.scheme != null) { uri += relobj.scheme + ":"; } if (relobj.authority != null) { uri += "//" + relobj.authority; } uri += relobj.path; if (relobj.query != null) { uri += "?" + relobj.query; } if (relobj.fragment != null) { uri += "#" + relobj.fragment; } } this.uri = uri.toString(); var regexp = "^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$"; var r = this.uri.match(new RegExp(regexp)); this.scheme = r[2] || (r[1] ? "" : null); this.authority = r[4] || (r[3] ? "" : null); this.path = r[5]; this.query = r[7] || (r[6] ? "" : null); this.fragment = r[9] || (r[8] ? "" : null); if (this.authority != null) { regexp = "^((([^:]+:)?([^@]+))@)?([^:]*)(:([0-9]+))?$"; r = this.authority.match(new RegExp(regexp)); this.user = r[3] || null; this.password = r[4] || null; this.host = r[5]; this.port = r[7] || null; } this.toString = function () { return this.uri; }; }; };

__CPAN_FILE__ src/uri/Uri.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.uri.Uri"]], definePackage:function (dojo) { dojo.provide("dojo.uri.Uri"); dojo.uri = new function () { this.dojoUri = function (uri) { return new dojo.uri.Uri(dojo.hostenv.getBaseScriptUri(), uri); }; this.moduleUri = function (module, uri) { var loc = dojo.hostenv.getModuleSymbols(module).join("/"); if (!loc) { return null; } if (loc.lastIndexOf("/") != loc.length - 1) { loc += "/"; } var colonIndex = loc.indexOf(":"); var slashIndex = loc.indexOf("/"); if (loc.charAt(0) != "/" && (colonIndex == -1 || colonIndex > slashIndex)) { loc = dojo.hostenv.getBaseScriptUri() + loc; } return new dojo.uri.Uri(loc, uri); }; this.Uri = function () { var uri = arguments[0]; for (var i = 1; i < arguments.length; i++) { if (!arguments[i]) { continue; } var relobj = new dojo.uri.Uri(arguments[i].toString()); var uriobj = new dojo.uri.Uri(uri.toString()); if ((relobj.path == "") && (relobj.scheme == null) && (relobj.authority == null) && (relobj.query == null)) { if (relobj.fragment != null) { uriobj.fragment = relobj.fragment; } relobj = uriobj; } else { if (relobj.scheme == null) { relobj.scheme = uriobj.scheme; if (relobj.authority == null) { relobj.authority = uriobj.authority; if (relobj.path.charAt(0) != "/") { var path = uriobj.path.substring(0, uriobj.path.lastIndexOf("/") + 1) + relobj.path; var segs = path.split("/"); for (var j = 0; j < segs.length; j++) { if (segs[j] == ".") { if (j == segs.length - 1) { segs[j] = ""; } else { segs.splice(j, 1); j--; } } else { if (j > 0 && !(j == 1 && segs[0] == "") && segs[j] == ".." && segs[j - 1] != "..") { if (j == segs.length - 1) { segs.splice(j, 1); segs[j - 1] = ""; } else { segs.splice(j - 1, 2); j -= 2; } } } } relobj.path = segs.join("/"); } } } } uri = ""; if (relobj.scheme != null) { uri += relobj.scheme + ":"; } if (relobj.authority != null) { uri += "//" + relobj.authority; } uri += relobj.path; if (relobj.query != null) { uri += "?" + relobj.query; } if (relobj.fragment != null) { uri += "#" + relobj.fragment; } } this.uri = uri.toString(); var regexp = "^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$"; var r = this.uri.match(new RegExp(regexp)); this.scheme = r[2] || (r[1] ? "" : null); this.authority = r[4] || (r[3] ? "" : null); this.path = r[5]; this.query = r[7] || (r[6] ? "" : null); this.fragment = r[9] || (r[8] ? "" : null); if (this.authority != null) { regexp = "^((([^:]+:)?([^@]+))@)?([^:]*)(:([0-9]+))?$"; r = this.authority.match(new RegExp(regexp)); this.user = r[3] || null; this.password = r[4] || null; this.host = r[5]; this.port = r[7] || null; } this.toString = function () { return this.uri; }; }; }; }});

__CPAN_DIR__ src/math __CPAN_FILE__ src/math/points.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.math.points"); dojo.require("dojo.math"); dojo.math.points = {translate:function (a, b) { if (a.length != b.length) { dojo.raise("dojo.math.translate: points not same size (a:[" + a + "], b:[" + b + "])"); } var c = new Array(a.length); for (var i = 0; i < a.length; i++) { c[i] = a[i] + b[i]; } return c; }, midpoint:function (a, b) { if (a.length != b.length) { dojo.raise("dojo.math.midpoint: points not same size (a:[" + a + "], b:[" + b + "])"); } var c = new Array(a.length); for (var i = 0; i < a.length; i++) { c[i] = (a[i] + b[i]) / 2; } return c; }, invert:function (a) { var b = new Array(a.length); for (var i = 0; i < a.length; i++) { b[i] = -a[i]; } return b; }, distance:function (a, b) { return Math.sqrt(Math.pow(b[0] - a[0], 2) + Math.pow(b[1] - a[1], 2)); }};

__CPAN_FILE__ src/math/matrix.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.math.matrix"); dojo.math.matrix.iDF = 0; dojo.math.matrix.ALMOST_ZERO = 1e-10; dojo.math.matrix.multiply = function (a, b) { var ay = a.length; var ax = a[0].length; var by = b.length; var bx = b[0].length; if (ax != by) { dojo.debug("Can't multiply matricies of sizes " + ax + "," + ay + " and " + bx + "," + by); return [[0]]; } var c = []; for (var k = 0; k < ay; k++) { c[k] = []; for (var i = 0; i < bx; i++) { c[k][i] = 0; for (var m = 0; m < ax; m++) { c[k][i] += a[k][m] * b[m][i]; } } } return c; }; dojo.math.matrix.product = function () { if (arguments.length == 0) { dojo.debug("can't multiply 0 matrices!"); return 1; } var result = arguments[0]; for (var i = 1; i < arguments.length; i++) { result = dojo.math.matrix.multiply(result, arguments[i]); } return result; }; dojo.math.matrix.sum = function () { if (arguments.length == 0) { dojo.debug("can't sum 0 matrices!"); return 0; } var result = dojo.math.matrix.copy(arguments[0]); var rows = result.length; if (rows == 0) { dojo.debug("can't deal with matrices of 0 rows!"); return 0; } var cols = result[0].length; if (cols == 0) { dojo.debug("can't deal with matrices of 0 cols!"); return 0; } for (var i = 1; i < arguments.length; ++i) { var arg = arguments[i]; if (arg.length != rows || arg[0].length != cols) { dojo.debug("can't add matrices of different dimensions: first dimensions were " + rows + "x" + cols + ", current dimensions are " + arg.length + "x" + arg[0].length); return 0; } for (var r = 0; r < rows; r++) { for (var c = 0; c < cols; c++) { result[r][c] += arg[r][c]; } } } return result; }; dojo.math.matrix.inverse = function (a) { if (a.length == 1 && a[0].length == 1) { return [[1 / a[0][0]]]; } var tms = a.length; var m = dojo.math.matrix.create(tms, tms); var mm = dojo.math.matrix.adjoint(a); var det = dojo.math.matrix.determinant(a); var dd = 0; if (det == 0) { dojo.debug("Determinant Equals 0, Not Invertible."); return [[0]]; } else { dd = 1 / det; } for (var i = 0; i < tms; i++) { for (var j = 0; j < tms; j++) { m[i][j] = dd * mm[i][j]; } } return m; }; dojo.math.matrix.determinant = function (a) { if (a.length != a[0].length) { dojo.debug("Can't calculate the determiant of a non-squre matrix!"); return 0; } var tms = a.length; var det = 1; var b = dojo.math.matrix.upperTriangle(a); for (var i = 0; i < tms; i++) { var bii = b[i][i]; if (Math.abs(bii) < dojo.math.matrix.ALMOST_ZERO) { return 0; } det *= bii; } det = det * dojo.math.matrix.iDF; return det; }; dojo.math.matrix.upperTriangle = function (m) { m = dojo.math.matrix.copy(m); var f1 = 0; var temp = 0; var tms = m.length; var v = 1; dojo.math.matrix.iDF = 1; for (var col = 0; col < tms - 1; col++) { if (typeof m[col][col] != "number") { dojo.debug("non-numeric entry found in a numeric matrix: m[" + col + "][" + col + "]=" + m[col][col]); } v = 1; var stop_loop = 0; while ((m[col][col] == 0) && !stop_loop) { if (col + v >= tms) { dojo.math.matrix.iDF = 0; stop_loop = 1; } else { for (var r = 0; r < tms; r++) { temp = m[col][r]; m[col][r] = m[col + v][r]; m[col + v][r] = temp; } v++; dojo.math.matrix.iDF *= -1; } } for (var row = col + 1; row < tms; row++) { if (typeof m[row][col] != "number") { dojo.debug("non-numeric entry found in a numeric matrix: m[" + row + "][" + col + "]=" + m[row][col]); } if (typeof m[col][row] != "number") { dojo.debug("non-numeric entry found in a numeric matrix: m[" + col + "][" + row + "]=" + m[col][row]); } if (m[col][col] != 0) { var f1 = (-1) * m[row][col] / m[col][col]; for (var i = col; i < tms; i++) { m[row][i] = f1 * m[col][i] + m[row][i]; } } } } return m; }; dojo.math.matrix.create = function (a, b, value) { if (!value) { value = 0; } var m = []; for (var i = 0; i < b; i++) { m[i] = []; for (var j = 0; j < a; j++) { m[i][j] = value; } } return m; }; dojo.math.matrix.ones = function (a, b) { return dojo.math.matrix.create(a, b, 1); }; dojo.math.matrix.zeros = function (a, b) { return dojo.math.matrix.create(a, b, 0); }; dojo.math.matrix.identity = function (size, scale) { if (!scale) { scale = 1; } var m = []; for (var i = 0; i < size; i++) { m[i] = []; for (var j = 0; j < size; j++) { m[i][j] = (i == j ? scale : 0); } } return m; }; dojo.math.matrix.adjoint = function (a) { var tms = a.length; if (tms <= 1) { dojo.debug("Can't find the adjoint of a matrix with a dimension less than 2"); return [[0]]; } if (a.length != a[0].length) { dojo.debug("Can't find the adjoint of a non-square matrix"); return [[0]]; } var m = dojo.math.matrix.create(tms, tms); var ii = 0; var jj = 0; var ia = 0; var ja = 0; var det = 0; var ap = dojo.math.matrix.create(tms - 1, tms - 1); for (var i = 0; i < tms; i++) { for (var j = 0; j < tms; j++) { ia = 0; for (ii = 0; ii < tms; ii++) { if (ii == i) { continue; } ja = 0; for (jj = 0; jj < tms; jj++) { if (jj == j) { continue; } ap[ia][ja] = a[ii][jj]; ja++; } ia++; } det = dojo.math.matrix.determinant(ap); m[i][j] = Math.pow(-1, (i + j)) * det; } } m = dojo.math.matrix.transpose(m); return m; }; dojo.math.matrix.transpose = function (a) { var m = dojo.math.matrix.create(a.length, a[0].length); for (var i = 0; i < a.length; i++) { for (var j = 0; j < a[i].length; j++) { m[j][i] = a[i][j]; } } return m; }; dojo.math.matrix.format = function (a, decimal_points) { if (arguments.length <= 1) { decimal_points = 5; } function format_int(x, dp) { var fac = Math.pow(10, dp); var a = Math.round(x * fac) / fac; var b = a.toString(); if (b.charAt(0) != "-") { b = " " + b; } var has_dp = 0; for (var i = 1; i < b.length; i++) { if (b.charAt(i) == ".") { has_dp = 1; } } if (!has_dp) { b += "."; } while (b.length < dp + 3) { b += "0"; } return b; } var ya = a.length; var xa = ya > 0 ? a[0].length : 0; var buffer = ""; for (var y = 0; y < ya; y++) { buffer += "| "; for (var x = 0; x < xa; x++) { buffer += format_int(a[y][x], decimal_points) + " "; } buffer += "|\n"; } return buffer; }; dojo.math.matrix.copy = function (a) { var ya = a.length; var xa = a[0].length; var m = dojo.math.matrix.create(xa, ya); for (var y = 0; y < ya; y++) { for (var x = 0; x < xa; x++) { m[y][x] = a[y][x]; } } return m; }; dojo.math.matrix.scale = function (k, a) { a = dojo.math.matrix.copy(a); var ya = a.length; var xa = a[0].length; for (var y = 0; y < ya; y++) { for (var x = 0; x < xa; x++) { a[y][x] *= k; } } return a; };

__CPAN_FILE__ src/math/points.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.math.points"], ["require", "dojo.math"]], definePackage:function (dojo) { dojo.provide("dojo.math.points"); dojo.require("dojo.math"); dojo.math.points = {translate:function (a, b) { if (a.length != b.length) { dojo.raise("dojo.math.translate: points not same size (a:[" + a + "], b:[" + b + "])"); } var c = new Array(a.length); for (var i = 0; i < a.length; i++) { c[i] = a[i] + b[i]; } return c; }, midpoint:function (a, b) { if (a.length != b.length) { dojo.raise("dojo.math.midpoint: points not same size (a:[" + a + "], b:[" + b + "])"); } var c = new Array(a.length); for (var i = 0; i < a.length; i++) { c[i] = (a[i] + b[i]) / 2; } return c; }, invert:function (a) { var b = new Array(a.length); for (var i = 0; i < a.length; i++) { b[i] = -a[i]; } return b; }, distance:function (a, b) { return Math.sqrt(Math.pow(b[0] - a[0], 2) + Math.pow(b[1] - a[1], 2)); }}; }});

__CPAN_FILE__ src/math/curves.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.math.curves"); dojo.require("dojo.math"); dojo.math.curves = {Line:function (start, end) { this.start = start; this.end = end; this.dimensions = start.length; for (var i = 0; i < start.length; i++) { start[i] = Number(start[i]); } for (var i = 0; i < end.length; i++) { end[i] = Number(end[i]); } this.getValue = function (n) { var retVal = new Array(this.dimensions); for (var i = 0; i < this.dimensions; i++) { retVal[i] = ((this.end[i] - this.start[i]) * n) + this.start[i]; } return retVal; }; return this; }, Bezier:function (pnts) { this.getValue = function (step) { if (step >= 1) { return this.p[this.p.length - 1]; } if (step <= 0) { return this.p[0]; } var retVal = new Array(this.p[0].length); for (var k = 0; j < this.p[0].length; k++) { retVal[k] = 0; } for (var j = 0; j < this.p[0].length; j++) { var C = 0; var D = 0; for (var i = 0; i < this.p.length; i++) { C += this.p[i][j] * this.p[this.p.length - 1][0] * dojo.math.bernstein(step, this.p.length, i); } for (var l = 0; l < this.p.length; l++) { D += this.p[this.p.length - 1][0] * dojo.math.bernstein(step, this.p.length, l); } retVal[j] = C / D; } return retVal; }; this.p = pnts; return this; }, CatmullRom:function (pnts, c) { this.getValue = function (step) { var percent = step * (this.p.length - 1); var node = Math.floor(percent); var progress = percent - node; var i0 = node - 1; if (i0 < 0) { i0 = 0; } var i = node; var i1 = node + 1; if (i1 >= this.p.length) { i1 = this.p.length - 1; } var i2 = node + 2; if (i2 >= this.p.length) { i2 = this.p.length - 1; } var u = progress; var u2 = progress * progress; var u3 = progress * progress * progress; var retVal = new Array(this.p[0].length); for (var k = 0; k < this.p[0].length; k++) { var x1 = (-this.c * this.p[i0][k]) + ((2 - this.c) * this.p[i][k]) + ((this.c - 2) * this.p[i1][k]) + (this.c * this.p[i2][k]); var x2 = (2 * this.c * this.p[i0][k]) + ((this.c - 3) * this.p[i][k]) + ((3 - 2 * this.c) * this.p[i1][k]) + (-this.c * this.p[i2][k]); var x3 = (-this.c * this.p[i0][k]) + (this.c * this.p[i1][k]); var x4 = this.p[i][k]; retVal[k] = x1 * u3 + x2 * u2 + x3 * u + x4; } return retVal; }; if (!c) { this.c = 0.7; } else { this.c = c; } this.p = pnts; return this; }, Arc:function (start, end, ccw) { var center = dojo.math.points.midpoint(start, end); var sides = dojo.math.points.translate(dojo.math.points.invert(center), start); var rad = Math.sqrt(Math.pow(sides[0], 2) + Math.pow(sides[1], 2)); var theta = dojo.math.radToDeg(Math.atan(sides[1] / sides[0])); if (sides[0] < 0) { theta -= 90; } else { theta += 90; } dojo.math.curves.CenteredArc.call(this, center, rad, theta, theta + (ccw ? -180 : 180)); }, CenteredArc:function (center, radius, start, end) { this.center = center; this.radius = radius; this.start = start || 0; this.end = end; this.getValue = function (n) { var retVal = new Array(2); var theta = dojo.math.degToRad(this.start + ((this.end - this.start) * n)); retVal[0] = this.center[0] + this.radius * Math.sin(theta); retVal[1] = this.center[1] - this.radius * Math.cos(theta); return retVal; }; return this; }, Circle:function (center, radius) { dojo.math.curves.CenteredArc.call(this, center, radius, 0, 360); return this; }, Path:function () { var curves = []; var weights = []; var ranges = []; var totalWeight = 0; this.add = function (curve, weight) { if (weight < 0) { dojo.raise("dojo.math.curves.Path.add: weight cannot be less than 0"); } curves.push(curve); weights.push(weight); totalWeight += weight; computeRanges(); }; this.remove = function (curve) { for (var i = 0; i < curves.length; i++) { if (curves[i] == curve) { curves.splice(i, 1); totalWeight -= weights.splice(i, 1)[0]; break; } } computeRanges(); }; this.removeAll = function () { curves = []; weights = []; totalWeight = 0; }; this.getValue = function (n) { var found = false, value = 0; for (var i = 0; i < ranges.length; i++) { var r = ranges[i]; if (n >= r[0] && n < r[1]) { var subN = (n - r[0]) / r[2]; value = curves[i].getValue(subN); found = true; break; } } if (!found) { value = curves[curves.length - 1].getValue(1); } for (var j = 0; j < i; j++) { value = dojo.math.points.translate(value, curves[j].getValue(1)); } return value; }; function computeRanges() { var start = 0; for (var i = 0; i < weights.length; i++) { var end = start + weights[i] / totalWeight; var len = end - start; ranges[i] = [start, end, len]; start = end; } } return this; }};

__CPAN_FILE__ src/math/__package__.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.kwCompoundRequire({common:[["dojo.math", false, false], ["dojo.math.curves", false, false], ["dojo.math.points", false, false]]}); dojo.provide("dojo.math.*");

__CPAN_FILE__ src/math/curves.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.math.curves"], ["require", "dojo.math"]], definePackage:function (dojo) { dojo.provide("dojo.math.curves"); dojo.require("dojo.math"); dojo.math.curves = {Line:function (start, end) { this.start = start; this.end = end; this.dimensions = start.length; for (var i = 0; i < start.length; i++) { start[i] = Number(start[i]); } for (var i = 0; i < end.length; i++) { end[i] = Number(end[i]); } this.getValue = function (n) { var retVal = new Array(this.dimensions); for (var i = 0; i < this.dimensions; i++) { retVal[i] = ((this.end[i] - this.start[i]) * n) + this.start[i]; } return retVal; }; return this; }, Bezier:function (pnts) { this.getValue = function (step) { if (step >= 1) { return this.p[this.p.length - 1]; } if (step <= 0) { return this.p[0]; } var retVal = new Array(this.p[0].length); for (var k = 0; j < this.p[0].length; k++) { retVal[k] = 0; } for (var j = 0; j < this.p[0].length; j++) { var C = 0; var D = 0; for (var i = 0; i < this.p.length; i++) { C += this.p[i][j] * this.p[this.p.length - 1][0] * dojo.math.bernstein(step, this.p.length, i); } for (var l = 0; l < this.p.length; l++) { D += this.p[this.p.length - 1][0] * dojo.math.bernstein(step, this.p.length, l); } retVal[j] = C / D; } return retVal; }; this.p = pnts; return this; }, CatmullRom:function (pnts, c) { this.getValue = function (step) { var percent = step * (this.p.length - 1); var node = Math.floor(percent); var progress = percent - node; var i0 = node - 1; if (i0 < 0) { i0 = 0; } var i = node; var i1 = node + 1; if (i1 >= this.p.length) { i1 = this.p.length - 1; } var i2 = node + 2; if (i2 >= this.p.length) { i2 = this.p.length - 1; } var u = progress; var u2 = progress * progress; var u3 = progress * progress * progress; var retVal = new Array(this.p[0].length); for (var k = 0; k < this.p[0].length; k++) { var x1 = (-this.c * this.p[i0][k]) + ((2 - this.c) * this.p[i][k]) + ((this.c - 2) * this.p[i1][k]) + (this.c * this.p[i2][k]); var x2 = (2 * this.c * this.p[i0][k]) + ((this.c - 3) * this.p[i][k]) + ((3 - 2 * this.c) * this.p[i1][k]) + (-this.c * this.p[i2][k]); var x3 = (-this.c * this.p[i0][k]) + (this.c * this.p[i1][k]); var x4 = this.p[i][k]; retVal[k] = x1 * u3 + x2 * u2 + x3 * u + x4; } return retVal; }; if (!c) { this.c = 0.7; } else { this.c = c; } this.p = pnts; return this; }, Arc:function (start, end, ccw) { var center = dojo.math.points.midpoint(start, end); var sides = dojo.math.points.translate(dojo.math.points.invert(center), start); var rad = Math.sqrt(Math.pow(sides[0], 2) + Math.pow(sides[1], 2)); var theta = dojo.math.radToDeg(Math.atan(sides[1] / sides[0])); if (sides[0] < 0) { theta -= 90; } else { theta += 90; } dojo.math.curves.CenteredArc.call(this, center, rad, theta, theta + (ccw ? -180 : 180)); }, CenteredArc:function (center, radius, start, end) { this.center = center; this.radius = radius; this.start = start || 0; this.end = end; this.getValue = function (n) { var retVal = new Array(2); var theta = dojo.math.degToRad(this.start + ((this.end - this.start) * n)); retVal[0] = this.center[0] + this.radius * Math.sin(theta); retVal[1] = this.center[1] - this.radius * Math.cos(theta); return retVal; }; return this; }, Circle:function (center, radius) { dojo.math.curves.CenteredArc.call(this, center, radius, 0, 360); return this; }, Path:function () { var curves = []; var weights = []; var ranges = []; var totalWeight = 0; this.add = function (curve, weight) { if (weight < 0) { dojo.raise("dojo.math.curves.Path.add: weight cannot be less than 0"); } curves.push(curve); weights.push(weight); totalWeight += weight; computeRanges(); }; this.remove = function (curve) { for (var i = 0; i < curves.length; i++) { if (curves[i] == curve) { curves.splice(i, 1); totalWeight -= weights.splice(i, 1)[0]; break; } } computeRanges(); }; this.removeAll = function () { curves = []; weights = []; totalWeight = 0; }; this.getValue = function (n) { var found = false, value = 0; for (var i = 0; i < ranges.length; i++) { var r = ranges[i]; if (n >= r[0] && n < r[1]) { var subN = (n - r[0]) / r[2]; value = curves[i].getValue(subN); found = true; break; } } if (!found) { value = curves[curves.length - 1].getValue(1); } for (var j = 0; j < i; j++) { value = dojo.math.points.translate(value, curves[j].getValue(1)); } return value; }; function computeRanges() { var start = 0; for (var i = 0; i < weights.length; i++) { var end = start + weights[i] / totalWeight; var len = end - start; ranges[i] = [start, end, len]; start = end; } } return this; }}; }});

__CPAN_FILE__ src/math/matrix.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.math.matrix"]], definePackage:function (dojo) { dojo.provide("dojo.math.matrix"); dojo.math.matrix.iDF = 0; dojo.math.matrix.ALMOST_ZERO = 1e-10; dojo.math.matrix.multiply = function (a, b) { var ay = a.length; var ax = a[0].length; var by = b.length; var bx = b[0].length; if (ax != by) { dojo.debug("Can't multiply matricies of sizes " + ax + "," + ay + " and " + bx + "," + by); return [[0]]; } var c = []; for (var k = 0; k < ay; k++) { c[k] = []; for (var i = 0; i < bx; i++) { c[k][i] = 0; for (var m = 0; m < ax; m++) { c[k][i] += a[k][m] * b[m][i]; } } } return c; }; dojo.math.matrix.product = function () { if (arguments.length == 0) { dojo.debug("can't multiply 0 matrices!"); return 1; } var result = arguments[0]; for (var i = 1; i < arguments.length; i++) { result = dojo.math.matrix.multiply(result, arguments[i]); } return result; }; dojo.math.matrix.sum = function () { if (arguments.length == 0) { dojo.debug("can't sum 0 matrices!"); return 0; } var result = dojo.math.matrix.copy(arguments[0]); var rows = result.length; if (rows == 0) { dojo.debug("can't deal with matrices of 0 rows!"); return 0; } var cols = result[0].length; if (cols == 0) { dojo.debug("can't deal with matrices of 0 cols!"); return 0; } for (var i = 1; i < arguments.length; ++i) { var arg = arguments[i]; if (arg.length != rows || arg[0].length != cols) { dojo.debug("can't add matrices of different dimensions: first dimensions were " + rows + "x" + cols + ", current dimensions are " + arg.length + "x" + arg[0].length); return 0; } for (var r = 0; r < rows; r++) { for (var c = 0; c < cols; c++) { result[r][c] += arg[r][c]; } } } return result; }; dojo.math.matrix.inverse = function (a) { if (a.length == 1 && a[0].length == 1) { return [[1 / a[0][0]]]; } var tms = a.length; var m = dojo.math.matrix.create(tms, tms); var mm = dojo.math.matrix.adjoint(a); var det = dojo.math.matrix.determinant(a); var dd = 0; if (det == 0) { dojo.debug("Determinant Equals 0, Not Invertible."); return [[0]]; } else { dd = 1 / det; } for (var i = 0; i < tms; i++) { for (var j = 0; j < tms; j++) { m[i][j] = dd * mm[i][j]; } } return m; }; dojo.math.matrix.determinant = function (a) { if (a.length != a[0].length) { dojo.debug("Can't calculate the determiant of a non-squre matrix!"); return 0; } var tms = a.length; var det = 1; var b = dojo.math.matrix.upperTriangle(a); for (var i = 0; i < tms; i++) { var bii = b[i][i]; if (Math.abs(bii) < dojo.math.matrix.ALMOST_ZERO) { return 0; } det *= bii; } det = det * dojo.math.matrix.iDF; return det; }; dojo.math.matrix.upperTriangle = function (m) { m = dojo.math.matrix.copy(m); var f1 = 0; var temp = 0; var tms = m.length; var v = 1; dojo.math.matrix.iDF = 1; for (var col = 0; col < tms - 1; col++) { if (typeof m[col][col] != "number") { dojo.debug("non-numeric entry found in a numeric matrix: m[" + col + "][" + col + "]=" + m[col][col]); } v = 1; var stop_loop = 0; while ((m[col][col] == 0) && !stop_loop) { if (col + v >= tms) { dojo.math.matrix.iDF = 0; stop_loop = 1; } else { for (var r = 0; r < tms; r++) { temp = m[col][r]; m[col][r] = m[col + v][r]; m[col + v][r] = temp; } v++; dojo.math.matrix.iDF *= -1; } } for (var row = col + 1; row < tms; row++) { if (typeof m[row][col] != "number") { dojo.debug("non-numeric entry found in a numeric matrix: m[" + row + "][" + col + "]=" + m[row][col]); } if (typeof m[col][row] != "number") { dojo.debug("non-numeric entry found in a numeric matrix: m[" + col + "][" + row + "]=" + m[col][row]); } if (m[col][col] != 0) { var f1 = (-1) * m[row][col] / m[col][col]; for (var i = col; i < tms; i++) { m[row][i] = f1 * m[col][i] + m[row][i]; } } } } return m; }; dojo.math.matrix.create = function (a, b, value) { if (!value) { value = 0; } var m = []; for (var i = 0; i < b; i++) { m[i] = []; for (var j = 0; j < a; j++) { m[i][j] = value; } } return m; }; dojo.math.matrix.ones = function (a, b) { return dojo.math.matrix.create(a, b, 1); }; dojo.math.matrix.zeros = function (a, b) { return dojo.math.matrix.create(a, b, 0); }; dojo.math.matrix.identity = function (size, scale) { if (!scale) { scale = 1; } var m = []; for (var i = 0; i < size; i++) { m[i] = []; for (var j = 0; j < size; j++) { m[i][j] = (i == j ? scale : 0); } } return m; }; dojo.math.matrix.adjoint = function (a) { var tms = a.length; if (tms <= 1) { dojo.debug("Can't find the adjoint of a matrix with a dimension less than 2"); return [[0]]; } if (a.length != a[0].length) { dojo.debug("Can't find the adjoint of a non-square matrix"); return [[0]]; } var m = dojo.math.matrix.create(tms, tms); var ii = 0; var jj = 0; var ia = 0; var ja = 0; var det = 0; var ap = dojo.math.matrix.create(tms - 1, tms - 1); for (var i = 0; i < tms; i++) { for (var j = 0; j < tms; j++) { ia = 0; for (ii = 0; ii < tms; ii++) { if (ii == i) { continue; } ja = 0; for (jj = 0; jj < tms; jj++) { if (jj == j) { continue; } ap[ia][ja] = a[ii][jj]; ja++; } ia++; } det = dojo.math.matrix.determinant(ap); m[i][j] = Math.pow(-1, (i + j)) * det; } } m = dojo.math.matrix.transpose(m); return m; }; dojo.math.matrix.transpose = function (a) { var m = dojo.math.matrix.create(a.length, a[0].length); for (var i = 0; i < a.length; i++) { for (var j = 0; j < a[i].length; j++) { m[j][i] = a[i][j]; } } return m; }; dojo.math.matrix.format = function (a, decimal_points) { if (arguments.length <= 1) { decimal_points = 5; } function format_int(x, dp) { var fac = Math.pow(10, dp); var a = Math.round(x * fac) / fac; var b = a.toString(); if (b.charAt(0) != "-") { b = " " + b; } var has_dp = 0; for (var i = 1; i < b.length; i++) { if (b.charAt(i) == ".") { has_dp = 1; } } if (!has_dp) { b += "."; } while (b.length < dp + 3) { b += "0"; } return b; } var ya = a.length; var xa = ya > 0 ? a[0].length : 0; var buffer = ""; for (var y = 0; y < ya; y++) { buffer += "| "; for (var x = 0; x < xa; x++) { buffer += format_int(a[y][x], decimal_points) + " "; } buffer += "|\n"; } return buffer; }; dojo.math.matrix.copy = function (a) { var ya = a.length; var xa = a[0].length; var m = dojo.math.matrix.create(xa, ya); for (var y = 0; y < ya; y++) { for (var x = 0; x < xa; x++) { m[y][x] = a[y][x]; } } return m; }; dojo.math.matrix.scale = function (k, a) { a = dojo.math.matrix.copy(a); var ya = a.length; var xa = a[0].length; for (var y = 0; y < ya; y++) { for (var x = 0; x < xa; x++) { a[y][x] *= k; } } return a; }; }});

__CPAN_FILE__ src/math/__package__.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["kwCompoundRequire", {common:[["dojo.math", false, false], ["dojo.math.curves", false, false], ["dojo.math.points", false, false]]}], ["provide", "dojo.math.*"]], definePackage:function (dojo) { dojo.kwCompoundRequire({common:[["dojo.math", false, false], ["dojo.math.curves", false, false], ["dojo.math.points", false, false]]}); dojo.provide("dojo.math.*"); }});

__CPAN_DIR__ src/collections __CPAN_FILE__ src/collections/Set.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.collections.Set"); dojo.require("dojo.collections.Collections"); dojo.require("dojo.collections.ArrayList"); dojo.collections.Set = new function () { this.union = function (setA, setB) { if (setA.constructor == Array) { var setA = new dojo.collections.ArrayList(setA); } if (setB.constructor == Array) { var setB = new dojo.collections.ArrayList(setB); } if (!setA.toArray || !setB.toArray) { dojo.raise("Set operations can only be performed on array-based collections."); } var result = new dojo.collections.ArrayList(setA.toArray()); var e = setB.getIterator(); while (!e.atEnd()) { var item = e.get(); if (!result.contains(item)) { result.add(item); } } return result; }; this.intersection = function (setA, setB) { if (setA.constructor == Array) { var setA = new dojo.collections.ArrayList(setA); } if (setB.constructor == Array) { var setB = new dojo.collections.ArrayList(setB); } if (!setA.toArray || !setB.toArray) { dojo.raise("Set operations can only be performed on array-based collections."); } var result = new dojo.collections.ArrayList(); var e = setB.getIterator(); while (!e.atEnd()) { var item = e.get(); if (setA.contains(item)) { result.add(item); } } return result; }; this.difference = function (setA, setB) { if (setA.constructor == Array) { var setA = new dojo.collections.ArrayList(setA); } if (setB.constructor == Array) { var setB = new dojo.collections.ArrayList(setB); } if (!setA.toArray || !setB.toArray) { dojo.raise("Set operations can only be performed on array-based collections."); } var result = new dojo.collections.ArrayList(); var e = setA.getIterator(); while (!e.atEnd()) { var item = e.get(); if (!setB.contains(item)) { result.add(item); } } return result; }; this.isSubSet = function (setA, setB) { if (setA.constructor == Array) { var setA = new dojo.collections.ArrayList(setA); } if (setB.constructor == Array) { var setB = new dojo.collections.ArrayList(setB); } if (!setA.toArray || !setB.toArray) { dojo.raise("Set operations can only be performed on array-based collections."); } var e = setA.getIterator(); while (!e.atEnd()) { if (!setB.contains(e.get())) { return false; } } return true; }; this.isSuperSet = function (setA, setB) { if (setA.constructor == Array) { var setA = new dojo.collections.ArrayList(setA); } if (setB.constructor == Array) { var setB = new dojo.collections.ArrayList(setB); } if (!setA.toArray || !setB.toArray) { dojo.raise("Set operations can only be performed on array-based collections."); } var e = setB.getIterator(); while (!e.atEnd()) { if (!setA.contains(e.get())) { return false; } } return true; }; }();

__CPAN_FILE__ src/collections/Dictionary.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.collections.Dictionary"], ["require", "dojo.collections.Collections"]], definePackage:function (dojo) { dojo.provide("dojo.collections.Dictionary"); dojo.require("dojo.collections.Collections"); dojo.collections.Dictionary = function (dictionary) { var items = {}; this.count = 0; var testObject = {}; this.add = function (k, v) { var b = (k in items); items[k] = new dojo.collections.DictionaryEntry(k, v); if (!b) { this.count++; } }; this.clear = function () { items = {}; this.count = 0; }; this.clone = function () { return new dojo.collections.Dictionary(this); }; this.contains = this.containsKey = function (k) { if (testObject[k]) { return false; } return (items[k] != null); }; this.containsValue = function (v) { var e = this.getIterator(); while (e.get()) { if (e.element.value == v) { return true; } } return false; }; this.entry = function (k) { return items[k]; }; this.forEach = function (fn, scope) { var a = []; for (var p in items) { if (!testObject[p]) { a.push(items[p]); } } var s = scope || dj_global; if (Array.forEach) { Array.forEach(a, fn, s); } else { for (var i = 0; i < a.length; i++) { fn.call(s, a[i], i, a); } } }; this.getKeyList = function () { return (this.getIterator()).map(function (entry) { return entry.key; }); }; this.getValueList = function () { return (this.getIterator()).map(function (entry) { return entry.value; }); }; this.item = function (k) { if (k in items) { return items[k].valueOf(); } return undefined; }; this.getIterator = function () { return new dojo.collections.DictionaryIterator(items); }; this.remove = function (k) { if (k in items && !testObject[k]) { delete items[k]; this.count--; return true; } return false; }; if (dictionary) { var e = dictionary.getIterator(); while (e.get()) { this.add(e.element.key, e.element.value); } } }; }});

__CPAN_FILE__ src/collections/Collections.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.collections.Collections"); dojo.collections.DictionaryEntry = function (k, v) { this.key = k; this.value = v; this.valueOf = function () { return this.value; }; this.toString = function () { return String(this.value); }; }; dojo.collections.Iterator = function (arr) { var a = arr; var position = 0; this.element = a[position] || null; this.atEnd = function () { return (position >= a.length); }; this.get = function () { if (this.atEnd()) { return null; } this.element = a[position++]; return this.element; }; this.map = function (fn, scope) { var s = scope || dj_global; if (Array.map) { return Array.map(a, fn, s); } else { var arr = []; for (var i = 0; i < a.length; i++) { arr.push(fn.call(s, a[i])); } return arr; } }; this.reset = function () { position = 0; this.element = a[position]; }; }; dojo.collections.DictionaryIterator = function (obj) { var a = []; var testObject = {}; for (var p in obj) { if (!testObject[p]) { a.push(obj[p]); } } var position = 0; this.element = a[position] || null; this.atEnd = function () { return (position >= a.length); }; this.get = function () { if (this.atEnd()) { return null; } this.element = a[position++]; return this.element; }; this.map = function (fn, scope) { var s = scope || dj_global; if (Array.map) { return Array.map(a, fn, s); } else { var arr = []; for (var i = 0; i < a.length; i++) { arr.push(fn.call(s, a[i])); } return arr; } }; this.reset = function () { position = 0; this.element = a[position]; }; };

__CPAN_FILE__ src/collections/Store.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.collections.Store"); dojo.require("dojo.lang.common"); dojo.collections.Store = function (jsonArray) { var data = []; var items = {}; this.keyField = "Id"; this.get = function () { return data; }; this.getByKey = function (key) { return items[key]; }; this.getByIndex = function (idx) { return data[idx]; }; this.getIndexOf = function (key) { for (var i = 0; i < data.length; i++) { if (data[i].key == key) { return i; } } return -1; }; this.getData = function () { var arr = []; for (var i = 0; i < data.length; i++) { arr.push(data[i].src); } return arr; }; this.getDataByKey = function (key) { if (items[key] != null) { return items[key].src; } return null; }; this.getIndexOfData = function (obj) { for (var i = 0; i < data.length; i++) { if (data[i].src == obj) { return i; } } return -1; }; this.getDataByIndex = function (idx) { if (data[idx]) { return data[idx].src; } return null; }; this.update = function (obj, fieldPath, val, bDontFire) { var parts = fieldPath.split("."), i = 0, o = obj, field; if (parts.length > 1) { field = parts.pop(); do { if (parts[i].indexOf("()") > -1) { var temp = parts[i++].split("()")[0]; if (!o[temp]) { dojo.raise("dojo.collections.Store.getField(obj, '" + field + "'): '" + temp + "' is not a property of the passed object."); } else { o = o[temp](); } } else { o = o[parts[i++]]; } } while (i < parts.length && o != null); } else { field = parts[0]; } obj[field] = val; if (!bDontFire) { this.onUpdateField(obj, fieldPath, val); } }; this.forEach = function (fn) { if (Array.forEach) { Array.forEach(data, fn, this); } else { for (var i = 0; i < data.length; i++) { fn.call(this, data[i]); } } }; this.forEachData = function (fn) { if (Array.forEach) { Array.forEach(this.getData(), fn, this); } else { var a = this.getData(); for (var i = 0; i < a.length; i++) { fn.call(this, a[i]); } } }; this.setData = function (arr, bDontFire) { data = []; for (var i = 0; i < arr.length; i++) { var o = {key:arr[i][this.keyField], src:arr[i]}; data.push(o); items[o.key] = o; } if (!bDontFire) { this.onSetData(); } }; this.clearData = function (bDontFire) { data = []; items = {}; if (!bDontFire) { this.onClearData(); } }; this.addData = function (obj, key, bDontFire) { var k = key || obj[this.keyField]; if (items[k] != null) { var o = items[k]; o.src = obj; } else { var o = {key:k, src:obj}; data.push(o); items[o.key] = o; } if (!bDontFire) { this.onAddData(o); } }; this.addDataRange = function (arr, bDontFire) { var objects = []; for (var i = 0; i < arr.length; i++) { var k = arr[i][this.keyField]; if (items[k] != null) { var o = items[k]; o.src = arr[i]; } else { var o = {key:k, src:arr[i]}; data.push(o); items[k] = o; } objects.push(o); } if (!bDontFire) { this.onAddDataRange(objects); } }; this.addDataByIndex = function (obj, idx, key, bDontFire) { var k = key || obj[this.keyField]; if (items[k] != null) { var i = this.getIndexOf(k); var o = data.splice(i, 1); o.src = obj; } else { var o = {key:k, src:obj}; items[k] = o; } data.splice(idx, 0, o); if (!bDontFire) { this.onAddData(o); } }; this.addDataRangeByIndex = function (arr, idx, bDontFire) { var objects = []; for (var i = 0; i < arr.length; i++) { var k = arr[i][this.keyField]; if (items[k] != null) { var j = this.getIndexOf(k); var o = data.splice(j, 1); o.src = arr[i]; } else { var o = {key:k, src:arr[i]}; items[k] = o; } objects.push(o); } data.splice(idx, 0, objects); if (!bDontFire) { this.onAddDataRange(objects); } }; this.removeData = function (obj, bDontFire) { var idx = -1; var o = null; for (var i = 0; i < data.length; i++) { if (data[i].src == obj) { idx = i; o = data[i]; break; } } if (!bDontFire) { this.onRemoveData(o); } if (idx > -1) { data.splice(idx, 1); delete items[o.key]; } }; this.removeDataRange = function (idx, range, bDontFire) { var ret = data.splice(idx, range); for (var i = 0; i < ret.length; i++) { delete items[ret[i].key]; } if (!bDontFire) { this.onRemoveDataRange(ret); } return ret; }; this.removeDataByKey = function (key, bDontFire) { this.removeData(this.getDataByKey(key), bDontFire); }; this.removeDataByIndex = function (idx, bDontFire) { this.removeData(this.getDataByIndex(idx), bDontFire); }; if (jsonArray && jsonArray.length && jsonArray[0]) { this.setData(jsonArray, true); } }; dojo.extend(dojo.collections.Store, {getField:function (obj, field) { var parts = field.split("."), i = 0, o = obj; do { if (parts[i].indexOf("()") > -1) { var temp = parts[i++].split("()")[0]; if (!o[temp]) { dojo.raise("dojo.collections.Store.getField(obj, '" + field + "'): '" + temp + "' is not a property of the passed object."); } else { o = o[temp](); } } else { o = o[parts[i++]]; } } while (i < parts.length && o != null); if (i < parts.length) { dojo.raise("dojo.collections.Store.getField(obj, '" + field + "'): '" + field + "' is not a property of the passed object."); } return o; }, getFromHtml:function (meta, body, fnMod) { var rows = body.rows; var ctor = function (row) { var obj = {}; for (var i = 0; i < meta.length; i++) { var o = obj; var data = row.cells[i].innerHTML; var p = meta[i].getField(); if (p.indexOf(".") > -1) { p = p.split("."); while (p.length > 1) { var pr = p.shift(); o[pr] = {}; o = o[pr]; } p = p[0]; } var type = meta[i].getType(); if (type == String) { o[p] = data; } else { if (data) { o[p] = new type(data); } else { o[p] = new type(); } } } return obj; }; var arr = []; for (var i = 0; i < rows.length; i++) { var o = ctor(rows[i]); if (fnMod) { fnMod(o, rows[i]); } arr.push(o); } return arr; }, onSetData:function () { }, onClearData:function () { }, onAddData:function (obj) { }, onAddDataRange:function (arr) { }, onRemoveData:function (obj) { }, onRemoveDataRange:function (arr) { }, onUpdateField:function (obj, field, val) { }});

__CPAN_FILE__ src/collections/Queue.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.collections.Queue"], ["require", "dojo.collections.Collections"]], definePackage:function (dojo) { dojo.provide("dojo.collections.Queue"); dojo.require("dojo.collections.Collections"); dojo.collections.Queue = function (arr) { var q = []; if (arr) { q = q.concat(arr); } this.count = q.length; this.clear = function () { q = []; this.count = q.length; }; this.clone = function () { return new dojo.collections.Queue(q); }; this.contains = function (o) { for (var i = 0; i < q.length; i++) { if (q[i] == o) { return true; } } return false; }; this.copyTo = function (arr, i) { arr.splice(i, 0, q); }; this.dequeue = function () { var r = q.shift(); this.count = q.length; return r; }; this.enqueue = function (o) { this.count = q.push(o); }; this.forEach = function (fn, scope) { var s = scope || dj_global; if (Array.forEach) { Array.forEach(q, fn, s); } else { for (var i = 0; i < q.length; i++) { fn.call(s, q[i], i, q); } } }; this.getIterator = function () { return new dojo.collections.Iterator(q); }; this.peek = function () { return q[0]; }; this.toArray = function () { return [].concat(q); }; }; }});

__CPAN_FILE__ src/collections/BinaryTree.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.collections.BinaryTree"], ["require", "dojo.collections.Collections"], ["require", "dojo.experimental"]], definePackage:function (dojo) { dojo.provide("dojo.collections.BinaryTree"); dojo.require("dojo.collections.Collections"); dojo.require("dojo.experimental"); dojo.experimental("dojo.collections.BinaryTree"); dojo.collections.BinaryTree = function (data) { function node(data, rnode, lnode) { this.value = data || null; this.right = rnode || null; this.left = lnode || null; this.clone = function () { var c = new node(); if (this.value.value) { c.value = this.value.clone(); } else { c.value = this.value; } if (this.left) { c.left = this.left.clone(); } if (this.right) { c.right = this.right.clone(); } }; this.compare = function (n) { if (this.value > n.value) { return 1; } if (this.value < n.value) { return -1; } return 0; }; this.compareData = function (d) { if (this.value > d) { return 1; } if (this.value < d) { return -1; } return 0; }; } function inorderTraversalBuildup(current, a) { if (current) { inorderTraversalBuildup(current.left, a); a.add(current); inorderTraversalBuildup(current.right, a); } } function preorderTraversal(current, sep) { var s = ""; if (current) { s = current.value.toString() + sep; s += preorderTraversal(current.left, sep); s += preorderTraversal(current.right, sep); } return s; } function inorderTraversal(current, sep) { var s = ""; if (current) { s = inorderTraversal(current.left, sep); s += current.value.toString() + sep; s += inorderTraversal(current.right, sep); } return s; } function postorderTraversal(current, sep) { var s = ""; if (current) { s = postorderTraversal(current.left, sep); s += postorderTraversal(current.right, sep); s += current.value.toString() + sep; } return s; } function searchHelper(current, data) { if (!current) { return null; } var i = current.compareData(data); if (i == 0) { return current; } if (i > 0) { return searchHelper(current.left, data); } else { return searchHelper(current.right, data); } } this.add = function (data) { var n = new node(data); var i; var current = root; var parent = null; while (current) { i = current.compare(n); if (i == 0) { return; } parent = current; if (i > 0) { current = current.left; } else { current = current.right; } } this.count++; if (!parent) { root = n; } else { i = parent.compare(n); if (i > 0) { parent.left = n; } else { parent.right = n; } } }; this.clear = function () { root = null; this.count = 0; }; this.clone = function () { var c = new dojo.collections.BinaryTree(); c.root = root.clone(); c.count = this.count; return c; }; this.contains = function (data) { return this.search(data) != null; }; this.deleteData = function (data) { var current = root; var parent = null; var i = current.compareData(data); while (i != 0 && current != null) { if (i > 0) { parent = current; current = current.left; } else { if (i < 0) { parent = current; current = current.right; } } i = current.compareData(data); } if (!current) { return; } this.count--; if (!current.right) { if (!parent) { root = current.left; } else { i = parent.compare(current); if (i > 0) { parent.left = current.left; } else { if (i < 0) { parent.right = current.left; } } } } else { if (!current.right.left) { if (!parent) { root = current.right; } else { i = parent.compare(current); if (i > 0) { parent.left = current.right; } else { if (i < 0) { parent.right = current.right; } } } } else { var leftmost = current.right.left; var lmParent = current.right; while (leftmost.left != null) { lmParent = leftmost; leftmost = leftmost.left; } lmParent.left = leftmost.right; leftmost.left = current.left; leftmost.right = current.right; if (!parent) { root = leftmost; } else { i = parent.compare(current); if (i > 0) { parent.left = leftmost; } else { if (i < 0) { parent.right = leftmost; } } } } } }; this.getIterator = function () { var a = []; inorderTraversalBuildup(root, a); return new dojo.collections.Iterator(a); }; this.search = function (data) { return searchHelper(root, data); }; this.toString = function (order, sep) { if (!order) { var order = dojo.collections.BinaryTree.TraversalMethods.Inorder; } if (!sep) { var sep = " "; } var s = ""; switch (order) { case dojo.collections.BinaryTree.TraversalMethods.Preorder: s = preorderTraversal(root, sep); break; case dojo.collections.BinaryTree.TraversalMethods.Inorder: s = inorderTraversal(root, sep); break; case dojo.collections.BinaryTree.TraversalMethods.Postorder: s = postorderTraversal(root, sep); break; } if (s.length == 0) { return ""; } else { return s.substring(0, s.length - sep.length); } }; this.count = 0; var root = this.root = null; if (data) { this.add(data); } }; dojo.collections.BinaryTree.TraversalMethods = {Preorder:1, Inorder:2, Postorder:3}; }});

__CPAN_FILE__ src/collections/Queue.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.collections.Queue"); dojo.require("dojo.collections.Collections"); dojo.collections.Queue = function (arr) { var q = []; if (arr) { q = q.concat(arr); } this.count = q.length; this.clear = function () { q = []; this.count = q.length; }; this.clone = function () { return new dojo.collections.Queue(q); }; this.contains = function (o) { for (var i = 0; i < q.length; i++) { if (q[i] == o) { return true; } } return false; }; this.copyTo = function (arr, i) { arr.splice(i, 0, q); }; this.dequeue = function () { var r = q.shift(); this.count = q.length; return r; }; this.enqueue = function (o) { this.count = q.push(o); }; this.forEach = function (fn, scope) { var s = scope || dj_global; if (Array.forEach) { Array.forEach(q, fn, s); } else { for (var i = 0; i < q.length; i++) { fn.call(s, q[i], i, q); } } }; this.getIterator = function () { return new dojo.collections.Iterator(q); }; this.peek = function () { return q[0]; }; this.toArray = function () { return [].concat(q); }; };

__CPAN_FILE__ src/collections/Stack.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.collections.Stack"); dojo.require("dojo.collections.Collections"); dojo.collections.Stack = function (arr) { var q = []; if (arr) { q = q.concat(arr); } this.count = q.length; this.clear = function () { q = []; this.count = q.length; }; this.clone = function () { return new dojo.collections.Stack(q); }; this.contains = function (o) { for (var i = 0; i < q.length; i++) { if (q[i] == o) { return true; } } return false; }; this.copyTo = function (arr, i) { arr.splice(i, 0, q); }; this.forEach = function (fn, scope) { var s = scope || dj_global; if (Array.forEach) { Array.forEach(q, fn, s); } else { for (var i = 0; i < q.length; i++) { fn.call(s, q[i], i, q); } } }; this.getIterator = function () { return new dojo.collections.Iterator(q); }; this.peek = function () { return q[(q.length - 1)]; }; this.pop = function () { var r = q.pop(); this.count = q.length; return r; }; this.push = function (o) { this.count = q.push(o); }; this.toArray = function () { return [].concat(q); }; };

__CPAN_FILE__ src/collections/Store.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.collections.Store"], ["require", "dojo.lang.common"]], definePackage:function (dojo) { dojo.provide("dojo.collections.Store"); dojo.require("dojo.lang.common"); dojo.collections.Store = function (jsonArray) { var data = []; var items = {}; this.keyField = "Id"; this.get = function () { return data; }; this.getByKey = function (key) { return items[key]; }; this.getByIndex = function (idx) { return data[idx]; }; this.getIndexOf = function (key) { for (var i = 0; i < data.length; i++) { if (data[i].key == key) { return i; } } return -1; }; this.getData = function () { var arr = []; for (var i = 0; i < data.length; i++) { arr.push(data[i].src); } return arr; }; this.getDataByKey = function (key) { if (items[key] != null) { return items[key].src; } return null; }; this.getIndexOfData = function (obj) { for (var i = 0; i < data.length; i++) { if (data[i].src == obj) { return i; } } return -1; }; this.getDataByIndex = function (idx) { if (data[idx]) { return data[idx].src; } return null; }; this.update = function (obj, fieldPath, val, bDontFire) { var parts = fieldPath.split("."), i = 0, o = obj, field; if (parts.length > 1) { field = parts.pop(); do { if (parts[i].indexOf("()") > -1) { var temp = parts[i++].split("()")[0]; if (!o[temp]) { dojo.raise("dojo.collections.Store.getField(obj, '" + field + "'): '" + temp + "' is not a property of the passed object."); } else { o = o[temp](); } } else { o = o[parts[i++]]; } } while (i < parts.length && o != null); } else { field = parts[0]; } obj[field] = val; if (!bDontFire) { this.onUpdateField(obj, fieldPath, val); } }; this.forEach = function (fn) { if (Array.forEach) { Array.forEach(data, fn, this); } else { for (var i = 0; i < data.length; i++) { fn.call(this, data[i]); } } }; this.forEachData = function (fn) { if (Array.forEach) { Array.forEach(this.getData(), fn, this); } else { var a = this.getData(); for (var i = 0; i < a.length; i++) { fn.call(this, a[i]); } } }; this.setData = function (arr, bDontFire) { data = []; for (var i = 0; i < arr.length; i++) { var o = {key:arr[i][this.keyField], src:arr[i]}; data.push(o); items[o.key] = o; } if (!bDontFire) { this.onSetData(); } }; this.clearData = function (bDontFire) { data = []; items = {}; if (!bDontFire) { this.onClearData(); } }; this.addData = function (obj, key, bDontFire) { var k = key || obj[this.keyField]; if (items[k] != null) { var o = items[k]; o.src = obj; } else { var o = {key:k, src:obj}; data.push(o); items[o.key] = o; } if (!bDontFire) { this.onAddData(o); } }; this.addDataRange = function (arr, bDontFire) { var objects = []; for (var i = 0; i < arr.length; i++) { var k = arr[i][this.keyField]; if (items[k] != null) { var o = items[k]; o.src = arr[i]; } else { var o = {key:k, src:arr[i]}; data.push(o); items[k] = o; } objects.push(o); } if (!bDontFire) { this.onAddDataRange(objects); } }; this.addDataByIndex = function (obj, idx, key, bDontFire) { var k = key || obj[this.keyField]; if (items[k] != null) { var i = this.getIndexOf(k); var o = data.splice(i, 1); o.src = obj; } else { var o = {key:k, src:obj}; items[k] = o; } data.splice(idx, 0, o); if (!bDontFire) { this.onAddData(o); } }; this.addDataRangeByIndex = function (arr, idx, bDontFire) { var objects = []; for (var i = 0; i < arr.length; i++) { var k = arr[i][this.keyField]; if (items[k] != null) { var j = this.getIndexOf(k); var o = data.splice(j, 1); o.src = arr[i]; } else { var o = {key:k, src:arr[i]}; items[k] = o; } objects.push(o); } data.splice(idx, 0, objects); if (!bDontFire) { this.onAddDataRange(objects); } }; this.removeData = function (obj, bDontFire) { var idx = -1; var o = null; for (var i = 0; i < data.length; i++) { if (data[i].src == obj) { idx = i; o = data[i]; break; } } if (!bDontFire) { this.onRemoveData(o); } if (idx > -1) { data.splice(idx, 1); delete items[o.key]; } }; this.removeDataRange = function (idx, range, bDontFire) { var ret = data.splice(idx, range); for (var i = 0; i < ret.length; i++) { delete items[ret[i].key]; } if (!bDontFire) { this.onRemoveDataRange(ret); } return ret; }; this.removeDataByKey = function (key, bDontFire) { this.removeData(this.getDataByKey(key), bDontFire); }; this.removeDataByIndex = function (idx, bDontFire) { this.removeData(this.getDataByIndex(idx), bDontFire); }; if (jsonArray && jsonArray.length && jsonArray[0]) { this.setData(jsonArray, true); } }; dojo.extend(dojo.collections.Store, {getField:function (obj, field) { var parts = field.split("."), i = 0, o = obj; do { if (parts[i].indexOf("()") > -1) { var temp = parts[i++].split("()")[0]; if (!o[temp]) { dojo.raise("dojo.collections.Store.getField(obj, '" + field + "'): '" + temp + "' is not a property of the passed object."); } else { o = o[temp](); } } else { o = o[parts[i++]]; } } while (i < parts.length && o != null); if (i < parts.length) { dojo.raise("dojo.collections.Store.getField(obj, '" + field + "'): '" + field + "' is not a property of the passed object."); } return o; }, getFromHtml:function (meta, body, fnMod) { var rows = body.rows; var ctor = function (row) { var obj = {}; for (var i = 0; i < meta.length; i++) { var o = obj; var data = row.cells[i].innerHTML; var p = meta[i].getField(); if (p.indexOf(".") > -1) { p = p.split("."); while (p.length > 1) { var pr = p.shift(); o[pr] = {}; o = o[pr]; } p = p[0]; } var type = meta[i].getType(); if (type == String) { o[p] = data; } else { if (data) { o[p] = new type(data); } else { o[p] = new type(); } } } return obj; }; var arr = []; for (var i = 0; i < rows.length; i++) { var o = ctor(rows[i]); if (fnMod) { fnMod(o, rows[i]); } arr.push(o); } return arr; }, onSetData:function () { }, onClearData:function () { }, onAddData:function (obj) { }, onAddDataRange:function (arr) { }, onRemoveData:function (obj) { }, onRemoveDataRange:function (arr) { }, onUpdateField:function (obj, field, val) { }}); }});

__CPAN_FILE__ src/collections/Stack.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.collections.Stack"], ["require", "dojo.collections.Collections"]], definePackage:function (dojo) { dojo.provide("dojo.collections.Stack"); dojo.require("dojo.collections.Collections"); dojo.collections.Stack = function (arr) { var q = []; if (arr) { q = q.concat(arr); } this.count = q.length; this.clear = function () { q = []; this.count = q.length; }; this.clone = function () { return new dojo.collections.Stack(q); }; this.contains = function (o) { for (var i = 0; i < q.length; i++) { if (q[i] == o) { return true; } } return false; }; this.copyTo = function (arr, i) { arr.splice(i, 0, q); }; this.forEach = function (fn, scope) { var s = scope || dj_global; if (Array.forEach) { Array.forEach(q, fn, s); } else { for (var i = 0; i < q.length; i++) { fn.call(s, q[i], i, q); } } }; this.getIterator = function () { return new dojo.collections.Iterator(q); }; this.peek = function () { return q[(q.length - 1)]; }; this.pop = function () { var r = q.pop(); this.count = q.length; return r; }; this.push = function (o) { this.count = q.push(o); }; this.toArray = function () { return [].concat(q); }; }; }});

__CPAN_FILE__ src/collections/Graph.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.collections.Graph"], ["require", "dojo.collections.Collections"]], definePackage:function (dojo) { dojo.provide("dojo.collections.Graph"); dojo.require("dojo.collections.Collections"); dojo.experimental("dojo.collections.Graph"); dojo.collections.Graph = function (nodes) { function node(key, data, neighbors) { this.key = key; this.data = data; this.neighbors = neighbors || new adjacencyList(); this.addDirected = function () { if (arguments[0].constructor == edgeToNeighbor) { this.neighbors.add(arguments[0]); } else { var n = arguments[0]; var cost = arguments[1] || 0; this.neighbors.add(new edgeToNeighbor(n, cost)); } }; } function nodeList() { var d = new dojo.collections.Dictionary(); function nodelistiterator() { var o = []; var e = d.getIterator(); while (e.get()) { o[o.length] = e.element; } var position = 0; this.element = o[position] || null; this.atEnd = function () { return (position >= o.length); }; this.get = function () { if (this.atEnd()) { return null; } this.element = o[position++]; return this.element; }; this.map = function (fn, scope) { var s = scope || dj_global; if (Array.map) { return Array.map(o, fn, s); } else { var arr = []; for (var i = 0; i < o.length; i++) { arr.push(fn.call(s, o[i])); } return arr; } }; this.reset = function () { position = 0; this.element = o[position]; }; } this.add = function (node) { d.add(node.key, node); }; this.clear = function () { d.clear(); }; this.containsKey = function (key) { return d.containsKey(key); }; this.getIterator = function () { return new nodelistiterator(this); }; this.item = function (key) { return d.item(key); }; this.remove = function (node) { d.remove(node.key); }; } function edgeToNeighbor(node, cost) { this.neighbor = node; this.cost = cost; } function adjacencyList() { var d = []; this.add = function (o) { d.push(o); }; this.item = function (i) { return d[i]; }; this.getIterator = function () { return new dojo.collections.Iterator([].concat(d)); }; } this.nodes = nodes || new nodeList(); this.count = this.nodes.count; this.clear = function () { this.nodes.clear(); this.count = 0; }; this.addNode = function () { var n = arguments[0]; if (arguments.length > 1) { n = new node(arguments[0], arguments[1]); } if (!this.nodes.containsKey(n.key)) { this.nodes.add(n); this.count++; } }; this.addDirectedEdge = function (uKey, vKey, cost) { var uNode, vNode; if (uKey.constructor != node) { uNode = this.nodes.item(uKey); vNode = this.nodes.item(vKey); } else { uNode = uKey; vNode = vKey; } var c = cost || 0; uNode.addDirected(vNode, c); }; this.addUndirectedEdge = function (uKey, vKey, cost) { var uNode, vNode; if (uKey.constructor != node) { uNode = this.nodes.item(uKey); vNode = this.nodes.item(vKey); } else { uNode = uKey; vNode = vKey; } var c = cost || 0; uNode.addDirected(vNode, c); vNode.addDirected(uNode, c); }; this.contains = function (n) { return this.nodes.containsKey(n.key); }; this.containsKey = function (k) { return this.nodes.containsKey(k); }; }; }});

__CPAN_FILE__ src/collections/__package__.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.kwCompoundRequire({common:["dojo.collections.Collections", "dojo.collections.SortedList", "dojo.collections.Dictionary", "dojo.collections.Queue", "dojo.collections.ArrayList", "dojo.collections.Stack", "dojo.collections.Set"]}); dojo.provide("dojo.collections.*");

__CPAN_FILE__ src/collections/Dictionary.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.collections.Dictionary"); dojo.require("dojo.collections.Collections"); dojo.collections.Dictionary = function (dictionary) { var items = {}; this.count = 0; var testObject = {}; this.add = function (k, v) { var b = (k in items); items[k] = new dojo.collections.DictionaryEntry(k, v); if (!b) { this.count++; } }; this.clear = function () { items = {}; this.count = 0; }; this.clone = function () { return new dojo.collections.Dictionary(this); }; this.contains = this.containsKey = function (k) { if (testObject[k]) { return false; } return (items[k] != null); }; this.containsValue = function (v) { var e = this.getIterator(); while (e.get()) { if (e.element.value == v) { return true; } } return false; }; this.entry = function (k) { return items[k]; }; this.forEach = function (fn, scope) { var a = []; for (var p in items) { if (!testObject[p]) { a.push(items[p]); } } var s = scope || dj_global; if (Array.forEach) { Array.forEach(a, fn, s); } else { for (var i = 0; i < a.length; i++) { fn.call(s, a[i], i, a); } } }; this.getKeyList = function () { return (this.getIterator()).map(function (entry) { return entry.key; }); }; this.getValueList = function () { return (this.getIterator()).map(function (entry) { return entry.value; }); }; this.item = function (k) { if (k in items) { return items[k].valueOf(); } return undefined; }; this.getIterator = function () { return new dojo.collections.DictionaryIterator(items); }; this.remove = function (k) { if (k in items && !testObject[k]) { delete items[k]; this.count--; return true; } return false; }; if (dictionary) { var e = dictionary.getIterator(); while (e.get()) { this.add(e.element.key, e.element.value); } } };

__CPAN_FILE__ src/collections/ArrayList.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.collections.ArrayList"], ["require", "dojo.collections.Collections"]], definePackage:function (dojo) { dojo.provide("dojo.collections.ArrayList"); dojo.require("dojo.collections.Collections"); dojo.collections.ArrayList = function (arr) { var items = []; if (arr) { items = items.concat(arr); } this.count = items.length; this.add = function (obj) { items.push(obj); this.count = items.length; }; this.addRange = function (a) { if (a.getIterator) { var e = a.getIterator(); while (!e.atEnd()) { this.add(e.get()); } this.count = items.length; } else { for (var i = 0; i < a.length; i++) { items.push(a[i]); } this.count = items.length; } }; this.clear = function () { items.splice(0, items.length); this.count = 0; }; this.clone = function () { return new dojo.collections.ArrayList(items); }; this.contains = function (obj) { for (var i = 0; i < items.length; i++) { if (items[i] == obj) { return true; } } return false; }; this.forEach = function (fn, scope) { var s = scope || dj_global; if (Array.forEach) { Array.forEach(items, fn, s); } else { for (var i = 0; i < items.length; i++) { fn.call(s, items[i], i, items); } } }; this.getIterator = function () { return new dojo.collections.Iterator(items); }; this.indexOf = function (obj) { for (var i = 0; i < items.length; i++) { if (items[i] == obj) { return i; } } return -1; }; this.insert = function (i, obj) { items.splice(i, 0, obj); this.count = items.length; }; this.item = function (i) { return items[i]; }; this.remove = function (obj) { var i = this.indexOf(obj); if (i >= 0) { items.splice(i, 1); } this.count = items.length; }; this.removeAt = function (i) { items.splice(i, 1); this.count = items.length; }; this.reverse = function () { items.reverse(); }; this.sort = function (fn) { if (fn) { items.sort(fn); } else { items.sort(); } }; this.setByIndex = function (i, obj) { items[i] = obj; this.count = items.length; }; this.toArray = function () { return [].concat(items); }; this.toString = function (delim) { return items.join((delim || ",")); }; }; }});

__CPAN_FILE__ src/collections/__package__.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["kwCompoundRequire", {common:["dojo.collections.Collections", "dojo.collections.SortedList", "dojo.collections.Dictionary", "dojo.collections.Queue", "dojo.collections.ArrayList", "dojo.collections.Stack", "dojo.collections.Set"]}], ["provide", "dojo.collections.*"]], definePackage:function (dojo) { dojo.kwCompoundRequire({common:["dojo.collections.Collections", "dojo.collections.SortedList", "dojo.collections.Dictionary", "dojo.collections.Queue", "dojo.collections.ArrayList", "dojo.collections.Stack", "dojo.collections.Set"]}); dojo.provide("dojo.collections.*"); }});

__CPAN_FILE__ src/collections/SortedList.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.collections.SortedList"); dojo.require("dojo.collections.Collections"); dojo.collections.SortedList = function (dictionary) { var _this = this; var items = {}; var q = []; var sorter = function (a, b) { if (a.key > b.key) { return 1; } if (a.key < b.key) { return -1; } return 0; }; var build = function () { q = []; var e = _this.getIterator(); while (!e.atEnd()) { q.push(e.get()); } q.sort(sorter); }; var testObject = {}; this.count = q.length; this.add = function (k, v) { if (!items[k]) { items[k] = new dojo.collections.DictionaryEntry(k, v); this.count = q.push(items[k]); q.sort(sorter); } }; this.clear = function () { items = {}; q = []; this.count = q.length; }; this.clone = function () { return new dojo.collections.SortedList(this); }; this.contains = this.containsKey = function (k) { if (testObject[k]) { return false; } return (items[k] != null); }; this.containsValue = function (o) { var e = this.getIterator(); while (!e.atEnd()) { var item = e.get(); if (item.value == o) { return true; } } return false; }; this.copyTo = function (arr, i) { var e = this.getIterator(); var idx = i; while (!e.atEnd()) { arr.splice(idx, 0, e.get()); idx++; } }; this.entry = function (k) { return items[k]; }; this.forEach = function (fn, scope) { var s = scope || dj_global; if (Array.forEach) { Array.forEach(q, fn, s); } else { for (var i = 0; i < q.length; i++) { fn.call(s, q[i], i, q); } } }; this.getByIndex = function (i) { return q[i].valueOf(); }; this.getIterator = function () { return new dojo.collections.DictionaryIterator(items); }; this.getKey = function (i) { return q[i].key; }; this.getKeyList = function () { var arr = []; var e = this.getIterator(); while (!e.atEnd()) { arr.push(e.get().key); } return arr; }; this.getValueList = function () { var arr = []; var e = this.getIterator(); while (!e.atEnd()) { arr.push(e.get().value); } return arr; }; this.indexOfKey = function (k) { for (var i = 0; i < q.length; i++) { if (q[i].key == k) { return i; } } return -1; }; this.indexOfValue = function (o) { for (var i = 0; i < q.length; i++) { if (q[i].value == o) { return i; } } return -1; }; this.item = function (k) { if (k in items && !testObject[k]) { return items[k].valueOf(); } return undefined; }; this.remove = function (k) { delete items[k]; build(); this.count = q.length; }; this.removeAt = function (i) { delete items[q[i].key]; build(); this.count = q.length; }; this.replace = function (k, v) { if (!items[k]) { this.add(k, v); return false; } else { items[k] = new dojo.collections.DictionaryEntry(k, v); q.sort(sorter); return true; } }; this.setByIndex = function (i, o) { items[q[i].key].value = o; build(); this.count = q.length; }; if (dictionary) { var e = dictionary.getIterator(); while (!e.atEnd()) { var item = e.get(); q[q.length] = items[item.key] = new dojo.collections.DictionaryEntry(item.key, item.value); } q.sort(sorter); } };

__CPAN_FILE__ src/collections/Graph.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.collections.Graph"); dojo.require("dojo.collections.Collections"); dojo.experimental("dojo.collections.Graph"); dojo.collections.Graph = function (nodes) { function node(key, data, neighbors) { this.key = key; this.data = data; this.neighbors = neighbors || new adjacencyList(); this.addDirected = function () { if (arguments[0].constructor == edgeToNeighbor) { this.neighbors.add(arguments[0]); } else { var n = arguments[0]; var cost = arguments[1] || 0; this.neighbors.add(new edgeToNeighbor(n, cost)); } }; } function nodeList() { var d = new dojo.collections.Dictionary(); function nodelistiterator() { var o = []; var e = d.getIterator(); while (e.get()) { o[o.length] = e.element; } var position = 0; this.element = o[position] || null; this.atEnd = function () { return (position >= o.length); }; this.get = function () { if (this.atEnd()) { return null; } this.element = o[position++]; return this.element; }; this.map = function (fn, scope) { var s = scope || dj_global; if (Array.map) { return Array.map(o, fn, s); } else { var arr = []; for (var i = 0; i < o.length; i++) { arr.push(fn.call(s, o[i])); } return arr; } }; this.reset = function () { position = 0; this.element = o[position]; }; } this.add = function (node) { d.add(node.key, node); }; this.clear = function () { d.clear(); }; this.containsKey = function (key) { return d.containsKey(key); }; this.getIterator = function () { return new nodelistiterator(this); }; this.item = function (key) { return d.item(key); }; this.remove = function (node) { d.remove(node.key); }; } function edgeToNeighbor(node, cost) { this.neighbor = node; this.cost = cost; } function adjacencyList() { var d = []; this.add = function (o) { d.push(o); }; this.item = function (i) { return d[i]; }; this.getIterator = function () { return new dojo.collections.Iterator([].concat(d)); }; } this.nodes = nodes || new nodeList(); this.count = this.nodes.count; this.clear = function () { this.nodes.clear(); this.count = 0; }; this.addNode = function () { var n = arguments[0]; if (arguments.length > 1) { n = new node(arguments[0], arguments[1]); } if (!this.nodes.containsKey(n.key)) { this.nodes.add(n); this.count++; } }; this.addDirectedEdge = function (uKey, vKey, cost) { var uNode, vNode; if (uKey.constructor != node) { uNode = this.nodes.item(uKey); vNode = this.nodes.item(vKey); } else { uNode = uKey; vNode = vKey; } var c = cost || 0; uNode.addDirected(vNode, c); }; this.addUndirectedEdge = function (uKey, vKey, cost) { var uNode, vNode; if (uKey.constructor != node) { uNode = this.nodes.item(uKey); vNode = this.nodes.item(vKey); } else { uNode = uKey; vNode = vKey; } var c = cost || 0; uNode.addDirected(vNode, c); vNode.addDirected(uNode, c); }; this.contains = function (n) { return this.nodes.containsKey(n.key); }; this.containsKey = function (k) { return this.nodes.containsKey(k); }; };

__CPAN_FILE__ src/collections/SkipList.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.collections.SkipList"); dojo.require("dojo.collections.Collections"); dojo.require("dojo.experimental"); dojo.experimental("dojo.collections.SkipList"); dojo.collections.SkipList = function () { function node(height, val) { this.value = val; this.height = height; this.nodes = new nodeList(height); this.compare = function (val) { if (this.value > val) { return 1; } if (this.value < val) { return -1; } return 0; }; this.incrementHeight = function () { this.nodes.incrementHeight(); this.height++; }; this.decrementHeight = function () { this.nodes.decrementHeight(); this.height--; }; } function nodeList(height) { var arr = []; this.height = height; for (var i = 0; i < height; i++) { arr[i] = null; } this.item = function (i) { return arr[i]; }; this.incrementHeight = function () { this.height++; arr[this.height] = null; }; this.decrementHeight = function () { arr.splice(arr.length - 1, 1); this.height--; }; } function iterator(list) { this.element = list.head; this.atEnd = function () { return (this.element == null); }; this.get = function () { if (this.atEnd()) { return null; } this.element = this.element.nodes[0]; return this.element; }; this.reset = function () { this.element = list.head; }; } function chooseRandomHeight(max) { var level = 1; while (Math.random() < PROB && level < max) { level++; } return level; } var PROB = 0.5; var comparisons = 0; this.head = new node(1); this.count = 0; this.add = function (val) { var updates = []; var current = this.head; for (var i = this.head.height; i >= 0; i--) { if (!(current.nodes[i] != null && current.nodes[i].compare(val) < 0)) { comparisons++; } while (current.nodes[i] != null && current.nodes[i].compare(val) < 0) { current = current.nodes[i]; comparisons++; } updates[i] = current; } if (current.nodes[0] != null && current.nodes[0].compare(val) == 0) { return; } var n = new node(val, chooseRandomHeight(this.head.height + 1)); this.count++; if (n.height > this.head.height) { this.head.incrementHeight(); this.head.nodes[this.head.height - 1] = n; } for (i = 0; i < n.height; i++) { if (i < updates.length) { n.nodes[i] = updates[i].nodes[i]; updates[i].nodes[i] = n; } } }; this.contains = function (val) { var current = this.head; var i; for (i = this.head.height - 1; i >= 0; i--) { while (current.item(i) != null) { comparisons++; var result = current.nodes[i].compare(val); if (result == 0) { return true; } else { if (result < 0) { current = current.nodes[i]; } else { break; } } } } return false; }; this.getIterator = function () { return new iterator(this); }; this.remove = function (val) { var updates = []; var current = this.head; for (var i = this.head.height - 1; i >= 0; i--) { if (!(current.nodes[i] != null && current.nodes[i].compare(val) < 0)) { comparisons++; } while (current.nodes[i] != null && current.nodes[i].compare(val) < 0) { current = current.nodes[i]; comparisons++; } updates[i] = current; } current = current.nodes[0]; if (current != null && current.compare(val) == 0) { this.count--; for (var i = 0; i < this.head.height; i++) { if (updates[i].nodes[i] != current) { break; } else { updates[i].nodes[i] = current.nodes[i]; } } if (this.head.nodes[this.head.height - 1] == null) { this.head.decrementHeight(); } } }; this.resetComparisons = function () { comparisons = 0; }; };

__CPAN_FILE__ src/collections/SortedList.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.collections.SortedList"], ["require", "dojo.collections.Collections"]], definePackage:function (dojo) { dojo.provide("dojo.collections.SortedList"); dojo.require("dojo.collections.Collections"); dojo.collections.SortedList = function (dictionary) { var _this = this; var items = {}; var q = []; var sorter = function (a, b) { if (a.key > b.key) { return 1; } if (a.key < b.key) { return -1; } return 0; }; var build = function () { q = []; var e = _this.getIterator(); while (!e.atEnd()) { q.push(e.get()); } q.sort(sorter); }; var testObject = {}; this.count = q.length; this.add = function (k, v) { if (!items[k]) { items[k] = new dojo.collections.DictionaryEntry(k, v); this.count = q.push(items[k]); q.sort(sorter); } }; this.clear = function () { items = {}; q = []; this.count = q.length; }; this.clone = function () { return new dojo.collections.SortedList(this); }; this.contains = this.containsKey = function (k) { if (testObject[k]) { return false; } return (items[k] != null); }; this.containsValue = function (o) { var e = this.getIterator(); while (!e.atEnd()) { var item = e.get(); if (item.value == o) { return true; } } return false; }; this.copyTo = function (arr, i) { var e = this.getIterator(); var idx = i; while (!e.atEnd()) { arr.splice(idx, 0, e.get()); idx++; } }; this.entry = function (k) { return items[k]; }; this.forEach = function (fn, scope) { var s = scope || dj_global; if (Array.forEach) { Array.forEach(q, fn, s); } else { for (var i = 0; i < q.length; i++) { fn.call(s, q[i], i, q); } } }; this.getByIndex = function (i) { return q[i].valueOf(); }; this.getIterator = function () { return new dojo.collections.DictionaryIterator(items); }; this.getKey = function (i) { return q[i].key; }; this.getKeyList = function () { var arr = []; var e = this.getIterator(); while (!e.atEnd()) { arr.push(e.get().key); } return arr; }; this.getValueList = function () { var arr = []; var e = this.getIterator(); while (!e.atEnd()) { arr.push(e.get().value); } return arr; }; this.indexOfKey = function (k) { for (var i = 0; i < q.length; i++) { if (q[i].key == k) { return i; } } return -1; }; this.indexOfValue = function (o) { for (var i = 0; i < q.length; i++) { if (q[i].value == o) { return i; } } return -1; }; this.item = function (k) { if (k in items && !testObject[k]) { return items[k].valueOf(); } return undefined; }; this.remove = function (k) { delete items[k]; build(); this.count = q.length; }; this.removeAt = function (i) { delete items[q[i].key]; build(); this.count = q.length; }; this.replace = function (k, v) { if (!items[k]) { this.add(k, v); return false; } else { items[k] = new dojo.collections.DictionaryEntry(k, v); q.sort(sorter); return true; } }; this.setByIndex = function (i, o) { items[q[i].key].value = o; build(); this.count = q.length; }; if (dictionary) { var e = dictionary.getIterator(); while (!e.atEnd()) { var item = e.get(); q[q.length] = items[item.key] = new dojo.collections.DictionaryEntry(item.key, item.value); } q.sort(sorter); } }; }});

__CPAN_FILE__ src/collections/BinaryTree.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.collections.BinaryTree"); dojo.require("dojo.collections.Collections"); dojo.require("dojo.experimental"); dojo.experimental("dojo.collections.BinaryTree"); dojo.collections.BinaryTree = function (data) { function node(data, rnode, lnode) { this.value = data || null; this.right = rnode || null; this.left = lnode || null; this.clone = function () { var c = new node(); if (this.value.value) { c.value = this.value.clone(); } else { c.value = this.value; } if (this.left) { c.left = this.left.clone(); } if (this.right) { c.right = this.right.clone(); } }; this.compare = function (n) { if (this.value > n.value) { return 1; } if (this.value < n.value) { return -1; } return 0; }; this.compareData = function (d) { if (this.value > d) { return 1; } if (this.value < d) { return -1; } return 0; }; } function inorderTraversalBuildup(current, a) { if (current) { inorderTraversalBuildup(current.left, a); a.add(current); inorderTraversalBuildup(current.right, a); } } function preorderTraversal(current, sep) { var s = ""; if (current) { s = current.value.toString() + sep; s += preorderTraversal(current.left, sep); s += preorderTraversal(current.right, sep); } return s; } function inorderTraversal(current, sep) { var s = ""; if (current) { s = inorderTraversal(current.left, sep); s += current.value.toString() + sep; s += inorderTraversal(current.right, sep); } return s; } function postorderTraversal(current, sep) { var s = ""; if (current) { s = postorderTraversal(current.left, sep); s += postorderTraversal(current.right, sep); s += current.value.toString() + sep; } return s; } function searchHelper(current, data) { if (!current) { return null; } var i = current.compareData(data); if (i == 0) { return current; } if (i > 0) { return searchHelper(current.left, data); } else { return searchHelper(current.right, data); } } this.add = function (data) { var n = new node(data); var i; var current = root; var parent = null; while (current) { i = current.compare(n); if (i == 0) { return; } parent = current; if (i > 0) { current = current.left; } else { current = current.right; } } this.count++; if (!parent) { root = n; } else { i = parent.compare(n); if (i > 0) { parent.left = n; } else { parent.right = n; } } }; this.clear = function () { root = null; this.count = 0; }; this.clone = function () { var c = new dojo.collections.BinaryTree(); c.root = root.clone(); c.count = this.count; return c; }; this.contains = function (data) { return this.search(data) != null; }; this.deleteData = function (data) { var current = root; var parent = null; var i = current.compareData(data); while (i != 0 && current != null) { if (i > 0) { parent = current; current = current.left; } else { if (i < 0) { parent = current; current = current.right; } } i = current.compareData(data); } if (!current) { return; } this.count--; if (!current.right) { if (!parent) { root = current.left; } else { i = parent.compare(current); if (i > 0) { parent.left = current.left; } else { if (i < 0) { parent.right = current.left; } } } } else { if (!current.right.left) { if (!parent) { root = current.right; } else { i = parent.compare(current); if (i > 0) { parent.left = current.right; } else { if (i < 0) { parent.right = current.right; } } } } else { var leftmost = current.right.left; var lmParent = current.right; while (leftmost.left != null) { lmParent = leftmost; leftmost = leftmost.left; } lmParent.left = leftmost.right; leftmost.left = current.left; leftmost.right = current.right; if (!parent) { root = leftmost; } else { i = parent.compare(current); if (i > 0) { parent.left = leftmost; } else { if (i < 0) { parent.right = leftmost; } } } } } }; this.getIterator = function () { var a = []; inorderTraversalBuildup(root, a); return new dojo.collections.Iterator(a); }; this.search = function (data) { return searchHelper(root, data); }; this.toString = function (order, sep) { if (!order) { var order = dojo.collections.BinaryTree.TraversalMethods.Inorder; } if (!sep) { var sep = " "; } var s = ""; switch (order) { case dojo.collections.BinaryTree.TraversalMethods.Preorder: s = preorderTraversal(root, sep); break; case dojo.collections.BinaryTree.TraversalMethods.Inorder: s = inorderTraversal(root, sep); break; case dojo.collections.BinaryTree.TraversalMethods.Postorder: s = postorderTraversal(root, sep); break; } if (s.length == 0) { return ""; } else { return s.substring(0, s.length - sep.length); } }; this.count = 0; var root = this.root = null; if (data) { this.add(data); } }; dojo.collections.BinaryTree.TraversalMethods = {Preorder:1, Inorder:2, Postorder:3};

__CPAN_FILE__ src/collections/Collections.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.collections.Collections"]], definePackage:function (dojo) { dojo.provide("dojo.collections.Collections"); dojo.collections.DictionaryEntry = function (k, v) { this.key = k; this.value = v; this.valueOf = function () { return this.value; }; this.toString = function () { return String(this.value); }; }; dojo.collections.Iterator = function (arr) { var a = arr; var position = 0; this.element = a[position] || null; this.atEnd = function () { return (position >= a.length); }; this.get = function () { if (this.atEnd()) { return null; } this.element = a[position++]; return this.element; }; this.map = function (fn, scope) { var s = scope || dj_global; if (Array.map) { return Array.map(a, fn, s); } else { var arr = []; for (var i = 0; i < a.length; i++) { arr.push(fn.call(s, a[i])); } return arr; } }; this.reset = function () { position = 0; this.element = a[position]; }; }; dojo.collections.DictionaryIterator = function (obj) { var a = []; var testObject = {}; for (var p in obj) { if (!testObject[p]) { a.push(obj[p]); } } var position = 0; this.element = a[position] || null; this.atEnd = function () { return (position >= a.length); }; this.get = function () { if (this.atEnd()) { return null; } this.element = a[position++]; return this.element; }; this.map = function (fn, scope) { var s = scope || dj_global; if (Array.map) { return Array.map(a, fn, s); } else { var arr = []; for (var i = 0; i < a.length; i++) { arr.push(fn.call(s, a[i])); } return arr; } }; this.reset = function () { position = 0; this.element = a[position]; }; }; }});

__CPAN_FILE__ src/collections/ArrayList.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.collections.ArrayList"); dojo.require("dojo.collections.Collections"); dojo.collections.ArrayList = function (arr) { var items = []; if (arr) { items = items.concat(arr); } this.count = items.length; this.add = function (obj) { items.push(obj); this.count = items.length; }; this.addRange = function (a) { if (a.getIterator) { var e = a.getIterator(); while (!e.atEnd()) { this.add(e.get()); } this.count = items.length; } else { for (var i = 0; i < a.length; i++) { items.push(a[i]); } this.count = items.length; } }; this.clear = function () { items.splice(0, items.length); this.count = 0; }; this.clone = function () { return new dojo.collections.ArrayList(items); }; this.contains = function (obj) { for (var i = 0; i < items.length; i++) { if (items[i] == obj) { return true; } } return false; }; this.forEach = function (fn, scope) { var s = scope || dj_global; if (Array.forEach) { Array.forEach(items, fn, s); } else { for (var i = 0; i < items.length; i++) { fn.call(s, items[i], i, items); } } }; this.getIterator = function () { return new dojo.collections.Iterator(items); }; this.indexOf = function (obj) { for (var i = 0; i < items.length; i++) { if (items[i] == obj) { return i; } } return -1; }; this.insert = function (i, obj) { items.splice(i, 0, obj); this.count = items.length; }; this.item = function (i) { return items[i]; }; this.remove = function (obj) { var i = this.indexOf(obj); if (i >= 0) { items.splice(i, 1); } this.count = items.length; }; this.removeAt = function (i) { items.splice(i, 1); this.count = items.length; }; this.reverse = function () { items.reverse(); }; this.sort = function (fn) { if (fn) { items.sort(fn); } else { items.sort(); } }; this.setByIndex = function (i, obj) { items[i] = obj; this.count = items.length; }; this.toArray = function () { return [].concat(items); }; this.toString = function (delim) { return items.join((delim || ",")); }; };

__CPAN_FILE__ src/collections/Set.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.collections.Set"], ["require", "dojo.collections.Collections"], ["require", "dojo.collections.ArrayList"]], definePackage:function (dojo) { dojo.provide("dojo.collections.Set"); dojo.require("dojo.collections.Collections"); dojo.require("dojo.collections.ArrayList"); dojo.collections.Set = new function () { this.union = function (setA, setB) { if (setA.constructor == Array) { var setA = new dojo.collections.ArrayList(setA); } if (setB.constructor == Array) { var setB = new dojo.collections.ArrayList(setB); } if (!setA.toArray || !setB.toArray) { dojo.raise("Set operations can only be performed on array-based collections."); } var result = new dojo.collections.ArrayList(setA.toArray()); var e = setB.getIterator(); while (!e.atEnd()) { var item = e.get(); if (!result.contains(item)) { result.add(item); } } return result; }; this.intersection = function (setA, setB) { if (setA.constructor == Array) { var setA = new dojo.collections.ArrayList(setA); } if (setB.constructor == Array) { var setB = new dojo.collections.ArrayList(setB); } if (!setA.toArray || !setB.toArray) { dojo.raise("Set operations can only be performed on array-based collections."); } var result = new dojo.collections.ArrayList(); var e = setB.getIterator(); while (!e.atEnd()) { var item = e.get(); if (setA.contains(item)) { result.add(item); } } return result; }; this.difference = function (setA, setB) { if (setA.constructor == Array) { var setA = new dojo.collections.ArrayList(setA); } if (setB.constructor == Array) { var setB = new dojo.collections.ArrayList(setB); } if (!setA.toArray || !setB.toArray) { dojo.raise("Set operations can only be performed on array-based collections."); } var result = new dojo.collections.ArrayList(); var e = setA.getIterator(); while (!e.atEnd()) { var item = e.get(); if (!setB.contains(item)) { result.add(item); } } return result; }; this.isSubSet = function (setA, setB) { if (setA.constructor == Array) { var setA = new dojo.collections.ArrayList(setA); } if (setB.constructor == Array) { var setB = new dojo.collections.ArrayList(setB); } if (!setA.toArray || !setB.toArray) { dojo.raise("Set operations can only be performed on array-based collections."); } var e = setA.getIterator(); while (!e.atEnd()) { if (!setB.contains(e.get())) { return false; } } return true; }; this.isSuperSet = function (setA, setB) { if (setA.constructor == Array) { var setA = new dojo.collections.ArrayList(setA); } if (setB.constructor == Array) { var setB = new dojo.collections.ArrayList(setB); } if (!setA.toArray || !setB.toArray) { dojo.raise("Set operations can only be performed on array-based collections."); } var e = setB.getIterator(); while (!e.atEnd()) { if (!setA.contains(e.get())) { return false; } } return true; }; }(); }});

__CPAN_FILE__ src/collections/SkipList.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.collections.SkipList"], ["require", "dojo.collections.Collections"], ["require", "dojo.experimental"]], definePackage:function (dojo) { dojo.provide("dojo.collections.SkipList"); dojo.require("dojo.collections.Collections"); dojo.require("dojo.experimental"); dojo.experimental("dojo.collections.SkipList"); dojo.collections.SkipList = function () { function node(height, val) { this.value = val; this.height = height; this.nodes = new nodeList(height); this.compare = function (val) { if (this.value > val) { return 1; } if (this.value < val) { return -1; } return 0; }; this.incrementHeight = function () { this.nodes.incrementHeight(); this.height++; }; this.decrementHeight = function () { this.nodes.decrementHeight(); this.height--; }; } function nodeList(height) { var arr = []; this.height = height; for (var i = 0; i < height; i++) { arr[i] = null; } this.item = function (i) { return arr[i]; }; this.incrementHeight = function () { this.height++; arr[this.height] = null; }; this.decrementHeight = function () { arr.splice(arr.length - 1, 1); this.height--; }; } function iterator(list) { this.element = list.head; this.atEnd = function () { return (this.element == null); }; this.get = function () { if (this.atEnd()) { return null; } this.element = this.element.nodes[0]; return this.element; }; this.reset = function () { this.element = list.head; }; } function chooseRandomHeight(max) { var level = 1; while (Math.random() < PROB && level < max) { level++; } return level; } var PROB = 0.5; var comparisons = 0; this.head = new node(1); this.count = 0; this.add = function (val) { var updates = []; var current = this.head; for (var i = this.head.height; i >= 0; i--) { if (!(current.nodes[i] != null && current.nodes[i].compare(val) < 0)) { comparisons++; } while (current.nodes[i] != null && current.nodes[i].compare(val) < 0) { current = current.nodes[i]; comparisons++; } updates[i] = current; } if (current.nodes[0] != null && current.nodes[0].compare(val) == 0) { return; } var n = new node(val, chooseRandomHeight(this.head.height + 1)); this.count++; if (n.height > this.head.height) { this.head.incrementHeight(); this.head.nodes[this.head.height - 1] = n; } for (i = 0; i < n.height; i++) { if (i < updates.length) { n.nodes[i] = updates[i].nodes[i]; updates[i].nodes[i] = n; } } }; this.contains = function (val) { var current = this.head; var i; for (i = this.head.height - 1; i >= 0; i--) { while (current.item(i) != null) { comparisons++; var result = current.nodes[i].compare(val); if (result == 0) { return true; } else { if (result < 0) { current = current.nodes[i]; } else { break; } } } } return false; }; this.getIterator = function () { return new iterator(this); }; this.remove = function (val) { var updates = []; var current = this.head; for (var i = this.head.height - 1; i >= 0; i--) { if (!(current.nodes[i] != null && current.nodes[i].compare(val) < 0)) { comparisons++; } while (current.nodes[i] != null && current.nodes[i].compare(val) < 0) { current = current.nodes[i]; comparisons++; } updates[i] = current; } current = current.nodes[0]; if (current != null && current.compare(val) == 0) { this.count--; for (var i = 0; i < this.head.height; i++) { if (updates[i].nodes[i] != current) { break; } else { updates[i].nodes[i] = current.nodes[i]; } } if (this.head.nodes[this.head.height - 1] == null) { this.head.decrementHeight(); } } }; this.resetComparisons = function () { comparisons = 0; }; }; }});

__CPAN_DIR__ src/xml __CPAN_FILE__ src/xml/XslTransform.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.xml.XslTransform"]], definePackage:function (dojo) { dojo.provide("dojo.xml.XslTransform"); dojo.xml.XslTransform = function (xsltUri) { dojo.debug("XslTransform is supported by Internet Explorer and Mozilla, with limited support in Opera 9 (no document function support)."); var IS_IE = dojo.render.html.ie; var ACTIVEX_DOMS = ["Msxml2.DOMDocument.5.0", "Msxml2.DOMDocument.4.0", "Msxml2.DOMDocument.3.0", "MSXML2.DOMDocument", "MSXML.DOMDocument", "Microsoft.XMLDOM"]; var ACTIVEX_FT_DOMS = ["Msxml2.FreeThreadedDOMDocument.5.0", "MSXML2.FreeThreadedDOMDocument.4.0", "MSXML2.FreeThreadedDOMDocument.3.0"]; var ACTIVEX_TEMPLATES = ["Msxml2.XSLTemplate.5.0", "Msxml2.XSLTemplate.4.0", "MSXML2.XSLTemplate.3.0"]; function getActiveXImpl(activeXArray) { for (var i = 0; i < activeXArray.length; i++) { try { var testObj = new ActiveXObject(activeXArray[i]); if (testObj) { return activeXArray[i]; } } catch (e) { } } dojo.raise("Could not find an ActiveX implementation in:\n\n " + activeXArray); } if (xsltUri == null || xsltUri == undefined) { dojo.raise("You must pass the URI String for the XSL file to be used!"); return false; } var xsltDocument = null; var xsltProcessor = null; if (IS_IE) { xsltDocument = new ActiveXObject(getActiveXImpl(ACTIVEX_FT_DOMS)); xsltDocument.async = false; } else { xsltProcessor = new XSLTProcessor(); xsltDocument = document.implementation.createDocument("", "", null); xsltDocument.addEventListener("load", onXslLoad, false); } xsltDocument.load(xsltUri); if (IS_IE) { var xslt = new ActiveXObject(getActiveXImpl(ACTIVEX_TEMPLATES)); xslt.stylesheet = xsltDocument; xsltProcessor = xslt.createProcessor(); } function onXslLoad() { xsltProcessor.importStylesheet(xsltDocument); } function getResultDom(xmlDoc, params) { if (IS_IE) { addIeParams(params); var result = getIeResultDom(xmlDoc); removeIeParams(params); return result; } else { return getMozillaResultDom(xmlDoc, params); } } function addIeParams(params) { if (!params) { return; } for (var i = 0; i < params.length; i++) { xsltProcessor.addParameter(params[i][0], params[i][1]); } } function removeIeParams(params) { if (!params) { return; } for (var i = 0; i < params.length; i++) { xsltProcessor.addParameter(params[i][0], ""); } } function getIeResultDom(xmlDoc) { xsltProcessor.input = xmlDoc; var outDoc = new ActiveXObject(getActiveXImpl(ACTIVEX_DOMS)); outDoc.async = false; outDoc.validateOnParse = false; xsltProcessor.output = outDoc; xsltProcessor.transform(); if (outDoc.parseError.errorCode != 0) { var err = outDoc.parseError; dojo.raise("err.errorCode: " + err.errorCode + "\n\nerr.reason: " + err.reason + "\n\nerr.url: " + err.url + "\n\nerr.srcText: " + err.srcText); } return outDoc; } function getIeResultStr(xmlDoc, params) { xsltProcessor.input = xmlDoc; xsltProcessor.transform(); return xsltProcessor.output; } function addMozillaParams(params) { if (!params) { return; } for (var i = 0; i < params.length; i++) { xsltProcessor.setParameter(null, params[i][0], params[i][1]); } } function getMozillaResultDom(xmlDoc, params) { addMozillaParams(params); var resultDoc = xsltProcessor.transformToDocument(xmlDoc); xsltProcessor.clearParameters(); return resultDoc; } function getMozillaResultStr(xmlDoc, params, parentDoc) { addMozillaParams(params); var resultDoc = xsltProcessor.transformToFragment(xmlDoc, parentDoc); var serializer = new XMLSerializer(); xsltProcessor.clearParameters(); return serializer.serializeToString(resultDoc); } this.getResultString = function (xmlDoc, params, parentDoc) { var content = null; if (IS_IE) { addIeParams(params); content = getIeResultStr(xmlDoc, params); removeIeParams(params); } else { content = getMozillaResultStr(xmlDoc, params, parentDoc); } return content; }; this.transformToContentPane = function (xmlDoc, params, contentPane, parentDoc) { var content = this.getResultString(xmlDoc, params, parentDoc); contentPane.setContent(content); }; this.transformToRegion = function (xmlDoc, params, region, parentDoc) { try { var content = this.getResultString(xmlDoc, params, parentDoc); region.innerHTML = content; } catch (e) { dojo.raise(e.message + "\n\n xsltUri: " + xsltUri); } }; this.transformToDocument = function (xmlDoc, params) { return getResultDom(xmlDoc, params); }; this.transformToWindow = function (xmlDoc, params, windowDoc, parentDoc) { try { windowDoc.open(); windowDoc.write(this.getResultString(xmlDoc, params, parentDoc)); windowDoc.close(); } catch (e) { dojo.raise(e.message + "\n\n xsltUri: " + xsltUri); } }; }; }});

__CPAN_FILE__ src/xml/Parse.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.xml.Parse"], ["require", "dojo.dom"]], definePackage:function (dojo) { dojo.provide("dojo.xml.Parse"); dojo.require("dojo.dom"); dojo.xml.Parse = function () { var isIE = ((dojo.render.html.capable) && (dojo.render.html.ie)); function getTagName(node) { try { return node.tagName.toLowerCase(); } catch (e) { return ""; } } function getDojoTagName(node) { var tagName = getTagName(node); if (!tagName) { return ""; } if ((dojo.widget) && (dojo.widget.tags[tagName])) { return tagName; } var p = tagName.indexOf(":"); if (p >= 0) { return tagName; } if (tagName.substr(0, 5) == "dojo:") { return tagName; } if (dojo.render.html.capable && dojo.render.html.ie && node.scopeName != "HTML") { return node.scopeName.toLowerCase() + ":" + tagName; } if (tagName.substr(0, 4) == "dojo") { return "dojo:" + tagName.substring(4); } var djt = node.getAttribute("dojoType") || node.getAttribute("dojotype"); if (djt) { if (djt.indexOf(":") < 0) { djt = "dojo:" + djt; } return djt.toLowerCase(); } djt = node.getAttributeNS && node.getAttributeNS(dojo.dom.dojoml, "type"); if (djt) { return "dojo:" + djt.toLowerCase(); } try { djt = node.getAttribute("dojo:type"); } catch (e) { } if (djt) { return "dojo:" + djt.toLowerCase(); } if ((dj_global["djConfig"]) && (!djConfig["ignoreClassNames"])) { var classes = node.className || node.getAttribute("class"); if ((classes) && (classes.indexOf) && (classes.indexOf("dojo-") != -1)) { var aclasses = classes.split(" "); for (var x = 0, c = aclasses.length; x < c; x++) { if (aclasses[x].slice(0, 5) == "dojo-") { return "dojo:" + aclasses[x].substr(5).toLowerCase(); } } } } return ""; } this.parseElement = function (node, hasParentNodeSet, optimizeForDojoML, thisIdx) { var tagName = getTagName(node); if (isIE && tagName.indexOf("/") == 0) { return null; } try { var attr = node.getAttribute("parseWidgets"); if (attr && attr.toLowerCase() == "false") { return {}; } } catch (e) { } var process = true; if (optimizeForDojoML) { var dojoTagName = getDojoTagName(node); tagName = dojoTagName || tagName; process = Boolean(dojoTagName); } var parsedNodeSet = {}; parsedNodeSet[tagName] = []; var pos = tagName.indexOf(":"); if (pos > 0) { var ns = tagName.substring(0, pos); parsedNodeSet["ns"] = ns; if ((dojo.ns) && (!dojo.ns.allow(ns))) { process = false; } } if (process) { var attributeSet = this.parseAttributes(node); for (var attr in attributeSet) { if ((!parsedNodeSet[tagName][attr]) || (typeof parsedNodeSet[tagName][attr] != "array")) { parsedNodeSet[tagName][attr] = []; } parsedNodeSet[tagName][attr].push(attributeSet[attr]); } parsedNodeSet[tagName].nodeRef = node; parsedNodeSet.tagName = tagName; parsedNodeSet.index = thisIdx || 0; } var count = 0; for (var i = 0; i < node.childNodes.length; i++) { var tcn = node.childNodes.item(i); switch (tcn.nodeType) { case dojo.dom.ELEMENT_NODE: var ctn = getDojoTagName(tcn) || getTagName(tcn); if (!parsedNodeSet[ctn]) { parsedNodeSet[ctn] = []; } parsedNodeSet[ctn].push(this.parseElement(tcn, true, optimizeForDojoML, count)); if ((tcn.childNodes.length == 1) && (tcn.childNodes.item(0).nodeType == dojo.dom.TEXT_NODE)) { parsedNodeSet[ctn][parsedNodeSet[ctn].length - 1].value = tcn.childNodes.item(0).nodeValue; } count++; break; case dojo.dom.TEXT_NODE: if (node.childNodes.length == 1) { parsedNodeSet[tagName].push({value:node.childNodes.item(0).nodeValue}); } break; default: break; } } return parsedNodeSet; }; this.parseAttributes = function (node) { var parsedAttributeSet = {}; var atts = node.attributes; var attnode, i = 0; while ((attnode = atts[i++])) { if (isIE) { if (!attnode) { continue; } if ((typeof attnode == "object") && (typeof attnode.nodeValue == "undefined") || (attnode.nodeValue == null) || (attnode.nodeValue == "")) { continue; } } var nn = attnode.nodeName.split(":"); nn = (nn.length == 2) ? nn[1] : attnode.nodeName; parsedAttributeSet[nn] = {value:attnode.nodeValue}; } return parsedAttributeSet; }; }; }});

__CPAN_FILE__ src/xml/__package__.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.require("dojo.xml.Parse"); dojo.kwCompoundRequire({common:["dojo.dom"], browser:["dojo.html.*"], dashboard:["dojo.html.*"]}); dojo.provide("dojo.xml.*");

__CPAN_FILE__ src/xml/__package__.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["require", "dojo.xml.Parse"], ["kwCompoundRequire", {common:["dojo.dom"], browser:["dojo.html.*"], dashboard:["dojo.html.*"]}], ["provide", "dojo.xml.*"]], definePackage:function (dojo) { dojo.require("dojo.xml.Parse"); dojo.kwCompoundRequire({common:["dojo.dom"], browser:["dojo.html.*"], dashboard:["dojo.html.*"]}); dojo.provide("dojo.xml.*"); }});

__CPAN_FILE__ src/xml/XslTransform.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.xml.XslTransform"); dojo.xml.XslTransform = function (xsltUri) { dojo.debug("XslTransform is supported by Internet Explorer and Mozilla, with limited support in Opera 9 (no document function support)."); var IS_IE = dojo.render.html.ie; var ACTIVEX_DOMS = ["Msxml2.DOMDocument.5.0", "Msxml2.DOMDocument.4.0", "Msxml2.DOMDocument.3.0", "MSXML2.DOMDocument", "MSXML.DOMDocument", "Microsoft.XMLDOM"]; var ACTIVEX_FT_DOMS = ["Msxml2.FreeThreadedDOMDocument.5.0", "MSXML2.FreeThreadedDOMDocument.4.0", "MSXML2.FreeThreadedDOMDocument.3.0"]; var ACTIVEX_TEMPLATES = ["Msxml2.XSLTemplate.5.0", "Msxml2.XSLTemplate.4.0", "MSXML2.XSLTemplate.3.0"]; function getActiveXImpl(activeXArray) { for (var i = 0; i < activeXArray.length; i++) { try { var testObj = new ActiveXObject(activeXArray[i]); if (testObj) { return activeXArray[i]; } } catch (e) { } } dojo.raise("Could not find an ActiveX implementation in:\n\n " + activeXArray); } if (xsltUri == null || xsltUri == undefined) { dojo.raise("You must pass the URI String for the XSL file to be used!"); return false; } var xsltDocument = null; var xsltProcessor = null; if (IS_IE) { xsltDocument = new ActiveXObject(getActiveXImpl(ACTIVEX_FT_DOMS)); xsltDocument.async = false; } else { xsltProcessor = new XSLTProcessor(); xsltDocument = document.implementation.createDocument("", "", null); xsltDocument.addEventListener("load", onXslLoad, false); } xsltDocument.load(xsltUri); if (IS_IE) { var xslt = new ActiveXObject(getActiveXImpl(ACTIVEX_TEMPLATES)); xslt.stylesheet = xsltDocument; xsltProcessor = xslt.createProcessor(); } function onXslLoad() { xsltProcessor.importStylesheet(xsltDocument); } function getResultDom(xmlDoc, params) { if (IS_IE) { addIeParams(params); var result = getIeResultDom(xmlDoc); removeIeParams(params); return result; } else { return getMozillaResultDom(xmlDoc, params); } } function addIeParams(params) { if (!params) { return; } for (var i = 0; i < params.length; i++) { xsltProcessor.addParameter(params[i][0], params[i][1]); } } function removeIeParams(params) { if (!params) { return; } for (var i = 0; i < params.length; i++) { xsltProcessor.addParameter(params[i][0], ""); } } function getIeResultDom(xmlDoc) { xsltProcessor.input = xmlDoc; var outDoc = new ActiveXObject(getActiveXImpl(ACTIVEX_DOMS)); outDoc.async = false; outDoc.validateOnParse = false; xsltProcessor.output = outDoc; xsltProcessor.transform(); if (outDoc.parseError.errorCode != 0) { var err = outDoc.parseError; dojo.raise("err.errorCode: " + err.errorCode + "\n\nerr.reason: " + err.reason + "\n\nerr.url: " + err.url + "\n\nerr.srcText: " + err.srcText); } return outDoc; } function getIeResultStr(xmlDoc, params) { xsltProcessor.input = xmlDoc; xsltProcessor.transform(); return xsltProcessor.output; } function addMozillaParams(params) { if (!params) { return; } for (var i = 0; i < params.length; i++) { xsltProcessor.setParameter(null, params[i][0], params[i][1]); } } function getMozillaResultDom(xmlDoc, params) { addMozillaParams(params); var resultDoc = xsltProcessor.transformToDocument(xmlDoc); xsltProcessor.clearParameters(); return resultDoc; } function getMozillaResultStr(xmlDoc, params, parentDoc) { addMozillaParams(params); var resultDoc = xsltProcessor.transformToFragment(xmlDoc, parentDoc); var serializer = new XMLSerializer(); xsltProcessor.clearParameters(); return serializer.serializeToString(resultDoc); } this.getResultString = function (xmlDoc, params, parentDoc) { var content = null; if (IS_IE) { addIeParams(params); content = getIeResultStr(xmlDoc, params); removeIeParams(params); } else { content = getMozillaResultStr(xmlDoc, params, parentDoc); } return content; }; this.transformToContentPane = function (xmlDoc, params, contentPane, parentDoc) { var content = this.getResultString(xmlDoc, params, parentDoc); contentPane.setContent(content); }; this.transformToRegion = function (xmlDoc, params, region, parentDoc) { try { var content = this.getResultString(xmlDoc, params, parentDoc); region.innerHTML = content; } catch (e) { dojo.raise(e.message + "\n\n xsltUri: " + xsltUri); } }; this.transformToDocument = function (xmlDoc, params) { return getResultDom(xmlDoc, params); }; this.transformToWindow = function (xmlDoc, params, windowDoc, parentDoc) { try { windowDoc.open(); windowDoc.write(this.getResultString(xmlDoc, params, parentDoc)); windowDoc.close(); } catch (e) { dojo.raise(e.message + "\n\n xsltUri: " + xsltUri); } }; };

__CPAN_FILE__ src/xml/Parse.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.xml.Parse"); dojo.require("dojo.dom"); dojo.xml.Parse = function () { var isIE = ((dojo.render.html.capable) && (dojo.render.html.ie)); function getTagName(node) { try { return node.tagName.toLowerCase(); } catch (e) { return ""; } } function getDojoTagName(node) { var tagName = getTagName(node); if (!tagName) { return ""; } if ((dojo.widget) && (dojo.widget.tags[tagName])) { return tagName; } var p = tagName.indexOf(":"); if (p >= 0) { return tagName; } if (tagName.substr(0, 5) == "dojo:") { return tagName; } if (dojo.render.html.capable && dojo.render.html.ie && node.scopeName != "HTML") { return node.scopeName.toLowerCase() + ":" + tagName; } if (tagName.substr(0, 4) == "dojo") { return "dojo:" + tagName.substring(4); } var djt = node.getAttribute("dojoType") || node.getAttribute("dojotype"); if (djt) { if (djt.indexOf(":") < 0) { djt = "dojo:" + djt; } return djt.toLowerCase(); } djt = node.getAttributeNS && node.getAttributeNS(dojo.dom.dojoml, "type"); if (djt) { return "dojo:" + djt.toLowerCase(); } try { djt = node.getAttribute("dojo:type"); } catch (e) { } if (djt) { return "dojo:" + djt.toLowerCase(); } if ((dj_global["djConfig"]) && (!djConfig["ignoreClassNames"])) { var classes = node.className || node.getAttribute("class"); if ((classes) && (classes.indexOf) && (classes.indexOf("dojo-") != -1)) { var aclasses = classes.split(" "); for (var x = 0, c = aclasses.length; x < c; x++) { if (aclasses[x].slice(0, 5) == "dojo-") { return "dojo:" + aclasses[x].substr(5).toLowerCase(); } } } } return ""; } this.parseElement = function (node, hasParentNodeSet, optimizeForDojoML, thisIdx) { var tagName = getTagName(node); if (isIE && tagName.indexOf("/") == 0) { return null; } try { var attr = node.getAttribute("parseWidgets"); if (attr && attr.toLowerCase() == "false") { return {}; } } catch (e) { } var process = true; if (optimizeForDojoML) { var dojoTagName = getDojoTagName(node); tagName = dojoTagName || tagName; process = Boolean(dojoTagName); } var parsedNodeSet = {}; parsedNodeSet[tagName] = []; var pos = tagName.indexOf(":"); if (pos > 0) { var ns = tagName.substring(0, pos); parsedNodeSet["ns"] = ns; if ((dojo.ns) && (!dojo.ns.allow(ns))) { process = false; } } if (process) { var attributeSet = this.parseAttributes(node); for (var attr in attributeSet) { if ((!parsedNodeSet[tagName][attr]) || (typeof parsedNodeSet[tagName][attr] != "array")) { parsedNodeSet[tagName][attr] = []; } parsedNodeSet[tagName][attr].push(attributeSet[attr]); } parsedNodeSet[tagName].nodeRef = node; parsedNodeSet.tagName = tagName; parsedNodeSet.index = thisIdx || 0; } var count = 0; for (var i = 0; i < node.childNodes.length; i++) { var tcn = node.childNodes.item(i); switch (tcn.nodeType) { case dojo.dom.ELEMENT_NODE: var ctn = getDojoTagName(tcn) || getTagName(tcn); if (!parsedNodeSet[ctn]) { parsedNodeSet[ctn] = []; } parsedNodeSet[ctn].push(this.parseElement(tcn, true, optimizeForDojoML, count)); if ((tcn.childNodes.length == 1) && (tcn.childNodes.item(0).nodeType == dojo.dom.TEXT_NODE)) { parsedNodeSet[ctn][parsedNodeSet[ctn].length - 1].value = tcn.childNodes.item(0).nodeValue; } count++; break; case dojo.dom.TEXT_NODE: if (node.childNodes.length == 1) { parsedNodeSet[tagName].push({value:node.childNodes.item(0).nodeValue}); } break; default: break; } } return parsedNodeSet; }; this.parseAttributes = function (node) { var parsedAttributeSet = {}; var atts = node.attributes; var attnode, i = 0; while ((attnode = atts[i++])) { if (isIE) { if (!attnode) { continue; } if ((typeof attnode == "object") && (typeof attnode.nodeValue == "undefined") || (attnode.nodeValue == null) || (attnode.nodeValue == "")) { continue; } } var nn = attnode.nodeName.split(":"); nn = (nn.length == 2) ? nn[1] : attnode.nodeName; parsedAttributeSet[nn] = {value:attnode.nodeValue}; } return parsedAttributeSet; }; };

__CPAN_DIR__ src/gfx __CPAN_FILE__ src/gfx/matrix.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.gfx.matrix"); dojo.require("dojo.lang.common"); dojo.require("dojo.math.*"); dojo.gfx.matrix.Matrix2D = function (arg) { if (arg) { if (arg instanceof Array) { if (arg.length > 0) { var m = dojo.gfx.matrix.normalize(arg[0]); for (var i = 1; i < arg.length; ++i) { var l = m; var r = dojo.gfx.matrix.normalize(arg[i]); m = new dojo.gfx.matrix.Matrix2D(); m.xx = l.xx * r.xx + l.xy * r.yx; m.xy = l.xx * r.xy + l.xy * r.yy; m.yx = l.yx * r.xx + l.yy * r.yx; m.yy = l.yx * r.xy + l.yy * r.yy; m.dx = l.xx * r.dx + l.xy * r.dy + l.dx; m.dy = l.yx * r.dx + l.yy * r.dy + l.dy; } dojo.mixin(this, m); } } else { dojo.mixin(this, arg); } } }; dojo.extend(dojo.gfx.matrix.Matrix2D, {xx:1, xy:0, yx:0, yy:1, dx:0, dy:0}); dojo.mixin(dojo.gfx.matrix, {identity:new dojo.gfx.matrix.Matrix2D(), flipX:new dojo.gfx.matrix.Matrix2D({xx:-1}), flipY:new dojo.gfx.matrix.Matrix2D({yy:-1}), flipXY:new dojo.gfx.matrix.Matrix2D({xx:-1, yy:-1}), translate:function (a, b) { if (arguments.length > 1) { return new dojo.gfx.matrix.Matrix2D({dx:a, dy:b}); } return new dojo.gfx.matrix.Matrix2D({dx:a.x, dy:a.y}); }, scale:function (a, b) { if (arguments.length > 1) { return new dojo.gfx.matrix.Matrix2D({xx:a, yy:b}); } if (typeof a == "number") { return new dojo.gfx.matrix.Matrix2D({xx:a, yy:a}); } return new dojo.gfx.matrix.Matrix2D({xx:a.x, yy:a.y}); }, rotate:function (angle) { var c = Math.cos(angle); var s = Math.sin(angle); return new dojo.gfx.matrix.Matrix2D({xx:c, xy:s, yx:-s, yy:c}); }, rotateg:function (degree) { return dojo.gfx.matrix.rotate(dojo.math.degToRad(degree)); }, skewX:function (angle) { return new dojo.gfx.matrix.Matrix2D({xy:Math.tan(angle)}); }, skewXg:function (degree) { return dojo.gfx.matrix.skewX(dojo.math.degToRad(degree)); }, skewY:function (angle) { return new dojo.gfx.matrix.Matrix2D({yx:-Math.tan(angle)}); }, skewYg:function (degree) { return dojo.gfx.matrix.skewY(dojo.math.degToRad(degree)); }, normalize:function (matrix) { return (matrix instanceof dojo.gfx.matrix.Matrix2D) ? matrix : new dojo.gfx.matrix.Matrix2D(matrix); }, clone:function (matrix) { var obj = new dojo.gfx.matrix.Matrix2D(); for (var i in matrix) { if (typeof (matrix[i]) == "number" && typeof (obj[i]) == "number" && obj[i] != matrix[i]) { obj[i] = matrix[i]; } } return obj; }, invert:function (matrix) { var m = dojo.gfx.matrix.normalize(matrix); var D = m.xx * m.yy - m.xy * m.yx; var M = new dojo.gfx.matrix.Matrix2D({xx:m.yy / D, xy:-m.xy / D, yx:-m.yx / D, yy:m.xx / D, dx:(m.yx * m.dy - m.yy * m.dx) / D, dy:(m.xy * m.dx - m.xx * m.dy) / D}); return M; }, _multiplyPoint:function (m, x, y) { return {x:m.xx * x + m.xy * y + m.dx, y:m.yx * x + m.yy * y + m.dy}; }, multiplyPoint:function (matrix, a, b) { var m = dojo.gfx.matrix.normalize(matrix); if (typeof a == "number" && typeof b == "number") { return dojo.gfx.matrix._multiplyPoint(m, a, b); } return dojo.gfx.matrix._multiplyPoint(m, a.x, a.y); }, multiply:function (matrix) { var m = dojo.gfx.matrix.normalize(matrix); for (var i = 1; i < arguments.length; ++i) { var l = m; var r = dojo.gfx.matrix.normalize(arguments[i]); m = new dojo.gfx.matrix.Matrix2D(); m.xx = l.xx * r.xx + l.xy * r.yx; m.xy = l.xx * r.xy + l.xy * r.yy; m.yx = l.yx * r.xx + l.yy * r.yx; m.yy = l.yx * r.xy + l.yy * r.yy; m.dx = l.xx * r.dx + l.xy * r.dy + l.dx; m.dy = l.yx * r.dx + l.yy * r.dy + l.dy; } return m; }, _sandwich:function (m, x, y) { return dojo.gfx.matrix.multiply(dojo.gfx.matrix.translate(x, y), m, dojo.gfx.matrix.translate(-x, -y)); }, scaleAt:function (a, b, c, d) { switch (arguments.length) { case 4: return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.scale(a, b), c, d); case 3: if (typeof c == "number") { return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.scale(a), b, c); } return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.scale(a, b), c.x, c.y); } return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.scale(a), b.x, b.y); }, rotateAt:function (angle, a, b) { if (arguments.length > 2) { return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.rotate(angle), a, b); } return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.rotate(angle), a.x, a.y); }, rotategAt:function (degree, a, b) { if (arguments.length > 2) { return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.rotateg(degree), a, b); } return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.rotateg(degree), a.x, a.y); }, skewXAt:function (angle, a, b) { if (arguments.length > 2) { return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.skewX(angle), a, b); } return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.skewX(angle), a.x, a.y); }, skewXgAt:function (degree, a, b) { if (arguments.length > 2) { return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.skewXg(degree), a, b); } return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.skewXg(degree), a.x, a.y); }, skewYAt:function (angle, a, b) { if (arguments.length > 2) { return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.skewY(angle), a, b); } return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.skewY(angle), a.x, a.y); }, skewYgAt:function (degree, a, b) { if (arguments.length > 2) { return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.skewYg(degree), a, b); } return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.skewYg(degree), a.x, a.y); }});

__CPAN_FILE__ src/gfx/Colorspace.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.gfx.Colorspace"], ["require", "dojo.lang.common"], ["require", "dojo.math.matrix"]], definePackage:function (dojo) { dojo.provide("dojo.gfx.Colorspace"); dojo.require("dojo.lang.common"); dojo.require("dojo.math.matrix"); dojo.gfx.Colorspace = function () { this.whitePoint = "D65"; this.stdObserver = "10"; this.chromaticAdaptationAlg = "bradford"; this.RGBWorkingSpace = "s_rgb"; this.useApproxCIELabMapping = 1; this.chainMaps = {"RGB_to_xyY":["XYZ"], "xyY_to_RGB":["XYZ"], "RGB_to_Lab":["XYZ"], "Lab_to_RGB":["XYZ"], "RGB_to_LCHab":["XYZ", "Lab"], "LCHab_to_RGB":["Lab"], "xyY_to_Lab":["XYZ"], "Lab_to_xyY":["XYZ"], "XYZ_to_LCHab":["Lab"], "LCHab_to_XYZ":["Lab"], "xyY_to_LCHab":["XYZ", "Lab"], "LCHab_to_xyY":["Lab", "XYZ"], "RGB_to_Luv":["XYZ"], "Luv_to_RGB":["XYZ"], "xyY_to_Luv":["XYZ"], "Luv_to_xyY":["XYZ"], "Lab_to_Luv":["XYZ"], "Luv_to_Lab":["XYZ"], "LCHab_to_Luv":["Lab", "XYZ"], "Luv_to_LCHab":["XYZ", "Lab"], "RGB_to_LCHuv":["XYZ", "Luv"], "LCHuv_to_RGB":["Luv", "XYZ"], "XYZ_to_LCHuv":["Luv"], "LCHuv_to_XYZ":["Luv"], "xyY_to_LCHuv":["XYZ", "Luv"], "LCHuv_to_xyY":["Luv", "XYZ"], "Lab_to_LCHuv":["XYZ", "Luv"], "LCHuv_to_Lab":["Luv", "XYZ"], "LCHab_to_LCHuv":["Lab", "XYZ", "Luv"], "LCHuv_to_LCHab":["Luv", "XYZ", "Lab"], "XYZ_to_CMY":["RGB"], "CMY_to_XYZ":["RGB"], "xyY_to_CMY":["RGB"], "CMY_to_xyY":["RGB"], "Lab_to_CMY":["RGB"], "CMY_to_Lab":["RGB"], "LCHab_to_CMY":["RGB"], "CMY_to_LCHab":["RGB"], "Luv_to_CMY":["RGB"], "CMY_to_Luv":["RGB"], "LCHuv_to_CMY":["RGB"], "CMY_to_LCHuv":["RGB"], "XYZ_to_HSL":["RGB"], "HSL_to_XYZ":["RGB"], "xyY_to_HSL":["RGB"], "HSL_to_xyY":["RGB"], "Lab_to_HSL":["RGB"], "HSL_to_Lab":["RGB"], "LCHab_to_HSL":["RGB"], "HSL_to_LCHab":["RGB"], "Luv_to_HSL":["RGB"], "HSL_to_Luv":["RGB"], "LCHuv_to_HSL":["RGB"], "HSL_to_LCHuv":["RGB"], "CMY_to_HSL":["RGB"], "HSL_to_CMY":["RGB"], "CMYK_to_HSL":["RGB"], "HSL_to_CMYK":["RGB"], "XYZ_to_HSV":["RGB"], "HSV_to_XYZ":["RGB"], "xyY_to_HSV":["RGB"], "HSV_to_xyY":["RGB"], "Lab_to_HSV":["RGB"], "HSV_to_Lab":["RGB"], "LCHab_to_HSV":["RGB"], "HSV_to_LCHab":["RGB"], "Luv_to_HSV":["RGB"], "HSV_to_Luv":["RGB"], "LCHuv_to_HSV":["RGB"], "HSV_to_LCHuv":["RGB"], "CMY_to_HSV":["RGB"], "HSV_to_CMY":["RGB"], "CMYK_to_HSV":["RGB"], "HSV_to_CMYK":["RGB"], "HSL_to_HSV":["RGB"], "HSV_to_HSL":["RGB"], "XYZ_to_CMYK":["RGB"], "CMYK_to_XYZ":["RGB"], "xyY_to_CMYK":["RGB"], "CMYK_to_xyY":["RGB"], "Lab_to_CMYK":["RGB"], "CMYK_to_Lab":["RGB"], "LCHab_to_CMYK":["RGB"], "CMYK_to_LCHab":["RGB"], "Luv_to_CMYK":["RGB"], "CMYK_to_Luv":["RGB"], "LCHuv_to_CMYK":["RGB"], "CMYK_to_LCHuv":["RGB"]}; return this; }; dojo.gfx.Colorspace.prototype.convert = function (col, model_from, model_to) { var k = model_from + "_to_" + model_to; if (this[k]) { return this[k](col); } else { if (this.chainMaps[k]) { var cur = model_from; var models = this.chainMaps[k].concat(); models.push(model_to); for (var i = 0; i < models.length; i++) { col = this.convert(col, cur, models[i]); cur = models[i]; } return col; } else { dojo.debug("Can't convert from " + model_from + " to " + model_to); } } }; dojo.gfx.Colorspace.prototype.munge = function (keys, args) { if (dojo.lang.isArray(args[0])) { args = args[0]; } var out = new Array(); for (var i = 0; i < keys.length; i++) { out[keys.charAt(i)] = args[i]; } return out; }; dojo.gfx.Colorspace.prototype.getWhitePoint = function () { var x = 0; var y = 0; var t = 0; switch (this.stdObserver) { case "2": switch (this.whitePoint) { case "E": x = 1 / 3; y = 1 / 3; t = 5400; break; case "D50": x = 0.34567; y = 0.3585; t = 5000; break; case "D55": x = 0.33242; y = 0.34743; t = 5500; break; case "D65": x = 0.31271; y = 0.32902; t = 6500; break; case "D75": x = 0.29902; y = 0.31485; t = 7500; break; case "A": x = 0.44757; y = 0.40745; t = 2856; break; case "B": x = 0.34842; y = 0.35161; t = 4874; break; case "C": x = 0.31006; y = 0.31616; t = 6774; break; case "9300": x = 0.2848; y = 0.2932; t = 9300; break; case "F2": x = 0.37207; y = 0.37512; t = 4200; break; case "F7": x = 0.31285; y = 0.32918; t = 6500; break; case "F11": x = 0.38054; y = 0.37691; t = 4000; break; default: dojo.debug("White point " + this.whitePoint + " isn't defined for Std. Observer " + this.strObserver); } break; case "10": switch (this.whitePoint) { case "E": x = 1 / 3; y = 1 / 3; t = 5400; break; case "D50": x = 0.34773; y = 0.35952; t = 5000; break; case "D55": x = 0.33411; y = 0.34877; t = 5500; break; case "D65": x = 0.31382; y = 0.331; t = 6500; break; case "D75": x = 0.29968; y = 0.3174; t = 7500; break; case "A": x = 0.45117; y = 0.40594; t = 2856; break; case "B": x = 0.3498; y = 0.3527; t = 4874; break; case "C": x = 0.31039; y = 0.31905; t = 6774; break; case "F2": x = 0.37928; y = 0.36723; t = 4200; break; case "F7": x = 0.31565; y = 0.32951; t = 6500; break; case "F11": x = 0.38543; y = 0.3711; t = 4000; break; default: dojo.debug("White point " + this.whitePoint + " isn't defined for Std. Observer " + this.strObserver); } break; default: dojo.debug("Std. Observer " + this.strObserver + " isn't defined"); } var z = 1 - x - y; var wp = {"x":x, "y":y, "z":z, "t":t}; wp.Y = 1; var XYZ = this.xyY_to_XYZ([wp.x, wp.y, wp.Y]); wp.X = XYZ[0]; wp.Y = XYZ[1]; wp.Z = XYZ[2]; return wp; }; dojo.gfx.Colorspace.prototype.getPrimaries = function () { var m = []; switch (this.RGBWorkingSpace) { case "adobe_rgb_1998": m = [2.2, "D65", 0.64, 0.33, 0.297361, 0.21, 0.71, 0.627355, 0.15, 0.06, 0.075285]; break; case "apple_rgb": m = [1.8, "D65", 0.625, 0.34, 0.244634, 0.28, 0.595, 0.672034, 0.155, 0.07, 0.083332]; break; case "best_rgb": m = [2.2, "D50", 0.7347, 0.2653, 0.228457, 0.215, 0.775, 0.737352, 0.13, 0.035, 0.034191]; break; case "beta_rgb": m = [2.2, "D50", 0.6888, 0.3112, 0.303273, 0.1986, 0.7551, 0.663786, 0.1265, 0.0352, 0.032941]; break; case "bruce_rgb": m = [2.2, "D65", 0.64, 0.33, 0.240995, 0.28, 0.65, 0.683554, 0.15, 0.06, 0.075452]; break; case "cie_rgb": m = [2.2, "E", 0.735, 0.265, 0.176204, 0.274, 0.717, 0.812985, 0.167, 0.009, 0.010811]; break; case "color_match_rgb": m = [1.8, "D50", 0.63, 0.34, 0.274884, 0.295, 0.605, 0.658132, 0.15, 0.075, 0.066985]; break; case "don_rgb_4": m = [2.2, "D50", 0.696, 0.3, 0.27835, 0.215, 0.765, 0.68797, 0.13, 0.035, 0.03368]; break; case "eci_rgb": m = [1.8, "D50", 0.67, 0.33, 0.32025, 0.21, 0.71, 0.602071, 0.14, 0.08, 0.077679]; break; case "ekta_space_ps5": m = [2.2, "D50", 0.695, 0.305, 0.260629, 0.26, 0.7, 0.734946, 0.11, 0.005, 0.004425]; break; case "ntsc_rgb": m = [2.2, "C", 0.67, 0.33, 0.298839, 0.21, 0.71, 0.586811, 0.14, 0.08, 0.11435]; break; case "pal_secam_rgb": m = [2.2, "D65", 0.64, 0.33, 0.222021, 0.29, 0.6, 0.706645, 0.15, 0.06, 0.071334]; break; case "pro_photo_rgb": m = [1.8, "D50", 0.7347, 0.2653, 0.28804, 0.1596, 0.8404, 0.711874, 0.0366, 0.0001, 0.000086]; break; case "smpte-c_rgb": m = [2.2, "D65", 0.63, 0.34, 0.212395, 0.31, 0.595, 0.701049, 0.155, 0.07, 0.086556]; break; case "s_rgb": m = [2.2, "D65", 0.64, 0.33, 0.212656, 0.3, 0.6, 0.715158, 0.15, 0.06, 0.072186]; break; case "wide_gamut_rgb": m = [2.2, "D50", 0.735, 0.265, 0.258187, 0.115, 0.826, 0.724938, 0.157, 0.018, 0.016875]; break; default: dojo.debug("RGB working space " + this.RGBWorkingSpace + " isn't defined"); } var p = {name:this.RGBWorkingSpace, gamma:m[0], wp:m[1], xr:m[2], yr:m[3], Yr:m[4], xg:m[5], yg:m[6], Yg:m[7], xb:m[8], yb:m[9], Yb:m[10]}; if (p.wp != this.whitePoint) { var r = this.XYZ_to_xyY(this.chromaticAdaptation(this.xyY_to_XYZ([p.xr, p.yr, p.Yr]), p.wp, this.whitePoint)); var g = this.XYZ_to_xyY(this.chromaticAdaptation(this.xyY_to_XYZ([p.xg, p.yg, p.Yg]), p.wp, this.whitePoint)); var b = this.XYZ_to_xyY(this.chromaticAdaptation(this.xyY_to_XYZ([p.xb, p.yb, p.Yb]), p.wp, this.whitePoint)); p.xr = r[0]; p.yr = r[1]; p.Yr = r[2]; p.xg = g[0]; p.yg = g[1]; p.Yg = g[2]; p.xb = b[0]; p.yb = b[1]; p.Yb = b[2]; p.wp = this.whitePoint; } p.zr = 1 - p.xr - p.yr; p.zg = 1 - p.xg - p.yg; p.zb = 1 - p.xb - p.yb; return p; }; dojo.gfx.Colorspace.prototype.epsilon = function () { return this.useApproxCIELabMapping ? 0.008856 : 216 / 24289; }; dojo.gfx.Colorspace.prototype.kappa = function () { return this.useApproxCIELabMapping ? 903.3 : 24389 / 27; }; dojo.gfx.Colorspace.prototype.XYZ_to_xyY = function () { var src = this.munge("XYZ", arguments); var sum = src.X + src.Y + src.Z; if (sum == 0) { var wp = this.getWhitePoint(); var x = wp.x; var y = wp.y; } else { var x = src.X / sum; var y = src.Y / sum; } var Y = src.Y; return [x, y, Y]; }; dojo.gfx.Colorspace.prototype.xyY_to_XYZ = function () { var src = this.munge("xyY", arguments); if (src.y == 0) { var X = 0; var Y = 0; var Z = 0; } else { var X = (src.x * src.Y) / src.y; var Y = src.Y; var Z = ((1 - src.x - src.y) * src.Y) / src.y; } return [X, Y, Z]; }; dojo.gfx.Colorspace.prototype.RGB_to_XYZ = function () { var src = this.munge("RGB", arguments); var m = this.getRGB_XYZ_Matrix(); var pr = this.getPrimaries(); if (this.RGBWorkingSpace == "s_rgb") { var r = (src.R > 0.04045) ? Math.pow(((src.R + 0.055) / 1.055), 2.4) : src.R / 12.92; var g = (src.G > 0.04045) ? Math.pow(((src.G + 0.055) / 1.055), 2.4) : src.G / 12.92; var b = (src.B > 0.04045) ? Math.pow(((src.B + 0.055) / 1.055), 2.4) : src.B / 12.92; } else { var r = Math.pow(src.R, pr.gamma); var g = Math.pow(src.G, pr.gamma); var b = Math.pow(src.B, pr.gamma); } var XYZ = dojo.math.matrix.multiply([[r, g, b]], m); return [XYZ[0][0], XYZ[0][1], XYZ[0][2]]; }; dojo.gfx.Colorspace.prototype.XYZ_to_RGB = function () { var src = this.munge("XYZ", arguments); var mi = this.getXYZ_RGB_Matrix(); var pr = this.getPrimaries(); var rgb = dojo.math.matrix.multiply([[src.X, src.Y, src.Z]], mi); var r = rgb[0][0]; var g = rgb[0][1]; var b = rgb[0][2]; if (this.RGBWorkingSpace == "s_rgb") { var R = (r > 0.0031308) ? (1.055 * Math.pow(r, 1 / 2.4)) - 0.055 : 12.92 * r; var G = (g > 0.0031308) ? (1.055 * Math.pow(g, 1 / 2.4)) - 0.055 : 12.92 * g; var B = (b > 0.0031308) ? (1.055 * Math.pow(b, 1 / 2.4)) - 0.055 : 12.92 * b; } else { var R = Math.pow(r, 1 / pr.gamma); var G = Math.pow(g, 1 / pr.gamma); var B = Math.pow(b, 1 / pr.gamma); } return [R, G, B]; }; dojo.gfx.Colorspace.prototype.XYZ_to_Lab = function () { var src = this.munge("XYZ", arguments); var wp = this.getWhitePoint(); var xr = src.X / wp.X; var yr = src.Y / wp.Y; var zr = src.Z / wp.Z; var fx = (xr > this.epsilon()) ? Math.pow(xr, 1 / 3) : (this.kappa() * xr + 16) / 116; var fy = (yr > this.epsilon()) ? Math.pow(yr, 1 / 3) : (this.kappa() * yr + 16) / 116; var fz = (zr > this.epsilon()) ? Math.pow(zr, 1 / 3) : (this.kappa() * zr + 16) / 116; var L = 116 * fy - 16; var a = 500 * (fx - fy); var b = 200 * (fy - fz); return [L, a, b]; }; dojo.gfx.Colorspace.prototype.Lab_to_XYZ = function () { var src = this.munge("Lab", arguments); var wp = this.getWhitePoint(); var yr = (src.L > (this.kappa() * this.epsilon())) ? Math.pow((src.L + 16) / 116, 3) : src.L / this.kappa(); var fy = (yr > this.epsilon()) ? (src.L + 16) / 116 : (this.kappa() * yr + 16) / 116; var fx = (src.a / 500) + fy; var fz = fy - (src.b / 200); var fxcube = Math.pow(fx, 3); var fzcube = Math.pow(fz, 3); var xr = (fxcube > this.epsilon()) ? fxcube : (116 * fx - 16) / this.kappa(); var zr = (fzcube > this.epsilon()) ? fzcube : (116 * fz - 16) / this.kappa(); var X = xr * wp.X; var Y = yr * wp.Y; var Z = zr * wp.Z; return [X, Y, Z]; }; dojo.gfx.Colorspace.prototype.Lab_to_LCHab = function () { var src = this.munge("Lab", arguments); var L = src.L; var C = Math.pow(src.a * src.a + src.b * src.b, 0.5); var H = Math.atan2(src.b, src.a) * (180 / Math.PI); if (H < 0) { H += 360; } if (H > 360) { H -= 360; } return [L, C, H]; }; dojo.gfx.Colorspace.prototype.LCHab_to_Lab = function () { var src = this.munge("LCH", arguments); var H_rad = src.H * (Math.PI / 180); var L = src.L; var a = src.C / Math.pow(Math.pow(Math.tan(H_rad), 2) + 1, 0.5); if ((90 < src.H) && (src.H < 270)) { a = -a; } var b = Math.pow(Math.pow(src.C, 2) - Math.pow(a, 2), 0.5); if (src.H > 180) { b = -b; } return [L, a, b]; }; dojo.gfx.Colorspace.prototype.chromaticAdaptation = function (col, src_w, dst_w) { col = this.munge("XYZ", [col]); var old_wp = this.whitePoint; this.whitePoint = src_w; var wp_src = this.getWhitePoint(); this.whitePoint = dst_w; var wp_dst = this.getWhitePoint(); this.whitePoint = old_wp; switch (this.chromaticAdaptationAlg) { case "xyz_scaling": var ma = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]; var mai = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]; break; case "bradford": var ma = [[0.8951, -0.7502, 0.0389], [0.2664, 1.7135, -0.0685], [-0.1614, 0.0367, 1.0296]]; var mai = [[0.986993, 0.432305, -0.008529], [-0.147054, 0.51836, 0.040043], [0.159963, 0.049291, 0.968487]]; break; case "von_kries": var ma = [[0.40024, -0.2263, 0], [0.7076, 1.16532, 0], [-0.08081, 0.0457, 0.91822]]; var mai = [[1.859936, 0.361191, 0], [-1.129382, 0.638812, 0], [0.219897, -0.000006, 1.089064]]; break; default: dojo.debug("The " + this.chromaticAdaptationAlg + " chromatic adaptation algorithm matricies are not defined"); } var domain_src = dojo.math.matrix.multiply([[wp_src.x, wp_src.y, wp_src.z]], ma); var domain_dst = dojo.math.matrix.multiply([[wp_dst.x, wp_dst.y, wp_dst.z]], ma); var centre = [[domain_dst[0][0] / domain_src[0][0], 0, 0], [0, domain_dst[0][1] / domain_src[0][1], 0], [0, 0, domain_dst[0][2] / domain_src[0][2]]]; var m = dojo.math.matrix.multiply(dojo.math.matrix.multiply(ma, centre), mai); var dst = dojo.math.matrix.multiply([[col.X, col.Y, col.Z]], m); return dst[0]; }; dojo.gfx.Colorspace.prototype.getRGB_XYZ_Matrix = function () { var wp = this.getWhitePoint(); var pr = this.getPrimaries(); var Xr = pr.xr / pr.yr; var Yr = 1; var Zr = (1 - pr.xr - pr.yr) / pr.yr; var Xg = pr.xg / pr.yg; var Yg = 1; var Zg = (1 - pr.xg - pr.yg) / pr.yg; var Xb = pr.xb / pr.yb; var Yb = 1; var Zb = (1 - pr.xb - pr.yb) / pr.yb; var m1 = [[Xr, Yr, Zr], [Xg, Yg, Zg], [Xb, Yb, Zb]]; var m2 = [[wp.X, wp.Y, wp.Z]]; var sm = dojo.math.matrix.multiply(m2, dojo.math.matrix.inverse(m1)); var Sr = sm[0][0]; var Sg = sm[0][1]; var Sb = sm[0][2]; var m4 = [[Sr * Xr, Sr * Yr, Sr * Zr], [Sg * Xg, Sg * Yg, Sg * Zg], [Sb * Xb, Sb * Yb, Sb * Zb]]; return m4; }; dojo.gfx.Colorspace.prototype.getXYZ_RGB_Matrix = function () { var m = this.getRGB_XYZ_Matrix(); return dojo.math.matrix.inverse(m); }; dojo.gfx.Colorspace.prototype.XYZ_to_Luv = function () { var src = this.munge("XYZ", arguments); var wp = this.getWhitePoint(); var ud = (4 * src.X) / (src.X + 15 * src.Y + 3 * src.Z); var vd = (9 * src.Y) / (src.X + 15 * src.Y + 3 * src.Z); var udr = (4 * wp.X) / (wp.X + 15 * wp.Y + 3 * wp.Z); var vdr = (9 * wp.Y) / (wp.X + 15 * wp.Y + 3 * wp.Z); var yr = src.Y / wp.Y; var L = (yr > this.epsilon()) ? 116 * Math.pow(yr, 1 / 3) - 16 : this.kappa() * yr; var u = 13 * L * (ud - udr); var v = 13 * L * (vd - vdr); return [L, u, v]; }; dojo.gfx.Colorspace.prototype.Luv_to_XYZ = function () { var src = this.munge("Luv", arguments); var wp = this.getWhitePoint(); var uz = (4 * wp.X) / (wp.X + 15 * wp.Y + 3 * wp.Z); var vz = (9 * wp.Y) / (wp.X + 15 * wp.Y + 3 * wp.Z); var Y = (src.L > this.kappa() * this.epsilon()) ? Math.pow((src.L + 16) / 116, 3) : src.L / this.kappa(); var a = (1 / 3) * (((52 * src.L) / (src.u + 13 * src.L * uz)) - 1); var b = -5 * Y; var c = -(1 / 3); var d = Y * (((39 * src.L) / (src.v + 13 * src.L * vz)) - 5); var X = (d - b) / (a - c); var Z = X * a + b; return [X, Y, Z]; }; dojo.gfx.Colorspace.prototype.Luv_to_LCHuv = function () { var src = this.munge("Luv", arguments); var L = src.L; var C = Math.pow(src.u * src.u + src.v * src.v, 0.5); var H = Math.atan2(src.v, src.u) * (180 / Math.PI); if (H < 0) { H += 360; } if (H > 360) { H -= 360; } return [L, C, H]; }; dojo.gfx.Colorspace.prototype.LCHuv_to_Luv = function () { var src = this.munge("LCH", arguments); var H_rad = src.H * (Math.PI / 180); var L = src.L; var u = src.C / Math.pow(Math.pow(Math.tan(H_rad), 2) + 1, 0.5); var v = Math.pow(src.C * src.C - u * u, 0.5); if ((90 < src.H) && (src.H < 270)) { u *= -1; } if (src.H > 180) { v *= -1; } return [L, u, v]; }; dojo.gfx.Colorspace.colorTemp_to_whitePoint = function (T) { if (T < 4000) { dojo.debug("Can't find a white point for temperatures under 4000K"); return [0, 0]; } if (T > 25000) { dojo.debug("Can't find a white point for temperatures over 25000K"); return [0, 0]; } var T1 = T; var T2 = T * T; var T3 = T2 * T; var ten9 = Math.pow(10, 9); var ten6 = Math.pow(10, 6); var ten3 = Math.pow(10, 3); if (T <= 7000) { var x = (-4.607 * ten9 / T3) + (2.9678 * ten6 / T2) + (0.09911 * ten3 / T) + 0.244063; } else { var x = (-2.0064 * ten9 / T3) + (1.9018 * ten6 / T2) + (0.24748 * ten3 / T) + 0.23704; } var y = -3 * x * x + 2.87 * x - 0.275; return [x, y]; }; dojo.gfx.Colorspace.prototype.RGB_to_CMY = function () { var src = this.munge("RGB", arguments); var C = 1 - src.R; var M = 1 - src.G; var Y = 1 - src.B; return [C, M, Y]; }; dojo.gfx.Colorspace.prototype.CMY_to_RGB = function () { var src = this.munge("CMY", arguments); var R = 1 - src.C; var G = 1 - src.M; var B = 1 - src.Y; return [R, G, B]; }; dojo.gfx.Colorspace.prototype.RGB_to_CMYK = function () { var src = this.munge("RGB", arguments); var K = Math.min(1 - src.R, 1 - src.G, 1 - src.B); var C = (1 - src.R - K) / (1 - K); var M = (1 - src.G - K) / (1 - K); var Y = (1 - src.B - K) / (1 - K); return [C, M, Y, K]; }; dojo.gfx.Colorspace.prototype.CMYK_to_RGB = function () { var src = this.munge("CMYK", arguments); var R = 1 - Math.min(1, src.C * (1 - src.K) + src.K); var G = 1 - Math.min(1, src.M * (1 - src.K) + src.K); var B = 1 - Math.min(1, src.Y * (1 - src.K) + src.K); return [R, G, B]; }; dojo.gfx.Colorspace.prototype.CMY_to_CMYK = function () { var src = this.munge("CMY", arguments); var K = Math.min(src.C, src.M, src.Y); var C = (src.C - K) / (1 - K); var M = (src.M - K) / (1 - K); var Y = (src.Y - K) / (1 - K); return [C, M, Y, K]; }; dojo.gfx.Colorspace.prototype.CMYK_to_CMY = function () { var src = this.munge("CMYK", arguments); var C = Math.min(1, src.C * (1 - src.K) + src.K); var M = Math.min(1, src.M * (1 - src.K) + src.K); var Y = Math.min(1, src.Y * (1 - src.K) + src.K); return [C, M, Y]; }; dojo.gfx.Colorspace.prototype.RGB_to_HSV = function () { var src = this.munge("RGB", arguments); var min = Math.min(src.R, src.G, src.B); var V = Math.max(src.R, src.G, src.B); var delta = V - min; var H = null; var S = (V == 0) ? 0 : delta / V; if (S == 0) { H = 0; } else { if (src.R == V) { H = 60 * (src.G - src.B) / delta; } else { if (src.G == V) { H = 120 + 60 * (src.B - src.R) / delta; } else { if (src.B == V) { H = 240 + 60 * (src.R - src.G) / delta; } } } if (H < 0) { H += 360; } } H = (H == 0) ? 360 : H; return [H, S, V]; }; dojo.gfx.Colorspace.prototype.HSV_to_RGB = function () { var src = this.munge("HSV", arguments); if (src.H == 360) { src.H = 0; } var r = null; var g = null; var b = null; if (src.S == 0) { var R = src.V; var G = src.V; var B = src.V; } else { var hTemp = src.H / 60; var i = Math.floor(hTemp); var f = hTemp - i; var p = src.V * (1 - src.S); var q = src.V * (1 - (src.S * f)); var t = src.V * (1 - (src.S * (1 - f))); switch (i) { case 0: R = src.V; G = t; B = p; break; case 1: R = q; G = src.V; B = p; break; case 2: R = p; G = src.V; B = t; break; case 3: R = p; G = q; B = src.V; break; case 4: R = t; G = p; B = src.V; break; case 5: R = src.V; G = p; B = q; break; } } return [R, G, B]; }; dojo.gfx.Colorspace.prototype.RGB_to_HSL = function () { var src = this.munge("RGB", arguments); var min = Math.min(src.R, src.G, src.B); var max = Math.max(src.R, src.G, src.B); var delta = max - min; var H = 0; var S = 0; var L = (min + max) / 2; if ((L > 0) && (L < 1)) { S = delta / ((L < 0.5) ? (2 * L) : (2 - 2 * L)); } if (delta > 0) { if ((max == src.R) && (max != src.G)) { H += (src.G - src.B) / delta; } if ((max == src.G) && (max != src.B)) { H += (2 + (src.B - src.R) / delta); } if ((max == src.B) && (max != src.R)) { H += (4 + (src.R - src.G) / delta); } H *= 60; } H = (H == 0) ? 360 : H; return [H, S, L]; }; dojo.gfx.Colorspace.prototype.HSL_to_RGB = function () { var src = this.munge("HSL", arguments); while (src.H < 0) { src.H += 360; } while (src.H >= 360) { src.H -= 360; } var R = 0; var G = 0; var B = 0; if (src.H < 120) { R = (120 - src.H) / 60; G = src.H / 60; B = 0; } else { if (src.H < 240) { R = 0; G = (240 - src.H) / 60; B = (src.H - 120) / 60; } else { R = (src.H - 240) / 60; G = 0; B = (360 - src.H) / 60; } } R = 2 * src.S * Math.min(R, 1) + (1 - src.S); G = 2 * src.S * Math.min(G, 1) + (1 - src.S); B = 2 * src.S * Math.min(B, 1) + (1 - src.S); if (src.L < 0.5) { R = src.L * R; G = src.L * G; B = src.L * B; } else { R = (1 - src.L) * R + 2 * src.L - 1; G = (1 - src.L) * G + 2 * src.L - 1; B = (1 - src.L) * B + 2 * src.L - 1; } return [R, G, B]; }; }});

__CPAN_FILE__ src/gfx/path.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.gfx.path"], ["require", "dojo.math"], ["require", "dojo.gfx.shape"]], definePackage:function (dojo) { dojo.provide("dojo.gfx.path"); dojo.require("dojo.math"); dojo.require("dojo.gfx.shape"); dojo.declare("dojo.gfx.path.Path", dojo.gfx.Shape, {initializer:function (rawNode) { this.shape = dojo.lang.shallowCopy(dojo.gfx.defaultPath, true); this.segments = []; this.absolute = true; this.last = {}; this.attach(rawNode); }, setAbsoluteMode:function (mode) { this.absolute = typeof (mode) == "string" ? (mode == "absolute") : mode; return this; }, getAbsoluteMode:function () { return this.absolute; }, getBoundingBox:function () { return "l" in this.bbox ? {x:this.bbox.l, y:this.bbox.t, width:this.bbox.r - this.bbox.l, height:this.bbox.b - this.bbox.t} : null; }, getLastPosition:function () { return "x" in this.last ? this.last : null; }, _updateBBox:function (x, y) { if ("l" in this.bbox) { if (this.bbox.l > x) { this.bbox.l = x; } if (this.bbox.r < x) { this.bbox.r = x; } if (this.bbox.t > y) { this.bbox.t = y; } if (this.bbox.b < y) { this.bbox.b = y; } } else { this.bbox = {l:x, b:y, r:x, t:y}; } }, _updateWithSegment:function (segment) { var n = segment.args; var l = n.length; switch (segment.action) { case "M": case "L": case "C": case "S": case "Q": case "T": for (var i = 0; i < l; i += 2) { this._updateBBox(this.bbox, n[i], n[i + 1]); } this.last.x = n[l - 2]; this.last.y = n[l - 1]; this.absolute = true; break; case "H": for (var i = 0; i < l; ++i) { this._updateBBox(this.bbox, n[i], this.last.y); } this.last.x = n[l - 1]; this.absolute = true; break; case "V": for (var i = 0; i < l; ++i) { this._updateBBox(this.bbox, this.last.x, n[i]); } this.last.y = n[l - 1]; this.absolute = true; break; case "m": var start = 0; if (!("x" in this.last)) { this._updateBBox(this.bbox, this.last.x = n[0], this.last.y = n[1]); start = 2; } for (var i = start; i < l; i += 2) { this._updateBBox(this.bbox, this.last.x += n[i], this.last.y += n[i + 1]); } this.absolute = false; break; case "l": case "t": for (var i = 0; i < l; i += 2) { this._updateBBox(this.bbox, this.last.x += n[i], this.last.y += n[i + 1]); } this.absolute = false; break; case "h": for (var i = 0; i < l; ++i) { this._updateBBox(this.bbox, this.last.x += n[i], this.last.y); } this.absolute = false; break; case "v": for (var i = 0; i < l; ++i) { this._updateBBox(this.bbox, this.last.x, this.last.y += n[i]); } this.absolute = false; break; case "c": for (var i = 0; i < l; i += 6) { this._updateBBox(this.bbox, this.last.x + n[i], this.last.y + n[i + 1]); this._updateBBox(this.bbox, this.last.x + n[i + 2], this.last.y + n[i + 3]); this._updateBBox(this.bbox, this.last.x += n[i + 4], this.last.y += n[i + 5]); } this.absolute = false; break; case "s": case "q": for (var i = 0; i < l; i += 4) { this._updateBBox(this.bbox, this.last.x + n[i], this.last.y + n[i + 1]); this._updateBBox(this.bbox, this.last.x += n[i + 2], this.last.y += n[i + 3]); } this.absolute = false; break; case "A": for (var i = 0; i < l; i += 7) { this._updateBBox(this.bbox, n[i + 5], n[i + 6]); } this.last.x = n[l - 2]; this.last.y = n[l - 1]; this.absolute = true; break; case "a": for (var i = 0; i < l; i += 7) { this._updateBBox(this.bbox, this.last.x += n[i + 5], this.last.y += n[i + 6]); } this.absolute = false; break; } var path = [segment.action]; for (var i = 0; i < l; ++i) { path.push(dojo.gfx.formatNumber(n[i], true)); } if (typeof (this.shape.path) == "string") { this.shape.path += path.join(""); } else { this.shape.path = this.shape.path.concat(path); } }, _validSegments:{m:2, l:2, h:1, v:1, c:6, s:4, q:4, t:2, a:7, z:0}, _pushSegment:function (action, args) { var group = this._validSegments[action.toLowerCase()]; if (typeof (group) == "number") { if (group) { if (args.length >= group) { var segment = {action:action, args:args.slice(0, args.length - args.length % group)}; this.segments.push(segment); this._updateWithSegment(segment); } } else { var segment = {action:action, args:[]}; this.segments.push(segment); this._updateWithSegment(segment); } } }, _collectArgs:function (array, args) { for (var i = 0; i < args.length; ++i) { var t = args[i]; if (typeof (t) == "boolean") { array.push(t ? 1 : 0); } else { if (typeof (t) == "number") { array.push(t); } else { if (t instanceof Array) { this._collectArgs(array, t); } else { if ("x" in t && "y" in t) { array.push(t.x); array.push(t.y); } } } } } }, moveTo:function () { var args = []; this._collectArgs(args, arguments); this._pushSegment(this.absolute ? "M" : "m", args); return this; }, lineTo:function () { var args = []; this._collectArgs(args, arguments); this._pushSegment(this.absolute ? "L" : "l", args); return this; }, hLineTo:function () { var args = []; this._collectArgs(args, arguments); this._pushSegment(this.absolute ? "H" : "h", args); return this; }, vLineTo:function () { var args = []; this._collectArgs(args, arguments); this._pushSegment(this.absolute ? "V" : "v", args); return this; }, curveTo:function () { var args = []; this._collectArgs(args, arguments); this._pushSegment(this.absolute ? "C" : "c", args); return this; }, smoothCurveTo:function () { var args = []; this._collectArgs(args, arguments); this._pushSegment(this.absolute ? "S" : "s", args); return this; }, qCurveTo:function () { var args = []; this._collectArgs(args, arguments); this._pushSegment(this.absolute ? "Q" : "q", args); return this; }, qSmoothCurveTo:function () { var args = []; this._collectArgs(args, arguments); this._pushSegment(this.absolute ? "T" : "t", args); return this; }, arcTo:function () { var args = []; this._collectArgs(args, arguments); for (var i = 2; i < args.length; i += 7) { args[i] = -args[i]; } this._pushSegment(this.absolute ? "A" : "a", args); return this; }, closePath:function () { this._pushSegment("Z", []); return this; }, _setPath:function (path) { var p = path.match(dojo.gfx.pathRegExp); this.segments = []; this.absolute = true; this.bbox = {}; this.last = {}; if (!p) { return; } var action = ""; var args = []; for (var i = 0; i < p.length; ++i) { var t = p[i]; var x = parseFloat(t); if (isNaN(x)) { if (action) { this._pushSegment(action, args); } args = []; action = t; } else { args.push(x); } } this._pushSegment(action, args); }, setShape:function (newShape) { this.shape = dojo.gfx.makeParameters(this.shape, typeof (newShape) == "string" ? {path:newShape} : newShape); var path = this.shape.path; this.shape.path = []; this._setPath(path); this.shape.path = this.shape.path.join(""); return this; }, _2PI:Math.PI * 2}); }});

__CPAN_FILE__ src/gfx/common.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.gfx.common"); dojo.require("dojo.gfx.color"); dojo.require("dojo.lang.declare"); dojo.require("dojo.lang.extras"); dojo.require("dojo.dom"); dojo.lang.mixin(dojo.gfx, {defaultPath:{type:"path", path:""}, defaultPolyline:{type:"polyline", points:[]}, defaultRect:{type:"rect", x:0, y:0, width:100, height:100, r:0}, defaultEllipse:{type:"ellipse", cx:0, cy:0, rx:200, ry:100}, defaultCircle:{type:"circle", cx:0, cy:0, r:100}, defaultLine:{type:"line", x1:0, y1:0, x2:100, y2:100}, defaultImage:{type:"image", width:0, height:0, src:""}, defaultStroke:{color:"black", width:1, cap:"butt", join:4}, defaultLinearGradient:{type:"linear", x1:0, y1:0, x2:100, y2:100, colors:[{offset:0, color:"black"}, {offset:1, color:"white"}]}, defaultRadialGradient:{type:"radial", cx:0, cy:0, r:100, colors:[{offset:0, color:"black"}, {offset:1, color:"white"}]}, defaultPattern:{type:"pattern", x:0, y:0, width:0, height:0, src:""}, normalizeColor:function (color) { return (color instanceof dojo.gfx.color.Color) ? color : new dojo.gfx.color.Color(color); }, normalizeParameters:function (existed, update) { if (update) { var empty = {}; for (var x in existed) { if (x in update && !(x in empty)) { existed[x] = update[x]; } } } return existed; }, makeParameters:function (defaults, update) { if (!update) { return dojo.lang.shallowCopy(defaults, true); } var result = {}; for (var i in defaults) { if (!(i in result)) { result[i] = dojo.lang.shallowCopy((i in update) ? update[i] : defaults[i], true); } } return result; }, formatNumber:function (x, addSpace) { var val = x.toString(); if (val.indexOf("e") >= 0) { val = x.toFixed(4); } else { var point = val.indexOf("."); if (point >= 0 && val.length - point > 5) { val = x.toFixed(4); } } if (x < 0) { return val; } return addSpace ? " " + val : val; }, pathRegExp:/([A-Za-z]+)|(\d+(\.\d+)?)|(\.\d+)|(-\d+(\.\d+)?)|(-\.\d+)/g}); dojo.declare("dojo.gfx.Surface", null, {initializer:function () { this.rawNode = null; }, getEventSource:function () { return this.rawNode; }}); dojo.declare("dojo.gfx.Point", null, {}); dojo.declare("dojo.gfx.Rectangle", null, {});

__CPAN_FILE__ src/gfx/svg.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.gfx.svg"); dojo.require("dojo.lang.declare"); dojo.require("dojo.svg"); dojo.require("dojo.gfx.color"); dojo.require("dojo.gfx.common"); dojo.require("dojo.gfx.shape"); dojo.require("dojo.gfx.path"); dojo.require("dojo.experimental"); dojo.experimental("dojo.gfx.svg"); dojo.gfx.svg.getRef = function (fill) { if (!fill || fill == "none") { return null; } if (fill.match(/^url\(#.+\)$/)) { return dojo.byId(fill.slice(5, -1)); } if (dojo.render.html.opera && fill.match(/^#dj_unique_.+$/)) { return dojo.byId(fill.slice(1)); } return null; }; dojo.lang.extend(dojo.gfx.Shape, {setFill:function (fill) { if (!fill) { this.fillStyle = null; this.rawNode.setAttribute("fill", "none"); this.rawNode.setAttribute("fill-opacity", 0); return this; } if (typeof (fill) == "object" && "type" in fill) { switch (fill.type) { case "linear": var f = dojo.gfx.makeParameters(dojo.gfx.defaultLinearGradient, fill); var gradient = this._setFillObject(f, "linearGradient"); dojo.lang.forEach(["x1", "y1", "x2", "y2"], function (x) { gradient.setAttribute(x, f[x].toFixed(8)); }); break; case "radial": var f = dojo.gfx.makeParameters(dojo.gfx.defaultRadialGradient, fill); var gradient = this._setFillObject(f, "radialGradient"); dojo.lang.forEach(["cx", "cy", "r"], function (x) { gradient.setAttribute(x, f[x].toFixed(8)); }); break; case "pattern": var f = dojo.gfx.makeParameters(dojo.gfx.defaultPattern, fill); var pattern = this._setFillObject(f, "pattern"); dojo.lang.forEach(["x", "y", "width", "height"], function (x) { pattern.setAttribute(x, f[x].toFixed(8)); }); break; } return this; } var f = dojo.gfx.normalizeColor(fill); this.fillStyle = f; this.rawNode.setAttribute("fill", f.toCss()); this.rawNode.setAttribute("fill-opacity", f.a); return this; }, setStroke:function (stroke) { if (!stroke) { this.strokeStyle = null; this.rawNode.setAttribute("stroke", "none"); this.rawNode.setAttribute("stroke-opacity", 0); return this; } this.strokeStyle = dojo.gfx.makeParameters(dojo.gfx.defaultStroke, stroke); this.strokeStyle.color = dojo.gfx.normalizeColor(this.strokeStyle.color); var s = this.strokeStyle; var rn = this.rawNode; if (s) { rn.setAttribute("stroke", s.color.toCss()); rn.setAttribute("stroke-opacity", s.color.a); rn.setAttribute("stroke-width", s.width); rn.setAttribute("stroke-linecap", s.cap); if (typeof (s.join) == "number") { rn.setAttribute("stroke-linejoin", "miter"); rn.setAttribute("stroke-miterlimit", s.join); } else { rn.setAttribute("stroke-linejoin", s.join); } } return this; }, _setFillObject:function (f, nodeType) { var def_elems = this.rawNode.parentNode.getElementsByTagName("defs"); if (def_elems.length == 0) { return this; } this.fillStyle = f; var defs = def_elems[0]; var fill = this.rawNode.getAttribute("fill"); var ref = dojo.gfx.svg.getRef(fill); if (ref) { fill = ref; if (fill.tagName.toLowerCase() != nodeType.toLowerCase()) { var id = fill.id; fill.parentNode.removeChild(fill); fill = document.createElementNS(dojo.svg.xmlns.svg, nodeType); fill.setAttribute("id", id); defs.appendChild(fill); } else { while (fill.childNodes.length) { fill.removeChild(fill.lastChild); } } } else { fill = document.createElementNS(dojo.svg.xmlns.svg, nodeType); fill.setAttribute("id", dojo.dom.getUniqueId()); defs.appendChild(fill); } if (nodeType == "pattern") { fill.setAttribute("patternUnits", "userSpaceOnUse"); var img = document.createElementNS(dojo.svg.xmlns.svg, "image"); img.setAttribute("x", 0); img.setAttribute("y", 0); img.setAttribute("width", f.width.toFixed(8)); img.setAttribute("height", f.height.toFixed(8)); img.setAttributeNS(dojo.svg.xmlns.xlink, "href", f.src); fill.appendChild(img); } else { fill.setAttribute("gradientUnits", "userSpaceOnUse"); for (var i = 0; i < f.colors.length; ++i) { f.colors[i].color = dojo.gfx.normalizeColor(f.colors[i].color); var t = document.createElementNS(dojo.svg.xmlns.svg, "stop"); t.setAttribute("offset", f.colors[i].offset.toFixed(8)); t.setAttribute("stop-color", f.colors[i].color.toCss()); fill.appendChild(t); } } this.rawNode.setAttribute("fill", "url(#" + fill.getAttribute("id") + ")"); this.rawNode.removeAttribute("fill-opacity"); return fill; }, _applyTransform:function () { var matrix = this._getRealMatrix(); if (matrix) { var tm = this.matrix; this.rawNode.setAttribute("transform", "matrix(" + tm.xx.toFixed(8) + "," + tm.yx.toFixed(8) + "," + tm.xy.toFixed(8) + "," + tm.yy.toFixed(8) + "," + tm.dx.toFixed(8) + "," + tm.dy.toFixed(8) + ")"); } else { this.rawNode.removeAttribute("transform"); } return this; }, setRawNode:function (rawNode) { with (rawNode) { setAttribute("fill", "none"); setAttribute("fill-opacity", 0); setAttribute("stroke", "none"); setAttribute("stroke-opacity", 0); setAttribute("stroke-width", 1); setAttribute("stroke-linecap", "butt"); setAttribute("stroke-linejoin", "miter"); setAttribute("stroke-miterlimit", 4); } this.rawNode = rawNode; }, moveToFront:function () { this.rawNode.parentNode.appendChild(this.rawNode); return this; }, moveToBack:function () { this.rawNode.parentNode.insertBefore(this.rawNode, this.rawNode.parentNode.firstChild); return this; }, setShape:function (newShape) { this.shape = dojo.gfx.makeParameters(this.shape, newShape); for (var i in this.shape) { if (i != "type") { this.rawNode.setAttribute(i, this.shape[i]); } } return this; }, attachFill:function (rawNode) { var fillStyle = null; if (rawNode) { var fill = rawNode.getAttribute("fill"); if (fill == "none") { return; } var ref = dojo.gfx.svg.getRef(fill); if (ref) { var gradient = ref; switch (gradient.tagName.toLowerCase()) { case "lineargradient": fillStyle = this._getGradient(dojo.gfx.defaultLinearGradient, gradient); dojo.lang.forEach(["x1", "y1", "x2", "y2"], function (x) { fillStyle[x] = gradient.getAttribute(x); }); break; case "radialgradient": fillStyle = this._getGradient(dojo.gfx.defaultRadialGradient, gradient); dojo.lang.forEach(["cx", "cy", "r"], function (x) { fillStyle[x] = gradient.getAttribute(x); }); fillStyle.cx = gradient.getAttribute("cx"); fillStyle.cy = gradient.getAttribute("cy"); fillStyle.r = gradient.getAttribute("r"); break; case "pattern": fillStyle = dojo.lang.shallowCopy(dojo.gfx.defaultPattern, true); dojo.lang.forEach(["x", "y", "width", "height"], function (x) { fillStyle[x] = gradient.getAttribute(x); }); fillStyle.src = gradient.firstChild.getAttributeNS(dojo.svg.xmlns.xlink, "href"); break; } } else { fillStyle = new dojo.gfx.color.Color(fill); var opacity = rawNode.getAttribute("fill-opacity"); if (opacity != null) { fillStyle.a = opacity; } } } return fillStyle; }, _getGradient:function (defaultGradient, gradient) { var fillStyle = dojo.lang.shallowCopy(defaultGradient, true); fillStyle.colors = []; for (var i = 0; i < gradient.childNodes.length; ++i) { fillStyle.colors.push({offset:gradient.childNodes[i].getAttribute("offset"), color:new dojo.gfx.color.Color(gradient.childNodes[i].getAttribute("stop-color"))}); } return fillStyle; }, attachStroke:function (rawNode) { if (!rawNode) { return; } var stroke = rawNode.getAttribute("stroke"); if (stroke == null || stroke == "none") { return null; } var strokeStyle = dojo.lang.shallowCopy(dojo.gfx.defaultStroke, true); var color = new dojo.gfx.color.Color(stroke); if (color) { strokeStyle.color = color; strokeStyle.color.a = rawNode.getAttribute("stroke-opacity"); strokeStyle.width = rawNode.getAttribute("stroke-width"); strokeStyle.cap = rawNode.getAttribute("stroke-linecap"); strokeStyle.join = rawNode.getAttribute("stroke-linejoin"); if (strokeStyle.join == "miter") { strokeStyle.join = rawNode.getAttribute("stroke-miterlimit"); } } return strokeStyle; }, attachTransform:function (rawNode) { var matrix = null; if (rawNode) { matrix = rawNode.getAttribute("transform"); if (matrix.match(/^matrix\(.+\)$/)) { var t = matrix.slice(7, -1).split(","); matrix = dojo.gfx.matrix.normalize({xx:parseFloat(t[0]), xy:parseFloat(t[2]), yx:parseFloat(t[1]), yy:parseFloat(t[3]), dx:parseFloat(t[4]), dy:parseFloat(t[5])}); } } return matrix; }, attachShape:function (rawNode) { var shape = null; if (rawNode) { shape = dojo.lang.shallowCopy(this.shape, true); for (var i in shape) { shape[i] = rawNode.getAttribute(i); } } return shape; }, attach:function (rawNode) { if (rawNode) { this.rawNode = rawNode; this.fillStyle = this.attachFill(rawNode); this.strokeStyle = this.attachStroke(rawNode); this.matrix = this.attachTransform(rawNode); this.shape = this.attachShape(rawNode); } }}); dojo.declare("dojo.gfx.Group", dojo.gfx.Shape, {setRawNode:function (rawNode) { this.rawNode = rawNode; }}); dojo.gfx.Group.nodeType = "g"; dojo.declare("dojo.gfx.Rect", dojo.gfx.shape.Rect, {attachShape:function (rawNode) { var shape = null; if (rawNode) { shape = dojo.gfx.Rect.superclass.attachShape.apply(this, arguments); shape.r = Math.min(rawNode.getAttribute("rx"), rawNode.getAttribute("ry")); } return shape; }, setShape:function (newShape) { this.shape = dojo.gfx.makeParameters(this.shape, newShape); this.bbox = null; for (var i in this.shape) { if (i != "type" && i != "r") { this.rawNode.setAttribute(i, this.shape[i]); } } this.rawNode.setAttribute("rx", this.shape.r); this.rawNode.setAttribute("ry", this.shape.r); return this; }}); dojo.gfx.Rect.nodeType = "rect"; dojo.gfx.Ellipse = dojo.gfx.shape.Ellipse; dojo.gfx.Ellipse.nodeType = "ellipse"; dojo.gfx.Circle = dojo.gfx.shape.Circle; dojo.gfx.Circle.nodeType = "circle"; dojo.gfx.Line = dojo.gfx.shape.Line; dojo.gfx.Line.nodeType = "line"; dojo.declare("dojo.gfx.Polyline", dojo.gfx.shape.Polyline, {setShape:function (points) { if (points && points instanceof Array) { this.shape = dojo.gfx.makeParameters(this.shape, {points:points}); if (closed && this.shape.points.length) { this.shape.points.push(this.shape.points[0]); } } else { this.shape = dojo.gfx.makeParameters(this.shape, points); } this.box = null; var attr = []; var p = this.shape.points; for (var i = 0; i < p.length; ++i) { attr.push(p[i].x.toFixed(8)); attr.push(p[i].y.toFixed(8)); } this.rawNode.setAttribute("points", attr.join(" ")); return this; }}); dojo.gfx.Polyline.nodeType = "polyline"; dojo.declare("dojo.gfx.Image", dojo.gfx.shape.Image, {setShape:function (newShape) { this.shape = dojo.gfx.makeParameters(this.shape, newShape); this.bbox = null; var rawNode = this.rawNode; for (var i in this.shape) { if (i != "type" && i != "src") { rawNode.setAttribute(i, this.shape[i]); } } rawNode.setAttributeNS(dojo.svg.xmlns.xlink, "href", this.shape.src); return this; }, setStroke:function () { return this; }, setFill:function () { return this; }, attachStroke:function (rawNode) { return null; }, attachFill:function (rawNode) { return null; }}); dojo.gfx.Image.nodeType = "image"; dojo.declare("dojo.gfx.Path", dojo.gfx.path.Path, {_updateWithSegment:function (segment) { dojo.gfx.Path.superclass._updateWithSegment.apply(this, arguments); if (typeof (this.shape.path) == "string") { this.rawNode.setAttribute("d", this.shape.path); } }, setShape:function (newShape) { dojo.gfx.Path.superclass.setShape.apply(this, arguments); this.rawNode.setAttribute("d", this.shape.path); return this; }}); dojo.gfx.Path.nodeType = "path"; dojo.gfx._creators = {createPath:function (path) { return this.createObject(dojo.gfx.Path, path); }, createRect:function (rect) { return this.createObject(dojo.gfx.Rect, rect); }, createCircle:function (circle) { return this.createObject(dojo.gfx.Circle, circle); }, createEllipse:function (ellipse) { return this.createObject(dojo.gfx.Ellipse, ellipse); }, createLine:function (line) { return this.createObject(dojo.gfx.Line, line); }, createPolyline:function (points) { return this.createObject(dojo.gfx.Polyline, points); }, createImage:function (image) { return this.createObject(dojo.gfx.Image, image); }, createGroup:function () { return this.createObject(dojo.gfx.Group); }, createObject:function (shapeType, rawShape) { if (!this.rawNode) { return null; } var shape = new shapeType(); var node = document.createElementNS(dojo.svg.xmlns.svg, shapeType.nodeType); shape.setRawNode(node); this.rawNode.appendChild(node); shape.setShape(rawShape); this.add(shape); return shape; }, add:function (shape) { var oldParent = shape.getParent(); if (oldParent) { oldParent.remove(shape, true); } shape._setParent(this, null); this.rawNode.appendChild(shape.rawNode); return this; }, remove:function (shape, silently) { if (this.rawNode == shape.rawNode.parentNode) { this.rawNode.removeChild(shape.rawNode); } shape._setParent(null, null); return this; }}; dojo.gfx.attachNode = function (node) { if (!node) { return null; } var s = null; switch (node.tagName.toLowerCase()) { case dojo.gfx.Rect.nodeType: s = new dojo.gfx.Rect(); break; case dojo.gfx.Ellipse.nodeType: s = new dojo.gfx.Ellipse(); break; case dojo.gfx.Polyline.nodeType: s = new dojo.gfx.Polyline(); break; case dojo.gfx.Path.nodeType: s = new dojo.gfx.Path(); break; case dojo.gfx.Circle.nodeType: s = new dojo.gfx.Circle(); break; case dojo.gfx.Line.nodeType: s = new dojo.gfx.Line(); break; case dojo.gfx.Image.nodeType: s = new dojo.gfx.Image(); break; default: dojo.debug("FATAL ERROR! tagName = " + node.tagName); } s.attach(node); return s; }; dojo.lang.extend(dojo.gfx.Surface, {setDimensions:function (width, height) { if (!this.rawNode) { return this; } this.rawNode.setAttribute("width", width); this.rawNode.setAttribute("height", height); return this; }, getDimensions:function () { return this.rawNode ? {width:this.rawNode.getAttribute("width"), height:this.rawNode.getAttribute("height")} : null; }}); dojo.gfx.createSurface = function (parentNode, width, height) { var s = new dojo.gfx.Surface(); s.rawNode = document.createElementNS(dojo.svg.xmlns.svg, "svg"); s.rawNode.setAttribute("width", width); s.rawNode.setAttribute("height", height); var defs = new dojo.gfx.svg.Defines(); var node = document.createElementNS(dojo.svg.xmlns.svg, dojo.gfx.svg.Defines.nodeType); defs.setRawNode(node); s.rawNode.appendChild(node); dojo.byId(parentNode).appendChild(s.rawNode); return s; }; dojo.gfx.attachSurface = function (node) { var s = new dojo.gfx.Surface(); s.rawNode = node; return s; }; dojo.lang.extend(dojo.gfx.Group, dojo.gfx._creators); dojo.lang.extend(dojo.gfx.Surface, dojo.gfx._creators); delete dojo.gfx._creators; dojo.gfx.svg.Defines = function () { this.rawNode = null; }; dojo.lang.extend(dojo.gfx.svg.Defines, {setRawNode:function (rawNode) { this.rawNode = rawNode; }}); dojo.gfx.svg.Defines.nodeType = "defs";

__CPAN_FILE__ src/gfx/color.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.gfx.color"); dojo.require("dojo.lang.common"); dojo.require("dojo.lang.array"); dojo.gfx.color.Color = function (r, g, b, a) { if (dojo.lang.isArray(r)) { this.r = r[0]; this.g = r[1]; this.b = r[2]; this.a = r[3] || 1; } else { if (dojo.lang.isString(r)) { var rgb = dojo.gfx.color.extractRGB(r); this.r = rgb[0]; this.g = rgb[1]; this.b = rgb[2]; this.a = g || 1; } else { if (r instanceof dojo.gfx.color.Color) { this.r = r.r; this.b = r.b; this.g = r.g; this.a = r.a; } else { this.r = r; this.g = g; this.b = b; this.a = a; } } } }; dojo.gfx.color.Color.fromArray = function (arr) { return new dojo.gfx.color.Color(arr[0], arr[1], arr[2], arr[3]); }; dojo.extend(dojo.gfx.color.Color, {toRgb:function (includeAlpha) { if (includeAlpha) { return this.toRgba(); } else { return [this.r, this.g, this.b]; } }, toRgba:function () { return [this.r, this.g, this.b, this.a]; }, toHex:function () { return dojo.gfx.color.rgb2hex(this.toRgb()); }, toCss:function () { return "rgb(" + this.toRgb().join() + ")"; }, toString:function () { return this.toHex(); }, blend:function (color, weight) { var rgb = null; if (dojo.lang.isArray(color)) { rgb = color; } else { if (color instanceof dojo.gfx.color.Color) { rgb = color.toRgb(); } else { rgb = new dojo.gfx.color.Color(color).toRgb(); } } return dojo.gfx.color.blend(this.toRgb(), rgb, weight); }}); dojo.gfx.color.named = {white:[255, 255, 255], black:[0, 0, 0], red:[255, 0, 0], green:[0, 255, 0], lime:[0, 255, 0], blue:[0, 0, 255], navy:[0, 0, 128], gray:[128, 128, 128], silver:[192, 192, 192]}; dojo.gfx.color.blend = function (a, b, weight) { if (typeof a == "string") { return dojo.gfx.color.blendHex(a, b, weight); } if (!weight) { weight = 0; } weight = Math.min(Math.max(-1, weight), 1); weight = ((weight + 1) / 2); var c = []; for (var x = 0; x < 3; x++) { c[x] = parseInt(b[x] + ((a[x] - b[x]) * weight)); } return c; }; dojo.gfx.color.blendHex = function (a, b, weight) { return dojo.gfx.color.rgb2hex(dojo.gfx.color.blend(dojo.gfx.color.hex2rgb(a), dojo.gfx.color.hex2rgb(b), weight)); }; dojo.gfx.color.extractRGB = function (color) { var hex = "0123456789abcdef"; color = color.toLowerCase(); if (color.indexOf("rgb") == 0) { var matches = color.match(/rgba*\((\d+), *(\d+), *(\d+)/i); var ret = matches.splice(1, 3); return ret; } else { var colors = dojo.gfx.color.hex2rgb(color); if (colors) { return colors; } else { return dojo.gfx.color.named[color] || [255, 255, 255]; } } }; dojo.gfx.color.hex2rgb = function (hex) { var hexNum = "0123456789ABCDEF"; var rgb = new Array(3); if (hex.indexOf("#") == 0) { hex = hex.substring(1); } hex = hex.toUpperCase(); if (hex.replace(new RegExp("[" + hexNum + "]", "g"), "") != "") { return null; } if (hex.length == 3) { rgb[0] = hex.charAt(0) + hex.charAt(0); rgb[1] = hex.charAt(1) + hex.charAt(1); rgb[2] = hex.charAt(2) + hex.charAt(2); } else { rgb[0] = hex.substring(0, 2); rgb[1] = hex.substring(2, 4); rgb[2] = hex.substring(4); } for (var i = 0; i < rgb.length; i++) { rgb[i] = hexNum.indexOf(rgb[i].charAt(0)) * 16 + hexNum.indexOf(rgb[i].charAt(1)); } return rgb; }; dojo.gfx.color.rgb2hex = function (r, g, b) { if (dojo.lang.isArray(r)) { g = r[1] || 0; b = r[2] || 0; r = r[0] || 0; } var ret = dojo.lang.map([r, g, b], function (x) { x = new Number(x); var s = x.toString(16); while (s.length < 2) { s = "0" + s; } return s; }); ret.unshift("#"); return ret.join(""); };

__CPAN_FILE__ src/gfx/color.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.gfx.color"], ["require", "dojo.lang.common"], ["require", "dojo.lang.array"]], definePackage:function (dojo) { dojo.provide("dojo.gfx.color"); dojo.require("dojo.lang.common"); dojo.require("dojo.lang.array"); dojo.gfx.color.Color = function (r, g, b, a) { if (dojo.lang.isArray(r)) { this.r = r[0]; this.g = r[1]; this.b = r[2]; this.a = r[3] || 1; } else { if (dojo.lang.isString(r)) { var rgb = dojo.gfx.color.extractRGB(r); this.r = rgb[0]; this.g = rgb[1]; this.b = rgb[2]; this.a = g || 1; } else { if (r instanceof dojo.gfx.color.Color) { this.r = r.r; this.b = r.b; this.g = r.g; this.a = r.a; } else { this.r = r; this.g = g; this.b = b; this.a = a; } } } }; dojo.gfx.color.Color.fromArray = function (arr) { return new dojo.gfx.color.Color(arr[0], arr[1], arr[2], arr[3]); }; dojo.extend(dojo.gfx.color.Color, {toRgb:function (includeAlpha) { if (includeAlpha) { return this.toRgba(); } else { return [this.r, this.g, this.b]; } }, toRgba:function () { return [this.r, this.g, this.b, this.a]; }, toHex:function () { return dojo.gfx.color.rgb2hex(this.toRgb()); }, toCss:function () { return "rgb(" + this.toRgb().join() + ")"; }, toString:function () { return this.toHex(); }, blend:function (color, weight) { var rgb = null; if (dojo.lang.isArray(color)) { rgb = color; } else { if (color instanceof dojo.gfx.color.Color) { rgb = color.toRgb(); } else { rgb = new dojo.gfx.color.Color(color).toRgb(); } } return dojo.gfx.color.blend(this.toRgb(), rgb, weight); }}); dojo.gfx.color.named = {white:[255, 255, 255], black:[0, 0, 0], red:[255, 0, 0], green:[0, 255, 0], lime:[0, 255, 0], blue:[0, 0, 255], navy:[0, 0, 128], gray:[128, 128, 128], silver:[192, 192, 192]}; dojo.gfx.color.blend = function (a, b, weight) { if (typeof a == "string") { return dojo.gfx.color.blendHex(a, b, weight); } if (!weight) { weight = 0; } weight = Math.min(Math.max(-1, weight), 1); weight = ((weight + 1) / 2); var c = []; for (var x = 0; x < 3; x++) { c[x] = parseInt(b[x] + ((a[x] - b[x]) * weight)); } return c; }; dojo.gfx.color.blendHex = function (a, b, weight) { return dojo.gfx.color.rgb2hex(dojo.gfx.color.blend(dojo.gfx.color.hex2rgb(a), dojo.gfx.color.hex2rgb(b), weight)); }; dojo.gfx.color.extractRGB = function (color) { var hex = "0123456789abcdef"; color = color.toLowerCase(); if (color.indexOf("rgb") == 0) { var matches = color.match(/rgba*\((\d+), *(\d+), *(\d+)/i); var ret = matches.splice(1, 3); return ret; } else { var colors = dojo.gfx.color.hex2rgb(color); if (colors) { return colors; } else { return dojo.gfx.color.named[color] || [255, 255, 255]; } } }; dojo.gfx.color.hex2rgb = function (hex) { var hexNum = "0123456789ABCDEF"; var rgb = new Array(3); if (hex.indexOf("#") == 0) { hex = hex.substring(1); } hex = hex.toUpperCase(); if (hex.replace(new RegExp("[" + hexNum + "]", "g"), "") != "") { return null; } if (hex.length == 3) { rgb[0] = hex.charAt(0) + hex.charAt(0); rgb[1] = hex.charAt(1) + hex.charAt(1); rgb[2] = hex.charAt(2) + hex.charAt(2); } else { rgb[0] = hex.substring(0, 2); rgb[1] = hex.substring(2, 4); rgb[2] = hex.substring(4); } for (var i = 0; i < rgb.length; i++) { rgb[i] = hexNum.indexOf(rgb[i].charAt(0)) * 16 + hexNum.indexOf(rgb[i].charAt(1)); } return rgb; }; dojo.gfx.color.rgb2hex = function (r, g, b) { if (dojo.lang.isArray(r)) { g = r[1] || 0; b = r[2] || 0; r = r[0] || 0; } var ret = dojo.lang.map([r, g, b], function (x) { x = new Number(x); var s = x.toString(16); while (s.length < 2) { s = "0" + s; } return s; }); ret.unshift("#"); return ret.join(""); }; }});

__CPAN_FILE__ src/gfx/__package__.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.kwCompoundRequire({common:["dojo.gfx.color", "dojo.gfx.matrix", "dojo.gfx.common"]}); dojo.requireIf(dojo.render.svg.capable, "dojo.gfx.svg"); dojo.requireIf(dojo.render.vml.capable, "dojo.gfx.vml"); dojo.provide("dojo.gfx.*");

__CPAN_FILE__ src/gfx/svg.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.gfx.svg"], ["require", "dojo.lang.declare"], ["require", "dojo.svg"], ["require", "dojo.gfx.color"], ["require", "dojo.gfx.common"], ["require", "dojo.gfx.shape"], ["require", "dojo.gfx.path"], ["require", "dojo.experimental"]], definePackage:function (dojo) { dojo.provide("dojo.gfx.svg"); dojo.require("dojo.lang.declare"); dojo.require("dojo.svg"); dojo.require("dojo.gfx.color"); dojo.require("dojo.gfx.common"); dojo.require("dojo.gfx.shape"); dojo.require("dojo.gfx.path"); dojo.require("dojo.experimental"); dojo.experimental("dojo.gfx.svg"); dojo.gfx.svg.getRef = function (fill) { if (!fill || fill == "none") { return null; } if (fill.match(/^url\(#.+\)$/)) { return dojo.byId(fill.slice(5, -1)); } if (dojo.render.html.opera && fill.match(/^#dj_unique_.+$/)) { return dojo.byId(fill.slice(1)); } return null; }; dojo.lang.extend(dojo.gfx.Shape, {setFill:function (fill) { if (!fill) { this.fillStyle = null; this.rawNode.setAttribute("fill", "none"); this.rawNode.setAttribute("fill-opacity", 0); return this; } if (typeof (fill) == "object" && "type" in fill) { switch (fill.type) { case "linear": var f = dojo.gfx.makeParameters(dojo.gfx.defaultLinearGradient, fill); var gradient = this._setFillObject(f, "linearGradient"); dojo.lang.forEach(["x1", "y1", "x2", "y2"], function (x) { gradient.setAttribute(x, f[x].toFixed(8)); }); break; case "radial": var f = dojo.gfx.makeParameters(dojo.gfx.defaultRadialGradient, fill); var gradient = this._setFillObject(f, "radialGradient"); dojo.lang.forEach(["cx", "cy", "r"], function (x) { gradient.setAttribute(x, f[x].toFixed(8)); }); break; case "pattern": var f = dojo.gfx.makeParameters(dojo.gfx.defaultPattern, fill); var pattern = this._setFillObject(f, "pattern"); dojo.lang.forEach(["x", "y", "width", "height"], function (x) { pattern.setAttribute(x, f[x].toFixed(8)); }); break; } return this; } var f = dojo.gfx.normalizeColor(fill); this.fillStyle = f; this.rawNode.setAttribute("fill", f.toCss()); this.rawNode.setAttribute("fill-opacity", f.a); return this; }, setStroke:function (stroke) { if (!stroke) { this.strokeStyle = null; this.rawNode.setAttribute("stroke", "none"); this.rawNode.setAttribute("stroke-opacity", 0); return this; } this.strokeStyle = dojo.gfx.makeParameters(dojo.gfx.defaultStroke, stroke); this.strokeStyle.color = dojo.gfx.normalizeColor(this.strokeStyle.color); var s = this.strokeStyle; var rn = this.rawNode; if (s) { rn.setAttribute("stroke", s.color.toCss()); rn.setAttribute("stroke-opacity", s.color.a); rn.setAttribute("stroke-width", s.width); rn.setAttribute("stroke-linecap", s.cap); if (typeof (s.join) == "number") { rn.setAttribute("stroke-linejoin", "miter"); rn.setAttribute("stroke-miterlimit", s.join); } else { rn.setAttribute("stroke-linejoin", s.join); } } return this; }, _setFillObject:function (f, nodeType) { var def_elems = this.rawNode.parentNode.getElementsByTagName("defs"); if (def_elems.length == 0) { return this; } this.fillStyle = f; var defs = def_elems[0]; var fill = this.rawNode.getAttribute("fill"); var ref = dojo.gfx.svg.getRef(fill); if (ref) { fill = ref; if (fill.tagName.toLowerCase() != nodeType.toLowerCase()) { var id = fill.id; fill.parentNode.removeChild(fill); fill = document.createElementNS(dojo.svg.xmlns.svg, nodeType); fill.setAttribute("id", id); defs.appendChild(fill); } else { while (fill.childNodes.length) { fill.removeChild(fill.lastChild); } } } else { fill = document.createElementNS(dojo.svg.xmlns.svg, nodeType); fill.setAttribute("id", dojo.dom.getUniqueId()); defs.appendChild(fill); } if (nodeType == "pattern") { fill.setAttribute("patternUnits", "userSpaceOnUse"); var img = document.createElementNS(dojo.svg.xmlns.svg, "image"); img.setAttribute("x", 0); img.setAttribute("y", 0); img.setAttribute("width", f.width.toFixed(8)); img.setAttribute("height", f.height.toFixed(8)); img.setAttributeNS(dojo.svg.xmlns.xlink, "href", f.src); fill.appendChild(img); } else { fill.setAttribute("gradientUnits", "userSpaceOnUse"); for (var i = 0; i < f.colors.length; ++i) { f.colors[i].color = dojo.gfx.normalizeColor(f.colors[i].color); var t = document.createElementNS(dojo.svg.xmlns.svg, "stop"); t.setAttribute("offset", f.colors[i].offset.toFixed(8)); t.setAttribute("stop-color", f.colors[i].color.toCss()); fill.appendChild(t); } } this.rawNode.setAttribute("fill", "url(#" + fill.getAttribute("id") + ")"); this.rawNode.removeAttribute("fill-opacity"); return fill; }, _applyTransform:function () { var matrix = this._getRealMatrix(); if (matrix) { var tm = this.matrix; this.rawNode.setAttribute("transform", "matrix(" + tm.xx.toFixed(8) + "," + tm.yx.toFixed(8) + "," + tm.xy.toFixed(8) + "," + tm.yy.toFixed(8) + "," + tm.dx.toFixed(8) + "," + tm.dy.toFixed(8) + ")"); } else { this.rawNode.removeAttribute("transform"); } return this; }, setRawNode:function (rawNode) { with (rawNode) { setAttribute("fill", "none"); setAttribute("fill-opacity", 0); setAttribute("stroke", "none"); setAttribute("stroke-opacity", 0); setAttribute("stroke-width", 1); setAttribute("stroke-linecap", "butt"); setAttribute("stroke-linejoin", "miter"); setAttribute("stroke-miterlimit", 4); } this.rawNode = rawNode; }, moveToFront:function () { this.rawNode.parentNode.appendChild(this.rawNode); return this; }, moveToBack:function () { this.rawNode.parentNode.insertBefore(this.rawNode, this.rawNode.parentNode.firstChild); return this; }, setShape:function (newShape) { this.shape = dojo.gfx.makeParameters(this.shape, newShape); for (var i in this.shape) { if (i != "type") { this.rawNode.setAttribute(i, this.shape[i]); } } return this; }, attachFill:function (rawNode) { var fillStyle = null; if (rawNode) { var fill = rawNode.getAttribute("fill"); if (fill == "none") { return; } var ref = dojo.gfx.svg.getRef(fill); if (ref) { var gradient = ref; switch (gradient.tagName.toLowerCase()) { case "lineargradient": fillStyle = this._getGradient(dojo.gfx.defaultLinearGradient, gradient); dojo.lang.forEach(["x1", "y1", "x2", "y2"], function (x) { fillStyle[x] = gradient.getAttribute(x); }); break; case "radialgradient": fillStyle = this._getGradient(dojo.gfx.defaultRadialGradient, gradient); dojo.lang.forEach(["cx", "cy", "r"], function (x) { fillStyle[x] = gradient.getAttribute(x); }); fillStyle.cx = gradient.getAttribute("cx"); fillStyle.cy = gradient.getAttribute("cy"); fillStyle.r = gradient.getAttribute("r"); break; case "pattern": fillStyle = dojo.lang.shallowCopy(dojo.gfx.defaultPattern, true); dojo.lang.forEach(["x", "y", "width", "height"], function (x) { fillStyle[x] = gradient.getAttribute(x); }); fillStyle.src = gradient.firstChild.getAttributeNS(dojo.svg.xmlns.xlink, "href"); break; } } else { fillStyle = new dojo.gfx.color.Color(fill); var opacity = rawNode.getAttribute("fill-opacity"); if (opacity != null) { fillStyle.a = opacity; } } } return fillStyle; }, _getGradient:function (defaultGradient, gradient) { var fillStyle = dojo.lang.shallowCopy(defaultGradient, true); fillStyle.colors = []; for (var i = 0; i < gradient.childNodes.length; ++i) { fillStyle.colors.push({offset:gradient.childNodes[i].getAttribute("offset"), color:new dojo.gfx.color.Color(gradient.childNodes[i].getAttribute("stop-color"))}); } return fillStyle; }, attachStroke:function (rawNode) { if (!rawNode) { return; } var stroke = rawNode.getAttribute("stroke"); if (stroke == null || stroke == "none") { return null; } var strokeStyle = dojo.lang.shallowCopy(dojo.gfx.defaultStroke, true); var color = new dojo.gfx.color.Color(stroke); if (color) { strokeStyle.color = color; strokeStyle.color.a = rawNode.getAttribute("stroke-opacity"); strokeStyle.width = rawNode.getAttribute("stroke-width"); strokeStyle.cap = rawNode.getAttribute("stroke-linecap"); strokeStyle.join = rawNode.getAttribute("stroke-linejoin"); if (strokeStyle.join == "miter") { strokeStyle.join = rawNode.getAttribute("stroke-miterlimit"); } } return strokeStyle; }, attachTransform:function (rawNode) { var matrix = null; if (rawNode) { matrix = rawNode.getAttribute("transform"); if (matrix.match(/^matrix\(.+\)$/)) { var t = matrix.slice(7, -1).split(","); matrix = dojo.gfx.matrix.normalize({xx:parseFloat(t[0]), xy:parseFloat(t[2]), yx:parseFloat(t[1]), yy:parseFloat(t[3]), dx:parseFloat(t[4]), dy:parseFloat(t[5])}); } } return matrix; }, attachShape:function (rawNode) { var shape = null; if (rawNode) { shape = dojo.lang.shallowCopy(this.shape, true); for (var i in shape) { shape[i] = rawNode.getAttribute(i); } } return shape; }, attach:function (rawNode) { if (rawNode) { this.rawNode = rawNode; this.fillStyle = this.attachFill(rawNode); this.strokeStyle = this.attachStroke(rawNode); this.matrix = this.attachTransform(rawNode); this.shape = this.attachShape(rawNode); } }}); dojo.declare("dojo.gfx.Group", dojo.gfx.Shape, {setRawNode:function (rawNode) { this.rawNode = rawNode; }}); dojo.gfx.Group.nodeType = "g"; dojo.declare("dojo.gfx.Rect", dojo.gfx.shape.Rect, {attachShape:function (rawNode) { var shape = null; if (rawNode) { shape = dojo.gfx.Rect.superclass.attachShape.apply(this, arguments); shape.r = Math.min(rawNode.getAttribute("rx"), rawNode.getAttribute("ry")); } return shape; }, setShape:function (newShape) { this.shape = dojo.gfx.makeParameters(this.shape, newShape); this.bbox = null; for (var i in this.shape) { if (i != "type" && i != "r") { this.rawNode.setAttribute(i, this.shape[i]); } } this.rawNode.setAttribute("rx", this.shape.r); this.rawNode.setAttribute("ry", this.shape.r); return this; }}); dojo.gfx.Rect.nodeType = "rect"; dojo.gfx.Ellipse = dojo.gfx.shape.Ellipse; dojo.gfx.Ellipse.nodeType = "ellipse"; dojo.gfx.Circle = dojo.gfx.shape.Circle; dojo.gfx.Circle.nodeType = "circle"; dojo.gfx.Line = dojo.gfx.shape.Line; dojo.gfx.Line.nodeType = "line"; dojo.declare("dojo.gfx.Polyline", dojo.gfx.shape.Polyline, {setShape:function (points) { if (points && points instanceof Array) { this.shape = dojo.gfx.makeParameters(this.shape, {points:points}); if (closed && this.shape.points.length) { this.shape.points.push(this.shape.points[0]); } } else { this.shape = dojo.gfx.makeParameters(this.shape, points); } this.box = null; var attr = []; var p = this.shape.points; for (var i = 0; i < p.length; ++i) { attr.push(p[i].x.toFixed(8)); attr.push(p[i].y.toFixed(8)); } this.rawNode.setAttribute("points", attr.join(" ")); return this; }}); dojo.gfx.Polyline.nodeType = "polyline"; dojo.declare("dojo.gfx.Image", dojo.gfx.shape.Image, {setShape:function (newShape) { this.shape = dojo.gfx.makeParameters(this.shape, newShape); this.bbox = null; var rawNode = this.rawNode; for (var i in this.shape) { if (i != "type" && i != "src") { rawNode.setAttribute(i, this.shape[i]); } } rawNode.setAttributeNS(dojo.svg.xmlns.xlink, "href", this.shape.src); return this; }, setStroke:function () { return this; }, setFill:function () { return this; }, attachStroke:function (rawNode) { return null; }, attachFill:function (rawNode) { return null; }}); dojo.gfx.Image.nodeType = "image"; dojo.declare("dojo.gfx.Path", dojo.gfx.path.Path, {_updateWithSegment:function (segment) { dojo.gfx.Path.superclass._updateWithSegment.apply(this, arguments); if (typeof (this.shape.path) == "string") { this.rawNode.setAttribute("d", this.shape.path); } }, setShape:function (newShape) { dojo.gfx.Path.superclass.setShape.apply(this, arguments); this.rawNode.setAttribute("d", this.shape.path); return this; }}); dojo.gfx.Path.nodeType = "path"; dojo.gfx._creators = {createPath:function (path) { return this.createObject(dojo.gfx.Path, path); }, createRect:function (rect) { return this.createObject(dojo.gfx.Rect, rect); }, createCircle:function (circle) { return this.createObject(dojo.gfx.Circle, circle); }, createEllipse:function (ellipse) { return this.createObject(dojo.gfx.Ellipse, ellipse); }, createLine:function (line) { return this.createObject(dojo.gfx.Line, line); }, createPolyline:function (points) { return this.createObject(dojo.gfx.Polyline, points); }, createImage:function (image) { return this.createObject(dojo.gfx.Image, image); }, createGroup:function () { return this.createObject(dojo.gfx.Group); }, createObject:function (shapeType, rawShape) { if (!this.rawNode) { return null; } var shape = new shapeType(); var node = document.createElementNS(dojo.svg.xmlns.svg, shapeType.nodeType); shape.setRawNode(node); this.rawNode.appendChild(node); shape.setShape(rawShape); this.add(shape); return shape; }, add:function (shape) { var oldParent = shape.getParent(); if (oldParent) { oldParent.remove(shape, true); } shape._setParent(this, null); this.rawNode.appendChild(shape.rawNode); return this; }, remove:function (shape, silently) { if (this.rawNode == shape.rawNode.parentNode) { this.rawNode.removeChild(shape.rawNode); } shape._setParent(null, null); return this; }}; dojo.gfx.attachNode = function (node) { if (!node) { return null; } var s = null; switch (node.tagName.toLowerCase()) { case dojo.gfx.Rect.nodeType: s = new dojo.gfx.Rect(); break; case dojo.gfx.Ellipse.nodeType: s = new dojo.gfx.Ellipse(); break; case dojo.gfx.Polyline.nodeType: s = new dojo.gfx.Polyline(); break; case dojo.gfx.Path.nodeType: s = new dojo.gfx.Path(); break; case dojo.gfx.Circle.nodeType: s = new dojo.gfx.Circle(); break; case dojo.gfx.Line.nodeType: s = new dojo.gfx.Line(); break; case dojo.gfx.Image.nodeType: s = new dojo.gfx.Image(); break; default: dojo.debug("FATAL ERROR! tagName = " + node.tagName); } s.attach(node); return s; }; dojo.lang.extend(dojo.gfx.Surface, {setDimensions:function (width, height) { if (!this.rawNode) { return this; } this.rawNode.setAttribute("width", width); this.rawNode.setAttribute("height", height); return this; }, getDimensions:function () { return this.rawNode ? {width:this.rawNode.getAttribute("width"), height:this.rawNode.getAttribute("height")} : null; }}); dojo.gfx.createSurface = function (parentNode, width, height) { var s = new dojo.gfx.Surface(); s.rawNode = document.createElementNS(dojo.svg.xmlns.svg, "svg"); s.rawNode.setAttribute("width", width); s.rawNode.setAttribute("height", height); var defs = new dojo.gfx.svg.Defines(); var node = document.createElementNS(dojo.svg.xmlns.svg, dojo.gfx.svg.Defines.nodeType); defs.setRawNode(node); s.rawNode.appendChild(node); dojo.byId(parentNode).appendChild(s.rawNode); return s; }; dojo.gfx.attachSurface = function (node) { var s = new dojo.gfx.Surface(); s.rawNode = node; return s; }; dojo.lang.extend(dojo.gfx.Group, dojo.gfx._creators); dojo.lang.extend(dojo.gfx.Surface, dojo.gfx._creators); delete dojo.gfx._creators; dojo.gfx.svg.Defines = function () { this.rawNode = null; }; dojo.lang.extend(dojo.gfx.svg.Defines, {setRawNode:function (rawNode) { this.rawNode = rawNode; }}); dojo.gfx.svg.Defines.nodeType = "defs"; }});

__CPAN_FILE__ src/gfx/Colorspace.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.gfx.Colorspace"); dojo.require("dojo.lang.common"); dojo.require("dojo.math.matrix"); dojo.gfx.Colorspace = function () { this.whitePoint = "D65"; this.stdObserver = "10"; this.chromaticAdaptationAlg = "bradford"; this.RGBWorkingSpace = "s_rgb"; this.useApproxCIELabMapping = 1; this.chainMaps = {"RGB_to_xyY":["XYZ"], "xyY_to_RGB":["XYZ"], "RGB_to_Lab":["XYZ"], "Lab_to_RGB":["XYZ"], "RGB_to_LCHab":["XYZ", "Lab"], "LCHab_to_RGB":["Lab"], "xyY_to_Lab":["XYZ"], "Lab_to_xyY":["XYZ"], "XYZ_to_LCHab":["Lab"], "LCHab_to_XYZ":["Lab"], "xyY_to_LCHab":["XYZ", "Lab"], "LCHab_to_xyY":["Lab", "XYZ"], "RGB_to_Luv":["XYZ"], "Luv_to_RGB":["XYZ"], "xyY_to_Luv":["XYZ"], "Luv_to_xyY":["XYZ"], "Lab_to_Luv":["XYZ"], "Luv_to_Lab":["XYZ"], "LCHab_to_Luv":["Lab", "XYZ"], "Luv_to_LCHab":["XYZ", "Lab"], "RGB_to_LCHuv":["XYZ", "Luv"], "LCHuv_to_RGB":["Luv", "XYZ"], "XYZ_to_LCHuv":["Luv"], "LCHuv_to_XYZ":["Luv"], "xyY_to_LCHuv":["XYZ", "Luv"], "LCHuv_to_xyY":["Luv", "XYZ"], "Lab_to_LCHuv":["XYZ", "Luv"], "LCHuv_to_Lab":["Luv", "XYZ"], "LCHab_to_LCHuv":["Lab", "XYZ", "Luv"], "LCHuv_to_LCHab":["Luv", "XYZ", "Lab"], "XYZ_to_CMY":["RGB"], "CMY_to_XYZ":["RGB"], "xyY_to_CMY":["RGB"], "CMY_to_xyY":["RGB"], "Lab_to_CMY":["RGB"], "CMY_to_Lab":["RGB"], "LCHab_to_CMY":["RGB"], "CMY_to_LCHab":["RGB"], "Luv_to_CMY":["RGB"], "CMY_to_Luv":["RGB"], "LCHuv_to_CMY":["RGB"], "CMY_to_LCHuv":["RGB"], "XYZ_to_HSL":["RGB"], "HSL_to_XYZ":["RGB"], "xyY_to_HSL":["RGB"], "HSL_to_xyY":["RGB"], "Lab_to_HSL":["RGB"], "HSL_to_Lab":["RGB"], "LCHab_to_HSL":["RGB"], "HSL_to_LCHab":["RGB"], "Luv_to_HSL":["RGB"], "HSL_to_Luv":["RGB"], "LCHuv_to_HSL":["RGB"], "HSL_to_LCHuv":["RGB"], "CMY_to_HSL":["RGB"], "HSL_to_CMY":["RGB"], "CMYK_to_HSL":["RGB"], "HSL_to_CMYK":["RGB"], "XYZ_to_HSV":["RGB"], "HSV_to_XYZ":["RGB"], "xyY_to_HSV":["RGB"], "HSV_to_xyY":["RGB"], "Lab_to_HSV":["RGB"], "HSV_to_Lab":["RGB"], "LCHab_to_HSV":["RGB"], "HSV_to_LCHab":["RGB"], "Luv_to_HSV":["RGB"], "HSV_to_Luv":["RGB"], "LCHuv_to_HSV":["RGB"], "HSV_to_LCHuv":["RGB"], "CMY_to_HSV":["RGB"], "HSV_to_CMY":["RGB"], "CMYK_to_HSV":["RGB"], "HSV_to_CMYK":["RGB"], "HSL_to_HSV":["RGB"], "HSV_to_HSL":["RGB"], "XYZ_to_CMYK":["RGB"], "CMYK_to_XYZ":["RGB"], "xyY_to_CMYK":["RGB"], "CMYK_to_xyY":["RGB"], "Lab_to_CMYK":["RGB"], "CMYK_to_Lab":["RGB"], "LCHab_to_CMYK":["RGB"], "CMYK_to_LCHab":["RGB"], "Luv_to_CMYK":["RGB"], "CMYK_to_Luv":["RGB"], "LCHuv_to_CMYK":["RGB"], "CMYK_to_LCHuv":["RGB"]}; return this; }; dojo.gfx.Colorspace.prototype.convert = function (col, model_from, model_to) { var k = model_from + "_to_" + model_to; if (this[k]) { return this[k](col); } else { if (this.chainMaps[k]) { var cur = model_from; var models = this.chainMaps[k].concat(); models.push(model_to); for (var i = 0; i < models.length; i++) { col = this.convert(col, cur, models[i]); cur = models[i]; } return col; } else { dojo.debug("Can't convert from " + model_from + " to " + model_to); } } }; dojo.gfx.Colorspace.prototype.munge = function (keys, args) { if (dojo.lang.isArray(args[0])) { args = args[0]; } var out = new Array(); for (var i = 0; i < keys.length; i++) { out[keys.charAt(i)] = args[i]; } return out; }; dojo.gfx.Colorspace.prototype.getWhitePoint = function () { var x = 0; var y = 0; var t = 0; switch (this.stdObserver) { case "2": switch (this.whitePoint) { case "E": x = 1 / 3; y = 1 / 3; t = 5400; break; case "D50": x = 0.34567; y = 0.3585; t = 5000; break; case "D55": x = 0.33242; y = 0.34743; t = 5500; break; case "D65": x = 0.31271; y = 0.32902; t = 6500; break; case "D75": x = 0.29902; y = 0.31485; t = 7500; break; case "A": x = 0.44757; y = 0.40745; t = 2856; break; case "B": x = 0.34842; y = 0.35161; t = 4874; break; case "C": x = 0.31006; y = 0.31616; t = 6774; break; case "9300": x = 0.2848; y = 0.2932; t = 9300; break; case "F2": x = 0.37207; y = 0.37512; t = 4200; break; case "F7": x = 0.31285; y = 0.32918; t = 6500; break; case "F11": x = 0.38054; y = 0.37691; t = 4000; break; default: dojo.debug("White point " + this.whitePoint + " isn't defined for Std. Observer " + this.strObserver); } break; case "10": switch (this.whitePoint) { case "E": x = 1 / 3; y = 1 / 3; t = 5400; break; case "D50": x = 0.34773; y = 0.35952; t = 5000; break; case "D55": x = 0.33411; y = 0.34877; t = 5500; break; case "D65": x = 0.31382; y = 0.331; t = 6500; break; case "D75": x = 0.29968; y = 0.3174; t = 7500; break; case "A": x = 0.45117; y = 0.40594; t = 2856; break; case "B": x = 0.3498; y = 0.3527; t = 4874; break; case "C": x = 0.31039; y = 0.31905; t = 6774; break; case "F2": x = 0.37928; y = 0.36723; t = 4200; break; case "F7": x = 0.31565; y = 0.32951; t = 6500; break; case "F11": x = 0.38543; y = 0.3711; t = 4000; break; default: dojo.debug("White point " + this.whitePoint + " isn't defined for Std. Observer " + this.strObserver); } break; default: dojo.debug("Std. Observer " + this.strObserver + " isn't defined"); } var z = 1 - x - y; var wp = {"x":x, "y":y, "z":z, "t":t}; wp.Y = 1; var XYZ = this.xyY_to_XYZ([wp.x, wp.y, wp.Y]); wp.X = XYZ[0]; wp.Y = XYZ[1]; wp.Z = XYZ[2]; return wp; }; dojo.gfx.Colorspace.prototype.getPrimaries = function () { var m = []; switch (this.RGBWorkingSpace) { case "adobe_rgb_1998": m = [2.2, "D65", 0.64, 0.33, 0.297361, 0.21, 0.71, 0.627355, 0.15, 0.06, 0.075285]; break; case "apple_rgb": m = [1.8, "D65", 0.625, 0.34, 0.244634, 0.28, 0.595, 0.672034, 0.155, 0.07, 0.083332]; break; case "best_rgb": m = [2.2, "D50", 0.7347, 0.2653, 0.228457, 0.215, 0.775, 0.737352, 0.13, 0.035, 0.034191]; break; case "beta_rgb": m = [2.2, "D50", 0.6888, 0.3112, 0.303273, 0.1986, 0.7551, 0.663786, 0.1265, 0.0352, 0.032941]; break; case "bruce_rgb": m = [2.2, "D65", 0.64, 0.33, 0.240995, 0.28, 0.65, 0.683554, 0.15, 0.06, 0.075452]; break; case "cie_rgb": m = [2.2, "E", 0.735, 0.265, 0.176204, 0.274, 0.717, 0.812985, 0.167, 0.009, 0.010811]; break; case "color_match_rgb": m = [1.8, "D50", 0.63, 0.34, 0.274884, 0.295, 0.605, 0.658132, 0.15, 0.075, 0.066985]; break; case "don_rgb_4": m = [2.2, "D50", 0.696, 0.3, 0.27835, 0.215, 0.765, 0.68797, 0.13, 0.035, 0.03368]; break; case "eci_rgb": m = [1.8, "D50", 0.67, 0.33, 0.32025, 0.21, 0.71, 0.602071, 0.14, 0.08, 0.077679]; break; case "ekta_space_ps5": m = [2.2, "D50", 0.695, 0.305, 0.260629, 0.26, 0.7, 0.734946, 0.11, 0.005, 0.004425]; break; case "ntsc_rgb": m = [2.2, "C", 0.67, 0.33, 0.298839, 0.21, 0.71, 0.586811, 0.14, 0.08, 0.11435]; break; case "pal_secam_rgb": m = [2.2, "D65", 0.64, 0.33, 0.222021, 0.29, 0.6, 0.706645, 0.15, 0.06, 0.071334]; break; case "pro_photo_rgb": m = [1.8, "D50", 0.7347, 0.2653, 0.28804, 0.1596, 0.8404, 0.711874, 0.0366, 0.0001, 0.000086]; break; case "smpte-c_rgb": m = [2.2, "D65", 0.63, 0.34, 0.212395, 0.31, 0.595, 0.701049, 0.155, 0.07, 0.086556]; break; case "s_rgb": m = [2.2, "D65", 0.64, 0.33, 0.212656, 0.3, 0.6, 0.715158, 0.15, 0.06, 0.072186]; break; case "wide_gamut_rgb": m = [2.2, "D50", 0.735, 0.265, 0.258187, 0.115, 0.826, 0.724938, 0.157, 0.018, 0.016875]; break; default: dojo.debug("RGB working space " + this.RGBWorkingSpace + " isn't defined"); } var p = {name:this.RGBWorkingSpace, gamma:m[0], wp:m[1], xr:m[2], yr:m[3], Yr:m[4], xg:m[5], yg:m[6], Yg:m[7], xb:m[8], yb:m[9], Yb:m[10]}; if (p.wp != this.whitePoint) { var r = this.XYZ_to_xyY(this.chromaticAdaptation(this.xyY_to_XYZ([p.xr, p.yr, p.Yr]), p.wp, this.whitePoint)); var g = this.XYZ_to_xyY(this.chromaticAdaptation(this.xyY_to_XYZ([p.xg, p.yg, p.Yg]), p.wp, this.whitePoint)); var b = this.XYZ_to_xyY(this.chromaticAdaptation(this.xyY_to_XYZ([p.xb, p.yb, p.Yb]), p.wp, this.whitePoint)); p.xr = r[0]; p.yr = r[1]; p.Yr = r[2]; p.xg = g[0]; p.yg = g[1]; p.Yg = g[2]; p.xb = b[0]; p.yb = b[1]; p.Yb = b[2]; p.wp = this.whitePoint; } p.zr = 1 - p.xr - p.yr; p.zg = 1 - p.xg - p.yg; p.zb = 1 - p.xb - p.yb; return p; }; dojo.gfx.Colorspace.prototype.epsilon = function () { return this.useApproxCIELabMapping ? 0.008856 : 216 / 24289; }; dojo.gfx.Colorspace.prototype.kappa = function () { return this.useApproxCIELabMapping ? 903.3 : 24389 / 27; }; dojo.gfx.Colorspace.prototype.XYZ_to_xyY = function () { var src = this.munge("XYZ", arguments); var sum = src.X + src.Y + src.Z; if (sum == 0) { var wp = this.getWhitePoint(); var x = wp.x; var y = wp.y; } else { var x = src.X / sum; var y = src.Y / sum; } var Y = src.Y; return [x, y, Y]; }; dojo.gfx.Colorspace.prototype.xyY_to_XYZ = function () { var src = this.munge("xyY", arguments); if (src.y == 0) { var X = 0; var Y = 0; var Z = 0; } else { var X = (src.x * src.Y) / src.y; var Y = src.Y; var Z = ((1 - src.x - src.y) * src.Y) / src.y; } return [X, Y, Z]; }; dojo.gfx.Colorspace.prototype.RGB_to_XYZ = function () { var src = this.munge("RGB", arguments); var m = this.getRGB_XYZ_Matrix(); var pr = this.getPrimaries(); if (this.RGBWorkingSpace == "s_rgb") { var r = (src.R > 0.04045) ? Math.pow(((src.R + 0.055) / 1.055), 2.4) : src.R / 12.92; var g = (src.G > 0.04045) ? Math.pow(((src.G + 0.055) / 1.055), 2.4) : src.G / 12.92; var b = (src.B > 0.04045) ? Math.pow(((src.B + 0.055) / 1.055), 2.4) : src.B / 12.92; } else { var r = Math.pow(src.R, pr.gamma); var g = Math.pow(src.G, pr.gamma); var b = Math.pow(src.B, pr.gamma); } var XYZ = dojo.math.matrix.multiply([[r, g, b]], m); return [XYZ[0][0], XYZ[0][1], XYZ[0][2]]; }; dojo.gfx.Colorspace.prototype.XYZ_to_RGB = function () { var src = this.munge("XYZ", arguments); var mi = this.getXYZ_RGB_Matrix(); var pr = this.getPrimaries(); var rgb = dojo.math.matrix.multiply([[src.X, src.Y, src.Z]], mi); var r = rgb[0][0]; var g = rgb[0][1]; var b = rgb[0][2]; if (this.RGBWorkingSpace == "s_rgb") { var R = (r > 0.0031308) ? (1.055 * Math.pow(r, 1 / 2.4)) - 0.055 : 12.92 * r; var G = (g > 0.0031308) ? (1.055 * Math.pow(g, 1 / 2.4)) - 0.055 : 12.92 * g; var B = (b > 0.0031308) ? (1.055 * Math.pow(b, 1 / 2.4)) - 0.055 : 12.92 * b; } else { var R = Math.pow(r, 1 / pr.gamma); var G = Math.pow(g, 1 / pr.gamma); var B = Math.pow(b, 1 / pr.gamma); } return [R, G, B]; }; dojo.gfx.Colorspace.prototype.XYZ_to_Lab = function () { var src = this.munge("XYZ", arguments); var wp = this.getWhitePoint(); var xr = src.X / wp.X; var yr = src.Y / wp.Y; var zr = src.Z / wp.Z; var fx = (xr > this.epsilon()) ? Math.pow(xr, 1 / 3) : (this.kappa() * xr + 16) / 116; var fy = (yr > this.epsilon()) ? Math.pow(yr, 1 / 3) : (this.kappa() * yr + 16) / 116; var fz = (zr > this.epsilon()) ? Math.pow(zr, 1 / 3) : (this.kappa() * zr + 16) / 116; var L = 116 * fy - 16; var a = 500 * (fx - fy); var b = 200 * (fy - fz); return [L, a, b]; }; dojo.gfx.Colorspace.prototype.Lab_to_XYZ = function () { var src = this.munge("Lab", arguments); var wp = this.getWhitePoint(); var yr = (src.L > (this.kappa() * this.epsilon())) ? Math.pow((src.L + 16) / 116, 3) : src.L / this.kappa(); var fy = (yr > this.epsilon()) ? (src.L + 16) / 116 : (this.kappa() * yr + 16) / 116; var fx = (src.a / 500) + fy; var fz = fy - (src.b / 200); var fxcube = Math.pow(fx, 3); var fzcube = Math.pow(fz, 3); var xr = (fxcube > this.epsilon()) ? fxcube : (116 * fx - 16) / this.kappa(); var zr = (fzcube > this.epsilon()) ? fzcube : (116 * fz - 16) / this.kappa(); var X = xr * wp.X; var Y = yr * wp.Y; var Z = zr * wp.Z; return [X, Y, Z]; }; dojo.gfx.Colorspace.prototype.Lab_to_LCHab = function () { var src = this.munge("Lab", arguments); var L = src.L; var C = Math.pow(src.a * src.a + src.b * src.b, 0.5); var H = Math.atan2(src.b, src.a) * (180 / Math.PI); if (H < 0) { H += 360; } if (H > 360) { H -= 360; } return [L, C, H]; }; dojo.gfx.Colorspace.prototype.LCHab_to_Lab = function () { var src = this.munge("LCH", arguments); var H_rad = src.H * (Math.PI / 180); var L = src.L; var a = src.C / Math.pow(Math.pow(Math.tan(H_rad), 2) + 1, 0.5); if ((90 < src.H) && (src.H < 270)) { a = -a; } var b = Math.pow(Math.pow(src.C, 2) - Math.pow(a, 2), 0.5); if (src.H > 180) { b = -b; } return [L, a, b]; }; dojo.gfx.Colorspace.prototype.chromaticAdaptation = function (col, src_w, dst_w) { col = this.munge("XYZ", [col]); var old_wp = this.whitePoint; this.whitePoint = src_w; var wp_src = this.getWhitePoint(); this.whitePoint = dst_w; var wp_dst = this.getWhitePoint(); this.whitePoint = old_wp; switch (this.chromaticAdaptationAlg) { case "xyz_scaling": var ma = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]; var mai = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]; break; case "bradford": var ma = [[0.8951, -0.7502, 0.0389], [0.2664, 1.7135, -0.0685], [-0.1614, 0.0367, 1.0296]]; var mai = [[0.986993, 0.432305, -0.008529], [-0.147054, 0.51836, 0.040043], [0.159963, 0.049291, 0.968487]]; break; case "von_kries": var ma = [[0.40024, -0.2263, 0], [0.7076, 1.16532, 0], [-0.08081, 0.0457, 0.91822]]; var mai = [[1.859936, 0.361191, 0], [-1.129382, 0.638812, 0], [0.219897, -0.000006, 1.089064]]; break; default: dojo.debug("The " + this.chromaticAdaptationAlg + " chromatic adaptation algorithm matricies are not defined"); } var domain_src = dojo.math.matrix.multiply([[wp_src.x, wp_src.y, wp_src.z]], ma); var domain_dst = dojo.math.matrix.multiply([[wp_dst.x, wp_dst.y, wp_dst.z]], ma); var centre = [[domain_dst[0][0] / domain_src[0][0], 0, 0], [0, domain_dst[0][1] / domain_src[0][1], 0], [0, 0, domain_dst[0][2] / domain_src[0][2]]]; var m = dojo.math.matrix.multiply(dojo.math.matrix.multiply(ma, centre), mai); var dst = dojo.math.matrix.multiply([[col.X, col.Y, col.Z]], m); return dst[0]; }; dojo.gfx.Colorspace.prototype.getRGB_XYZ_Matrix = function () { var wp = this.getWhitePoint(); var pr = this.getPrimaries(); var Xr = pr.xr / pr.yr; var Yr = 1; var Zr = (1 - pr.xr - pr.yr) / pr.yr; var Xg = pr.xg / pr.yg; var Yg = 1; var Zg = (1 - pr.xg - pr.yg) / pr.yg; var Xb = pr.xb / pr.yb; var Yb = 1; var Zb = (1 - pr.xb - pr.yb) / pr.yb; var m1 = [[Xr, Yr, Zr], [Xg, Yg, Zg], [Xb, Yb, Zb]]; var m2 = [[wp.X, wp.Y, wp.Z]]; var sm = dojo.math.matrix.multiply(m2, dojo.math.matrix.inverse(m1)); var Sr = sm[0][0]; var Sg = sm[0][1]; var Sb = sm[0][2]; var m4 = [[Sr * Xr, Sr * Yr, Sr * Zr], [Sg * Xg, Sg * Yg, Sg * Zg], [Sb * Xb, Sb * Yb, Sb * Zb]]; return m4; }; dojo.gfx.Colorspace.prototype.getXYZ_RGB_Matrix = function () { var m = this.getRGB_XYZ_Matrix(); return dojo.math.matrix.inverse(m); }; dojo.gfx.Colorspace.prototype.XYZ_to_Luv = function () { var src = this.munge("XYZ", arguments); var wp = this.getWhitePoint(); var ud = (4 * src.X) / (src.X + 15 * src.Y + 3 * src.Z); var vd = (9 * src.Y) / (src.X + 15 * src.Y + 3 * src.Z); var udr = (4 * wp.X) / (wp.X + 15 * wp.Y + 3 * wp.Z); var vdr = (9 * wp.Y) / (wp.X + 15 * wp.Y + 3 * wp.Z); var yr = src.Y / wp.Y; var L = (yr > this.epsilon()) ? 116 * Math.pow(yr, 1 / 3) - 16 : this.kappa() * yr; var u = 13 * L * (ud - udr); var v = 13 * L * (vd - vdr); return [L, u, v]; }; dojo.gfx.Colorspace.prototype.Luv_to_XYZ = function () { var src = this.munge("Luv", arguments); var wp = this.getWhitePoint(); var uz = (4 * wp.X) / (wp.X + 15 * wp.Y + 3 * wp.Z); var vz = (9 * wp.Y) / (wp.X + 15 * wp.Y + 3 * wp.Z); var Y = (src.L > this.kappa() * this.epsilon()) ? Math.pow((src.L + 16) / 116, 3) : src.L / this.kappa(); var a = (1 / 3) * (((52 * src.L) / (src.u + 13 * src.L * uz)) - 1); var b = -5 * Y; var c = -(1 / 3); var d = Y * (((39 * src.L) / (src.v + 13 * src.L * vz)) - 5); var X = (d - b) / (a - c); var Z = X * a + b; return [X, Y, Z]; }; dojo.gfx.Colorspace.prototype.Luv_to_LCHuv = function () { var src = this.munge("Luv", arguments); var L = src.L; var C = Math.pow(src.u * src.u + src.v * src.v, 0.5); var H = Math.atan2(src.v, src.u) * (180 / Math.PI); if (H < 0) { H += 360; } if (H > 360) { H -= 360; } return [L, C, H]; }; dojo.gfx.Colorspace.prototype.LCHuv_to_Luv = function () { var src = this.munge("LCH", arguments); var H_rad = src.H * (Math.PI / 180); var L = src.L; var u = src.C / Math.pow(Math.pow(Math.tan(H_rad), 2) + 1, 0.5); var v = Math.pow(src.C * src.C - u * u, 0.5); if ((90 < src.H) && (src.H < 270)) { u *= -1; } if (src.H > 180) { v *= -1; } return [L, u, v]; }; dojo.gfx.Colorspace.colorTemp_to_whitePoint = function (T) { if (T < 4000) { dojo.debug("Can't find a white point for temperatures under 4000K"); return [0, 0]; } if (T > 25000) { dojo.debug("Can't find a white point for temperatures over 25000K"); return [0, 0]; } var T1 = T; var T2 = T * T; var T3 = T2 * T; var ten9 = Math.pow(10, 9); var ten6 = Math.pow(10, 6); var ten3 = Math.pow(10, 3); if (T <= 7000) { var x = (-4.607 * ten9 / T3) + (2.9678 * ten6 / T2) + (0.09911 * ten3 / T) + 0.244063; } else { var x = (-2.0064 * ten9 / T3) + (1.9018 * ten6 / T2) + (0.24748 * ten3 / T) + 0.23704; } var y = -3 * x * x + 2.87 * x - 0.275; return [x, y]; }; dojo.gfx.Colorspace.prototype.RGB_to_CMY = function () { var src = this.munge("RGB", arguments); var C = 1 - src.R; var M = 1 - src.G; var Y = 1 - src.B; return [C, M, Y]; }; dojo.gfx.Colorspace.prototype.CMY_to_RGB = function () { var src = this.munge("CMY", arguments); var R = 1 - src.C; var G = 1 - src.M; var B = 1 - src.Y; return [R, G, B]; }; dojo.gfx.Colorspace.prototype.RGB_to_CMYK = function () { var src = this.munge("RGB", arguments); var K = Math.min(1 - src.R, 1 - src.G, 1 - src.B); var C = (1 - src.R - K) / (1 - K); var M = (1 - src.G - K) / (1 - K); var Y = (1 - src.B - K) / (1 - K); return [C, M, Y, K]; }; dojo.gfx.Colorspace.prototype.CMYK_to_RGB = function () { var src = this.munge("CMYK", arguments); var R = 1 - Math.min(1, src.C * (1 - src.K) + src.K); var G = 1 - Math.min(1, src.M * (1 - src.K) + src.K); var B = 1 - Math.min(1, src.Y * (1 - src.K) + src.K); return [R, G, B]; }; dojo.gfx.Colorspace.prototype.CMY_to_CMYK = function () { var src = this.munge("CMY", arguments); var K = Math.min(src.C, src.M, src.Y); var C = (src.C - K) / (1 - K); var M = (src.M - K) / (1 - K); var Y = (src.Y - K) / (1 - K); return [C, M, Y, K]; }; dojo.gfx.Colorspace.prototype.CMYK_to_CMY = function () { var src = this.munge("CMYK", arguments); var C = Math.min(1, src.C * (1 - src.K) + src.K); var M = Math.min(1, src.M * (1 - src.K) + src.K); var Y = Math.min(1, src.Y * (1 - src.K) + src.K); return [C, M, Y]; }; dojo.gfx.Colorspace.prototype.RGB_to_HSV = function () { var src = this.munge("RGB", arguments); var min = Math.min(src.R, src.G, src.B); var V = Math.max(src.R, src.G, src.B); var delta = V - min; var H = null; var S = (V == 0) ? 0 : delta / V; if (S == 0) { H = 0; } else { if (src.R == V) { H = 60 * (src.G - src.B) / delta; } else { if (src.G == V) { H = 120 + 60 * (src.B - src.R) / delta; } else { if (src.B == V) { H = 240 + 60 * (src.R - src.G) / delta; } } } if (H < 0) { H += 360; } } H = (H == 0) ? 360 : H; return [H, S, V]; }; dojo.gfx.Colorspace.prototype.HSV_to_RGB = function () { var src = this.munge("HSV", arguments); if (src.H == 360) { src.H = 0; } var r = null; var g = null; var b = null; if (src.S == 0) { var R = src.V; var G = src.V; var B = src.V; } else { var hTemp = src.H / 60; var i = Math.floor(hTemp); var f = hTemp - i; var p = src.V * (1 - src.S); var q = src.V * (1 - (src.S * f)); var t = src.V * (1 - (src.S * (1 - f))); switch (i) { case 0: R = src.V; G = t; B = p; break; case 1: R = q; G = src.V; B = p; break; case 2: R = p; G = src.V; B = t; break; case 3: R = p; G = q; B = src.V; break; case 4: R = t; G = p; B = src.V; break; case 5: R = src.V; G = p; B = q; break; } } return [R, G, B]; }; dojo.gfx.Colorspace.prototype.RGB_to_HSL = function () { var src = this.munge("RGB", arguments); var min = Math.min(src.R, src.G, src.B); var max = Math.max(src.R, src.G, src.B); var delta = max - min; var H = 0; var S = 0; var L = (min + max) / 2; if ((L > 0) && (L < 1)) { S = delta / ((L < 0.5) ? (2 * L) : (2 - 2 * L)); } if (delta > 0) { if ((max == src.R) && (max != src.G)) { H += (src.G - src.B) / delta; } if ((max == src.G) && (max != src.B)) { H += (2 + (src.B - src.R) / delta); } if ((max == src.B) && (max != src.R)) { H += (4 + (src.R - src.G) / delta); } H *= 60; } H = (H == 0) ? 360 : H; return [H, S, L]; }; dojo.gfx.Colorspace.prototype.HSL_to_RGB = function () { var src = this.munge("HSL", arguments); while (src.H < 0) { src.H += 360; } while (src.H >= 360) { src.H -= 360; } var R = 0; var G = 0; var B = 0; if (src.H < 120) { R = (120 - src.H) / 60; G = src.H / 60; B = 0; } else { if (src.H < 240) { R = 0; G = (240 - src.H) / 60; B = (src.H - 120) / 60; } else { R = (src.H - 240) / 60; G = 0; B = (360 - src.H) / 60; } } R = 2 * src.S * Math.min(R, 1) + (1 - src.S); G = 2 * src.S * Math.min(G, 1) + (1 - src.S); B = 2 * src.S * Math.min(B, 1) + (1 - src.S); if (src.L < 0.5) { R = src.L * R; G = src.L * G; B = src.L * B; } else { R = (1 - src.L) * R + 2 * src.L - 1; G = (1 - src.L) * G + 2 * src.L - 1; B = (1 - src.L) * B + 2 * src.L - 1; } return [R, G, B]; };

__CPAN_FILE__ src/gfx/vml.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.provide("dojo.gfx.vml"); dojo.require("dojo.dom"); dojo.require("dojo.math"); dojo.require("dojo.lang.declare"); dojo.require("dojo.lang.extras"); dojo.require("dojo.string.*"); dojo.require("dojo.html.metrics"); dojo.require("dojo.gfx.color"); dojo.require("dojo.gfx.common"); dojo.require("dojo.gfx.shape"); dojo.require("dojo.gfx.path"); dojo.require("dojo.experimental"); dojo.experimental("dojo.gfx.vml"); dojo.gfx.vml.xmlns = "urn:schemas-microsoft-com:vml"; dojo.gfx.vml._parseFloat = function (str) { return str.match(/^\d+f$/i) ? parseInt(str) / 65536 : parseFloat(str); }; dojo.gfx.vml.cm_in_pt = 72 / 2.54; dojo.gfx.vml.mm_in_pt = 7.2 / 2.54; dojo.gfx.vml.px_in_pt = function () { return dojo.html.getCachedFontMeasurements()["12pt"] / 12; }; dojo.gfx.vml.pt2px = function (len) { return len * this.px_in_pt(); }; dojo.gfx.vml.px2pt = function (len) { return len / this.px_in_pt(); }; dojo.gfx.vml.normalizedLength = function (len) { if (len.length == 0) { return 0; } if (len.length > 2) { var px_in_pt = this.px_in_pt(); var val = parseFloat(len); switch (len.slice(-2)) { case "px": return val; case "pt": return val * px_in_pt; case "in": return val * 72 * px_in_pt; case "pc": return val * 12 * px_in_pt; case "mm": return val / this.mm_in_pt * px_in_pt; case "cm": return val / this.cm_in_pt * px_in_pt; } } return parseFloat(len); }; dojo.lang.extend(dojo.gfx.Shape, {setFill:function (fill) { if (!fill) { this.fillStyle = null; this.rawNode.filled = false; return this; } if (typeof (fill) == "object" && "type" in fill) { switch (fill.type) { case "linear": var f = dojo.gfx.makeParameters(dojo.gfx.defaultLinearGradient, fill); this.fillStyle = f; var s = ""; for (var i = 0; i < f.colors.length; ++i) { f.colors[i].color = dojo.gfx.normalizeColor(f.colors[i].color); s += f.colors[i].offset.toFixed(8) + " " + f.colors[i].color.toHex() + ";"; } var fo = this.rawNode.fill; fo.colors.value = s; fo.method = "sigma"; fo.type = "gradient"; fo.angle = (dojo.math.radToDeg(Math.atan2(f.x2 - f.x1, f.y2 - f.y1)) + 180) % 360; fo.on = true; break; case "radial": var f = dojo.gfx.makeParameters(dojo.gfx.defaultRadialGradient, fill); this.fillStyle = f; var w = parseFloat(this.rawNode.style.width); var h = parseFloat(this.rawNode.style.height); var c = isNaN(w) ? 1 : 2 * f.r / w; var i = f.colors.length - 1; f.colors[i].color = dojo.gfx.normalizeColor(f.colors[i].color); var s = "0 " + f.colors[i].color.toHex(); for (; i >= 0; --i) { f.colors[i].color = dojo.gfx.normalizeColor(f.colors[i].color); s += (1 - c * f.colors[i].offset).toFixed(8) + " " + f.colors[i].color.toHex() + ";"; } var fo = this.rawNode.fill; fo.colors.value = s; fo.method = "sigma"; fo.type = "gradientradial"; if (isNaN(w) || isNaN(h)) { fo.focusposition = "0.5 0.5"; } else { fo.focusposition = (f.cx / w).toFixed(8) + " " + (f.cy / h).toFixed(8); } fo.focussize = "0 0"; fo.on = true; break; case "pattern": var f = dojo.gfx.makeParameters(dojo.gfx.defaultPattern, fill); this.fillStyle = f; var fo = this.rawNode.fill; fo.type = "tile"; fo.src = f.src; if (f.width && f.height) { fo.size.x = dojo.gfx.vml.px2pt(f.width); fo.size.y = dojo.gfx.vml.px2pt(f.height); } fo.alignShape = false; fo.position.x = 0; fo.position.y = 0; fo.origin.x = f.width ? f.x / f.width : 0; fo.origin.y = f.height ? f.y / f.height : 0; fo.on = true; break; } this.rawNode.fill.opacity = 1; return this; } this.fillStyle = dojo.gfx.normalizeColor(fill); this.rawNode.fillcolor = this.fillStyle.toHex(); this.rawNode.fill.opacity = this.fillStyle.a; this.rawNode.filled = true; return this; }, setStroke:function (stroke) { if (!stroke) { this.strokeStyle = null; this.rawNode.stroked = false; return this; } this.strokeStyle = dojo.gfx.makeParameters(dojo.gfx.defaultStroke, stroke); this.strokeStyle.color = dojo.gfx.normalizeColor(this.strokeStyle.color); var s = this.strokeStyle; this.rawNode.stroked = true; this.rawNode.strokecolor = s.color.toCss(); this.rawNode.strokeweight = s.width + "px"; if (this.rawNode.stroke) { this.rawNode.stroke.opacity = s.color.a; this.rawNode.stroke.endcap = this._translate(this._capMap, s.cap); if (typeof (s.join) == "number") { this.rawNode.stroke.joinstyle = "miter"; this.rawNode.stroke.miterlimit = s.join; } else { this.rawNode.stroke.joinstyle = s.join; } } return this; }, _capMap:{butt:"flat"}, _capMapReversed:{flat:"butt"}, _translate:function (dict, value) { return (value in dict) ? dict[value] : value; }, _applyTransform:function () { var matrix = this._getRealMatrix(); if (!matrix) { return this; } var skew = this.rawNode.skew; if (typeof (skew) == "undefined") { for (var i = 0; i < this.rawNode.childNodes.length; ++i) { if (this.rawNode.childNodes[i].tagName == "skew") { skew = this.rawNode.childNodes[i]; break; } } } if (skew) { skew.on = false; var mt = matrix.xx.toFixed(8) + " " + matrix.xy.toFixed(8) + " " + matrix.yx.toFixed(8) + " " + matrix.yy.toFixed(8) + " 0 0"; var offset = Math.floor(matrix.dx).toFixed() + "px " + Math.floor(matrix.dy).toFixed() + "px"; var l = parseFloat(this.rawNode.style.left); var t = parseFloat(this.rawNode.style.top); var w = parseFloat(this.rawNode.style.width); var h = parseFloat(this.rawNode.style.height); if (isNaN(l)) { l = 0; } if (isNaN(t)) { t = 0; } if (isNaN(w)) { w = 1; } if (isNaN(h)) { h = 1; } var origin = (-l / w - 0.5).toFixed(8) + " " + (-t / h - 0.5).toFixed(8); skew.matrix = mt; skew.origin = origin; skew.offset = offset; skew.on = true; } return this; }, setRawNode:function (rawNode) { rawNode.stroked = false; rawNode.filled = false; this.rawNode = rawNode; }, attachFill:function (rawNode) { var fillStyle = null; var fo = rawNode.fill; if (rawNode) { if (fo.on && fo.type == "gradient") { var fillStyle = dojo.lang.shallowCopy(dojo.gfx.defaultLinearGradient, true); var rad = dojo.math.degToRad(fo.angle); fillStyle.x2 = Math.cos(rad); fillStyle.y2 = Math.sin(rad); fillStyle.colors = []; var stops = fo.colors.value.split(";"); for (var i = 0; i < stops.length; ++i) { var t = stops[i].match(/\S+/g); if (!t || t.length != 2) { continue; } fillStyle.colors.push({offset:dojo.gfx.vml._parseFloat(t[0]), color:new dojo.gfx.color.Color(t[1])}); } } else { if (fo.on && fo.type == "gradientradial") { var fillStyle = dojo.lang.shallowCopy(dojo.gfx.defaultRadialGradient, true); var w = parseFloat(rawNode.style.width); var h = parseFloat(rawNode.style.height); fillStyle.cx = isNaN(w) ? 0 : fo.focusposition.x * w; fillStyle.cy = isNaN(h) ? 0 : fo.focusposition.y * h; fillStyle.r = isNaN(w) ? 1 : w / 2; fillStyle.colors = []; var stops = fo.colors.value.split(";"); for (var i = stops.length - 1; i >= 0; --i) { var t = stops[i].match(/\S+/g); if (!t || t.length != 2) { continue; } fillStyle.colors.push({offset:dojo.gfx.vml._parseFloat(t[0]), color:new dojo.gfx.color.Color(t[1])}); } } else { if (fo.on && fo.type == "tile") { var fillStyle = dojo.lang.shallowCopy(dojo.gfx.defaultPattern, true); fillStyle.width = dojo.gfx.vml.pt2px(fo.size.x); fillStyle.height = dojo.gfx.vml.pt2px(fo.size.y); fillStyle.x = fo.origin.x * fillStyle.width; fillStyle.y = fo.origin.y * fillStyle.height; fillStyle.src = fo.src; } else { if (fo.on && rawNode.fillcolor) { fillStyle = new dojo.gfx.color.Color(rawNode.fillcolor + ""); fillStyle.a = fo.opacity; } } } } } return fillStyle; }, attachStroke:function (rawNode) { var strokeStyle = dojo.lang.shallowCopy(dojo.gfx.defaultStroke, true); if (rawNode && rawNode.stroked) { strokeStyle.color = new dojo.gfx.color.Color(rawNode.strokecolor.value); dojo.debug("We are expecting an .75pt here, instead of strokeweight = " + rawNode.strokeweight); strokeStyle.width = dojo.gfx.vml.normalizedLength(rawNode.strokeweight + ""); strokeStyle.color.a = rawNode.stroke.opacity; strokeStyle.cap = this._translate(this._capMapReversed, rawNode.stroke.endcap); strokeStyle.join = rawNode.stroke.joinstyle == "miter" ? rawNode.stroke.miterlimit : rawNode.stroke.joinstyle; } else { return null; } return strokeStyle; }, attachTransform:function (rawNode) { var matrix = {}; if (rawNode) { var s = rawNode.skew; matrix.xx = s.matrix.xtox; matrix.xy = s.matrix.ytox; matrix.yx = s.matrix.xtoy; matrix.yy = s.matrix.ytoy; matrix.dx = dojo.gfx.vml.pt2px(s.offset.x); matrix.dy = dojo.gfx.vml.pt2px(s.offset.y); } return dojo.gfx.matrix.normalize(matrix); }, attach:function (rawNode) { if (rawNode) { this.rawNode = rawNode; this.shape = this.attachShape(rawNode); this.fillStyle = this.attachFill(rawNode); this.strokeStyle = this.attachStroke(rawNode); this.matrix = this.attachTransform(rawNode); } }}); dojo.declare("dojo.gfx.Group", dojo.gfx.shape.VirtualGroup, {add:function (shape) { if (this != shape.getParent()) { this.rawNode.appendChild(shape.rawNode); dojo.gfx.Group.superclass.add.apply(this, arguments); } return this; }, remove:function (shape, silently) { if (this == shape.getParent()) { if (this.rawNode == shape.rawNode.parentNode) { this.rawNode.removeChild(shape.rawNode); } dojo.gfx.Group.superclass.remove.apply(this, arguments); } return this; }, attach:function (rawNode) { if (rawNode) { this.rawNode = rawNode; this.shape = null; this.fillStyle = null; this.strokeStyle = null; this.matrix = null; } }}); dojo.gfx.Group.nodeType = "group"; var zIndex = {moveToFront:function () { this.rawNode.parentNode.appendChild(this.rawNode); return this; }, moveToBack:function () { this.rawNode.parentNode.insertBefore(this.rawNode, this.rawNode.parentNode.firstChild); return this; }}; dojo.lang.extend(dojo.gfx.Shape, zIndex); dojo.lang.extend(dojo.gfx.Group, zIndex); delete zIndex; dojo.declare("dojo.gfx.Rect", dojo.gfx.shape.Rect, {attachShape:function (rawNode) { var arcsize = rawNode.outerHTML.match(/arcsize = \"(\d*\.?\d+[%f]?)\"/)[1]; arcsize = (arcsize.indexOf("%") >= 0) ? parseFloat(arcsize) / 100 : dojo.gfx.vml._parseFloat(arcsize); var style = rawNode.style; var width = parseFloat(style.width); var height = parseFloat(style.height); var o = dojo.gfx.makeParameters(dojo.gfx.defaultRect, {x:parseInt(style.left), y:parseInt(style.top), width:width, height:height, r:Math.min(width, height) * arcsize}); return o; }, setShape:function (newShape) { var shape = this.shape = dojo.gfx.makeParameters(this.shape, newShape); this.bbox = null; var style = this.rawNode.style; style.left = shape.x.toFixed(); style.top = shape.y.toFixed(); style.width = (typeof (shape.width) == "string" && shape.width.indexOf("%") >= 0) ? shape.width : shape.width.toFixed(); style.height = (typeof (shape.width) == "string" && shape.height.indexOf("%") >= 0) ? shape.height : shape.height.toFixed(); var r = Math.min(1, (shape.r / Math.min(parseFloat(shape.width), parseFloat(shape.height)))).toFixed(8); var parent = this.rawNode.parentNode; var before = null; if (parent) { if (parent.lastChild != this.rawNode) { for (var i = 0; i < parent.childNodes.length; ++i) { if (parent.childNodes[i] == this.rawNode) { before = parent.childNodes[i + 1]; break; } } } parent.removeChild(this.rawNode); } this.rawNode.arcsize = r; if (parent) { if (before) { parent.insertBefore(this.rawNode, before); } else { parent.appendChild(this.rawNode); } } return this.setTransform(this.matrix); }}); dojo.gfx.Rect.nodeType = "roundrect"; dojo.declare("dojo.gfx.Ellipse", dojo.gfx.shape.Ellipse, {attachShape:function (rawNode) { var style = this.rawNode.style; var rx = parseInt(style.width) / 2; var ry = parseInt(style.height) / 2; var o = dojo.gfx.makeParameters(dojo.gfx.defaultEllipse, {cx:parseInt(style.left) + rx, cy:parseInt(style.top) + ry, rx:rx, ry:ry}); return o; }, setShape:function (newShape) { var shape = this.shape = dojo.gfx.makeParameters(this.shape, newShape); this.bbox = null; var style = this.rawNode.style; style.left = (shape.cx - shape.rx).toFixed(); style.top = (shape.cy - shape.ry).toFixed(); style.width = (shape.rx * 2).toFixed(); style.height = (shape.ry * 2).toFixed(); return this.setTransform(this.matrix); }}); dojo.gfx.Ellipse.nodeType = "oval"; dojo.declare("dojo.gfx.Circle", dojo.gfx.shape.Circle, {attachShape:function (rawNode) { var style = this.rawNode.style; var r = parseInt(style.width) / 2; var o = dojo.gfx.makeParameters(dojo.gfx.defaultCircle, {cx:parseInt(style.left) + r, cy:parseInt(style.top) + r, r:r}); return o; }, setShape:function (newShape) { var shape = this.shape = dojo.gfx.makeParameters(this.shape, newShape); this.bbox = null; var style = this.rawNode.style; style.left = (shape.cx - shape.r).toFixed(); style.top = (shape.cy - shape.r).toFixed(); style.width = (shape.r * 2).toFixed(); style.height = (shape.r * 2).toFixed(); return this; }}); dojo.gfx.Circle.nodeType = "oval"; dojo.declare("dojo.gfx.Line", dojo.gfx.shape.Line, function (rawNode) { if (rawNode) { rawNode.setAttribute("dojoGfxType", "line"); } }, {attachShape:function (rawNode) { var p = rawNode.path.v.match(dojo.gfx.pathRegExp); var shape = {}; do { if (p.length < 7 || p[0] != "m" || p[3] != "l" || p[6] != "e") { break; } shape.x1 = parseInt(p[1]); shape.y1 = parseInt(p[2]); shape.x2 = parseInt(p[4]); shape.y2 = parseInt(p[5]); } while (false); return dojo.gfx.makeParameters(dojo.gfx.defaultLine, shape); }, setShape:function (newShape) { var shape = this.shape = dojo.gfx.makeParameters(this.shape, newShape); this.bbox = null; this.rawNode.path.v = "m" + shape.x1.toFixed() + " " + shape.y1.toFixed() + "l" + shape.x2.toFixed() + " " + shape.y2.toFixed() + "e"; return this.setTransform(this.matrix); }}); dojo.gfx.Line.nodeType = "shape"; dojo.declare("dojo.gfx.Polyline", dojo.gfx.shape.Polyline, function (rawNode) { if (rawNode) { rawNode.setAttribute("dojoGfxType", "polyline"); } }, {attachShape:function (rawNode) { var shape = dojo.lang.shallowCopy(dojo.gfx.defaultPolyline, true); var p = rawNode.path.v.match(dojo.gfx.pathRegExp); do { if (p.length < 3 || p[0] != "m") { break; } var x = parseInt(p[0]); var y = parseInt(p[1]); if (isNaN(x) || isNaN(y)) { break; } shape.points.push({x:x, y:y}); if (p.length < 6 || p[3] != "l") { break; } for (var i = 4; i < p.length; i += 2) { x = parseInt(p[i]); y = parseInt(p[i + 1]); if (isNaN(x) || isNaN(y)) { break; } shape.points.push({x:x, y:y}); } } while (false); return shape; }, setShape:function (points, closed) { if (points && points instanceof Array) { this.shape = dojo.gfx.makeParameters(this.shape, {points:points}); if (closed && this.shape.points.length) { this.shape.points.push(this.shape.points[0]); } } else { this.shape = dojo.gfx.makeParameters(this.shape, points); } this.bbox = null; var attr = []; var p = this.shape.points; if (p.length > 0) { attr.push("m"); attr.push(p[0].x.toFixed()); attr.push(p[0].y.toFixed()); if (p.length > 1) { attr.push("l"); for (var i = 1; i < p.length; ++i) { attr.push(p[i].x.toFixed()); attr.push(p[i].y.toFixed()); } } } attr.push("e"); this.rawNode.path.v = attr.join(" "); return this.setTransform(this.matrix); }}); dojo.gfx.Polyline.nodeType = "shape"; dojo.declare("dojo.gfx.Image", dojo.gfx.shape.Image, {getEventSource:function () { return this.rawNode ? this.rawNode.firstChild : null; }, attachShape:function (rawNode) { var shape = dojo.lang.shallowCopy(dojo.gfx.defaultImage, true); shape.src = rawNode.firstChild.src; return shape; }, setShape:function (newShape) { var shape = this.shape = dojo.gfx.makeParameters(this.shape, newShape); this.bbox = null; var firstChild = this.rawNode.firstChild; firstChild.src = shape.src; if (shape.width || shape.height) { firstChild.style.width = shape.width; firstChild.style.height = shape.height; } return this.setTransform(this.matrix); }, setStroke:function () { return this; }, setFill:function () { return this; }, attachStroke:function (rawNode) { return null; }, attachFill:function (rawNode) { return null; }, attachTransform:function (rawNode) { var matrix = {}; if (rawNode) { var m = rawNode.filters["DXImageTransform.Microsoft.Matrix"]; matrix.xx = m.M11; matrix.xy = m.M12; matrix.yx = m.M21; matrix.yy = m.M22; matrix.dx = m.Dx; matrix.dy = m.Dy; } return dojo.gfx.matrix.normalize(matrix); }, _applyTransform:function () { var matrix = this._getRealMatrix(); if (!matrix) { return this; } with (this.rawNode.filters["DXImageTransform.Microsoft.Matrix"]) { M11 = matrix.xx; M12 = matrix.xy; M21 = matrix.yx; M22 = matrix.yy; Dx = matrix.dx; Dy = matrix.dy; } return this; }}); dojo.gfx.Image.nodeType = "image"; dojo.gfx.path._calcArc = function (alpha) { var cosa = Math.cos(alpha); var sina = Math.sin(alpha); var p2 = {x:cosa + (4 / 3) * (1 - cosa), y:sina - (4 / 3) * cosa * (1 - cosa) / sina}; return {s:{x:cosa, y:sina}, c1:p2, c2:{x:p2.x, y:-p2.y}, e:{x:cosa, y:-sina}}; }; dojo.declare("dojo.gfx.Path", dojo.gfx.path.Path, function (rawNode) { if (rawNode) { rawNode.setAttribute("dojoGfxType", "path"); } this.vmlPath = ""; this.lastControl = {}; }, {_updateWithSegment:function (segment) { var last = dojo.lang.shallowCopy(this.last); dojo.gfx.Path.superclass._updateWithSegment.apply(this, arguments); var path = this[this.renderers[segment.action]](segment, last); if (typeof (this.vmlPath) == "string") { this.vmlPath += path.join(""); } else { this.vmlPath = this.vmlPath.concat(path); } if (typeof (this.vmlPath) == "string") { this.rawNode.path.v = this.vmlPath + " e"; } }, attachShape:function (rawNode) { var shape = dojo.lang.shallowCopy(dojo.gfx.defaultPath, true); var p = rawNode.path.v.match(dojo.gfx.pathRegExp); var t = [], skip = false; for (var i = 0; i < p.length; ++p) { var s = p[i]; if (s in this._pathVmlToSvgMap) { skip = false; t.push(this._pathVmlToSvgMap[s]); } else { if (!skip) { var n = parseInt(s); if (isNaN(n)) { skip = true; } else { t.push(n); } } } } if (t.length) { shape.path = t.join(" "); } return shape; }, setShape:function (newShape) { this.vmlPath = []; this.lastControl = {}; dojo.gfx.Path.superclass.setShape.apply(this, arguments); this.vmlPath = this.vmlPath.join(""); this.rawNode.path.v = this.vmlPath + " e"; return this; }, _pathVmlToSvgMap:{m:"M", l:"L", t:"m", r:"l", c:"C", v:"c", qb:"Q", x:"z", e:""}, renderers:{M:"_moveToA", m:"_moveToR", L:"_lineToA", l:"_lineToR", H:"_hLineToA", h:"_hLineToR", V:"_vLineToA", v:"_vLineToR", C:"_curveToA", c:"_curveToR", S:"_smoothCurveToA", s:"_smoothCurveToR", Q:"_qCurveToA", q:"_qCurveToR", T:"_qSmoothCurveToA", t:"_qSmoothCurveToR", A:"_arcTo", a:"_arcTo", Z:"_closePath", z:"_closePath"}, _addArgs:function (path, args, from, upto) { if (typeof (upto) == "undefined") { upto = args.length; } if (typeof (from) == "undefined") { from = 0; } for (var i = from; i < upto; ++i) { path.push(" "); path.push(args[i].toFixed()); } }, _addArgsAdjusted:function (path, last, args, from, upto) { if (typeof (upto) == "undefined") { upto = args.length; } if (typeof (from) == "undefined") { from = 0; } for (var i = from; i < upto; i += 2) { path.push(" "); path.push((last.x + args[i]).toFixed()); path.push(" "); path.push((last.y + args[i + 1]).toFixed()); } }, _moveToA:function (segment) { var p = [" m"]; var n = segment.args; var l = n.length; if (l == 2) { this._addArgs(p, n); } else { this._addArgs(p, n, 0, 2); p.push(" l"); this._addArgs(p, n, 2); } this.lastControl = {}; return p; }, _moveToR:function (segment, last) { var p = ["x" in last ? " t" : " m"]; var n = segment.args; var l = n.length; if (l == 2) { this._addArgs(p, n); } else { this._addArgs(p, n, 0, 2); p.push(" r"); this._addArgs(p, n, 2); } this.lastControl = {}; return p; }, _lineToA:function (segment) { var p = [" l"]; this._addArgs(p, segment.args); this.lastControl = {}; return p; }, _lineToR:function (segment) { var p = [" r"]; this._addArgs(p, segment.args); this.lastControl = {}; return p; }, _hLineToA:function (segment, last) { var p = [" l"]; var n = segment.args; var l = n.length; var y = " " + last.y.toFixed(); for (var i = 0; i < l; ++i) { p.push(" "); p.push(n[i].toFixed()); p.push(y); } this.lastControl = {}; return p; }, _hLineToR:function (segment) { var p = [" r"]; var n = segment.args; var l = n.length; for (var i = 0; i < l; ++i) { p.push(" "); p.push(n[i].toFixed()); p.push(" 0"); } this.lastControl = {}; return p; }, _vLineToA:function (segment, last) { var p = [" l"]; var n = segment.args; var l = n.length; var x = " " + last.x.toFixed(); for (var i = 0; i < l; ++i) { p.push(x); p.push(" "); p.push(n[i].toFixed()); } this.lastControl = {}; return p; }, _vLineToR:function (segment) { var p = [" r"]; var n = segment.args; var l = n.length; for (var i = 0; i < l; ++i) { p.push(" 0 "); p.push(n[i].toFixed()); } this.lastControl = {}; return p; }, _curveToA:function (segment) { var p = []; var n = segment.args; var l = n.length; for (var i = 0; i < l; i += 6) { p.push(" c"); this._addArgs(p, n, i, i + 6); } this.lastControl = {x:n[l - 4], y:n[l - 3], type:"C"}; return p; }, _curveToR:function (segment, last) { var p = []; var n = segment.args; var l = n.length; for (var i = 0; i < l; i += 6) { p.push(" v"); this._addArgs(p, n, i, i + 6); this.lastControl = {x:last.x + n[i + 2], y:last.y + n[i + 3]}; last.x += n[i + 4]; last.y += n[i + 5]; } this.lastControl.type = "C"; return p; }, _smoothCurveToA:function (segment, last) { var p = []; var n = segment.args; var l = n.length; for (var i = 0; i < l; i += 4) { p.push(" c"); if (this.lastControl.type == "C") { this._addArgs(p, [2 * last.x - this.lastControl.x, 2 * last.y - this.lastControl.y]); } else { this._addArgs(p, [last.x, last.y]); } this._addArgs(p, n, i, i + 4); } this.lastControl = {x:n[l - 4], y:n[l - 3], type:"C"}; return p; }, _smoothCurveToR:function (segment, last) { var p = []; var n = segment.args; var l = n.length; for (var i = 0; i < l; i += 4) { p.push(" v"); if (this.lastControl.type == "C") { this._addArgs(p, [last.x - this.lastControl.x, last.y - this.lastControl.y]); } else { this._addArgs(p, [0, 0]); } this._addArgs(p, n, i, i + 4); this.lastControl = {x:last.x + n[i], y:last.y + n[i + 1]}; last.x += n[i + 2]; last.y += n[i + 3]; } this.lastControl.type = "C"; return p; }, _qCurveToA:function (segment) { var p = []; var n = segment.args; var l = n.length; for (var i = 0; i < l; i += 4) { p.push(" qb"); this._addArgs(p, n, i, i + 4); } this.lastControl = {x:n[l - 4], y:n[l - 3], type:"Q"}; return p; }, _qCurveToR:function (segment, last) { var p = []; var n = segment.args; var l = n.length; for (var i = 0; i < l; i += 4) { p.push(" qb"); this._addArgsAdjusted(p, last, n, i, i + 4); this.lastControl = {x:last.x + n[i], y:last.y + n[i + 1]}; last.x += n[i + 2]; last.y += n[i + 3]; } this.lastControl.type = "Q"; return p; }, _qSmoothCurveToA:function (segment, last) { var p = []; var n = segment.args; var l = n.length; for (var i = 0; i < l; i += 2) { p.push(" qb"); if (this.lastControl.type == "Q") { this._addArgs(p, [this.lastControl.x = 2 * last.x - this.lastControl.x, this.lastControl.y = 2 * last.y - this.lastControl.y]); } else { this._addArgs(p, [this.lastControl.x = last.x, this.lastControl.y = last.y]); } this._addArgs(p, n, i, i + 2); } this.lastControl.type = "Q"; return p; }, _qSmoothCurveToR:function (segment, last) { var p = []; var n = segment.args; var l = n.length; for (var i = 0; i < l; i += 2) { p.push(" qb"); if (this.lastControl.type == "Q") { this._addArgs(p, [this.lastControl.x = 2 * last.x - this.lastControl.x, this.lastControl.y = 2 * last.y - this.lastControl.y]); } else { this._addArgs(p, [this.lastControl.x = last.x, this.lastControl.y = last.y]); } this._addArgsAdjusted(p, last, n, i, i + 2); } this.lastControl.type = "Q"; return p; }, _PI4:Math.PI / 4, _curvePI4:dojo.gfx.path._calcArc(Math.PI / 8), _calcArcTo:function (path, last, rx, ry, xRotg, large, cw, x, y) { var m = dojo.gfx.matrix; var xRot = -dojo.math.degToRad(xRotg); var rx2 = rx * rx; var ry2 = ry * ry; var pa = m.multiplyPoint(m.rotate(-xRot), {x:(last.x - x) / 2, y:(last.y - y) / 2}); var pax2 = pa.x * pa.x; var pay2 = pa.y * pa.y; var c1 = Math.sqrt((rx2 * ry2 - rx2 * pay2 - ry2 * pax2) / (rx2 * pay2 + ry2 * pax2)); var ca = {x:c1 * rx * pa.y / ry, y:-c1 * ry * pa.x / rx}; if (large == cw) { ca = {x:-ca.x, y:-ca.y}; } var c = m.multiplyPoint([m.translate((last.x + x) / 2, (last.y + y) / 2), m.rotate(xRot)], ca); var startAngle = Math.atan2(c.y - last.y, last.x - c.x) - xRot; var endAngle = Math.atan2(c.y - y, x - c.x) - xRot; var theta = cw ? startAngle - endAngle : endAngle - startAngle; if (theta < 0) { theta += this._2PI; } else { if (theta > this._2PI) { theta = this._2PI; } } var elliptic_transform = m.normalize([m.translate(c.x, c.y), m.rotate(xRot), m.scale(rx, ry)]); var alpha = this._PI4 / 2; var curve = this._curvePI4; var step = cw ? -alpha : alpha; for (var angle = theta; angle > 0; angle -= this._PI4) { if (angle < this._PI4) { alpha = angle / 2; curve = dojo.gfx.path._calcArc(alpha); step = cw ? -alpha : alpha; } var c1, c2, e; var M = m.normalize([elliptic_transform, m.rotate(startAngle + step)]); if (cw) { c1 = m.multiplyPoint(M, curve.c2); c2 = m.multiplyPoint(M, curve.c1); e = m.multiplyPoint(M, curve.s); } else { c1 = m.multiplyPoint(M, curve.c1); c2 = m.multiplyPoint(M, curve.c2); e = m.multiplyPoint(M, curve.e); } path.push(" c"); this._addArgs(path, [c1.x, c1.y, c2.x, c2.y, e.x, e.y]); startAngle += 2 * step; } }, _arcTo:function (segment, last) { var p = []; var n = segment.args; var l = n.length; var relative = segment.action == "a"; for (var i = 0; i < l; i += 7) { var x1 = n[i + 5]; var y1 = n[i + 6]; if (relative) { x1 += last.x; y1 += last.y; } this._calcArcTo(p, last, n[i], n[i + 1], n[i + 2], n[i + 3] ? 1 : 0, n[i + 4] ? 1 : 0, x1, y1); last = {x:x1, y:y1}; } this.lastControl = {}; return p; }, _closePath:function () { this.lastControl = {}; return ["x"]; }}); dojo.gfx.Path.nodeType = "shape"; dojo.gfx._creators = {createPath:function (path) { return this.createObject(dojo.gfx.Path, path, true); }, createRect:function (rect) { return this.createObject(dojo.gfx.Rect, rect); }, createCircle:function (circle) { return this.createObject(dojo.gfx.Circle, circle); }, createEllipse:function (ellipse) { return this.createObject(dojo.gfx.Ellipse, ellipse); }, createLine:function (line) { return this.createObject(dojo.gfx.Line, line, true); }, createPolyline:function (points) { return this.createObject(dojo.gfx.Polyline, points, true); }, createImage:function (image) { if (!this.rawNode) { return null; } var shape = new dojo.gfx.Image(); var node = document.createElement("div"); node.style.position = "relative"; node.style.width = this.rawNode.style.width; node.style.height = this.rawNode.style.height; node.style.filter = "progid:DXImageTransform.Microsoft.Matrix(M11=1, M12=0, M21=0, M22=1, Dx=0, Dy=0)"; var img = document.createElement("img"); node.appendChild(img); shape.setRawNode(node); this.rawNode.appendChild(node); shape.setShape(image); this.add(shape); return shape; }, createGroup:function () { return this.createObject(dojo.gfx.Group, null, true); }, createObject:function (shapeType, rawShape, overrideSize) { if (!this.rawNode) { return null; } var shape = new shapeType(); var node = document.createElement("v:" + shapeType.nodeType); shape.setRawNode(node); this.rawNode.appendChild(node); if (overrideSize) { this._overrideSize(node); } shape.setShape(rawShape); this.add(shape); return shape; }, _overrideSize:function (node) { node.style.width = this.rawNode.style.width; node.style.height = this.rawNode.style.height; node.coordsize = parseFloat(node.style.width) + " " + parseFloat(node.style.height); }}; dojo.lang.extend(dojo.gfx.Group, dojo.gfx._creators); dojo.lang.extend(dojo.gfx.Surface, dojo.gfx._creators); delete dojo.gfx._creators; dojo.gfx.attachNode = function (node) { if (!node) { return null; } var s = null; switch (node.tagName.toLowerCase()) { case dojo.gfx.Rect.nodeType: s = new dojo.gfx.Rect(); break; case dojo.gfx.Ellipse.nodeType: s = (node.style.width == node.style.height) ? new dojo.gfx.Circle() : new dojo.gfx.Ellipse(); break; case dojo.gfx.Path.nodeType: switch (node.getAttribute("dojoGfxType")) { case "line": s = new dojo.gfx.Line(); break; case "polyline": s = new dojo.gfx.Polyline(); break; case "path": s = new dojo.gfx.Path(); break; } break; case dojo.gfx.Image.nodeType: s = new dojo.gfx.Image(); break; default: dojo.debug("FATAL ERROR! tagName = " + node.tagName); } s.attach(node); return s; }; dojo.lang.extend(dojo.gfx.Surface, {setDimensions:function (width, height) { if (!this.rawNode) { return this; } this.rawNode.style.width = width; this.rawNode.style.height = height; this.rawNode.coordsize = width + " " + height; return this; }, getDimensions:function () { return this.rawNode ? {width:this.rawNode.style.width, height:this.rawNode.style.height} : null; }, add:function (shape) { var oldParent = shape.getParent(); if (this != oldParent) { this.rawNode.appendChild(shape.rawNode); if (oldParent) { oldParent.remove(shape, true); } shape._setParent(this, null); } return this; }, remove:function (shape, silently) { if (this == shape.getParent()) { if (this.rawNode == shape.rawNode.parentNode) { this.rawNode.removeChild(shape.rawNode); } shape._setParent(null, null); } return this; }}); dojo.gfx.createSurface = function (parentNode, width, height) { var s = new dojo.gfx.Surface(); s.rawNode = document.createElement("v:group"); s.rawNode.style.width = width ? width : "100%"; s.rawNode.style.height = height ? height : "100%"; s.rawNode.coordsize = (width && height) ? (parseFloat(width) + " " + parseFloat(height)) : "100% 100%"; s.rawNode.coordorigin = "0 0"; dojo.byId(parentNode).appendChild(s.rawNode); return s; }; dojo.gfx.attachSurface = function (node) { var s = new dojo.gfx.Surface(); s.rawNode = node; return s; };

__CPAN_FILE__ src/gfx/matrix.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.gfx.matrix"], ["require", "dojo.lang.common"], ["require", "dojo.math.*"]], definePackage:function (dojo) { dojo.provide("dojo.gfx.matrix"); dojo.require("dojo.lang.common"); dojo.require("dojo.math.*"); dojo.gfx.matrix.Matrix2D = function (arg) { if (arg) { if (arg instanceof Array) { if (arg.length > 0) { var m = dojo.gfx.matrix.normalize(arg[0]); for (var i = 1; i < arg.length; ++i) { var l = m; var r = dojo.gfx.matrix.normalize(arg[i]); m = new dojo.gfx.matrix.Matrix2D(); m.xx = l.xx * r.xx + l.xy * r.yx; m.xy = l.xx * r.xy + l.xy * r.yy; m.yx = l.yx * r.xx + l.yy * r.yx; m.yy = l.yx * r.xy + l.yy * r.yy; m.dx = l.xx * r.dx + l.xy * r.dy + l.dx; m.dy = l.yx * r.dx + l.yy * r.dy + l.dy; } dojo.mixin(this, m); } } else { dojo.mixin(this, arg); } } }; dojo.extend(dojo.gfx.matrix.Matrix2D, {xx:1, xy:0, yx:0, yy:1, dx:0, dy:0}); dojo.mixin(dojo.gfx.matrix, {identity:new dojo.gfx.matrix.Matrix2D(), flipX:new dojo.gfx.matrix.Matrix2D({xx:-1}), flipY:new dojo.gfx.matrix.Matrix2D({yy:-1}), flipXY:new dojo.gfx.matrix.Matrix2D({xx:-1, yy:-1}), translate:function (a, b) { if (arguments.length > 1) { return new dojo.gfx.matrix.Matrix2D({dx:a, dy:b}); } return new dojo.gfx.matrix.Matrix2D({dx:a.x, dy:a.y}); }, scale:function (a, b) { if (arguments.length > 1) { return new dojo.gfx.matrix.Matrix2D({xx:a, yy:b}); } if (typeof a == "number") { return new dojo.gfx.matrix.Matrix2D({xx:a, yy:a}); } return new dojo.gfx.matrix.Matrix2D({xx:a.x, yy:a.y}); }, rotate:function (angle) { var c = Math.cos(angle); var s = Math.sin(angle); return new dojo.gfx.matrix.Matrix2D({xx:c, xy:s, yx:-s, yy:c}); }, rotateg:function (degree) { return dojo.gfx.matrix.rotate(dojo.math.degToRad(degree)); }, skewX:function (angle) { return new dojo.gfx.matrix.Matrix2D({xy:Math.tan(angle)}); }, skewXg:function (degree) { return dojo.gfx.matrix.skewX(dojo.math.degToRad(degree)); }, skewY:function (angle) { return new dojo.gfx.matrix.Matrix2D({yx:-Math.tan(angle)}); }, skewYg:function (degree) { return dojo.gfx.matrix.skewY(dojo.math.degToRad(degree)); }, normalize:function (matrix) { return (matrix instanceof dojo.gfx.matrix.Matrix2D) ? matrix : new dojo.gfx.matrix.Matrix2D(matrix); }, clone:function (matrix) { var obj = new dojo.gfx.matrix.Matrix2D(); for (var i in matrix) { if (typeof (matrix[i]) == "number" && typeof (obj[i]) == "number" && obj[i] != matrix[i]) { obj[i] = matrix[i]; } } return obj; }, invert:function (matrix) { var m = dojo.gfx.matrix.normalize(matrix); var D = m.xx * m.yy - m.xy * m.yx; var M = new dojo.gfx.matrix.Matrix2D({xx:m.yy / D, xy:-m.xy / D, yx:-m.yx / D, yy:m.xx / D, dx:(m.yx * m.dy - m.yy * m.dx) / D, dy:(m.xy * m.dx - m.xx * m.dy) / D}); return M; }, _multiplyPoint:function (m, x, y) { return {x:m.xx * x + m.xy * y + m.dx, y:m.yx * x + m.yy * y + m.dy}; }, multiplyPoint:function (matrix, a, b) { var m = dojo.gfx.matrix.normalize(matrix); if (typeof a == "number" && typeof b == "number") { return dojo.gfx.matrix._multiplyPoint(m, a, b); } return dojo.gfx.matrix._multiplyPoint(m, a.x, a.y); }, multiply:function (matrix) { var m = dojo.gfx.matrix.normalize(matrix); for (var i = 1; i < arguments.length; ++i) { var l = m; var r = dojo.gfx.matrix.normalize(arguments[i]); m = new dojo.gfx.matrix.Matrix2D(); m.xx = l.xx * r.xx + l.xy * r.yx; m.xy = l.xx * r.xy + l.xy * r.yy; m.yx = l.yx * r.xx + l.yy * r.yx; m.yy = l.yx * r.xy + l.yy * r.yy; m.dx = l.xx * r.dx + l.xy * r.dy + l.dx; m.dy = l.yx * r.dx + l.yy * r.dy + l.dy; } return m; }, _sandwich:function (m, x, y) { return dojo.gfx.matrix.multiply(dojo.gfx.matrix.translate(x, y), m, dojo.gfx.matrix.translate(-x, -y)); }, scaleAt:function (a, b, c, d) { switch (arguments.length) { case 4: return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.scale(a, b), c, d); case 3: if (typeof c == "number") { return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.scale(a), b, c); } return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.scale(a, b), c.x, c.y); } return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.scale(a), b.x, b.y); }, rotateAt:function (angle, a, b) { if (arguments.length > 2) { return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.rotate(angle), a, b); } return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.rotate(angle), a.x, a.y); }, rotategAt:function (degree, a, b) { if (arguments.length > 2) { return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.rotateg(degree), a, b); } return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.rotateg(degree), a.x, a.y); }, skewXAt:function (angle, a, b) { if (arguments.length > 2) { return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.skewX(angle), a, b); } return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.skewX(angle), a.x, a.y); }, skewXgAt:function (degree, a, b) { if (arguments.length > 2) { return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.skewXg(degree), a, b); } return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.skewXg(degree), a.x, a.y); }, skewYAt:function (angle, a, b) { if (arguments.length > 2) { return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.skewY(angle), a, b); } return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.skewY(angle), a.x, a.y); }, skewYgAt:function (degree, a, b) { if (arguments.length > 2) { return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.skewYg(degree), a, b); } return dojo.gfx.matrix._sandwich(dojo.gfx.matrix.skewYg(degree), a.x, a.y); }}); }});

__CPAN_FILE__ src/gfx/__package__.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["kwCompoundRequire", {common:["dojo.gfx.color", "dojo.gfx.matrix", "dojo.gfx.common"]}], ["requireIf", dojo.render.svg.capable, "dojo.gfx.svg"], ["requireIf", dojo.render.vml.capable, "dojo.gfx.vml"], ["provide", "dojo.gfx.*"]], definePackage:function (dojo) { dojo.kwCompoundRequire({common:["dojo.gfx.color", "dojo.gfx.matrix", "dojo.gfx.common"]}); dojo.requireIf(dojo.render.svg.capable, "dojo.gfx.svg"); dojo.requireIf(dojo.render.vml.capable, "dojo.gfx.vml"); dojo.provide("dojo.gfx.*"); }});

__CPAN_FILE__ src/gfx/common.xd.js /* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/







dojo.hostenv.packageLoaded({depends:[["provide", "dojo.gfx.common"], ["require", "dojo.gfx.color"], ["require", "dojo.lang.declare"], ["require", "dojo.lang.extras"], ["require", "dojo.dom"]], definePackage:function (dojo) { dojo.provide("dojo.gfx.common"); dojo.require("dojo.gfx.color"); dojo.require("dojo.lang.declare"); dojo.require("dojo.lang.extras"); dojo.require("dojo.dom"); dojo.lang.mixin(dojo.gfx, {defaultPath:{type:"path", path:""}, defaultPolyline:{type:"polyline", points:[]}, defaultRect:{type:"rect", x:0, y:0, width:100, height:100, r:0}, defaultEllipse:{type:"ellipse", cx:0, cy:0, rx:200, ry:100}, defaultCircle:{type:"circle", cx:0, cy:0, r:100}, defaultLine:{type:"line", x1:0, y1:0, x2:100, y2:100}, defaultImage:{type:"image", width:0, height:0, src:""}, defaultStroke:{color:"black", width:1, cap:"butt", join:4}, defaultLinearGradient:{type:"linear", x1:0, y1:0, x2:100, y2:100, colors:[{offset:0, color:"black"}, {offset:1, color:"white"}]}, defaultRadialGradient:{type:"radial", cx:0, cy:0, r:100, colors:[{offset:0, color:"black"}, {offset:1, color:"white"}]}, defaultPattern:{type:"pattern", x:0, y:0, width:0, height:0, src:""}, normalizeColor:function (color) { return (color instanceof dojo.gfx.color.Color) ? color : new dojo.gfx.color.Color(color); }, normalizeParameters:function (existed, update) { if (update) { var empty = {}; for (var x in existed) { if (x in update && !(x in empty)) { existed[x] = update[x]; } } } return existed; }, makeParameters:function (defaults, update) { if (!update) { return dojo.lang.shallowCopy(defaul