From 666077137f8884dabe9c7fdfac51b4731e1164d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dario=20D=2E=20M=C3=BCller?= Date: Sun, 14 Aug 2016 16:58:07 +0200 Subject: [PATCH] added project --- .htaccess | 5 + config.php | 6 + css/snippet.css | 114 +++ css/style.css | 875 ++++++++++++++++++++++ favicon.ico | Bin 0 -> 1150 bytes images/generator-html-thumb.gif | Bin 0 -> 14831 bytes images/html_imagemap_example.png | Bin 0 -> 11654 bytes images/icons.png | Bin 0 -> 8102 bytes images/icons_upload.png | Bin 0 -> 1340 bytes images/imagemap-area-info.png | Bin 0 -> 23132 bytes images/infobox_bg.png | Bin 0 -> 56471 bytes images/logo.png | Bin 0 -> 7758 bytes images/logo_active.png | Bin 0 -> 5246 bytes images/popup_arrow.png | Bin 0 -> 358 bytes images/social.gif | Bin 0 -> 8990 bytes images/worldmap.png | Bin 0 -> 9300 bytes index.php | 419 +++++++++++ js/jquery-1.8.0.min.js | 2 + js/jquery.fileupload.js | 1201 ++++++++++++++++++++++++++++++ js/jquery.iframe-transport.js | 185 +++++ js/jquery.maphilight.min.js | 1 + js/jquery.maphilight.min_.js | 1 + js/jquery.ui.widget.js | 530 +++++++++++++ js/jquery.uploadify-3.1.min.js | 16 + js/script2.js | 483 ++++++++++++ js/script_upload.js | 130 ++++ log_url.txt | 0 upload.php | 72 ++ upload_ident.php | 32 + uploadify.swf | Bin 0 -> 12675 bytes uploads/empty | 0 31 files changed, 4072 insertions(+) create mode 100644 .htaccess create mode 100644 config.php create mode 100644 css/snippet.css create mode 100644 css/style.css create mode 100644 favicon.ico create mode 100644 images/generator-html-thumb.gif create mode 100644 images/html_imagemap_example.png create mode 100644 images/icons.png create mode 100644 images/icons_upload.png create mode 100644 images/imagemap-area-info.png create mode 100644 images/infobox_bg.png create mode 100644 images/logo.png create mode 100644 images/logo_active.png create mode 100644 images/popup_arrow.png create mode 100644 images/social.gif create mode 100644 images/worldmap.png create mode 100644 index.php create mode 100644 js/jquery-1.8.0.min.js create mode 100644 js/jquery.fileupload.js create mode 100644 js/jquery.iframe-transport.js create mode 100644 js/jquery.maphilight.min.js create mode 100644 js/jquery.maphilight.min_.js create mode 100644 js/jquery.ui.widget.js create mode 100644 js/jquery.uploadify-3.1.min.js create mode 100644 js/script2.js create mode 100644 js/script_upload.js create mode 100644 log_url.txt create mode 100644 upload.php create mode 100644 upload_ident.php create mode 100644 uploadify.swf create mode 100644 uploads/empty diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..f4c5f78 --- /dev/null +++ b/.htaccess @@ -0,0 +1,5 @@ +RewriteEngine on +RewriteCond %{HTTP_REFERER} buttons-for-website.com/ [NC,OR] +RewriteCond %{HTTP_REFERER} ^http://.*7makemoneyonline.com/ [NC,OR] +RewriteCond %{HTTP_REFERER} ^http://.*semalt.com/ [NC] +RewriteRule ^(.*)$ – [F,L] \ No newline at end of file diff --git a/config.php b/config.php new file mode 100644 index 0000000..fcdd238 --- /dev/null +++ b/config.php @@ -0,0 +1,6 @@ +nO)Vl2+C|DT{;eWAomC0nQi#4 zQ?600o!$lH9+27uVr#&i2e@E8$f!UeE$371i~}Gjh&bSuIGUZ zH?qMFmNm#+akHzyD|3jE8y*L4iSU%JbLE8ew^ga{rT=B}S^I^Y$5C=e*vFWzMK3bY zTAiOM<44Jl^aJ;U)S?dkNPn}j|1ACIRsd}QNKCT_)>Zt6ZhfVO3^p0p&oRHe>R}Oh zV`j-oAZ}xp!{pOL#0D8^G3FO`fX^-6gVN9(oCR}GItk`TPub&kWB(uI=C^?iJ-l;< js*e;klAJ}Hb9{C{3s%m*G}BtnZt0wtIDfec0sIDE=p`kJ literal 0 HcmV?d00001 diff --git a/images/generator-html-thumb.gif b/images/generator-html-thumb.gif new file mode 100644 index 0000000000000000000000000000000000000000..3892eee5a73bdee493c2d7d731d559340c5c1071 GIT binary patch literal 14831 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 z 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 BL?QqH literal 0 HcmV?d00001 diff --git a/images/html_imagemap_example.png b/images/html_imagemap_example.png new file mode 100644 index 0000000000000000000000000000000000000000..0dd085a39c204c8505f9bc58c50c6db2b77d0f38 GIT binary patch literal 11654 zcmaia1yEhhw&up&LU4!R8r)rjh2U<%gS&gsKnU&@+$FdkEV#S7yZapeH*@FCd$(%3 z>YUxRs=N2<-m6!C>suZ6SwRW~5g!o%02CQ%@h<=X;RUY8!$X4qry6IB!4CvGX-!7} zKn1=1Ah2jY`2hf;qJ@~)=g;Q0PPUHbwsxd4Vq&Cr4z{Ki-%J3&Z6RIROhtJgTi|x( zN>nz~FHY9>3l==-7tsj6_c2s-WC-Y=Ldmk{v6MP7BqX2-{$_&e5QZ^?tJ+9>B&3b+5iZ*NhElnLq4^Gg)rn5?LahH2f{B1qQfbM zTNd8$Js|86C7KTiOG5aiCs8Q_S=@R<=Xp!VIF1pLzPl06{+?Km)W;;JvAAHxDq!2(ZYgn@R(f^+3l6I#M+Nj|{LVg$C0C(4K(7 zUkVC0ASfAlFL|NPe@Cj+*++?|L|(Gyk%x)?qV1uac>TJu%J2v!xXJ-kS_(pV#xNG@8bjU4Qlo1) zb!^-Mz(uod=M)V*l%ILv`l##csnD}j7A4?kD)Y-80QAH^FsTgG2=&1OfOwWaU8M-Y zRVOY(2P|PH%u*-PlL2Rt=!b5QD7q-(S3g1r1KQF6QJU|=l|*y~%u~Wd>>Wzx-(&4i znLw%yr~-Cq4~Fm=oir`}2+$&b;V})#7D6G6!Zj$O;Bk_J@5nl(q2EP(Angx*uS6~z z!y*0gOSlTDsx;AsfCD5?h>m1a4BuaXHQ?!ci`2(B|7sL33ySrzbnM~6v2}lAVe0J?t>R`th&3LpA}>WQ>BX;9 zD}`zfyEY!Ja)o~9FVTU(3GFIMYDg?1ts$qOFehC|O89{tV*!B+0V+rdL`@!BC|gU_ zgmK@EYsC67L_?Z^V&+{mCNsKcs8~1Ghj(FOtkjJ^A!Vw5t4zF`kesmjLb1TqDM05SekJXJga9kWVNaenbiF_P+~>Yz$=k)E=5xuhza@@5gjR6>brar);& zWddchBEG_qVzWY96`|ign$Kadnq6{TiekT&va0kqTY5>6jPYvR7|5(pO1?Y$b97Tx z4bOYI&^0GL6E#N&6c=Ulh_QWQQ?L1Q8D}a4x0z&rm*%8^uuD^rcdmz z0&IB!-s^IvVyirY>}GM-cAJ8eq>MH_zYICsf))4H-3LN%=4X{>>xY7CDP#@U8srbK zi^wCm{5>4@w){lQeT(NxV!Bw4iT5q7`ro~WKSl3`8 zQ@y2?uX$3}ViT;zqnW3ns-;^aS(aW#In!L$T!2x~s1U1Ak}+e}Re4_5UsqI*SGhe0 zyI5XlUFU6RW`tu_-&5Xo65AT<-Q@k_SpW_tWFEDINQ=nFvDV=|uNv=4%1GLYkay2j z!alQ^#whye9NT6c<{)jiMY?k8q?8$sS)*g%WoSg0Y``E>q99W$LGSY4)~!!Y*Y>*W z9uwE;sWqvf)Ii*F52aRhG!9WplsH~G0%SXVUlhqyZG|JDyGcG+g=2d|3xQoMeB z^>`fz3j8P`%%H;jMf|lPAMZT8$l9ZXco$7>s^^bIBC{GrutcH*$^y1K%gD_C9{nsM zyWLG1i5am#4gT!2H!}ujxMLX6<%3Ke91^VlT`0;fR0DtfV!38s`!I=g7`|R z*+)g53dTL(>}R8ZzHx33-_4$~kSmwXHrKUxsX?Zy;@Y z;v_Nu)wOfa9syki7ho4Ly<^}_5S9y7;Ep>JL8mLkj-EyxPGgepQSLGjEHrj`Fko_G_!PY)n+E@rtQOF z13U>O8T7-)Lp1}7Ke^IQGhdJ2f!?kEs>}N>tIkNIvC~>=$y3d5@4kq*i3LOdT@ALB zzahMi&U#w0L0_0@96}B zSYhGi?-y|rv3%!fmfW@pLTm@xlb7OZi%Pm1zmA$tnC|baFlK0@CKM;`B%<1&%rDfU ztg6)>U*AY9GA9nxEH($$i8bc7^Eb4Z6!eb_^9iZ^R=HAnP~kk8SpH);duKC#Lg3kQ z!+tcqsNHh=EZE<+s0yJfKW#c~@+k9Ib1PIHR=j_g@Mx`DreJM<+y^xQ^$bUWS~uG` zHBB@jpzTu5rq>)^+#Io28Ert`_}#~!s;zC3h#nTq-W_m+$4z$ zkr@%QrD)1Uie##C%A>ZCc9Y_e;P}kJipP`GA_-a=JHMv;r%RQ7i-rAw$yl?C(a7}p zbZ;M~`z3?LoI1~4jS3) z{+HNE#lGgW=9KbA9jnF@kJdk)rnmb98C)aFSFP^n*sn9w89V~Zt(P9Qw>`JltJupv z4%E*hgU$1<)F)*viY@wA!p9=>V#^`ZLfS7&bEiwbmL0BHm*Y!Px3Iy1qc1Vn(P&~Y z(aF(+-%-9FW^fDg@N5Vd<7rOLp0$$1$p$H8Xyxtl(m9T`s=&rZBZjBU5} z%6mTOIK-=1>;?4_xAnWRebl>Bdpz!RU2-Kl&0R%P-0~vzrFk{Kuew$qD|n2>i;aDS zhDy48GG=331mjIoW9cvQ0N_Ch0Dgf0aQ_N^?gM}`3jiD#003_i0N~jE((jQ30P-ps zaS;`_g`;$LjrV3vH@1Z~!Xlr)Dq&zKfqoInb%)}y)#~5ryo-vIQOMzz%nifr3*IyM zh1YvNc-KRT&qie`{q(MnQf5;|;VIHhG{`EBK0sCuRbU~qGqf8!@O=QvaJG4I^9aeb z?DZ!o6iC5#p_ZoNm9mv$pM#?M?KW?l<)-T{G@+#?=RpIOzuOKZBqaL!`smOiSID{J zH1MKQZzV*p;`aO;kIi&wt3TF6RaKSCb_E$89v%_V2=}`oF1Q1@TMBCcY10o9FtQJV`33*~yPh{E~PmVp5QkdTm1&(9{T$#PV=av`Mf6<>MzM=$xA69>Vv zhTWMmZPtw4w{}oa&rfd!_xt%ru^LHq@!JVPjKI#U*~6aDu1hblO0u#ML#zLk(NShn zQekB2+EOue@zF^_5p=fhF@8eGcz-FnCidszITET*mEDlpa>f` zpE|ro?gGyktiAGB)e}9_hsih$=y6OhZ|@(H6hN|E?_~?FUU!h>&fy{biw>pHz1*87 z^%#?cx#Q*t3~JqXM)UMO`Lq=9In<$s-AsRzevw)r1dxX6AqvlMF{fYzkUqRa=JHsg_9E+OF z_$G};J<<5#P~PD~lL01+;g{i%zK(k_!Q-yRX`2Cwt9Y=zfB$ZKKQDiVnH9pBsDRrq z<59677qqNe<~W*k&0#w^fQf&EIE#fUr00I<4RQU##jMG?JZZ|epO@EC%dsCer{P!d zdCZnI9eX=`18V>qh_)V9D`C@*Y?a;I`XSi~kebN(T_eoE$u;Y1V9pPV+;F9#R+J0s z!xSD|9{O3_A`Li+Br_f1Ch}5%M;vFi8m@Bo=YqR!B!21EMseo$;Pz}aiQZlfh9luIGcK-*qV z$-v9YN)?M`*PqMoV+DL@v_P$^QEeVJAl_n6w~aGXu$Kxa$WP`&_zGGTZS&Am<+E^` z!s5THFO93twe@oAb1M9hu8R}%9QHLdLa@x2PYnD0yAF#+zn_3Y$>essX6rsIAUBd` zXM}xGuWnoX=Nl}r;A~|j1OdFxzM|JVyaz_IBfE&>sdA)+8tYog>5h&{FfbVuU#1El zc13?{cI0f!*cQyyB2S;~o;5b+7zy5^=I^l>op^O+We3ywTx+$; zx(?&>v%LCO)PS(V-QvV(zwELirM^^R76&1~0T{yMt8q=|&1gI{y4SBpij6Wmv80(5 z$LG>7`SgkDi6L(XEwfyZ?l!ho>--v_dy8SYjRASA{%Lav0gw}ovh=tUdTBfF;+qjG z#eRfdH|`I;Vk}MAbk-sQ&R4Tg6oaiFnB+9DEX=K%&U(;hGZb(pfIXKshrF*dbI9T+ z$_h`o9rv=zO!o9rFv8PzS247pSP{Sdpkl?Th1p+&ok2A5_6R%5y|s_QYxII<+W={z zv1C9c-8-)GJfCujPtyIJmX4|QdTy$NKqcPq8XRaLAdN|q>3ge&ObefPZQ7NuXOhEO(-RF~xo>Wf_Su+nh@YTQWV{Cp!?ERJ^Y4S~2RKxK+xp;e{-CU*-}aX}4h}@p zWk=Dhq|(-21P4*FknxC$w#LkKiH)5T&EgP}@Zaw7Z;pR}yT8eG2XqE2Ki3%+O>5~% zQj-!2AHLnbz%={I(7O9xK>5jZcFjpHU(XP9F!!=D42GM?Cfsuic7Ag-*KNjtRVY1I z7JGaFO*}XEh>6urLFAr%8+_LD>Q!)OeGlYQwzr)|j*1?}&dV?Y<1aA@hQL}ary2PT zE{)>7ranq}zRw;=-?@?j$*#9tzG?XzgLN4UsSTtseT3cR6T2(Cu+f}!-Tim4p15Zw z702vmGJZo(>Ff>+gF%YWQGcpC^1#bCO+951d<^)w;sZYFMBA48#W-ej=huJl=OKXE zUL+vWIvUeKs+I>&P|f|}bG z4Q->%+3c1%$E-&D#It|iZ8y>sq*GVMT>%eN-+Z-Ap6|H{&45miN|3C>!X@_ANC#!@ z=N7atltwN!+a&P!;&Ccn^)L-6)kQc;ORvHtw? zc8b>}WXN5&{h(O(;Ogtg4P+`ag}cYt^V{d5sa@-SPJL1Tlkdg@vis12&a_Udun_c_iXvHp560V_1?C#2+$p#9 z6G~~FJ`%76WGXyBcrz{!_wg*;n+t=$FfPmIO0m9CUCiW1l!_RF5Yo1awcJr zT6wIxM2m!QYs=+KV(_A)iIa_3uFw5G-Wem2JV-U>*TjEQCK&eO#|%B$KA zDtG@lafa#q%|=V+uNPz6DQUfl^Ur}?J5hU1WR0;|lRdj3)n4atWgEMt0*bFMFA(V& z;X-4`?p9VC8^SVIRWHP5_X1YkRZvxvCo7FwKC59lk4tQjqM(qE*6)pA#l~U;7hqoq zs_ry6gp{EOGbUz2E_4NF0U0J?^k>1nzb*3!6;@xJ15F3M%}Nle%kXP(H4;EkhWemB zcT$U>zhSPdEHNtbr!WzFJoW-^;9dPC`7Skls!VO8q1;0y${`2o%_bZk4Daa6e zTdG5EZDC~Bp#Rst{Kzp%nkQMLU#oq9<8I*i_-UVmmW{X%L&0?ND`In_7z;f;)E;Fl zluY{!;CP?@ejMGX#eC&M`oRnTOP^2U?$T}q)~qlwg7|6KzB%FmR=82mhSktRqos4* zgPm7l6jwU}i{jA`lMYEhPQ5XUdI~a3vZJS;qEqCJ+g_;M(QZVOPqGQNy4a z^H2c#LWwu93a#iioIJSHZW~@}ac%58ERK^#-iFRUX^v($siUEDW&@+Nx!?<^(47}A z4q~oDJqGV$eeayEl~QNQb**7VH;%kT7zN?%tbw&DBr?vaPVUY|#RRy5l@Kbpy3JXY z8n>|~<{JIzO#XMFdT6}5u7S8h)Q3jn;}=`G+jWmtTr`#tAIdUYxd-+h7(2@#`~-~i zZK}8wlK6{LLGIq>4y1UmPwu;~znHc3=XTybJ3MX02)kvLH;cG!D4q>#_Yg!$oGJfh;scC8h0~|#EveVEGBritxcqd|P=#5i7RY-{bm(=+hd{;u9X7n}pnoEXw@vk5 zk;MPpR3FCz6{u(6UFLYO8(3KOv{K2PVWeii5^BWS8)%Ctqcxr2OtQkC9Yr=dX15B! zR$$tHs}WZ%}(!S6|`IVHDur{LnpJ3vvNM5&7unSBL4GuWRbqRYEfEE`R^kqr}Q~jV0*-Q=MXF#s~BluOG+9#Bj{sq$x{INU+Ut8{tuC@Ypi`K(;Al zCMNq;-x^8~psv2e2G=K}unE2rN!=pnr@hi*Swx1r+b zM|?hG;gYO|CtG;p)Y&NOFjNy0?R;J-7T7a?{aga}z@tNMx7$%-czL^q0^LUr8*!va zhzM)7I>ORG!Ss3MBD?ZiD@FJpO-tt0>A2ce$L^}fzt@%2&(>C}O;;-&;|qCyDtUCO zxIQ6K?jJSTxT1t@cirK9nxH64rGks#Z5F7+)Bcp){gIq)b2%|r#g>?5P}-B1Q>pCm z=DO(AWotJo6az``fhWh|>m{2HA^KQx>b?3&D~jO+`|lFf-_=Hc@;I2`mGo)1^h!1? zJ*>@)jq;X*UACEx%54U61!}OW2m+^gHmBDrj?+1hF8-`ltd_1gb?K~~v+Nd7^rjK@ zxL1damLshL&_Oy27xxFu{{GgW^{R|0dM^*O7Kxy1NK@f z-gYwkL*$@<+~>gHpnD!e0E}rEKMTC7lu9We*!;lUD67L{6@ty_@4i&*C)A~UH$$9G z3fKvL$lK1Ks1Gw>2F$U!YwL7;%1SCN-y{* zR1*Sc#y_gSRC2$ia)J`lOVi{9pffK7yrEC@A0IRTn*Ds`06c<4gux6jmR5sPN3c<0 zV+PhzHP!Z%X4MAaW?V4WG5w9pj^yV~{WG23=2R7C5mr3fJ+APne=u`N7b^0uFdL`M z3Z}^*eNQI-S77}7kobDNNY0K0v+74L_!WG@d29Iw_ed0RWb8_L}IE(&02nHQqKd^918 zuU1ks?Hh$ZlpKY`1+SifMlObf!~f-yd3#5W`iv{&CGqgW=9uJeAJa7J;K~YaKt6(~ zl|p21N)=QmeLIcTC#M^){5)VYeqs28RFE-Ot=&u`wS??>^LHu~qjEKukGag|6gRu^ ztPfe05g?^9JAcyHc+4cC_)Q}1&hmFR$?J<; zw^l!zBU&(%?`vNu+l&N>8FhEU3p%T7gplq1yyeeSJEvh3P__OlsBS=13fYjs2lj>v zC5jj=0qI~YZu-SPmhd=dI#2+$4s#gZh07q;8FHb;z=!msPGyZBOJ>|M@px}1Kc{CO zynXTbw2Zwe4B5QJiu&_ylkJy2CWM`4rJkEFTFkZT#cpm|tY}XX<#cSH26j!bzbV+c zAT+U*L44UohSNtOMpa*^?UIKxS&X>!`ScLoszl)~!yMQdlxw?88tNZ+1k3Zxvwfm| zPM(k{^|-G6=?z!sTeCboH6Ze`K1?hhp7EBI>#LoU+cOtYRU8-W{JzbIfPf*|Aoe?w zdBD7)lK3~8>_0GP|8@j=K)f@(eW^v)mB~jaYAwk}UXAOnHAAh5_Yk7%X zQaPXQp6eptDF)AHzMk;fd3Q;fl=qAZ94(}Rj*Q9={aKp33^p>;=zi;GKG=k8m6+dE z;8Bp6XkxpuJEooLJ5Sd@{#JY}R||VpwG_1dl8n!0Sy<6=C5iQ0vVv80{pDG1G4L_~ zSb0?S2q@v}R1jNv$+#;1-m;9Vk`fv%w-5S)22p4Um-Trg?8wM+F{(j2wl~KfW5EI&@sZt@sy5>m3-G@5|5Swsk8k?fF%u z2{ksXV4qy9He(-sJU1kj2Rhm?cV%*Gs?C2iKKve9L9O};RZUVS{Jk1%7?&)wYQIh_ z6V0U1N1cn+lH*o7y`FUt&r&Q?8xl6keX-h2{$}gJK8nGbMuG{{HmwjrvH!v1)5TOa z!(eq-_TVAP^n`kEH^$)T>PW@r1=>ONE{t;ywc3mwKdrk3zS-qKe|2dA>&1s51+ZnQ zCoQYwZLLi|@lK|f1y;BzdRBxlW;zoJIZ?hg4&q;szflTAxMNYt%I#T z)&8|6YBQw#iQPVtV{3FuJPiWf<4G94V%uQiN5!9$n5C24U2*2uTe=|w_@ocAZ3Y0eUFgCZoZM*7eVt;}AWg5%;-F5ai= z&95AEkB}_hUf#PR1$=JuVr|t-qF6`wq_TqL49PENBMk~v74)nZU;qpXT$*E|KeZ_$ zjsg*sEjDbswKh=yB!Cua=&Mm}S($OW)q2$ZR*3fJkhX{nK1VV8EeQP=1ONYXEe?Ta zFSW=zu!S`NsV+^^5@<)*4?J72WUbMs5M1zngR6S2Mc96?ho+i3PCip@L^TWLeLiTM zH^{=4D$kB&Ba3+GBZzeJL3A4YF!hON<#UY4M_H3OI`%hPas-;!E8F1sK|I=IX%8KR zohuX!nx?J$!tyA{iIEYH31)T-}I`cQ?;3I+_C>Mh>zs)l9$+ouE)Pa z%#&IY?IKIe20d^BMRd9{4DWWdk!WPII3hRdn8l~9O_Xi04gy{l;qtiysvQm}V17(% zW01E@tDi(m$09_j8PUDKU?ci}`Ea}a5)&D+k35c`Fii-X(?#M1M&#P8Tv{6a>Uu2U zjfcjAZ3+gombbvx3J**}`950C!f}`&QEM%cW{@~Ow;n}EfDuV%-dgTvax)XHnVkMN z{TGNqonRqn?%P@9&&oHJGs&PXjv7bCF!}#Zo8Ef|oK<~wdcam2Jm)P#^}DN}(Po~n zr4*FHx-t2*zAuJV!=*)tlOOWBdFs3L77#l9iq)r z>5W5BqT76jY%Ndyif5@lltM70=gF%p4VATcKM?;*)0k~(x!!rZFXlQ?8kNwXPJ0e9 z?TO0W*&f4>2QAIRdTI@Ux6THA1{m`7X630^c_?J_{@EZRY&|0_Y0Y?ds4xhXLlATy zv)zjV34D5EhJ%~zJZzRpD;G=oBGj;#3QhHZ4z8NgvD`Pu3iueh%h%YDdy(6f#D;LOC|KD_wDw;=S(M6i8$4vtMeK(wo!0mrkMG z=^%I6ELsK$BmD!CeZo39rYDmNuug&Vs*oFn$hroRZ+N~JZ>bDRS|Zc#pVlvlbW*um7bzK z3ZNhLQW10b_Cb-nez>KD<+?c@T`p@ZOn$0ZCe&UMqX11A=ISrlv%1-IZh6RaINCpQU3(MB_JkEl;75 zVAn4l64uk8y`){a8F8EaX#Xd_2#{JS-XtWq7HYe>2B0>I%n9l=O}qIz2d;_rrFmY2 z%hif?gc_45hFeUXV}ltPsdO!I4Rsnwmm_Iiyt%^7^_5dY1-UWmQ`HpK@O^|QomI*7 zad$o@HN4ZD8c5pMY-+3 zaU&JA{qi4EwEsFF{>8P}kHV#Qmf*;vi~Az;s6#@TkXh(kP&ped z!0Ge&|HKul&gYgtaaWs4hWj=iQisqC=`{#KOW+Lde#I$A6HygwgsoyWEuNmYyk5GN zDSXJvA5!7=h}L4z$(>5t&Yzw?5Ez$m??IHPGSVi}MGt7$WhDZmHb2Z(bETx#WE{Vr zVY%}=mJnw#Y~?CTKdc$}ypCAbz}^5|;O|yGLcpF{KHEv-8*$mhf_IvxMiWjs$iz4h zC`3IRgP-F31}lGD%~sp;w2tizPp|J8^m zW7m6VtQ&kA0foU<6*f?$V)pR*;pU$b^;S^vx>yMNAkZ&~lI0{Vz{BauxVUBPy0^8q zrf+gbZC-hJ8yI9UeE6`nGn{IK-OYmB#nRT+7Po^AJ>K=T&zv0}88)z!6gIuCjx%bL zN-l}C`Lyj30N(2 literal 0 HcmV?d00001 diff --git a/images/icons.png b/images/icons.png new file mode 100644 index 0000000000000000000000000000000000000000..974061f4710621ee53c157364d2b2a80aa538728 GIT binary patch literal 8102 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 literal 0 HcmV?d00001 diff --git a/images/icons_upload.png b/images/icons_upload.png new file mode 100644 index 0000000000000000000000000000000000000000..45b64f19ff39920c3cdb7c208139a7cb7e6378d7 GIT binary patch literal 1340 zcmeAS@N?(olHy`uVBq!ia0vp^{6H+l!3-qhg}(&=DVB6cUq=Rpjs4tz5?L7-m>B|m zLR^93OO`BIx^(HXWy@BrTD5-t`c0cQZP~JA+qP|c_Ut)u;J~qC$BrLAe&WQ5Q>RXy zIdkUh*|X=)ox5=1!o`ahFI~EH?b@{)H*Va#dGpSlJ9qEiefaR<(~GP z{{syl1*0J_m_uM|U-M!H21bUGAirQ>iXF*-A^1DHDlo1%3p^r=85sBuf-vKbiP>*~ zf)XXJ5hcO-X(i=}MX3w{iJ5sNdVa1U3T4K6#%3#@KLTl7h@_0S|M4 zG{@4MRP6w+X%tg>t}vnJ=1^H-TCWRd3SuBT7H$)r|Rm1C96JE z%DGQ4IVj<{^gR3j4_{SowzFFvd;a3MYw7GW-yhtGxZm#fJ$=RXzS%Y2Cl`pYebSTs zv2o$Yt^?cqod4MJNLku9r+jI&V>z6XUHH4UHoK9faV1-kN-Z0+l(kXQt@*BXhtAZQ WY`fReTk;;9B0XLGT-G@yGywo7{JuQ^ literal 0 HcmV?d00001 diff --git a/images/imagemap-area-info.png b/images/imagemap-area-info.png new file mode 100644 index 0000000000000000000000000000000000000000..c9e36e96f2e911ef9e7ecc8daaf7bac099914154 GIT binary patch literal 23132 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�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

