From 2a1f6c8923413fb8a874cf199d24d689b07d5fdd Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Thu, 10 Jul 2008 23:57:46 +0000 Subject: [PATCH] add the rest of Clutch to m0k.org's svn --- web/images/buttons/info_activity.png | Bin 0 -> 1127 bytes web/images/buttons/info_general.png | Bin 0 -> 928 bytes web/images/buttons/tab_backgrounds.png | Bin 0 -> 2988 bytes web/images/buttons/toolbar_buttons.png | Bin 0 -> 23104 bytes web/images/buttons/torrent_buttons.png | Bin 0 -> 5069 bytes web/images/favicon.ico | Bin 0 -> 1406 bytes web/images/graphics/browser_firefox.gif | Bin 0 -> 1121 bytes web/images/graphics/browser_opera.gif | Bin 0 -> 1082 bytes web/images/graphics/browser_safari.gif | Bin 0 -> 1175 bytes web/images/graphics/chrome.png | Bin 0 -> 6574 bytes web/images/graphics/filter_bar.png | Bin 0 -> 4536 bytes web/images/graphics/iphone_chrome.png | Bin 0 -> 693 bytes web/images/graphics/logo.png | Bin 0 -> 9604 bytes web/images/graphics/transfer_arrows.png | Bin 0 -> 3184 bytes web/images/progress/progress.png | Bin 0 -> 2914 bytes web/images/webclip-icon.png | Bin 0 -> 29377 bytes web/javascript/common.js | 367 ++ web/javascript/dialog.js | 147 + web/javascript/jquery/jquery-1.2.6.js | 3549 +++++++++++++++++ .../jquery/jquery-dimensions-1.2.0.js | 119 + .../jquery/jquery-dimensions.min.js | 6 + .../jquery/jquery.contextmenu.min.js | 7 + .../jquery/jquery.contextmenu.r2.js | 144 + web/javascript/jquery/jquery.form-2.12.js | 601 +++ web/javascript/jquery/jquery.form.min.js | 59 + web/javascript/jquery/jquery.min.js | 376 ++ web/javascript/jquery/jquery.transmenu.js | 364 ++ web/javascript/jquery/jquery.transmenu.min.js | 30 + web/javascript/jquery/json.js | 96 + web/javascript/jquery/json.min.js | 13 + web/javascript/menu.js | 45 + web/javascript/torrent.js | 579 +++ web/javascript/transmission.js | 1281 ++++++ web/javascript/transmission.remote.js | 135 + web/stylesheets/common.css | 1027 +++++ web/stylesheets/iphone.css | 736 ++++ 36 files changed, 9681 insertions(+) create mode 100644 web/images/buttons/info_activity.png create mode 100644 web/images/buttons/info_general.png create mode 100644 web/images/buttons/tab_backgrounds.png create mode 100644 web/images/buttons/toolbar_buttons.png create mode 100644 web/images/buttons/torrent_buttons.png create mode 100644 web/images/favicon.ico create mode 100644 web/images/graphics/browser_firefox.gif create mode 100644 web/images/graphics/browser_opera.gif create mode 100644 web/images/graphics/browser_safari.gif create mode 100644 web/images/graphics/chrome.png create mode 100644 web/images/graphics/filter_bar.png create mode 100644 web/images/graphics/iphone_chrome.png create mode 100644 web/images/graphics/logo.png create mode 100644 web/images/graphics/transfer_arrows.png create mode 100644 web/images/progress/progress.png create mode 100644 web/images/webclip-icon.png create mode 100644 web/javascript/common.js create mode 100644 web/javascript/dialog.js create mode 100644 web/javascript/jquery/jquery-1.2.6.js create mode 100644 web/javascript/jquery/jquery-dimensions-1.2.0.js create mode 100644 web/javascript/jquery/jquery-dimensions.min.js create mode 100644 web/javascript/jquery/jquery.contextmenu.min.js create mode 100644 web/javascript/jquery/jquery.contextmenu.r2.js create mode 100644 web/javascript/jquery/jquery.form-2.12.js create mode 100644 web/javascript/jquery/jquery.form.min.js create mode 100644 web/javascript/jquery/jquery.min.js create mode 100644 web/javascript/jquery/jquery.transmenu.js create mode 100644 web/javascript/jquery/jquery.transmenu.min.js create mode 100644 web/javascript/jquery/json.js create mode 100644 web/javascript/jquery/json.min.js create mode 100644 web/javascript/menu.js create mode 100644 web/javascript/torrent.js create mode 100644 web/javascript/transmission.js create mode 100644 web/javascript/transmission.remote.js create mode 100644 web/stylesheets/common.css create mode 100644 web/stylesheets/iphone.css diff --git a/web/images/buttons/info_activity.png b/web/images/buttons/info_activity.png new file mode 100644 index 0000000000000000000000000000000000000000..99bec1e66360dc0db34d2a2a1146e7401eed43c5 GIT binary patch literal 1127 zcmV-t1ep7YP)D&dGP0 zrim@HP1BF9AC_#Et}s@lXoXEShwN%pr-HHz@4Ofy2zo1s9~Yw3i&3;?g*jS>Y*3u6 zblO?FHk!7xU7IXT^PQX|=j5Cm&xW@x&HUfKf1cm_@;=XN&@>GPeQyrGcczdnoi#fJ zKW$_)?NL4^5dz4>KG0J9d0@Q{GlfA&qt0OW{>m-xW?v2(1b%KnMN!U zMSOFod~HUf?x1105wgxALhEC(~OYL~v-lL5iN`*L-ssTi!!Lkgx z23yh6#Q`}^$Va4!Q~uGTKdz7czLzf94_YVMXWe`^$|et%m*V*K+C%&kN+TJqKo)^w zUPgSoh`MKJTpN#pbF}05;EUk0{Oo?ZdqUssd;hG%(aFTK7HmBzU}v?AU#?{E_pFH9 z6Dj1A6|_8OMkcS|lM8E@`yqwUQVLSp3a>T5oa=b&)!HXjZ6iW!JKNglMl~ygrWt&; z(1Xq)8$7KX%6Wo6ZsoDLBBIVqqm)&!c1JhXrU9(e#|pIlh1#L4<(Q_}@o)(+nh2V^ zO!(=$1a{WTDCK~SWqr3|1$`$R$i_-wbYqor8VW@Ytjz;~t{hXJt?+@Ax|5j@GNSRjan2^zdS+zmX|mXesiwW40R`})*V9S4O{ zgOZYvXrjUHqM_(V$JwD5Y{2q8Af#VeV%0#K88~c4(3}LBB&2GU3O?0wxOCzh;mgU< zP;4W5Il2?l3RM*eJu0*l7(AuJn}F3vfTlOXI)L4H73<4kZDVEY@&{j?4qZC_tx)q$ z2}Qf!IXc!scx^_JmMrn??uUZ+S>%cW+S)8&%oRv#3F)*9t)yZ5{wmVZ#7FU{IP=ET z*Fj6Y@v(cwnxK?{iD;IJpeU*@63*OAZWk7sy2LZd7}FD4q1^%trj8+%JkfR|4>Es7 tmJ?HYl+uimc+K@}R1Z#MFYSK?7y!2fv7xKky(0hs002ovPDHLkV1k`x7*_xQ literal 0 HcmV?d00001 diff --git a/web/images/buttons/info_general.png b/web/images/buttons/info_general.png new file mode 100644 index 0000000000000000000000000000000000000000..7c33c4cbedd35f3ca9aba395577941d135a3c743 GIT binary patch literal 928 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 ifOWbNdB2?7oxA|WPf`}>dc0Bq0000g1eY&T+ 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 literal 0 HcmV?d00001 diff --git a/web/images/graphics/browser_firefox.gif b/web/images/graphics/browser_firefox.gif new file mode 100644 index 0000000000000000000000000000000000000000..2c5286864732e6f33ee949161679506fd69d9d7b GIT binary patch literal 1121 zcmV-n1fKgxNk%w1VI2S<0OkMy`p^S=%I=YMNR-m;o>3=HlF9U|0n<$fW{;l!{0RQ~ zY61Z$PZbbq!0F+78Fp)HRHM}2bQZF*vdlLJu#+4wda=HrgRA-frj>9-aj~=w1^?F} z=7SdOcpCWl`2Y4w|Mn~Xi5J+|*qfipYqZ<*v`sc(s5e-6?O6x-mj(Q`AL;4o%$PbK zn%bzGi~hwznu2uMYy{zoMgl9CC2PI9CGwWynWRyh(#gW`fFDpr^qTDJfPNce07-(LsPsdH;oQ3`6ae0qQP*mF@jU5gC^ z(o`e*o;UB7E8T4ni!CKJXpYj+&;lh^`I!@wr>m8ai7zvE|Bnj<4RS<*!0?PB`)>eK zW|3ZdwwA)Y#dJjHjUBOUA^8LV00000EC2ui z0384z000O7fPaF6goTEOh>41ejE#mmBVrknVk0_^gk~8P5Dga>0SypKL?e!QVoMDJ ztZ=TZV+eIjmxpmle`ZB30ikvz1Fiui2wD_p6hMa-FIqE8Ee%;EJZ!AP5CsA(8z39X zg=Bs*OiWoATsc*%1qBTa0abkzAPO6AdxQjjQT;z)VCwJ^MIuxH2saim0FVGc8+{>c z*oY9r1`;X-NI)P#f(;uI4ZIMUu>$~r7ghvW=`dwtga{5IXwZOyj2Dj(DtLjAjYygl zAHccs;~?hC2vZ2ii4ufUg#tuwcq!lo!5SfXQcAoC!nPfeD>njrDY6BC0tEmpSU>^uB?kv;(y+il!;57vYOesE zLBy~E0~lN!uo07knkO0<+&Gb;bq36uuPo>@$3TJ&DqO%g@EGQkCli7cDPm&y@V`cq z!`P6b;S1dpiaMB5qsD{|Fie;T1A|8vBFPsR(el9n01!=p=+Q9cv4aB>4j|$3WylvU zTwe59z~2al&ju*KLrPSjP{t51p@0GsH5>rO5lAq=Uw=-VkpLDipdo+Zu zgh_z}g=nDx9va91#RN{a#K9N!Ie-Kb3?*Q|9UK<&Kn*=;0EGrMKmmmsNKK)s4;Ct_ zL>!3R@kFFE&1BsK@x_pXd1>q*LLwe8fm#o=mTKJrN8m@m9Vsm$ff5YN+5;YV#7967 nN@THuBOd6%gc3VM8|@uTNU$s>f_Sik6*zP&!U~Nd5(of0_>j+6 literal 0 HcmV?d00001 diff --git a/web/images/graphics/browser_opera.gif b/web/images/graphics/browser_opera.gif new file mode 100644 index 0000000000000000000000000000000000000000..f05693e0c2812bb19ec511a65cd6891c6ac80555 GIT binary patch literal 1082 zcmV-A1jYMDNk%w1VITk?0OkMyva`zj`ufkXv7DW^{O0G98XW)E+WdHW_{GPiCn=;G z9h)K~Z3PCati!9c#N1R?*4N_xtF3laRcB{N~AbCj1?B>nwrqe%)A6^j> zq@=g+@AB79P{DV1%q}m%JwNyN`261A|88;r&(fcXqv+`9d=C+u4-TLb6aVh)gp#R_ zjjsQVknPFJ&cDO2YHQ3+Q0ZM@?t+BcU0}kEj-Rc>|M>WRfq|~2y6y1x*4O#xPf*|A z-SJFM@=#OgySuP3GUw^+o1n4i=H_NcO{B5QqJoOBkCFeMq5uE?A^8LV00000EC2ui z03ZM$000O7fPaF6goTEOh>41ejE#EV#2^tG5FHby9COkL@k2f?#9d;TXZJKv_JPR}?BD{?=bPpXAG8lw63<^#KCRAUH zeRK!X4>J{o5?xN)CMT+iTS^fJ98zZWL4rj_3lEaT38bv@1 zT)EOij0H7@qC8R14_6KXh_)CR;RnGL0w;DHVxnywjVg5z**Jp*OAtRO1ssy#W!*X- zH4wFs5$Ayg4oEbF*y&|~(*+8QAljj!N|g>B;!s&?=!Jp=3lbzykcLx~HzX8Lu)~%@ z5;FP!2)z&?wyqRGR+bC_aHNS2FLgg9aZ}>LhA4w1XjseEj+s9YGNc%g0l*RxJisn+ zqJWBu2><~6fPff7oDNngP{^?&#sCl?8vOWRBiXusM6~QVasPFb%-gKn6pUz(N=7abpHAk41#Rn8gn23;J_1Ju*Zc62MhuS6cZF-2NHf55I_(p46;F& z80BR*!3!pEL_+~|d?Sb)erbRO5E0nh{sJaEJX6`?>@3@~7V4@&6ARlc7c*^bc1BQ-)(DXA&A>pRZqXQt7vO;H#s?i zesxk(Q(|FXC0wUlxZ+ry=a)ev<@EdU?Ce~b!>{H0lBCc8GnbFP+-5X0L4UkQTX7qh z;b@M$aBy%wkl1L9t$>iTk9~=xue3}~PP4PMQ%^|Q*x3F3{r~^}A^8LV00000EC2ui z0384z000O7fPaF6goTEOe}0OKiz5UrF(ZtVl$CyedmJMG5`~tZg8(fYk1;WwgP)9o zAu%n6ODzPbs+X98H~=VHNl9BE1UP*hf}kTYe<5^TDPsa(UrA$pB3DLNot4Q(e?xp* z2n7irY~>w8VO@G0Abp9e$A2IxLj@fkB_&J|Ohk8g0K(`&At1y%MSlSNp|gd9i4#oN zL@2SLz=sbJh*05hWuSm!mtuq%(vZOk4<|a@W23Ubi4S-fo4n9RXVgwHSf|NP-zehTga_15F7AEACKG!sCUB1YX1d6NCT( zusJjT=2WOaVg{T)I96b>ai-231`JFP0Cz+#~jSUJ|U_>y{VFQ%}K?Hz!BH^%?0&vKXaj|0x5*Ky? z*f_981C0SYguj5`t3@9W2)w*-!I+GSKNzh1d9o!#nFSe~ICw>f)o#|@kb2{T=2sMRyd)C1ssTxgdiLtU_k;*g7=%zlVt_%64l4Yhz@-Yv@#+sMEb#{dq=L4}LLz`s*p~*-pvABT7?8#v zOVB~;M+cos2N(yWfXpE}a3I0~U_{mIB1A%afF2-_62l%>(4j}2A`r9fuDy8+h6p0) p0k0kdxwGyhgGg}281jlBMhXH9Veh@#3^IZQMo2IMA(jLJ06RX>1$+Pi literal 0 HcmV?d00001 diff --git a/web/images/graphics/chrome.png b/web/images/graphics/chrome.png new file mode 100644 index 0000000000000000000000000000000000000000..4163306357b73c81a0b843aa620190933f38bef6 GIT binary patch literal 6574 zcmZWscT`hBv%iT^LJ>lcA|f3NAR;2YhR};hQKU#fKzfxf5Rev%i1glD=q+>*4Tw}} z0-=L|G^O|Q#rMv4-XCwznY(v(X4~w{Z+9@78j9D+7|8$txUQ^()FRe0M9P7JiQn4E zs5}55ledzS(^Qs|W7Twau&}Z<2LO-MH0?J!+N*SuhckN!)lhV-s)H6SlvN86j@Gft zhJOOG0vX^k8=-}tL$lcfXm8$d`aDSev64M3NVf72 zyyZajP1@g7A1OcqRe?+n!h+0HXm>&Z76~Cf=DY4!$aGl!ub^cTACP1AqQJo1>GswJ zQF;W1%=Ot3mux={37!`@^V6j7{zV3GQULkk_z47%3j+k4X$7tV0%X8O?%O0Vzy$yX z%(v*N(AFS8-2BtiD}dV&=OGxt-P7g<%j5tuce-z2fFG2AUP8`|aG(MO-0O}GbpchR z0H{w{y|Do5FMv+FPiJ-o#sHwQVdUB%=mGHgqoVv40DTO)7ZF?TG4#TatzR1ewyMm+ zmp;YnT(xJb!QVDCYVgPu5tb{_91kQ7Tm?5kSIo`3AwwNN%;PHnTEPv8rs_Xj6cw)* z6Q2|zh`p;VyktBJ4~-1JOpq@B0s;Yn!~625)y*Z0z#j$xw;di|b34=gI{N4N!{qPG zz$gN}Tx{I;b)IM&ogl=r#hZkb6dN9Da=V}+bdvi)dE$q&JqT9U|~)v(#+eld}q7vYT>ZE;Y+4Pnh}bs_y)KYS%1%`FitY%_!|jI zmoXT>>J6&IW*Y!C>U-?~VW8R6eQhIwkG0}Anrj0L{BoZSC>n%a10G#_ALC91@E@mK z-nP66WKMj#!33b`se{Plc2d7HfB-a9Q1hyg<$EcH_gBZ!9Q9~%4}X^4V9n3~5j_B* z6r}c1j*mA;R};cjL5)MuZUpNWhA4=DA2@>hzg(>ckIm6ZpkFbdSNO>sP)xEgfiFnC zP$5%vBKyx!jxX{SY`#kTaDO}-Mv07FKDJBC?1@%DEQfB_t6b(|X3-C+@_cNPU6Q#} zHx+#4q%s-0WhM%lt%C_!h9kGGBXWKmTaqIfODTTi z|NNVQaXVwBPzgBYy%b zCoeni-B>slN&@W*r2KLn!D14-mDI(#1~0|fBc&e2Cn9>e=%{%@UGcB+yLbaUXyFzd zgJ(;MF;w!;713g}A}xxoi5WqP$*r;N$8>g?RS8WbZ^%+|k#~_fQ+tXZ!;S@y#XQkx z9}oo$noRdEVm-oQwPcDinQ~LJ4GSo=I*Y7zw6V9I#Byiz<;Op>DY6?W9s#Y1sHa(I z>}JXj4p|mk#?>egJPC3H9J=B=DFMDh3U|3^p zCU-jfTqz{;bskMwOmVg9N^^gg&VkNh(U+nQ?I^XD^6)kNRfXStgVP0*dE)s6<@A|% zhbPP2H5`x`Ie+sq^4sJuV=pQ|J*aqpJSx21>iwJgJAWeI%*A<-NLd%!Fjy7}PT7px ziP)Rj3yu|jF8uyG`cYq^O{#5kNBy+N2>vrC-mFOZ{dXU2?ENvp(YGm91*-;+U8)(X zYb_pF$SvzHzuSGcdu=y_PL2F&xIEnxI^hS(@rFHbd(z^^N;G-y7V8vS7Z?95tgWua zdlk422rdYYSq)h|8U8cQZ`*9=Y|ChSVk?Sk$6duez&+eh+gR8Xns6of;M}VQD#~m9 z<}&B`C$m0h_00<_@+fA#u3hX~?OnYXexc@&cHtbnPq7_g^!SfhWhx@|r&z7HkF%Ro zytuF!Ra0U;XXA!r!&h^cul0FT;bq7dEMv4~cMWHoM4RqUeW*WQvtLaA{UicmDNXjziJq z-T0MGgHG|q@Z)Pobf<2oR!4pN#XH^`4!<%MX6K|C=WbMR&Z)6J;=kvpJ$Jj6*|@8G zC92;osm0b!5yo*(ppg5wa)oY%MEwKE^`zTXqQB;uhDC=&A7sJ0siv7u?)6I8J{ymk z&)urnTH7k1rleNo5aW0mP0m53(2Ci?aEE*GkC~P^+k4kozeT+D*_&jTP25SG(Q6tv zuY9rac7fBWboATiT>mX4N0oaj^^&vid}q#7$=}kM@rpEPx@Mu~2a%?x zY76c7r~pmbNE9z7qlUvur;Em(MvC4Og9{DrU|w+EMpY>~d+un4DRwW%&g%?}gpE*> zKGov#OrlG~iEr9@S)N?%VImSE^3_x$#s#f0AagUQFWvg0c8Rl&CB*kf`?eYnW9a^S)r3;qZRE{p}hm-7{@3t8s^wua7<|o+R5RdqHkX9Ojej zBYK+tQ(?@_x91$!s!>pu`)Am9^mllEuz%%J0h-a$mVG#=O9?fb6MyYQMCkn}VCgFWc^ki-Vv|s{W4jrU~kqK_98# zXC34h^!=`0?&+<+owo5@b*kSUx;(5ibZQ-%S{iZPxLc6%!ByN{*x0p!;MKRUZ!plC zu01AMp3ySzz4%4_qK~I;d1|de^6+37M$-9pC=*Z4w?9I18P$mbcEf z-l0?9K)kf@zSv><#_s027yS5_Y+J?Uv2@ktwo~TT{ave$%y!iI$HgBQlgoLVfn~{C z9(>+XQd)cAClAG6=`|nCzbH3uQh2RM@~Ycd8H_Wl{+y@1-Jp(3>FPD4Yf0xD~Y>jKnCiR_^xDqt)!(60A9qW z*gyJL{(tQ(z>FdaNF9}4x&Qz<%|8MG$*BwgK)I-ll-2P_-8AsA)fvSZ+hja`{3d_% zEkXPous(*ChLS<4q(62FvN=YA^>;(ZNU~AeR8KyIcp^DjJE_ztK$w=q6?G1{-3}!3 z1vLxfUiLdns61Jnm3QfI(dOF|LXw+UT9Qlu%=&rdYO@Iep}L+X{Qd00GJjaorhN95 z&1TDigT~WsN};DG(G{9oyeShL)L=tAeWJ=WIO-?z`1*%gKUc5a~K)#LX$c?%pFZ5Fp(oUC_* z(+k^AiMTAQb>1o941|@Ime$tR4lS0qo~#Y!sd{>PJ};)Frrr*IKtoNv+Q=NK;3G8~ zM$0ooPS00j+~(UEaTAFb&A0&u_+NKMxUT&=V@B?xX&UOoH{_GL1W4IL zRt7C=+S)ERCaOC+I;-))z{tO6NSy_8~`&X~hdzRR<9~j^~ zB+_?woUPiLo2M4HZ6~Vaq4SN*xzWu;erhTp0L%ulAFr4%t(ytkEiNpCLcsY}d`69X z1sT3zG|`5Bm*AyX@-f%B3;q)|6+keGH%J$BUcV`D+g+V2bf5kMG^@N?xhp@mC@Yc0b=X=AqZ{I#X zJ|;RSCItj+5NgQ*6;;&&wWLoeDLju=2!4x^!oR#|2E!k=GSnGsYsXlctc?^A=h#?V zb8av!Z@Xw5SXoT{W?I?W+S=dWkHZPYxsr}SA=PdGa}1FTYd zh_QX2(}R|?ot{aYT{x0mSuw6xxW9pS9eLW)(n1$5-zh!lI|TP=nc1AIYuoJ?PZ6?P z+t`Thd06^=tln*tP-;-uJt**-<=s|0@w~&r!h{@VC;;!nKbvc7`Zbn=jjro}On)-8 zGjVv8A_(y{Dq48<9SxwOq7oJ!o~E%fQlx$Jb%xKu#DMhW##=F>>4CYfXpZyq^WEh> zgIeo2&UiDV?r4gAV^K~H2VMC0rO*yjqEsrQyrtzF%l=$@$BVWcVQtRES4}lTx~art3U7T z>};r;($X!0qph z&(>T!7R!yCYVj5ZN?uk6hkjrZt@1rTaTJj#bCZLIve<=X+fFy`?+!>C<7{tIw;axR z0~PO%ojb?JjQ!3(U!kh0t1}+EvtnrPly3!(CIcGFzIjqnQ0TmPak#&K{7%Yq!`

