From 10fb326667f35d480c4e9c6a3ded61cb60543694 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Xose=20P=C3=A9rez?= Date: Mon, 29 Aug 2016 00:50:23 +0200 Subject: [PATCH] Moved web interface to PureCSS --- README.md | 16 +- code/build_data | 8 + code/data/checkboxes-min.css.gz | Bin 0 -> 563 bytes code/data/checkboxes-min.js.gz | Bin 0 -> 2094 bytes code/data/fsversion | 2 +- code/data/grids-responsive-min.css.gz | Bin 0 -> 1366 bytes code/data/images/off.png | Bin 0 -> 2577 bytes code/data/images/on.png | Bin 0 -> 2496 bytes code/data/images/slider.png | Bin 0 -> 1228 bytes code/data/images/slider_center.png | Bin 0 -> 260 bytes code/data/images/slider_left.png | Bin 0 -> 324 bytes code/data/images/slider_right.png | Bin 0 -> 321 bytes code/data/index.html | 392 -------------------- code/data/index.html.gz | Bin 0 -> 3795 bytes code/data/jquery-1.12.3.min.js.gz | Bin 33692 -> 33692 bytes code/data/pure-min.css.gz | Bin 0 -> 3888 bytes code/data/side-menu-min.css.gz | Bin 0 -> 782 bytes code/data/spectre.min.css.gz | Bin 6514 -> 0 bytes code/html/checkboxes-min.css | 1 + code/html/checkboxes-min.js | 1 + code/html/checkboxes.css | 73 ++++ code/html/checkboxes.js | 350 ++++++++++++++++++ code/html/favicon.ico | Bin 0 -> 1150 bytes code/html/grids-responsive-min.css | 1 + code/html/images/off.png | Bin 0 -> 2577 bytes code/html/images/on.png | Bin 0 -> 2496 bytes code/html/images/slider.png | Bin 0 -> 1228 bytes code/html/images/slider_center.png | Bin 0 -> 260 bytes code/html/images/slider_left.png | Bin 0 -> 324 bytes code/html/images/slider_right.png | Bin 0 -> 321 bytes code/html/index.html | 495 ++++++++++++++++++++++++++ code/html/jquery-1.12.3.min.js | 5 + code/html/pure-min.css | 1 + code/html/side-menu-min.css | 1 + code/html/side-menu.css | 248 +++++++++++++ code/src/defaults.h | 2 +- code/src/webserver.ino | 49 ++- 37 files changed, 1218 insertions(+), 427 deletions(-) create mode 100755 code/build_data create mode 100644 code/data/checkboxes-min.css.gz create mode 100644 code/data/checkboxes-min.js.gz create mode 100644 code/data/grids-responsive-min.css.gz create mode 100644 code/data/images/off.png create mode 100644 code/data/images/on.png create mode 100644 code/data/images/slider.png create mode 100644 code/data/images/slider_center.png create mode 100644 code/data/images/slider_left.png create mode 100644 code/data/images/slider_right.png delete mode 100644 code/data/index.html create mode 100644 code/data/index.html.gz create mode 100644 code/data/pure-min.css.gz create mode 100644 code/data/side-menu-min.css.gz delete mode 100644 code/data/spectre.min.css.gz create mode 100644 code/html/checkboxes-min.css create mode 100644 code/html/checkboxes-min.js create mode 100644 code/html/checkboxes.css create mode 100644 code/html/checkboxes.js create mode 100644 code/html/favicon.ico create mode 100644 code/html/grids-responsive-min.css create mode 100644 code/html/images/off.png create mode 100644 code/html/images/on.png create mode 100644 code/html/images/slider.png create mode 100644 code/html/images/slider_center.png create mode 100644 code/html/images/slider_left.png create mode 100644 code/html/images/slider_right.png create mode 100644 code/html/index.html create mode 100644 code/html/jquery-1.12.3.min.js create mode 100644 code/html/pure-min.css create mode 100644 code/html/side-menu-min.css create mode 100644 code/html/side-menu.css diff --git a/README.md b/README.md index 9245bbf1..f3631b19 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ You can read about this board and firmware in [my blog][2]. * Support for **automatic over-the-air updates** through the [NoFUSS Library][6] * Support for **current monitoring** through then [EmonLiteESP Library][7] * Support for **DHT22** sensors - +* Command line configuration ## Flashing @@ -46,27 +46,27 @@ The project is ready to be build using [PlatformIO][3]. Please refer to their web page for instructions on how to install the builder. Once installed: ```bash -> platformio run --target upload -e wire -> platformio run --target uploadfs -e wire +> platformio run --target upload -e node-debug +> platformio run --target uploadfs -e node-debug ``` Once you have flashed it you can flash it again over-the-air using the ```ota``` environment: ```bash -> platformio run --target upload -e ota -> platformio run --target uploadfs -e ota +> platformio run --target upload -e node-debug-ota +> platformio run --target uploadfs -e node-debug-ota ``` When using OTA environment it defaults to the IP address of the device in SoftAP mode. If you want to flash it when connected to your home network best way is to supply the IP of the device: ```bash -> platformio run --target upload -e ota --upload-port 192.168.1.151 -> platformio run --target uploadfs -e ota --upload-port 192.168.1.151 +> platformio run --target upload -e node-debug-ota --upload-port 192.168.1.151 +> platformio run --target uploadfs -e node-debug-ota --upload-port 192.168.1.151 ``` You can also use the automatic OTA update feature. Check the [NoFUSS library][6] for more info. -Library dependencies are automatically managed via PlatformIO Library Manager. +Library dependencies are automatically managed via PlatformIO Library Manager or included via submodules and linked from the "lib" folder. ## Usage diff --git a/code/build_data b/code/build_data new file mode 100755 index 00000000..4f49d890 --- /dev/null +++ b/code/build_data @@ -0,0 +1,8 @@ +#!/bin/bash +rm -rf data/*.gz +cp html/*min.css data/ +cp html/*min.js data/ +cp html/index.html data/ +gzip data/*.js +gzip data/*.css +gzip data/*.html diff --git a/code/data/checkboxes-min.css.gz b/code/data/checkboxes-min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..5ffa7577c9635515a7361754fa0d6a20f35bb479 GIT binary patch literal 563 zcmV-30?hp%iwFp`XTw(j17m1qV{2k>cx7`fZE0>UV{>x=jZ;x;+b|IRE2d+RfSq{> zS&PITM)uH$v5x(LAzLT=h$0C|j+2`F_sMcolGYBz*ql$N`@XyHZh?Pltzc6_x!q{x z87i<{)FC+Jz3tH11%ftv?WHP z@?fdngB4P@q(;s`ofc!b2`bb0?lmzhoR*CT>a`*3kW_;3WR(X?pbTjVlcr{~C&Nng z$M1oZ9!!!?AV^k#OfSzKnc@;Uj?PGSB!$%F_Esh1>~7+9ZH*o>7q|gYy0y$u5kfMD z&p^KRATmT}FR0NG&)dOqpXbBBU^|pYa`y;w4<1XF{DubZ(jOL?OkcgJ3u0vsEDG8p z_cdXS*VHi1QB~Qwn;+67y;WBeFanN*(ucYf&}^rlv-jR@?RWB>{|fLYI#x*F-Ketb z3uzbYQ$)YK{i}C8sjk#ANcBkwK?_!HE2|sDNn_;UMXQBT)jUx;vtWRE>fsQC zs2LB9$df!-nnPl%f(>JyF22o&vCH4~Z<0k4gjU@-I$nO54j1Cg`l0BbDdIv5%xyms zf#(M*SgzOU`R(h7flOi*cDBz#<2TIiB(>{OhVZ_Ykp+5b(lBrNL={dV2m7y&eXGM& zzgD9de|!Ayyd`=5`2{VS*Ca!N+Z1BhL`O%UH_$Kt6!uM|GG2{Pr~i||>QQe6001>Q B6tMsR literal 0 HcmV?d00001 diff --git a/code/data/checkboxes-min.js.gz b/code/data/checkboxes-min.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..250e37e2ff529467713e85d844f93cb6fb3c8707 GIT binary patch literal 2094 zcmV+}2+{W+iwFp`XTw(j17m1qV{2k>cx7`fZE0>UYI6X!8EtRdHu|qPLf}y|qu9L- z2Pk2TL$ci+(5$N~A2g-G=+p%6#76A2MiFibU~T zpzvi+ixI;dD=f%j8Oe+%>`IhbM#y>eSmaNV72`2dM9@87QW^6@+}J&qYsx$wD|B8 zEhph+#6GbE7`(n-q9^wFk*gC3`HmGdMDsZMdd~_8qQm(x_EvHhj(R{W;v!|A-mOrO zyfP|2}llfR^NJ+98cJi&W(iJT@una@Yh?6DubHos& zN)=gwC8k$u!)3%Wwk79?hgd?^uuqDK6oCaSO4*8*nUX+swaN=5MqG?!NQqpCCDz37 zKXKSZDOD7ipZeN0lSn}~P|MUx2n>)UjsD@FcXtMck51HAVrCd@7 zaaIw?^Y|z{pN!hjjrX6iklh(l-7o@)G(R^*OvzRL0n%N zV$dd{yB%ci`yBadwMsky3GpP}OjpcK+b)3O5`dv625`uw#A*!`Kny(00)}ArkjF>`Hg}lM{7bMMv4Fa3ElMWZhMh z(ssPId!uk(WmODY7@*TN`}OseM>)8KLk5_E2enPbnn9_Q&^hE{x~vdEp`G{e8Z764c!w zuJ{V|sYqNU!`fGpAT>Ew?V`tq@Uoh%I&&U)%JB3?!oDL3q>#Lsna`QdSow7a@hH67 zyjUFk#_mR5cukO|yp#ujWK`H&lWC?)#upC5E{3)&zCg1J8FrLA^m_L@k@h+Fi(ES% zpB<%J*sMU>t)S3)js&>=i~Q_N@FIs*pq^s^7B?jNHmvg$gv5iGXG4&%CGX8^-9>S$ zb@e;2u7Q4`otCdgwcl?IFS~EmKT#um(3G&*Ez_E&6PALlV5!>-ElPuQ4S;knXjd-1 z*BUyLF@lz9hAMK`-|8sDXEW$z9fE>wp*n|Y7#Z}#+>d=c^@@iIzJ;B+E+BTOomLjq zB#vKB4RTddtf!><>FWY(=)EEv6xv5)%8p%hDz3wz6EXM7aTGLtt8M~kyomiVZDF9$ zKePOiX1Y)6ohN%n3WHMRRx=Lug|VR%J#;_sdZ_R@O7q102x0quG{bnSCz1~MNa;zT zzXHro;Fh}z6V|W*7M6ok6?HB4WVx*XNbv58A33~Jn2Z&7se4L*2aIgS=;y5bavM)r z*u6&ix2&Ehw=Wz+>qld~v+nqph<2LP8Q73C1BH`5z+{H~y>>i4@4f_F{~hKXzaW3J zH%^<~q!#x1jp>3rfj3viwhJ6>1Xaa%N7vx|^b!BeFzt%6U9Lyi^mB9fh*!@(_6K@y z?~TB%_ny@d2KVt)9*=uQUU*`Q{NuagSvxz&<9n($5q*@XXX;<5@TRgAAn!N2)blKb zBy)!E*|c%AT>;H<((j3%cm00&zuWAn2z!*#5XPkYbVXil_mAI9r`Wxi$HBWF0_?vm zz}ffT2iScGiqEFF^U9--yhMou{^KSW%)GYPs0Y}8Ht~=eUIBJr6Fi)^6~JQD?;|}Z zt5txVyS|4}8PUMoi+c}N1+}>Ci$D*m0S4Ghq4-h8 zi+E7aT3fr&#ZJRMKwJ-yC+CraTD4XF?!i8E5r)l8+{Nj1eSNuxt2N%>92YplDNb;S zcjk$cli4+C22_+Wu~wV8(65LYYR>UAj2BC|cvn|{l-iGkaLCSZo;2^DbqfjSY20RI z`#M@y2CR4np0|w|%zz-4s{FWD+V;E{Y|l#YCcA)8oJ02&>}dp>G&YvFyX&F$tmEv#KNwVhgkZX> zkQX!myr*US;+NR$sGe#eCyJ@Y7_OumVX%xm_;C%@;8O+Up`55556_lPoB6Fn13TcH Y^o5psID}OM&13r2??2N@qyriN0DTD;(EtDd literal 0 HcmV?d00001 diff --git a/code/data/fsversion b/code/data/fsversion index b0bb8785..c81aa44a 100644 --- a/code/data/fsversion +++ b/code/data/fsversion @@ -1 +1 @@ -0.9.5 +0.9.7 diff --git a/code/data/grids-responsive-min.css.gz b/code/data/grids-responsive-min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..a189cb953977192991af632069f61fd08faf8a4e GIT binary patch literal 1366 zcmV-c1*!TUiwFp`XTw(j17~t+WOFTYWpi+EZgXjNWi4%KZZ2bUa{$ej%W~s35JmU- z3U6FBnF>{EkRU*5Gryu(EJqbRT(X>*#N~gF_>#JBqs+$6vpXWdxr7_t=f|Pl?lupv zPv^EhK5UNLhi`}7vG}>$UjAB@e&O50@9&G3w{u&(6|aYa{@{S*c z-0S6Hft5rrk&0SAt>x1w-yG#)fkEQ+^POBRIRF!GxE@#~KhwdXNUnfAa19)QBX9#u zOZ)*75=JD+bv&I9oBjId>Ac0?{%Oyb-P2}YZ1%h7;m*U(Wx9z!GxOuyrKA;xfhig|YsIJ4~`uhz_A09tGsXTYz92e#F-)-|1m#&1( z5sPfxOK#zBJFigH4eYG39H*W2qUM=9)}j5l+AZ%3n?(cvi@(3tEfc0tWVIxnxW1YUlt2FK|OL^oSV@T*L4ci^qnO_0V+}%#Cx}RE^IyLAmOIA=M z|2iG3@8bpN<*|3HkKL)pFmCtvpp_0vtl&J9x=+-)>Y}XdJXE_+lzVwQ!1|ucrw%Zx zwl!_!_oCMK0!JIG!5S_`ow^vT6a!RzNK`z|N>+>Eo-^o@Csua>YCa@tzPcSx>dCj&EBS3Q^&BXR;r8UsMatn=2c7gdb4UJMq7?*P5sZR zT8UX{Q?03uT2*Tptn;d+XKI#e>9J~7t<*@(Qmtt!SXFDre?UAkRjaPJYVDudyE{O1 z5=)LwBJYq_EG2T)>i2rNSYRd5OXTyRe_G3@QNB6K#R7vw@n`N=OAf$<8-yP8pXuOG zBv-&5xCRcu5x4=Csx>5rA21?eM#7MUDG6f|<|GVCnABlXr_K_SI!yY7RBNmSn`$L0 z&#qdjlDDarzDhZ&HQecW)f%hXs#>~{*i>u099GrR-7H77bYHQm*3kOqRV&eavQ%rj z>Q>cCG<%zBO&!CkTB$CYqgunTm{%>`>&>c_7;QPKHT6HMY9(f+O|_;rYE`Xau+FQN zo~c=?rN^pSwNfKBOSPt{U{$Rd{{ivHRIRw=s`YEn-rWJBlUQI43 ztJYZ6R@Kst#HL!~<*=%j?q)fvrTdCiwT9L=uUd)blcieIRkx~EqS@P2Yw8$Q)k<~I z9Mu|z#k^|iUT;>d#AwS=t*QT6RVy(oZK^f3QLAbVgLPiD^i0iCEj?Dvs+Ah4S*kTn Y1*>Y!_z#GOR;}Ou2SC(ppRXkV0OJ3-1^@s6 literal 0 HcmV?d00001 diff --git a/code/data/images/off.png b/code/data/images/off.png new file mode 100644 index 0000000000000000000000000000000000000000..f414051ecc72db50e3267adb99ad288d22a293ad GIT binary patch literal 2577 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 literal 0 HcmV?d00001 diff --git a/code/data/images/on.png b/code/data/images/on.png new file mode 100644 index 0000000000000000000000000000000000000000..94425e5841c89fb0b226d987b1a6d9199c372b3f GIT binary patch literal 2496 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 KMNUMnLSTYI@WUwp literal 0 HcmV?d00001 diff --git a/code/data/images/slider.png b/code/data/images/slider.png new file mode 100644 index 0000000000000000000000000000000000000000..80e05ff2dde736f92872019c10e6e69e4caf7179 GIT binary patch literal 1228 zcmV;-1T*`IP)+dQ(pVRYZe}Df92L}hw z(vL4YJ3DJzTU)feyi6o{Uit#+o8Z<<`XKbQep=Y;XN#NZ_fBsC{ki)?*Vor{c6RnH zb-tLVuXnq-6*2FZ%c6hiwcmG+9`Xw@hzw%7KDl>oB?6pVrE7-lDj`mNA$% zHa2K!X=&}` zQCo-(yXJ>%{)!*6?*U42UHdJeVXIAF(dqE(>fpTXl3gV_xwxjuEp09X5H17gps850 z;7J~8A%L!BRVIz(%?n`2VVL^dat1`@>I9ycw}MoIiQw!n-5IFID?(lo%JM5i8hoYPxPIQBFYBvs;dhdEUE$lHbtC}_``U&!bOl_1075lx|^f8 zQ2|%C=XSPzQQ8cQE>iatrI#il%N5ZBxI^csTaKB$T`O|fdx552$D|E7n>`fK?Ue9) zgM4s0w^jmF+Xqe$JgyN3h*^bVAUdmw1`CnJx#Q_6cguuwG$6RUl`6oS0xkXY-!S23 zfS?>|R63XDwVh&yfYLeA`UGYgM!TgK}I_0jsq-)@+}m5XY3{u!9NL@Fc~zIaXgt$F&3VG<_M*89xjmPh*A{IBh68 zC9t3NIjc1(|w#y1z zd%VchBEiPFH^{x4uQ@m7}Ahe9Ql! qH~!5>yzzh48~^LQy}hgd0t^6MQ^T06mz3!M0000i zsd#E)vfFS1BxGB=t^*+idJkfZ#1b$8KILp>BJa=w*2e?R>ZFMr>$0Q)(&OAKtjW_Y z7&ietEH)YwgPhX%g*-G9LB+&@qsN5Yd7g*sloBy>vw@sHXlja-Qu+#5mTzAH>$*|n z$S~AehuXgH)*(iI$Dy&P3-3J7LA$QYwvnOteUGo2rm55Z0t^6tOGp^$Su~UY0000< KMNUMnLSTa9gK3li literal 0 HcmV?d00001 diff --git a/code/data/images/slider_left.png b/code/data/images/slider_left.png new file mode 100644 index 0000000000000000000000000000000000000000..51576ce351944e96229b04bfa03f8f03e907e9ff GIT binary patch literal 324 zcmV-K0lWT*P)$+ma!JqEi%8`jz}$IH&>I5C#~pELZ9uqT21yUVFdi6z z&R`?^zg{I1Q|2Gz=NToC-jt`3*w$$wy(z^UGHz=CkE1&^mMKGpL-c=+J}C!hjHZPJ z8+EZ@!}t+^z~1!UeL9;Zfa--y(=_CqGoQdXR8@7W>zcamtuh^;EX(k7=kRl10R{jI W5i+_owTc4(0000b$oD9c+P3`xaMbu}n#PfH zPUd;WFbpRpcYHZtP!t8Ks(M#q&jP{idP7;3n&ZO~kq0owK=E55*4Hu*jd5&$_PNuK)u8EfzVU TqbKrS00000NkvXXu0mjf#?yy8 literal 0 HcmV?d00001 diff --git a/code/data/index.html b/code/data/index.html deleted file mode 100644 index 4591959a..00000000 --- a/code/data/index.html +++ /dev/null @@ -1,392 +0,0 @@ - - - - ESPurna - - - - - - - - -
- - - -
- -
-
-
-
-
- -
-
- -
-
-
-
- -
-
- -
-
-
-
- -
-
- -
-
-
-
- -
-
- -
-
-
-
- -
-
- -
-
-
-
- -
-
- -
-
-
-
- -
-
- -
-
-
-
- -
-
- -
-
-
-
- -
-
- -
-
-
-
- -
-
- - OFF -
-
-
-
-
-
- -
- -
- -
- You can configure up to 3 different WiFi networks. The device will try to connect to any of them starting with the first one. -
- -
- -
-
Network 1
-
- - -
-
- - -
-
-
-
Network 2
-
- - -
-
- - -
-
-
-
Network 3
-
- - -
-
- - -
-
- -
- -
- -
- Configure an MQTT broker in your network and you will be able to change the switch status via an MQTT message. Just send a 0 or a 1 as a payload to the provided topic below. - The switch will also report its current open/close status to the same topic and its IP address to the topic you define plus "/ip". Leave the server field empty to disable MQTT. -
- -
-
-
- - -
-
-
-
- - -
-
-
-
-
-
- - -
-
-
-
- - -
-
-
-
-
-
- - -
-
-
- -
- -
- If your device supports RF switching you can configure here the channel and device ID. -
- -
-
-
- - -
-
-
-
- - -
-
-
- -
- -
- If your device supports power measurement, here you can configure line potential and current ratio. -
- -
-
-
- - -
-
-
-
- - -
-
-
- -
-
- -
-
- -
-
- -
- - diff --git a/code/data/index.html.gz b/code/data/index.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..0a8965141067fe375a3a1f93f5c002221ec1891c GIT binary patch literal 3795 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 y^rQbKlKb8`TVRbg+VFbw^EzaqNoq)loN zw6~R#FZWjhF>Ta9PzY-`)c<}-AdtbXJ55^K#D2D)pPgK?_r8!qs%&#O9PUxmDZsos zVFhg?>z2PkU(p-Ba;DE&634&D8Tjd}Guml+-w66HJH6dhPOsXmmXgszi^GU zq6S2BS!YxT6i2%j0c`;rFM=!i@tsBcje&f8|LD?Z-#2nJQ6Q)`C6k6S#_JOnQ0gr9 zh7m37EppZN?k;(Wn;RL~vEP@r0VlJ=Jt}0aq1J|5b>ejvBTJ_bYkuyaA~Wx4Y@-ae zIG0+>DszDiF5s~tN%RWUJvswrpeA54c6Yzu6Ad?wso$`JUlulQ-o-6D@{eXa2-b0&EN6>b)pZ!f_&XvG*lT@S2)IP4K?VPYp5{eZ=3-epD{ M7wDT4x?BhV0Iu3~O8@`> literal 0 HcmV?d00001 diff --git a/code/data/spectre.min.css.gz b/code/data/spectre.min.css.gz deleted file mode 100644 index 64651771430bc3896c6f4c35aa99b1a8dd162280..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6514 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 YtODch!k))vxZn8y02GAb7L05F0Q|JQCjbBd diff --git a/code/html/checkboxes-min.css b/code/html/checkboxes-min.css new file mode 100644 index 00000000..311f2e2f --- /dev/null +++ b/code/html/checkboxes-min.css @@ -0,0 +1 @@ +.iPhoneCheckContainer{-webkit-transform:translate3d(0,0,0);position:relative;height:27px;cursor:pointer;overflow:hidden}.iPhoneCheckContainer input{position:absolute;top:5px;left:30px;filter:alpha(Opacity=0);opacity:0}.iPhoneCheckContainer label,.iPhoneCheckHandle{display:block;height:27px;cursor:pointer;position:absolute;top:0}.iPhoneCheckContainer label{white-space:nowrap;font-size:17px;line-height:17px;font-weight:700;font-family:"Helvetica Neue",Arial,Helvetica,sans-serif;width:auto;padding-top:5px;overflow:hidden}.iPhoneCheckContainer,.iPhoneCheckContainer label{user-select:none;-moz-user-select:none;-khtml-user-select:none}.iPhoneCheckDisabled{filter:alpha(Opacity=50);opacity:.5}label.iPhoneCheckLabelOn{color:#fff;background:url(images/on.png) no-repeat;text-shadow:0 0 2px rgba(0,0,0,.6);left:0;padding-top:5px}label.iPhoneCheckLabelOn span{padding-left:8px}label.iPhoneCheckLabelOff{color:#8b8b8b;background:url(images/off.png) right 0 no-repeat;text-shadow:0 0 2px rgba(255,255,255,.6);text-align:right;right:0}label.iPhoneCheckLabelOff span{padding-right:8px}.iPhoneCheckHandle{left:0;width:0;background:url(images/slider_left.png) no-repeat;padding-left:3px}.iPhoneCheckHandleRight{height:100%;width:100%;padding-right:3px;background:url(images/slider_right.png) right 0 no-repeat}.iPhoneCheckHandleCenter{height:100%;width:100%;background:url(images/slider_center.png)} \ No newline at end of file diff --git a/code/html/checkboxes-min.js b/code/html/checkboxes-min.js new file mode 100644 index 00000000..013487c3 --- /dev/null +++ b/code/html/checkboxes-min.js @@ -0,0 +1 @@ +(function(){var e,i,t,n=[].slice;null==$.browser&&(t=navigator.userAgent||"",jQuery.uaMatch=function(e){var i;return e=e.toLowerCase(),i=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(e)||[],{browser:i[1]||"",version:i[2]||"0"}},i=jQuery.uaMatch(t),jQuery.browser={},i.browser&&(jQuery.browser[i.browser]=!0,jQuery.browser.version=i.version),jQuery.browser.webkit&&(jQuery.browser.safari=!0)),e=function(){function e(i,t){var n,s,a;this.elem=$(i),s=$.extend({},e.defaults,t);for(n in s)a=s[n],this[n]=a;this.elem.data(this.dataName,this),this.wrapCheckboxWithDivs(),this.attachEvents(),this.disableTextSelection(),this.calculateDimensions()}return e.prototype.calculateDimensions=function(){return this.resizeHandle&&this.optionallyResize("handle"),this.resizeContainer&&this.optionallyResize("container"),this.initialPosition()},e.prototype.isDisabled=function(){return this.elem.is(":disabled")},e.prototype.wrapCheckboxWithDivs=function(){return this.elem.wrap("
"),this.container=this.elem.parent(),this.offLabel=$("").appendTo(this.container),this.offSpan=this.offLabel.children("span"),this.onLabel=$("").appendTo(this.container),this.onSpan=this.onLabel.children("span"),this.handle=$("
\n
\n
\n
\n
").appendTo(this.container)},e.prototype.disableTextSelection=function(){return $.browser.msie?$([this.handle,this.offLabel,this.onLabel,this.container]).attr("unselectable","on"):void 0},e.prototype._getDimension=function(e,i){return null!=$.fn.actual?e.actual(i):e[i]()},e.prototype.optionallyResize=function(e){var i,t,n,s,a;return a=this.onLabel.find("span"),s=this._getDimension(a,"width"),s+=parseInt(a.css("padding-left"),10),n=this.offLabel.find("span"),t=this._getDimension(n,"width"),t+=parseInt(n.css("padding-right"),10),"container"===e?(i=s>t?s:t,i+=this._getDimension(this.handle,"width")+this.handleMargin,this.container.css({width:i})):(i=s>t?s:t,this.handle.css({width:i}))},e.prototype.onMouseDown=function(i){var t;return i.preventDefault(),this.isDisabled()?void 0:(t=i.pageX||i.originalEvent.changedTouches[0].pageX,e.currentlyClicking=this.handle,e.dragStartPosition=t,e.handleLeftOffset=parseInt(this.handle.css("left"),10)||0)},e.prototype.onDragMove=function(i,t){var n,s;if(e.currentlyClicking===this.handle)return s=(t+e.handleLeftOffset-e.dragStartPosition)/this.rightSide,0>s&&(s=0),s>1&&(s=1),n=s*this.rightSide,this.handle.css({left:n}),this.onLabel.css({width:n+this.handleRadius}),this.offSpan.css({marginRight:-n}),this.onSpan.css({marginLeft:-(1-s)*this.rightSide})},e.prototype.onDragEnd=function(i,t){var n;if(e.currentlyClicking===this.handle&&!this.isDisabled())return e.dragging?(n=(t-e.dragStartPosition)/this.rightSide,this.elem.prop("checked",n>=.5).change()):this.elem.prop("checked",!this.elem.prop("checked")).change(),e.currentlyClicking=null,e.dragging=null,"function"==typeof this.onChange&&this.onChange(this.elem,this.elem.prop("checked")),this.didChange()},e.prototype.refresh=function(){return this.didChange()},e.prototype.didChange=function(){var e;return this.isDisabled()?(this.container.addClass(this.disabledClass),!1):(this.container.removeClass(this.disabledClass),e=this.elem.prop("checked")?this.rightSide:0,this.handle.animate({left:e},this.duration),this.onLabel.animate({width:e+this.handleRadius},this.duration),this.offSpan.animate({marginRight:-e},this.duration),this.onSpan.animate({marginLeft:e-this.rightSide},this.duration))},e.prototype.attachEvents=function(){var e,i,t;return t=this,e=function(e){return t.onGlobalMove.apply(t,arguments)},i=function(n){return t.onGlobalUp.apply(t,arguments),$(document).unbind("mousemove touchmove",e),$(document).unbind("mouseup touchend",i)},this.elem.change(function(){return t.refresh()}),this.container.bind("mousedown touchstart",function(n){return t.onMouseDown.apply(t,arguments),$(document).bind("mousemove touchmove",e),$(document).bind("mouseup touchend",i)})},e.prototype.initialPosition=function(){var e,i;return e=this._getDimension(this.container,"width"),this.offLabel.css({width:e-this.containerRadius}),i=this.containerRadius+1,$.browser.msie&&$.browser.version<7&&(i-=3),this.rightSide=e-this._getDimension(this.handle,"width")-i,this.elem.is(":checked")?(this.handle.css({left:this.rightSide}),this.onLabel.css({width:this.rightSide+this.handleRadius}),this.offSpan.css({marginRight:-this.rightSide})):(this.onLabel.css({width:0}),this.onSpan.css({marginLeft:-this.rightSide})),this.isDisabled()?this.container.addClass(this.disabledClass):void 0},e.prototype.onGlobalMove=function(i){var t;if(!this.isDisabled()&&e.currentlyClicking)return i.preventDefault(),t=i.pageX||i.originalEvent.changedTouches[0].pageX,!e.dragging&&Math.abs(e.dragStartPosition-t)>this.dragThreshold&&(e.dragging=!0),this.onDragMove(i,t)},e.prototype.onGlobalUp=function(i){var t;if(e.currentlyClicking)return i.preventDefault(),t=i.pageX||i.originalEvent.changedTouches[0].pageX,this.onDragEnd(i,t),!1},e.defaults={duration:200,checkedLabel:"ON",uncheckedLabel:"OFF",resizeHandle:!0,resizeContainer:!0,disabledClass:"iPhoneCheckDisabled",containerClass:"iPhoneCheckContainer",labelOnClass:"iPhoneCheckLabelOn",labelOffClass:"iPhoneCheckLabelOff",handleClass:"iPhoneCheckHandle",handleCenterClass:"iPhoneCheckHandleCenter",handleRightClass:"iPhoneCheckHandleRight",dragThreshold:5,handleMargin:15,handleRadius:4,containerRadius:5,dataName:"iphoneStyle",onChange:function(){}},e}(),$.iphoneStyle=this.iOSCheckbox=e,$.fn.iphoneStyle=function(){var i,t,s,a,h,o,r,l,d,c,u,p;for(i=1<=arguments.length?n.call(arguments,0):[],s=null!=(d=null!=(c=i[0])?c.dataName:void 0)?d:e.defaults.dataName,u=this.filter(":checkbox"),r=0,l=u.length;l>r;r++)t=u[r],a=$(t).data(s),null!=a?(h=i[0],o=2<=i.length?n.call(i,1):[],null!=(p=a[h])&&p.apply(a,o)):new e(t,i[0]);return this},$.fn.iOSCheckbox=function(e){var i;return null==e&&(e={}),i=$.extend({},e,{resizeHandle:!1,disabledClass:"iOSCheckDisabled",containerClass:"iOSCheckContainer",labelOnClass:"iOSCheckLabelOn",labelOffClass:"iOSCheckLabelOff",handleClass:"iOSCheckHandle",handleCenterClass:"iOSCheckHandleCenter",handleRightClass:"iOSCheckHandleRight",dataName:"iOSCheckbox"}),this.iphoneStyle(i)}}).call(this); \ No newline at end of file diff --git a/code/html/checkboxes.css b/code/html/checkboxes.css new file mode 100644 index 00000000..ffe9b087 --- /dev/null +++ b/code/html/checkboxes.css @@ -0,0 +1,73 @@ +.iPhoneCheckContainer { + -webkit-transform:translate3d(0,0,0); + position: relative; + height: 27px; + cursor: pointer; + overflow: hidden; } + .iPhoneCheckContainer input { + position: absolute; + top: 5px; + left: 30px; + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0); + opacity: 0; } + .iPhoneCheckContainer label { + white-space: nowrap; + font-size: 17px; + line-height: 17px; + font-weight: bold; + font-family: "Helvetica Neue", Arial, Helvetica, sans-serif; + cursor: pointer; + display: block; + height: 27px; + position: absolute; + width: auto; + top: 0; + padding-top: 5px; + overflow: hidden; } + .iPhoneCheckContainer, .iPhoneCheckContainer label { + user-select: none; + -moz-user-select: none; + -khtml-user-select: none; } + +.iPhoneCheckDisabled { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); + opacity: 0.5; } + +label.iPhoneCheckLabelOn { + color: white; + background: url('images/on.png') no-repeat; + text-shadow: 0px 0px 2px rgba(0, 0, 0, 0.6); + left: 0; + padding-top: 5px; } + label.iPhoneCheckLabelOn span { + padding-left: 8px; } +label.iPhoneCheckLabelOff { + color: #8b8b8b; + background: url('images/off.png') no-repeat right 0; + text-shadow: 0px 0px 2px rgba(255, 255, 255, 0.6); + text-align: right; + right: 0; } + label.iPhoneCheckLabelOff span { + padding-right: 8px; } + +.iPhoneCheckHandle { + display: block; + height: 27px; + cursor: pointer; + position: absolute; + top: 0; + left: 0; + width: 0; + background: url('images/slider_left.png') no-repeat; + padding-left: 3px; } + +.iPhoneCheckHandleRight { + height: 100%; + width: 100%; + padding-right: 3px; + background: url('images/slider_right.png') no-repeat right 0; } + +.iPhoneCheckHandleCenter { + height: 100%; + width: 100%; + background: url('images/slider_center.png'); } diff --git a/code/html/checkboxes.js b/code/html/checkboxes.js new file mode 100644 index 00000000..67d04dae --- /dev/null +++ b/code/html/checkboxes.js @@ -0,0 +1,350 @@ +// Generated by CoffeeScript 1.6.2 +(function() { + var iOSCheckbox, matched, userAgent, + __slice = [].slice; + + if ($.browser == null) { + userAgent = navigator.userAgent || ""; + jQuery.uaMatch = function(ua) { + var match; + + ua = ua.toLowerCase(); + match = /(chrome)[ \/]([\w.]+)/.exec(ua) || /(webkit)[ \/]([\w.]+)/.exec(ua) || /(opera)(?:.*version)?[ \/]([\w.]+)/.exec(ua) || /(msie) ([\w.]+)/.exec(ua) || ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+))?/.exec(ua) || []; + return { + browser: match[1] || "", + version: match[2] || "0" + }; + }; + matched = jQuery.uaMatch(userAgent); + jQuery.browser = {}; + if (matched.browser) { + jQuery.browser[matched.browser] = true; + jQuery.browser.version = matched.version; + } + if (jQuery.browser.webkit) { + jQuery.browser.safari = true; + } + } + + iOSCheckbox = (function() { + function iOSCheckbox(elem, options) { + var key, opts, value; + + this.elem = $(elem); + opts = $.extend({}, iOSCheckbox.defaults, options); + for (key in opts) { + value = opts[key]; + this[key] = value; + } + this.elem.data(this.dataName, this); + this.wrapCheckboxWithDivs(); + this.attachEvents(); + this.disableTextSelection(); + this.calculateDimensions(); + } + + iOSCheckbox.prototype.calculateDimensions = function() { + if (this.resizeHandle) { + this.optionallyResize('handle'); + } + if (this.resizeContainer) { + this.optionallyResize('container'); + } + return this.initialPosition(); + }; + + iOSCheckbox.prototype.isDisabled = function() { + return this.elem.is(':disabled'); + }; + + iOSCheckbox.prototype.wrapCheckboxWithDivs = function() { + this.elem.wrap("
"); + this.container = this.elem.parent(); + this.offLabel = $("").appendTo(this.container); + this.offSpan = this.offLabel.children('span'); + this.onLabel = $("").appendTo(this.container); + this.onSpan = this.onLabel.children('span'); + return this.handle = $("
\n
\n
\n
\n
").appendTo(this.container); + }; + + iOSCheckbox.prototype.disableTextSelection = function() { + if ($.browser.msie) { + return $([this.handle, this.offLabel, this.onLabel, this.container]).attr("unselectable", "on"); + } + }; + + iOSCheckbox.prototype._getDimension = function(elem, dimension) { + if ($.fn.actual != null) { + return elem.actual(dimension); + } else { + return elem[dimension](); + } + }; + + iOSCheckbox.prototype.optionallyResize = function(mode) { + var newWidth, offLabelWidth, offSpan, onLabelWidth, onSpan; + + onSpan = this.onLabel.find('span'); + onLabelWidth = this._getDimension(onSpan, "width"); + onLabelWidth += parseInt(onSpan.css('padding-left'), 10); + offSpan = this.offLabel.find('span'); + offLabelWidth = this._getDimension(offSpan, "width"); + offLabelWidth += parseInt(offSpan.css('padding-right'), 10); + if (mode === "container") { + newWidth = onLabelWidth > offLabelWidth ? onLabelWidth : offLabelWidth; + newWidth += this._getDimension(this.handle, "width") + this.handleMargin; + return this.container.css({ + width: newWidth + }); + } else { + newWidth = onLabelWidth > offLabelWidth ? onLabelWidth : offLabelWidth; + return this.handle.css({ + width: newWidth + }); + } + }; + + iOSCheckbox.prototype.onMouseDown = function(event) { + var x; + + event.preventDefault(); + if (this.isDisabled()) { + return; + } + x = event.pageX || event.originalEvent.changedTouches[0].pageX; + iOSCheckbox.currentlyClicking = this.handle; + iOSCheckbox.dragStartPosition = x; + return iOSCheckbox.handleLeftOffset = parseInt(this.handle.css('left'), 10) || 0; + }; + + iOSCheckbox.prototype.onDragMove = function(event, x) { + var newWidth, p; + + if (iOSCheckbox.currentlyClicking !== this.handle) { + return; + } + p = (x + iOSCheckbox.handleLeftOffset - iOSCheckbox.dragStartPosition) / this.rightSide; + if (p < 0) { + p = 0; + } + if (p > 1) { + p = 1; + } + newWidth = p * this.rightSide; + this.handle.css({ + left: newWidth + }); + this.onLabel.css({ + width: newWidth + this.handleRadius + }); + this.offSpan.css({ + marginRight: -newWidth + }); + return this.onSpan.css({ + marginLeft: -(1 - p) * this.rightSide + }); + }; + + iOSCheckbox.prototype.onDragEnd = function(event, x) { + var p; + + if (iOSCheckbox.currentlyClicking !== this.handle) { + return; + } + if (this.isDisabled()) { + return; + } + if (iOSCheckbox.dragging) { + p = (x - iOSCheckbox.dragStartPosition) / this.rightSide; + this.elem.prop('checked', p >= 0.5).change(); + } else { + this.elem.prop('checked', !this.elem.prop('checked')).change(); + } + iOSCheckbox.currentlyClicking = null; + iOSCheckbox.dragging = null; + if (typeof this.onChange === "function") { + this.onChange(this.elem, this.elem.prop('checked')); + } + return this.didChange(); + }; + + iOSCheckbox.prototype.refresh = function() { + return this.didChange(); + }; + + iOSCheckbox.prototype.didChange = function() { + var new_left; + + if (this.isDisabled()) { + this.container.addClass(this.disabledClass); + return false; + } else { + this.container.removeClass(this.disabledClass); + } + new_left = this.elem.prop('checked') ? this.rightSide : 0; + this.handle.animate({ + left: new_left + }, this.duration); + this.onLabel.animate({ + width: new_left + this.handleRadius + }, this.duration); + this.offSpan.animate({ + marginRight: -new_left + }, this.duration); + return this.onSpan.animate({ + marginLeft: new_left - this.rightSide + }, this.duration); + }; + + iOSCheckbox.prototype.attachEvents = function() { + var localMouseMove, localMouseUp, self; + + self = this; + localMouseMove = function(event) { + return self.onGlobalMove.apply(self, arguments); + }; + localMouseUp = function(event) { + self.onGlobalUp.apply(self, arguments); + $(document).unbind('mousemove touchmove', localMouseMove); + return $(document).unbind('mouseup touchend', localMouseUp); + }; + this.elem.change(function() { + return self.refresh(); + }); + return this.container.bind('mousedown touchstart', function(event) { + self.onMouseDown.apply(self, arguments); + $(document).bind('mousemove touchmove', localMouseMove); + return $(document).bind('mouseup touchend', localMouseUp); + }); + }; + + iOSCheckbox.prototype.initialPosition = function() { + var containerWidth, offset; + + containerWidth = this._getDimension(this.container, "width"); + this.offLabel.css({ + width: containerWidth - this.containerRadius + }); + offset = this.containerRadius + 1; + if ($.browser.msie && $.browser.version < 7) { + offset -= 3; + } + this.rightSide = containerWidth - this._getDimension(this.handle, "width") - offset; + if (this.elem.is(':checked')) { + this.handle.css({ + left: this.rightSide + }); + this.onLabel.css({ + width: this.rightSide + this.handleRadius + }); + this.offSpan.css({ + marginRight: -this.rightSide + }); + } else { + this.onLabel.css({ + width: 0 + }); + this.onSpan.css({ + marginLeft: -this.rightSide + }); + } + if (this.isDisabled()) { + return this.container.addClass(this.disabledClass); + } + }; + + iOSCheckbox.prototype.onGlobalMove = function(event) { + var x; + + if (!(!this.isDisabled() && iOSCheckbox.currentlyClicking)) { + return; + } + event.preventDefault(); + x = event.pageX || event.originalEvent.changedTouches[0].pageX; + if (!iOSCheckbox.dragging && (Math.abs(iOSCheckbox.dragStartPosition - x) > this.dragThreshold)) { + iOSCheckbox.dragging = true; + } + return this.onDragMove(event, x); + }; + + iOSCheckbox.prototype.onGlobalUp = function(event) { + var x; + + if (!iOSCheckbox.currentlyClicking) { + return; + } + event.preventDefault(); + x = event.pageX || event.originalEvent.changedTouches[0].pageX; + this.onDragEnd(event, x); + return false; + }; + + iOSCheckbox.defaults = { + duration: 200, + checkedLabel: 'ON', + uncheckedLabel: 'OFF', + resizeHandle: true, + resizeContainer: true, + disabledClass: 'iPhoneCheckDisabled', + containerClass: 'iPhoneCheckContainer', + labelOnClass: 'iPhoneCheckLabelOn', + labelOffClass: 'iPhoneCheckLabelOff', + handleClass: 'iPhoneCheckHandle', + handleCenterClass: 'iPhoneCheckHandleCenter', + handleRightClass: 'iPhoneCheckHandleRight', + dragThreshold: 5, + handleMargin: 15, + handleRadius: 4, + containerRadius: 5, + dataName: "iphoneStyle", + onChange: function() {} + }; + + return iOSCheckbox; + + })(); + + $.iphoneStyle = this.iOSCheckbox = iOSCheckbox; + + $.fn.iphoneStyle = function() { + var args, checkbox, dataName, existingControl, method, params, _i, _len, _ref, _ref1, _ref2, _ref3; + + args = 1 <= arguments.length ? __slice.call(arguments, 0) : []; + dataName = (_ref = (_ref1 = args[0]) != null ? _ref1.dataName : void 0) != null ? _ref : iOSCheckbox.defaults.dataName; + _ref2 = this.filter(':checkbox'); + for (_i = 0, _len = _ref2.length; _i < _len; _i++) { + checkbox = _ref2[_i]; + existingControl = $(checkbox).data(dataName); + if (existingControl != null) { + method = args[0], params = 2 <= args.length ? __slice.call(args, 1) : []; + if ((_ref3 = existingControl[method]) != null) { + _ref3.apply(existingControl, params); + } + } else { + new iOSCheckbox(checkbox, args[0]); + } + } + return this; + }; + + $.fn.iOSCheckbox = function(options) { + var opts; + + if (options == null) { + options = {}; + } + opts = $.extend({}, options, { + resizeHandle: false, + disabledClass: 'iOSCheckDisabled', + containerClass: 'iOSCheckContainer', + labelOnClass: 'iOSCheckLabelOn', + labelOffClass: 'iOSCheckLabelOff', + handleClass: 'iOSCheckHandle', + handleCenterClass: 'iOSCheckHandleCenter', + handleRightClass: 'iOSCheckHandleRight', + dataName: 'iOSCheckbox' + }); + return this.iphoneStyle(opts); + }; + +}).call(this); diff --git a/code/html/favicon.ico b/code/html/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..ee8bae72b153c5fc106f6ce59ab7f8299eb396b8 GIT binary patch literal 1150 zcmZQzU<5(|0R|wcz>vYhz#zuJz@P!dKp~(AL>x#lFaYI*xFHzKA0>zif&c&iGazGR zP1mknE8VbuW9^C+E34P6SzEJq&AQq(Yu42R=|&)K0^$~+eEZ$IccXx2FoDcL2A3~g zZkRr8#>wQQ)F1YCPX7%JOn}(3w*RZ7sQO=CPU*j_jKY5>C)a=b_U`Zg`SYh7HaCFG1DONF%wNBL zQ{26KPoI;c>pzfQkQpGe?Cl)?|kKt2Fup6Iav literal 0 HcmV?d00001 diff --git a/code/html/grids-responsive-min.css b/code/html/grids-responsive-min.css new file mode 100644 index 00000000..bc841c27 --- /dev/null +++ b/code/html/grids-responsive-min.css @@ -0,0 +1 @@ +@media screen and (min-width:35.5em){.pure-u-sm-1,.pure-u-sm-1-1,.pure-u-sm-1-2,.pure-u-sm-1-3,.pure-u-sm-2-3,.pure-u-sm-1-4,.pure-u-sm-3-4,.pure-u-sm-1-5,.pure-u-sm-2-5,.pure-u-sm-3-5,.pure-u-sm-4-5,.pure-u-sm-5-5,.pure-u-sm-1-6,.pure-u-sm-5-6,.pure-u-sm-1-8,.pure-u-sm-3-8,.pure-u-sm-5-8,.pure-u-sm-7-8,.pure-u-sm-1-12,.pure-u-sm-5-12,.pure-u-sm-7-12,.pure-u-sm-11-12,.pure-u-sm-1-24,.pure-u-sm-2-24,.pure-u-sm-3-24,.pure-u-sm-4-24,.pure-u-sm-5-24,.pure-u-sm-6-24,.pure-u-sm-7-24,.pure-u-sm-8-24,.pure-u-sm-9-24,.pure-u-sm-10-24,.pure-u-sm-11-24,.pure-u-sm-12-24,.pure-u-sm-13-24,.pure-u-sm-14-24,.pure-u-sm-15-24,.pure-u-sm-16-24,.pure-u-sm-17-24,.pure-u-sm-18-24,.pure-u-sm-19-24,.pure-u-sm-20-24,.pure-u-sm-21-24,.pure-u-sm-22-24,.pure-u-sm-23-24,.pure-u-sm-24-24{display:inline-block;*display:inline;zoom:1;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-u-sm-1-24{width:4.1667%;*width:4.1357%}.pure-u-sm-1-12,.pure-u-sm-2-24{width:8.3333%;*width:8.3023%}.pure-u-sm-1-8,.pure-u-sm-3-24{width:12.5%;*width:12.469%}.pure-u-sm-1-6,.pure-u-sm-4-24{width:16.6667%;*width:16.6357%}.pure-u-sm-1-5{width:20%;*width:19.969%}.pure-u-sm-5-24{width:20.8333%;*width:20.8023%}.pure-u-sm-1-4,.pure-u-sm-6-24{width:25%;*width:24.969%}.pure-u-sm-7-24{width:29.1667%;*width:29.1357%}.pure-u-sm-1-3,.pure-u-sm-8-24{width:33.3333%;*width:33.3023%}.pure-u-sm-3-8,.pure-u-sm-9-24{width:37.5%;*width:37.469%}.pure-u-sm-2-5{width:40%;*width:39.969%}.pure-u-sm-5-12,.pure-u-sm-10-24{width:41.6667%;*width:41.6357%}.pure-u-sm-11-24{width:45.8333%;*width:45.8023%}.pure-u-sm-1-2,.pure-u-sm-12-24{width:50%;*width:49.969%}.pure-u-sm-13-24{width:54.1667%;*width:54.1357%}.pure-u-sm-7-12,.pure-u-sm-14-24{width:58.3333%;*width:58.3023%}.pure-u-sm-3-5{width:60%;*width:59.969%}.pure-u-sm-5-8,.pure-u-sm-15-24{width:62.5%;*width:62.469%}.pure-u-sm-2-3,.pure-u-sm-16-24{width:66.6667%;*width:66.6357%}.pure-u-sm-17-24{width:70.8333%;*width:70.8023%}.pure-u-sm-3-4,.pure-u-sm-18-24{width:75%;*width:74.969%}.pure-u-sm-19-24{width:79.1667%;*width:79.1357%}.pure-u-sm-4-5{width:80%;*width:79.969%}.pure-u-sm-5-6,.pure-u-sm-20-24{width:83.3333%;*width:83.3023%}.pure-u-sm-7-8,.pure-u-sm-21-24{width:87.5%;*width:87.469%}.pure-u-sm-11-12,.pure-u-sm-22-24{width:91.6667%;*width:91.6357%}.pure-u-sm-23-24{width:95.8333%;*width:95.8023%}.pure-u-sm-1,.pure-u-sm-1-1,.pure-u-sm-5-5,.pure-u-sm-24-24{width:100%}}@media screen and (min-width:48em){.pure-u-md-1,.pure-u-md-1-1,.pure-u-md-1-2,.pure-u-md-1-3,.pure-u-md-2-3,.pure-u-md-1-4,.pure-u-md-3-4,.pure-u-md-1-5,.pure-u-md-2-5,.pure-u-md-3-5,.pure-u-md-4-5,.pure-u-md-5-5,.pure-u-md-1-6,.pure-u-md-5-6,.pure-u-md-1-8,.pure-u-md-3-8,.pure-u-md-5-8,.pure-u-md-7-8,.pure-u-md-1-12,.pure-u-md-5-12,.pure-u-md-7-12,.pure-u-md-11-12,.pure-u-md-1-24,.pure-u-md-2-24,.pure-u-md-3-24,.pure-u-md-4-24,.pure-u-md-5-24,.pure-u-md-6-24,.pure-u-md-7-24,.pure-u-md-8-24,.pure-u-md-9-24,.pure-u-md-10-24,.pure-u-md-11-24,.pure-u-md-12-24,.pure-u-md-13-24,.pure-u-md-14-24,.pure-u-md-15-24,.pure-u-md-16-24,.pure-u-md-17-24,.pure-u-md-18-24,.pure-u-md-19-24,.pure-u-md-20-24,.pure-u-md-21-24,.pure-u-md-22-24,.pure-u-md-23-24,.pure-u-md-24-24{display:inline-block;*display:inline;zoom:1;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-u-md-1-24{width:4.1667%;*width:4.1357%}.pure-u-md-1-12,.pure-u-md-2-24{width:8.3333%;*width:8.3023%}.pure-u-md-1-8,.pure-u-md-3-24{width:12.5%;*width:12.469%}.pure-u-md-1-6,.pure-u-md-4-24{width:16.6667%;*width:16.6357%}.pure-u-md-1-5{width:20%;*width:19.969%}.pure-u-md-5-24{width:20.8333%;*width:20.8023%}.pure-u-md-1-4,.pure-u-md-6-24{width:25%;*width:24.969%}.pure-u-md-7-24{width:29.1667%;*width:29.1357%}.pure-u-md-1-3,.pure-u-md-8-24{width:33.3333%;*width:33.3023%}.pure-u-md-3-8,.pure-u-md-9-24{width:37.5%;*width:37.469%}.pure-u-md-2-5{width:40%;*width:39.969%}.pure-u-md-5-12,.pure-u-md-10-24{width:41.6667%;*width:41.6357%}.pure-u-md-11-24{width:45.8333%;*width:45.8023%}.pure-u-md-1-2,.pure-u-md-12-24{width:50%;*width:49.969%}.pure-u-md-13-24{width:54.1667%;*width:54.1357%}.pure-u-md-7-12,.pure-u-md-14-24{width:58.3333%;*width:58.3023%}.pure-u-md-3-5{width:60%;*width:59.969%}.pure-u-md-5-8,.pure-u-md-15-24{width:62.5%;*width:62.469%}.pure-u-md-2-3,.pure-u-md-16-24{width:66.6667%;*width:66.6357%}.pure-u-md-17-24{width:70.8333%;*width:70.8023%}.pure-u-md-3-4,.pure-u-md-18-24{width:75%;*width:74.969%}.pure-u-md-19-24{width:79.1667%;*width:79.1357%}.pure-u-md-4-5{width:80%;*width:79.969%}.pure-u-md-5-6,.pure-u-md-20-24{width:83.3333%;*width:83.3023%}.pure-u-md-7-8,.pure-u-md-21-24{width:87.5%;*width:87.469%}.pure-u-md-11-12,.pure-u-md-22-24{width:91.6667%;*width:91.6357%}.pure-u-md-23-24{width:95.8333%;*width:95.8023%}.pure-u-md-1,.pure-u-md-1-1,.pure-u-md-5-5,.pure-u-md-24-24{width:100%}}@media screen and (min-width:64em){.pure-u-lg-1,.pure-u-lg-1-1,.pure-u-lg-1-2,.pure-u-lg-1-3,.pure-u-lg-2-3,.pure-u-lg-1-4,.pure-u-lg-3-4,.pure-u-lg-1-5,.pure-u-lg-2-5,.pure-u-lg-3-5,.pure-u-lg-4-5,.pure-u-lg-5-5,.pure-u-lg-1-6,.pure-u-lg-5-6,.pure-u-lg-1-8,.pure-u-lg-3-8,.pure-u-lg-5-8,.pure-u-lg-7-8,.pure-u-lg-1-12,.pure-u-lg-5-12,.pure-u-lg-7-12,.pure-u-lg-11-12,.pure-u-lg-1-24,.pure-u-lg-2-24,.pure-u-lg-3-24,.pure-u-lg-4-24,.pure-u-lg-5-24,.pure-u-lg-6-24,.pure-u-lg-7-24,.pure-u-lg-8-24,.pure-u-lg-9-24,.pure-u-lg-10-24,.pure-u-lg-11-24,.pure-u-lg-12-24,.pure-u-lg-13-24,.pure-u-lg-14-24,.pure-u-lg-15-24,.pure-u-lg-16-24,.pure-u-lg-17-24,.pure-u-lg-18-24,.pure-u-lg-19-24,.pure-u-lg-20-24,.pure-u-lg-21-24,.pure-u-lg-22-24,.pure-u-lg-23-24,.pure-u-lg-24-24{display:inline-block;*display:inline;zoom:1;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-u-lg-1-24{width:4.1667%;*width:4.1357%}.pure-u-lg-1-12,.pure-u-lg-2-24{width:8.3333%;*width:8.3023%}.pure-u-lg-1-8,.pure-u-lg-3-24{width:12.5%;*width:12.469%}.pure-u-lg-1-6,.pure-u-lg-4-24{width:16.6667%;*width:16.6357%}.pure-u-lg-1-5{width:20%;*width:19.969%}.pure-u-lg-5-24{width:20.8333%;*width:20.8023%}.pure-u-lg-1-4,.pure-u-lg-6-24{width:25%;*width:24.969%}.pure-u-lg-7-24{width:29.1667%;*width:29.1357%}.pure-u-lg-1-3,.pure-u-lg-8-24{width:33.3333%;*width:33.3023%}.pure-u-lg-3-8,.pure-u-lg-9-24{width:37.5%;*width:37.469%}.pure-u-lg-2-5{width:40%;*width:39.969%}.pure-u-lg-5-12,.pure-u-lg-10-24{width:41.6667%;*width:41.6357%}.pure-u-lg-11-24{width:45.8333%;*width:45.8023%}.pure-u-lg-1-2,.pure-u-lg-12-24{width:50%;*width:49.969%}.pure-u-lg-13-24{width:54.1667%;*width:54.1357%}.pure-u-lg-7-12,.pure-u-lg-14-24{width:58.3333%;*width:58.3023%}.pure-u-lg-3-5{width:60%;*width:59.969%}.pure-u-lg-5-8,.pure-u-lg-15-24{width:62.5%;*width:62.469%}.pure-u-lg-2-3,.pure-u-lg-16-24{width:66.6667%;*width:66.6357%}.pure-u-lg-17-24{width:70.8333%;*width:70.8023%}.pure-u-lg-3-4,.pure-u-lg-18-24{width:75%;*width:74.969%}.pure-u-lg-19-24{width:79.1667%;*width:79.1357%}.pure-u-lg-4-5{width:80%;*width:79.969%}.pure-u-lg-5-6,.pure-u-lg-20-24{width:83.3333%;*width:83.3023%}.pure-u-lg-7-8,.pure-u-lg-21-24{width:87.5%;*width:87.469%}.pure-u-lg-11-12,.pure-u-lg-22-24{width:91.6667%;*width:91.6357%}.pure-u-lg-23-24{width:95.8333%;*width:95.8023%}.pure-u-lg-1,.pure-u-lg-1-1,.pure-u-lg-5-5,.pure-u-lg-24-24{width:100%}}@media screen and (min-width:80em){.pure-u-xl-1,.pure-u-xl-1-1,.pure-u-xl-1-2,.pure-u-xl-1-3,.pure-u-xl-2-3,.pure-u-xl-1-4,.pure-u-xl-3-4,.pure-u-xl-1-5,.pure-u-xl-2-5,.pure-u-xl-3-5,.pure-u-xl-4-5,.pure-u-xl-5-5,.pure-u-xl-1-6,.pure-u-xl-5-6,.pure-u-xl-1-8,.pure-u-xl-3-8,.pure-u-xl-5-8,.pure-u-xl-7-8,.pure-u-xl-1-12,.pure-u-xl-5-12,.pure-u-xl-7-12,.pure-u-xl-11-12,.pure-u-xl-1-24,.pure-u-xl-2-24,.pure-u-xl-3-24,.pure-u-xl-4-24,.pure-u-xl-5-24,.pure-u-xl-6-24,.pure-u-xl-7-24,.pure-u-xl-8-24,.pure-u-xl-9-24,.pure-u-xl-10-24,.pure-u-xl-11-24,.pure-u-xl-12-24,.pure-u-xl-13-24,.pure-u-xl-14-24,.pure-u-xl-15-24,.pure-u-xl-16-24,.pure-u-xl-17-24,.pure-u-xl-18-24,.pure-u-xl-19-24,.pure-u-xl-20-24,.pure-u-xl-21-24,.pure-u-xl-22-24,.pure-u-xl-23-24,.pure-u-xl-24-24{display:inline-block;*display:inline;zoom:1;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-u-xl-1-24{width:4.1667%;*width:4.1357%}.pure-u-xl-1-12,.pure-u-xl-2-24{width:8.3333%;*width:8.3023%}.pure-u-xl-1-8,.pure-u-xl-3-24{width:12.5%;*width:12.469%}.pure-u-xl-1-6,.pure-u-xl-4-24{width:16.6667%;*width:16.6357%}.pure-u-xl-1-5{width:20%;*width:19.969%}.pure-u-xl-5-24{width:20.8333%;*width:20.8023%}.pure-u-xl-1-4,.pure-u-xl-6-24{width:25%;*width:24.969%}.pure-u-xl-7-24{width:29.1667%;*width:29.1357%}.pure-u-xl-1-3,.pure-u-xl-8-24{width:33.3333%;*width:33.3023%}.pure-u-xl-3-8,.pure-u-xl-9-24{width:37.5%;*width:37.469%}.pure-u-xl-2-5{width:40%;*width:39.969%}.pure-u-xl-5-12,.pure-u-xl-10-24{width:41.6667%;*width:41.6357%}.pure-u-xl-11-24{width:45.8333%;*width:45.8023%}.pure-u-xl-1-2,.pure-u-xl-12-24{width:50%;*width:49.969%}.pure-u-xl-13-24{width:54.1667%;*width:54.1357%}.pure-u-xl-7-12,.pure-u-xl-14-24{width:58.3333%;*width:58.3023%}.pure-u-xl-3-5{width:60%;*width:59.969%}.pure-u-xl-5-8,.pure-u-xl-15-24{width:62.5%;*width:62.469%}.pure-u-xl-2-3,.pure-u-xl-16-24{width:66.6667%;*width:66.6357%}.pure-u-xl-17-24{width:70.8333%;*width:70.8023%}.pure-u-xl-3-4,.pure-u-xl-18-24{width:75%;*width:74.969%}.pure-u-xl-19-24{width:79.1667%;*width:79.1357%}.pure-u-xl-4-5{width:80%;*width:79.969%}.pure-u-xl-5-6,.pure-u-xl-20-24{width:83.3333%;*width:83.3023%}.pure-u-xl-7-8,.pure-u-xl-21-24{width:87.5%;*width:87.469%}.pure-u-xl-11-12,.pure-u-xl-22-24{width:91.6667%;*width:91.6357%}.pure-u-xl-23-24{width:95.8333%;*width:95.8023%}.pure-u-xl-1,.pure-u-xl-1-1,.pure-u-xl-5-5,.pure-u-xl-24-24{width:100%}} diff --git a/code/html/images/off.png b/code/html/images/off.png new file mode 100644 index 0000000000000000000000000000000000000000..f414051ecc72db50e3267adb99ad288d22a293ad GIT binary patch literal 2577 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 literal 0 HcmV?d00001 diff --git a/code/html/images/on.png b/code/html/images/on.png new file mode 100644 index 0000000000000000000000000000000000000000..94425e5841c89fb0b226d987b1a6d9199c372b3f GIT binary patch literal 2496 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 KMNUMnLSTYI@WUwp literal 0 HcmV?d00001 diff --git a/code/html/images/slider.png b/code/html/images/slider.png new file mode 100644 index 0000000000000000000000000000000000000000..80e05ff2dde736f92872019c10e6e69e4caf7179 GIT binary patch literal 1228 zcmV;-1T*`IP)+dQ(pVRYZe}Df92L}hw z(vL4YJ3DJzTU)feyi6o{Uit#+o8Z<<`XKbQep=Y;XN#NZ_fBsC{ki)?*Vor{c6RnH zb-tLVuXnq-6*2FZ%c6hiwcmG+9`Xw@hzw%7KDl>oB?6pVrE7-lDj`mNA$% zHa2K!X=&}` zQCo-(yXJ>%{)!*6?*U42UHdJeVXIAF(dqE(>fpTXl3gV_xwxjuEp09X5H17gps850 z;7J~8A%L!BRVIz(%?n`2VVL^dat1`@>I9ycw}MoIiQw!n-5IFID?(lo%JM5i8hoYPxPIQBFYBvs;dhdEUE$lHbtC}_``U&!bOl_1075lx|^f8 zQ2|%C=XSPzQQ8cQE>iatrI#il%N5ZBxI^csTaKB$T`O|fdx552$D|E7n>`fK?Ue9) zgM4s0w^jmF+Xqe$JgyN3h*^bVAUdmw1`CnJx#Q_6cguuwG$6RUl`6oS0xkXY-!S23 zfS?>|R63XDwVh&yfYLeA`UGYgM!TgK}I_0jsq-)@+}m5XY3{u!9NL@Fc~zIaXgt$F&3VG<_M*89xjmPh*A{IBh68 zC9t3NIjc1(|w#y1z zd%VchBEiPFH^{x4uQ@m7}Ahe9Ql! qH~!5>yzzh48~^LQy}hgd0t^6MQ^T06mz3!M0000i zsd#E)vfFS1BxGB=t^*+idJkfZ#1b$8KILp>BJa=w*2e?R>ZFMr>$0Q)(&OAKtjW_Y z7&ietEH)YwgPhX%g*-G9LB+&@qsN5Yd7g*sloBy>vw@sHXlja-Qu+#5mTzAH>$*|n z$S~AehuXgH)*(iI$Dy&P3-3J7LA$QYwvnOteUGo2rm55Z0t^6tOGp^$Su~UY0000< KMNUMnLSTa9gK3li literal 0 HcmV?d00001 diff --git a/code/html/images/slider_left.png b/code/html/images/slider_left.png new file mode 100644 index 0000000000000000000000000000000000000000..51576ce351944e96229b04bfa03f8f03e907e9ff GIT binary patch literal 324 zcmV-K0lWT*P)$+ma!JqEi%8`jz}$IH&>I5C#~pELZ9uqT21yUVFdi6z z&R`?^zg{I1Q|2Gz=NToC-jt`3*w$$wy(z^UGHz=CkE1&^mMKGpL-c=+J}C!hjHZPJ z8+EZ@!}t+^z~1!UeL9;Zfa--y(=_CqGoQdXR8@7W>zcamtuh^;EX(k7=kRl10R{jI W5i+_owTc4(0000b$oD9c+P3`xaMbu}n#PfH zPUd;WFbpRpcYHZtP!t8Ks(M#q&jP{idP7;3n&ZO~kq0owK=E55*4Hu*jd5&$_PNuK)u8EfzVU TqbKrS00000NkvXXu0mjf#?yy8 literal 0 HcmV?d00001 diff --git a/code/html/index.html b/code/html/index.html new file mode 100644 index 00000000..ac0d8ca4 --- /dev/null +++ b/code/html/index.html @@ -0,0 +1,495 @@ + + + + + ESPurna 0.0.0 + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+ +
+ +
+