yh5S?@ExY?|Vd(W&jmnl3H+#?gG&$KzG~RV5S7z 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 Y0Zf6WA{_2UO#lD@07*qoM6N<$g43y0>;M1& literal 0 HcmV?d00001 diff --git a/images/logo.png b/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6d40a3135b2a370b4f2b0863c1392506c3f19555 GIT binary patch literal 7758 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 E0SL-zAOHXW literal 0 HcmV?d00001 diff --git a/images/logo_active.png b/images/logo_active.png new file mode 100644 index 0000000000000000000000000000000000000000..00238211ec6a8aa059bce38242854f040f60c22b GIT binary patch literal 5246 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 RwstV}V=-pvQiF?E{s#n`MZ*99 literal 0 HcmV?d00001 diff --git a/images/popup_arrow.png b/images/popup_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..4ac16f1b1364d0ace1b46b328e992b9a84bc1e88 GIT binary patch literal 358 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 literal 0 HcmV?d00001 diff --git a/images/worldmap.png b/images/worldmap.png new file mode 100644 index 0000000000000000000000000000000000000000..c5154d18577c6dacdcc74eef18b73094dfd6d3b4 GIT binary patch literal 9300 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 literal 0 HcmV?d00001 diff --git a/index.php b/index.php new file mode 100644 index 0000000..4417f35 --- /dev/null +++ b/index.php @@ -0,0 +1,419 @@ + + + + + + + + + Easy Imagemap Generator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +diff($dateNow); + $diff = (int)$interval->format('%R%a'); + if($diff >= 0) + { + // file is too old -> delete + unlink($uploadDir.'/'.$file); + } + } + } + closedir($handle); +} + +// Check Session set and Loading previous Image +$uploaded = false; +if(isset($_SESSION['image']) && $_SESSION['image'] != null && !empty($_SESSION['image'][0]) && substr_count($_SESSION['image'][0], '/') >= 1) { + if(file_exists($_SESSION['image'][0])) + { + $uploaded = true; + } +} + +?> + + +

+ '; + else + echo ' + +
+
+
+ +

Easy Imagemap Generator

+

Easy Imagemap Generator for html image mapping. Select an image. Set links and clickable areas to your image. Get HTML code for Imagemaps.

+

Just select an image from your PC or enter a image URL link, which you would like to map. For getting help, visit Infos page.

+

Select a local file

+ + +
+ +
+
+ + + + + +

Switch to Flash Upload

+ + +

Or insert an image link

+
+ + +
+

After choosing a file, you can generate Imagemap
coordinates and HTML code by clicking into the image.

+
+
+
+ +
+
+
+

Infos: HTML Imagemaps

+

An imagemap is a HTML <map> element, which can used with a <img> to integrate links directly into an image. On the contrary to an <a>-tag, it allows to set several links into only one image.

+

Imagemaps are one of the best ways to add multiple links. Really useful for linking banners, newsletter, e-mails or landingpages. Just specify severel areas. Each area stores some coordinates.

+

Coordinates are pixel-values seperated with a comma and have an alignment from the left upper corner of the image. If you want to give the area a rectangle format, mark it as shape="rect" into HTML and set two (left-top and right-bottom) coordinate-pairs. Example:

+ HTML img map area Infos +

For each area you can set links as attribute href="www.google.com".

+

This free image-mapping tool let you create the coordinates directly by clicking into the image - no programming knowledge required.

+
+
+
+ +
+
+
+

HTML Code: <img>, <map> & <area>

+

The clickable area can be rectangles shape="rect", polygons shape="poly" or circles shape="circle".

+

Shape-Values are coordiate-pairs. Every pair have a X and a Y value (from left/top of an image) separated with a comma. Every pair is as well separated with a comma.

+
    +
  • Rectangle: Set four coordinates. x1,y1,x2,y2
  • +
  • Polygon: Set as many coordinates as you want (a multiple of two)
  • +
  • Circle: One coordinate-pair and second value a radius. x1,y1,radius
  • +
+

HTML Imagemap Demo Code with x / y

+
+ +
  1. <img src="teaser.jpg" usemap="#Teaser" alt="" />
  2. <map name="Teaser" id="Teaser">
  3.    <area alt="" href="#" coords="x1,y1,x2,y2" shape="rect" />
  4.    <area alt="" href="#" coords="x1,y1,x2,y2,x3,y3 [...] " shape="poly" />
  5.    <area alt="" href="#" coords="x1,y1,radius" shape="circle" />
  6. </map>
+
+

Use the <area> href-attribute to set links. It's also important to link the <img> with the <map> using usemap-attribute within the image. These value of the attribute must be the map's name-attribute.

+

For using this software, you just need to click into your uploaded image. So quickly forget the HTML code you've learned before ;)

+
+
+
+ +
+
+
+

Maps & Newsletter with Imagemaps

+

Imagemaps are defined with HTML 3.2. Nowadays every Web-Browser and Mail-Client supports the <map>-tag without having problems.

+

Popular applications are newsletter and e-mails with large teaser and landingpages, banner or world- / country-maps on websites.

+ + + + + + + +
+

Browser-Support

+
    +
  • Internet Explorer 6+
  • +
  • Mozilla Firefox
  • +
  • Google Chrome
  • +
  • Apple Safari
  • +
+
+

Mail-Clients

+
    +
  • Outlook
  • +
  • Thunderbird
  • +
  • Apple Mail
  • +
+
+

For more infos, visit your best friend Wikipedia: Wikipedia: Image map.

+
+
+
+ +
+
+
+

About this Imagemap Tool

+ +

This Software generates HTML Imagemaps and <area>-tags by clicking in an uploaded image.

+

Usage:

+
    +
  • Upload or link an image
  • +
  • Click into the image to set coordinates
  • +
  • Copy the Imagemap HTML code
  • +
+

About me

+

Hi folks, My name is Dario D. Müller, web developer and freelance programmer based in Hamburg, Germany. I personally use this software for developing Newsletter and Landingpages.

+

In some kinds of HTML, for example email templates, I don't have the opportunity to use special CSS hacks. It's better to use many images with a lot of links via image maps.

+

I'm really sorry for problems in previous versions, I apologize for that. If you have questions or find bugs, don't be shy to send me an email to . I'm also happy for getting some feedback :)

+
+
+
+ +
+
+

You can't see an image?
Please upload a new one »

+
+ + id="main" class="imgmapMainImage" alt="" usemap="#map" /> + +
+
+

Click into the image to set coordinate values :)

+
+
Add Area
+
Clear Last
+
Clear All
+
Change Image
+
+ + +
+
+ +
+
Easy Imagemap Generator
+ + Uploads are deleted after 3 days
+ This Software uses Google Analytics
+ Feedback?
+ Copyright © by
+
+
+
+ +
+ +
+ + + + + + +
+
+ + + + +
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/js/jquery-1.8.0.min.js b/js/jquery-1.8.0.min.js new file mode 100644 index 0000000..066d72c --- /dev/null +++ b/js/jquery-1.8.0.min.js @@ -0,0 +1,2 @@ +/*! jQuery v@1.8.0 jquery.com | jquery.org/license */ +(function(a,b){function G(a){var b=F[a]={};return p.each(a.split(s),function(a,c){b[c]=!0}),b}function J(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(I,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:+d+""===d?+d:H.test(d)?p.parseJSON(d):d}catch(f){}p.data(a,c,d)}else d=b}return d}function K(a){var b;for(b in a){if(b==="data"&&p.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function ba(){return!1}function bb(){return!0}function bh(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function bi(a,b){do a=a[b];while(a&&a.nodeType!==1);return a}function bj(a,b,c){b=b||0;if(p.isFunction(b))return p.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return p.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=p.grep(a,function(a){return a.nodeType===1});if(be.test(b))return p.filter(b,d,!c);b=p.filter(b,d)}return p.grep(a,function(a,d){return p.inArray(a,b)>=0===c})}function bk(a){var b=bl.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function bC(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bD(a,b){if(b.nodeType!==1||!p.hasData(a))return;var c,d,e,f=p._data(a),g=p._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;d").appendTo(e.body),c=b.css("display");b.remove();if(c==="none"||c===""){bI=e.body.appendChild(bI||p.extend(e.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!bJ||!bI.createElement)bJ=(bI.contentWindow||bI.contentDocument).document,bJ.write(""),bJ.close();b=bJ.body.appendChild(bJ.createElement(a)),c=bH(b,"display"),e.body.removeChild(bI)}return bR[a]=c,c}function ch(a,b,c,d){var e;if(p.isArray(b))p.each(b,function(b,e){c||cd.test(a)?d(a,e):ch(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&p.type(b)==="object")for(e in b)ch(a+"["+e+"]",b[e],c,d);else d(a,b)}function cy(a){return function(b,c){typeof b!="string"&&(c=b,b="*");var d,e,f,g=b.toLowerCase().split(s),h=0,i=g.length;if(p.isFunction(c))for(;h)[^>]*$|#([\w\-]*)$)/,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,y=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,z=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,A=/^-ms-/,B=/-([\da-z])/gi,C=function(a,b){return(b+"").toUpperCase()},D=function(){e.addEventListener?(e.removeEventListener("DOMContentLoaded",D,!1),p.ready()):e.readyState==="complete"&&(e.detachEvent("onreadystatechange",D),p.ready())},E={};p.fn=p.prototype={constructor:p,init:function(a,c,d){var f,g,h,i;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?f=[null,a,null]:f=u.exec(a);if(f&&(f[1]||!c)){if(f[1])return c=c instanceof p?c[0]:c,i=c&&c.nodeType?c.ownerDocument||c:e,a=p.parseHTML(f[1],i,!0),v.test(f[1])&&p.isPlainObject(c)&&this.attr.call(a,c,!0),p.merge(this,a);g=e.getElementById(f[2]);if(g&&g.parentNode){if(g.id!==f[2])return d.find(a);this.length=1,this[0]=g}return this.context=e,this.selector=a,this}return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a)}return p.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),p.makeArray(a,this))},selector:"",jquery:"1.8.0",length:0,size:function(){return this.length},toArray:function(){return k.call(this)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=p.merge(this.constructor(),a);return d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")"),d},each:function(a,b){return p.each(this,a,b)},ready:function(a){return p.ready.promise().done(a),this},eq:function(a){return a=+a,a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(k.apply(this,arguments),"slice",k.call(arguments).join(","))},map:function(a){return this.pushStack(p.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:j,sort:[].sort,splice:[].splice},p.fn.init.prototype=p.fn,p.extend=p.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;typeof h=="boolean"&&(k=h,h=arguments[1]||{},i=2),typeof h!="object"&&!p.isFunction(h)&&(h={}),j===i&&(h=this,--i);for(;i0)return;d.resolveWith(e,[p]),p.fn.trigger&&p(e).trigger("ready").off("ready")},isFunction:function(a){return p.type(a)==="function"},isArray:Array.isArray||function(a){return p.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):E[m.call(a)]||"object"},isPlainObject:function(a){if(!a||p.type(a)!=="object"||a.nodeType||p.isWindow(a))return!1;try{if(a.constructor&&!n.call(a,"constructor")&&!n.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||n.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){var d;return!a||typeof a!="string"?null:(typeof b=="boolean"&&(c=b,b=0),b=b||e,(d=v.exec(a))?[b.createElement(d[1])]:(d=p.buildFragment([a],b,c?null:[]),p.merge([],(d.cacheable?p.clone(d.fragment):d.fragment).childNodes)))},parseJSON:function(b){if(!b||typeof b!="string")return null;b=p.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(w.test(b.replace(y,"@").replace(z,"]").replace(x,"")))return(new Function("return "+b))();p.error("Invalid JSON: "+b)},parseXML:function(c){var d,e;if(!c||typeof c!="string")return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(f){d=b}return(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&p.error("Invalid XML: "+c),d},noop:function(){},globalEval:function(b){b&&r.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(A,"ms-").replace(B,C)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var e,f=0,g=a.length,h=g===b||p.isFunction(a);if(d){if(h){for(e in a)if(c.apply(a[e],d)===!1)break}else for(;f0&&a[0]&&a[i-1]||i===0||p.isArray(a));if(j)for(;h-1)i.splice(c,1),e&&(c<=g&&g--,c<=h&&h--)}),this},has:function(a){return p.inArray(a,i)>-1},empty:function(){return i=[],this},disable:function(){return i=j=c=b,this},disabled:function(){return!i},lock:function(){return j=b,c||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],i&&(!d||j)&&(e?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!d}};return l},p.extend({Deferred:function(a){var b=[["resolve","done",p.Callbacks("once memory"),"resolved"],["reject","fail",p.Callbacks("once memory"),"rejected"],["notify","progress",p.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return p.Deferred(function(c){p.each(b,function(b,d){var f=d[0],g=a[b];e[d[1]](p.isFunction(g)?function(){var a=g.apply(this,arguments);a&&p.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f+"With"](this===e?c:this,[a])}:c[f])}),a=null}).promise()},promise:function(a){return typeof a=="object"?p.extend(a,d):d}},e={};return d.pipe=d.then,p.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[a^1][2].disable,b[2][2].lock),e[f[0]]=g.fire,e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=k.call(arguments),d=c.length,e=d!==1||a&&p.isFunction(a.promise)?d:0,f=e===1?a:p.Deferred(),g=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?k.call(arguments):d,c===h?f.notifyWith(b,c):--e||f.resolveWith(b,c)}},h,i,j;if(d>1){h=new Array(d),i=new Array(d),j=new Array(d);for(;b
a",c=n.getElementsByTagName("*"),d=n.getElementsByTagName("a")[0],d.style.cssText="top:1px;float:left;opacity:.5";if(!c||!c.length||!d)return{};f=e.createElement("select"),g=f.appendChild(e.createElement("option")),h=n.getElementsByTagName("input")[0],b={leadingWhitespace:n.firstChild.nodeType===3,tbody:!n.getElementsByTagName("tbody").length,htmlSerialize:!!n.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:n.className!=="t",enctype:!!e.createElement("form").enctype,html5Clone:e.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",boxModel:e.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},h.checked=!0,b.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!g.disabled;try{delete n.test}catch(o){b.deleteExpando=!1}!n.addEventListener&&n.attachEvent&&n.fireEvent&&(n.attachEvent("onclick",m=function(){b.noCloneEvent=!1}),n.cloneNode(!0).fireEvent("onclick"),n.detachEvent("onclick",m)),h=e.createElement("input"),h.value="t",h.setAttribute("type","radio"),b.radioValue=h.value==="t",h.setAttribute("checked","checked"),h.setAttribute("name","t"),n.appendChild(h),i=e.createDocumentFragment(),i.appendChild(n.lastChild),b.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=h.checked,i.removeChild(h),i.appendChild(n);if(n.attachEvent)for(k in{submit:!0,change:!0,focusin:!0})j="on"+k,l=j in n,l||(n.setAttribute(j,"return;"),l=typeof n[j]=="function"),b[k+"Bubbles"]=l;return p(function(){var c,d,f,g,h="padding:0;margin:0;border:0;display:block;overflow:hidden;",i=e.getElementsByTagName("body")[0];if(!i)return;c=e.createElement("div"),c.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",i.insertBefore(c,i.firstChild),d=e.createElement("div"),c.appendChild(d),d.innerHTML="
t
",f=d.getElementsByTagName("td"),f[0].style.cssText="padding:0;margin:0;border:0;display:none",l=f[0].offsetHeight===0,f[0].style.display="",f[1].style.display="none",b.reliableHiddenOffsets=l&&f[0].offsetHeight===0,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",b.boxSizing=d.offsetWidth===4,b.doesNotIncludeMarginInBodyOffset=i.offsetTop!==1,a.getComputedStyle&&(b.pixelPosition=(a.getComputedStyle(d,null)||{}).top!=="1%",b.boxSizingReliable=(a.getComputedStyle(d,null)||{width:"4px"}).width==="4px",g=e.createElement("div"),g.style.cssText=d.style.cssText=h,g.style.marginRight=g.style.width="0",d.style.width="1px",d.appendChild(g),b.reliableMarginRight=!parseFloat((a.getComputedStyle(g,null)||{}).marginRight)),typeof d.style.zoom!="undefined"&&(d.innerHTML="",d.style.cssText=h+"width:1px;padding:1px;display:inline;zoom:1",b.inlineBlockNeedsLayout=d.offsetWidth===3,d.style.display="block",d.style.overflow="visible",d.innerHTML="
",d.firstChild.style.width="5px",b.shrinkWrapBlocks=d.offsetWidth!==3,c.style.zoom=1),i.removeChild(c),c=d=f=g=null}),i.removeChild(n),c=d=f=g=h=i=n=null,b}();var H=/^(?:\{.*\}|\[.*\])$/,I=/([A-Z])/g;p.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(p.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){return a=a.nodeType?p.cache[a[p.expando]]:a[p.expando],!!a&&!K(a)},data:function(a,c,d,e){if(!p.acceptData(a))return;var f,g,h=p.expando,i=typeof c=="string",j=a.nodeType,k=j?p.cache:a,l=j?a[h]:a[h]&&h;if((!l||!k[l]||!e&&!k[l].data)&&i&&d===b)return;l||(j?a[h]=l=p.deletedIds.pop()||++p.uuid:l=h),k[l]||(k[l]={},j||(k[l].toJSON=p.noop));if(typeof c=="object"||typeof c=="function")e?k[l]=p.extend(k[l],c):k[l].data=p.extend(k[l].data,c);return f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[p.camelCase(c)]=d),i?(g=f[c],g==null&&(g=f[p.camelCase(c)])):g=f,g},removeData:function(a,b,c){if(!p.acceptData(a))return;var d,e,f,g=a.nodeType,h=g?p.cache:a,i=g?a[p.expando]:p.expando;if(!h[i])return;if(b){d=c?h[i]:h[i].data;if(d){p.isArray(b)||(b in d?b=[b]:(b=p.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,f=b.length;e1,null,!1))},removeData:function(a){return this.each(function(){p.removeData(this,a)})}}),p.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=p._data(a,b),c&&(!d||p.isArray(c)?d=p._data(a,b,p.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=p.queue(a,b),d=c.shift(),e=p._queueHooks(a,b),f=function(){p.dequeue(a,b)};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),delete e.stop,d.call(a,f,e)),!c.length&&e&&e.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return p._data(a,c)||p._data(a,c,{empty:p.Callbacks("once memory").add(function(){p.removeData(a,b+"queue",!0),p.removeData(a,c,!0)})})}}),p.fn.extend({queue:function(a,c){var d=2;return typeof a!="string"&&(c=a,a="fx",d--),arguments.length1)},removeAttr:function(a){return this.each(function(){p.removeAttr(this,a)})},prop:function(a,b){return p.access(this,p.prop,a,b,arguments.length>1)},removeProp:function(a){return a=p.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g,h;if(p.isFunction(a))return this.each(function(b){p(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(s);for(c=0,d=this.length;c-1)d=d.replace(" "+c[f]+" "," ");e.className=a?p.trim(d):""}}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";return p.isFunction(a)?this.each(function(c){p(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if(c==="string"){var e,f=0,g=p(this),h=b,i=a.split(s);while(e=i[f++])h=d?h:!g.hasClass(e),g[h?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&p._data(this,"__className__",this.className),this.className=this.className||a===!1?"":p._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c-1)return!0;return!1},val:function(a){var c,d,e,f=this[0];if(!arguments.length){if(f)return c=p.valHooks[f.type]||p.valHooks[f.nodeName.toLowerCase()],c&&"get"in c&&(d=c.get(f,"value"))!==b?d:(d=f.value,typeof d=="string"?d.replace(P,""):d==null?"":d);return}return e=p.isFunction(a),this.each(function(d){var f,g=p(this);if(this.nodeType!==1)return;e?f=a.call(this,d,g.val()):f=a,f==null?f="":typeof f=="number"?f+="":p.isArray(f)&&(f=p.map(f,function(a){return a==null?"":a+""})),c=p.valHooks[this.type]||p.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,f,"value")===b)this.value=f})}}),p.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,f=a.selectedIndex,g=[],h=a.options,i=a.type==="select-one";if(f<0)return null;c=i?f:0,d=i?f+1:h.length;for(;c=0}),c.length||(a.selectedIndex=-1),c}}},attrFn:{},attr:function(a,c,d,e){var f,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return;if(e&&p.isFunction(p.fn[c]))return p(a)[c](d);if(typeof a.getAttribute=="undefined")return p.prop(a,c,d);h=i!==1||!p.isXMLDoc(a),h&&(c=c.toLowerCase(),g=p.attrHooks[c]||(T.test(c)?M:L));if(d!==b){if(d===null){p.removeAttr(a,c);return}return g&&"set"in g&&h&&(f=g.set(a,d,c))!==b?f:(a.setAttribute(c,""+d),d)}return g&&"get"in g&&h&&(f=g.get(a,c))!==null?f:(f=a.getAttribute(c),f===null?b:f)},removeAttr:function(a,b){var c,d,e,f,g=0;if(b&&a.nodeType===1){d=b.split(s);for(;g=0}})});var V=/^(?:textarea|input|select)$/i,W=/^([^\.]*|)(?:\.(.+)|)$/,X=/(?:^|\s)hover(\.\S+|)\b/,Y=/^key/,Z=/^(?:mouse|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=function(a){return p.event.special.hover?a:a.replace(X,"mouseenter$1 mouseleave$1")};p.event={add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,q,r;if(a.nodeType===3||a.nodeType===8||!c||!d||!(g=p._data(a)))return;d.handler&&(o=d,d=o.handler,f=o.selector),d.guid||(d.guid=p.guid++),i=g.events,i||(g.events=i={}),h=g.handle,h||(g.handle=h=function(a){return typeof p!="undefined"&&(!a||p.event.triggered!==a.type)?p.event.dispatch.apply(h.elem,arguments):b},h.elem=a),c=p.trim(_(c)).split(" ");for(j=0;j=0&&(s=s.slice(0,-1),i=!0),s.indexOf(".")>=0&&(t=s.split("."),s=t.shift(),t.sort());if((!f||p.event.customEvent[s])&&!p.event.global[s])return;c=typeof c=="object"?c[p.expando]?c:new p.Event(s,c):new p.Event(s),c.type=s,c.isTrigger=!0,c.exclusive=i,c.namespace=t.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+t.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,m=s.indexOf(":")<0?"on"+s:"";if(!f){h=p.cache;for(j in h)h[j].events&&h[j].events[s]&&p.event.trigger(c,d,h[j].handle.elem,!0);return}c.result=b,c.target||(c.target=f),d=d!=null?p.makeArray(d):[],d.unshift(c),n=p.event.special[s]||{};if(n.trigger&&n.trigger.apply(f,d)===!1)return;q=[[f,n.bindType||s]];if(!g&&!n.noBubble&&!p.isWindow(f)){r=n.delegateType||s,k=$.test(r+s)?f:f.parentNode;for(l=f;k;k=k.parentNode)q.push([k,r]),l=k;l===(f.ownerDocument||e)&&q.push([l.defaultView||l.parentWindow||a,r])}for(j=0;jq&&u.push({elem:this,matches:o.slice(q)});for(d=0;d0?this.on(b,null,a,c):this.trigger(b)},Y.test(b)&&(p.event.fixHooks[b]=p.event.keyHooks),Z.test(b)&&(p.event.fixHooks[b]=p.event.mouseHooks)}),function(a,b){function bd(a,b,c,d){var e=0,f=b.length;for(;e0?h(g,c,f):[]}function bf(a,c,d,e,f){var g,h,i,j,k,l,m,n,p=0,q=f.length,s=L.POS,t=new RegExp("^"+s.source+"(?!"+r+")","i"),u=function(){var a=1,c=arguments.length-2;for(;ai){m=a.slice(i,g.index),i=n,l=[c],B.test(m)&&(k&&(l=k),k=e);if(h=H.test(m))m=m.slice(0,-5).replace(B,"$&*");g.length>1&&g[0].replace(t,u),k=be(m,g[1],g[2],l,k,h)}}k?(j=j.concat(k),(m=a.slice(i))&&m!==")"?B.test(m)?bd(m,j,d,e):Z(m,c,d,e?e.concat(k):k):o.apply(d,j)):Z(a,c,d,e)}return q===1?d:Z.uniqueSort(d)}function bg(a,b,c){var d,e,f,g=[],i=0,j=D.exec(a),k=!j.pop()&&!j.pop(),l=k&&a.match(C)||[""],m=$.preFilter,n=$.filter,o=!c&&b!==h;for(;(e=l[i])!=null&&k;i++){g.push(d=[]),o&&(e=" "+e);while(e){k=!1;if(j=B.exec(e))e=e.slice(j[0].length),k=d.push({part:j.pop().replace(A," "),captures:j});for(f in n)(j=L[f].exec(e))&&(!m[f]||(j=m[f](j,b,c)))&&(e=e.slice(j.shift().length),k=d.push({part:f,captures:j}));if(!k)break}}return k||Z.error(a),g}function bh(a,b,e){var f=b.dir,g=m++;return a||(a=function(a){return a===e}),b.first?function(b,c){while(b=b[f])if(b.nodeType===1)return a(b,c)&&b}:function(b,e){var h,i=g+"."+d,j=i+"."+c;while(b=b[f])if(b.nodeType===1){if((h=b[q])===j)return b.sizset;if(typeof h=="string"&&h.indexOf(i)===0){if(b.sizset)return b}else{b[q]=j;if(a(b,e))return b.sizset=!0,b;b.sizset=!1}}}}function bi(a,b){return a?function(c,d){var e=b(c,d);return e&&a(e===!0?c:e,d)}:b}function bj(a,b,c){var d,e,f=0;for(;d=a[f];f++)$.relative[d.part]?e=bh(e,$.relative[d.part],b):(d.captures.push(b,c),e=bi(e,$.filter[d.part].apply(null,d.captures)));return e}function bk(a){return function(b,c){var d,e=0;for(;d=a[e];e++)if(d(b,c))return!0;return!1}}var c,d,e,f,g,h=a.document,i=h.documentElement,j="undefined",k=!1,l=!0,m=0,n=[].slice,o=[].push,q=("sizcache"+Math.random()).replace(".",""),r="[\\x20\\t\\r\\n\\f]",s="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",t=s.replace("w","w#"),u="([*^$|!~]?=)",v="\\["+r+"*("+s+")"+r+"*(?:"+u+r+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+t+")|)|)"+r+"*\\]",w=":("+s+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|((?:[^,]|\\\\,|(?:,(?=[^\\[]*\\]))|(?:,(?=[^\\(]*\\))))*))\\)|)",x=":(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\)|)(?=[^-]|$)",y=r+"*([\\x20\\t\\r\\n\\f>+~])"+r+"*",z="(?=[^\\x20\\t\\r\\n\\f])(?:\\\\.|"+v+"|"+w.replace(2,7)+"|[^\\\\(),])+",A=new RegExp("^"+r+"+|((?:^|[^\\\\])(?:\\\\.)*)"+r+"+$","g"),B=new RegExp("^"+y),C=new RegExp(z+"?(?="+r+"*,|$)","g"),D=new RegExp("^(?:(?!,)(?:(?:^|,)"+r+"*"+z+")*?|"+r+"*(.*?))(\\)|$)"),E=new RegExp(z.slice(19,-6)+"\\x20\\t\\r\\n\\f>+~])+|"+y,"g"),F=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,G=/[\x20\t\r\n\f]*[+~]/,H=/:not\($/,I=/h\d/i,J=/input|select|textarea|button/i,K=/\\(?!\\)/g,L={ID:new RegExp("^#("+s+")"),CLASS:new RegExp("^\\.("+s+")"),NAME:new RegExp("^\\[name=['\"]?("+s+")['\"]?\\]"),TAG:new RegExp("^("+s.replace("[-","[-\\*")+")"),ATTR:new RegExp("^"+v),PSEUDO:new RegExp("^"+w),CHILD:new RegExp("^:(only|nth|last|first)-child(?:\\("+r+"*(even|odd|(([+-]|)(\\d*)n|)"+r+"*(?:([+-]|)"+r+"*(\\d+)|))"+r+"*\\)|)","i"),POS:new RegExp(x,"ig"),needsContext:new RegExp("^"+r+"*[>+~]|"+x,"i")},M={},N=[],O={},P=[],Q=function(a){return a.sizzleFilter=!0,a},R=function(a){return function(b){return b.nodeName.toLowerCase()==="input"&&b.type===a}},S=function(a){return function(b){var c=b.nodeName.toLowerCase();return(c==="input"||c==="button")&&b.type===a}},T=function(a){var b=!1,c=h.createElement("div");try{b=a(c)}catch(d){}return c=null,b},U=T(function(a){a.innerHTML="";var b=typeof a.lastChild.getAttribute("multiple");return b!=="boolean"&&b!=="string"}),V=T(function(a){a.id=q+0,a.innerHTML="
",i.insertBefore(a,i.firstChild);var b=h.getElementsByName&&h.getElementsByName(q).length===2+h.getElementsByName(q+0).length;return g=!h.getElementById(q),i.removeChild(a),b}),W=T(function(a){return a.appendChild(h.createComment("")),a.getElementsByTagName("*").length===0}),X=T(function(a){return a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!==j&&a.firstChild.getAttribute("href")==="#"}),Y=T(function(a){return a.innerHTML="",!a.getElementsByClassName||a.getElementsByClassName("e").length===0?!1:(a.lastChild.className="e",a.getElementsByClassName("e").length!==1)}),Z=function(a,b,c,d){c=c||[],b=b||h;var e,f,g,i,j=b.nodeType;if(j!==1&&j!==9)return[];if(!a||typeof a!="string")return c;g=ba(b);if(!g&&!d)if(e=F.exec(a))if(i=e[1]){if(j===9){f=b.getElementById(i);if(!f||!f.parentNode)return c;if(f.id===i)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(i))&&bb(b,f)&&f.id===i)return c.push(f),c}else{if(e[2])return o.apply(c,n.call(b.getElementsByTagName(a),0)),c;if((i=e[3])&&Y&&b.getElementsByClassName)return o.apply(c,n.call(b.getElementsByClassName(i),0)),c}return bm(a,b,c,d,g)},$=Z.selectors={cacheLength:50,match:L,order:["ID","TAG"],attrHandle:{},createPseudo:Q,find:{ID:g?function(a,b,c){if(typeof b.getElementById!==j&&!c){var d=b.getElementById(a);return d&&d.parentNode?[d]:[]}}:function(a,c,d){if(typeof c.getElementById!==j&&!d){var e=c.getElementById(a);return e?e.id===a||typeof e.getAttributeNode!==j&&e.getAttributeNode("id").value===a?[e]:b:[]}},TAG:W?function(a,b){if(typeof b.getElementsByTagName!==j)return b.getElementsByTagName(a)}:function(a,b){var c=b.getElementsByTagName(a);if(a==="*"){var d,e=[],f=0;for(;d=c[f];f++)d.nodeType===1&&e.push(d);return e}return c}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(K,""),a[3]=(a[4]||a[5]||"").replace(K,""),a[2]==="~="&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),a[1]==="nth"?(a[2]||Z.error(a[0]),a[3]=+(a[3]?a[4]+(a[5]||1):2*(a[2]==="even"||a[2]==="odd")),a[4]=+(a[6]+a[7]||a[2]==="odd")):a[2]&&Z.error(a[0]),a},PSEUDO:function(a){var b,c=a[4];return L.CHILD.test(a[0])?null:(c&&(b=D.exec(c))&&b.pop()&&(a[0]=a[0].slice(0,b[0].length-c.length-1),c=b[0].slice(0,-1)),a.splice(2,3,c||a[3]),a)}},filter:{ID:g?function(a){return a=a.replace(K,""),function(b){return b.getAttribute("id")===a}}:function(a){return a=a.replace(K,""),function(b){var c=typeof b.getAttributeNode!==j&&b.getAttributeNode("id");return c&&c.value===a}},TAG:function(a){return a==="*"?function(){return!0}:(a=a.replace(K,"").toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=M[a];return b||(b=M[a]=new RegExp("(^|"+r+")"+a+"("+r+"|$)"),N.push(a),N.length>$.cacheLength&&delete M[N.shift()]),function(a){return b.test(a.className||typeof a.getAttribute!==j&&a.getAttribute("class")||"")}},ATTR:function(a,b,c){return b?function(d){var e=Z.attr(d,a),f=e+"";if(e==null)return b==="!=";switch(b){case"=":return f===c;case"!=":return f!==c;case"^=":return c&&f.indexOf(c)===0;case"*=":return c&&f.indexOf(c)>-1;case"$=":return c&&f.substr(f.length-c.length)===c;case"~=":return(" "+f+" ").indexOf(c)>-1;case"|=":return f===c||f.substr(0,c.length+1)===c+"-"}}:function(b){return Z.attr(b,a)!=null}},CHILD:function(a,b,c,d){if(a==="nth"){var e=m++;return function(a){var b,f,g=0,h=a;if(c===1&&d===0)return!0;b=a.parentNode;if(b&&(b[q]!==e||!a.sizset)){for(h=b.firstChild;h;h=h.nextSibling)if(h.nodeType===1){h.sizset=++g;if(h===a)break}b[q]=e}return f=a.sizset-d,c===0?f===0:f%c===0&&f/c>=0}}return function(b){var c=b;switch(a){case"only":case"first":while(c=c.previousSibling)if(c.nodeType===1)return!1;if(a==="first")return!0;c=b;case"last":while(c=c.nextSibling)if(c.nodeType===1)return!1;return!0}}},PSEUDO:function(a,b,c,d){var e=$.pseudos[a]||$.pseudos[a.toLowerCase()];return e||Z.error("unsupported pseudo: "+a),e.sizzleFilter?e(b,c,d):e}},pseudos:{not:Q(function(a,b,c){var d=bl(a.replace(A,"$1"),b,c);return function(a){return!d(a)}}),enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&!!a.checked||b==="option"&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},parent:function(a){return!$.pseudos.empty(a)},empty:function(a){var b;a=a.firstChild;while(a){if(a.nodeName>"@"||(b=a.nodeType)===3||b===4)return!1;a=a.nextSibling}return!0},contains:Q(function(a){return function(b){return(b.textContent||b.innerText||bc(b)).indexOf(a)>-1}}),has:Q(function(a){return function(b){return Z(a,b).length>0}}),header:function(a){return I.test(a.nodeName)},text:function(a){var b,c;return a.nodeName.toLowerCase()==="input"&&(b=a.type)==="text"&&((c=a.getAttribute("type"))==null||c.toLowerCase()===b)},radio:R("radio"),checkbox:R("checkbox"),file:R("file"),password:R("password"),image:R("image"),submit:S("submit"),reset:S("reset"),button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&a.type==="button"||b==="button"},input:function(a){return J.test(a.nodeName)},focus:function(a){var b=a.ownerDocument;return a===b.activeElement&&(!b.hasFocus||b.hasFocus())&&(!!a.type||!!a.href)},active:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b,c){return c?a.slice(1):[a[0]]},last:function(a,b,c){var d=a.pop();return c?a:[d]},even:function(a,b,c){var d=[],e=c?1:0,f=a.length;for(;e$.cacheLength&&delete O[P.shift()],g};Z.matches=function(a,b){return Z(a,null,null,b)},Z.matchesSelector=function(a,b){return Z(b,null,null,[a]).length>0};var bm=function(a,b,e,f,g){a=a.replace(A,"$1");var h,i,j,k,l,m,p,q,r,s=a.match(C),t=a.match(E),u=b.nodeType;if(L.POS.test(a))return bf(a,b,e,f,s);if(f)h=n.call(f,0);else if(s&&s.length===1){if(t.length>1&&u===9&&!g&&(s=L.ID.exec(t[0]))){b=$.find.ID(s[1],b,g)[0];if(!b)return e;a=a.slice(t.shift().length)}q=(s=G.exec(t[0]))&&!s.index&&b.parentNode||b,r=t.pop(),m=r.split(":not")[0];for(j=0,k=$.order.length;j",a.querySelectorAll("[selected]").length||e.push("\\["+r+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),a.querySelectorAll(":checked").length||e.push(":checked")}),T(function(a){a.innerHTML="