|a*Wz5n!!|K;W5(_pl&)h8z-dlRvB{7(Afhyx(*Hak0eW5ZT`_!lNPlrrS? z!NvseV`vCY8S>3kb2$pe&KMbt$SN!2D;UO*P%)qVY5L2}%}qv5ez!91;Pm|N)AZ)Q zt*3!7#VF>umX8|>MD%@ltt!-@ko@94#I1)?}nRN}B)CDp@GyIzUE7cIMm0?VVHk?uZBz>gwu5 z@aN^>xkV33>C3lD&bJau*<^$yCnpo_x7?egt)=CB9UPVoi>|p7sAONDh*VYWIoOb5byHd=he|MMp`J7C=$+#Z!b$4YTsxEs+iuKkI zir*s*NfBW#Lv#PpUS696zqp*n>99X;~@v0-CPSYqblptlp6W92&&N z3gQ&Q1y5N-99f;f{SA|w=|Xk{OZQ_DI0rwwe_x7lhNw$E5ztn(?dzKA>&I7iBkS)u z{Z*`|xyuHF27aCI?(UAfCEPhH;kq`GF6kZ6KBxUu@`(c2xsTyBA{1Zydu?sV)n|1m zFG~8tXlTE+$IVX|C_6Pu%`dk_Y3&p!2hnwr4m!*t~*XSXlV-Z0|p*Ffu1#eoZ#JS+sH2Uv;CF-_iaLXc%-)+mY z!T=x%K@%Zk7{|cGR8mrM_NEZtR(u}89c^u;M1StavMMEk4 zL3qiVe})-!Nx`f#fC75wg%wm5fW5j2c3NN5<_Zm^aRlW9F*I$aVLI2i<$^#lX2FS^ zgY{+HvXDSE7?}(xf(FjUexLOQCjGr{hH`PN;MF==OEP(S3K5vVHH3LC`^#7!K?WF@pA*7Z%uRhLW$`7` z|NIfzy2rKv&eN&CPe&+*iLT1vGZw8Y8;;Y8exv^qUF4bVVfuJQP#{k)QRZ_8>~b1LAS9~uuL0<%x6c~?bO!% zYla6dj)|_O2%#;j-Ht_fE1AEbW>Ak~l>uA871V`L6&6%JJ7dP)US824pKzCzSgErL z@gA^{Zlyq#Kn4E?3K-!3Nr#j+xOG+|@V?TDh$V_Yj6P)~nFGz}9`C55l$hO+a-mgl zHpx+`x*soROyFMG_VZ&`;fCH(x@i)Ek>+6&CPn_jt7YGNaqX?OeU99v>&s00fxBj$ zB0}C0ic-{6Qok?0%^uGWJe)p#Xue*o0}EidFXw*ZL5N}kB}q`fKlYyRV;-#moAlku zXJ`Keq|guoD%Jah0wvE8@_dh= zBsjNoTwVSZTE{bgUi}gNjV?7*fD927`9*#+y-oA+;C;%2N+wTSx{UwXZSqs_=yg)P z5AKH!Jh)8JmC}qqv-og+P=_?;h8)!BGyN8aA-K9o8j!8dV#epB4%(z5r0Xb)=2XD? z&toBX*mVY%=gbid*_QiUV(x-@oKZAd^porb1R^LhQ;JHrZws5J8Cwi z^aOKHT#N1pOF=PM*dumrf2&S*q@NLZ1Oc)x!C(D7Dli|E-{@6l+{q}9pRb_d0HprD2 z8g|M{H#0%q006?qCMWQP%?M@W9z-f8yx zDE6Ea&d({s&e|^_q-v@nF_&m9oZzSaA^5WZNE@r+9=@*mC= zwhas8F9nGyTFs?!Nllc@zl@IUqqP|^ExQRW3KqjW<<5s#`LQTn-sncMb`Z0?RU&i9 acw~(I-pU@Mwa@=AJ64w0K$am;0sjGZxQSW- literal 0 HcmV?d00001 diff --git a/web/images/graphics/filter_bar.png b/web/images/graphics/filter_bar.png new file mode 100644 index 0000000000000000000000000000000000000000..d377c8bc4432b5209ea706b7daf055cf3e2dd520 GIT binary patch literal 4536 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 WyLP3m_}Vo90000 z1%dYDEZ0jno@pZc^ ztq`Li`DBw=hpj@~wHmG?-m~-@f3yXMDM&f2dKI=xA+FK$`f6(dNyaJ4%&ZfW6(;J7 z_}WIj6VH zN8kCpP)gE-*-m#%>z(d%HPoH{roHq)*u3nt=g)msKfB(vYm4lA`}qIOQ?@Tbzy)7PS8T z|6=U=4`ON=e@~=rntbEz=`hxPH_mq#aB+%;Oz}GSXkEnLOENkFJ}(5l?02|p{rz$L z@biuxYMF1O!v6ftXX8?rNetq*WDR-7uHZOp7vGIVi!Noi`FF)yCHK9X@w2)6?3Nz( zb=hquEFbS*{nw(KcIV(xYvW#K=ILJ(7ToQz7vUAntTKA1y!uD#nIGqB(w?z0P44U# SvkR62`OnkU&t;ucLK6TKdLAtR literal 0 HcmV?d00001 diff --git a/web/images/graphics/logo.png b/web/images/graphics/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7c1cedc3008884ee5baa40e75c6b77bf2acda7df GIT binary patch literal 9604 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 literal 0 HcmV?d00001 diff --git a/web/images/graphics/transfer_arrows.png b/web/images/graphics/transfer_arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..9427cdfa26c9516e19de4fa37899bc7e88db172e GIT binary patch literal 3184 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 literal 0 HcmV?d00001 diff --git a/web/images/progress/progress.png b/web/images/progress/progress.png new file mode 100644 index 0000000000000000000000000000000000000000..2f1d510fc3e0fc6dd38a5eb0ddb984a3e6c48513 GIT binary patch literal 2914 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 M07*qoM6N<$g7v74x&QzG literal 0 HcmV?d00001 diff --git a/web/images/webclip-icon.png b/web/images/webclip-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..30d6ba7994cd4b3972a4b71679c3cfb0cde18752 GIT binary patch literal 29377 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�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 minimumField) return true; + if (versionField < minimumField) return false; + } + return true; +}; + +$(document).ready( function() { + // Initialise a torrent controller to handle events + + // Initialise the dialog controller + dialog = new Dialog(); + + // Initialise the main Transmission controller + transmission = new Transmission(); + + if ($.browser.safari) { + + // Fix div height problem - causes scrollbar flash in + // firefox so have to be safari-specific + $('#torrent_inspector').css('height', '100%'); + + // Set Filter input to type search (nicely styled input field) + $('#torrent_search')[0].type = 'search'; + $('#torrent_search')[0].placeholder = 'Filter'; + $('#torrent_search').css('margin-top', 3); + } + if (!Safari3 && !iPhone) { + // Fix for non-Safari-3 browsers: dark borders to replace shadows. + // Opera messes up the menu if we use a border on .trans_menu + // div.outerbox so use ul instead + $('.trans_menu ul, div#jqContextMenu, div.dialog_container div.dialog_window').css('border', '1px solid #777'); + // and this kills the border we used to have + $('.trans_menu div.outerbox').css('border', 'none'); + } else if (!iPhone) { + // Used for Safari 3.1 CSS animation. Degrades gracefully (so Safari 3 + // test is good enough) but we delay our hide/unhide to wait for the + // scrolling - no point making other browsers wait. + $('div#upload_container div.dialog_window').css('top', '-205px'); + $('div#prefs_container div.dialog_window').css('top', '-425px'); + $('div#dialog_container div.dialog_window').css('top', '-425px'); + $('div.dialog_container div.dialog_window').css('-webkit-transition', 'top 0.3s'); + // -webkit-appearance makes some links into buttons, but needs + // different padding. + $('div.dialog_container div.dialog_window a').css('padding', '2px 10px 3px'); + } + if ($.browser.mozilla) { + $('div#prefs_container div.preference input').css('height', 'auto'); + $('div#prefs_container div.preference input').css('padding', '1px'); + $('div#prefs_container div.preference input').css('margin-top', '2px'); + } +}); + +/* + * Return a copy of the array + * + * @returns array + */ +Array.prototype.clone = function () { + return this.concat(); +}; + +/** + * "innerHTML = html" is pretty slow in FF. Happily a lot of our innerHTML + * changes are triggered by periodic refreshes on torrents whose state hasn't + * changed sine the last update, so even this simple test helps a lot. + */ +function setInnerHTML( e, html ) +{ + if( e.innerHTML != html ) + e.innerHTML = html; +}; + +/* + * Converts file & folder byte size values to more + * readable values (bytes, KB, MB, GB or TB). + * + * @param integer bytes + * @returns string + */ +Math.formatBytes = function(bytes) { + var size; + var unit; + + // Terabytes (TB). + if ( bytes >= 1099511627776 ) { + size = bytes / 1099511627776; + unit = ' TB'; + + // Gigabytes (GB). + } else if ( bytes >= 1073741824 ) { + size = bytes / 1073741824; + unit = ' GB'; + + // Megabytes (MB). + } else if ( bytes >= 1048576 ) { + size = bytes / 1048576; + unit = ' MB'; + + // Kilobytes (KB). + } else if ( bytes >= 1024 ) { + size = bytes / 1024; + unit = ' KB'; + + // The file is less than one KB + } else { + size = bytes; + unit = ' bytes'; + } + + // Single-digit numbers have greater precision + var precision = 1; + if (size < 10) { + precision = 2; + } + size = Math.roundWithPrecision(size, precision); + + // Add the decimal if this is an integer + if ((size % 1) == 0 && unit != ' bytes') { + size = size + '.0'; + } + + return size + unit; +}; + + +/* + * Converts seconds to more readable units (hours, minutes etc). + * + * @param integer seconds + * @returns string + */ +Math.formatSeconds = function(seconds) +{ + var result; + var days = Math.floor(seconds / 86400); + var hours = Math.floor((seconds % 86400) / 3600); + var minutes = Math.floor((seconds % 3600) / 60); + var seconds = Math.floor((seconds % 3600) % 60); + + if (days > 0 && hours == 0) + result = days + ' days'; + else if (days > 0 && hours > 0) + result = days + ' days ' + hours + ' hr'; + else if (hours > 0 && minutes == 0) + result = hours + ' hr'; + else if (hours > 0 && minutes > 0) + result = hours + ' hr ' + minutes + ' min'; + else if (minutes > 0 && seconds == 0) + result = minutes + ' min'; + else if (minutes > 0 && seconds > 0) + result = minutes + ' min ' + seconds + ' seconds'; + else + result = seconds + ' seconds'; + + return result; +}; + + +/* + * Converts a unix timestamp to a human readable value + * + * @param integer seconds + * @returns string + */ +Math.formatTimestamp = function(seconds) { + var myDate = new Date(seconds*1000); + return myDate.toGMTString(); +}; + +/* + * Round a float to a specified number of decimal + * places, stripping trailing zeroes + * + * @param float floatnum + * @param integer precision + * @returns float + */ +Math.roundWithPrecision = function(floatnum, precision) { + return Math.round ( floatnum * Math.pow ( 10, precision ) ) / Math.pow ( 10, precision ); +}; + + +/* + * Given a numerator and denominator, return a ratio string + */ +Math.ratio = function( numerator, denominator ) +{ + var result = Math.roundWithPrecision((numerator / denominator), 2); + + // check for special cases + if (isNaN(result)) result = 0; + if (result=="Infinity") result = "∞"; + + // Add the decimals if this is an integer + if ((result % 1) == 0) + result = result + '.00'; + + return result; +}; + +/* + * Trim whitespace from a string + */ +String.prototype.trim = function () { + return this.replace(/^\s*/, "").replace(/\s*$/, ""); +} + +/** + * @brief strcmp()-style compare useful for sorting + */ +String.prototype.compareTo = function( that ) { + // FIXME: how to fold these two comparisons together? + if( this < that ) return -1; + if( this > that ) return 1; + return 0; +} + + +/*** +**** Preferences +***/ + +function Prefs() { } +Prefs.prototype = { }; + +Prefs._AutoStart = 'auto-start-torrents'; + +Prefs._RefreshRate = 'refresh_rate'; + +Prefs._ShowFilter = 'show_filter'; + +Prefs._ShowInspector = 'show_inspector'; + +Prefs._FilterMode = 'filter'; +Prefs._FilterAll = 'all'; +Prefs._FilterSeeding = 'seeding'; +Prefs._FilterDownloading = 'downloading'; +Prefs._FilterPaused = 'paused'; + +Prefs._SortDirection = 'sort_direction'; +Prefs._SortAscending = 'ascending'; +Prefs._SortDescending = 'descending'; + +Prefs._SortMethod = 'sort_method'; +Prefs._SortByAge = 'age'; +Prefs._SortByActivity = 'activity'; +Prefs._SortByQueue = 'queue_order'; +Prefs._SortByName = 'name'; +Prefs._SortByProgress = 'percent_completed'; +Prefs._SortByState = 'state'; +Prefs._SortByTracker = 'tracker'; + + +Prefs._Defaults = +{ + 'auto-start-torrents': true, + 'filter': 'all', + 'refresh_rate' : 5, + 'show_filter': true, + 'show_inspector': false, + 'sort_direction': 'ascending', + 'sort_method': 'name' +}; + +/* + * Set a preference option + */ +Prefs.setValue = function( key, val ) +{ + if( Prefs._Defaults[key] == undefined ) + console.warn( "unrecognized preference key '%s'", key ); + + var days = 30; + var date = new Date(); + date.setTime(date.getTime()+(days*24*60*60*1000)); + document.cookie = key+"="+val+"; expires="+date.toGMTString()+"; path=/"; +}; + +/** + * Get a preference option + * + * @param key the preference's key + * @param fallback if the option isn't set, return this instead + */ +Prefs.getValue = function( key, fallback ) +{ + var val; + + if( Prefs._Defaults[key] == undefined ) + console.warn( "unrecognized preference key '%s'", key ); + + var lines = document.cookie.split( ';' ); + for( var i=0, len=lines.length; !val && i)[^>]*$|^#(\w+)$/, + +// Is it a simple selector + isSimple = /^.[^:#\[\.]*$/, + +// Will speed up references to undefined, and allows munging its name. + undefined; + +jQuery.fn = jQuery.prototype = { + init: function( selector, context ) { + // Make sure that a selection was provided + selector = selector || document; + + // Handle $(DOMElement) + if ( selector.nodeType ) { + this[0] = selector; + this.length = 1; + return this; + } + // Handle HTML strings + if ( typeof selector == "string" ) { + // Are we dealing with HTML string or an ID? + var match = quickExpr.exec( selector ); + + // Verify a match, and that no context was specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) + selector = jQuery.clean( [ match[1] ], context ); + + // HANDLE: $("#id") + else { + var elem = document.getElementById( match[3] ); + + // Make sure an element was located + if ( elem ){ + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id != match[3] ) + return jQuery().find( selector ); + + // Otherwise, we inject the element directly into the jQuery object + return jQuery( elem ); + } + selector = []; + } + + // HANDLE: $(expr, [context]) + // (which is just equivalent to: $(content).find(expr) + } else + return jQuery( context ).find( selector ); + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) + return jQuery( document )[ jQuery.fn.ready ? "ready" : "load" ]( selector ); + + return this.setArray(jQuery.makeArray(selector)); + }, + + // The current version of jQuery being used + jquery: "1.2.6", + + // The number of elements contained in the matched element set + size: function() { + return this.length; + }, + + // The number of elements contained in the matched element set + length: 0, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num == undefined ? + + // Return a 'clean' array + jQuery.makeArray( this ) : + + // Return just the object + this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + // Build a new jQuery matched element set + var ret = jQuery( elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Force the current matched set of elements to become + // the specified array of elements (destroying the stack in the process) + // You should use pushStack() in order to do this, but maintain the stack + setArray: function( elems ) { + // Resetting the length to 0, then using the native Array push + // is a super-fast way to populate an object with array-like properties + this.length = 0; + Array.prototype.push.apply( this, elems ); + + return this; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + var ret = -1; + + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem && elem.jquery ? elem[0] : elem + , this ); + }, + + attr: function( name, value, type ) { + var options = name; + + // Look for the case where we're accessing a style value + if ( name.constructor == String ) + if ( value === undefined ) + return this[0] && jQuery[ type || "attr" ]( this[0], name ); + + else { + options = {}; + options[ name ] = value; + } + + // Check to see if we're setting style values + return this.each(function(i){ + // Set all the styles + for ( name in options ) + jQuery.attr( + type ? + this.style : + this, + name, jQuery.prop( this, options[ name ], type, i, name ) + ); + }); + }, + + css: function( key, value ) { + // ignore negative width and height values + if ( (key == 'width' || key == 'height') && parseFloat(value) < 0 ) + value = undefined; + return this.attr( key, value, "curCSS" ); + }, + + text: function( text ) { + if ( typeof text != "object" && text != null ) + return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) ); + + var ret = ""; + + jQuery.each( text || this, function(){ + jQuery.each( this.childNodes, function(){ + if ( this.nodeType != 8 ) + ret += this.nodeType != 1 ? + this.nodeValue : + jQuery.fn.text( [ this ] ); + }); + }); + + return ret; + }, + + wrapAll: function( html ) { + if ( this[0] ) + // The elements to wrap the target around + jQuery( html, this[0].ownerDocument ) + .clone() + .insertBefore( this[0] ) + .map(function(){ + var elem = this; + + while ( elem.firstChild ) + elem = elem.firstChild; + + return elem; + }) + .append(this); + + return this; + }, + + wrapInner: function( html ) { + return this.each(function(){ + jQuery( this ).contents().wrapAll( html ); + }); + }, + + wrap: function( html ) { + return this.each(function(){ + jQuery( this ).wrapAll( html ); + }); + }, + + append: function() { + return this.domManip(arguments, true, false, function(elem){ + if (this.nodeType == 1) + this.appendChild( elem ); + }); + }, + + prepend: function() { + return this.domManip(arguments, true, true, function(elem){ + if (this.nodeType == 1) + this.insertBefore( elem, this.firstChild ); + }); + }, + + before: function() { + return this.domManip(arguments, false, false, function(elem){ + this.parentNode.insertBefore( elem, this ); + }); + }, + + after: function() { + return this.domManip(arguments, false, true, function(elem){ + this.parentNode.insertBefore( elem, this.nextSibling ); + }); + }, + + end: function() { + return this.prevObject || jQuery( [] ); + }, + + find: function( selector ) { + var elems = jQuery.map(this, function(elem){ + return jQuery.find( selector, elem ); + }); + + return this.pushStack( /[^+>] [^+>]/.test( selector ) || selector.indexOf("..") > -1 ? + jQuery.unique( elems ) : + elems ); + }, + + clone: function( events ) { + // Do the clone + var ret = this.map(function(){ + if ( jQuery.browser.msie && !jQuery.isXMLDoc(this) ) { + // IE copies events bound via attachEvent when + // using cloneNode. Calling detachEvent on the + // clone will also remove the events from the orignal + // In order to get around this, we use innerHTML. + // Unfortunately, this means some modifications to + // attributes in IE that are actually only stored + // as properties will not be copied (such as the + // the name attribute on an input). + var clone = this.cloneNode(true), + container = document.createElement("div"); + container.appendChild(clone); + return jQuery.clean([container.innerHTML])[0]; + } else + return this.cloneNode(true); + }); + + // Need to set the expando to null on the cloned set if it exists + // removeData doesn't work here, IE removes it from the original as well + // this is primarily for IE but the data expando shouldn't be copied over in any browser + var clone = ret.find("*").andSelf().each(function(){ + if ( this[ expando ] != undefined ) + this[ expando ] = null; + }); + + // Copy the events from the original to the clone + if ( events === true ) + this.find("*").andSelf().each(function(i){ + if (this.nodeType == 3) + return; + var events = jQuery.data( this, "events" ); + + for ( var type in events ) + for ( var handler in events[ type ] ) + jQuery.event.add( clone[ i ], type, events[ type ][ handler ], events[ type ][ handler ].data ); + }); + + // Return the cloned set + return ret; + }, + + filter: function( selector ) { + return this.pushStack( + jQuery.isFunction( selector ) && + jQuery.grep(this, function(elem, i){ + return selector.call( elem, i ); + }) || + + jQuery.multiFilter( selector, this ) ); + }, + + not: function( selector ) { + if ( selector.constructor == String ) + // test special case where just one selector is passed in + if ( isSimple.test( selector ) ) + return this.pushStack( jQuery.multiFilter( selector, this, true ) ); + else + selector = jQuery.multiFilter( selector, this ); + + var isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType; + return this.filter(function() { + return isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector; + }); + }, + + add: function( selector ) { + return this.pushStack( jQuery.unique( jQuery.merge( + this.get(), + typeof selector == 'string' ? + jQuery( selector ) : + jQuery.makeArray( selector ) + ))); + }, + + is: function( selector ) { + return !!selector && jQuery.multiFilter( selector, this ).length > 0; + }, + + hasClass: function( selector ) { + return this.is( "." + selector ); + }, + + val: function( value ) { + if ( value == undefined ) { + + if ( this.length ) { + var elem = this[0]; + + // We need to handle select boxes special + if ( jQuery.nodeName( elem, "select" ) ) { + var index = elem.selectedIndex, + values = [], + options = elem.options, + one = elem.type == "select-one"; + + // Nothing was selected + if ( index < 0 ) + return null; + + // Loop through all the selected options + for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) { + var option = options[ i ]; + + if ( option.selected ) { + // Get the specifc value for the option + value = jQuery.browser.msie && !option.attributes.value.specified ? option.text : option.value; + + // We don't need an array for one selects + if ( one ) + return value; + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + + // Everything else, we just grab the value + } else + return (this[0].value || "").replace(/\r/g, ""); + + } + + return undefined; + } + + if( value.constructor == Number ) + value += ''; + + return this.each(function(){ + if ( this.nodeType != 1 ) + return; + + if ( value.constructor == Array && /radio|checkbox/.test( this.type ) ) + this.checked = (jQuery.inArray(this.value, value) >= 0 || + jQuery.inArray(this.name, value) >= 0); + + else if ( jQuery.nodeName( this, "select" ) ) { + var values = jQuery.makeArray(value); + + jQuery( "option", this ).each(function(){ + this.selected = (jQuery.inArray( this.value, values ) >= 0 || + jQuery.inArray( this.text, values ) >= 0); + }); + + if ( !values.length ) + this.selectedIndex = -1; + + } else + this.value = value; + }); + }, + + html: function( value ) { + return value == undefined ? + (this[0] ? + this[0].innerHTML : + null) : + this.empty().append( value ); + }, + + replaceWith: function( value ) { + return this.after( value ).remove(); + }, + + eq: function( i ) { + return this.slice( i, i + 1 ); + }, + + slice: function() { + return this.pushStack( Array.prototype.slice.apply( this, arguments ) ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function(elem, i){ + return callback.call( elem, i, elem ); + })); + }, + + andSelf: function() { + return this.add( this.prevObject ); + }, + + data: function( key, value ){ + var parts = key.split("."); + parts[1] = parts[1] ? "." + parts[1] : ""; + + if ( value === undefined ) { + var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); + + if ( data === undefined && this.length ) + data = jQuery.data( this[0], key ); + + return data === undefined && parts[1] ? + this.data( parts[0] ) : + data; + } else + return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function(){ + jQuery.data( this, key, value ); + }); + }, + + removeData: function( key ){ + return this.each(function(){ + jQuery.removeData( this, key ); + }); + }, + + domManip: function( args, table, reverse, callback ) { + var clone = this.length > 1, elems; + + return this.each(function(){ + if ( !elems ) { + elems = jQuery.clean( args, this.ownerDocument ); + + if ( reverse ) + elems.reverse(); + } + + var obj = this; + + if ( table && jQuery.nodeName( this, "table" ) && jQuery.nodeName( elems[0], "tr" ) ) + obj = this.getElementsByTagName("tbody")[0] || this.appendChild( this.ownerDocument.createElement("tbody") ); + + var scripts = jQuery( [] ); + + jQuery.each(elems, function(){ + var elem = clone ? + jQuery( this ).clone( true )[0] : + this; + + // execute all scripts after the elements have been injected + if ( jQuery.nodeName( elem, "script" ) ) + scripts = scripts.add( elem ); + else { + // Remove any inner scripts for later evaluation + if ( elem.nodeType == 1 ) + scripts = scripts.add( jQuery( "script", elem ).remove() ); + + // Inject the elements into the document + callback.call( obj, elem ); + } + }); + + scripts.each( evalScript ); + }); + } +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.fn.init.prototype = jQuery.fn; + +function evalScript( i, elem ) { + if ( elem.src ) + jQuery.ajax({ + url: elem.src, + async: false, + dataType: "script" + }); + + else + jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" ); + + if ( elem.parentNode ) + elem.parentNode.removeChild( elem ); +} + +function now(){ + return +new Date; +} + +jQuery.extend = jQuery.fn.extend = function() { + // copy reference to target object + var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options; + + // Handle a deep copy situation + if ( target.constructor == Boolean ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target != "object" && typeof target != "function" ) + target = {}; + + // extend jQuery itself if only one argument is passed + if ( length == i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) + // Extend the base object + for ( var name in options ) { + var src = target[ name ], copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) + continue; + + // Recurse if we're merging object values + if ( deep && copy && typeof copy == "object" && !copy.nodeType ) + target[ name ] = jQuery.extend( deep, + // Never move original objects, clone them + src || ( copy.length != null ? [ ] : { } ) + , copy ); + + // Don't bring in undefined values + else if ( copy !== undefined ) + target[ name ] = copy; + + } + + // Return the modified object + return target; +}; + +var expando = "jQuery" + now(), uuid = 0, windowData = {}, + // exclude the following css properties to add px + exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i, + // cache defaultView + defaultView = document.defaultView || {}; + +jQuery.extend({ + noConflict: function( deep ) { + window.$ = _$; + + if ( deep ) + window.jQuery = _jQuery; + + return jQuery; + }, + + // See test/unit/core.js for details concerning this function. + isFunction: function( fn ) { + return !!fn && typeof fn != "string" && !fn.nodeName && + fn.constructor != Array && /^[\s[]?function/.test( fn + "" ); + }, + + // check if an element is in a (or is an) XML document + isXMLDoc: function( elem ) { + return elem.documentElement && !elem.body || + elem.tagName && elem.ownerDocument && !elem.ownerDocument.body; + }, + + // Evalulates a script in a global context + globalEval: function( data ) { + data = jQuery.trim( data ); + + if ( data ) { + // Inspired by code by Andrea Giammarchi + // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html + var head = document.getElementsByTagName("head")[0] || document.documentElement, + script = document.createElement("script"); + + script.type = "text/javascript"; + if ( jQuery.browser.msie ) + script.text = data; + else + script.appendChild( document.createTextNode( data ) ); + + // Use insertBefore instead of appendChild to circumvent an IE6 bug. + // This arises when a base node is used (#2709). + head.insertBefore( script, head.firstChild ); + head.removeChild( script ); + } + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase(); + }, + + cache: {}, + + data: function( elem, name, data ) { + elem = elem == window ? + windowData : + elem; + + var id = elem[ expando ]; + + // Compute a unique ID for the element + if ( !id ) + id = elem[ expando ] = ++uuid; + + // Only generate the data cache if we're + // trying to access or manipulate it + if ( name && !jQuery.cache[ id ] ) + jQuery.cache[ id ] = {}; + + // Prevent overriding the named cache with undefined values + if ( data !== undefined ) + jQuery.cache[ id ][ name ] = data; + + // Return the named cache data, or the ID for the element + return name ? + jQuery.cache[ id ][ name ] : + id; + }, + + removeData: function( elem, name ) { + elem = elem == window ? + windowData : + elem; + + var id = elem[ expando ]; + + // If we want to remove a specific section of the element's data + if ( name ) { + if ( jQuery.cache[ id ] ) { + // Remove the section of cache data + delete jQuery.cache[ id ][ name ]; + + // If we've removed all the data, remove the element's cache + name = ""; + + for ( name in jQuery.cache[ id ] ) + break; + + if ( !name ) + jQuery.removeData( elem ); + } + + // Otherwise, we want to remove all of the element's data + } else { + // Clean up the element expando + try { + delete elem[ expando ]; + } catch(e){ + // IE has trouble directly removing the expando + // but it's ok with using removeAttribute + if ( elem.removeAttribute ) + elem.removeAttribute( expando ); + } + + // Completely remove the data cache + delete jQuery.cache[ id ]; + } + }, + + // args is for internal usage only + each: function( object, callback, args ) { + var name, i = 0, length = object.length; + + if ( args ) { + if ( length == undefined ) { + for ( name in object ) + if ( callback.apply( object[ name ], args ) === false ) + break; + } else + for ( ; i < length; ) + if ( callback.apply( object[ i++ ], args ) === false ) + break; + + // A special, fast, case for the most common use of each + } else { + if ( length == undefined ) { + for ( name in object ) + if ( callback.call( object[ name ], name, object[ name ] ) === false ) + break; + } else + for ( var value = object[0]; + i < length && callback.call( value, i, value ) !== false; value = object[++i] ){} + } + + return object; + }, + + prop: function( elem, value, type, i, name ) { + // Handle executable functions + if ( jQuery.isFunction( value ) ) + value = value.call( elem, i ); + + // Handle passing in a number to a CSS property + return value && value.constructor == Number && type == "curCSS" && !exclude.test( name ) ? + value + "px" : + value; + }, + + className: { + // internal only, use addClass("class") + add: function( elem, classNames ) { + jQuery.each((classNames || "").split(/\s+/), function(i, className){ + if ( elem.nodeType == 1 && !jQuery.className.has( elem.className, className ) ) + elem.className += (elem.className ? " " : "") + className; + }); + }, + + // internal only, use removeClass("class") + remove: function( elem, classNames ) { + if (elem.nodeType == 1) + elem.className = classNames != undefined ? + jQuery.grep(elem.className.split(/\s+/), function(className){ + return !jQuery.className.has( classNames, className ); + }).join(" ") : + ""; + }, + + // internal only, use hasClass("class") + has: function( elem, className ) { + return jQuery.inArray( className, (elem.className || elem).toString().split(/\s+/) ) > -1; + } + }, + + // A method for quickly swapping in/out CSS properties to get correct calculations + swap: function( elem, options, callback ) { + var old = {}; + // Remember the old values, and insert the new ones + for ( var name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + callback.call( elem ); + + // Revert the old values + for ( var name in options ) + elem.style[ name ] = old[ name ]; + }, + + css: function( elem, name, force ) { + if ( name == "width" || name == "height" ) { + var val, props = { position: "absolute", visibility: "hidden", display:"block" }, which = name == "width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ]; + + function getWH() { + val = name == "width" ? elem.offsetWidth : elem.offsetHeight; + var padding = 0, border = 0; + jQuery.each( which, function() { + padding += parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0; + border += parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0; + }); + val -= Math.round(padding + border); + } + + if ( jQuery(elem).is(":visible") ) + getWH(); + else + jQuery.swap( elem, props, getWH ); + + return Math.max(0, val); + } + + return jQuery.curCSS( elem, name, force ); + }, + + curCSS: function( elem, name, force ) { + var ret, style = elem.style; + + // A helper method for determining if an element's values are broken + function color( elem ) { + if ( !jQuery.browser.safari ) + return false; + + // defaultView is cached + var ret = defaultView.getComputedStyle( elem, null ); + return !ret || ret.getPropertyValue("color") == ""; + } + + // We need to handle opacity special in IE + if ( name == "opacity" && jQuery.browser.msie ) { + ret = jQuery.attr( style, "opacity" ); + + return ret == "" ? + "1" : + ret; + } + // Opera sometimes will give the wrong display answer, this fixes it, see #2037 + if ( jQuery.browser.opera && name == "display" ) { + var save = style.outline; + style.outline = "0 solid black"; + style.outline = save; + } + + // Make sure we're using the right name for getting the float value + if ( name.match( /float/i ) ) + name = styleFloat; + + if ( !force && style && style[ name ] ) + ret = style[ name ]; + + else if ( defaultView.getComputedStyle ) { + + // Only "float" is needed here + if ( name.match( /float/i ) ) + name = "float"; + + name = name.replace( /([A-Z])/g, "-$1" ).toLowerCase(); + + var computedStyle = defaultView.getComputedStyle( elem, null ); + + if ( computedStyle && !color( elem ) ) + ret = computedStyle.getPropertyValue( name ); + + // If the element isn't reporting its values properly in Safari + // then some display: none elements are involved + else { + var swap = [], stack = [], a = elem, i = 0; + + // Locate all of the parent display: none elements + for ( ; a && color(a); a = a.parentNode ) + stack.unshift(a); + + // Go through and make them visible, but in reverse + // (It would be better if we knew the exact display type that they had) + for ( ; i < stack.length; i++ ) + if ( color( stack[ i ] ) ) { + swap[ i ] = stack[ i ].style.display; + stack[ i ].style.display = "block"; + } + + // Since we flip the display style, we have to handle that + // one special, otherwise get the value + ret = name == "display" && swap[ stack.length - 1 ] != null ? + "none" : + ( computedStyle && computedStyle.getPropertyValue( name ) ) || ""; + + // Finally, revert the display styles back + for ( i = 0; i < swap.length; i++ ) + if ( swap[ i ] != null ) + stack[ i ].style.display = swap[ i ]; + } + + // We should always get a number back from opacity + if ( name == "opacity" && ret == "" ) + ret = "1"; + + } else if ( elem.currentStyle ) { + var camelCase = name.replace(/\-(\w)/g, function(all, letter){ + return letter.toUpperCase(); + }); + + ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ]; + + // From the awesome hack by Dean Edwards + // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 + + // If we're not dealing with a regular pixel number + // but a number that has a weird ending, we need to convert it to pixels + if ( !/^\d+(px)?$/i.test( ret ) && /^\d/.test( ret ) ) { + // Remember the original values + var left = style.left, rsLeft = elem.runtimeStyle.left; + + // Put in the new values to get a computed value out + elem.runtimeStyle.left = elem.currentStyle.left; + style.left = ret || 0; + ret = style.pixelLeft + "px"; + + // Revert the changed values + style.left = left; + elem.runtimeStyle.left = rsLeft; + } + } + + return ret; + }, + + clean: function( elems, context ) { + var ret = []; + context = context || document; + // !context.createElement fails in IE with an error but returns typeof 'object' + if (typeof context.createElement == 'undefined') + context = context.ownerDocument || context[0] && context[0].ownerDocument || document; + + jQuery.each(elems, function(i, elem){ + if ( !elem ) + return; + + if ( elem.constructor == Number ) + elem += ''; + + // Convert html string into DOM nodes + if ( typeof elem == "string" ) { + // Fix "XHTML"-style tags in all browsers + elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all, front, tag){ + return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ? + all : + front + ">"; + }); + + // Trim whitespace, otherwise indexOf won't work as expected + var tags = jQuery.trim( elem ).toLowerCase(), div = context.createElement("div"); + + var wrap = + // option or optgroup + !tags.indexOf("", "" ] || + + !tags.indexOf("", "" ] || + + tags.match(/^<(thead|tbody|tfoot|colg|cap)/) && + [ 1, "", "
" ] || + + !tags.indexOf("", "" ] || + + // matched above + (!tags.indexOf("", "" ] || + + !tags.indexOf("", "" ] || + + // IE can't serialize and