STATUS

+

Current configuration

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

WIFI

+

You can configure up to 3 different WiFi networks. The device will try to connect to any of them starting with the first one.

+
+ +
+ +
+ + First network + +
+
+ + +
+
+ + +
+
+ + Second network + +
+
+ + +
+
+ + +
+
+ + Third network + +
+
+ + +
+
+ + +
+
+ +
+
+
+ +
+ +
+

MQTT

+

Configure an MQTT broker in your network and you will be able to change the switch status via an MQTT message. Leave the server field empty to disable MQTT.

+
+ +
+ +
+ +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
Send a 0 or a 1 as a payload to the provided topic below to switch it on or off. You can also send a 2 to toggle its current state. The switch will also report its current open/close status to the same topic and its IP address, hertbeat, firmware version and file system version to the topic you define plus "/ip", "/heartbeat", "/version" and "/fsversion" respectively.
+ +
+ +
+ +
+
+ +
+ +
+ +
+

RADIO

+

+ Configure your radio channel and device ID. +

+
+ +
+ +
+ +
+ +
+ +
This is the 5 bits code (0-31) you define on your remote, usually from a DIP switch.
+ +
+ +
+ +
This is the button in your remote that will trigger the switch
+ +
+ +
+ +
+
+ +
+ +
+ +
+