",a.querySelectorAll("[test^='']").length&&e.push("[*^$]="+r+"*(?:\"\"|'')"),a.innerHTML="",a.querySelectorAll(":enabled").length||e.push(":enabled",":disabled")}),e=e.length&&new RegExp(e.join("|")),bm=function(a,d,f,g,h){if(!g&&!h&&(!e||!e.test(a)))if(d.nodeType===9)try{return o.apply(f,n.call(d.querySelectorAll(a),0)),f}catch(i){}else if(d.nodeType===1&&d.nodeName.toLowerCase()!=="object"){var j=d.getAttribute("id"),k=j||q,l=G.test(a)&&d.parentNode||d;j?k=k.replace(c,"\\$&"):d.setAttribute("id",k);try{return o.apply(f,n.call(l.querySelectorAll(a.replace(C,"[id='"+k+"'] $&")),0)),f}catch(i){}finally{j||d.removeAttribute("id")}}return b(a,d,f,g,h)},g&&(T(function(b){a=g.call(b,"div");try{g.call(b,"[test!='']:sizzle"),f.push($.match.PSEUDO)}catch(c){}}),f=new RegExp(f.join("|")),Z.matchesSelector=function(b,c){c=c.replace(d,"='$1']");if(!ba(b)&&!f.test(c)&&(!e||!e.test(c)))try{var h=g.call(b,c);if(h||a||b.document&&b.document.nodeType!==11)return h}catch(i){}return Z(c,null,null,[b]).length>0})}(),Z.attr=p.attr,p.find=Z,p.expr=Z.selectors,p.expr[":"]=p.expr.pseudos,p.unique=Z.uniqueSort,p.text=Z.getText,p.isXMLDoc=Z.isXML,p.contains=Z.contains}(a);var bc=/Until$/,bd=/^(?:parents|prev(?:Until|All))/,be=/^.[^:#\[\.,]*$/,bf=p.expr.match.needsContext,bg={children:!0,contents:!0,next:!0,prev:!0};p.fn.extend({find:function(a){var b,c,d,e,f,g,h=this;if(typeof a!="string")return p(a).filter(function(){for(b=0,c=h.length;b0)for(e=d;e=0:p.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c,d=0,e=this.length,f=[],g=bf.test(a)||typeof a!="string"?p(a,b||this.context):0;for(;d-1:p.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}}return f=f.length>1?p.unique(f):f,this.pushStack(f,"closest",a)},index:function(a){return a?typeof a=="string"?p.inArray(this[0],p(a)):p.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(a,b){var c=typeof a=="string"?p(a,b):p.makeArray(a&&a.nodeType?[a]:a),d=p.merge(this.get(),c);return this.pushStack(bh(c[0])||bh(d[0])?d:p.unique(d))},addBack:function(a){return this.add(a==null?this.prevObject:this.prevObject.filter(a))}}),p.fn.andSelf=p.fn.addBack,p.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return p.dir(a,"parentNode")},parentsUntil:function(a,b,c){return p.dir(a,"parentNode",c)},next:function(a){return bi(a,"nextSibling")},prev:function(a){return bi(a,"previousSibling")},nextAll:function(a){return p.dir(a,"nextSibling")},prevAll:function(a){return p.dir(a,"previousSibling")},nextUntil:function(a,b,c){return p.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return p.dir(a,"previousSibling",c)},siblings:function(a){return p.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return p.sibling(a.firstChild)},contents:function(a){return p.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:p.merge([],a.childNodes)}},function(a,b){p.fn[a]=function(c,d){var e=p.map(this,b,c);return bc.test(a)||(d=c),d&&typeof d=="string"&&(e=p.filter(d,e)),e=this.length>1&&!bg[a]?p.unique(e):e,this.length>1&&bd.test(a)&&(e=e.reverse()),this.pushStack(e,a,k.call(arguments).join(","))}}),p.extend({filter:function(a,b,c){return c&&(a=":not("+a+")"),b.length===1?p.find.matchesSelector(b[0],a)?[b[0]]:[]:p.find.matches(a,b)},dir:function(a,c,d){var e=[],f=a[c];while(f&&f.nodeType!==9&&(d===b||f.nodeType!==1||!p(f).is(d)))f.nodeType===1&&e.push(f),f=f[c];return e},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var bl="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",bm=/ jQuery\d+="(?:null|\d+)"/g,bn=/^\s+/,bo=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bp=/<([\w:]+)/,bq=/]","i"),bv=/^(?:checkbox|radio)$/,bw=/checked\s*(?:[^=]|=\s*.checked.)/i,bx=/\/(java|ecma)script/i,by=/^\s*\s*$/g,bz={option:[1,""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bA=bk(e),bB=bA.appendChild(e.createElement("div"));bz.optgroup=bz.option,bz.tbody=bz.tfoot=bz.colgroup=bz.caption=bz.thead,bz.th=bz.td,p.support.htmlSerialize||(bz._default=[1,"X
","
"]),p.fn.extend({text:function(a){return p.access(this,function(a){return a===b?p.text(this):this.empty().append((this[0]&&this[0].ownerDocument||e).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(p.isFunction(a))return this.each(function(b){p(this).wrapAll(a.call(this,b))});if(this[0]){var b=p(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return p.isFunction(a)?this.each(function(b){p(this).wrapInner(a.call(this,b))}):this.each(function(){var b=p(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=p.isFunction(a);return this.each(function(c){p(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){p.nodeName(this,"body")||p(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(a,this.firstChild)})},before:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(a,this),"before",this.selector)}},after:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(this,a),"after",this.selector)}},remove:function(a,b){var c,d=0;for(;(c=this[d])!=null;d++)if(!a||p.filter(a,[c]).length)!b&&c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),p.cleanData([c])),c.parentNode&&c.parentNode.removeChild(c);return this},empty:function(){var a,b=0;for(;(a=this[b])!=null;b++){a.nodeType===1&&p.cleanData(a.getElementsByTagName("*"));while(a.firstChild)a.removeChild(a.firstChild)}return this},clone:function(a,b){return a=a==null?!1:a,b=b==null?a:b,this.map(function(){return p.clone(this,a,b)})},html:function(a){return p.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(bm,""):b;if(typeof a=="string"&&!bs.test(a)&&(p.support.htmlSerialize||!bu.test(a))&&(p.support.leadingWhitespace||!bn.test(a))&&!bz[(bp.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(bo,"<$1>");try{for(;d1&&typeof j=="string"&&bw.test(j))return this.each(function(){p(this).domManip(a,c,d)});if(p.isFunction(j))return this.each(function(e){var f=p(this);a[0]=j.call(this,e,c?f.html():b),f.domManip(a,c,d)});if(this[0]){e=p.buildFragment(a,this,k),g=e.fragment,f=g.firstChild,g.childNodes.length===1&&(g=f);if(f){c=c&&p.nodeName(f,"tr");for(h=e.cacheable||l-1;i0?this.clone(!0):this).get(),p(g[e])[b](d),f=f.concat(d);return this.pushStack(f,a,g.selector)}}),p.extend({clone:function(a,b,c){var d,e,f,g;p.support.html5Clone||p.isXMLDoc(a)||!bu.test("<"+a.nodeName+">")?g=a.cloneNode(!0):(bB.innerHTML=a.outerHTML,bB.removeChild(g=bB.firstChild));if((!p.support.noCloneEvent||!p.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!p.isXMLDoc(a)){bE(a,g),d=bF(a),e=bF(g);for(f=0;d[f];++f)e[f]&&bE(d[f],e[f])}if(b){bD(a,g);if(c){d=bF(a),e=bF(g);for(f=0;d[f];++f)bD(d[f],e[f])}}return d=e=null,g},clean:function(a,b,c,d){var f,g,h,i,j,k,l,m,n,o,q,r,s=0,t=[];if(!b||typeof b.createDocumentFragment=="undefined")b=e;for(g=b===e&&bA;(h=a[s])!=null;s++){typeof h=="number"&&(h+="");if(!h)continue;if(typeof h=="string")if(!br.test(h))h=b.createTextNode(h);else{g=g||bk(b),l=l||g.appendChild(b.createElement("div")),h=h.replace(bo,"<$1>"),i=(bp.exec(h)||["",""])[1].toLowerCase(),j=bz[i]||bz._default,k=j[0],l.innerHTML=j[1]+h+j[2];while(k--)l=l.lastChild;if(!p.support.tbody){m=bq.test(h),n=i==="table"&&!m?l.firstChild&&l.firstChild.childNodes:j[1]===""&&!m?l.childNodes:[];for(f=n.length-1;f>=0;--f)p.nodeName(n[f],"tbody")&&!n[f].childNodes.length&&n[f].parentNode.removeChild(n[f])}!p.support.leadingWhitespace&&bn.test(h)&&l.insertBefore(b.createTextNode(bn.exec(h)[0]),l.firstChild),h=l.childNodes,l=g.lastChild}h.nodeType?t.push(h):t=p.merge(t,h)}l&&(g.removeChild(l),h=l=g=null);if(!p.support.appendChecked)for(s=0;(h=t[s])!=null;s++)p.nodeName(h,"input")?bG(h):typeof h.getElementsByTagName!="undefined"&&p.grep(h.getElementsByTagName("input"),bG);if(c){q=function(a){if(!a.type||bx.test(a.type))return d?d.push(a.parentNode?a.parentNode.removeChild(a):a):c.appendChild(a)};for(s=0;(h=t[s])!=null;s++)if(!p.nodeName(h,"script")||!q(h))c.appendChild(h),typeof h.getElementsByTagName!="undefined"&&(r=p.grep(p.merge([],h.getElementsByTagName("script")),q),t.splice.apply(t,[s+1,0].concat(r)),s+=r.length)}return t},cleanData:function(a,b){var c,d,e,f,g=0,h=p.expando,i=p.cache,j=p.support.deleteExpando,k=p.event.special;for(;(e=a[g])!=null;g++)if(b||p.acceptData(e)){d=e[h],c=d&&i[d];if(c){if(c.events)for(f in c.events)k[f]?p.event.remove(e,f):p.removeEvent(e,f,c.handle);i[d]&&(delete i[d],j?delete e[h]:e.removeAttribute?e.removeAttribute(h):e[h]=null,p.deletedIds.push(d))}}}}),function(){var a,b;p.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a=p.uaMatch(g.userAgent),b={},a.browser&&(b[a.browser]=!0,b.version=a.version),b.webkit&&(b.safari=!0),p.browser=b,p.sub=function(){function a(b,c){return new a.fn.init(b,c)}p.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function c(c,d){return d&&d instanceof p&&!(d instanceof a)&&(d=a(d)),p.fn.init.call(this,c,d,b)},a.fn.init.prototype=a.fn;var b=a(e);return a}}();var bH,bI,bJ,bK=/alpha\([^)]*\)/i,bL=/opacity=([^)]*)/,bM=/^(top|right|bottom|left)$/,bN=/^margin/,bO=new RegExp("^("+q+")(.*)$","i"),bP=new RegExp("^("+q+")(?!px)[a-z%]+$","i"),bQ=new RegExp("^([-+])=("+q+")","i"),bR={},bS={position:"absolute",visibility:"hidden",display:"block"},bT={letterSpacing:0,fontWeight:400,lineHeight:1},bU=["Top","Right","Bottom","Left"],bV=["Webkit","O","Moz","ms"],bW=p.fn.toggle;p.fn.extend({css:function(a,c){return p.access(this,function(a,c,d){return d!==b?p.style(a,c,d):p.css(a,c)},a,c,arguments.length>1)},show:function(){return bZ(this,!0)},hide:function(){return bZ(this)},toggle:function(a,b){var c=typeof a=="boolean";return p.isFunction(a)&&p.isFunction(b)?bW.apply(this,arguments):this.each(function(){(c?a:bY(this))?p(this).show():p(this).hide()})}}),p.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bH(a,"opacity");return c===""?"1":c}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":p.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!a||a.nodeType===3||a.nodeType===8||!a.style)return;var f,g,h,i=p.camelCase(c),j=a.style;c=p.cssProps[i]||(p.cssProps[i]=bX(j,i)),h=p.cssHooks[c]||p.cssHooks[i];if(d===b)return h&&"get"in h&&(f=h.get(a,!1,e))!==b?f:j[c];g=typeof d,g==="string"&&(f=bQ.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(p.css(a,c)),g="number");if(d==null||g==="number"&&isNaN(d))return;g==="number"&&!p.cssNumber[i]&&(d+="px");if(!h||!("set"in h)||(d=h.set(a,d,e))!==b)try{j[c]=d}catch(k){}},css:function(a,c,d,e){var f,g,h,i=p.camelCase(c);return c=p.cssProps[i]||(p.cssProps[i]=bX(a.style,i)),h=p.cssHooks[c]||p.cssHooks[i],h&&"get"in h&&(f=h.get(a,!0,e)),f===b&&(f=bH(a,c)),f==="normal"&&c in bT&&(f=bT[c]),d||e!==b?(g=parseFloat(f),d||p.isNumeric(g)?g||0:f):f},swap:function(a,b,c){var d,e,f={};for(e in b)f[e]=a.style[e],a.style[e]=b[e];d=c.call(a);for(e in b)a.style[e]=f[e];return d}}),a.getComputedStyle?bH=function(a,b){var c,d,e,f,g=getComputedStyle(a,null),h=a.style;return g&&(c=g[b],c===""&&!p.contains(a.ownerDocument.documentElement,a)&&(c=p.style(a,b)),bP.test(c)&&bN.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=c,c=g.width,h.width=d,h.minWidth=e,h.maxWidth=f)),c}:e.documentElement.currentStyle&&(bH=function(a,b){var c,d,e=a.currentStyle&&a.currentStyle[b],f=a.style;return e==null&&f&&f[b]&&(e=f[b]),bP.test(e)&&!bM.test(b)&&(c=f.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":e,e=f.pixelLeft+"px",f.left=c,d&&(a.runtimeStyle.left=d)),e===""?"auto":e}),p.each(["height","width"],function(a,b){p.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0||bH(a,"display")!=="none"?ca(a,b,d):p.swap(a,bS,function(){return ca(a,b,d)})},set:function(a,c,d){return b$(a,c,d?b_(a,b,d,p.support.boxSizing&&p.css(a,"boxSizing")==="border-box"):0)}}}),p.support.opacity||(p.cssHooks.opacity={get:function(a,b){return bL.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=p.isNumeric(b)?"alpha(opacity="+b*100+")":"",f=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&p.trim(f.replace(bK,""))===""&&c.removeAttribute){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bK.test(f)?f.replace(bK,e):f+" "+e}}),p(function(){p.support.reliableMarginRight||(p.cssHooks.marginRight={get:function(a,b){return p.swap(a,{display:"inline-block"},function(){if(b)return bH(a,"marginRight")})}}),!p.support.pixelPosition&&p.fn.position&&p.each(["top","left"],function(a,b){p.cssHooks[b]={get:function(a,c){if(c){var d=bH(a,b);return bP.test(d)?p(a).position()[b]+"px":d}}}})}),p.expr&&p.expr.filters&&(p.expr.filters.hidden=function(a){return a.offsetWidth===0&&a.offsetHeight===0||!p.support.reliableHiddenOffsets&&(a.style&&a.style.display||bH(a,"display"))==="none"},p.expr.filters.visible=function(a){return!p.expr.filters.hidden(a)}),p.each({margin:"",padding:"",border:"Width"},function(a,b){p.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bU[d]+b]=e[d]||e[d-2]||e[0];return f}},bN.test(a)||(p.cssHooks[a+b].set=b$)});var cc=/%20/g,cd=/\[\]$/,ce=/\r?\n/g,cf=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,cg=/^(?:select|textarea)/i;p.fn.extend({serialize:function(){return p.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?p.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||cg.test(this.nodeName)||cf.test(this.type))}).map(function(a,b){var c=p(this).val();return c==null?null:p.isArray(c)?p.map(c,function(a,c){return{name:b.name,value:a.replace(ce,"\r\n")}}):{name:b.name,value:c.replace(ce,"\r\n")}}).get()}}),p.param=function(a,c){var d,e=[],f=function(a,b){b=p.isFunction(b)?b():b==null?"":b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=p.ajaxSettings&&p.ajaxSettings.traditional);if(p.isArray(a)||a.jquery&&!p.isPlainObject(a))p.each(a,function(){f(this.name,this.value)});else for(d in a)ch(d,a[d],c,f);return e.join("&").replace(cc,"+")};var ci,cj,ck=/#.*$/,cl=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,cm=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,cn=/^(?:GET|HEAD)$/,co=/^\/\//,cp=/\?/,cq=/)<[^<]*)*<\/script>/gi,cr=/([?&])_=[^&]*/,cs=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,ct=p.fn.load,cu={},cv={},cw=["*/"]+["*"];try{ci=f.href}catch(cx){ci=e.createElement("a"),ci.href="",ci=ci.href}cj=cs.exec(ci.toLowerCase())||[],p.fn.load=function(a,c,d){if(typeof a!="string"&&ct)return ct.apply(this,arguments);if(!this.length)return this;var e,f,g,h=this,i=a.indexOf(" ");return i>=0&&(e=a.slice(i,a.length),a=a.slice(0,i)),p.isFunction(c)?(d=c,c=b):typeof c=="object"&&(f="POST"),p.ajax({url:a,type:f,dataType:"html",data:c,complete:function(a,b){d&&h.each(d,g||[a.responseText,b,a])}}).done(function(a){g=arguments,h.html(e?p("
").append(a.replace(cq,"")).find(e):a)}),this},p.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){p.fn[b]=function(a){return this.on(b,a)}}),p.each(["get","post"],function(a,c){p[c]=function(a,d,e,f){return p.isFunction(d)&&(f=f||e,e=d,d=b),p.ajax({type:c,url:a,data:d,success:e,dataType:f})}}),p.extend({getScript:function(a,c){return p.get(a,b,c,"script")},getJSON:function(a,b,c){return p.get(a,b,c,"json")},ajaxSetup:function(a,b){return b?cA(a,p.ajaxSettings):(b=a,a=p.ajaxSettings),cA(a,b),a},ajaxSettings:{url:ci,isLocal:cm.test(cj[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":cw},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":p.parseJSON,"text xml":p.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:cy(cu),ajaxTransport:cy(cv),ajax:function(a,c){function y(a,c,f,i){var k,s,t,u,w,y=c;if(v===2)return;v=2,h&&clearTimeout(h),g=b,e=i||"",x.readyState=a>0?4:0,f&&(u=cB(l,x,f));if(a>=200&&a<300||a===304)l.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(p.lastModified[d]=w),w=x.getResponseHeader("Etag"),w&&(p.etag[d]=w)),a===304?(y="notmodified",k=!0):(k=cC(l,u),y=k.state,s=k.data,t=k.error,k=!t);else{t=y;if(!y||a)y="error",a<0&&(a=0)}x.status=a,x.statusText=""+(c||y),k?o.resolveWith(m,[s,y,x]):o.rejectWith(m,[x,y,t]),x.statusCode(r),r=b,j&&n.trigger("ajax"+(k?"Success":"Error"),[x,l,k?s:t]),q.fireWith(m,[x,y]),j&&(n.trigger("ajaxComplete",[x,l]),--p.active||p.event.trigger("ajaxStop"))}typeof a=="object"&&(c=a,a=b),c=c||{};var d,e,f,g,h,i,j,k,l=p.ajaxSetup({},c),m=l.context||l,n=m!==l&&(m.nodeType||m instanceof p)?p(m):p.event,o=p.Deferred(),q=p.Callbacks("once memory"),r=l.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,setRequestHeader:function(a,b){if(!v){var c=a.toLowerCase();a=u[c]=u[c]||a,t[a]=b}return this},getAllResponseHeaders:function(){return v===2?e:null},getResponseHeader:function(a){var c;if(v===2){if(!f){f={};while(c=cl.exec(e))f[c[1].toLowerCase()]=c[2]}c=f[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){return v||(l.mimeType=a),this},abort:function(a){return a=a||w,g&&g.abort(a),y(0,a),this}};o.promise(x),x.success=x.done,x.error=x.fail,x.complete=q.add,x.statusCode=function(a){if(a){var b;if(v<2)for(b in a)r[b]=[r[b],a[b]];else b=a[x.status],x.always(b)}return this},l.url=((a||l.url)+"").replace(ck,"").replace(co,cj[1]+"//"),l.dataTypes=p.trim(l.dataType||"*").toLowerCase().split(s),l.crossDomain==null&&(i=cs.exec(l.url.toLowerCase()),l.crossDomain=!(!i||i[1]==cj[1]&&i[2]==cj[2]&&(i[3]||(i[1]==="http:"?80:443))==(cj[3]||(cj[1]==="http:"?80:443)))),l.data&&l.processData&&typeof l.data!="string"&&(l.data=p.param(l.data,l.traditional)),cz(cu,l,c,x);if(v===2)return x;j=l.global,l.type=l.type.toUpperCase(),l.hasContent=!cn.test(l.type),j&&p.active++===0&&p.event.trigger("ajaxStart");if(!l.hasContent){l.data&&(l.url+=(cp.test(l.url)?"&":"?")+l.data,delete l.data),d=l.url;if(l.cache===!1){var z=p.now(),A=l.url.replace(cr,"$1_="+z);l.url=A+(A===l.url?(cp.test(l.url)?"&":"?")+"_="+z:"")}}(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",l.contentType),l.ifModified&&(d=d||l.url,p.lastModified[d]&&x.setRequestHeader("If-Modified-Since",p.lastModified[d]),p.etag[d]&&x.setRequestHeader("If-None-Match",p.etag[d])),x.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+(l.dataTypes[0]!=="*"?", "+cw+"; q=0.01":""):l.accepts["*"]);for(k in l.headers)x.setRequestHeader(k,l.headers[k]);if(!l.beforeSend||l.beforeSend.call(m,x,l)!==!1&&v!==2){w="abort";for(k in{success:1,error:1,complete:1})x[k](l[k]);g=cz(cv,l,c,x);if(!g)y(-1,"No Transport");else{x.readyState=1,j&&n.trigger("ajaxSend",[x,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){x.abort("timeout")},l.timeout));try{v=1,g.send(t,y)}catch(B){if(v<2)y(-1,B);else throw B}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var cD=[],cE=/\?/,cF=/(=)\?(?=&|$)|\?\?/,cG=p.now();p.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=cD.pop()||p.expando+"_"+cG++;return this[a]=!0,a}}),p.ajaxPrefilter("json jsonp",function(c,d,e){var f,g,h,i=c.data,j=c.url,k=c.jsonp!==!1,l=k&&cF.test(j),m=k&&!l&&typeof i=="string"&&!(c.contentType||"").indexOf("application/x-www-form-urlencoded")&&cF.test(i);if(c.dataTypes[0]==="jsonp"||l||m)return f=c.jsonpCallback=p.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,g=a[f],l?c.url=j.replace(cF,"$1"+f):m?c.data=i.replace(cF,"$1"+f):k&&(c.url+=(cE.test(j)?"&":"?")+c.jsonp+"="+f),c.converters["script json"]=function(){return h||p.error(f+" was not called"),h[0]},c.dataTypes[0]="json",a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]&&(c.jsonpCallback=d.jsonpCallback,cD.push(f)),h&&p.isFunction(g)&&g(h[0]),h=g=b}),"script"}),p.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){return p.globalEval(a),a}}}),p.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),p.ajaxTransport("script",function(a){if(a.crossDomain){var c,d=e.head||e.getElementsByTagName("head")[0]||e.documentElement;return{send:function(f,g){c=e.createElement("script"),c.async="async",a.scriptCharset&&(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,e){if(e||!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,d&&c.parentNode&&d.removeChild(c),c=b,e||g(200,"success")},d.insertBefore(c,d.firstChild)},abort:function(){c&&c.onload(0,1)}}}});var cH,cI=a.ActiveXObject?function(){for(var a in cH)cH[a](0,1)}:!1,cJ=0;p.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cK()||cL()}:cK,function(a){p.extend(p.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(p.ajaxSettings.xhr()),p.support.ajax&&p.ajaxTransport(function(c){if(!c.crossDomain||p.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async);if(c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType&&i.overrideMimeType&&i.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent&&c.data||null),d=function(a,e){var h,j,k,l,m;try{if(d&&(e||i.readyState===4)){d=b,g&&(i.onreadystatechange=p.noop,cI&&delete cH[g]);if(e)i.readyState!==4&&i.abort();else{h=i.status,k=i.getAllResponseHeaders(),l={},m=i.responseXML,m&&m.documentElement&&(l.xml=m);try{l.text=i.responseText}catch(a){}try{j=i.statusText}catch(n){j=""}!h&&c.isLocal&&!c.crossDomain?h=l.text?200:404:h===1223&&(h=204)}}}catch(o){e||f(-1,o)}l&&f(h,j,l,k)},c.async?i.readyState===4?setTimeout(d,0):(g=++cJ,cI&&(cH||(cH={},p(a).unload(cI)),cH[g]=d),i.onreadystatechange=d):d()},abort:function(){d&&d(0,1)}}}});var cM,cN,cO=/^(?:toggle|show|hide)$/,cP=new RegExp("^(?:([-+])=|)("+q+")([a-z%]*)$","i"),cQ=/queueHooks$/,cR=[cX],cS={"*":[function(a,b){var c,d,e,f=this.createTween(a,b),g=cP.exec(b),h=f.cur(),i=+h||0,j=1;if(g){c=+g[2],d=g[3]||(p.cssNumber[a]?"":"px");if(d!=="px"&&i){i=p.css(f.elem,a,!0)||c||1;do e=j=j||".5",i=i/j,p.style(f.elem,a,i+d),j=f.cur()/h;while(j!==1&&j!==e)}f.unit=d,f.start=i,f.end=g[1]?i+(g[1]+1)*c:c}return f}]};p.Animation=p.extend(cV,{tweener:function(a,b){p.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");var c,d=0,e=a.length;for(;d-1,j={},k={},l,m;i?(k=e.position(),l=k.top,m=k.left):(l=parseFloat(g)||0,m=parseFloat(h)||0),p.isFunction(b)&&(b=b.call(a,c,f)),b.top!=null&&(j.top=b.top-f.top+l),b.left!=null&&(j.left=b.left-f.left+m),"using"in b?b.using.call(a,j):e.css(j)}},p.fn.extend({position:function(){if(!this[0])return;var a=this[0],b=this.offsetParent(),c=this.offset(),d=c$.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(p.css(a,"marginTop"))||0,c.left-=parseFloat(p.css(a,"marginLeft"))||0,d.top+=parseFloat(p.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(p.css(b[0],"borderLeftWidth"))||0,{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||e.body;while(a&&!c$.test(a.nodeName)&&p.css(a,"position")==="static")a=a.offsetParent;return a||e.body})}}),p.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);p.fn[a]=function(e){return p.access(this,function(a,e,f){var g=c_(a);if(f===b)return g?c in g?g[c]:g.document.documentElement[e]:a[e];g?g.scrollTo(d?p(g).scrollLeft():f,d?f:p(g).scrollTop()):a[e]=f},a,e,arguments.length,null)}}),p.each({Height:"height",Width:"width"},function(a,c){p.each({padding:"inner"+a,content:c,"":"outer"+a},function(d,e){p.fn[e]=function(e,f){var g=arguments.length&&(d||typeof e!="boolean"),h=d||(e===!0||f===!0?"margin":"border");return p.access(this,function(c,d,e){var f;return p.isWindow(c)?c.document.documentElement["client"+a]:c.nodeType===9?(f=c.documentElement,Math.max(c.body["scroll"+a],f["scroll"+a],c.body["offset"+a],f["offset"+a],f["client"+a])):e===b?p.css(c,d,e,h):p.style(c,d,e,h)},c,g?e:b,g)}})}),a.jQuery=a.$=p,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return p})})(window); \ No newline at end of file diff --git a/js/jquery.fileupload.js b/js/jquery.fileupload.js new file mode 100644 index 0000000..de33499 --- /dev/null +++ b/js/jquery.fileupload.js @@ -0,0 +1,1201 @@ +/* + * jQuery File Upload Plugin 5.26 + * https://github.com/blueimp/jQuery-File-Upload + * + * Copyright 2010, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/MIT + */ + +/*jslint nomen: true, unparam: true, regexp: true */ +/*global define, window, document, File, Blob, FormData, location */ + +(function (factory) { + 'use strict'; + if (typeof define === 'function' && define.amd) { + // Register as an anonymous AMD module: + define([ + 'jquery', + 'jquery.ui.widget' + ], factory); + } else { + // Browser globals: + factory(window.jQuery); + } +}(function ($) { + 'use strict'; + + // The FileReader API is not actually used, but works as feature detection, + // as e.g. Safari supports XHR file uploads via the FormData API, + // but not non-multipart XHR file uploads: + $.support.xhrFileUpload = !!(window.XMLHttpRequestUpload && window.FileReader); + $.support.xhrFormDataFileUpload = !!window.FormData; + + // The fileupload widget listens for change events on file input fields defined + // via fileInput setting and paste or drop events of the given dropZone. + // In addition to the default jQuery Widget methods, the fileupload widget + // exposes the "add" and "send" methods, to add or directly send files using + // the fileupload API. + // By default, files added via file input selection, paste, drag & drop or + // "add" method are uploaded immediately, but it is possible to override + // the "add" callback option to queue file uploads. + $.widget('blueimp.fileupload', { + + options: { + // The drop target element(s), by the default the complete document. + // Set to null to disable drag & drop support: + dropZone: $(document), + // The paste target element(s), by the default the complete document. + // Set to null to disable paste support: + pasteZone: $(document), + // The file input field(s), that are listened to for change events. + // If undefined, it is set to the file input fields inside + // of the widget element on plugin initialization. + // Set to null to disable the change listener. + fileInput: undefined, + // By default, the file input field is replaced with a clone after + // each input field change event. This is required for iframe transport + // queues and allows change events to be fired for the same file + // selection, but can be disabled by setting the following option to false: + replaceFileInput: true, + // The parameter name for the file form data (the request argument name). + // If undefined or empty, the name property of the file input field is + // used, or "files[]" if the file input name property is also empty, + // can be a string or an array of strings: + paramName: undefined, + // By default, each file of a selection is uploaded using an individual + // request for XHR type uploads. Set to false to upload file + // selections in one request each: + singleFileUploads: true, + // To limit the number of files uploaded with one XHR request, + // set the following option to an integer greater than 0: + limitMultiFileUploads: undefined, + // Set the following option to true to issue all file upload requests + // in a sequential order: + sequentialUploads: false, + // To limit the number of concurrent uploads, + // set the following option to an integer greater than 0: + limitConcurrentUploads: undefined, + // Set the following option to true to force iframe transport uploads: + forceIframeTransport: false, + // Set the following option to the location of a redirect url on the + // origin server, for cross-domain iframe transport uploads: + redirect: undefined, + // The parameter name for the redirect url, sent as part of the form + // data and set to 'redirect' if this option is empty: + redirectParamName: undefined, + // Set the following option to the location of a postMessage window, + // to enable postMessage transport uploads: + postMessage: undefined, + // By default, XHR file uploads are sent as multipart/form-data. + // The iframe transport is always using multipart/form-data. + // Set to false to enable non-multipart XHR uploads: + multipart: true, + // To upload large files in smaller chunks, set the following option + // to a preferred maximum chunk size. If set to 0, null or undefined, + // or the browser does not support the required Blob API, files will + // be uploaded as a whole. + maxChunkSize: undefined, + // When a non-multipart upload or a chunked multipart upload has been + // aborted, this option can be used to resume the upload by setting + // it to the size of the already uploaded bytes. This option is most + // useful when modifying the options object inside of the "add" or + // "send" callbacks, as the options are cloned for each file upload. + uploadedBytes: undefined, + // By default, failed (abort or error) file uploads are removed from the + // global progress calculation. Set the following option to false to + // prevent recalculating the global progress data: + recalculateProgress: true, + // Interval in milliseconds to calculate and trigger progress events: + progressInterval: 100, + // Interval in milliseconds to calculate progress bitrate: + bitrateInterval: 500, + // By default, uploads are started automatically when adding files: + autoUpload: true, + + // Additional form data to be sent along with the file uploads can be set + // using this option, which accepts an array of objects with name and + // value properties, a function returning such an array, a FormData + // object (for XHR file uploads), or a simple object. + // The form of the first fileInput is given as parameter to the function: + formData: function (form) { + return form.serializeArray(); + }, + + // The add callback is invoked as soon as files are added to the fileupload + // widget (via file input selection, drag & drop, paste or add API call). + // If the singleFileUploads option is enabled, this callback will be + // called once for each file in the selection for XHR file uplaods, else + // once for each file selection. + // The upload starts when the submit method is invoked on the data parameter. + // The data object contains a files property holding the added files + // and allows to override plugin options as well as define ajax settings. + // Listeners for this callback can also be bound the following way: + // .bind('fileuploadadd', func); + // data.submit() returns a Promise object and allows to attach additional + // handlers using jQuery's Deferred callbacks: + // data.submit().done(func).fail(func).always(func); + add: function (e, data) { + if (data.autoUpload || (data.autoUpload !== false && + ($(this).data('blueimp-fileupload') || + $(this).data('fileupload')).options.autoUpload)) { + data.submit(); + } + }, + + // Other callbacks: + + // Callback for the submit event of each file upload: + // submit: function (e, data) {}, // .bind('fileuploadsubmit', func); + + // Callback for the start of each file upload request: + // send: function (e, data) {}, // .bind('fileuploadsend', func); + + // Callback for successful uploads: + // done: function (e, data) {}, // .bind('fileuploaddone', func); + + // Callback for failed (abort or error) uploads: + // fail: function (e, data) {}, // .bind('fileuploadfail', func); + + // Callback for completed (success, abort or error) requests: + // always: function (e, data) {}, // .bind('fileuploadalways', func); + + // Callback for upload progress events: + // progress: function (e, data) {}, // .bind('fileuploadprogress', func); + + // Callback for global upload progress events: + // progressall: function (e, data) {}, // .bind('fileuploadprogressall', func); + + // Callback for uploads start, equivalent to the global ajaxStart event: + // start: function (e) {}, // .bind('fileuploadstart', func); + + // Callback for uploads stop, equivalent to the global ajaxStop event: + // stop: function (e) {}, // .bind('fileuploadstop', func); + + // Callback for change events of the fileInput(s): + // change: function (e, data) {}, // .bind('fileuploadchange', func); + + // Callback for paste events to the pasteZone(s): + // paste: function (e, data) {}, // .bind('fileuploadpaste', func); + + // Callback for drop events of the dropZone(s): + // drop: function (e, data) {}, // .bind('fileuploaddrop', func); + + // Callback for dragover events of the dropZone(s): + // dragover: function (e) {}, // .bind('fileuploaddragover', func); + + // Callback for the start of each chunk upload request: + // chunksend: function (e, data) {}, // .bind('fileuploadchunksend', func); + + // Callback for successful chunk uploads: + // chunkdone: function (e, data) {}, // .bind('fileuploadchunkdone', func); + + // Callback for failed (abort or error) chunk uploads: + // chunkfail: function (e, data) {}, // .bind('fileuploadchunkfail', func); + + // Callback for completed (success, abort or error) chunk upload requests: + // chunkalways: function (e, data) {}, // .bind('fileuploadchunkalways', func); + + // The plugin options are used as settings object for the ajax calls. + // The following are jQuery ajax settings required for the file uploads: + processData: false, + contentType: false, + cache: false + }, + + // A list of options that require a refresh after assigning a new value: + _refreshOptionsList: [ + 'fileInput', + 'dropZone', + 'pasteZone', + 'multipart', + 'forceIframeTransport' + ], + + _BitrateTimer: function () { + this.timestamp = +(new Date()); + this.loaded = 0; + this.bitrate = 0; + this.getBitrate = function (now, loaded, interval) { + var timeDiff = now - this.timestamp; + if (!this.bitrate || !interval || timeDiff > interval) { + this.bitrate = (loaded - this.loaded) * (1000 / timeDiff) * 8; + this.loaded = loaded; + this.timestamp = now; + } + return this.bitrate; + }; + }, + + _isXHRUpload: function (options) { + return !options.forceIframeTransport && + ((!options.multipart && $.support.xhrFileUpload) || + $.support.xhrFormDataFileUpload); + }, + + _getFormData: function (options) { + var formData; + if (typeof options.formData === 'function') { + return options.formData(options.form); + } + if ($.isArray(options.formData)) { + return options.formData; + } + if (options.formData) { + formData = []; + $.each(options.formData, function (name, value) { + formData.push({name: name, value: value}); + }); + return formData; + } + return []; + }, + + _getTotal: function (files) { + var total = 0; + $.each(files, function (index, file) { + total += file.size || 1; + }); + return total; + }, + + _initProgressObject: function (obj) { + obj._progress = { + loaded: 0, + total: 0, + bitrate: 0 + }; + }, + + _onProgress: function (e, data) { + if (e.lengthComputable) { + var now = +(new Date()), + loaded; + if (data._time && data.progressInterval && + (now - data._time < data.progressInterval) && + e.loaded !== e.total) { + return; + } + data._time = now; + loaded = Math.floor( + e.loaded / e.total * (data.chunkSize || data._progress.total) + ) + (data.uploadedBytes || 0); + // Add the difference from the previously loaded state + // to the global loaded counter: + this._progress.loaded += (loaded - data._progress.loaded); + this._progress.bitrate = this._bitrateTimer.getBitrate( + now, + this._progress.loaded, + data.bitrateInterval + ); + data._progress.loaded = data.loaded = loaded; + data._progress.bitrate = data.bitrate = data._bitrateTimer.getBitrate( + now, + loaded, + data.bitrateInterval + ); + // Trigger a custom progress event with a total data property set + // to the file size(s) of the current upload and a loaded data + // property calculated accordingly: + this._trigger('progress', e, data); + // Trigger a global progress event for all current file uploads, + // including ajax calls queued for sequential file uploads: + this._trigger('progressall', e, this._progress); + } + }, + + _initProgressListener: function (options) { + var that = this, + xhr = options.xhr ? options.xhr() : $.ajaxSettings.xhr(); + // Accesss to the native XHR object is required to add event listeners + // for the upload progress event: + if (xhr.upload) { + $(xhr.upload).bind('progress', function (e) { + var oe = e.originalEvent; + // Make sure the progress event properties get copied over: + e.lengthComputable = oe.lengthComputable; + e.loaded = oe.loaded; + e.total = oe.total; + that._onProgress(e, options); + }); + options.xhr = function () { + return xhr; + }; + } + }, + + _initXHRData: function (options) { + var formData, + file = options.files[0], + // Ignore non-multipart setting if not supported: + multipart = options.multipart || !$.support.xhrFileUpload, + paramName = options.paramName[0]; + options.headers = options.headers || {}; + if (options.contentRange) { + options.headers['Content-Range'] = options.contentRange; + } + if (!multipart) { + options.headers['Content-Disposition'] = 'attachment; filename="' + + encodeURI(file.name) + '"'; + options.contentType = file.type; + options.data = options.blob || file; + } else if ($.support.xhrFormDataFileUpload) { + if (options.postMessage) { + // window.postMessage does not allow sending FormData + // objects, so we just add the File/Blob objects to + // the formData array and let the postMessage window + // create the FormData object out of this array: + formData = this._getFormData(options); + if (options.blob) { + formData.push({ + name: paramName, + value: options.blob + }); + } else { + $.each(options.files, function (index, file) { + formData.push({ + name: options.paramName[index] || paramName, + value: file + }); + }); + } + } else { + if (options.formData instanceof FormData) { + formData = options.formData; + } else { + formData = new FormData(); + $.each(this._getFormData(options), function (index, field) { + formData.append(field.name, field.value); + }); + } + if (options.blob) { + options.headers['Content-Disposition'] = 'attachment; filename="' + + encodeURI(file.name) + '"'; + formData.append(paramName, options.blob, file.name); + } else { + $.each(options.files, function (index, file) { + // Files are also Blob instances, but some browsers + // (Firefox 3.6) support the File API but not Blobs. + // This check allows the tests to run with + // dummy objects: + if ((window.Blob && file instanceof Blob) || + (window.File && file instanceof File)) { + formData.append( + options.paramName[index] || paramName, + file, + file.name + ); + } + }); + } + } + options.data = formData; + } + // Blob reference is not needed anymore, free memory: + options.blob = null; + }, + + _initIframeSettings: function (options) { + // Setting the dataType to iframe enables the iframe transport: + options.dataType = 'iframe ' + (options.dataType || ''); + // The iframe transport accepts a serialized array as form data: + options.formData = this._getFormData(options); + // Add redirect url to form data on cross-domain uploads: + if (options.redirect && $('').prop('href', options.url) + .prop('host') !== location.host) { + options.formData.push({ + name: options.redirectParamName || 'redirect', + value: options.redirect + }); + } + }, + + _initDataSettings: function (options) { + if (this._isXHRUpload(options)) { + if (!this._chunkedUpload(options, true)) { + if (!options.data) { + this._initXHRData(options); + } + this._initProgressListener(options); + } + if (options.postMessage) { + // Setting the dataType to postmessage enables the + // postMessage transport: + options.dataType = 'postmessage ' + (options.dataType || ''); + } + } else { + this._initIframeSettings(options, 'iframe'); + } + }, + + _getParamName: function (options) { + var fileInput = $(options.fileInput), + paramName = options.paramName; + if (!paramName) { + paramName = []; + fileInput.each(function () { + var input = $(this), + name = input.prop('name') || 'files[]', + i = (input.prop('files') || [1]).length; + while (i) { + paramName.push(name); + i -= 1; + } + }); + if (!paramName.length) { + paramName = [fileInput.prop('name') || 'files[]']; + } + } else if (!$.isArray(paramName)) { + paramName = [paramName]; + } + return paramName; + }, + + _initFormSettings: function (options) { + // Retrieve missing options from the input field and the + // associated form, if available: + if (!options.form || !options.form.length) { + options.form = $(options.fileInput.prop('form')); + // If the given file input doesn't have an associated form, + // use the default widget file input's form: + if (!options.form.length) { + options.form = $(this.options.fileInput.prop('form')); + } + } + options.paramName = this._getParamName(options); + if (!options.url) { + options.url = options.form.prop('action') || location.href; + } + // The HTTP request method must be "POST" or "PUT": + options.type = (options.type || options.form.prop('method') || '') + .toUpperCase(); + if (options.type !== 'POST' && options.type !== 'PUT' && + options.type !== 'PATCH') { + options.type = 'POST'; + } + if (!options.formAcceptCharset) { + options.formAcceptCharset = options.form.attr('accept-charset'); + } + }, + + _getAJAXSettings: function (data) { + var options = $.extend({}, this.options, data); + this._initFormSettings(options); + this._initDataSettings(options); + return options; + }, + + // jQuery 1.6 doesn't provide .state(), + // while jQuery 1.8+ removed .isRejected() and .isResolved(): + _getDeferredState: function (deferred) { + if (deferred.state) { + return deferred.state(); + } + if (deferred.isResolved()) { + return 'resolved'; + } + if (deferred.isRejected()) { + return 'rejected'; + } + return 'pending'; + }, + + // Maps jqXHR callbacks to the equivalent + // methods of the given Promise object: + _enhancePromise: function (promise) { + promise.success = promise.done; + promise.error = promise.fail; + promise.complete = promise.always; + return promise; + }, + + // Creates and returns a Promise object enhanced with + // the jqXHR methods abort, success, error and complete: + _getXHRPromise: function (resolveOrReject, context, args) { + var dfd = $.Deferred(), + promise = dfd.promise(); + context = context || this.options.context || promise; + if (resolveOrReject === true) { + dfd.resolveWith(context, args); + } else if (resolveOrReject === false) { + dfd.rejectWith(context, args); + } + promise.abort = dfd.promise; + return this._enhancePromise(promise); + }, + + // Adds convenience methods to the callback arguments: + _addConvenienceMethods: function (e, data) { + var that = this; + data.submit = function () { + if (this.state() !== 'pending') { + data.jqXHR = this.jqXHR = + (that._trigger('submit', e, this) !== false) && + that._onSend(e, this); + } + return this.jqXHR || that._getXHRPromise(); + }; + data.abort = function () { + if (this.jqXHR) { + return this.jqXHR.abort(); + } + return this._getXHRPromise(); + }; + data.state = function () { + if (this.jqXHR) { + return that._getDeferredState(this.jqXHR); + } + }; + data.progress = function () { + return this._progress; + }; + }, + + // Parses the Range header from the server response + // and returns the uploaded bytes: + _getUploadedBytes: function (jqXHR) { + var range = jqXHR.getResponseHeader('Range'), + parts = range && range.split('-'), + upperBytesPos = parts && parts.length > 1 && + parseInt(parts[1], 10); + return upperBytesPos && upperBytesPos + 1; + }, + + // Uploads a file in multiple, sequential requests + // by splitting the file up in multiple blob chunks. + // If the second parameter is true, only tests if the file + // should be uploaded in chunks, but does not invoke any + // upload requests: + _chunkedUpload: function (options, testOnly) { + var that = this, + file = options.files[0], + fs = file.size, + ub = options.uploadedBytes = options.uploadedBytes || 0, + mcs = options.maxChunkSize || fs, + slice = file.slice || file.webkitSlice || file.mozSlice, + dfd = $.Deferred(), + promise = dfd.promise(), + jqXHR, + upload; + if (!(this._isXHRUpload(options) && slice && (ub || mcs < fs)) || + options.data) { + return false; + } + if (testOnly) { + return true; + } + if (ub >= fs) { + file.error = 'Uploaded bytes exceed file size'; + return this._getXHRPromise( + false, + options.context, + [null, 'error', file.error] + ); + } + // The chunk upload method: + upload = function () { + // Clone the options object for each chunk upload: + var o = $.extend({}, options), + currentLoaded = o._progress.loaded; + o.blob = slice.call( + file, + ub, + ub + mcs, + file.type + ); + // Store the current chunk size, as the blob itself + // will be dereferenced after data processing: + o.chunkSize = o.blob.size; + // Expose the chunk bytes position range: + o.contentRange = 'bytes ' + ub + '-' + + (ub + o.chunkSize - 1) + '/' + fs; + // Process the upload data (the blob and potential form data): + that._initXHRData(o); + // Add progress listeners for this chunk upload: + that._initProgressListener(o); + jqXHR = ((that._trigger('chunksend', null, o) !== false && $.ajax(o)) || + that._getXHRPromise(false, o.context)) + .done(function (result, textStatus, jqXHR) { + ub = that._getUploadedBytes(jqXHR) || + (ub + o.chunkSize); + // Create a progress event if no final progress event + // with loaded equaling total has been triggered + // for this chunk: + if (o._progress.loaded === currentLoaded) { + that._onProgress($.Event('progress', { + lengthComputable: true, + loaded: ub - o.uploadedBytes, + total: ub - o.uploadedBytes + }), o); + } + options.uploadedBytes = o.uploadedBytes = ub; + o.result = result; + o.textStatus = textStatus; + o.jqXHR = jqXHR; + that._trigger('chunkdone', null, o); + that._trigger('chunkalways', null, o); + if (ub < fs) { + // File upload not yet complete, + // continue with the next chunk: + upload(); + } else { + dfd.resolveWith( + o.context, + [result, textStatus, jqXHR] + ); + } + }) + .fail(function (jqXHR, textStatus, errorThrown) { + o.jqXHR = jqXHR; + o.textStatus = textStatus; + o.errorThrown = errorThrown; + that._trigger('chunkfail', null, o); + that._trigger('chunkalways', null, o); + dfd.rejectWith( + o.context, + [jqXHR, textStatus, errorThrown] + ); + }); + }; + this._enhancePromise(promise); + promise.abort = function () { + return jqXHR.abort(); + }; + upload(); + return promise; + }, + + _beforeSend: function (e, data) { + if (this._active === 0) { + // the start callback is triggered when an upload starts + // and no other uploads are currently running, + // equivalent to the global ajaxStart event: + this._trigger('start'); + // Set timer for global bitrate progress calculation: + this._bitrateTimer = new this._BitrateTimer(); + // Reset the global progress values: + this._progress.loaded = this._progress.total = 0; + this._progress.bitrate = 0; + } + if (!data._progress) { + data._progress = {}; + } + data._progress.loaded = data.loaded = data.uploadedBytes || 0; + data._progress.total = data.total = this._getTotal(data.files) || 1; + data._progress.bitrate = data.bitrate = 0; + this._active += 1; + // Initialize the global progress values: + this._progress.loaded += data.loaded; + this._progress.total += data.total; + }, + + _onDone: function (result, textStatus, jqXHR, options) { + var total = options._progress.total; + if (options._progress.loaded < total) { + // Create a progress event if no final progress event + // with loaded equaling total has been triggered: + this._onProgress($.Event('progress', { + lengthComputable: true, + loaded: total, + total: total + }), options); + } + options.result = result; + options.textStatus = textStatus; + options.jqXHR = jqXHR; + this._trigger('done', null, options); + }, + + _onFail: function (jqXHR, textStatus, errorThrown, options) { + options.jqXHR = jqXHR; + options.textStatus = textStatus; + options.errorThrown = errorThrown; + this._trigger('fail', null, options); + if (options.recalculateProgress) { + // Remove the failed (error or abort) file upload from + // the global progress calculation: + this._progress.loaded -= options._progress.loaded; + this._progress.total -= options._progress.total; + } + }, + + _onAlways: function (jqXHRorResult, textStatus, jqXHRorError, options) { + // jqXHRorResult, textStatus and jqXHRorError are added to the + // options object via done and fail callbacks + this._active -= 1; + this._trigger('always', null, options); + if (this._active === 0) { + // The stop callback is triggered when all uploads have + // been completed, equivalent to the global ajaxStop event: + this._trigger('stop'); + } + }, + + _onSend: function (e, data) { + if (!data.submit) { + this._addConvenienceMethods(e, data); + } + var that = this, + jqXHR, + aborted, + slot, + pipe, + options = that._getAJAXSettings(data), + send = function () { + that._sending += 1; + // Set timer for bitrate progress calculation: + options._bitrateTimer = new that._BitrateTimer(); + jqXHR = jqXHR || ( + ((aborted || that._trigger('send', e, options) === false) && + that._getXHRPromise(false, options.context, aborted)) || + that._chunkedUpload(options) || $.ajax(options) + ).done(function (result, textStatus, jqXHR) { + that._onDone(result, textStatus, jqXHR, options); + }).fail(function (jqXHR, textStatus, errorThrown) { + that._onFail(jqXHR, textStatus, errorThrown, options); + }).always(function (jqXHRorResult, textStatus, jqXHRorError) { + that._sending -= 1; + that._onAlways( + jqXHRorResult, + textStatus, + jqXHRorError, + options + ); + if (options.limitConcurrentUploads && + options.limitConcurrentUploads > that._sending) { + // Start the next queued upload, + // that has not been aborted: + var nextSlot = that._slots.shift(); + while (nextSlot) { + if (that._getDeferredState(nextSlot) === 'pending') { + nextSlot.resolve(); + break; + } + nextSlot = that._slots.shift(); + } + } + }); + return jqXHR; + }; + this._beforeSend(e, options); + if (this.options.sequentialUploads || + (this.options.limitConcurrentUploads && + this.options.limitConcurrentUploads <= this._sending)) { + if (this.options.limitConcurrentUploads > 1) { + slot = $.Deferred(); + this._slots.push(slot); + pipe = slot.pipe(send); + } else { + pipe = (this._sequence = this._sequence.pipe(send, send)); + } + // Return the piped Promise object, enhanced with an abort method, + // which is delegated to the jqXHR object of the current upload, + // and jqXHR callbacks mapped to the equivalent Promise methods: + pipe.abort = function () { + aborted = [undefined, 'abort', 'abort']; + if (!jqXHR) { + if (slot) { + slot.rejectWith(options.context, aborted); + } + return send(); + } + return jqXHR.abort(); + }; + return this._enhancePromise(pipe); + } + return send(); + }, + + _onAdd: function (e, data) { + var that = this, + result = true, + options = $.extend({}, this.options, data), + limit = options.limitMultiFileUploads, + paramName = this._getParamName(options), + paramNameSet, + paramNameSlice, + fileSet, + i; + if (!(options.singleFileUploads || limit) || + !this._isXHRUpload(options)) { + fileSet = [data.files]; + paramNameSet = [paramName]; + } else if (!options.singleFileUploads && limit) { + fileSet = []; + paramNameSet = []; + for (i = 0; i < data.files.length; i += limit) { + fileSet.push(data.files.slice(i, i + limit)); + paramNameSlice = paramName.slice(i, i + limit); + if (!paramNameSlice.length) { + paramNameSlice = paramName; + } + paramNameSet.push(paramNameSlice); + } + } else { + paramNameSet = paramName; + } + data.originalFiles = data.files; + $.each(fileSet || data.files, function (index, element) { + var newData = $.extend({}, data); + newData.files = fileSet ? element : [element]; + newData.paramName = paramNameSet[index]; + that._initProgressObject(newData); + that._addConvenienceMethods(e, newData); + result = that._trigger('add', e, newData); + return result; + }); + return result; + }, + + _replaceFileInput: function (input) { + var inputClone = input.clone(true); + $('
').append(inputClone)[0].reset(); + // Detaching allows to insert the fileInput on another form + // without loosing the file input value: + input.after(inputClone).detach(); + // Avoid memory leaks with the detached file input: + $.cleanData(input.unbind('remove')); + // Replace the original file input element in the fileInput + // elements set with the clone, which has been copied including + // event handlers: + this.options.fileInput = this.options.fileInput.map(function (i, el) { + if (el === input[0]) { + return inputClone[0]; + } + return el; + }); + // If the widget has been initialized on the file input itself, + // override this.element with the file input clone: + if (input[0] === this.element[0]) { + this.element = inputClone; + } + }, + + _handleFileTreeEntry: function (entry, path) { + var that = this, + dfd = $.Deferred(), + errorHandler = function (e) { + if (e && !e.entry) { + e.entry = entry; + } + // Since $.when returns immediately if one + // Deferred is rejected, we use resolve instead. + // This allows valid files and invalid items + // to be returned together in one set: + dfd.resolve([e]); + }, + dirReader; + path = path || ''; + if (entry.isFile) { + if (entry._file) { + // Workaround for Chrome bug #149735 + entry._file.relativePath = path; + dfd.resolve(entry._file); + } else { + entry.file(function (file) { + file.relativePath = path; + dfd.resolve(file); + }, errorHandler); + } + } else if (entry.isDirectory) { + dirReader = entry.createReader(); + dirReader.readEntries(function (entries) { + that._handleFileTreeEntries( + entries, + path + entry.name + '/' + ).done(function (files) { + dfd.resolve(files); + }).fail(errorHandler); + }, errorHandler); + } else { + // Return an empy list for file system items + // other than files or directories: + dfd.resolve([]); + } + return dfd.promise(); + }, + + _handleFileTreeEntries: function (entries, path) { + var that = this; + return $.when.apply( + $, + $.map(entries, function (entry) { + return that._handleFileTreeEntry(entry, path); + }) + ).pipe(function () { + return Array.prototype.concat.apply( + [], + arguments + ); + }); + }, + + _getDroppedFiles: function (dataTransfer) { + dataTransfer = dataTransfer || {}; + var items = dataTransfer.items; + if (items && items.length && (items[0].webkitGetAsEntry || + items[0].getAsEntry)) { + return this._handleFileTreeEntries( + $.map(items, function (item) { + var entry; + if (item.webkitGetAsEntry) { + entry = item.webkitGetAsEntry(); + if (entry) { + // Workaround for Chrome bug #149735: + entry._file = item.getAsFile(); + } + return entry; + } + return item.getAsEntry(); + }) + ); + } + return $.Deferred().resolve( + $.makeArray(dataTransfer.files) + ).promise(); + }, + + _getSingleFileInputFiles: function (fileInput) { + fileInput = $(fileInput); + var entries = fileInput.prop('webkitEntries') || + fileInput.prop('entries'), + files, + value; + if (entries && entries.length) { + return this._handleFileTreeEntries(entries); + } + files = $.makeArray(fileInput.prop('files')); + if (!files.length) { + value = fileInput.prop('value'); + if (!value) { + return $.Deferred().resolve([]).promise(); + } + // If the files property is not available, the browser does not + // support the File API and we add a pseudo File object with + // the input value as name with path information removed: + files = [{name: value.replace(/^.*\\/, '')}]; + } else if (files[0].name === undefined && files[0].fileName) { + // File normalization for Safari 4 and Firefox 3: + $.each(files, function (index, file) { + file.name = file.fileName; + file.size = file.fileSize; + }); + } + return $.Deferred().resolve(files).promise(); + }, + + _getFileInputFiles: function (fileInput) { + if (!(fileInput instanceof $) || fileInput.length === 1) { + return this._getSingleFileInputFiles(fileInput); + } + return $.when.apply( + $, + $.map(fileInput, this._getSingleFileInputFiles) + ).pipe(function () { + return Array.prototype.concat.apply( + [], + arguments + ); + }); + }, + + _onChange: function (e) { + var that = this, + data = { + fileInput: $(e.target), + form: $(e.target.form) + }; + this._getFileInputFiles(data.fileInput).always(function (files) { + data.files = files; + if (that.options.replaceFileInput) { + that._replaceFileInput(data.fileInput); + } + if (that._trigger('change', e, data) !== false) { + that._onAdd(e, data); + } + }); + }, + + _onPaste: function (e) { + var cbd = e.originalEvent.clipboardData, + items = (cbd && cbd.items) || [], + data = {files: []}; + $.each(items, function (index, item) { + var file = item.getAsFile && item.getAsFile(); + if (file) { + data.files.push(file); + } + }); + if (this._trigger('paste', e, data) === false || + this._onAdd(e, data) === false) { + return false; + } + }, + + _onDrop: function (e) { + var that = this, + dataTransfer = e.dataTransfer = e.originalEvent.dataTransfer, + data = {}; + if (dataTransfer && dataTransfer.files && dataTransfer.files.length) { + e.preventDefault(); + } + this._getDroppedFiles(dataTransfer).always(function (files) { + data.files = files; + if (that._trigger('drop', e, data) !== false) { + that._onAdd(e, data); + } + }); + }, + + _onDragOver: function (e) { + var dataTransfer = e.dataTransfer = e.originalEvent.dataTransfer; + if (this._trigger('dragover', e) === false) { + return false; + } + if (dataTransfer && $.inArray('Files', dataTransfer.types) !== -1) { + dataTransfer.dropEffect = 'copy'; + e.preventDefault(); + } + }, + + _initEventHandlers: function () { + if (this._isXHRUpload(this.options)) { + this._on(this.options.dropZone, { + dragover: this._onDragOver, + drop: this._onDrop + }); + this._on(this.options.pasteZone, { + paste: this._onPaste + }); + } + this._on(this.options.fileInput, { + change: this._onChange + }); + }, + + _destroyEventHandlers: function () { + this._off(this.options.dropZone, 'dragover drop'); + this._off(this.options.pasteZone, 'paste'); + this._off(this.options.fileInput, 'change'); + }, + + _setOption: function (key, value) { + var refresh = $.inArray(key, this._refreshOptionsList) !== -1; + if (refresh) { + this._destroyEventHandlers(); + } + this._super(key, value); + if (refresh) { + this._initSpecialOptions(); + this._initEventHandlers(); + } + }, + + _initSpecialOptions: function () { + var options = this.options; + if (options.fileInput === undefined) { + options.fileInput = this.element.is('input[type="file"]') ? + this.element : this.element.find('input[type="file"]'); + } else if (!(options.fileInput instanceof $)) { + options.fileInput = $(options.fileInput); + } + if (!(options.dropZone instanceof $)) { + options.dropZone = $(options.dropZone); + } + if (!(options.pasteZone instanceof $)) { + options.pasteZone = $(options.pasteZone); + } + }, + + _create: function () { + var options = this.options; + // Initialize options set via HTML5 data-attributes: + $.extend(options, $(this.element[0].cloneNode(false)).data()); + this._initSpecialOptions(); + this._slots = []; + this._sequence = this._getXHRPromise(true); + this._sending = this._active = 0; + this._initProgressObject(this); + this._initEventHandlers(); + }, + + // This method is exposed to the widget API and allows to query + // the widget upload progress. + // It returns an object with loaded, total and bitrate properties + // for the running uploads: + progress: function () { + return this._progress; + }, + + // This method is exposed to the widget API and allows adding files + // using the fileupload API. The data parameter accepts an object which + // must have a files property and can contain additional options: + // .fileupload('add', {files: filesList}); + add: function (data) { + var that = this; + if (!data || this.options.disabled) { + return; + } + if (data.fileInput && !data.files) { + this._getFileInputFiles(data.fileInput).always(function (files) { + data.files = files; + that._onAdd(null, data); + }); + } else { + data.files = $.makeArray(data.files); + this._onAdd(null, data); + } + }, + + // This method is exposed to the widget API and allows sending files + // using the fileupload API. The data parameter accepts an object which + // must have a files or fileInput property and can contain additional options: + // .fileupload('send', {files: filesList}); + // The method returns a Promise object for the file upload call. + send: function (data) { + if (data && !this.options.disabled) { + if (data.fileInput && !data.files) { + var that = this, + dfd = $.Deferred(), + promise = dfd.promise(), + jqXHR, + aborted; + promise.abort = function () { + aborted = true; + if (jqXHR) { + return jqXHR.abort(); + } + dfd.reject(null, 'abort', 'abort'); + return promise; + }; + this._getFileInputFiles(data.fileInput).always( + function (files) { + if (aborted) { + return; + } + data.files = files; + jqXHR = that._onSend(null, data).then( + function (result, textStatus, jqXHR) { + dfd.resolve(result, textStatus, jqXHR); + }, + function (jqXHR, textStatus, errorThrown) { + dfd.reject(jqXHR, textStatus, errorThrown); + } + ); + } + ); + return this._enhancePromise(promise); + } + data.files = $.makeArray(data.files); + if (data.files.length) { + return this._onSend(null, data); + } + } + return this._getXHRPromise(false, data && data.context); + } + + }); + +})); diff --git a/js/jquery.iframe-transport.js b/js/jquery.iframe-transport.js new file mode 100644 index 0000000..ed25895 --- /dev/null +++ b/js/jquery.iframe-transport.js @@ -0,0 +1,185 @@ +/* + * jQuery Iframe Transport Plugin 1.6.1 + * https://github.com/blueimp/jQuery-File-Upload + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/MIT + */ + +/*jslint unparam: true, nomen: true */ +/*global define, window, document */ + +(function (factory) { + 'use strict'; + if (typeof define === 'function' && define.amd) { + // Register as an anonymous AMD module: + define(['jquery'], factory); + } else { + // Browser globals: + factory(window.jQuery); + } +}(function ($) { + 'use strict'; + + // Helper variable to create unique names for the transport iframes: + var counter = 0; + + // The iframe transport accepts three additional options: + // options.fileInput: a jQuery collection of file input fields + // options.paramName: the parameter name for the file form data, + // overrides the name property of the file input field(s), + // can be a string or an array of strings. + // options.formData: an array of objects with name and value properties, + // equivalent to the return data of .serializeArray(), e.g.: + // [{name: 'a', value: 1}, {name: 'b', value: 2}] + $.ajaxTransport('iframe', function (options) { + if (options.async) { + var form, + iframe, + addParamChar; + return { + send: function (_, completeCallback) { + form = $('
'); + form.attr('accept-charset', options.formAcceptCharset); + addParamChar = /\?/.test(options.url) ? '&' : '?'; + // XDomainRequest only supports GET and POST: + if (options.type === 'DELETE') { + options.url = options.url + addParamChar + '_method=DELETE'; + options.type = 'POST'; + } else if (options.type === 'PUT') { + options.url = options.url + addParamChar + '_method=PUT'; + options.type = 'POST'; + } else if (options.type === 'PATCH') { + options.url = options.url + addParamChar + '_method=PATCH'; + options.type = 'POST'; + } + // javascript:false as initial iframe src + // prevents warning popups on HTTPS in IE6. + // IE versions below IE8 cannot set the name property of + // elements that have already been added to the DOM, + // so we set the name along with the iframe HTML markup: + iframe = $( + '' + ).bind('load', function () { + var fileInputClones, + paramNames = $.isArray(options.paramName) ? + options.paramName : [options.paramName]; + iframe + .unbind('load') + .bind('load', function () { + var response; + // Wrap in a try/catch block to catch exceptions thrown + // when trying to access cross-domain iframe contents: + try { + response = iframe.contents(); + // Google Chrome and Firefox do not throw an + // exception when calling iframe.contents() on + // cross-domain requests, so we unify the response: + if (!response.length || !response[0].firstChild) { + throw new Error(); + } + } catch (e) { + response = undefined; + } + // The complete callback returns the + // iframe content document as response object: + completeCallback( + 200, + 'success', + {'iframe': response} + ); + // Fix for IE endless progress bar activity bug + // (happens on form submits to iframe targets): + $('') + .appendTo(form); + form.remove(); + }); + form + .prop('target', iframe.prop('name')) + .prop('action', options.url) + .prop('method', options.type); + if (options.formData) { + $.each(options.formData, function (index, field) { + $('') + .prop('name', field.name) + .val(field.value) + .appendTo(form); + }); + } + if (options.fileInput && options.fileInput.length && + options.type === 'POST') { + fileInputClones = options.fileInput.clone(); + // Insert a clone for each file input field: + options.fileInput.after(function (index) { + return fileInputClones[index]; + }); + if (options.paramName) { + options.fileInput.each(function (index) { + $(this).prop( + 'name', + paramNames[index] || options.paramName + ); + }); + } + // Appending the file input fields to the hidden form + // removes them from their original location: + form + .append(options.fileInput) + .prop('enctype', 'multipart/form-data') + // enctype must be set as encoding for IE: + .prop('encoding', 'multipart/form-data'); + } + form.submit(); + // Insert the file input fields at their original location + // by replacing the clones with the originals: + if (fileInputClones && fileInputClones.length) { + options.fileInput.each(function (index, input) { + var clone = $(fileInputClones[index]); + $(input).prop('name', clone.prop('name')); + clone.replaceWith(input); + }); + } + }); + form.append(iframe).appendTo(document.body); + }, + abort: function () { + if (iframe) { + // javascript:false as iframe src aborts the request + // and prevents warning popups on HTTPS in IE6. + // concat is used to avoid the "Script URL" JSLint error: + iframe + .unbind('load') + .prop('src', 'javascript'.concat(':false;')); + } + if (form) { + form.remove(); + } + } + }; + } + }); + + // The iframe transport returns the iframe content document as response. + // The following adds converters from iframe to text, json, html, and script: + $.ajaxSetup({ + converters: { + 'iframe text': function (iframe) { + return iframe && $(iframe[0].body).text(); + }, + 'iframe json': function (iframe) { + return iframe && $.parseJSON($(iframe[0].body).text()); + }, + 'iframe html': function (iframe) { + return iframe && $(iframe[0].body).html(); + }, + 'iframe script': function (iframe) { + return iframe && $.globalEval($(iframe[0].body).text()); + } + } + }); + +})); diff --git a/js/jquery.maphilight.min.js b/js/jquery.maphilight.min.js new file mode 100644 index 0000000..ba954ba --- /dev/null +++ b/js/jquery.maphilight.min.js @@ -0,0 +1 @@ +(function(G){var B,J,C,K,N,M,I,E,H,A,L;J=!!document.createElement("canvas").getContext;B=(function(){var P=document.createElement("div");P.innerHTML='';var O=P.firstChild;O.style.behavior="url(#default#VML)";return O?typeof O.adj=="object":true})();if(!(J||B)){G.fn.maphilight=function(){return this};return }if(J){E=function(O){return Math.max(0,Math.min(parseInt(O,16),255))};H=function(O,P){return"rgba("+E(O.substr(0,2))+","+E(O.substr(2,2))+","+E(O.substr(4,2))+","+P+")"};C=function(O){var P=G('').get(0);P.getContext("2d").clearRect(0,0,P.width,P.height);return P};var F=function(Q,O,R,P,S){P=P||0;S=S||0;Q.beginPath();if(O=="rect"){Q.rect(R[0]+P,R[1]+S,R[2]-R[0],R[3]-R[1])}else{if(O=="poly"){Q.moveTo(R[0]+P,R[1]+S);for(i=2;i').get(0)};K=function(P,S,T,W,O){var U,V,Q,R;U='';V=(W.stroke?'strokeweight="'+W.strokeWidth+'" stroked="t" strokecolor="#'+W.strokeColor+'"':'stroked="f"');Q='';if(S=="rect"){R=G('')}else{if(S=="poly"){R=G('')}else{if(S=="circ"){R=G('')}}}R.get(0).innerHTML=U+Q;G(P).append(R)};N=function(O){G(O).find("[name=highlighted]").remove()}}M=function(P){var O,Q=P.getAttribute("coords").split(",");for(O=0;O0)){return }if(W.hasClass("maphilighted")){var R=W.parent();W.insertBefore(R);R.remove();G(S).unbind(".maphilight").find("area[coords]").unbind(".maphilight")}T=G("
").css({display:"block",background:'url("'+this.src+'")',position:"relative",padding:0,width:this.width,height:this.height});if(a.wrapClass){if(a.wrapClass===true){T.addClass(G(this).attr("class"))}else{T.addClass(a.wrapClass)}}W.before(T).css("opacity",0).css(I).remove();if(B){W.css("filter","Alpha(opacity=0)")}T.append(W);V=C(this);G(V).css(I);V.height=this.height;V.width=this.width;Z=function(f){var c,d;d=L(this,a);if(!d.neverOn&&!d.alwaysOn){c=M(this);K(V,c[0],c[1],d,"highlighted");if(d.groupBy){var b;if(/^[a-zA-Z][\-a-zA-Z]+$/.test(d.groupBy)){b=S.find("area["+d.groupBy+'="'+G(this).attr(d.groupBy)+'"]')}else{b=S.find(d.groupBy)}var g=this;b.each(function(){if(this!=g){var h=L(this,a);if(!h.neverOn&&!h.alwaysOn){var e=M(this);K(V,e[0],e[1],h,"highlighted")}}})}if(!J){G(V).append("")}}};G(S).bind("alwaysOn.maphilight",function(){if(X){N(X)}if(!J){G(V).empty()}G(S).find("area[coords]").each(function(){var b,c;c=L(this,a);if(c.alwaysOn){if(!X&&J){X=C(W[0]);G(X).css(I);X.width=W[0].width;X.height=W[0].height;W.before(X)}c.fade=c.alwaysOnFade;b=M(this);if(J){K(X,b[0],b[1],c,"")}else{K(V,b[0],b[1],c,"")}}})});G(S).trigger("alwaysOn.maphilight").find("area[coords]").bind("mouseover.maphilight",Z).bind("mouseout.maphilight",function(b){N(V)});W.before(V);W.addClass("maphilighted")})};G.fn.maphilight.defaults={fill:true,fillColor:"000000",fillOpacity:0.2,stroke:true,strokeColor:"ff0000",strokeOpacity:1,strokeWidth:1,fade:true,alwaysOn:false,neverOn:false,groupBy:false,wrapClass:true,shadow:false,shadowX:0,shadowY:0,shadowRadius:6,shadowColor:"000000",shadowOpacity:0.8,shadowPosition:"outside",shadowFrom:false}})(jQuery); \ No newline at end of file diff --git a/js/jquery.maphilight.min_.js b/js/jquery.maphilight.min_.js new file mode 100644 index 0000000..8c9b858 --- /dev/null +++ b/js/jquery.maphilight.min_.js @@ -0,0 +1 @@ +(function(C){var A,B,I,J,K,G,E,D,F,H;A=document.namespaces;has_canvas=document.createElement("canvas");has_canvas=has_canvas&&has_canvas.getContext;if(!(has_canvas||A)){C.fn.maphilight=function(){return this};return }if(has_canvas){E=function(M,N,L){if(N<=1){M.style.opacity=N;window.setTimeout(E,10,M,N+0.1,10)}};D=function(L){return Math.max(0,Math.min(parseInt(L,16),255))};F=function(L,M){return"rgba("+D(L.substr(0,2))+","+D(L.substr(2,2))+","+D(L.substr(4,2))+","+M+")"};B=function(L){var M=C('').get(0);M.getContext("2d").clearRect(0,0,M.width,M.height);return M};I=function(Q,M,L,P){var O,N=Q.getContext("2d");N.beginPath();if(M=="rect"){N.rect(L[0],L[1],L[2]-L[0],L[3]-L[1])}else{if(M=="poly"){N.moveTo(L[0],L[1]);for(O=2;O').get(0)};I=function(P,M,L,O){var R,S,N,Q;R='';S=(O.stroke?'strokeweight="'+O.strokeWidth+'" stroked="t" strokecolor="#'+O.strokeColor+'"':'stroked="f"');N='';if(M=="rect"){Q=C('')}else{if(M=="poly"){Q=C('')}else{if(M=="circ"){Q=C('')}}}Q.get(0).innerHTML=R+N;C(P).append(Q)};J=function(L){C(L).empty()}}K=function(N){var M,L=N.getAttribute("coords").split(",");for(M=0;M0&&!N.hasClass("maphilighted"))){return }Q=C("
").css({display:"block",background:"url("+this.src+")",position:"relative",padding:0,width:this.width,height:this.height});N.before(Q).css("opacity",0).css(G).remove();if(C.browser.msie){N.css("filter","Alpha(opacity=0)")}Q.append(N);O=B(this);C(O).css(G);O.height=this.height;O.width=this.width;M=function(T){var S=K(this);I(O,S[0],S[1],C.metadata?C.extend({},P,C(this).metadata()):P)};if(P.alwaysOn){C(R).find("area[coords]").each(M)}else{C(R).find("area[coords]").mouseover(M).mouseout(function(S){J(O)})}N.before(O);N.addClass("maphilighted")})};C.fn.maphilight.defaults={fill:true,fillColor:"000000",fillOpacity:0.2,stroke:true,strokeColor:"ff0000",strokeOpacity:1,strokeWidth:1,fade:true,alwaysOn:false}})(jQuery); \ No newline at end of file diff --git a/js/jquery.ui.widget.js b/js/jquery.ui.widget.js new file mode 100644 index 0000000..fd2948f --- /dev/null +++ b/js/jquery.ui.widget.js @@ -0,0 +1,530 @@ +/* + * jQuery UI Widget 1.10.1+amd + * https://github.com/blueimp/jQuery-File-Upload + * + * Copyright 2013 jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * http://api.jqueryui.com/jQuery.widget/ + */ + +(function (factory) { + if (typeof define === "function" && define.amd) { + // Register as an anonymous AMD module: + define(["jquery"], factory); + } else { + // Browser globals: + factory(jQuery); + } +}(function( $, undefined ) { + +var uuid = 0, + slice = Array.prototype.slice, + _cleanData = $.cleanData; +$.cleanData = function( elems ) { + for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) { + try { + $( elem ).triggerHandler( "remove" ); + // http://bugs.jquery.com/ticket/8235 + } catch( e ) {} + } + _cleanData( elems ); +}; + +$.widget = function( name, base, prototype ) { + var fullName, existingConstructor, constructor, basePrototype, + // proxiedPrototype allows the provided prototype to remain unmodified + // so that it can be used as a mixin for multiple widgets (#8876) + proxiedPrototype = {}, + namespace = name.split( "." )[ 0 ]; + + name = name.split( "." )[ 1 ]; + fullName = namespace + "-" + name; + + if ( !prototype ) { + prototype = base; + base = $.Widget; + } + + // create selector for plugin + $.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) { + return !!$.data( elem, fullName ); + }; + + $[ namespace ] = $[ namespace ] || {}; + existingConstructor = $[ namespace ][ name ]; + constructor = $[ namespace ][ name ] = function( options, element ) { + // allow instantiation without "new" keyword + if ( !this._createWidget ) { + return new constructor( options, element ); + } + + // allow instantiation without initializing for simple inheritance + // must use "new" keyword (the code above always passes args) + if ( arguments.length ) { + this._createWidget( options, element ); + } + }; + // extend with the existing constructor to carry over any static properties + $.extend( constructor, existingConstructor, { + version: prototype.version, + // copy the object used to create the prototype in case we need to + // redefine the widget later + _proto: $.extend( {}, prototype ), + // track widgets that inherit from this widget in case this widget is + // redefined after a widget inherits from it + _childConstructors: [] + }); + + basePrototype = new base(); + // we need to make the options hash a property directly on the new instance + // otherwise we'll modify the options hash on the prototype that we're + // inheriting from + basePrototype.options = $.widget.extend( {}, basePrototype.options ); + $.each( prototype, function( prop, value ) { + if ( !$.isFunction( value ) ) { + proxiedPrototype[ prop ] = value; + return; + } + proxiedPrototype[ prop ] = (function() { + var _super = function() { + return base.prototype[ prop ].apply( this, arguments ); + }, + _superApply = function( args ) { + return base.prototype[ prop ].apply( this, args ); + }; + return function() { + var __super = this._super, + __superApply = this._superApply, + returnValue; + + this._super = _super; + this._superApply = _superApply; + + returnValue = value.apply( this, arguments ); + + this._super = __super; + this._superApply = __superApply; + + return returnValue; + }; + })(); + }); + constructor.prototype = $.widget.extend( basePrototype, { + // TODO: remove support for widgetEventPrefix + // always use the name + a colon as the prefix, e.g., draggable:start + // don't prefix for widgets that aren't DOM-based + widgetEventPrefix: existingConstructor ? basePrototype.widgetEventPrefix : name + }, proxiedPrototype, { + constructor: constructor, + namespace: namespace, + widgetName: name, + widgetFullName: fullName + }); + + // If this widget is being redefined then we need to find all widgets that + // are inheriting from it and redefine all of them so that they inherit from + // the new version of this widget. We're essentially trying to replace one + // level in the prototype chain. + if ( existingConstructor ) { + $.each( existingConstructor._childConstructors, function( i, child ) { + var childPrototype = child.prototype; + + // redefine the child widget using the same prototype that was + // originally used, but inherit from the new version of the base + $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto ); + }); + // remove the list of existing child constructors from the old constructor + // so the old child constructors can be garbage collected + delete existingConstructor._childConstructors; + } else { + base._childConstructors.push( constructor ); + } + + $.widget.bridge( name, constructor ); +}; + +$.widget.extend = function( target ) { + var input = slice.call( arguments, 1 ), + inputIndex = 0, + inputLength = input.length, + key, + value; + for ( ; inputIndex < inputLength; inputIndex++ ) { + for ( key in input[ inputIndex ] ) { + value = input[ inputIndex ][ key ]; + if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) { + // Clone objects + if ( $.isPlainObject( value ) ) { + target[ key ] = $.isPlainObject( target[ key ] ) ? + $.widget.extend( {}, target[ key ], value ) : + // Don't extend strings, arrays, etc. with objects + $.widget.extend( {}, value ); + // Copy everything else by reference + } else { + target[ key ] = value; + } + } + } + } + return target; +}; + +$.widget.bridge = function( name, object ) { + var fullName = object.prototype.widgetFullName || name; + $.fn[ name ] = function( options ) { + var isMethodCall = typeof options === "string", + args = slice.call( arguments, 1 ), + returnValue = this; + + // allow multiple hashes to be passed on init + options = !isMethodCall && args.length ? + $.widget.extend.apply( null, [ options ].concat(args) ) : + options; + + if ( isMethodCall ) { + this.each(function() { + var methodValue, + instance = $.data( this, fullName ); + if ( !instance ) { + return $.error( "cannot call methods on " + name + " prior to initialization; " + + "attempted to call method '" + options + "'" ); + } + if ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === "_" ) { + return $.error( "no such method '" + options + "' for " + name + " widget instance" ); + } + methodValue = instance[ options ].apply( instance, args ); + if ( methodValue !== instance && methodValue !== undefined ) { + returnValue = methodValue && methodValue.jquery ? + returnValue.pushStack( methodValue.get() ) : + methodValue; + return false; + } + }); + } else { + this.each(function() { + var instance = $.data( this, fullName ); + if ( instance ) { + instance.option( options || {} )._init(); + } else { + $.data( this, fullName, new object( options, this ) ); + } + }); + } + + return returnValue; + }; +}; + +$.Widget = function( /* options, element */ ) {}; +$.Widget._childConstructors = []; + +$.Widget.prototype = { + widgetName: "widget", + widgetEventPrefix: "", + defaultElement: "
", + options: { + disabled: false, + + // callbacks + create: null + }, + _createWidget: function( options, element ) { + element = $( element || this.defaultElement || this )[ 0 ]; + this.element = $( element ); + this.uuid = uuid++; + this.eventNamespace = "." + this.widgetName + this.uuid; + this.options = $.widget.extend( {}, + this.options, + this._getCreateOptions(), + options ); + + this.bindings = $(); + this.hoverable = $(); + this.focusable = $(); + + if ( element !== this ) { + $.data( element, this.widgetFullName, this ); + this._on( true, this.element, { + remove: function( event ) { + if ( event.target === element ) { + this.destroy(); + } + } + }); + this.document = $( element.style ? + // element within the document + element.ownerDocument : + // element is window or document + element.document || element ); + this.window = $( this.document[0].defaultView || this.document[0].parentWindow ); + } + + this._create(); + this._trigger( "create", null, this._getCreateEventData() ); + this._init(); + }, + _getCreateOptions: $.noop, + _getCreateEventData: $.noop, + _create: $.noop, + _init: $.noop, + + destroy: function() { + this._destroy(); + // we can probably remove the unbind calls in 2.0 + // all event bindings should go through this._on() + this.element + .unbind( this.eventNamespace ) + // 1.9 BC for #7810 + // TODO remove dual storage + .removeData( this.widgetName ) + .removeData( this.widgetFullName ) + // support: jquery <1.6.3 + // http://bugs.jquery.com/ticket/9413 + .removeData( $.camelCase( this.widgetFullName ) ); + this.widget() + .unbind( this.eventNamespace ) + .removeAttr( "aria-disabled" ) + .removeClass( + this.widgetFullName + "-disabled " + + "ui-state-disabled" ); + + // clean up events and states + this.bindings.unbind( this.eventNamespace ); + this.hoverable.removeClass( "ui-state-hover" ); + this.focusable.removeClass( "ui-state-focus" ); + }, + _destroy: $.noop, + + widget: function() { + return this.element; + }, + + option: function( key, value ) { + var options = key, + parts, + curOption, + i; + + if ( arguments.length === 0 ) { + // don't return a reference to the internal hash + return $.widget.extend( {}, this.options ); + } + + if ( typeof key === "string" ) { + // handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } } + options = {}; + parts = key.split( "." ); + key = parts.shift(); + if ( parts.length ) { + curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] ); + for ( i = 0; i < parts.length - 1; i++ ) { + curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {}; + curOption = curOption[ parts[ i ] ]; + } + key = parts.pop(); + if ( value === undefined ) { + return curOption[ key ] === undefined ? null : curOption[ key ]; + } + curOption[ key ] = value; + } else { + if ( value === undefined ) { + return this.options[ key ] === undefined ? null : this.options[ key ]; + } + options[ key ] = value; + } + } + + this._setOptions( options ); + + return this; + }, + _setOptions: function( options ) { + var key; + + for ( key in options ) { + this._setOption( key, options[ key ] ); + } + + return this; + }, + _setOption: function( key, value ) { + this.options[ key ] = value; + + if ( key === "disabled" ) { + this.widget() + .toggleClass( this.widgetFullName + "-disabled ui-state-disabled", !!value ) + .attr( "aria-disabled", value ); + this.hoverable.removeClass( "ui-state-hover" ); + this.focusable.removeClass( "ui-state-focus" ); + } + + return this; + }, + + enable: function() { + return this._setOption( "disabled", false ); + }, + disable: function() { + return this._setOption( "disabled", true ); + }, + + _on: function( suppressDisabledCheck, element, handlers ) { + var delegateElement, + instance = this; + + // no suppressDisabledCheck flag, shuffle arguments + if ( typeof suppressDisabledCheck !== "boolean" ) { + handlers = element; + element = suppressDisabledCheck; + suppressDisabledCheck = false; + } + + // no element argument, shuffle and use this.element + if ( !handlers ) { + handlers = element; + element = this.element; + delegateElement = this.widget(); + } else { + // accept selectors, DOM elements + element = delegateElement = $( element ); + this.bindings = this.bindings.add( element ); + } + + $.each( handlers, function( event, handler ) { + function handlerProxy() { + // allow widgets to customize the disabled handling + // - disabled as an array instead of boolean + // - disabled class as method for disabling individual parts + if ( !suppressDisabledCheck && + ( instance.options.disabled === true || + $( this ).hasClass( "ui-state-disabled" ) ) ) { + return; + } + return ( typeof handler === "string" ? instance[ handler ] : handler ) + .apply( instance, arguments ); + } + + // copy the guid so direct unbinding works + if ( typeof handler !== "string" ) { + handlerProxy.guid = handler.guid = + handler.guid || handlerProxy.guid || $.guid++; + } + + var match = event.match( /^(\w+)\s*(.*)$/ ), + eventName = match[1] + instance.eventNamespace, + selector = match[2]; + if ( selector ) { + delegateElement.delegate( selector, eventName, handlerProxy ); + } else { + element.bind( eventName, handlerProxy ); + } + }); + }, + + _off: function( element, eventName ) { + eventName = (eventName || "").split( " " ).join( this.eventNamespace + " " ) + this.eventNamespace; + element.unbind( eventName ).undelegate( eventName ); + }, + + _delay: function( handler, delay ) { + function handlerProxy() { + return ( typeof handler === "string" ? instance[ handler ] : handler ) + .apply( instance, arguments ); + } + var instance = this; + return setTimeout( handlerProxy, delay || 0 ); + }, + + _hoverable: function( element ) { + this.hoverable = this.hoverable.add( element ); + this._on( element, { + mouseenter: function( event ) { + $( event.currentTarget ).addClass( "ui-state-hover" ); + }, + mouseleave: function( event ) { + $( event.currentTarget ).removeClass( "ui-state-hover" ); + } + }); + }, + + _focusable: function( element ) { + this.focusable = this.focusable.add( element ); + this._on( element, { + focusin: function( event ) { + $( event.currentTarget ).addClass( "ui-state-focus" ); + }, + focusout: function( event ) { + $( event.currentTarget ).removeClass( "ui-state-focus" ); + } + }); + }, + + _trigger: function( type, event, data ) { + var prop, orig, + callback = this.options[ type ]; + + data = data || {}; + event = $.Event( event ); + event.type = ( type === this.widgetEventPrefix ? + type : + this.widgetEventPrefix + type ).toLowerCase(); + // the original event may come from any element + // so we need to reset the target on the new event + event.target = this.element[ 0 ]; + + // copy original event properties over to the new event + orig = event.originalEvent; + if ( orig ) { + for ( prop in orig ) { + if ( !( prop in event ) ) { + event[ prop ] = orig[ prop ]; + } + } + } + + this.element.trigger( event, data ); + return !( $.isFunction( callback ) && + callback.apply( this.element[0], [ event ].concat( data ) ) === false || + event.isDefaultPrevented() ); + } +}; + +$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) { + $.Widget.prototype[ "_" + method ] = function( element, options, callback ) { + if ( typeof options === "string" ) { + options = { effect: options }; + } + var hasOptions, + effectName = !options ? + method : + options === true || typeof options === "number" ? + defaultEffect : + options.effect || defaultEffect; + options = options || {}; + if ( typeof options === "number" ) { + options = { duration: options }; + } + hasOptions = !$.isEmptyObject( options ); + options.complete = callback; + if ( options.delay ) { + element.delay( options.delay ); + } + if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) { + element[ method ]( options ); + } else if ( effectName !== method && element[ effectName ] ) { + element[ effectName ]( options.duration, options.easing, callback ); + } else { + element.queue(function( next ) { + $( this )[ method ](); + if ( callback ) { + callback.call( element[ 0 ] ); + } + next(); + }); + } + }; +}); + +})); diff --git a/js/jquery.uploadify-3.1.min.js b/js/jquery.uploadify-3.1.min.js new file mode 100644 index 0000000..2ecda85 --- /dev/null +++ b/js/jquery.uploadify-3.1.min.js @@ -0,0 +1,16 @@ +/* +Uploadify v3.1.1 +Copyright (c) 2012 Reactive Apps, Ronnie Garcia +Released under the MIT License + +SWFUpload: http://www.swfupload.org, http://swfupload.googlecode.com +mmSWFUpload 1.0: Flash upload dialog - http://profandesign.se/swfupload/, http://www.vinterwebb.se/ +SWFUpload is (c) 2006-2007 Lars Huring, Olov Nilzén and Mammon Media and is released under the MIT License: +http://www.opensource.org/licenses/mit-license.php +SWFUpload 2 is (c) 2007-2008 Jake Roberts and is released under the MIT License: +http://www.opensource.org/licenses/mit-license.php + +SWFObject v2.2 +is released under the MIT License +*/ +;var swfobject=function(){var aq="undefined",aD="object",ab="Shockwave Flash",X="ShockwaveFlash.ShockwaveFlash",aE="application/x-shockwave-flash",ac="SWFObjectExprInst",ax="onreadystatechange",af=window,aL=document,aB=navigator,aa=false,Z=[aN],aG=[],ag=[],al=[],aJ,ad,ap,at,ak=false,aU=false,aH,an,aI=true,ah=function(){var a=typeof aL.getElementById!=aq&&typeof aL.getElementsByTagName!=aq&&typeof aL.createElement!=aq,e=aB.userAgent.toLowerCase(),c=aB.platform.toLowerCase(),h=c?/win/.test(c):/win/.test(e),j=c?/mac/.test(c):/mac/.test(e),g=/webkit/.test(e)?parseFloat(e.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,d=!+"\v1",f=[0,0,0],k=null;if(typeof aB.plugins!=aq&&typeof aB.plugins[ab]==aD){k=aB.plugins[ab].description;if(k&&!(typeof aB.mimeTypes!=aq&&aB.mimeTypes[aE]&&!aB.mimeTypes[aE].enabledPlugin)){aa=true;d=false;k=k.replace(/^.*\s+(\S+\s+\S+$)/,"$1");f[0]=parseInt(k.replace(/^(.*)\..*$/,"$1"),10);f[1]=parseInt(k.replace(/^.*\.(.*)\s.*$/,"$1"),10);f[2]=/[a-zA-Z]/.test(k)?parseInt(k.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0;}}else{if(typeof af.ActiveXObject!=aq){try{var i=new ActiveXObject(X);if(i){k=i.GetVariable("$version");if(k){d=true;k=k.split(" ")[1].split(",");f=[parseInt(k[0],10),parseInt(k[1],10),parseInt(k[2],10)];}}}catch(b){}}}return{w3:a,pv:f,wk:g,ie:d,win:h,mac:j};}(),aK=function(){if(!ah.w3){return;}if((typeof aL.readyState!=aq&&aL.readyState=="complete")||(typeof aL.readyState==aq&&(aL.getElementsByTagName("body")[0]||aL.body))){aP();}if(!ak){if(typeof aL.addEventListener!=aq){aL.addEventListener("DOMContentLoaded",aP,false);}if(ah.ie&&ah.win){aL.attachEvent(ax,function(){if(aL.readyState=="complete"){aL.detachEvent(ax,arguments.callee);aP();}});if(af==top){(function(){if(ak){return;}try{aL.documentElement.doScroll("left");}catch(a){setTimeout(arguments.callee,0);return;}aP();})();}}if(ah.wk){(function(){if(ak){return;}if(!/loaded|complete/.test(aL.readyState)){setTimeout(arguments.callee,0);return;}aP();})();}aC(aP);}}();function aP(){if(ak){return;}try{var b=aL.getElementsByTagName("body")[0].appendChild(ar("span"));b.parentNode.removeChild(b);}catch(a){return;}ak=true;var d=Z.length;for(var c=0;c0){for(var h=0;h0){var i=aS(c);if(i){if(ao(aG[h].swfVersion)&&!(ah.wk&&ah.wk<312)){ay(c,true);if(l){a.success=true;a.ref=av(c);l(a);}}else{if(aG[h].expressInstall&&au()){var e={};e.data=aG[h].expressInstall;e.width=i.getAttribute("width")||"0";e.height=i.getAttribute("height")||"0";if(i.getAttribute("class")){e.styleclass=i.getAttribute("class");}if(i.getAttribute("align")){e.align=i.getAttribute("align");}var f={};var d=i.getElementsByTagName("param");var k=d.length;for(var j=0;j';}}a.outerHTML='"+h+"";ag[ag.length]=e.id;d=aS(e.id);}else{var b=ar(aD);b.setAttribute("type",aE);for(var k in e){if(e[k]!=Object.prototype[k]){if(k.toLowerCase()=="styleclass"){b.setAttribute("class",e[k]);}else{if(k.toLowerCase()!="classid"){b.setAttribute(k,e[k]);}}}}for(var l in g){if(g[l]!=Object.prototype[l]&&l.toLowerCase()!="movie"){aQ(b,l,g[l]);}}a.parentNode.replaceChild(b,a);d=b;}}return d;}function aQ(b,d,c){var a=ar("param");a.setAttribute("name",d);a.setAttribute("value",c);b.appendChild(a);}function aw(a){var b=aS(a);if(b&&b.nodeName=="OBJECT"){if(ah.ie&&ah.win){b.style.display="none";(function(){if(b.readyState==4){aT(a);}else{setTimeout(arguments.callee,10);}})();}else{b.parentNode.removeChild(b);}}}function aT(a){var b=aS(a);if(b){for(var c in b){if(typeof b[c]=="function"){b[c]=null;}}b.parentNode.removeChild(b);}}function aS(a){var c=null;try{c=aL.getElementById(a);}catch(b){}return c;}function ar(a){return aL.createElement(a);}function aM(a,c,b){a.attachEvent(c,b);al[al.length]=[a,c,b];}function ao(a){var b=ah.pv,c=a.split(".");c[0]=parseInt(c[0],10);c[1]=parseInt(c[1],10)||0;c[2]=parseInt(c[2],10)||0;return(b[0]>c[0]||(b[0]==c[0]&&b[1]>c[1])||(b[0]==c[0]&&b[1]==c[1]&&b[2]>=c[2]))?true:false;}function az(b,f,a,c){if(ah.ie&&ah.mac){return;}var e=aL.getElementsByTagName("head")[0];if(!e){return;}var g=(a&&typeof a=="string")?a:"screen";if(c){aH=null;an=null;}if(!aH||an!=g){var d=ar("style");d.setAttribute("type","text/css");d.setAttribute("media",g);aH=e.appendChild(d);if(ah.ie&&ah.win&&typeof aL.styleSheets!=aq&&aL.styleSheets.length>0){aH=aL.styleSheets[aL.styleSheets.length-1];}an=g;}if(ah.ie&&ah.win){if(aH&&typeof aH.addRule==aD){aH.addRule(b,f);}}else{if(aH&&typeof aL.createTextNode!=aq){aH.appendChild(aL.createTextNode(b+" {"+f+"}"));}}}function ay(a,c){if(!aI){return;}var b=c?"visible":"hidden";if(ak&&aS(a)){aS(a).style.visibility=b;}else{az("#"+a,"visibility:"+b);}}function ai(b){var a=/[\\\"<>\.;]/;var c=a.exec(b)!=null;return c&&typeof encodeURIComponent!=aq?encodeURIComponent(b):b;}var aR=function(){if(ah.ie&&ah.win){window.attachEvent("onunload",function(){var a=al.length;for(var b=0;b','','','','','','',""].join("");};SWFUpload.prototype.getFlashVars=function(){var c=this.buildParamString();var d=this.settings.http_success.join(",");return["movieName=",encodeURIComponent(this.movieName),"&uploadURL=",encodeURIComponent(this.settings.upload_url),"&useQueryString=",encodeURIComponent(this.settings.use_query_string),"&requeueOnError=",encodeURIComponent(this.settings.requeue_on_error),"&httpSuccess=",encodeURIComponent(d),"&assumeSuccessTimeout=",encodeURIComponent(this.settings.assume_success_timeout),"&params=",encodeURIComponent(c),"&filePostName=",encodeURIComponent(this.settings.file_post_name),"&fileTypes=",encodeURIComponent(this.settings.file_types),"&fileTypesDescription=",encodeURIComponent(this.settings.file_types_description),"&fileSizeLimit=",encodeURIComponent(this.settings.file_size_limit),"&fileUploadLimit=",encodeURIComponent(this.settings.file_upload_limit),"&fileQueueLimit=",encodeURIComponent(this.settings.file_queue_limit),"&debugEnabled=",encodeURIComponent(this.settings.debug_enabled),"&buttonImageURL=",encodeURIComponent(this.settings.button_image_url),"&buttonWidth=",encodeURIComponent(this.settings.button_width),"&buttonHeight=",encodeURIComponent(this.settings.button_height),"&buttonText=",encodeURIComponent(this.settings.button_text),"&buttonTextTopPadding=",encodeURIComponent(this.settings.button_text_top_padding),"&buttonTextLeftPadding=",encodeURIComponent(this.settings.button_text_left_padding),"&buttonTextStyle=",encodeURIComponent(this.settings.button_text_style),"&buttonAction=",encodeURIComponent(this.settings.button_action),"&buttonDisabled=",encodeURIComponent(this.settings.button_disabled),"&buttonCursor=",encodeURIComponent(this.settings.button_cursor)].join("");};SWFUpload.prototype.getMovieElement=function(){if(this.movieElement==undefined){this.movieElement=document.getElementById(this.movieName);}if(this.movieElement===null){throw"Could not find Flash element";}return this.movieElement;};SWFUpload.prototype.buildParamString=function(){var f=this.settings.post_params;var d=[];if(typeof(f)==="object"){for(var e in f){if(f.hasOwnProperty(e)){d.push(encodeURIComponent(e.toString())+"="+encodeURIComponent(f[e].toString()));}}}return d.join("&");};SWFUpload.prototype.destroy=function(){try{this.cancelUpload(null,false);var g=null;g=this.getMovieElement();if(g&&typeof(g.CallFunction)==="unknown"){for(var j in g){try{if(typeof(g[j])==="function"){g[j]=null;}}catch(h){}}try{g.parentNode.removeChild(g);}catch(f){}}window[this.movieName]=null;SWFUpload.instances[this.movieName]=null;delete SWFUpload.instances[this.movieName];this.movieElement=null;this.settings=null;this.customSettings=null;this.eventQueue=null;this.movieName=null;return true;}catch(i){return false;}};SWFUpload.prototype.displayDebugInfo=function(){this.debug(["---SWFUpload Instance Info---\n","Version: ",SWFUpload.version,"\n","Movie Name: ",this.movieName,"\n","Settings:\n","\t","upload_url: ",this.settings.upload_url,"\n","\t","flash_url: ",this.settings.flash_url,"\n","\t","use_query_string: ",this.settings.use_query_string.toString(),"\n","\t","requeue_on_error: ",this.settings.requeue_on_error.toString(),"\n","\t","http_success: ",this.settings.http_success.join(", "),"\n","\t","assume_success_timeout: ",this.settings.assume_success_timeout,"\n","\t","file_post_name: ",this.settings.file_post_name,"\n","\t","post_params: ",this.settings.post_params.toString(),"\n","\t","file_types: ",this.settings.file_types,"\n","\t","file_types_description: ",this.settings.file_types_description,"\n","\t","file_size_limit: ",this.settings.file_size_limit,"\n","\t","file_upload_limit: ",this.settings.file_upload_limit,"\n","\t","file_queue_limit: ",this.settings.file_queue_limit,"\n","\t","debug: ",this.settings.debug.toString(),"\n","\t","prevent_swf_caching: ",this.settings.prevent_swf_caching.toString(),"\n","\t","button_placeholder_id: ",this.settings.button_placeholder_id.toString(),"\n","\t","button_placeholder: ",(this.settings.button_placeholder?"Set":"Not Set"),"\n","\t","button_image_url: ",this.settings.button_image_url.toString(),"\n","\t","button_width: ",this.settings.button_width.toString(),"\n","\t","button_height: ",this.settings.button_height.toString(),"\n","\t","button_text: ",this.settings.button_text.toString(),"\n","\t","button_text_style: ",this.settings.button_text_style.toString(),"\n","\t","button_text_top_padding: ",this.settings.button_text_top_padding.toString(),"\n","\t","button_text_left_padding: ",this.settings.button_text_left_padding.toString(),"\n","\t","button_action: ",this.settings.button_action.toString(),"\n","\t","button_disabled: ",this.settings.button_disabled.toString(),"\n","\t","custom_settings: ",this.settings.custom_settings.toString(),"\n","Event Handlers:\n","\t","swfupload_loaded_handler assigned: ",(typeof this.settings.swfupload_loaded_handler==="function").toString(),"\n","\t","file_dialog_start_handler assigned: ",(typeof this.settings.file_dialog_start_handler==="function").toString(),"\n","\t","file_queued_handler assigned: ",(typeof this.settings.file_queued_handler==="function").toString(),"\n","\t","file_queue_error_handler assigned: ",(typeof this.settings.file_queue_error_handler==="function").toString(),"\n","\t","upload_start_handler assigned: ",(typeof this.settings.upload_start_handler==="function").toString(),"\n","\t","upload_progress_handler assigned: ",(typeof this.settings.upload_progress_handler==="function").toString(),"\n","\t","upload_error_handler assigned: ",(typeof this.settings.upload_error_handler==="function").toString(),"\n","\t","upload_success_handler assigned: ",(typeof this.settings.upload_success_handler==="function").toString(),"\n","\t","upload_complete_handler assigned: ",(typeof this.settings.upload_complete_handler==="function").toString(),"\n","\t","debug_handler assigned: ",(typeof this.settings.debug_handler==="function").toString(),"\n"].join(""));};SWFUpload.prototype.addSetting=function(d,f,e){if(f==undefined){return(this.settings[d]=e);}else{return(this.settings[d]=f);}};SWFUpload.prototype.getSetting=function(b){if(this.settings[b]!=undefined){return this.settings[b];}return"";};SWFUpload.prototype.callFlash=function(functionName,argumentArray){argumentArray=argumentArray||[];var movieElement=this.getMovieElement();var returnValue,returnString;try{returnString=movieElement.CallFunction(''+__flash__argumentsToXML(argumentArray,0)+"");returnValue=eval(returnString);}catch(ex){throw"Call to "+functionName+" failed";}if(returnValue!=undefined&&typeof returnValue.post==="object"){returnValue=this.unescapeFilePostParams(returnValue);}return returnValue;};SWFUpload.prototype.selectFile=function(){this.callFlash("SelectFile");};SWFUpload.prototype.selectFiles=function(){this.callFlash("SelectFiles");};SWFUpload.prototype.startUpload=function(b){this.callFlash("StartUpload",[b]);};SWFUpload.prototype.cancelUpload=function(d,c){if(c!==false){c=true;}this.callFlash("CancelUpload",[d,c]);};SWFUpload.prototype.stopUpload=function(){this.callFlash("StopUpload");};SWFUpload.prototype.getStats=function(){return this.callFlash("GetStats");};SWFUpload.prototype.setStats=function(b){this.callFlash("SetStats",[b]);};SWFUpload.prototype.getFile=function(b){if(typeof(b)==="number"){return this.callFlash("GetFileByIndex",[b]);}else{return this.callFlash("GetFile",[b]);}};SWFUpload.prototype.addFileParam=function(e,d,f){return this.callFlash("AddFileParam",[e,d,f]);};SWFUpload.prototype.removeFileParam=function(d,c){this.callFlash("RemoveFileParam",[d,c]);};SWFUpload.prototype.setUploadURL=function(b){this.settings.upload_url=b.toString();this.callFlash("SetUploadURL",[b]);};SWFUpload.prototype.setPostParams=function(b){this.settings.post_params=b;this.callFlash("SetPostParams",[b]);};SWFUpload.prototype.addPostParam=function(d,c){this.settings.post_params[d]=c;this.callFlash("SetPostParams",[this.settings.post_params]);};SWFUpload.prototype.removePostParam=function(b){delete this.settings.post_params[b];this.callFlash("SetPostParams",[this.settings.post_params]);};SWFUpload.prototype.setFileTypes=function(d,c){this.settings.file_types=d;this.settings.file_types_description=c;this.callFlash("SetFileTypes",[d,c]);};SWFUpload.prototype.setFileSizeLimit=function(b){this.settings.file_size_limit=b;this.callFlash("SetFileSizeLimit",[b]);};SWFUpload.prototype.setFileUploadLimit=function(b){this.settings.file_upload_limit=b;this.callFlash("SetFileUploadLimit",[b]);};SWFUpload.prototype.setFileQueueLimit=function(b){this.settings.file_queue_limit=b;this.callFlash("SetFileQueueLimit",[b]);};SWFUpload.prototype.setFilePostName=function(b){this.settings.file_post_name=b;this.callFlash("SetFilePostName",[b]);};SWFUpload.prototype.setUseQueryString=function(b){this.settings.use_query_string=b;this.callFlash("SetUseQueryString",[b]);};SWFUpload.prototype.setRequeueOnError=function(b){this.settings.requeue_on_error=b;this.callFlash("SetRequeueOnError",[b]);};SWFUpload.prototype.setHTTPSuccess=function(b){if(typeof b==="string"){b=b.replace(" ","").split(",");}this.settings.http_success=b;this.callFlash("SetHTTPSuccess",[b]);};SWFUpload.prototype.setAssumeSuccessTimeout=function(b){this.settings.assume_success_timeout=b;this.callFlash("SetAssumeSuccessTimeout",[b]);};SWFUpload.prototype.setDebugEnabled=function(b){this.settings.debug_enabled=b;this.callFlash("SetDebugEnabled",[b]);};SWFUpload.prototype.setButtonImageURL=function(b){if(b==undefined){b="";}this.settings.button_image_url=b;this.callFlash("SetButtonImageURL",[b]);};SWFUpload.prototype.setButtonDimensions=function(f,e){this.settings.button_width=f;this.settings.button_height=e;var d=this.getMovieElement();if(d!=undefined){d.style.width=f+"px";d.style.height=e+"px";}this.callFlash("SetButtonDimensions",[f,e]);};SWFUpload.prototype.setButtonText=function(b){this.settings.button_text=b;this.callFlash("SetButtonText",[b]);};SWFUpload.prototype.setButtonTextPadding=function(c,d){this.settings.button_text_top_padding=d;this.settings.button_text_left_padding=c;this.callFlash("SetButtonTextPadding",[c,d]);};SWFUpload.prototype.setButtonTextStyle=function(b){this.settings.button_text_style=b;this.callFlash("SetButtonTextStyle",[b]);};SWFUpload.prototype.setButtonDisabled=function(b){this.settings.button_disabled=b;this.callFlash("SetButtonDisabled",[b]);};SWFUpload.prototype.setButtonAction=function(b){this.settings.button_action=b;this.callFlash("SetButtonAction",[b]);};SWFUpload.prototype.setButtonCursor=function(b){this.settings.button_cursor=b;this.callFlash("SetButtonCursor",[b]);};SWFUpload.prototype.queueEvent=function(d,f){if(f==undefined){f=[];}else{if(!(f instanceof Array)){f=[f];}}var e=this;if(typeof this.settings[d]==="function"){this.eventQueue.push(function(){this.settings[d].apply(this,f);});setTimeout(function(){e.executeNextEvent();},0);}else{if(this.settings[d]!==null){throw"Event handler "+d+" is unknown or is not a function";}}};SWFUpload.prototype.executeNextEvent=function(){var b=this.eventQueue?this.eventQueue.shift():null;if(typeof(b)==="function"){b.apply(this);}};SWFUpload.prototype.unescapeFilePostParams=function(l){var j=/[$]([0-9a-f]{4})/i;var i={};var k;if(l!=undefined){for(var h in l.post){if(l.post.hasOwnProperty(h)){k=h;var g;while((g=j.exec(k))!==null){k=k.replace(g[0],String.fromCharCode(parseInt("0x"+g[1],16)));}i[k]=l.post[h];}}l.post=i;}return l;};SWFUpload.prototype.testExternalInterface=function(){try{return this.callFlash("TestExternalInterface");}catch(b){return false;}};SWFUpload.prototype.flashReady=function(){var b=this.getMovieElement();if(!b){this.debug("Flash called back ready but the flash movie can't be found.");return;}this.cleanUp(b);this.queueEvent("swfupload_loaded_handler");};SWFUpload.prototype.cleanUp=function(f){try{if(this.movieElement&&typeof(f.CallFunction)==="unknown"){this.debug("Removing Flash functions hooks (this should only run in IE and should prevent memory leaks)");for(var h in f){try{if(typeof(f[h])==="function"){f[h]=null;}}catch(e){}}}}catch(g){}window.__flash__removeCallback=function(c,b){try{if(c){c[b]=null;}}catch(a){}};};SWFUpload.prototype.fileDialogStart=function(){this.queueEvent("file_dialog_start_handler");};SWFUpload.prototype.fileQueued=function(b){b=this.unescapeFilePostParams(b);this.queueEvent("file_queued_handler",b);};SWFUpload.prototype.fileQueueError=function(e,f,d){e=this.unescapeFilePostParams(e);this.queueEvent("file_queue_error_handler",[e,f,d]);};SWFUpload.prototype.fileDialogComplete=function(d,f,e){this.queueEvent("file_dialog_complete_handler",[d,f,e]);};SWFUpload.prototype.uploadStart=function(b){b=this.unescapeFilePostParams(b);this.queueEvent("return_upload_start_handler",b);};SWFUpload.prototype.returnUploadStart=function(d){var c;if(typeof this.settings.upload_start_handler==="function"){d=this.unescapeFilePostParams(d);c=this.settings.upload_start_handler.call(this,d);}else{if(this.settings.upload_start_handler!=undefined){throw"upload_start_handler must be a function";}}if(c===undefined){c=true;}c=!!c;this.callFlash("ReturnUploadStart",[c]);};SWFUpload.prototype.uploadProgress=function(e,f,d){e=this.unescapeFilePostParams(e);this.queueEvent("upload_progress_handler",[e,f,d]);};SWFUpload.prototype.uploadError=function(e,f,d){e=this.unescapeFilePostParams(e);this.queueEvent("upload_error_handler",[e,f,d]);};SWFUpload.prototype.uploadSuccess=function(d,e,f){d=this.unescapeFilePostParams(d);this.queueEvent("upload_success_handler",[d,e,f]);};SWFUpload.prototype.uploadComplete=function(b){b=this.unescapeFilePostParams(b);this.queueEvent("upload_complete_handler",b);};SWFUpload.prototype.debug=function(b){this.queueEvent("debug_handler",b);};SWFUpload.prototype.debugMessage=function(h){if(this.settings.debug){var f,g=[];if(typeof h==="object"&&typeof h.name==="string"&&typeof h.message==="string"){for(var e in h){if(h.hasOwnProperty(e)){g.push(e+": "+h[e]);}}f=g.join("\n")||"";g=f.split("\n");f="EXCEPTION: "+g.join("\nEXCEPTION: ");SWFUpload.Console.writeLine(f);}else{SWFUpload.Console.writeLine(h);}}};SWFUpload.Console={};SWFUpload.Console.writeLine=function(g){var e,f;try{e=document.getElementById("SWFUpload_Console");if(!e){f=document.createElement("form");document.getElementsByTagName("body")[0].appendChild(f);e=document.createElement("textarea");e.id="SWFUpload_Console";e.style.fontFamily="monospace";e.setAttribute("wrap","off");e.wrap="off";e.style.overflow="auto";e.style.width="700px";e.style.height="350px";e.style.margin="5px";f.appendChild(e);}e.value+=g+"\n";e.scrollTop=e.scrollHeight-e.clientHeight;}catch(h){alert("Exception: "+h.name+" Message: "+h.message);}};(function(c){var b={init:function(d,e){return this.each(function(){var n=c(this);var m=n.clone();var j=c.extend({id:n.attr("id"),swf:"uploadify.swf",uploader:"uploadify.php",auto:true,buttonClass:"",buttonCursor:"hand",buttonImage:null,buttonText:"SELECT FILES",checkExisting:false,debug:false,fileObjName:"Filedata",fileSizeLimit:0,fileTypeDesc:"All Files",fileTypeExts:"*.*",height:30,method:"post",multi:true,formData:{},preventCaching:true,progressData:"percentage",queueID:false,queueSizeLimit:999,removeCompleted:true,removeTimeout:3,requeueErrors:false,successTimeout:30,uploadLimit:0,width:120,overrideEvents:[]},d);var g={assume_success_timeout:j.successTimeout,button_placeholder_id:j.id,button_width:j.width,button_height:j.height,button_text:null,button_text_style:null,button_text_top_padding:0,button_text_left_padding:0,button_action:(j.multi?SWFUpload.BUTTON_ACTION.SELECT_FILES:SWFUpload.BUTTON_ACTION.SELECT_FILE),button_disabled:false,button_cursor:(j.buttonCursor=="arrow"?SWFUpload.CURSOR.ARROW:SWFUpload.CURSOR.HAND),button_window_mode:SWFUpload.WINDOW_MODE.TRANSPARENT,debug:j.debug,requeue_on_error:j.requeueErrors,file_post_name:j.fileObjName,file_size_limit:j.fileSizeLimit,file_types:j.fileTypeExts,file_types_description:j.fileTypeDesc,file_queue_limit:j.queueSizeLimit,file_upload_limit:j.uploadLimit,flash_url:j.swf,prevent_swf_caching:j.preventCaching,post_params:j.formData,upload_url:j.uploader,use_query_string:(j.method=="get"),file_dialog_complete_handler:a.onDialogClose,file_dialog_start_handler:a.onDialogOpen,file_queued_handler:a.onSelect,file_queue_error_handler:a.onSelectError,swfupload_loaded_handler:j.onSWFReady,upload_complete_handler:a.onUploadComplete,upload_error_handler:a.onUploadError,upload_progress_handler:a.onUploadProgress,upload_start_handler:a.onUploadStart,upload_success_handler:a.onUploadSuccess};if(e){g=c.extend(g,e);}g=c.extend(g,j);var o=swfobject.getFlashPlayerVersion();var h=(o.major>=9);if(h){window["uploadify_"+j.id]=new SWFUpload(g);var i=window["uploadify_"+j.id];n.data("uploadify",i);var l=c("
",{id:j.id,"class":"uploadify",css:{height:j.height+"px",width:j.width+"px"}});c("#"+i.movieName).wrap(l);l=c("#"+j.id);l.data("uploadify",i);var f=c("
",{id:j.id+"-button","class":"uploadify-button "+j.buttonClass});if(j.buttonImage){f.css({"background-image":"url('"+j.buttonImage+"')","text-indent":"-9999px"});}f.html(''+j.buttonText+"").css({height:j.height+"px","line-height":j.height+"px",width:j.width+"px"});l.append(f);c("#"+i.movieName).css({position:"absolute","z-index":1});if(!j.queueID){var k=c("
",{id:j.id+"-queue","class":"uploadify-queue"});l.after(k);i.settings.queueID=j.id+"-queue";i.settings.defaultQueue=true;}i.queueData={files:{},filesSelected:0,filesQueued:0,filesReplaced:0,filesCancelled:0,filesErrored:0,uploadsSuccessful:0,uploadsErrored:0,averageSpeed:0,queueLength:0,queueSize:0,uploadSize:0,queueBytesUploaded:0,uploadQueue:[],errorMsg:"Some files were not added to the queue:"};i.original=m;i.wrapper=l;i.button=f;i.queue=k;if(j.onInit){j.onInit.call(n,i);}}else{if(j.onFallback){j.onFallback.call(n);}}});},cancel:function(d,f){var e=arguments;this.each(function(){var l=c(this),i=l.data("uploadify"),j=i.settings,h=-1;if(e[0]){if(e[0]=="*"){var g=i.queueData.queueLength;c("#"+j.queueID).find(".uploadify-queue-item").each(function(){h++;if(e[1]===true){i.cancelUpload(c(this).attr("id"),false);}else{i.cancelUpload(c(this).attr("id"));}c(this).find(".data").removeClass("data").html(" - Cancelled");c(this).find(".uploadify-progress-bar").remove();c(this).delay(1000+100*h).fadeOut(500,function(){c(this).remove();});});i.queueData.queueSize=0;i.queueData.queueLength=0;if(j.onClearQueue){j.onClearQueue.call(l,g);}}else{for(var m=0;m0){alert(this.queueData.errorMsg);}}if(e.onDialogClose){e.onDialogClose.call(this,this.queueData);}if(e.auto){c("#"+e.id).uploadify("upload","*");}},onSelect:function(g){var h=this.settings;var e={};for(var f in this.queueData.files){e=this.queueData.files[f];if(e.uploaded!=true&&e.name==g.name){var d=confirm('The file named "'+g.name+'" is already in the queue.\nDo you want to replace the existing item in the queue?');if(!d){this.cancelUpload(g.id);this.queueData.filesCancelled++;return false;}else{c("#"+e.id).remove();this.cancelUpload(e.id);this.queueData.filesReplaced++;}}}var i=Math.round(g.size/1024);var l="KB";if(i>1000){i=Math.round(i/1000);l="MB";}var k=i.toString().split(".");i=k[0];if(k.length>1){i+="."+k[1].substr(0,2);}i+=l;var j=g.name;if(j.length>25){j=j.substr(0,25)+"...";}if(c.inArray("onSelect",h.overrideEvents)<0){c("#"+h.queueID).append('
X
'+j+" ("+i+')
');}this.queueData.queueSize+=g.size;this.queueData.files[g.id]=g;if(h.onSelect){h.onSelect.apply(this,arguments);}},onSelectError:function(d,g,f){var e=this.settings;if(c.inArray("onSelectError",e.overrideEvents)<0){switch(g){case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED:if(e.queueSizeLimit>f){this.queueData.errorMsg+="\nThe number of files selected exceeds the remaining upload limit ("+f+").";}else{this.queueData.errorMsg+="\nThe number of files selected exceeds the queue size limit ("+e.queueSizeLimit+").";}break;case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:this.queueData.errorMsg+='\nThe file "'+d.name+'" exceeds the size limit ('+e.fileSizeLimit+").";break;case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:this.queueData.errorMsg+='\nThe file "'+d.name+'" is empty.';break;case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:this.queueData.errorMsg+='\nThe file "'+d.name+'" is not an accepted file type ('+e.fileTypeDesc+").";break;}}if(g!=SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED){delete this.queueData.files[d.id];}if(e.onSelectError){e.onSelectError.apply(this,arguments);}},onQueueComplete:function(){if(this.settings.onQueueComplete){this.settings.onQueueComplete.call(this,this.settings.queueData);}},onUploadComplete:function(f){var g=this.settings,d=this;var e=this.getStats();this.queueData.queueLength=e.files_queued;if(this.queueData.uploadQueue[0]=="*"){if(this.queueData.queueLength>0){this.startUpload();}else{this.queueData.uploadQueue=[];if(g.onQueueComplete){g.onQueueComplete.call(this,this.queueData);}}}else{if(this.queueData.uploadQueue.length>0){this.startUpload(this.queueData.uploadQueue.shift());}else{this.queueData.uploadQueue=[];if(g.onQueueComplete){g.onQueueComplete.call(this,this.queueData);}}}if(c.inArray("onUploadComplete",g.overrideEvents)<0){if(g.removeCompleted){switch(f.filestatus){case SWFUpload.FILE_STATUS.COMPLETE:setTimeout(function(){if(c("#"+f.id)){d.queueData.queueSize-=f.size;d.queueData.queueLength-=1;delete d.queueData.files[f.id];c("#"+f.id).fadeOut(500,function(){c(this).remove();});}},g.removeTimeout*1000);break;case SWFUpload.FILE_STATUS.ERROR:if(!g.requeueErrors){setTimeout(function(){if(c("#"+f.id)){d.queueData.queueSize-=f.size;d.queueData.queueLength-=1;delete d.queueData.files[f.id];c("#"+f.id).fadeOut(500,function(){c(this).remove();});}},g.removeTimeout*1000);}break;}}else{f.uploaded=true;}}if(g.onUploadComplete){g.onUploadComplete.call(this,f);}},onUploadError:function(e,i,h){var f=this.settings;var g="Error";switch(i){case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:g="HTTP Error ("+h+")";break;case SWFUpload.UPLOAD_ERROR.MISSING_UPLOAD_URL:g="Missing Upload URL";break;case SWFUpload.UPLOAD_ERROR.IO_ERROR:g="IO Error";break;case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:g="Security Error";break;case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:alert("The upload limit has been reached ("+h+").");g="Exceeds Upload Limit";break;case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:g="Failed";break;case SWFUpload.UPLOAD_ERROR.SPECIFIED_FILE_ID_NOT_FOUND:break;case SWFUpload.UPLOAD_ERROR.FILE_VALIDATION_FAILED:g="Validation Error";break;case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:g="Cancelled";this.queueData.queueSize-=e.size;this.queueData.queueLength-=1;if(e.status==SWFUpload.FILE_STATUS.IN_PROGRESS||c.inArray(e.id,this.queueData.uploadQueue)>=0){this.queueData.uploadSize-=e.size;}if(f.onCancel){f.onCancel.call(this,e);}delete this.queueData.files[e.id];break;case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:g="Stopped";break;}if(c.inArray("onUploadError",f.overrideEvents)<0){if(i!=SWFUpload.UPLOAD_ERROR.FILE_CANCELLED&&i!=SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED){c("#"+e.id).addClass("uploadify-error");}c("#"+e.id).find(".uploadify-progress-bar").css("width","1px");if(i!=SWFUpload.UPLOAD_ERROR.SPECIFIED_FILE_ID_NOT_FOUND&&e.status!=SWFUpload.FILE_STATUS.COMPLETE){c("#"+e.id).find(".data").html(" - "+g);}}var d=this.getStats();this.queueData.uploadsErrored=d.upload_errors;if(f.onUploadError){f.onUploadError.call(this,e,i,h,g);}},onUploadProgress:function(g,m,j){var h=this.settings;var e=new Date();var n=e.getTime();var k=n-this.timer;if(k>500){this.timer=n;}var i=m-this.bytesLoaded;this.bytesLoaded=m;var d=this.queueData.queueBytesUploaded+m;var p=Math.round(m/j*100);var o="KB/s";var l=0;var f=(i/1024)/(k/1000);f=Math.floor(f*10)/10;if(this.queueData.averageSpeed>0){this.queueData.averageSpeed=Math.floor((this.queueData.averageSpeed+f)/2);}else{this.queueData.averageSpeed=Math.floor(f);}if(f>1000){l=(f*0.001);this.queueData.averageSpeed=Math.floor(l);o="MB/s";}if(c.inArray("onUploadProgress",h.overrideEvents)<0){if(h.progressData=="percentage"){c("#"+g.id).find(".data").html(" - "+p+"%");}else{if(h.progressData=="speed"&&k>500){c("#"+g.id).find(".data").html(" - "+this.queueData.averageSpeed+o);}}c("#"+g.id).find(".uploadify-progress-bar").css("width",p+"%");}if(h.onUploadProgress){h.onUploadProgress.call(this,g,m,j,d,this.queueData.uploadSize);}},onUploadStart:function(d){var e=this.settings;var f=new Date();this.timer=f.getTime();this.bytesLoaded=0;if(this.queueData.uploadQueue.length==0){this.queueData.uploadSize=d.size;}if(e.checkExisting){c.ajax({type:"POST",async:false,url:e.checkExisting,data:{filename:d.name},success:function(h){if(h==1){var g=confirm('A file with the name "'+d.name+'" already exists on the server.\nWould you like to replace the existing file?');if(!g){this.cancelUpload(d.id);c("#"+d.id).remove();if(this.queueData.uploadQueue.length>0&&this.queueData.queueLength>0){if(this.queueData.uploadQueue[0]=="*"){this.startUpload();}else{this.startUpload(this.queueData.uploadQueue.shift());}}}}}});}if(e.onUploadStart){e.onUploadStart.call(this,d);}},onUploadSuccess:function(f,h,d){var g=this.settings;var e=this.getStats();this.queueData.uploadsSuccessful=e.successful_uploads;this.queueData.queueBytesUploaded+=f.size;if(c.inArray("onUploadSuccess",g.overrideEvents)<0){c("#"+f.id).find(".data").html(" - Complete");}if(g.onUploadSuccess){g.onUploadSuccess.call(this,f,h,d);}}};c.fn.uploadify=function(d){if(b[d]){return b[d].apply(this,Array.prototype.slice.call(arguments,1));}else{if(typeof d==="object"||!d){return b.init.apply(this,arguments);}else{c.error("The method "+d+" does not exist in $.uploadify");}}};})($); \ No newline at end of file diff --git a/js/script2.js b/js/script2.js new file mode 100644 index 0000000..bc20a54 --- /dev/null +++ b/js/script2.js @@ -0,0 +1,483 @@ +$(document).ready(function(){ + + // Preloading Images + $.preloadImages = function() { + for(var i = 0; i').attr('src', arguments[i]); + } + } + $.preloadImages('images/logo_active.png'); + + // Crypt Mail + function UnCryptMailto( s ) + { + var n = 0; + var r = ''; + for( var i = 0; i < s.length; i++) + { + n = s.charCodeAt( i ); + if( n >= 8364) + n = 128; + r += String.fromCharCode( n - 1 ); + } + return r; + } + var key = 'nbjmnfAebsjpepnj/ef'; + var emailHtml = '' + UnCryptMailto(key) + ''; + $('.email').html(emailHtml); + $('#social a.feedback').attr('href', UnCryptMailto('nbjmup;') + UnCryptMailto(key)); + + // Check if Browser has Flash activated + var useFlash = false; + try + { + var fo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash'); + if (fo) + { + useFlash = true; + } + } + catch (e) + { + if (navigator.mimeTypes + && navigator.mimeTypes['application/x-shockwave-flash'] != undefined + && navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin) { + useFlash = true; + } + } + + // Check if IE + //if(navigator.appName.indexOf("Internet Explorer") != -1 || navigator.userAgent.toLowerCase().indexOf('msie') != -1) + //useFlash = false; + + // deactivate flash switch if browser don't support flash or is IE + if(useFlash == false) + $('#flashUploadSwitch').hide(); + + // Switch -> Flash Upload + var uploadHtml5Drag = true; + var uploadSwitchAllowed = true; + $('#flashUploadSwitch').click(function(e) { + if(uploadSwitchAllowed) + { + uploadSwitchAllowed = false; + if(uploadHtml5Drag) + { + $('#uploadForm').slideUp(400, function() { + $('#flashUploadSwitch').find('.flash').hide().next().show(); + $('#flashUpload').slideDown(400, function() { + uploadHtml5Drag = false; + uploadSwitchAllowed = true; + }); + }); + } else { + $('#flashUpload').slideUp(400, function() { + $('#flashUploadSwitch').find('.flash').show().next().hide(); + $('#uploadForm').slideDown(400, function() { + uploadHtml5Drag = true; + uploadSwitchAllowed = true; + }); + }); + } + } + e.preventDefault(); + }); + + // Set Content Width exactly same with Navi Width + var width = $('#navi ul').width() - $('#navi ul a').css('margin-left').split('px')[0] - $('#navi ul a').css('margin-right').split('px')[0]; + $('.infobox').width(width + 'px'); + + // Top Navigation + $('#navi a, a[rel^="#"]').click(function(e) { + var current = $('#navi').attr('currentValue'); + var rel = $(this).attr('rel'); + $('#navi').attr('currentValue', rel); + //if($(this).css('display') != 'block') + $(current).slideUp(400, function() { + $(rel).slideDown(400, function() { + resizeHtml(); + if(rel == '#imagemap4posis') + $('#dots').show(); + }); + resizeHtml(); + }); + if(current == '#imagemap4posis') + $('#dots').hide(); + e.preventDefault(); + }); + + // Logo + $('#logo').hover(function() { + $(this).attr('src', 'images/logo_active.png'); + }, function() { + $(this).attr('src', 'images/logo.png'); + }); + + resizeUploadContainer(); + + // set a coordinate point + $('#mapContainer').click(function(e) { + setCoordinates(e, 1); + e.preventDefault(); + }); + + // ... + $('#newUpload span, .textareaButton3').click(function(e) { + $('#dots').hide(); + $('#navi').attr('currentValue', '#upload'); + + // scroll window top + $('html, body').animate({ scrollTop: 0 }, 200); + + // change view + $('#imagemap4posis').slideUp(400, function() { + $('#upload').slideDown(400, function() { + resizeHtml(); + }); + }); + }); + + // ... + $('#urlMessage a').click(function(e) { + $('#dots').empty(); + $('#imagemap4posis #mapContainer').find('img').attr('src', '#'); + $('#navi').attr('currentValue', '#upload'); + $('#imagemap4posis').slideUp(400, function() { + $('#upload').slideDown(400, function() { + resizeHtml(); + }); + removeErrorMessage(); + }); + e.preventDefault(); + }); + + // ... + $('#uploadUndo, #uploadUndo2').click(function(e) { + $('#upload').slideUp(400, function() { + if($('#imagemap4posis #mapContainer').find('img').attr('src') == '#') { + $('#upload').slideDown(400); + $('#navi').attr('currentValue', '#upload'); + } else { + $('#navi').attr('currentValue', '#imagemap4posis'); + $('#imagemap4posis').slideDown(400, function() { + resizeHtml(); + $('#dots').show(); + }); + } + }); + }); + + // insert image path via url + $('#linkform').submit(function(e) { + enterImagelinkForm(); + e.preventDefault(); + }); + $('.imageurl_submit').click(function(e) { + enterImagelinkForm(); + e.preventDefault(); + }); + + // ... + $('#imageurl').focusout(function() { + var val = $('#imageurl').val().trim(); + if(val != '') + $(this).addClass('active'); + else + $(this).removeClass('active'); + }); + + // Imagemap Generator Buttons + $('.clearButton').click(function() { + $('#coordsText').val(''); + }); + + // ... + $('.clearCurrentButton').click(function() { + $('#coordsText').val(''); + $('#mapContainer').find('area:last').remove(); + hightlight(); + + // update textarea + + var textareaVal = $('#areaText').val(); + var tmpArr = textareaVal.split('')[0]; + textarea = textareaVal.replace('\n ', ''); + $('#areaText').val(textarea); + }); + + // ... + $('.clearAllButton').click(function() { + $('#coordsText').val(''); + $('#areaText').val(''); + $('#mapContainer').find('map').empty(); + $('#dots').empty(); + hightlight(); + textarea = ""; + }); + + var timeoutIdShow = 0 + var timeoutIdHide = 0 + + $('#info').mouseover(function() { + clearTimeout(timeoutIdHide); + timeoutIdShow = setTimeout(function() { + $('#infotext').stop(true, true).show(200); + $('#info').stop(true, true).animate({opacity: 1}, 200); + }, 200); + }); + $('#infotext').mouseover(function() { + clearTimeout(timeoutIdHide); + }); + $('#infotext').mouseleave(function() { + clearTimeout(timeoutIdShow); + timeoutIdHide = setTimeout(function() { + $('#infotext').stop(true, true).hide(200); + $('#info').stop(true, true).animate({opacity: 0.5}, 200); + }, 200); + }); + + // show donate popup + setTimeout(function() { + $('#feedbackPopup').slideDown(400); + }, 10000); + $('#social').hover(function() { + $('#feedbackPopup').slideDown(400); + }); + + // close donate popup + $('#feedbackPopup a').click('a', function(e) { + $('#feedbackPopup').slideUp(400); + e.preventDefault(); + }); + + // donate close-button fadeIn & fadeOut + var timeoutIdHideBtn = 0 + $('#feedbackPopup').mouseover(function() { + clearTimeout(timeoutIdHideBtn); + $('#feedbackPopup a').show(); + }); + $('#feedbackPopup').mouseout(function() { + timeoutIdHideBtn = setTimeout(function() { + $('#feedbackPopup a').hide(); + }, 100); + }); + $('#feedbackPopup a').mouseover(function() { + clearTimeout(timeoutIdHideBtn); + }); + $('#feedbackPopup a').mouseout(function() { + clearTimeout(timeoutIdHideBtn); + }); +}); + +$(window).resize(function() { + resizeUploadContainer(); +}); + +var counter = 1; +var coordsLength = 0; +var textarea = ''; +function setCoordinates(e, status) { + var x = e.pageX; + var y = e.pageY; + + $('#dots').append(''); + + var offset = $('#imagemap4posis img').offset(); + x -= parseInt(offset.left); + y -= parseInt(offset.top); + if(x < 0) { x = 0; } + if(y < 0) { y = 0; } + + var value = $('#coordsText').val(); + if(value == '') { + value = x+','+y; + coordsLength = value.length; + counter++; + } else { + value = value+','+x+','+y; + coordsLength = value.length; + } + if(status) + $('#coordsText').val(value); + + if($('#area'+counter).length != 0) + $('#area'+counter).remove(); + var countKomma = value.split(',').length; + var shape = (countKomma <= 4) ? 'rect' : 'poly'; + if(countKomma >= 4) { + var html = ''; + $('map').append(html); + } + + $('#mapContainer').append($('.imgmapMainImage')); + $('#mapContainer').children('div').remove(); + $('.imgmapMainImage').removeClass('maphilighted'); + //$('canvas').remove(); + + hightlight(); + + var area = '\n'; + //var textarea = $('#areaText').val(); + if(textarea == '') + { + // create textarea context + textarea = '\n' + + '\n' + + ' ' + area + + ' [...]\n' + + ''; + } + else + { + if(countKomma == 2) + { + // new context + textarea = textarea.replace('[...]', area + ' [...]'); + } + else + { + // edit / update context + var arr = value.split(','); + var oldCoor = ''; + for(var i = 0; i < arr.length -2; i++) + { + if(i >= 1) + oldCoor += ','; + oldCoor += arr[i]; + } + textarea = textarea.replace('shape="rect" coords="'+oldCoor, 'shape="'+shape+'" coords="'+oldCoor); + textarea = textarea.replace(oldCoor, value); + } + } + $('#areaText').val(textarea); +} + +function hightlight() { + $('.imgmapMainImage').maphilight({ + strokeColor: '4F95EA', + alwaysOn: true, + fillColor: '365E71', + fillOpacity: 0.2, + shadow: true, + shadowColor: '000000', + shadowRadius: 5, + shadowOpacity: 0.6, + shadowPosition: 'outside' + }); +} + +function resizeUploadContainer() { + if($('#upload').length) { + var val = (($(window).height() - $('#logo').outerHeight() - $('#upload').outerHeight()) / 2) * 0.6; + if(val < 100) { val = 100; } + $('.infobox').css('margin-top', val+'px'); + } + resizeHtml(); +} + +function loadImagemapGenerator(width, height) { + $('#mapContainer img'); + if(width == 0) + width = $('#mapContainer img').width(); + if(height == 0) + height = $('#mapContainer img').height(); + $('#newUpload').width(width-8); + $('#mapContainer').width(width); + widthTmp = (width < 350) ? 364 : width; + widthTmp2 = (width < 350) ? 350 : width; + $('div.form').width(widthTmp+4); + $('div.form input').width(widthTmp2-34); + width = (width < 363) ? 363 : width; + $('div.form textarea').css({'width': width-10}); + $('#mapContainer').height(height); + + resizeHtml(); +} + +function resizeHtml() { + var current, height; + $.each($('.infobox'), function() { + if($(this).css('display') != 'none') + current = $(this); + }); + + if(typeof(current) == 'undefined') { + height = $('#imagemap4posis').outerHeight() + $('#header').outerHeight(); + } else { + height = $(current).outerHeight(true) + $('#header').outerHeight(); + } + + if((typeof(current) == 'undefined' && height > $(window).height()) + || (typeof(current) != 'undefined' && height > $(window).height())) { + $('html').height(height); + $('footer').css('top', height - 30 +'px'); + } else if(typeof(current) != 'undefined') { + $('html').height('100%'); + $('footer').css('top', $(window).height() - 30 +'px'); + } +} + +function removeOldMapAndValues() { + if($('.imgmapMainImage').hasClass('maphilighted')) { + $('#mapContainer').append($('.imgmapMainImage')); + $('#mapContainer').children('div').remove(); + $('.imgmapMainImage').removeClass('maphilighted').css('opacity', 1); + $('#dots').empty(); + $('#coordsText').val(''); + $('#areaText').val(''); + $('#map').children('area').remove(); + } +} +function removeErrorMessage() { + $('#urlMessage').hide(); +} +function enterImagelinkForm() { + removeErrorMessage(); + var url = $('#imageurl').val().trim(); + var error = true; + + var urlBegin = url.substr(0, 4); + if(urlBegin == 'http' || urlBegin == 'www.') + error = false; + + var parts = url.split('.'); + var ext = parts[parts.length-1].toLowerCase(); + if(ext == 'gif' || ext == 'jpg' || ext == 'jpeg' || ext == 'png' || ext == 'tif' || ext == 'tiff' || ext == 'bmp') + error = false; + + if(error == false) { + $('#imagemap4posis #mapContainer').find('img').attr('src', url); + removeOldMapAndValues(); + jQuery.ajax({ + type: 'POST', + url: 'upload_ident.php', + data: {'file': url, 'width': 0, 'height': 0}, + //data: {'data': '[true, "'+url+'", 0, 0]'}, + dataType : 'json' + }); + $('#navi').attr('currentValue', '#imagemap4posis'); + $('#upload').slideUp(400, function() { + $('#uploadUndo, #uploadUndo2').show(); + $('#imagemap4posis').slideDown(400, function() { + resizeHtml(); + + // not correct loaded yet? + setTimeout(function() { + loadImagemapGenerator(); + }, 300); + + setTimeout(function() { + if($('#main').width() <= 20 && $('#main').height() <= 20) + $('#urlMessage').slideDown(600); + }, 1000); + + }); + loadImagemapGenerator(0, 0); + }); + } else { + $('a.imageurl_submit').parent().find('.error').remove(); + $('a.imageurl_submit').after(''); + $('a.imageurl_submit').parent().find('.error').slideDown(400).delay(5000).slideUp(400, function(){ $(this).remove(); }); + } +} \ No newline at end of file diff --git a/js/script_upload.js b/js/script_upload.js new file mode 100644 index 0000000..2d27c88 --- /dev/null +++ b/js/script_upload.js @@ -0,0 +1,130 @@ +$(function(){ + + var container = $('#uploadProcess'); + + $('#drop a').click(function(){ + // Simulate a click on the file input button + // to show the file browser dialog + $(this).parent().find('input').click(); + }); + + // Initialize the jQuery File Upload plugin + $('#uploadForm').fileupload({ + + // This element will accept file drag/drop uploading + dropZone: $('#drop'), + + // This function is called when a file is added to the queue; + // either via the browse button, or via drag/drop: + add: function (e, data) { + + var tpl = $(''); + + // Append the file name and file size + var maxLength = 40; + var name = data.files[0].name; + if(name.length >= maxLength - 3) + name = name.substring(0, maxLength) + '...'; + var text = name + ' (' + formatFileSize(data.files[0].size) + ') - '; + tpl.find('p').text(text).append('0%'); + + // Add the HTML to the Container element + data.context = tpl.appendTo(container); + + // wait just a small time before showing uploading process container + tpl.delay(500).slideDown(300); + + // Listen for clicks on the cancel icon + tpl.find('span').click(function(){ + + if(tpl.hasClass('working')){ + jqXHR.abort(); + } + + tpl.slideUp(function(){ + tpl.remove(); + }); + + }); + + // Automatically upload the file once it is added to the queue + var jqXHR = data.submit(); + + }, + + progress: function(e, data){ + + // progress bar + var progress = parseInt(data.loaded / data.total * 100, 10); + if(progress) + progress = 99; + data.context.find('div.progress > i').css('width', progress+'%'); + data.context.find('p > i').text(progress); + + + }, + + done: function(e, data) { + // finished upload -> show image-mapping + var json = $.parseJSON(data.result); + + if(json.status == 'error') + { + data.context.find('span').addClass('error'); + + $('#uploadForm').next('.error').remove(); + $('#uploadForm').after(''); + $('#uploadForm').next('.error').delay(500 + 400).slideDown(400).delay(5000).slideUp(400, function(){ $(this).remove(); }); + + // clean upload container + container.delay(5000).slideUp(400, function() { $(this).empty(); }); + } + else + { + data.context.removeClass('working'); + + $('#imagemap4posis #mapContainer').find('img').attr('src', json['file']); + //$('#imagemap4posis #mapContainer').find('img').attr('width', '').attr('height', ''); + removeErrorMessage(); + removeOldMapAndValues(); + $('#navi').attr('currentValue', '#imagemap4posis'); + + // hide upload area and show imagemap generator + $('#upload').slideUp(400, function() { + $('#uploadUndo, #uploadUndo2').show(); + $('#imagemap4posis').slideDown(400, function() { + resizeHtml(); + }); + loadImagemapGenerator(json['width'], json['height']); + + // clean upload container + container.empty(); + }); + } + }, + + fail:function(e, data){ + // Something has gone wrong! + data.context.addClass('error'); + } + + }); + + + // Prevent the default action when a file is dropped on the window + $(document).on('drop dragover', function (e) { + e.preventDefault(); + }); + + // Helper function that formats the file sizes + function formatFileSize(bytes) { + if (typeof bytes !== 'number') + return ''; + if (bytes >= 1000000000) + return (bytes / 1000000000).toFixed(0) + ' GB'; + if (bytes >= 1000000) + return (bytes / 1000000).toFixed(0) + ' MB'; + return (bytes / 1000).toFixed(0) + ' KB'; + } + +}); \ No newline at end of file diff --git a/log_url.txt b/log_url.txt new file mode 100644 index 0000000..e69de29 diff --git a/upload.php b/upload.php new file mode 100644 index 0000000..ad3fa3d --- /dev/null +++ b/upload.php @@ -0,0 +1,72 @@ + HTML5 Upload -> Save directly to Session + $v2 = false; + if(isset($_GET['v2'])) + $v2 = true; +if($v2) + session_start(); + + +if (isset($_FILES) && !empty($_FILES) && $_FILES['image']['error'] == 0) { + + $tempFile = $_FILES['image']['tmp_name']; + $fileParts = pathinfo($_FILES['image']['name']); + + $filename = date('ymd_His_').getImagename().'.'.strtolower($fileParts['extension']); + $targetFile = rtrim($uploadDir,'/') . '/' . $filename; + + if (in_array(strtolower($fileParts['extension']),$allowedTypes)) + { + if(move_uploaded_file($tempFile,$targetFile)) + { + $file = 'uploads/'.$filename; + $image_info = getimagesize($file); + echo json_encode(array( + 'status' => 'success', + 'file' => $file, + 'width' => $image_info[0], + 'height' => $image_info[1] + )); + + if($v2) + { + $_SESSION['image'] = array(str_replace('\/', '/', $file), $image_info[0], $image_info[1]); + } + + } else { + echo json_encode(array('status' => 'error', 'message' => 'Error: File upload failed, please retry.')); + } + } else { + echo json_encode(array('status' => 'error', 'message' => 'Error: Invalid file type (Allowed: jpg, jpeg, gif, png, bmp, tif, tiff)')); + } +} + +function getImagename() { + $val = ''; + for($i = 0; $i < 10; $i++) + $val .= getRandomSign(); + $val = substr(hash('md5', $val), 10, 12); + $val .= substr(hash('sha1', time()), 0, 2); + for($i = 0; $i < 2; $i++) + $val .= getRandomSign(); + return $val; +} + +function getRandomSign() { + $sign = array_merge(range ('a', 'z'), range ('A', 'Z'), range (0, 9)); + return $sign[mt_rand(0, 61)]; +} \ No newline at end of file diff --git a/upload_ident.php b/upload_ident.php new file mode 100644 index 0000000..6469c38 --- /dev/null +++ b/upload_ident.php @@ -0,0 +1,32 @@ + problems with 1&1 Server because of upload "\" char + * Used for Flash Upload and for URL link Input + */ + +$file = $_POST['file']; +$width = (int)$_POST['width']; +$height = (int)$_POST['height']; + +$_SESSION['image'] = array(str_replace('\/', '/', $file), $width, $height); + +// write down url of no size +if($width == 0 && $height == 0) +{ + $myfile = fopen("log_url.txt", "a"); + fwrite($myfile, $file . "\n"); + fclose($myfile); +} + +?> \ No newline at end of file diff --git a/uploadify.swf b/uploadify.swf new file mode 100644 index 0000000000000000000000000000000000000000..9223fd904f2d4d10f459db62c1ac85adc441bf59 GIT binary patch literal 12675 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 literal 0 HcmV?d00001 diff --git a/uploads/empty b/uploads/empty new file mode 100644 index 0000000..e69de29
+ +