POWER

+

+ Configure your power monitor variables. +

+
+ +
+ +
+ +
+ +
+ +
This is your house nominal voltage, you probably know this or you wont be playing with this device...
+ +
+ +
+ +
This is the value in amps for a 1V output for your sensor. Some current sensors like the YHDC SCT-013-030 have it written in the enclosure: 30A 1V. If you are using a current sensor that outputs a current (no built in burden resistor) it will depend on the turns ratio between the primary and secondary coils in the sensor and the burden resistor you use. Check about this constant in the post about calibration in the Open Energy Monitor site.
+ +
+ +
+ +
+
+ +
+ +
+ +
+ +
+ + + + diff --git a/code/html/jquery-1.12.3.min.js b/code/html/jquery-1.12.3.min.js new file mode 100644 index 00000000..dad4f0af --- /dev/null +++ b/code/html/jquery-1.12.3.min.js @@ -0,0 +1,5 @@ +/*! jQuery v1.12.3 | (c) jQuery Foundation | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="1.12.3",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(!l.ownFirst)for(b in a)return k.call(a,b);for(b in a);return void 0===b||k.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(h)return h.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=e.call(arguments,2),d=function(){return a.apply(b||this,c.concat(e.call(arguments)))},d.guid=a.guid=a.guid||n.guid++,d):void 0},now:function(){return+new Date},support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}if(f=d.getElementById(e[2]),f&&f.parentNode){if(f.id!==e[2])return A.find(a);this.length=1,this[0]=f}return this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||(e=n.uniqueSort(e)),D.test(a)&&(e=e.reverse())),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=!0,c||j.disable(),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.addEventListener?(d.removeEventListener("DOMContentLoaded",K),a.removeEventListener("load",K)):(d.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(d.addEventListener||"load"===a.event.type||"complete"===d.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll)a.setTimeout(n.ready);else if(d.addEventListener)d.addEventListener("DOMContentLoaded",K),a.addEventListener("load",K);else{d.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&d.documentElement}catch(e){}c&&c.doScroll&&!function f(){if(!n.isReady){try{c.doScroll("left")}catch(b){return a.setTimeout(f,50)}J(),n.ready()}}()}return I.promise(b)},n.ready.promise();var L;for(L in n(l))break;l.ownFirst="0"===L,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c,e;c=d.getElementsByTagName("body")[0],c&&c.style&&(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",l.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(e))}),function(){var a=d.createElement("div");l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}a=null}();var M=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b},N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0; +}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(M(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),"object"!=typeof b&&"function"!=typeof b||(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f}}function S(a,b,c){if(M(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=void 0)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},Z=/^(?:checkbox|radio)$/i,$=/<([\w:-]+)/,_=/^$|\/(?:java|ecma)script/i,aa=/^\s+/,ba="abbr|article|aside|audio|bdi|canvas|data|datalist|details|dialog|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|picture|progress|section|summary|template|time|video";function ca(a){var b=ba.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}!function(){var a=d.createElement("div"),b=d.createDocumentFragment(),c=d.createElement("input");a.innerHTML="
a",l.leadingWhitespace=3===a.firstChild.nodeType,l.tbody=!a.getElementsByTagName("tbody").length,l.htmlSerialize=!!a.getElementsByTagName("link").length,l.html5Clone="<:nav>"!==d.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,b.appendChild(c),l.appendChecked=c.checked,a.innerHTML="",l.noCloneChecked=!!a.cloneNode(!0).lastChild.defaultValue,b.appendChild(a),c=d.createElement("input"),c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),a.appendChild(c),l.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!!a.addEventListener,a[n.expando]=1,l.attributes=!a.getAttribute(n.expando)}();var da={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:l.htmlSerialize?[0,"",""]:[1,"X
","
"]};da.optgroup=da.option,da.tbody=da.tfoot=da.colgroup=da.caption=da.thead,da.th=da.td;function ea(a,b){var c,d,e=0,f="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,ea(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function fa(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}var ga=/<|&#?\w+;/,ha=/r;r++)if(g=a[r],g||0===g)if("object"===n.type(g))n.merge(q,g.nodeType?[g]:g);else if(ga.test(g)){i=i||p.appendChild(b.createElement("div")),j=($.exec(g)||["",""])[1].toLowerCase(),m=da[j]||da._default,i.innerHTML=m[1]+n.htmlPrefilter(g)+m[2],f=m[0];while(f--)i=i.lastChild;if(!l.leadingWhitespace&&aa.test(g)&&q.push(b.createTextNode(aa.exec(g)[0])),!l.tbody){g="table"!==j||ha.test(g)?""!==m[1]||ha.test(g)?0:i:i.firstChild,f=g&&g.childNodes.length;while(f--)n.nodeName(k=g.childNodes[f],"tbody")&&!k.childNodes.length&&g.removeChild(k)}n.merge(q,i.childNodes),i.textContent="";while(i.firstChild)i.removeChild(i.firstChild);i=p.lastChild}else q.push(b.createTextNode(g));i&&p.removeChild(i),l.appendChecked||n.grep(ea(q,"input"),ia),r=0;while(g=q[r++])if(d&&n.inArray(g,d)>-1)e&&e.push(g);else if(h=n.contains(g.ownerDocument,g),i=ea(p.appendChild(g),"script"),h&&fa(i),c){f=0;while(g=i[f++])_.test(g.type||"")&&c.push(g)}return i=null,p}!function(){var b,c,e=d.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b]=c in a)||(e.setAttribute(c,"t"),l[b]=e.attributes[c].expando===!1);e=null}();var ka=/^(?:input|select|textarea)$/i,la=/^key/,ma=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,na=/^(?:focusinfocus|focusoutblur)$/,oa=/^([^.]*)(?:\.(.+)|)/;function pa(){return!0}function qa(){return!1}function ra(){try{return d.activeElement}catch(a){}}function sa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)sa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=qa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return"undefined"==typeof n||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(G)||[""],h=b.length;while(h--)f=oa.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=oa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(i=m=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!na.test(q+n.event.triggered)&&(q.indexOf(".")>-1&&(r=q.split("."),q=r.shift(),r.sort()),h=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),l=n.event.special[q]||{},f||!l.trigger||l.trigger.apply(e,c)!==!1)){if(!f&&!l.noBubble&&!n.isWindow(e)){for(j=l.delegateType||q,na.test(j+q)||(i=i.parentNode);i;i=i.parentNode)p.push(i),m=i;m===(e.ownerDocument||d)&&p.push(m.defaultView||m.parentWindow||a)}o=0;while((i=p[o++])&&!b.isPropagationStopped())b.type=o>1?j:l.bindType||q,g=(n._data(i,"events")||{})[b.type]&&n._data(i,"handle"),g&&g.apply(i,c),g=h&&i[h],g&&g.apply&&M(i)&&(b.result=g.apply(i,c),b.result===!1&&b.preventDefault());if(b.type=q,!f&&!b.isDefaultPrevented()&&(!l._default||l._default.apply(p.pop(),c)===!1)&&M(e)&&h&&e[q]&&!n.isWindow(e)){m=e[h],m&&(e[h]=null),n.event.triggered=q;try{e[q]()}catch(s){}n.event.triggered=void 0,m&&(e[h]=m)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]","i"),va=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,wa=/\s*$/g,Aa=ca(d),Ba=Aa.appendChild(d.createElement("div"));function Ca(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function Da(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function Ea(a){var b=ya.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Fa(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Ga(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(Da(b).text=a.text,Ea(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&Z.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}}function Ha(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&xa.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(o&&(k=ja(b,a[0].ownerDocument,!1,a,d),e=k.firstChild,1===k.childNodes.length&&(k=e),e||d)){for(i=n.map(ea(k,"script"),Da),h=i.length;o>m;m++)g=k,m!==p&&(g=n.clone(g,!0,!0),h&&n.merge(i,ea(g,"script"))),c.call(a[m],g,m);if(h)for(j=i[i.length-1].ownerDocument,n.map(i,Ea),m=0;h>m;m++)g=i[m],_.test(g.type||"")&&!n._data(g,"globalEval")&&n.contains(j,g)&&(g.src?n._evalUrl&&n._evalUrl(g.src):n.globalEval((g.text||g.textContent||g.innerHTML||"").replace(za,"")));k=e=null}return a}function Ia(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(ea(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&fa(ea(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(va,"<$1>")},clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!ua.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(Ba.innerHTML=a.outerHTML,Ba.removeChild(f=Ba.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=ea(f),h=ea(a),g=0;null!=(e=h[g]);++g)d[g]&&Ga(e,d[g]);if(b)if(c)for(h=h||ea(a),d=d||ea(f),g=0;null!=(e=h[g]);g++)Fa(e,d[g]);else Fa(a,f);return d=ea(f,"script"),d.length>0&&fa(d,!i&&ea(a,"script")),d=h=e=null,f},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.attributes,m=n.event.special;null!=(d=a[h]);h++)if((b||M(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k||"undefined"==typeof d.removeAttribute?d[i]=void 0:d.removeAttribute(i),c.push(f))}}}),n.fn.extend({domManip:Ha,detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return Y(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||d).createTextNode(a))},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(ea(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return Y(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(ta,""):void 0;if("string"==typeof a&&!wa.test(a)&&(l.htmlSerialize||!ua.test(a))&&(l.leadingWhitespace||!aa.test(a))&&!da[($.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ea(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ha(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(ea(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],f=n(a),h=f.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(f[d])[b](c),g.apply(e,c.get());return this.pushStack(e)}});var Ja,Ka={HTML:"block",BODY:"block"};function La(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function Ma(a){var b=d,c=Ka[a];return c||(c=La(a,b),"none"!==c&&c||(Ja=(Ja||n("