From df81d58cf573837e1ae49e80826aa3aecb9d58c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=95=E5=85=A8?= Date: Wed, 17 Apr 2019 14:22:28 +0800 Subject: [PATCH] 0.3.1 --- static/admin/css/autocomplete.css | 260 + static/admin/css/base.css | 978 ++ static/admin/css/changelists.css | 344 + static/admin/css/dashboard.css | 27 + static/admin/css/fonts.css | 20 + static/admin/css/forms.css | 515 + static/admin/css/login.css | 78 + static/admin/css/responsive.css | 990 ++ static/admin/css/responsive_rtl.css | 80 + static/admin/css/rtl.css | 264 + static/admin/css/ui.css | 17 + .../css/vendor/select2/LICENSE-SELECT2.md | 21 + static/admin/css/vendor/select2/select2.css | 484 + .../admin/css/vendor/select2/select2.min.css | 1 + static/admin/css/widgets.css | 565 + static/admin/fonts/LICENSE.txt | 202 + static/admin/fonts/README.txt | 2 + static/admin/fonts/Roboto-Bold-webfont.woff | Bin 0 -> 82564 bytes static/admin/fonts/Roboto-Light-webfont.woff | Bin 0 -> 81348 bytes .../admin/fonts/Roboto-Regular-webfont.woff | Bin 0 -> 80304 bytes static/admin/img/LICENSE | 20 + static/admin/img/README.txt | 7 + static/admin/img/calendar-icons.svg | 14 + static/admin/img/gis/move_vertex_off.svg | 1 + static/admin/img/gis/move_vertex_on.svg | 1 + static/admin/img/icon-addlink.svg | 3 + static/admin/img/icon-alert.svg | 3 + static/admin/img/icon-calendar.svg | 9 + static/admin/img/icon-changelink.svg | 3 + static/admin/img/icon-clock.svg | 9 + static/admin/img/icon-deletelink.svg | 3 + static/admin/img/icon-no.svg | 3 + static/admin/img/icon-unknown-alt.svg | 3 + static/admin/img/icon-unknown.svg | 3 + static/admin/img/icon-yes.svg | 3 + static/admin/img/inline-delete.svg | 3 + static/admin/img/search.svg | 3 + static/admin/img/selector-icons.svg | 34 + static/admin/img/sorting-icons.svg | 19 + static/admin/img/tooltag-add.svg | 3 + static/admin/img/tooltag-arrowright.svg | 3 + static/admin/js/SelectBox.js | 144 + static/admin/js/SelectFilter2.js | 252 + static/admin/js/actions.js | 153 + static/admin/js/actions.min.js | 6 + static/admin/js/admin/DateTimeShortcuts.js | 426 + static/admin/js/admin/RelatedObjectLookups.js | 181 + static/admin/js/autocomplete.js | 37 + static/admin/js/calendar.js | 208 + static/admin/js/cancel.js | 9 + static/admin/js/change_form.js | 20 + static/admin/js/collapse.js | 26 + static/admin/js/collapse.min.js | 5 + static/admin/js/core.js | 212 + static/admin/js/inlines.js | 295 + static/admin/js/inlines.min.js | 13 + static/admin/js/jquery.init.js | 8 + static/admin/js/popup_response.js | 16 + static/admin/js/prepopulate.js | 42 + static/admin/js/prepopulate.min.js | 1 + static/admin/js/prepopulate_init.js | 10 + static/admin/js/timeparse.js | 106 + static/admin/js/urlify.js | 189 + .../admin/js/vendor/jquery/LICENSE-JQUERY.txt | 26 + static/admin/js/vendor/jquery/jquery.js | 9842 +++++++++++++++++ static/admin/js/vendor/jquery/jquery.min.js | 4 + .../js/vendor/select2/LICENSE-SELECT2.md | 21 + static/admin/js/vendor/select2/i18n/ar.js | 3 + static/admin/js/vendor/select2/i18n/az.js | 3 + static/admin/js/vendor/select2/i18n/bg.js | 3 + static/admin/js/vendor/select2/i18n/ca.js | 3 + static/admin/js/vendor/select2/i18n/cs.js | 3 + static/admin/js/vendor/select2/i18n/da.js | 3 + static/admin/js/vendor/select2/i18n/de.js | 3 + static/admin/js/vendor/select2/i18n/el.js | 3 + static/admin/js/vendor/select2/i18n/en.js | 3 + static/admin/js/vendor/select2/i18n/es.js | 3 + static/admin/js/vendor/select2/i18n/et.js | 3 + static/admin/js/vendor/select2/i18n/eu.js | 3 + static/admin/js/vendor/select2/i18n/fa.js | 3 + static/admin/js/vendor/select2/i18n/fi.js | 3 + static/admin/js/vendor/select2/i18n/fr.js | 3 + static/admin/js/vendor/select2/i18n/gl.js | 3 + static/admin/js/vendor/select2/i18n/he.js | 3 + static/admin/js/vendor/select2/i18n/hi.js | 3 + static/admin/js/vendor/select2/i18n/hr.js | 3 + static/admin/js/vendor/select2/i18n/hu.js | 3 + static/admin/js/vendor/select2/i18n/id.js | 3 + static/admin/js/vendor/select2/i18n/is.js | 3 + static/admin/js/vendor/select2/i18n/it.js | 3 + static/admin/js/vendor/select2/i18n/ja.js | 3 + static/admin/js/vendor/select2/i18n/km.js | 3 + static/admin/js/vendor/select2/i18n/ko.js | 3 + static/admin/js/vendor/select2/i18n/lt.js | 3 + static/admin/js/vendor/select2/i18n/lv.js | 3 + static/admin/js/vendor/select2/i18n/mk.js | 3 + static/admin/js/vendor/select2/i18n/ms.js | 3 + static/admin/js/vendor/select2/i18n/nb.js | 3 + static/admin/js/vendor/select2/i18n/nl.js | 3 + static/admin/js/vendor/select2/i18n/pl.js | 3 + static/admin/js/vendor/select2/i18n/pt-BR.js | 3 + static/admin/js/vendor/select2/i18n/pt.js | 3 + static/admin/js/vendor/select2/i18n/ro.js | 3 + static/admin/js/vendor/select2/i18n/ru.js | 3 + static/admin/js/vendor/select2/i18n/sk.js | 3 + .../admin/js/vendor/select2/i18n/sr-Cyrl.js | 3 + static/admin/js/vendor/select2/i18n/sr.js | 3 + static/admin/js/vendor/select2/i18n/sv.js | 3 + static/admin/js/vendor/select2/i18n/th.js | 3 + static/admin/js/vendor/select2/i18n/tr.js | 3 + static/admin/js/vendor/select2/i18n/uk.js | 3 + static/admin/js/vendor/select2/i18n/vi.js | 3 + static/admin/js/vendor/select2/i18n/zh-CN.js | 3 + static/admin/js/vendor/select2/i18n/zh-TW.js | 3 + .../admin/js/vendor/select2/select2.full.js | 6436 +++++++++++ .../js/vendor/select2/select2.full.min.js | 3 + .../js/vendor/xregexp/LICENSE-XREGEXP.txt | 21 + static/admin/js/vendor/xregexp/xregexp.js | 2308 ++++ static/admin/js/vendor/xregexp/xregexp.min.js | 18 + static/admin/simpleui-x/css/base.css | 112 + static/admin/simpleui-x/css/index.css | 233 + static/admin/simpleui-x/css/login.css | 32 + .../css/all.min.css | 5 + .../webfonts/fa-brands-400.eot | Bin 0 -> 129916 bytes .../webfonts/fa-brands-400.svg | 3459 ++++++ .../webfonts/fa-brands-400.ttf | Bin 0 -> 129612 bytes .../webfonts/fa-brands-400.woff | Bin 0 -> 87688 bytes .../webfonts/fa-brands-400.woff2 | Bin 0 -> 74768 bytes .../webfonts/fa-regular-400.eot | Bin 0 -> 34388 bytes .../webfonts/fa-regular-400.svg | 803 ++ .../webfonts/fa-regular-400.ttf | Bin 0 -> 34092 bytes .../webfonts/fa-regular-400.woff | Bin 0 -> 16804 bytes .../webfonts/fa-regular-400.woff2 | Bin 0 -> 13552 bytes .../webfonts/fa-solid-900.eot | Bin 0 -> 186728 bytes .../webfonts/fa-solid-900.svg | 4527 ++++++++ .../webfonts/fa-solid-900.ttf | Bin 0 -> 186444 bytes .../webfonts/fa-solid-900.woff | Bin 0 -> 96256 bytes .../webfonts/fa-solid-900.woff2 | Bin 0 -> 74256 bytes static/admin/simpleui-x/img/favicon.png | Bin 0 -> 11999 bytes static/admin/simpleui-x/img/logo.png | Bin 0 -> 3244 bytes static/admin/simpleui-x/js/cookie.js | 17 + static/admin/simpleui-x/js/index.js | 273 + static/admin/simpleui-x/js/language.js | 11 + static/admin/simpleui-x/js/login.js | 12 + static/admin/simpleui-x/locale/en-us.js | 36 + static/admin/simpleui-x/locale/zh-hans.js | 36 + static/admin/simpleui-x/theme/admin.lte.css | 161 + .../admin/simpleui-x/theme/admin.lte.css.map | 1 + static/admin/simpleui-x/theme/admin.lte.less | 36 + static/admin/simpleui-x/theme/aircraft.css | 173 + .../admin/simpleui-x/theme/aircraft.css.map | 1 + static/admin/simpleui-x/theme/aircraft.less | 48 + static/admin/simpleui-x/theme/ant.design.css | 163 + .../admin/simpleui-x/theme/ant.design.css.map | 1 + static/admin/simpleui-x/theme/ant.design.less | 43 + static/admin/simpleui-x/theme/base.less | 158 + static/admin/simpleui-x/theme/black.css | 157 + static/admin/simpleui-x/theme/black.css.map | 1 + static/admin/simpleui-x/theme/black.less | 30 + static/admin/simpleui-x/theme/dark.green.css | 157 + .../admin/simpleui-x/theme/dark.green.css.map | 1 + static/admin/simpleui-x/theme/dark.green.less | 31 + static/admin/simpleui-x/theme/element.css | 154 + static/admin/simpleui-x/theme/element.css.map | 1 + static/admin/simpleui-x/theme/element.less | 27 + static/admin/simpleui-x/theme/gray.css | 157 + static/admin/simpleui-x/theme/gray.css.map | 1 + static/admin/simpleui-x/theme/gray.less | 27 + static/admin/simpleui-x/theme/green.css | 157 + static/admin/simpleui-x/theme/green.css.map | 1 + static/admin/simpleui-x/theme/green.less | 29 + static/admin/simpleui-x/theme/highdmin.css | 161 + .../admin/simpleui-x/theme/highdmin.css.map | 1 + static/admin/simpleui-x/theme/highdmin.less | 31 + static/admin/simpleui-x/theme/layui.css | 158 + static/admin/simpleui-x/theme/layui.css.map | 1 + static/admin/simpleui-x/theme/layui.less | 32 + static/admin/simpleui-x/theme/light.css | 150 + static/admin/simpleui-x/theme/light.css.map | 1 + static/admin/simpleui-x/theme/light.less | 20 + static/admin/simpleui-x/theme/orange.css | 169 + static/admin/simpleui-x/theme/orange.css.map | 1 + static/admin/simpleui-x/theme/orange.less | 45 + static/admin/simpleui-x/theme/purple.css | 168 + static/admin/simpleui-x/theme/purple.css.map | 1 + static/admin/simpleui-x/theme/purple.less | 47 + static/admin/simpleui-x/theme/simpleui.css | 157 + .../admin/simpleui-x/theme/simpleui.css.map | 1 + static/admin/simpleui-x/theme/simpleui.less | 30 + static/admin/simpleui-x/theme/theme.js | 55 + static/admin/simpleui/echarts/echarts.min.js | 36 + static/admin/simpleui/layui/css/layui.css | 2 + .../admin/simpleui/layui/css/layui.mobile.css | 2 + .../admin/simpleui/layui/css/modules/code.css | 2 + .../css/modules/laydate/default/laydate.css | 2 + .../css/modules/layer/default/icon-ext.png | Bin 0 -> 5911 bytes .../layui/css/modules/layer/default/icon.png | Bin 0 -> 11493 bytes .../layui/css/modules/layer/default/layer.css | 2 + .../css/modules/layer/default/loading-0.gif | Bin 0 -> 5793 bytes .../css/modules/layer/default/loading-1.gif | Bin 0 -> 701 bytes .../css/modules/layer/default/loading-2.gif | Bin 0 -> 1787 bytes static/admin/simpleui/layui/font/iconfont.eot | Bin 0 -> 40844 bytes static/admin/simpleui/layui/font/iconfont.svg | 473 + static/admin/simpleui/layui/font/iconfont.ttf | Bin 0 -> 40668 bytes .../admin/simpleui/layui/font/iconfont.woff | Bin 0 -> 26744 bytes static/admin/simpleui/layui/images/face/0.gif | Bin 0 -> 2689 bytes static/admin/simpleui/layui/images/face/1.gif | Bin 0 -> 5514 bytes .../admin/simpleui/layui/images/face/10.gif | Bin 0 -> 2797 bytes .../admin/simpleui/layui/images/face/11.gif | Bin 0 -> 4121 bytes .../admin/simpleui/layui/images/face/12.gif | Bin 0 -> 3361 bytes .../admin/simpleui/layui/images/face/13.gif | Bin 0 -> 7425 bytes .../admin/simpleui/layui/images/face/14.gif | Bin 0 -> 2375 bytes .../admin/simpleui/layui/images/face/15.gif | Bin 0 -> 1793 bytes .../admin/simpleui/layui/images/face/16.gif | Bin 0 -> 6721 bytes .../admin/simpleui/layui/images/face/17.gif | Bin 0 -> 4439 bytes .../admin/simpleui/layui/images/face/18.gif | Bin 0 -> 3017 bytes .../admin/simpleui/layui/images/face/19.gif | Bin 0 -> 3040 bytes static/admin/simpleui/layui/images/face/2.gif | Bin 0 -> 3222 bytes .../admin/simpleui/layui/images/face/20.gif | Bin 0 -> 5144 bytes .../admin/simpleui/layui/images/face/21.gif | Bin 0 -> 5191 bytes .../admin/simpleui/layui/images/face/22.gif | Bin 0 -> 9823 bytes .../admin/simpleui/layui/images/face/23.gif | Bin 0 -> 3792 bytes .../admin/simpleui/layui/images/face/24.gif | Bin 0 -> 8096 bytes .../admin/simpleui/layui/images/face/25.gif | Bin 0 -> 3127 bytes .../admin/simpleui/layui/images/face/26.gif | Bin 0 -> 3291 bytes .../admin/simpleui/layui/images/face/27.gif | Bin 0 -> 4377 bytes .../admin/simpleui/layui/images/face/28.gif | Bin 0 -> 2793 bytes .../admin/simpleui/layui/images/face/29.gif | Bin 0 -> 4854 bytes static/admin/simpleui/layui/images/face/3.gif | Bin 0 -> 4017 bytes .../admin/simpleui/layui/images/face/30.gif | Bin 0 -> 2555 bytes .../admin/simpleui/layui/images/face/31.gif | Bin 0 -> 2002 bytes .../admin/simpleui/layui/images/face/32.gif | Bin 0 -> 3481 bytes .../admin/simpleui/layui/images/face/33.gif | Bin 0 -> 2454 bytes .../admin/simpleui/layui/images/face/34.gif | Bin 0 -> 3700 bytes .../admin/simpleui/layui/images/face/35.gif | Bin 0 -> 1800 bytes .../admin/simpleui/layui/images/face/36.gif | Bin 0 -> 2331 bytes .../admin/simpleui/layui/images/face/37.gif | Bin 0 -> 1513 bytes .../admin/simpleui/layui/images/face/38.gif | Bin 0 -> 3615 bytes .../admin/simpleui/layui/images/face/39.gif | Bin 0 -> 6495 bytes static/admin/simpleui/layui/images/face/4.gif | Bin 0 -> 5689 bytes .../admin/simpleui/layui/images/face/40.gif | Bin 0 -> 3154 bytes .../admin/simpleui/layui/images/face/41.gif | Bin 0 -> 3644 bytes .../admin/simpleui/layui/images/face/42.gif | Bin 0 -> 5305 bytes .../admin/simpleui/layui/images/face/43.gif | Bin 0 -> 2674 bytes .../admin/simpleui/layui/images/face/44.gif | Bin 0 -> 4126 bytes .../admin/simpleui/layui/images/face/45.gif | Bin 0 -> 3417 bytes .../admin/simpleui/layui/images/face/46.gif | Bin 0 -> 3007 bytes .../admin/simpleui/layui/images/face/47.gif | Bin 0 -> 2333 bytes .../admin/simpleui/layui/images/face/48.gif | Bin 0 -> 2689 bytes .../admin/simpleui/layui/images/face/49.gif | Bin 0 -> 2315 bytes static/admin/simpleui/layui/images/face/5.gif | Bin 0 -> 4567 bytes .../admin/simpleui/layui/images/face/50.gif | Bin 0 -> 5866 bytes .../admin/simpleui/layui/images/face/51.gif | Bin 0 -> 2785 bytes .../admin/simpleui/layui/images/face/52.gif | Bin 0 -> 777 bytes .../admin/simpleui/layui/images/face/53.gif | Bin 0 -> 2127 bytes .../admin/simpleui/layui/images/face/54.gif | Bin 0 -> 2196 bytes .../admin/simpleui/layui/images/face/55.gif | Bin 0 -> 1971 bytes .../admin/simpleui/layui/images/face/56.gif | Bin 0 -> 2034 bytes .../admin/simpleui/layui/images/face/57.gif | Bin 0 -> 2705 bytes .../admin/simpleui/layui/images/face/58.gif | Bin 0 -> 2258 bytes .../admin/simpleui/layui/images/face/59.gif | Bin 0 -> 10311 bytes static/admin/simpleui/layui/images/face/6.gif | Bin 0 -> 2213 bytes .../admin/simpleui/layui/images/face/60.gif | Bin 0 -> 3245 bytes .../admin/simpleui/layui/images/face/61.gif | Bin 0 -> 2495 bytes .../admin/simpleui/layui/images/face/62.gif | Bin 0 -> 2017 bytes .../admin/simpleui/layui/images/face/63.gif | Bin 0 -> 5871 bytes .../admin/simpleui/layui/images/face/64.gif | Bin 0 -> 6448 bytes .../admin/simpleui/layui/images/face/65.gif | Bin 0 -> 3576 bytes .../admin/simpleui/layui/images/face/66.gif | Bin 0 -> 3029 bytes .../admin/simpleui/layui/images/face/67.gif | Bin 0 -> 2701 bytes .../admin/simpleui/layui/images/face/68.gif | Bin 0 -> 1424 bytes .../admin/simpleui/layui/images/face/69.gif | Bin 0 -> 2431 bytes static/admin/simpleui/layui/images/face/7.gif | Bin 0 -> 3398 bytes .../admin/simpleui/layui/images/face/70.gif | Bin 0 -> 4590 bytes .../admin/simpleui/layui/images/face/71.gif | Bin 0 -> 5304 bytes static/admin/simpleui/layui/images/face/8.gif | Bin 0 -> 4050 bytes static/admin/simpleui/layui/images/face/9.gif | Bin 0 -> 4221 bytes .../simpleui/layui/lay/modules/carousel.js | 2 + .../admin/simpleui/layui/lay/modules/code.js | 2 + .../simpleui/layui/lay/modules/element.js | 2 + .../admin/simpleui/layui/lay/modules/flow.js | 2 + .../admin/simpleui/layui/lay/modules/form.js | 2 + .../simpleui/layui/lay/modules/jquery.js | 5 + .../simpleui/layui/lay/modules/laydate.js | 2 + .../simpleui/layui/lay/modules/layedit.js | 2 + .../admin/simpleui/layui/lay/modules/layer.js | 2 + .../simpleui/layui/lay/modules/laypage.js | 2 + .../simpleui/layui/lay/modules/laytpl.js | 2 + .../simpleui/layui/lay/modules/mobile.js | 2 + .../admin/simpleui/layui/lay/modules/table.js | 2 + .../admin/simpleui/layui/lay/modules/tree.js | 2 + .../simpleui/layui/lay/modules/upload.js | 2 + .../admin/simpleui/layui/lay/modules/util.js | 2 + static/admin/simpleui/layui/layui.all.js | 5 + static/admin/simpleui/layui/layui.js | 2 + static/admin/simpleui/static/css/style.css | 611 + static/admin/simpleui/static/image/bg.png | Bin 0 -> 5932 bytes static/admin/simpleui/static/image/code.png | Bin 0 -> 2108 bytes static/admin/simpleui/static/image/v.png | Bin 0 -> 830 bytes static/admin/simpleui/static/image/wx.png | Bin 0 -> 39482 bytes static/admin/simpleui/static/image/zfb.png | Bin 0 -> 25040 bytes static/admin/simpleui/static/js/vip_comm.js | 325 + static/admin/simpleui/static/js/vip_nav.js | 73 + static/admin/simpleui/static/js/vip_tab.js | 29 + static/admin/simpleui/static/js/vip_table.js | 115 + 305 files changed, 40392 insertions(+) create mode 100644 static/admin/css/autocomplete.css create mode 100644 static/admin/css/base.css create mode 100644 static/admin/css/changelists.css create mode 100644 static/admin/css/dashboard.css create mode 100644 static/admin/css/fonts.css create mode 100644 static/admin/css/forms.css create mode 100644 static/admin/css/login.css create mode 100644 static/admin/css/responsive.css create mode 100644 static/admin/css/responsive_rtl.css create mode 100644 static/admin/css/rtl.css create mode 100644 static/admin/css/ui.css create mode 100644 static/admin/css/vendor/select2/LICENSE-SELECT2.md create mode 100644 static/admin/css/vendor/select2/select2.css create mode 100644 static/admin/css/vendor/select2/select2.min.css create mode 100644 static/admin/css/widgets.css create mode 100644 static/admin/fonts/LICENSE.txt create mode 100644 static/admin/fonts/README.txt create mode 100644 static/admin/fonts/Roboto-Bold-webfont.woff create mode 100644 static/admin/fonts/Roboto-Light-webfont.woff create mode 100644 static/admin/fonts/Roboto-Regular-webfont.woff create mode 100644 static/admin/img/LICENSE create mode 100644 static/admin/img/README.txt create mode 100644 static/admin/img/calendar-icons.svg create mode 100644 static/admin/img/gis/move_vertex_off.svg create mode 100644 static/admin/img/gis/move_vertex_on.svg create mode 100644 static/admin/img/icon-addlink.svg create mode 100644 static/admin/img/icon-alert.svg create mode 100644 static/admin/img/icon-calendar.svg create mode 100644 static/admin/img/icon-changelink.svg create mode 100644 static/admin/img/icon-clock.svg create mode 100644 static/admin/img/icon-deletelink.svg create mode 100644 static/admin/img/icon-no.svg create mode 100644 static/admin/img/icon-unknown-alt.svg create mode 100644 static/admin/img/icon-unknown.svg create mode 100644 static/admin/img/icon-yes.svg create mode 100644 static/admin/img/inline-delete.svg create mode 100644 static/admin/img/search.svg create mode 100644 static/admin/img/selector-icons.svg create mode 100644 static/admin/img/sorting-icons.svg create mode 100644 static/admin/img/tooltag-add.svg create mode 100644 static/admin/img/tooltag-arrowright.svg create mode 100644 static/admin/js/SelectBox.js create mode 100644 static/admin/js/SelectFilter2.js create mode 100644 static/admin/js/actions.js create mode 100644 static/admin/js/actions.min.js create mode 100644 static/admin/js/admin/DateTimeShortcuts.js create mode 100644 static/admin/js/admin/RelatedObjectLookups.js create mode 100644 static/admin/js/autocomplete.js create mode 100644 static/admin/js/calendar.js create mode 100644 static/admin/js/cancel.js create mode 100644 static/admin/js/change_form.js create mode 100644 static/admin/js/collapse.js create mode 100644 static/admin/js/collapse.min.js create mode 100644 static/admin/js/core.js create mode 100644 static/admin/js/inlines.js create mode 100644 static/admin/js/inlines.min.js create mode 100644 static/admin/js/jquery.init.js create mode 100644 static/admin/js/popup_response.js create mode 100644 static/admin/js/prepopulate.js create mode 100644 static/admin/js/prepopulate.min.js create mode 100644 static/admin/js/prepopulate_init.js create mode 100644 static/admin/js/timeparse.js create mode 100644 static/admin/js/urlify.js create mode 100644 static/admin/js/vendor/jquery/LICENSE-JQUERY.txt create mode 100644 static/admin/js/vendor/jquery/jquery.js create mode 100644 static/admin/js/vendor/jquery/jquery.min.js create mode 100644 static/admin/js/vendor/select2/LICENSE-SELECT2.md create mode 100644 static/admin/js/vendor/select2/i18n/ar.js create mode 100644 static/admin/js/vendor/select2/i18n/az.js create mode 100644 static/admin/js/vendor/select2/i18n/bg.js create mode 100644 static/admin/js/vendor/select2/i18n/ca.js create mode 100644 static/admin/js/vendor/select2/i18n/cs.js create mode 100644 static/admin/js/vendor/select2/i18n/da.js create mode 100644 static/admin/js/vendor/select2/i18n/de.js create mode 100644 static/admin/js/vendor/select2/i18n/el.js create mode 100644 static/admin/js/vendor/select2/i18n/en.js create mode 100644 static/admin/js/vendor/select2/i18n/es.js create mode 100644 static/admin/js/vendor/select2/i18n/et.js create mode 100644 static/admin/js/vendor/select2/i18n/eu.js create mode 100644 static/admin/js/vendor/select2/i18n/fa.js create mode 100644 static/admin/js/vendor/select2/i18n/fi.js create mode 100644 static/admin/js/vendor/select2/i18n/fr.js create mode 100644 static/admin/js/vendor/select2/i18n/gl.js create mode 100644 static/admin/js/vendor/select2/i18n/he.js create mode 100644 static/admin/js/vendor/select2/i18n/hi.js create mode 100644 static/admin/js/vendor/select2/i18n/hr.js create mode 100644 static/admin/js/vendor/select2/i18n/hu.js create mode 100644 static/admin/js/vendor/select2/i18n/id.js create mode 100644 static/admin/js/vendor/select2/i18n/is.js create mode 100644 static/admin/js/vendor/select2/i18n/it.js create mode 100644 static/admin/js/vendor/select2/i18n/ja.js create mode 100644 static/admin/js/vendor/select2/i18n/km.js create mode 100644 static/admin/js/vendor/select2/i18n/ko.js create mode 100644 static/admin/js/vendor/select2/i18n/lt.js create mode 100644 static/admin/js/vendor/select2/i18n/lv.js create mode 100644 static/admin/js/vendor/select2/i18n/mk.js create mode 100644 static/admin/js/vendor/select2/i18n/ms.js create mode 100644 static/admin/js/vendor/select2/i18n/nb.js create mode 100644 static/admin/js/vendor/select2/i18n/nl.js create mode 100644 static/admin/js/vendor/select2/i18n/pl.js create mode 100644 static/admin/js/vendor/select2/i18n/pt-BR.js create mode 100644 static/admin/js/vendor/select2/i18n/pt.js create mode 100644 static/admin/js/vendor/select2/i18n/ro.js create mode 100644 static/admin/js/vendor/select2/i18n/ru.js create mode 100644 static/admin/js/vendor/select2/i18n/sk.js create mode 100644 static/admin/js/vendor/select2/i18n/sr-Cyrl.js create mode 100644 static/admin/js/vendor/select2/i18n/sr.js create mode 100644 static/admin/js/vendor/select2/i18n/sv.js create mode 100644 static/admin/js/vendor/select2/i18n/th.js create mode 100644 static/admin/js/vendor/select2/i18n/tr.js create mode 100644 static/admin/js/vendor/select2/i18n/uk.js create mode 100644 static/admin/js/vendor/select2/i18n/vi.js create mode 100644 static/admin/js/vendor/select2/i18n/zh-CN.js create mode 100644 static/admin/js/vendor/select2/i18n/zh-TW.js create mode 100644 static/admin/js/vendor/select2/select2.full.js create mode 100644 static/admin/js/vendor/select2/select2.full.min.js create mode 100644 static/admin/js/vendor/xregexp/LICENSE-XREGEXP.txt create mode 100644 static/admin/js/vendor/xregexp/xregexp.js create mode 100644 static/admin/js/vendor/xregexp/xregexp.min.js create mode 100644 static/admin/simpleui-x/css/base.css create mode 100644 static/admin/simpleui-x/css/index.css create mode 100644 static/admin/simpleui-x/css/login.css create mode 100644 static/admin/simpleui-x/fontawesome-free-5.8.1-web/css/all.min.css create mode 100644 static/admin/simpleui-x/fontawesome-free-5.8.1-web/webfonts/fa-brands-400.eot create mode 100644 static/admin/simpleui-x/fontawesome-free-5.8.1-web/webfonts/fa-brands-400.svg create mode 100644 static/admin/simpleui-x/fontawesome-free-5.8.1-web/webfonts/fa-brands-400.ttf create mode 100644 static/admin/simpleui-x/fontawesome-free-5.8.1-web/webfonts/fa-brands-400.woff create mode 100644 static/admin/simpleui-x/fontawesome-free-5.8.1-web/webfonts/fa-brands-400.woff2 create mode 100644 static/admin/simpleui-x/fontawesome-free-5.8.1-web/webfonts/fa-regular-400.eot create mode 100644 static/admin/simpleui-x/fontawesome-free-5.8.1-web/webfonts/fa-regular-400.svg create mode 100644 static/admin/simpleui-x/fontawesome-free-5.8.1-web/webfonts/fa-regular-400.ttf create mode 100644 static/admin/simpleui-x/fontawesome-free-5.8.1-web/webfonts/fa-regular-400.woff create mode 100644 static/admin/simpleui-x/fontawesome-free-5.8.1-web/webfonts/fa-regular-400.woff2 create mode 100644 static/admin/simpleui-x/fontawesome-free-5.8.1-web/webfonts/fa-solid-900.eot create mode 100644 static/admin/simpleui-x/fontawesome-free-5.8.1-web/webfonts/fa-solid-900.svg create mode 100644 static/admin/simpleui-x/fontawesome-free-5.8.1-web/webfonts/fa-solid-900.ttf create mode 100644 static/admin/simpleui-x/fontawesome-free-5.8.1-web/webfonts/fa-solid-900.woff create mode 100644 static/admin/simpleui-x/fontawesome-free-5.8.1-web/webfonts/fa-solid-900.woff2 create mode 100644 static/admin/simpleui-x/img/favicon.png create mode 100644 static/admin/simpleui-x/img/logo.png create mode 100644 static/admin/simpleui-x/js/cookie.js create mode 100644 static/admin/simpleui-x/js/index.js create mode 100644 static/admin/simpleui-x/js/language.js create mode 100644 static/admin/simpleui-x/js/login.js create mode 100644 static/admin/simpleui-x/locale/en-us.js create mode 100644 static/admin/simpleui-x/locale/zh-hans.js create mode 100644 static/admin/simpleui-x/theme/admin.lte.css create mode 100644 static/admin/simpleui-x/theme/admin.lte.css.map create mode 100644 static/admin/simpleui-x/theme/admin.lte.less create mode 100644 static/admin/simpleui-x/theme/aircraft.css create mode 100644 static/admin/simpleui-x/theme/aircraft.css.map create mode 100644 static/admin/simpleui-x/theme/aircraft.less create mode 100644 static/admin/simpleui-x/theme/ant.design.css create mode 100644 static/admin/simpleui-x/theme/ant.design.css.map create mode 100644 static/admin/simpleui-x/theme/ant.design.less create mode 100644 static/admin/simpleui-x/theme/base.less create mode 100644 static/admin/simpleui-x/theme/black.css create mode 100644 static/admin/simpleui-x/theme/black.css.map create mode 100644 static/admin/simpleui-x/theme/black.less create mode 100644 static/admin/simpleui-x/theme/dark.green.css create mode 100644 static/admin/simpleui-x/theme/dark.green.css.map create mode 100644 static/admin/simpleui-x/theme/dark.green.less create mode 100644 static/admin/simpleui-x/theme/element.css create mode 100644 static/admin/simpleui-x/theme/element.css.map create mode 100644 static/admin/simpleui-x/theme/element.less create mode 100644 static/admin/simpleui-x/theme/gray.css create mode 100644 static/admin/simpleui-x/theme/gray.css.map create mode 100644 static/admin/simpleui-x/theme/gray.less create mode 100644 static/admin/simpleui-x/theme/green.css create mode 100644 static/admin/simpleui-x/theme/green.css.map create mode 100644 static/admin/simpleui-x/theme/green.less create mode 100644 static/admin/simpleui-x/theme/highdmin.css create mode 100644 static/admin/simpleui-x/theme/highdmin.css.map create mode 100644 static/admin/simpleui-x/theme/highdmin.less create mode 100644 static/admin/simpleui-x/theme/layui.css create mode 100644 static/admin/simpleui-x/theme/layui.css.map create mode 100644 static/admin/simpleui-x/theme/layui.less create mode 100644 static/admin/simpleui-x/theme/light.css create mode 100644 static/admin/simpleui-x/theme/light.css.map create mode 100644 static/admin/simpleui-x/theme/light.less create mode 100644 static/admin/simpleui-x/theme/orange.css create mode 100644 static/admin/simpleui-x/theme/orange.css.map create mode 100644 static/admin/simpleui-x/theme/orange.less create mode 100644 static/admin/simpleui-x/theme/purple.css create mode 100644 static/admin/simpleui-x/theme/purple.css.map create mode 100644 static/admin/simpleui-x/theme/purple.less create mode 100644 static/admin/simpleui-x/theme/simpleui.css create mode 100644 static/admin/simpleui-x/theme/simpleui.css.map create mode 100644 static/admin/simpleui-x/theme/simpleui.less create mode 100644 static/admin/simpleui-x/theme/theme.js create mode 100644 static/admin/simpleui/echarts/echarts.min.js create mode 100644 static/admin/simpleui/layui/css/layui.css create mode 100644 static/admin/simpleui/layui/css/layui.mobile.css create mode 100644 static/admin/simpleui/layui/css/modules/code.css create mode 100644 static/admin/simpleui/layui/css/modules/laydate/default/laydate.css create mode 100644 static/admin/simpleui/layui/css/modules/layer/default/icon-ext.png create mode 100644 static/admin/simpleui/layui/css/modules/layer/default/icon.png create mode 100644 static/admin/simpleui/layui/css/modules/layer/default/layer.css create mode 100644 static/admin/simpleui/layui/css/modules/layer/default/loading-0.gif create mode 100644 static/admin/simpleui/layui/css/modules/layer/default/loading-1.gif create mode 100644 static/admin/simpleui/layui/css/modules/layer/default/loading-2.gif create mode 100644 static/admin/simpleui/layui/font/iconfont.eot create mode 100644 static/admin/simpleui/layui/font/iconfont.svg create mode 100644 static/admin/simpleui/layui/font/iconfont.ttf create mode 100644 static/admin/simpleui/layui/font/iconfont.woff create mode 100644 static/admin/simpleui/layui/images/face/0.gif create mode 100644 static/admin/simpleui/layui/images/face/1.gif create mode 100644 static/admin/simpleui/layui/images/face/10.gif create mode 100644 static/admin/simpleui/layui/images/face/11.gif create mode 100644 static/admin/simpleui/layui/images/face/12.gif create mode 100644 static/admin/simpleui/layui/images/face/13.gif create mode 100644 static/admin/simpleui/layui/images/face/14.gif create mode 100644 static/admin/simpleui/layui/images/face/15.gif create mode 100644 static/admin/simpleui/layui/images/face/16.gif create mode 100644 static/admin/simpleui/layui/images/face/17.gif create mode 100644 static/admin/simpleui/layui/images/face/18.gif create mode 100644 static/admin/simpleui/layui/images/face/19.gif create mode 100644 static/admin/simpleui/layui/images/face/2.gif create mode 100644 static/admin/simpleui/layui/images/face/20.gif create mode 100644 static/admin/simpleui/layui/images/face/21.gif create mode 100644 static/admin/simpleui/layui/images/face/22.gif create mode 100644 static/admin/simpleui/layui/images/face/23.gif create mode 100644 static/admin/simpleui/layui/images/face/24.gif create mode 100644 static/admin/simpleui/layui/images/face/25.gif create mode 100644 static/admin/simpleui/layui/images/face/26.gif create mode 100644 static/admin/simpleui/layui/images/face/27.gif create mode 100644 static/admin/simpleui/layui/images/face/28.gif create mode 100644 static/admin/simpleui/layui/images/face/29.gif create mode 100644 static/admin/simpleui/layui/images/face/3.gif create mode 100644 static/admin/simpleui/layui/images/face/30.gif create mode 100644 static/admin/simpleui/layui/images/face/31.gif create mode 100644 static/admin/simpleui/layui/images/face/32.gif create mode 100644 static/admin/simpleui/layui/images/face/33.gif create mode 100644 static/admin/simpleui/layui/images/face/34.gif create mode 100644 static/admin/simpleui/layui/images/face/35.gif create mode 100644 static/admin/simpleui/layui/images/face/36.gif create mode 100644 static/admin/simpleui/layui/images/face/37.gif create mode 100644 static/admin/simpleui/layui/images/face/38.gif create mode 100644 static/admin/simpleui/layui/images/face/39.gif create mode 100644 static/admin/simpleui/layui/images/face/4.gif create mode 100644 static/admin/simpleui/layui/images/face/40.gif create mode 100644 static/admin/simpleui/layui/images/face/41.gif create mode 100644 static/admin/simpleui/layui/images/face/42.gif create mode 100644 static/admin/simpleui/layui/images/face/43.gif create mode 100644 static/admin/simpleui/layui/images/face/44.gif create mode 100644 static/admin/simpleui/layui/images/face/45.gif create mode 100644 static/admin/simpleui/layui/images/face/46.gif create mode 100644 static/admin/simpleui/layui/images/face/47.gif create mode 100644 static/admin/simpleui/layui/images/face/48.gif create mode 100644 static/admin/simpleui/layui/images/face/49.gif create mode 100644 static/admin/simpleui/layui/images/face/5.gif create mode 100644 static/admin/simpleui/layui/images/face/50.gif create mode 100644 static/admin/simpleui/layui/images/face/51.gif create mode 100644 static/admin/simpleui/layui/images/face/52.gif create mode 100644 static/admin/simpleui/layui/images/face/53.gif create mode 100644 static/admin/simpleui/layui/images/face/54.gif create mode 100644 static/admin/simpleui/layui/images/face/55.gif create mode 100644 static/admin/simpleui/layui/images/face/56.gif create mode 100644 static/admin/simpleui/layui/images/face/57.gif create mode 100644 static/admin/simpleui/layui/images/face/58.gif create mode 100644 static/admin/simpleui/layui/images/face/59.gif create mode 100644 static/admin/simpleui/layui/images/face/6.gif create mode 100644 static/admin/simpleui/layui/images/face/60.gif create mode 100644 static/admin/simpleui/layui/images/face/61.gif create mode 100644 static/admin/simpleui/layui/images/face/62.gif create mode 100644 static/admin/simpleui/layui/images/face/63.gif create mode 100644 static/admin/simpleui/layui/images/face/64.gif create mode 100644 static/admin/simpleui/layui/images/face/65.gif create mode 100644 static/admin/simpleui/layui/images/face/66.gif create mode 100644 static/admin/simpleui/layui/images/face/67.gif create mode 100644 static/admin/simpleui/layui/images/face/68.gif create mode 100644 static/admin/simpleui/layui/images/face/69.gif create mode 100644 static/admin/simpleui/layui/images/face/7.gif create mode 100644 static/admin/simpleui/layui/images/face/70.gif create mode 100644 static/admin/simpleui/layui/images/face/71.gif create mode 100644 static/admin/simpleui/layui/images/face/8.gif create mode 100644 static/admin/simpleui/layui/images/face/9.gif create mode 100644 static/admin/simpleui/layui/lay/modules/carousel.js create mode 100644 static/admin/simpleui/layui/lay/modules/code.js create mode 100644 static/admin/simpleui/layui/lay/modules/element.js create mode 100644 static/admin/simpleui/layui/lay/modules/flow.js create mode 100644 static/admin/simpleui/layui/lay/modules/form.js create mode 100644 static/admin/simpleui/layui/lay/modules/jquery.js create mode 100644 static/admin/simpleui/layui/lay/modules/laydate.js create mode 100644 static/admin/simpleui/layui/lay/modules/layedit.js create mode 100644 static/admin/simpleui/layui/lay/modules/layer.js create mode 100644 static/admin/simpleui/layui/lay/modules/laypage.js create mode 100644 static/admin/simpleui/layui/lay/modules/laytpl.js create mode 100644 static/admin/simpleui/layui/lay/modules/mobile.js create mode 100644 static/admin/simpleui/layui/lay/modules/table.js create mode 100644 static/admin/simpleui/layui/lay/modules/tree.js create mode 100644 static/admin/simpleui/layui/lay/modules/upload.js create mode 100644 static/admin/simpleui/layui/lay/modules/util.js create mode 100644 static/admin/simpleui/layui/layui.all.js create mode 100644 static/admin/simpleui/layui/layui.js create mode 100644 static/admin/simpleui/static/css/style.css create mode 100644 static/admin/simpleui/static/image/bg.png create mode 100644 static/admin/simpleui/static/image/code.png create mode 100644 static/admin/simpleui/static/image/v.png create mode 100644 static/admin/simpleui/static/image/wx.png create mode 100644 static/admin/simpleui/static/image/zfb.png create mode 100644 static/admin/simpleui/static/js/vip_comm.js create mode 100644 static/admin/simpleui/static/js/vip_nav.js create mode 100644 static/admin/simpleui/static/js/vip_tab.js create mode 100644 static/admin/simpleui/static/js/vip_table.js diff --git a/static/admin/css/autocomplete.css b/static/admin/css/autocomplete.css new file mode 100644 index 0000000..3ef95d1 --- /dev/null +++ b/static/admin/css/autocomplete.css @@ -0,0 +1,260 @@ +select.admin-autocomplete { + width: 20em; +} + +.select2-container--admin-autocomplete.select2-container { + min-height: 30px; +} + +.select2-container--admin-autocomplete .select2-selection--single, +.select2-container--admin-autocomplete .select2-selection--multiple { + min-height: 30px; + padding: 0; +} + +.select2-container--admin-autocomplete.select2-container--focus .select2-selection, +.select2-container--admin-autocomplete.select2-container--open .select2-selection { + border-color: #999; + min-height: 30px; +} + +.select2-container--admin-autocomplete.select2-container--focus .select2-selection.select2-selection--single, +.select2-container--admin-autocomplete.select2-container--open .select2-selection.select2-selection--single { + padding: 0; +} + +.select2-container--admin-autocomplete.select2-container--focus .select2-selection.select2-selection--multiple, +.select2-container--admin-autocomplete.select2-container--open .select2-selection.select2-selection--multiple { + padding: 0; +} + +.select2-container--admin-autocomplete .select2-selection--single { + background-color: #fff; + border: 1px solid #ccc; + border-radius: 4px; +} + +.select2-container--admin-autocomplete .select2-selection--single .select2-selection__rendered { + color: #444; + line-height: 30px; +} + +.select2-container--admin-autocomplete .select2-selection--single .select2-selection__clear { + cursor: pointer; + float: right; + font-weight: bold; +} + +.select2-container--admin-autocomplete .select2-selection--single .select2-selection__placeholder { + color: #999; +} + +.select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow { + height: 26px; + position: absolute; + top: 1px; + right: 1px; + width: 20px; +} + +.select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow b { + border-color: #888 transparent transparent transparent; + border-style: solid; + border-width: 5px 4px 0 4px; + height: 0; + left: 50%; + margin-left: -4px; + margin-top: -2px; + position: absolute; + top: 50%; + width: 0; +} + +.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--single .select2-selection__clear { + float: left; +} + +.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--single .select2-selection__arrow { + left: 1px; + right: auto; +} + +.select2-container--admin-autocomplete.select2-container--disabled .select2-selection--single { + background-color: #eee; + cursor: default; +} + +.select2-container--admin-autocomplete.select2-container--disabled .select2-selection--single .select2-selection__clear { + display: none; +} + +.select2-container--admin-autocomplete.select2-container--open .select2-selection--single .select2-selection__arrow b { + border-color: transparent transparent #888 transparent; + border-width: 0 4px 5px 4px; +} + +.select2-container--admin-autocomplete .select2-selection--multiple { + background-color: white; + border: 1px solid #ccc; + border-radius: 4px; + cursor: text; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__rendered { + box-sizing: border-box; + list-style: none; + margin: 0; + padding: 0 5px; + width: 100%; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__rendered li { + list-style: none; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__placeholder { + color: #999; + margin-top: 5px; + float: left; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__clear { + cursor: pointer; + float: right; + font-weight: bold; + margin: 5px; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice { + background-color: #e4e4e4; + border: 1px solid #ccc; + border-radius: 4px; + cursor: default; + float: left; + margin-right: 5px; + margin-top: 5px; + padding: 0 5px; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice__remove { + color: #999; + cursor: pointer; + display: inline-block; + font-weight: bold; + margin-right: 2px; +} + +.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice__remove:hover { + color: #333; +} + +.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-search--inline { + float: right; +} + +.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice { + margin-left: 5px; + margin-right: auto; +} + +.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { + margin-left: 2px; + margin-right: auto; +} + +.select2-container--admin-autocomplete.select2-container--focus .select2-selection--multiple { + border: solid #999 1px; + outline: 0; +} + +.select2-container--admin-autocomplete.select2-container--disabled .select2-selection--multiple { + background-color: #eee; + cursor: default; +} + +.select2-container--admin-autocomplete.select2-container--disabled .select2-selection__choice__remove { + display: none; +} + +.select2-container--admin-autocomplete.select2-container--open.select2-container--above .select2-selection--single, .select2-container--admin-autocomplete.select2-container--open.select2-container--above .select2-selection--multiple { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.select2-container--admin-autocomplete.select2-container--open.select2-container--below .select2-selection--single, .select2-container--admin-autocomplete.select2-container--open.select2-container--below .select2-selection--multiple { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +.select2-container--admin-autocomplete .select2-search--dropdown .select2-search__field { + border: 1px solid #ccc; +} + +.select2-container--admin-autocomplete .select2-search--inline .select2-search__field { + background: transparent; + border: none; + outline: 0; + box-shadow: none; + -webkit-appearance: textfield; +} + +.select2-container--admin-autocomplete .select2-results > .select2-results__options { + max-height: 200px; + overflow-y: auto; +} + +.select2-container--admin-autocomplete .select2-results__option[role=group] { + padding: 0; +} + +.select2-container--admin-autocomplete .select2-results__option[aria-disabled=true] { + color: #999; +} + +.select2-container--admin-autocomplete .select2-results__option[aria-selected=true] { + background-color: #ddd; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option { + padding-left: 1em; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__group { + padding-left: 0; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option { + margin-left: -1em; + padding-left: 2em; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -2em; + padding-left: 3em; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -3em; + padding-left: 4em; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -4em; + padding-left: 5em; +} + +.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -5em; + padding-left: 6em; +} + +.select2-container--admin-autocomplete .select2-results__option--highlighted[aria-selected] { + background-color: #79aec8; + color: white; +} + +.select2-container--admin-autocomplete .select2-results__group { + cursor: default; + display: block; + padding: 6px; +} diff --git a/static/admin/css/base.css b/static/admin/css/base.css new file mode 100644 index 0000000..ef3c52b --- /dev/null +++ b/static/admin/css/base.css @@ -0,0 +1,978 @@ +/* + DJANGO Admin styles +*/ + +@import url(fonts.css); + +body { + margin: 0; + padding: 0; + font-size: 14px; + font-family: "Roboto","Lucida Grande","DejaVu Sans","Bitstream Vera Sans",Verdana,Arial,sans-serif; + color: #333; + background: #fff; +} + +/* LINKS */ + +a:link, a:visited { + color: #447e9b; + text-decoration: none; +} + +a:focus, a:hover { + color: #036; +} + +a:focus { + text-decoration: underline; +} + +a img { + border: none; +} + +a.section:link, a.section:visited { + color: #fff; + text-decoration: none; +} + +a.section:focus, a.section:hover { + text-decoration: underline; +} + +/* GLOBAL DEFAULTS */ + +p, ol, ul, dl { + margin: .2em 0 .8em 0; +} + +p { + padding: 0; + line-height: 140%; +} + +h1,h2,h3,h4,h5 { + font-weight: bold; +} + +h1 { + margin: 0 0 20px; + font-weight: 300; + font-size: 20px; + color: #666; +} + +h2 { + font-size: 16px; + margin: 1em 0 .5em 0; +} + +h2.subhead { + font-weight: normal; + margin-top: 0; +} + +h3 { + font-size: 14px; + margin: .8em 0 .3em 0; + color: #666; + font-weight: bold; +} + +h4 { + font-size: 12px; + margin: 1em 0 .8em 0; + padding-bottom: 3px; +} + +h5 { + font-size: 10px; + margin: 1.5em 0 .5em 0; + color: #666; + text-transform: uppercase; + letter-spacing: 1px; +} + +ul li { + list-style-type: square; + padding: 1px 0; +} + +li ul { + margin-bottom: 0; +} + +li, dt, dd { + font-size: 13px; + line-height: 20px; +} + +dt { + font-weight: bold; + margin-top: 4px; +} + +dd { + margin-left: 0; +} + +form { + margin: 0; + padding: 0; +} + +fieldset { + margin: 0; + padding: 0; + border: none; + border-top: 1px solid #eee; +} + +blockquote { + font-size: 11px; + color: #777; + margin-left: 2px; + padding-left: 10px; + border-left: 5px solid #ddd; +} + +code, pre { + font-family: "Bitstream Vera Sans Mono", Monaco, "Courier New", Courier, monospace; + color: #666; + font-size: 12px; +} + +pre.literal-block { + margin: 10px; + background: #eee; + padding: 6px 8px; +} + +code strong { + color: #930; +} + +hr { + clear: both; + color: #eee; + background-color: #eee; + height: 1px; + border: none; + margin: 0; + padding: 0; + font-size: 1px; + line-height: 1px; +} + +/* TEXT STYLES & MODIFIERS */ + +.small { + font-size: 11px; +} + +.tiny { + font-size: 10px; +} + +p.tiny { + margin-top: -2px; +} + +.mini { + font-size: 10px; +} + +p.mini { + margin-top: -3px; +} + +.help, p.help, form p.help, div.help, form div.help, div.help li { + font-size: 11px; + color: #999; +} + +div.help ul { + margin-bottom: 0; +} + +.help-tooltip { + cursor: help; +} + +p img, h1 img, h2 img, h3 img, h4 img, td img { + vertical-align: middle; +} + +.quiet, a.quiet:link, a.quiet:visited { + color: #999; + font-weight: normal; +} + +.float-right { + float: right; +} + +.float-left { + float: left; +} + +.clear { + clear: both; +} + +.align-left { + text-align: left; +} + +.align-right { + text-align: right; +} + +.example { + margin: 10px 0; + padding: 5px 10px; + background: #efefef; +} + +.nowrap { + white-space: nowrap; +} + +/* TABLES */ + +table { + border-collapse: collapse; + border-color: #ccc; +} + +td, th { + font-size: 13px; + line-height: 16px; + border-bottom: 1px solid #eee; + vertical-align: top; + padding: 8px; + font-family: "Roboto", "Lucida Grande", Verdana, Arial, sans-serif; +} + +th { + font-weight: 600; + text-align: left; +} + +thead th, +tfoot td { + color: #666; + padding: 5px 10px; + font-size: 11px; + background: #fff; + border: none; + border-top: 1px solid #eee; + border-bottom: 1px solid #eee; +} + +tfoot td { + border-bottom: none; + border-top: 1px solid #eee; +} + +thead th.required { + color: #000; +} + +tr.alt { + background: #f6f6f6; +} + +.row1 { + background: #fff; +} + +.row2 { + background: #f9f9f9; +} + +/* SORTABLE TABLES */ + +thead th { + padding: 5px 10px; + line-height: normal; + text-transform: uppercase; + background: #f6f6f6; +} + +thead th a:link, thead th a:visited { + color: #666; +} + +thead th.sorted { + background: #eee; +} + +thead th.sorted .text { + padding-right: 42px; +} + +table thead th .text span { + padding: 8px 10px; + display: block; +} + +table thead th .text a { + display: block; + cursor: pointer; + padding: 8px 10px; +} + +table thead th .text a:focus, table thead th .text a:hover { + background: #eee; +} + +thead th.sorted a.sortremove { + visibility: hidden; +} + +table thead th.sorted:hover a.sortremove { + visibility: visible; +} + +table thead th.sorted .sortoptions { + display: block; + padding: 9px 5px 0 5px; + float: right; + text-align: right; +} + +table thead th.sorted .sortpriority { + font-size: .8em; + min-width: 12px; + text-align: center; + vertical-align: 3px; + margin-left: 2px; + margin-right: 2px; +} + +table thead th.sorted .sortoptions a { + position: relative; + width: 14px; + height: 14px; + display: inline-block; + background: url(../img/sorting-icons.svg) 0 0 no-repeat; + background-size: 14px auto; +} + +table thead th.sorted .sortoptions a.sortremove { + background-position: 0 0; +} + +table thead th.sorted .sortoptions a.sortremove:after { + content: '\\'; + position: absolute; + top: -6px; + left: 3px; + font-weight: 200; + font-size: 18px; + color: #999; +} + +table thead th.sorted .sortoptions a.sortremove:focus:after, +table thead th.sorted .sortoptions a.sortremove:hover:after { + color: #447e9b; +} + +table thead th.sorted .sortoptions a.sortremove:focus, +table thead th.sorted .sortoptions a.sortremove:hover { + background-position: 0 -14px; +} + +table thead th.sorted .sortoptions a.ascending { + background-position: 0 -28px; +} + +table thead th.sorted .sortoptions a.ascending:focus, +table thead th.sorted .sortoptions a.ascending:hover { + background-position: 0 -42px; +} + +table thead th.sorted .sortoptions a.descending { + top: 1px; + background-position: 0 -56px; +} + +table thead th.sorted .sortoptions a.descending:focus, +table thead th.sorted .sortoptions a.descending:hover { + background-position: 0 -70px; +} + +/* FORM DEFAULTS */ + +input, textarea, select, .form-row p, form .button { + margin: 2px 0; + padding: 2px 3px; + vertical-align: middle; + font-family: "Roboto", "Lucida Grande", Verdana, Arial, sans-serif; + font-weight: normal; + font-size: 13px; +} +.form-row div.help { + padding: 2px 3px; +} + +textarea { + vertical-align: top; +} + +input[type=text], input[type=password], input[type=email], input[type=url], +input[type=number], input[type=tel], textarea, select, .vTextField { + border: 1px solid #ccc; + border-radius: 4px; + padding: 5px 6px; + margin-top: 0; +} + +input[type=text]:focus, input[type=password]:focus, input[type=email]:focus, +input[type=url]:focus, input[type=number]:focus, input[type=tel]:focus, +textarea:focus, select:focus, .vTextField:focus { + border-color: #409EFF; +} + +select { + height: 30px; +} + +select[multiple] { + min-height: 150px; +} + +/* FORM BUTTONS */ + +.button, input[type=submit], input[type=button], .submit-row input, a.button { + background: #79aec8; + padding: 10px 15px; + border: none; + border-radius: 4px; + color: #fff; + cursor: pointer; +} + +a.button { + padding: 4px 5px; +} + +.button:active, input[type=submit]:active, input[type=button]:active, +.button:focus, input[type=submit]:focus, input[type=button]:focus, +.button:hover, input[type=submit]:hover, input[type=button]:hover { + background: #609ab6; +} + +.button[disabled], input[type=submit][disabled], input[type=button][disabled] { + opacity: 0.4; +} + +.button.default, input[type=submit].default, .submit-row input.default { + float: right; + border: none; + font-weight: 400; + background: #417690; +} + +.button.default:active, input[type=submit].default:active, +.button.default:focus, input[type=submit].default:focus, +.button.default:hover, input[type=submit].default:hover { + background: #205067; +} + +.button[disabled].default, +input[type=submit][disabled].default, +input[type=button][disabled].default { + opacity: 0.4; +} + + +/* MODULES */ + +.module { + border: none; + margin-bottom: 30px; + background: #fff; +} + +.module p, .module ul, .module h3, .module h4, .module dl, .module pre { + padding-left: 10px; + padding-right: 10px; +} + +.module blockquote { + margin-left: 12px; +} + +.module ul, .module ol { + margin-left: 1.5em; +} + +.module h3 { + margin-top: .6em; +} + +.module h2, .module caption, .inline-group h2 { + margin: 0; + padding: 8px; + font-weight: 400; + font-size: 13px; + text-align: left; + background: #79aec8; + color: #fff; +} + +.module caption, +.inline-group h2 { + font-size: 12px; + letter-spacing: 0.5px; + text-transform: uppercase; +} + +.module table { + border-collapse: collapse; +} + +/* MESSAGES & ERRORS */ + +ul.messagelist { + padding: 0; + margin: 0; +} + +ul.messagelist li { + display: block; + font-weight: 400; + font-size: 13px; + padding: 10px 10px 10px 65px; + margin: 0 0 10px 0; + background: #dfd url(../img/icon-yes.svg) 40px 12px no-repeat; + background-size: 16px auto; + color: #333; +} + +ul.messagelist li.warning { + background: #ffc url(../img/icon-alert.svg) 40px 14px no-repeat; + background-size: 14px auto; +} + +ul.messagelist li.error { + background: #ffefef url(../img/icon-no.svg) 40px 12px no-repeat; + background-size: 16px auto; +} + +.errornote { + font-size: 14px; + font-weight: 700; + display: block; + padding: 10px 12px; + margin: 0 0 10px 0; + color: #ba2121; + border: 1px solid #ba2121; + border-radius: 4px; + background-color: #fff; + background-position: 5px 12px; +} + +ul.errorlist { + margin: 0 0 4px; + padding: 0; + color: #ba2121; + background: #fff; +} + +ul.errorlist li { + font-size: 13px; + display: block; + margin-bottom: 4px; +} + +ul.errorlist li:first-child { + margin-top: 0; +} + +ul.errorlist li a { + color: inherit; + text-decoration: underline; +} + +td ul.errorlist { + margin: 0; + padding: 0; +} + +td ul.errorlist li { + margin: 0; +} + +.form-row.errors { + margin: 0; + border: none; + border-bottom: 1px solid #eee; + background: none; +} + +.form-row.errors ul.errorlist li { + padding-left: 0; +} + +.errors input, .errors select, .errors textarea { + border: 1px solid #ba2121; +} + +div.system-message { + background: #ffc; + margin: 10px; + padding: 6px 8px; + font-size: .8em; +} + +div.system-message p.system-message-title { + padding: 4px 5px 4px 25px; + margin: 0; + color: #c11; + background: #ffefef url(../img/icon-no.svg) 5px 5px no-repeat; +} + +.description { + font-size: 12px; + padding: 5px 0 0 12px; +} + +/* BREADCRUMBS */ + +div.breadcrumbs { + background: #79aec8; + padding: 10px 40px; + border: none; + font-size: 14px; + color: #c4dce8; + text-align: left; +} + +div.breadcrumbs a { + color: #fff; +} + +div.breadcrumbs a:focus, div.breadcrumbs a:hover { + color: #c4dce8; +} + +/* ACTION ICONS */ + +.addlink { + padding-left: 16px; + background: url(../img/icon-addlink.svg) 0 1px no-repeat; +} + +.changelink, .inlinechangelink { + padding-left: 16px; + background: url(../img/icon-changelink.svg) 0 1px no-repeat; +} + +.deletelink { + padding-left: 16px; + background: url(../img/icon-deletelink.svg) 0 1px no-repeat; +} + +a.deletelink:link, a.deletelink:visited { + color: #CC3434; +} + +a.deletelink:focus, a.deletelink:hover { + color: #993333; + text-decoration: none; +} + +/* OBJECT TOOLS */ + +.object-tools { + font-size: 10px; + font-weight: bold; + padding-left: 0; + float: right; + position: relative; + margin-top: -30px; +} + +.form-row .object-tools { + margin-top: 5px; + margin-bottom: 5px; + float: none; + height: 2em; + padding-left: 3.5em; +} + +.object-tools li { + display: block; + float: left; + margin-left: 5px; + height: 16px; +} + +.object-tools a { + border-radius: 15px; +} + +.object-tools a:link, .object-tools a:visited { + display: block; + float: left; + padding: 3px 12px; + background: #999; + font-weight: 400; + font-size: 11px; + text-transform: uppercase; + letter-spacing: 0.5px; + color: #fff; +} + +.object-tools a:focus, .object-tools a:hover { + background-color: #417690; +} + +.object-tools a:focus{ + text-decoration: none; +} + +.object-tools a.viewsitelink, .object-tools a.golink,.object-tools a.addlink { + background-repeat: no-repeat; + background-position: right 7px center; + padding-right: 26px; +} + +.object-tools a.viewsitelink, .object-tools a.golink { + background-image: url(../img/tooltag-arrowright.svg); +} + +.object-tools a.addlink { + background-image: url(../img/tooltag-add.svg); +} + +/* OBJECT HISTORY */ + +table#change-history { + width: 100%; +} + +table#change-history tbody th { + width: 16em; +} + +/* PAGE STRUCTURE */ + +#container { + position: relative; + width: 100%; + min-width: 980px; + padding: 0; +} + +#content { + padding: 20px; +} + +.dashboard #content { + width: 600px; +} + +#content-main { + float: left; + width: 100%; +} + +#content-related { + float: right; + width: 260px; + position: relative; + margin-right: -300px; +} + +#footer { + clear: both; + padding: 10px; +} + +/* COLUMN TYPES */ + +.colMS { + margin-right: 300px; +} + +.colSM { + margin-left: 300px; +} + +.colSM #content-related { + float: left; + margin-right: 0; + margin-left: -300px; +} + +.colSM #content-main { + float: right; +} + +.popup .colM { + width: auto; +} + +/* HEADER */ + +#header { + width: auto; + height: 40px; + padding: 10px 40px; + background: #1b93e1; + line-height: 40px; + color: #ffc; + overflow: hidden; +} + +#header a:link, #header a:visited { + color: #fff; +} + +#header a:focus , #header a:hover { + text-decoration: underline; +} + +#branding { + float: left; +} + +#branding h1 { + padding: 0; + margin: 0 20px 0 0; + font-weight: 300; + font-size: 24px; + color: #f5dd5d; +} + +#branding h1, #branding h1 a:link, #branding h1 a:visited { + color: #FFF; +} + +#branding h2 { + padding: 0 10px; + font-size: 14px; + margin: -8px 0 8px 0; + font-weight: normal; + color: #ffc; +} + +#branding a:hover { + text-decoration: none; +} + +#user-tools { + float: right; + padding: 0; + margin: 0 0 0 20px; + font-weight: 300; + font-size: 11px; + letter-spacing: 0.5px; + text-transform: uppercase; + text-align: right; +} + +#user-tools a { + border-bottom: 1px solid rgba(255, 255, 255, 0.25); +} + +#user-tools a:focus, #user-tools a:hover { + text-decoration: none; + border-bottom-color: #79aec8; + color: #79aec8; +} + +/* SIDEBAR */ + +#content-related { + background: #f8f8f8; +} + +#content-related .module { + background: none; +} + +#content-related h3 { + font-size: 14px; + color: #666; + padding: 0 16px; + margin: 0 0 16px; +} + +#content-related h4 { + font-size: 13px; +} + +#content-related p { + padding-left: 16px; + padding-right: 16px; +} + +#content-related .actionlist { + padding: 0; + margin: 16px; +} + +#content-related .actionlist li { + line-height: 1.2; + margin-bottom: 10px; + padding-left: 18px; +} + +#content-related .module h2 { + background: none; + padding: 16px; + margin-bottom: 16px; + border-bottom: 1px solid #eaeaea; + font-size: 18px; + color: #333; +} + +.delete-confirmation form input[type="submit"] { + background: #ba2121; + border-radius: 4px; + padding: 10px 15px; + color: #fff; +} + +.delete-confirmation form input[type="submit"]:active, +.delete-confirmation form input[type="submit"]:focus, +.delete-confirmation form input[type="submit"]:hover { + background: #a41515; +} + +.delete-confirmation form .cancel-link { + display: inline-block; + vertical-align: middle; + height: 15px; + line-height: 15px; + background: #ddd; + border-radius: 4px; + padding: 10px 15px; + color: #333; + margin: 0 0 0 10px; +} + +.delete-confirmation form .cancel-link:active, +.delete-confirmation form .cancel-link:focus, +.delete-confirmation form .cancel-link:hover { + background: #ccc; +} + +/* POPUP */ +.popup #content { + padding: 20px; +} + +.popup #container { + min-width: 0; +} + +.popup #header { + padding: 10px 20px; +} diff --git a/static/admin/css/changelists.css b/static/admin/css/changelists.css new file mode 100644 index 0000000..51f23f6 --- /dev/null +++ b/static/admin/css/changelists.css @@ -0,0 +1,344 @@ +/* CHANGELISTS */ + +#changelist { + position: relative; + width: 100%; +} + +#changelist table { + width: 100%; +} + +.change-list .hiddenfields { display:none; } + +.change-list .filtered table { + border-right: none; +} + +.change-list .filtered { + min-height: 400px; +} + +.change-list .filtered .results, .change-list .filtered .paginator, +.filtered #toolbar, .filtered div.xfull { + /*margin-right: 280px;*/ + width: auto; +} + +.change-list .filtered table tbody th { + padding-right: 1em; +} + +#changelist-form .results { + overflow-x: auto; +} + +#changelist .toplinks { + border-bottom: 1px solid #ddd; +} + +#changelist .paginator { + color: #666; + border-bottom: 1px solid #eee; + background: #fff; + overflow: hidden; +} + +/* CHANGELIST TABLES */ + +#changelist table thead th { + padding: 0; + white-space: nowrap; + vertical-align: middle; +} + +#changelist table thead th.action-checkbox-column { + width: 1.5em; + text-align: center; +} + +#changelist table tbody td.action-checkbox { + text-align: center; +} + +#changelist table tfoot { + color: #666; +} + +/* TOOLBAR */ + +#changelist #toolbar { + padding: 8px 10px; + margin-bottom: 15px; + border-top: 1px solid #eee; + border-bottom: 1px solid #eee; + background: #f8f8f8; + color: #666; +} + +/*#changelist #toolbar form input {*/ +/* border-radius: 4px;*/ +/* font-size: 14px;*/ +/* padding: 5px;*/ +/* color: #333;*/ +/*}*/ + +/*#changelist #toolbar form #searchbar {*/ +/* height: 32px;*/ +/* border: 1px solid #ccc;*/ +/* padding: 2px 5px;*/ +/* margin: 0;*/ +/* vertical-align: top;*/ +/* font-size: 13px;*/ +/*}*/ + +/*#changelist #toolbar form #searchbar:focus {*/ +/* border-color: #999;*/ +/*}*/ + +/*#changelist #toolbar form input[type="submit"] {*/ +/* border: 1px solid #ccc;*/ +/* padding: 2px 10px;*/ +/* margin: 0;*/ +/* vertical-align: middle;*/ +/* background: #fff;*/ +/* box-shadow: 0 -15px 20px -10px rgba(0, 0, 0, 0.15) inset;*/ +/* cursor: pointer;*/ +/* color: #333;*/ +/*}*/ + +/*#changelist #toolbar form input[type="submit"]:focus,*/ +/*#changelist #toolbar form input[type="submit"]:hover {*/ +/* border-color: #999;*/ +/*}*/ + +#changelist #changelist-search img { + vertical-align: middle; + margin-right: 4px; +} + +/* FILTER COLUMN */ + +#changelist-filter { + position: absolute; + top: 0; + right: 0; + z-index: 1000; + width: 240px; + background: #f8f8f8; + border-left: none; + margin: 0; +} + +#changelist-filter h2 { + font-size: 14px; + text-transform: uppercase; + letter-spacing: 0.5px; + padding: 5px 15px; + margin-bottom: 12px; + border-bottom: none; +} + +#changelist-filter h3 { + font-weight: 400; + font-size: 14px; + padding: 0 15px; + margin-bottom: 10px; +} + +#changelist-filter ul { + margin: 5px 0; + padding: 0 15px 15px; + border-bottom: 1px solid #eaeaea; +} + +#changelist-filter ul:last-child { + border-bottom: none; + padding-bottom: none; +} + +#changelist-filter li { + list-style-type: none; + margin-left: 0; + padding-left: 0; +} + +#changelist-filter a { + display: block; + color: #999; + text-overflow: ellipsis; + overflow-x: hidden; +} + +#changelist-filter li.selected { + border-left: 5px solid #eaeaea; + padding-left: 10px; + margin-left: -15px; +} + +#changelist-filter li.selected a { + color: #5b80b2; +} + +#changelist-filter a:focus, #changelist-filter a:hover, +#changelist-filter li.selected a:focus, +#changelist-filter li.selected a:hover { + color: #036; +} + +/* DATE DRILLDOWN */ + +.change-list ul.toplinks { + display: block; + float: left; + padding: 0; + margin: 0; + width: 100%; +} + +.change-list ul.toplinks li { + padding: 3px 6px; + font-weight: bold; + list-style-type: none; + display: inline-block; +} + +.change-list ul.toplinks .date-back a { + color: #999; +} + +.change-list ul.toplinks .date-back a:focus, +.change-list ul.toplinks .date-back a:hover { + color: #036; +} + +/* PAGINATOR */ + +.paginator { + font-size: 13px; + padding-top: 10px; + padding-bottom: 10px; + line-height: 22px; + margin: 0; + border-top: 1px solid #ddd; +} + +.paginator a:link, .paginator a:visited { + padding: 2px 6px; + background: #79aec8; + text-decoration: none; + color: #fff; +} + +.paginator a.showall { + padding: 0; + border: none; + background: none; + color: #5b80b2; +} + +.paginator a.showall:focus, .paginator a.showall:hover { + background: none; + color: #036; +} + +.paginator .end { + margin-right: 6px; +} + +.paginator .this-page { + padding: 2px 6px; + font-weight: bold; + font-size: 13px; + vertical-align: top; +} + +.paginator a:focus, .paginator a:hover { + color: white; + background: #036; +} + +/* ACTIONS */ + +.filtered .actions { + margin-right: 280px; + border-right: none; +} + +#changelist table input { + margin: 0; + vertical-align: baseline; +} + +#changelist table tbody tr.selected { + background-color: #FFFFCC; +} + +#changelist .actions { + padding: 10px; + background: #fff; + border-top: none; + border-bottom: none; + line-height: 24px; + color: #999; +} + +#changelist .actions.selected { + background: #fffccf; + border-top: 1px solid #fffee8; + border-bottom: 1px solid #edecd6; +} + +#changelist .actions span.all, +#changelist .actions span.action-counter, +#changelist .actions span.clear, +#changelist .actions span.question { + font-size: 13px; + margin: 0 0.5em; + display: none; +} + +#changelist .actions:last-child { + border-bottom: none; +} + +#changelist .actions select { + vertical-align: top; + height: 24px; + background: none; + color: #000; + border: 1px solid #ccc; + border-radius: 4px; + font-size: 14px; + padding: 0 0 0 4px; + margin: 0; + margin-left: 10px; +} + +#changelist .actions select:focus { + border-color: #999; +} + +#changelist .actions label { + display: inline-block; + vertical-align: middle; + font-size: 13px; +} + +#changelist .actions .button { + font-size: 13px; + border: 1px solid #ccc; + border-radius: 4px; + background: #fff; + box-shadow: 0 -15px 20px -10px rgba(0, 0, 0, 0.15) inset; + cursor: pointer; + height: 24px; + line-height: 1; + padding: 4px 8px; + margin: 0; + color: #333; +} + +#changelist .actions .button:focus, #changelist .actions .button:hover { + border-color: #999; +} diff --git a/static/admin/css/dashboard.css b/static/admin/css/dashboard.css new file mode 100644 index 0000000..1560c7b --- /dev/null +++ b/static/admin/css/dashboard.css @@ -0,0 +1,27 @@ +/* DASHBOARD */ + +.dashboard .module table th { + width: 100%; +} + +.dashboard .module table td { + white-space: nowrap; +} + +.dashboard .module table td a { + display: block; + padding-right: .6em; +} + +/* RECENT ACTIONS MODULE */ + +.module ul.actionlist { + margin-left: 0; +} + +ul.actionlist li { + list-style-type: none; + overflow: hidden; + text-overflow: ellipsis; + -o-text-overflow: ellipsis; +} diff --git a/static/admin/css/fonts.css b/static/admin/css/fonts.css new file mode 100644 index 0000000..c837e01 --- /dev/null +++ b/static/admin/css/fonts.css @@ -0,0 +1,20 @@ +@font-face { + font-family: 'Roboto'; + src: url('../fonts/Roboto-Bold-webfont.woff'); + font-weight: 700; + font-style: normal; +} + +@font-face { + font-family: 'Roboto'; + src: url('../fonts/Roboto-Regular-webfont.woff'); + font-weight: 400; + font-style: normal; +} + +@font-face { + font-family: 'Roboto'; + src: url('../fonts/Roboto-Light-webfont.woff'); + font-weight: 300; + font-style: normal; +} diff --git a/static/admin/css/forms.css b/static/admin/css/forms.css new file mode 100644 index 0000000..77985d5 --- /dev/null +++ b/static/admin/css/forms.css @@ -0,0 +1,515 @@ +@import url('widgets.css'); + +/* FORM ROWS */ + +.form-row { + overflow: hidden; + padding: 10px; + font-size: 13px; + border-bottom: 1px solid #eee; +} + +.form-row img, .form-row input { + vertical-align: middle; +} + +.form-row label input[type="checkbox"] { + margin-top: 0; + vertical-align: 0; +} + +form .form-row p { + padding-left: 0; +} + +.hidden { + display: none; +} + +/* FORM LABELS */ + +label { + font-weight: normal; + color: #666; + font-size: 13px; +} + +.required label, label.required { + font-weight: bold; + color: #333; +} + +/* RADIO BUTTONS */ + +form ul.radiolist li { + list-style-type: none; +} + +form ul.radiolist label { + float: none; + display: inline; +} + +form ul.radiolist input[type="radio"] { + margin: -2px 4px 0 0; + padding: 0; +} + +form ul.inline { + margin-left: 0; + padding: 0; +} + +form ul.inline li { + float: left; + padding-right: 7px; +} + +/* ALIGNED FIELDSETS */ + +.aligned label { + display: block; + padding: 4px 10px 0 0; + float: left; + width: 160px; + word-wrap: break-word; + line-height: 1; +} + +.aligned label:not(.vCheckboxLabel):after { + content: ''; + display: inline-block; + vertical-align: middle; + height: 26px; +} + +.aligned label + p, .aligned label + div.help, .aligned label + div.readonly { + padding: 6px 0; + margin-top: 0; + margin-bottom: 0; + margin-left: 170px; +} + +.aligned ul label { + display: inline; + float: none; + width: auto; +} + +.aligned .form-row input { + margin-bottom: 0; +} + +.colMS .aligned .vLargeTextField, .colMS .aligned .vXMLLargeTextField { + width: 350px; +} + +form .aligned ul { + margin-left: 160px; + padding-left: 10px; +} + +form .aligned ul.radiolist { + display: inline-block; + margin: 0; + padding: 0; +} + +form .aligned p.help, +form .aligned div.help { + clear: left; + margin-top: 0; + margin-left: 160px; + padding-left: 10px; +} + +form .aligned label + p.help, +form .aligned label + div.help { + margin-left: 0; + padding-left: 0; +} + +form .aligned p.help:last-child, +form .aligned div.help:last-child { + margin-bottom: 0; + padding-bottom: 0; +} + +form .aligned input + p.help, +form .aligned textarea + p.help, +form .aligned select + p.help, +form .aligned input + div.help, +form .aligned textarea + div.help, +form .aligned select + div.help { + margin-left: 160px; + padding-left: 10px; +} + +form .aligned ul li { + list-style: none; +} + +form .aligned table p { + margin-left: 0; + padding-left: 0; +} + +.aligned .vCheckboxLabel { + float: none; + width: auto; + display: inline-block; + vertical-align: -3px; + padding: 0 0 5px 5px; +} + +.aligned .vCheckboxLabel + p.help, +.aligned .vCheckboxLabel + div.help { + margin-top: -4px; +} + +.colM .aligned .vLargeTextField, .colM .aligned .vXMLLargeTextField { + width: 610px; +} + +.checkbox-row p.help, +.checkbox-row div.help { + margin-left: 0; + padding-left: 0; +} + +fieldset .field-box { + float: left; + margin-right: 20px; +} + +/* WIDE FIELDSETS */ + +.wide label { + width: 200px; +} + +form .wide p, +form .wide input + p.help, +form .wide input + div.help { + margin-left: 200px; +} + +form .wide p.help, +form .wide div.help { + padding-left: 38px; +} + +form div.help ul { + padding-left: 0; + margin-left: 0; +} + +.colM fieldset.wide .vLargeTextField, .colM fieldset.wide .vXMLLargeTextField { + width: 450px; +} + +/* COLLAPSED FIELDSETS */ + +fieldset.collapsed * { + display: none; +} + +fieldset.collapsed h2, fieldset.collapsed { + display: block; +} + +fieldset.collapsed { + border: 1px solid #eee; + border-radius: 4px; + overflow: hidden; +} + +fieldset.collapsed h2 { + background: #f8f8f8; + color: #666; +} + +fieldset .collapse-toggle { + color: #fff; +} + +fieldset.collapsed .collapse-toggle { + background: transparent; + display: inline; + color: #447e9b; +} + +/* MONOSPACE TEXTAREAS */ + +fieldset.monospace textarea { + font-family: "Bitstream Vera Sans Mono", Monaco, "Courier New", Courier, monospace; +} + +/* SUBMIT ROW */ + +.submit-row { + padding: 12px 14px; + margin: 0 0 20px; + background: #f8f8f8; + border: 1px solid #eee; + border-radius: 4px; + text-align: right; + overflow: hidden; +} + +body.popup .submit-row { + overflow: auto; +} + +.submit-row input { + height: 35px; + line-height: 15px; + margin: 0 0 0 5px; +} + +.submit-row input.default { + margin: 0 0 0 8px; + text-transform: uppercase; +} + +.submit-row p { + margin: 0.3em; +} + +.submit-row p.deletelink-box { + float: left; + margin: 0; +} + +.submit-row a.deletelink { + display: block; + background: #ba2121; + border-radius: 4px; + padding: 10px 15px; + height: 15px; + line-height: 15px; + color: #fff; +} + +.submit-row a.deletelink:focus, +.submit-row a.deletelink:hover, +.submit-row a.deletelink:active { + background: #a41515; +} + +/* CUSTOM FORM FIELDS */ + +.vSelectMultipleField { + vertical-align: top; +} + +.vCheckboxField { + border: none; +} + +.vDateField, .vTimeField { + margin-right: 2px; + margin-bottom: 4px; +} + +.vDateField { + min-width: 6.85em; +} + +.vTimeField { + min-width: 4.7em; +} + +.vURLField { + width: 30em; +} + +.vLargeTextField, .vXMLLargeTextField { + width: 48em; +} + +.flatpages-flatpage #id_content { + height: 40.2em; +} + +.module table .vPositiveSmallIntegerField { + width: 2.2em; +} + +.vTextField { + width: 20em; +} + +.vIntegerField { + width: 5em; +} + +.vBigIntegerField { + width: 10em; +} + +.vForeignKeyRawIdAdminField { + width: 5em; +} + +/* INLINES */ + +.inline-group { + padding: 0; + margin: 0 0 30px; +} + +.inline-group thead th { + padding: 8px 10px; +} + +.inline-group .aligned label { + width: 160px; +} + +.inline-related { + position: relative; +} + +.inline-related h3 { + margin: 0; + color: #666; + padding: 5px; + font-size: 13px; + background: #f8f8f8; + border-top: 1px solid #eee; + border-bottom: 1px solid #eee; +} + +.inline-related h3 span.delete { + float: right; +} + +.inline-related h3 span.delete label { + margin-left: 2px; + font-size: 11px; +} + +.inline-related fieldset { + margin: 0; + background: #fff; + border: none; + width: 100%; +} + +.inline-related fieldset.module h3 { + margin: 0; + padding: 2px 5px 3px 5px; + font-size: 11px; + text-align: left; + font-weight: bold; + background: #bcd; + color: #fff; +} + +.inline-group .tabular fieldset.module { + border: none; +} + +.inline-related.tabular fieldset.module table { + width: 100%; +} + +.last-related fieldset { + border: none; +} + +.inline-group .tabular tr.has_original td { + padding-top: 2em; +} + +.inline-group .tabular tr td.original { + padding: 2px 0 0 0; + width: 0; + _position: relative; +} + +.inline-group .tabular th.original { + width: 0px; + padding: 0; +} + +.inline-group .tabular td.original p { + position: absolute; + left: 0; + height: 1.1em; + padding: 2px 9px; + overflow: hidden; + font-size: 9px; + font-weight: bold; + color: #666; + _width: 700px; +} + +.inline-group ul.tools { + padding: 0; + margin: 0; + list-style: none; +} + +.inline-group ul.tools li { + display: inline; + padding: 0 5px; +} + +.inline-group div.add-row, +.inline-group .tabular tr.add-row td { + color: #666; + background: #f8f8f8; + padding: 8px 10px; + border-bottom: 1px solid #eee; +} + +.inline-group .tabular tr.add-row td { + padding: 8px 10px; + border-bottom: 1px solid #eee; +} + +.inline-group ul.tools a.add, +.inline-group div.add-row a, +.inline-group .tabular tr.add-row td a { + background: url(../img/icon-addlink.svg) 0 1px no-repeat; + padding-left: 16px; + font-size: 12px; +} + +.empty-form { + display: none; +} + +/* RELATED FIELD ADD ONE / LOOKUP */ + +.add-another, .related-lookup { + margin-left: 5px; + display: inline-block; + vertical-align: middle; + background-repeat: no-repeat; + background-size: 14px; +} + +.add-another { + width: 16px; + height: 16px; + background-image: url(../img/icon-addlink.svg); +} + +.related-lookup { + width: 16px; + height: 16px; + background-image: url(../img/search.svg); +} + +form .related-widget-wrapper ul { + display: inline-block; + margin-left: 0; + padding-left: 0; +} + +.clearable-file-input input { + margin-top: 0; +} diff --git a/static/admin/css/login.css b/static/admin/css/login.css new file mode 100644 index 0000000..cab3bbf --- /dev/null +++ b/static/admin/css/login.css @@ -0,0 +1,78 @@ +/* LOGIN FORM */ + +body.login { + background: #f8f8f8; +} + +.login #header { + height: auto; + padding: 5px 16px; +} + +.login #header h1 { + font-size: 18px; +} + +.login #header h1 a { + color: #fff; +} + +.login #content { + padding: 20px 20px 0; +} + +.login #container { + background: #fff; + border: 1px solid #eaeaea; + border-radius: 4px; + overflow: hidden; + width: 28em; + min-width: 300px; + margin: 100px auto; +} + +.login #content-main { + width: 100%; +} + +.login .form-row { + padding: 4px 0; + float: left; + width: 100%; + border-bottom: none; +} + +.login .form-row label { + padding-right: 0.5em; + line-height: 2em; + font-size: 1em; + clear: both; + color: #333; +} + +.login .form-row #id_username, .login .form-row #id_password { + clear: both; + padding: 8px; + width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.login span.help { + font-size: 10px; + display: block; +} + +.login .submit-row { + clear: both; + padding: 1em 0 0 9.4em; + margin: 0; + border: none; + background: none; + text-align: left; +} + +.login .password-reset-link { + text-align: center; +} diff --git a/static/admin/css/responsive.css b/static/admin/css/responsive.css new file mode 100644 index 0000000..7460304 --- /dev/null +++ b/static/admin/css/responsive.css @@ -0,0 +1,990 @@ +/* Tablets */ + +input[type="submit"], button { + -webkit-appearance: none; + appearance: none; +} + +@media (max-width: 1024px) { + /* Basic */ + + html { + -webkit-text-size-adjust: 100%; + } + + td, th { + padding: 10px; + font-size: 14px; + } + + .small { + font-size: 12px; + } + + /* Layout */ + + #container { + min-width: 0; + } + + #content { + padding: 20px 30px 30px; + } + + div.breadcrumbs { + padding: 10px 30px; + } + + /* Header */ + + #header { + display: flex; + flex-direction: column; + padding: 15px 30px; + height: auto; + line-height: 1; + } + + #branding h1 { + margin: 0 0 8px; + font-size: 20px; + line-height: 1.2; + } + + #user-tools { + margin: 0; + font-weight: 400; + line-height: 1.85; + text-align: left; + } + + #user-tools a { + display: inline-block; + line-height: 1.4; + } + + /* Dashboard */ + + .dashboard #content { + width: auto; + } + + #content-related { + margin-right: -290px; + } + + .colSM #content-related { + margin-left: -290px; + } + + .colMS { + margin-right: 290px; + } + + .colSM { + margin-left: 290px; + } + + .dashboard .module table td a { + padding-right: 0; + } + + td .changelink, td .addlink { + font-size: 13px; + } + + /* Changelist */ + + #changelist #toolbar { + border: none; + padding: 15px; + } + + #changelist-search > div { + display: -webkit-flex; + display: flex; + -webkit-flex-wrap: wrap; + flex-wrap: wrap; + max-width: 480px; + } + + #changelist-search label { + line-height: 22px; + } + + #changelist #toolbar form #searchbar { + -webkit-flex: 1 0 auto; + flex: 1 0 auto; + width: 0; + height: 22px; + margin: 0 10px 0 6px; + } + + #changelist-search .quiet { + width: 100%; + margin: 5px 0 0 25px; + } + + #changelist .actions { + display: flex; + flex-wrap: wrap; + padding: 15px 0; + } + + #changelist .actions.selected { + border: none; + } + + #changelist .actions label { + display: flex; + } + + #changelist .actions select { + background: #fff; + } + + #changelist .actions .button { + min-width: 48px; + margin: 0 10px; + } + + #changelist .actions span.all, + #changelist .actions span.clear, + #changelist .actions span.question, + #changelist .actions span.action-counter { + font-size: 11px; + margin: 0 10px 0 0; + } + + #changelist-filter { + width: 200px; + } + + .change-list .filtered .results, + .change-list .filtered .paginator, + .filtered #toolbar, + .filtered .actions, + .filtered div.xfull { + margin-right: 230px; + } + + #changelist .paginator { + border-top-color: #eee; + } + + #changelist .results + .paginator { + border-top: none; + } + + /* Forms */ + + label { + font-size: 14px; + } + + .form-row input[type=text], + .form-row input[type=password], + .form-row input[type=email], + .form-row input[type=url], + .form-row input[type=tel], + .form-row input[type=number], + .form-row textarea, + .form-row select, + .form-row .vTextField { + box-sizing: border-box; + margin: 0; + padding: 6px 8px; + min-height: 36px; + font-size: 14px; + } + + .form-row select { + height: 36px; + } + + .form-row select[multiple] { + height: auto; + min-height: 0; + } + + fieldset .field-box { + float: none; + margin: 0 -10px; + padding: 0 10px; + } + + fieldset .field-box + .field-box { + margin-top: 10px; + padding-top: 10px; + border-top: 1px solid #eee; + } + + textarea { + max-width: 518px; + max-height: 120px; + } + + .aligned label { + padding-top: 6px; + } + + .aligned .add-another, + .aligned .related-lookup, + .aligned .datetimeshortcuts, + .aligned .related-lookup + strong { + align-self: center; + margin-left: 15px; + } + + form .aligned ul.radiolist { + margin-left: 2px; + } + + /* Related widget */ + + .related-widget-wrapper { + float: none; + } + + .related-widget-wrapper-link + .selector { + max-width: calc(100% - 30px); + margin-right: 15px; + } + + select + .related-widget-wrapper-link, + .related-widget-wrapper-link + .related-widget-wrapper-link { + margin-left: 10px; + } + + /* Selector */ + + .selector { + display: flex; + width: 100%; + } + + .selector .selector-filter { + display: flex; + align-items: center; + } + + .selector .selector-filter label { + margin: 0 8px 0 0; + } + + .selector .selector-filter input { + width: auto; + min-height: 0; + flex: 1 1; + } + + .selector-available, .selector-chosen { + width: auto; + flex: 1 1; + display: flex; + flex-direction: column; + } + + .selector select { + width: 100%; + flex: 1 0 auto; + margin-bottom: 5px; + } + + .selector ul.selector-chooser { + width: 26px; + height: 52px; + padding: 2px 0; + margin: auto 15px; + border-radius: 20px; + transform: translateY(-10px); + } + + .selector-add, .selector-remove { + width: 20px; + height: 20px; + background-size: 20px auto; + } + + .selector-add { + background-position: 0 -120px; + } + + .selector-remove { + background-position: 0 -80px; + } + + a.selector-chooseall, a.selector-clearall { + align-self: center; + } + + .stacked { + flex-direction: column; + max-width: 480px; + } + + .stacked > * { + flex: 0 1 auto; + } + + .stacked select { + margin-bottom: 0; + } + + .stacked .selector-available, .stacked .selector-chosen { + width: auto; + } + + .stacked ul.selector-chooser { + width: 52px; + height: 26px; + padding: 0 2px; + margin: 15px auto; + transform: none; + } + + .stacked .selector-chooser li { + padding: 3px; + } + + .stacked .selector-add, .stacked .selector-remove { + background-size: 20px auto; + } + + .stacked .selector-add { + background-position: 0 -40px; + } + + .stacked .active.selector-add { + background-position: 0 -60px; + } + + .stacked .selector-remove { + background-position: 0 0; + } + + .stacked .active.selector-remove { + background-position: 0 -20px; + } + + .help-tooltip, .selector .help-icon { + display: none; + } + + form .form-row p.datetime { + width: 100%; + } + + .datetime input { + width: 50%; + max-width: 120px; + } + + .datetime span { + font-size: 13px; + } + + .datetime .timezonewarning { + display: block; + font-size: 11px; + color: #999; + } + + .datetimeshortcuts { + color: #ccc; + } + + .inline-group { + overflow: auto; + } + + /* Messages */ + + ul.messagelist li { + padding-left: 55px; + background-position: 30px 12px; + } + + ul.messagelist li.error { + background-position: 30px 12px; + } + + ul.messagelist li.warning { + background-position: 30px 14px; + } + + /* Login */ + + .login #header { + padding: 15px 20px; + } + + .login #branding h1 { + margin: 0; + } + + /* GIS */ + + div.olMap { + max-width: calc(100vw - 30px); + max-height: 300px; + } + + .olMap + .clear_features { + display: block; + margin-top: 10px; + } + + /* Docs */ + + .module table.xfull { + width: 100%; + } + + pre.literal-block { + overflow: auto; + } +} + +/* Mobile */ + +@media (max-width: 767px) { + /* Layout */ + + #header, #content, #footer { + padding: 15px; + } + + #footer:empty { + padding: 0; + } + + div.breadcrumbs { + padding: 10px 15px; + } + + /* Dashboard */ + + .colMS, .colSM { + margin: 0; + } + + #content-related, .colSM #content-related { + width: 100%; + margin: 0; + } + + #content-related .module { + margin-bottom: 0; + } + + #content-related .module h2 { + padding: 10px 15px; + font-size: 16px; + } + + /* Changelist */ + + #changelist { + display: flex; + flex-direction: column; + } + + #changelist #toolbar { + order: 1; + padding: 10px; + } + + #changelist .xfull { + order: 2; + } + + #changelist-form { + order: 3; + } + + #changelist-filter { + order: 4; + } + + #changelist .actions label { + flex: 1 1; + } + + #changelist .actions select { + flex: 1 0; + width: 100%; + } + + #changelist .actions span { + flex: 1 0 100%; + } + + .change-list .filtered .results, .change-list .filtered .paginator, + .filtered #toolbar, .filtered .actions, .filtered div.xfull { + margin-right: 0; + } + + #changelist-filter { + position: static; + width: auto; + margin-top: 30px; + } + + .object-tools { + float: none; + margin: 0 0 15px; + padding: 0; + overflow: hidden; + } + + .object-tools li { + height: auto; + margin-left: 0; + } + + .object-tools li + li { + margin-left: 15px; + } + + /* Forms */ + + .form-row { + padding: 15px 0; + } + + .aligned .form-row, + .aligned .form-row > div { + display: flex; + flex-wrap: wrap; + max-width: 100vw; + } + + .aligned .form-row > div { + width: calc(100vw - 30px); + } + + textarea { + max-width: none; + } + + .vURLField { + width: auto; + } + + fieldset .field-box + .field-box { + margin-top: 15px; + padding-top: 15px; + } + + fieldset.collapsed .form-row { + display: none; + } + + .aligned label { + width: 100%; + padding: 0 0 10px; + } + + .aligned label:after { + max-height: 0; + } + + .aligned .form-row input, + .aligned .form-row select, + .aligned .form-row textarea { + flex: 1 1 auto; + max-width: 100%; + } + + .aligned .checkbox-row { + align-items: center; + } + + .aligned .checkbox-row input { + flex: 0 1 auto; + margin: 0; + } + + .aligned .vCheckboxLabel { + flex: 1 0; + padding: 1px 0 0 5px; + } + + .aligned label + p, + .aligned label + div.help, + .aligned label + div.readonly { + padding: 0; + margin-left: 0; + } + + .aligned p.file-upload { + margin-left: 0; + font-size: 13px; + } + + span.clearable-file-input { + margin-left: 15px; + } + + span.clearable-file-input label { + font-size: 13px; + padding-bottom: 0; + } + + .aligned .timezonewarning { + flex: 1 0 100%; + margin-top: 5px; + } + + form .aligned .form-row div.help { + width: 100%; + margin: 5px 0 0; + padding: 0; + } + + form .aligned ul { + margin-left: 0; + padding-left: 0; + } + + form .aligned ul.radiolist { + margin-right: 15px; + margin-bottom: -3px; + } + + form .aligned ul.radiolist li + li { + margin-top: 5px; + } + + /* Related widget */ + + .related-widget-wrapper { + width: 100%; + display: flex; + align-items: flex-start; + } + + .related-widget-wrapper .selector { + order: 1; + } + + .related-widget-wrapper > a { + order: 2; + } + + .related-widget-wrapper .radiolist ~ a { + align-self: flex-end; + } + + .related-widget-wrapper > select ~ a { + align-self: center; + } + + select + .related-widget-wrapper-link, + .related-widget-wrapper-link + .related-widget-wrapper-link { + margin-left: 15px; + } + + /* Selector */ + + .selector { + flex-direction: column; + } + + .selector > * { + float: none; + } + + .selector-available, .selector-chosen { + margin-bottom: 0; + flex: 1 1 auto; + } + + .selector select { + max-height: 96px; + } + + .selector ul.selector-chooser { + display: block; + float: none; + width: 52px; + height: 26px; + padding: 0 2px; + margin: 15px auto 20px; + transform: none; + } + + .selector ul.selector-chooser li { + float: left; + } + + .selector-remove { + background-position: 0 0; + } + + .selector-add { + background-position: 0 -40px; + } + + /* Inlines */ + + .inline-group[data-inline-type="stacked"] .inline-related { + border: 2px solid #eee; + border-radius: 4px; + margin-top: 15px; + overflow: auto; + } + + .inline-group[data-inline-type="stacked"] .inline-related > * { + box-sizing: border-box; + } + + .inline-group[data-inline-type="stacked"] .inline-related + .inline-related { + margin-top: 30px; + } + + .inline-group[data-inline-type="stacked"] .inline-related .module { + padding: 0 10px; + } + + .inline-group[data-inline-type="stacked"] .inline-related .module .form-row:last-child { + border-bottom: none; + } + + .inline-group[data-inline-type="stacked"] .inline-related h3 { + padding: 10px; + border-top-width: 0; + border-bottom-width: 2px; + display: flex; + flex-wrap: wrap; + align-items: center; + } + + .inline-group[data-inline-type="stacked"] .inline-related h3 .inline_label { + margin-right: auto; + } + + .inline-group[data-inline-type="stacked"] .inline-related h3 span.delete { + float: none; + flex: 1 1 100%; + margin-top: 5px; + } + + .inline-group[data-inline-type="stacked"] .aligned .form-row > div:not([class]) { + width: 100%; + } + + .inline-group[data-inline-type="stacked"] .aligned label { + width: 100%; + } + + .inline-group[data-inline-type="stacked"] div.add-row { + margin-top: 15px; + border: 1px solid #eee; + border-radius: 4px; + } + + .inline-group div.add-row, + .inline-group .tabular tr.add-row td { + padding: 0; + } + + .inline-group div.add-row a, + .inline-group .tabular tr.add-row td a { + display: block; + padding: 8px 10px 8px 26px; + background-position: 8px 9px; + } + + /* Submit row */ + + .submit-row { + padding: 10px 10px 0; + margin: 0 0 15px; + display: flex; + flex-direction: column; + } + + .submit-row > * { + width: 100%; + } + + .submit-row input, .submit-row input.default, .submit-row a { + float: none; + margin: 0 0 10px; + text-align: center; + } + + .submit-row p.deletelink-box { + order: 4; + } + + /* Messages */ + + ul.messagelist li { + padding-left: 40px; + background-position: 15px 12px; + } + + ul.messagelist li.error { + background-position: 15px 12px; + } + + ul.messagelist li.warning { + background-position: 15px 14px; + } + + /* Paginator */ + + .paginator .this-page, .paginator a:link, .paginator a:visited { + padding: 4px 10px; + } + + /* Login */ + + body.login { + padding: 0 15px; + } + + .login #container { + width: auto; + max-width: 480px; + margin: 50px auto; + } + + .login #header, + .login #content { + padding: 15px; + } + + .login #content-main { + float: none; + } + + .login .form-row { + padding: 0; + } + + .login .form-row + .form-row { + margin-top: 15px; + } + + .login .form-row label { + display: block; + margin: 0 0 5px; + padding: 0; + line-height: 1.2; + } + + .login .submit-row { + padding: 15px 0 0; + } + + .login br, .login .submit-row label { + display: none; + } + + .login .submit-row input { + margin: 0; + text-transform: uppercase; + } + + .errornote { + margin: 0 0 20px; + padding: 8px 12px; + font-size: 13px; + } + + /* Calendar and clock */ + + .calendarbox, .clockbox { + position: fixed !important; + top: 50% !important; + left: 50% !important; + transform: translate(-50%, -50%); + margin: 0; + border: none; + overflow: visible; + } + + .calendarbox:before, .clockbox:before { + content: ''; + position: fixed; + top: 50%; + left: 50%; + width: 100vw; + height: 100vh; + background: rgba(0, 0, 0, 0.75); + transform: translate(-50%, -50%); + } + + .calendarbox > *, .clockbox > * { + position: relative; + z-index: 1; + } + + .calendarbox > div:first-child { + z-index: 2; + } + + .calendarbox .calendar, .clockbox h2 { + border-radius: 4px 4px 0 0; + overflow: hidden; + } + + .calendarbox .calendar-cancel, .clockbox .calendar-cancel { + border-radius: 0 0 4px 4px; + overflow: hidden; + } + + .calendar-shortcuts { + padding: 10px 0; + font-size: 12px; + line-height: 12px; + } + + .calendar-shortcuts a { + margin: 0 4px; + } + + .timelist a { + background: #fff; + padding: 4px; + } + + .calendar-cancel { + padding: 8px 10px; + } + + .clockbox h2 { + padding: 8px 15px; + } + + .calendar caption { + padding: 10px; + } + + .calendarbox .calendarnav-previous, .calendarbox .calendarnav-next { + z-index: 1; + top: 10px; + } + + /* History */ + + table#change-history tbody th, table#change-history tbody td { + font-size: 13px; + word-break: break-word; + } + + table#change-history tbody th { + width: auto; + } + + /* Docs */ + + table.model tbody th, table.model tbody td { + font-size: 13px; + word-break: break-word; + } +} diff --git a/static/admin/css/responsive_rtl.css b/static/admin/css/responsive_rtl.css new file mode 100644 index 0000000..aaffa91 --- /dev/null +++ b/static/admin/css/responsive_rtl.css @@ -0,0 +1,80 @@ +/* TABLETS */ + +@media (max-width: 1024px) { + [dir="rtl"] .colMS { + margin-right: 0; + } + + [dir="rtl"] #user-tools { + text-align: right; + } + + [dir="rtl"] #changelist .actions label { + padding-left: 10px; + padding-right: 0; + } + + [dir="rtl"] #changelist .actions select { + margin-left: 0; + margin-right: 15px; + } + + [dir="rtl"] .change-list .filtered .results, + [dir="rtl"] .change-list .filtered .paginator, + [dir="rtl"] .filtered #toolbar, + [dir="rtl"] .filtered div.xfull, + [dir="rtl"] .filtered .actions { + margin-right: 0; + margin-left: 230px; + } + + [dir="rtl"] .inline-group ul.tools a.add, + [dir="rtl"] .inline-group div.add-row a, + [dir="rtl"] .inline-group .tabular tr.add-row td a { + padding: 8px 26px 8px 10px; + background-position: calc(100% - 8px) 9px; + } + + [dir="rtl"] .related-widget-wrapper-link + .selector { + margin-right: 0; + margin-left: 15px; + } + + [dir="rtl"] .selector .selector-filter label { + margin-right: 0; + margin-left: 8px; + } + + [dir="rtl"] .object-tools li { + float: right; + } + + [dir="rtl"] .object-tools li + li { + margin-left: 0; + margin-right: 15px; + } + + [dir="rtl"] .dashboard .module table td a { + padding-left: 0; + padding-right: 16px; + } +} + +/* MOBILE */ + +@media (max-width: 767px) { + [dir="rtl"] .change-list .filtered .results, + [dir="rtl"] .change-list .filtered .paginator, + [dir="rtl"] .filtered #toolbar, + [dir="rtl"] .filtered div.xfull, + [dir="rtl"] .filtered .actions { + margin-left: 0; + } + + [dir="rtl"] .aligned .add-another, + [dir="rtl"] .aligned .related-lookup, + [dir="rtl"] .aligned .datetimeshortcuts { + margin-left: 0; + margin-right: 15px; + } +} diff --git a/static/admin/css/rtl.css b/static/admin/css/rtl.css new file mode 100644 index 0000000..ef39781 --- /dev/null +++ b/static/admin/css/rtl.css @@ -0,0 +1,264 @@ +body { + direction: rtl; +} + +/* LOGIN */ + +.login .form-row { + float: right; +} + +.login .form-row label { + float: right; + padding-left: 0.5em; + padding-right: 0; + text-align: left; +} + +.login .submit-row { + clear: both; + padding: 1em 9.4em 0 0; +} + +/* GLOBAL */ + +th { + text-align: right; +} + +.module h2, .module caption { + text-align: right; +} + +.module ul, .module ol { + margin-left: 0; + margin-right: 1.5em; +} + +.addlink, .changelink { + padding-left: 0; + padding-right: 16px; + background-position: 100% 1px; +} + +.deletelink { + padding-left: 0; + padding-right: 16px; + background-position: 100% 1px; +} + +.object-tools { + float: left; +} + +thead th:first-child, +tfoot td:first-child { + border-left: none; +} + +/* LAYOUT */ + +#user-tools { + right: auto; + left: 0; + text-align: left; +} + +div.breadcrumbs { + text-align: right; +} + +#content-main { + float: right; +} + +#content-related { + float: left; + margin-left: -300px; + margin-right: auto; +} + +.colMS { + margin-left: 300px; + margin-right: 0; +} + +/* SORTABLE TABLES */ + +table thead th.sorted .sortoptions { + float: left; +} + +thead th.sorted .text { + padding-right: 0; + padding-left: 42px; +} + +/* dashboard styles */ + +.dashboard .module table td a { + padding-left: .6em; + padding-right: 16px; +} + +/* changelists styles */ + +.change-list .filtered table { + border-left: none; + border-right: 0px none; +} + +#changelist-filter { + right: auto; + left: 0; + border-left: none; + border-right: none; +} + +.change-list .filtered .results, .change-list .filtered .paginator, .filtered #toolbar, .filtered div.xfull { + margin-right: 0; + margin-left: 280px; +} + +#changelist-filter li.selected { + border-left: none; + padding-left: 10px; + margin-left: 0; + border-right: 5px solid #eaeaea; + padding-right: 10px; + margin-right: -15px; +} + +.filtered .actions { + margin-left: 280px; + margin-right: 0; +} + +#changelist table tbody td:first-child, #changelist table tbody th:first-child { + border-right: none; + border-left: none; +} + +/* FORMS */ + +.aligned label { + padding: 0 0 3px 1em; + float: right; +} + +.submit-row { + text-align: left +} + +.submit-row p.deletelink-box { + float: right; +} + +.submit-row input.default { + margin-left: 0; +} + +.vDateField, .vTimeField { + margin-left: 2px; +} + +.aligned .form-row input { + margin-left: 5px; +} + +form .aligned p.help, form .aligned div.help { + clear: right; +} + +form ul.inline li { + float: right; + padding-right: 0; + padding-left: 7px; +} + +input[type=submit].default, .submit-row input.default { + float: left; +} + +fieldset .field-box { + float: right; + margin-left: 20px; + margin-right: 0; +} + +.errorlist li { + background-position: 100% 12px; + padding: 0; +} + +.errornote { + background-position: 100% 12px; + padding: 10px 12px; +} + +/* WIDGETS */ + +.calendarnav-previous { + top: 0; + left: auto; + right: 10px; +} + +.calendarnav-next { + top: 0; + right: auto; + left: 10px; +} + +.calendar caption, .calendarbox h2 { + text-align: center; +} + +.selector { + float: right; +} + +.selector .selector-filter { + text-align: right; +} + +.inline-deletelink { + float: left; +} + +form .form-row p.datetime { + overflow: hidden; +} + +.related-widget-wrapper { + float: right; +} + +/* MISC */ + +.inline-related h2, .inline-group h2 { + text-align: right +} + +.inline-related h3 span.delete { + padding-right: 20px; + padding-left: inherit; + left: 10px; + right: inherit; + float:left; +} + +.inline-related h3 span.delete label { + margin-left: inherit; + margin-right: 2px; +} + +/* IE7 specific bug fixes */ + +div.colM { + position: relative; +} + +.submit-row input { + float: left; +} diff --git a/static/admin/css/ui.css b/static/admin/css/ui.css new file mode 100644 index 0000000..4186053 --- /dev/null +++ b/static/admin/css/ui.css @@ -0,0 +1,17 @@ +body { + margin: 0; + padding: 0; +} + +.errornote { + font-size: 14px; + font-weight: 700; + display: block; + padding: 10px 12px; + margin: 0 0 10px 0; + color: #ba2121; + border: 1px solid #ba2121; + border-radius: 4px; + background-color: #fff; + background-position: 5px 12px; +} diff --git a/static/admin/css/vendor/select2/LICENSE-SELECT2.md b/static/admin/css/vendor/select2/LICENSE-SELECT2.md new file mode 100644 index 0000000..86c7c29 --- /dev/null +++ b/static/admin/css/vendor/select2/LICENSE-SELECT2.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2012-2015 Kevin Brown, Igor Vaynberg, and Select2 contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/static/admin/css/vendor/select2/select2.css b/static/admin/css/vendor/select2/select2.css new file mode 100644 index 0000000..447b2b8 --- /dev/null +++ b/static/admin/css/vendor/select2/select2.css @@ -0,0 +1,484 @@ +.select2-container { + box-sizing: border-box; + display: inline-block; + margin: 0; + position: relative; + vertical-align: middle; } + .select2-container .select2-selection--single { + box-sizing: border-box; + cursor: pointer; + display: block; + height: 28px; + user-select: none; + -webkit-user-select: none; } + .select2-container .select2-selection--single .select2-selection__rendered { + display: block; + padding-left: 8px; + padding-right: 20px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } + .select2-container .select2-selection--single .select2-selection__clear { + position: relative; } + .select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered { + padding-right: 8px; + padding-left: 20px; } + .select2-container .select2-selection--multiple { + box-sizing: border-box; + cursor: pointer; + display: block; + min-height: 32px; + user-select: none; + -webkit-user-select: none; } + .select2-container .select2-selection--multiple .select2-selection__rendered { + display: inline-block; + overflow: hidden; + padding-left: 8px; + text-overflow: ellipsis; + white-space: nowrap; } + .select2-container .select2-search--inline { + float: left; } + .select2-container .select2-search--inline .select2-search__field { + box-sizing: border-box; + border: none; + font-size: 100%; + margin-top: 5px; + padding: 0; } + .select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button { + -webkit-appearance: none; } + +.select2-dropdown { + background-color: white; + border: 1px solid #aaa; + border-radius: 4px; + box-sizing: border-box; + display: block; + position: absolute; + left: -100000px; + width: 100%; + z-index: 1051; } + +.select2-results { + display: block; } + +.select2-results__options { + list-style: none; + margin: 0; + padding: 0; } + +.select2-results__option { + padding: 6px; + user-select: none; + -webkit-user-select: none; } + .select2-results__option[aria-selected] { + cursor: pointer; } + +.select2-container--open .select2-dropdown { + left: 0; } + +.select2-container--open .select2-dropdown--above { + border-bottom: none; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; } + +.select2-container--open .select2-dropdown--below { + border-top: none; + border-top-left-radius: 0; + border-top-right-radius: 0; } + +.select2-search--dropdown { + display: block; + padding: 4px; } + .select2-search--dropdown .select2-search__field { + padding: 4px; + width: 100%; + box-sizing: border-box; } + .select2-search--dropdown .select2-search__field::-webkit-search-cancel-button { + -webkit-appearance: none; } + .select2-search--dropdown.select2-search--hide { + display: none; } + +.select2-close-mask { + border: 0; + margin: 0; + padding: 0; + display: block; + position: fixed; + left: 0; + top: 0; + min-height: 100%; + min-width: 100%; + height: auto; + width: auto; + opacity: 0; + z-index: 99; + background-color: #fff; + filter: alpha(opacity=0); } + +.select2-hidden-accessible { + border: 0 !important; + clip: rect(0 0 0 0) !important; + height: 1px !important; + margin: -1px !important; + overflow: hidden !important; + padding: 0 !important; + position: absolute !important; + width: 1px !important; } + +.select2-container--default .select2-selection--single { + background-color: #fff; + border: 1px solid #aaa; + border-radius: 4px; } + .select2-container--default .select2-selection--single .select2-selection__rendered { + color: #444; + line-height: 28px; } + .select2-container--default .select2-selection--single .select2-selection__clear { + cursor: pointer; + float: right; + font-weight: bold; } + .select2-container--default .select2-selection--single .select2-selection__placeholder { + color: #999; } + .select2-container--default .select2-selection--single .select2-selection__arrow { + height: 26px; + position: absolute; + top: 1px; + right: 1px; + width: 20px; } + .select2-container--default .select2-selection--single .select2-selection__arrow b { + border-color: #888 transparent transparent transparent; + border-style: solid; + border-width: 5px 4px 0 4px; + height: 0; + left: 50%; + margin-left: -4px; + margin-top: -2px; + position: absolute; + top: 50%; + width: 0; } + +.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear { + float: left; } + +.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow { + left: 1px; + right: auto; } + +.select2-container--default.select2-container--disabled .select2-selection--single { + background-color: #eee; + cursor: default; } + .select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear { + display: none; } + +.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b { + border-color: transparent transparent #888 transparent; + border-width: 0 4px 5px 4px; } + +.select2-container--default .select2-selection--multiple { + background-color: white; + border: 1px solid #aaa; + border-radius: 4px; + cursor: text; } + .select2-container--default .select2-selection--multiple .select2-selection__rendered { + box-sizing: border-box; + list-style: none; + margin: 0; + padding: 0 5px; + width: 100%; } + .select2-container--default .select2-selection--multiple .select2-selection__rendered li { + list-style: none; } + .select2-container--default .select2-selection--multiple .select2-selection__placeholder { + color: #999; + margin-top: 5px; + float: left; } + .select2-container--default .select2-selection--multiple .select2-selection__clear { + cursor: pointer; + float: right; + font-weight: bold; + margin-top: 5px; + margin-right: 10px; } + .select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: #e4e4e4; + border: 1px solid #aaa; + border-radius: 4px; + cursor: default; + float: left; + margin-right: 5px; + margin-top: 5px; + padding: 0 5px; } + .select2-container--default .select2-selection--multiple .select2-selection__choice__remove { + color: #999; + cursor: pointer; + display: inline-block; + font-weight: bold; + margin-right: 2px; } + .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover { + color: #333; } + +.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline { + float: right; } + +.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice { + margin-left: 5px; + margin-right: auto; } + +.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { + margin-left: 2px; + margin-right: auto; } + +.select2-container--default.select2-container--focus .select2-selection--multiple { + border: solid black 1px; + outline: 0; } + +.select2-container--default.select2-container--disabled .select2-selection--multiple { + background-color: #eee; + cursor: default; } + +.select2-container--default.select2-container--disabled .select2-selection__choice__remove { + display: none; } + +.select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple { + border-top-left-radius: 0; + border-top-right-radius: 0; } + +.select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; } + +.select2-container--default .select2-search--dropdown .select2-search__field { + border: 1px solid #aaa; } + +.select2-container--default .select2-search--inline .select2-search__field { + background: transparent; + border: none; + outline: 0; + box-shadow: none; + -webkit-appearance: textfield; } + +.select2-container--default .select2-results > .select2-results__options { + max-height: 200px; + overflow-y: auto; } + +.select2-container--default .select2-results__option[role=group] { + padding: 0; } + +.select2-container--default .select2-results__option[aria-disabled=true] { + color: #999; } + +.select2-container--default .select2-results__option[aria-selected=true] { + background-color: #ddd; } + +.select2-container--default .select2-results__option .select2-results__option { + padding-left: 1em; } + .select2-container--default .select2-results__option .select2-results__option .select2-results__group { + padding-left: 0; } + .select2-container--default .select2-results__option .select2-results__option .select2-results__option { + margin-left: -1em; + padding-left: 2em; } + .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -2em; + padding-left: 3em; } + .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -3em; + padding-left: 4em; } + .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -4em; + padding-left: 5em; } + .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -5em; + padding-left: 6em; } + +.select2-container--default .select2-results__option--highlighted[aria-selected] { + background-color: #5897fb; + color: white; } + +.select2-container--default .select2-results__group { + cursor: default; + display: block; + padding: 6px; } + +.select2-container--classic .select2-selection--single { + background-color: #f7f7f7; + border: 1px solid #aaa; + border-radius: 4px; + outline: 0; + background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%); + background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%); + background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); } + .select2-container--classic .select2-selection--single:focus { + border: 1px solid #5897fb; } + .select2-container--classic .select2-selection--single .select2-selection__rendered { + color: #444; + line-height: 28px; } + .select2-container--classic .select2-selection--single .select2-selection__clear { + cursor: pointer; + float: right; + font-weight: bold; + margin-right: 10px; } + .select2-container--classic .select2-selection--single .select2-selection__placeholder { + color: #999; } + .select2-container--classic .select2-selection--single .select2-selection__arrow { + background-color: #ddd; + border: none; + border-left: 1px solid #aaa; + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + height: 26px; + position: absolute; + top: 1px; + right: 1px; + width: 20px; + background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%); + background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%); + background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); } + .select2-container--classic .select2-selection--single .select2-selection__arrow b { + border-color: #888 transparent transparent transparent; + border-style: solid; + border-width: 5px 4px 0 4px; + height: 0; + left: 50%; + margin-left: -4px; + margin-top: -2px; + position: absolute; + top: 50%; + width: 0; } + +.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear { + float: left; } + +.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow { + border: none; + border-right: 1px solid #aaa; + border-radius: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + left: 1px; + right: auto; } + +.select2-container--classic.select2-container--open .select2-selection--single { + border: 1px solid #5897fb; } + .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow { + background: transparent; + border: none; } + .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b { + border-color: transparent transparent #888 transparent; + border-width: 0 4px 5px 4px; } + +.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single { + border-top: none; + border-top-left-radius: 0; + border-top-right-radius: 0; + background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%); + background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%); + background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); } + +.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single { + border-bottom: none; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%); + background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%); + background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); } + +.select2-container--classic .select2-selection--multiple { + background-color: white; + border: 1px solid #aaa; + border-radius: 4px; + cursor: text; + outline: 0; } + .select2-container--classic .select2-selection--multiple:focus { + border: 1px solid #5897fb; } + .select2-container--classic .select2-selection--multiple .select2-selection__rendered { + list-style: none; + margin: 0; + padding: 0 5px; } + .select2-container--classic .select2-selection--multiple .select2-selection__clear { + display: none; } + .select2-container--classic .select2-selection--multiple .select2-selection__choice { + background-color: #e4e4e4; + border: 1px solid #aaa; + border-radius: 4px; + cursor: default; + float: left; + margin-right: 5px; + margin-top: 5px; + padding: 0 5px; } + .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove { + color: #888; + cursor: pointer; + display: inline-block; + font-weight: bold; + margin-right: 2px; } + .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover { + color: #555; } + +.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice { + float: right; } + +.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice { + margin-left: 5px; + margin-right: auto; } + +.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { + margin-left: 2px; + margin-right: auto; } + +.select2-container--classic.select2-container--open .select2-selection--multiple { + border: 1px solid #5897fb; } + +.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple { + border-top: none; + border-top-left-radius: 0; + border-top-right-radius: 0; } + +.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple { + border-bottom: none; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; } + +.select2-container--classic .select2-search--dropdown .select2-search__field { + border: 1px solid #aaa; + outline: 0; } + +.select2-container--classic .select2-search--inline .select2-search__field { + outline: 0; + box-shadow: none; } + +.select2-container--classic .select2-dropdown { + background-color: white; + border: 1px solid transparent; } + +.select2-container--classic .select2-dropdown--above { + border-bottom: none; } + +.select2-container--classic .select2-dropdown--below { + border-top: none; } + +.select2-container--classic .select2-results > .select2-results__options { + max-height: 200px; + overflow-y: auto; } + +.select2-container--classic .select2-results__option[role=group] { + padding: 0; } + +.select2-container--classic .select2-results__option[aria-disabled=true] { + color: grey; } + +.select2-container--classic .select2-results__option--highlighted[aria-selected] { + background-color: #3875d7; + color: white; } + +.select2-container--classic .select2-results__group { + cursor: default; + display: block; + padding: 6px; } + +.select2-container--classic.select2-container--open .select2-dropdown { + border-color: #5897fb; } diff --git a/static/admin/css/vendor/select2/select2.min.css b/static/admin/css/vendor/select2/select2.min.css new file mode 100644 index 0000000..76de04d --- /dev/null +++ b/static/admin/css/vendor/select2/select2.min.css @@ -0,0 +1 @@ +.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;height:1px !important;margin:-1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb} diff --git a/static/admin/css/widgets.css b/static/admin/css/widgets.css new file mode 100644 index 0000000..d3bd67a --- /dev/null +++ b/static/admin/css/widgets.css @@ -0,0 +1,565 @@ +/* SELECTOR (FILTER INTERFACE) */ + +.selector { + width: 800px; + float: left; +} + +.selector select { + width: 380px; + height: 17.2em; +} + +.selector-available, .selector-chosen { + float: left; + width: 380px; + text-align: center; + margin-bottom: 5px; +} + +.selector-chosen select { + border-top: none; +} + +.selector-available h2, .selector-chosen h2 { + border: 1px solid #ccc; + border-radius: 4px 4px 0 0; +} + +.selector-chosen h2 { + background: #79aec8; + color: #fff; +} + +.selector .selector-available h2 { + background: #f8f8f8; + color: #666; +} + +.selector .selector-filter { + background: white; + border: 1px solid #ccc; + border-width: 0 1px; + padding: 8px; + color: #999; + font-size: 10px; + margin: 0; + text-align: left; +} + +.selector .selector-filter label, +.inline-group .aligned .selector .selector-filter label { + float: left; + margin: 7px 0 0; + width: 18px; + height: 18px; + padding: 0; + overflow: hidden; + line-height: 1; +} + +.selector .selector-available input { + width: 320px; + margin-left: 8px; +} + +.selector ul.selector-chooser { + float: left; + width: 22px; + background-color: #eee; + border-radius: 10px; + margin: 10em 5px 0 5px; + padding: 0; +} + +.selector-chooser li { + margin: 0; + padding: 3px; + list-style-type: none; +} + +.selector select { + padding: 0 10px; + margin: 0 0 10px; + border-radius: 0 0 4px 4px; +} + +.selector-add, .selector-remove { + width: 16px; + height: 16px; + display: block; + text-indent: -3000px; + overflow: hidden; + cursor: default; + opacity: 0.3; +} + +.active.selector-add, .active.selector-remove { + opacity: 1; +} + +.active.selector-add:hover, .active.selector-remove:hover { + cursor: pointer; +} + +.selector-add { + background: url(../img/selector-icons.svg) 0 -96px no-repeat; +} + +.active.selector-add:focus, .active.selector-add:hover { + background-position: 0 -112px; +} + +.selector-remove { + background: url(../img/selector-icons.svg) 0 -64px no-repeat; +} + +.active.selector-remove:focus, .active.selector-remove:hover { + background-position: 0 -80px; +} + +a.selector-chooseall, a.selector-clearall { + display: inline-block; + height: 16px; + text-align: left; + margin: 1px auto 3px; + overflow: hidden; + font-weight: bold; + line-height: 16px; + color: #666; + text-decoration: none; + opacity: 0.3; +} + +a.active.selector-chooseall:focus, a.active.selector-clearall:focus, +a.active.selector-chooseall:hover, a.active.selector-clearall:hover { + color: #447e9b; +} + +a.active.selector-chooseall, a.active.selector-clearall { + opacity: 1; +} + +a.active.selector-chooseall:hover, a.active.selector-clearall:hover { + cursor: pointer; +} + +a.selector-chooseall { + padding: 0 18px 0 0; + background: url(../img/selector-icons.svg) right -160px no-repeat; + cursor: default; +} + +a.active.selector-chooseall:focus, a.active.selector-chooseall:hover { + background-position: 100% -176px; +} + +a.selector-clearall { + padding: 0 0 0 18px; + background: url(../img/selector-icons.svg) 0 -128px no-repeat; + cursor: default; +} + +a.active.selector-clearall:focus, a.active.selector-clearall:hover { + background-position: 0 -144px; +} + +/* STACKED SELECTORS */ + +.stacked { + float: left; + width: 490px; +} + +.stacked select { + width: 480px; + height: 10.1em; +} + +.stacked .selector-available, .stacked .selector-chosen { + width: 480px; +} + +.stacked .selector-available { + margin-bottom: 0; +} + +.stacked .selector-available input { + width: 422px; +} + +.stacked ul.selector-chooser { + height: 22px; + width: 50px; + margin: 0 0 10px 40%; + background-color: #eee; + border-radius: 10px; +} + +.stacked .selector-chooser li { + float: left; + padding: 3px 3px 3px 5px; +} + +.stacked .selector-chooseall, .stacked .selector-clearall { + display: none; +} + +.stacked .selector-add { + background: url(../img/selector-icons.svg) 0 -32px no-repeat; + cursor: default; +} + +.stacked .active.selector-add { + background-position: 0 -48px; + cursor: pointer; +} + +.stacked .selector-remove { + background: url(../img/selector-icons.svg) 0 0 no-repeat; + cursor: default; +} + +.stacked .active.selector-remove { + background-position: 0 -16px; + cursor: pointer; +} + +.selector .help-icon { + background: url(../img/icon-unknown.svg) 0 0 no-repeat; + display: inline-block; + vertical-align: middle; + margin: -2px 0 0 2px; + width: 13px; + height: 13px; +} + +.selector .selector-chosen .help-icon { + background: url(../img/icon-unknown-alt.svg) 0 0 no-repeat; +} + +.selector .search-label-icon { + background: url(../img/search.svg) 0 0 no-repeat; + display: inline-block; + height: 18px; + width: 18px; +} + +/* DATE AND TIME */ + +p.datetime { + line-height: 20px; + margin: 0; + padding: 0; + color: #666; + font-weight: bold; +} + +.datetime span { + white-space: nowrap; + font-weight: normal; + font-size: 11px; + color: #ccc; +} + +.datetime input, .form-row .datetime input.vDateField, .form-row .datetime input.vTimeField { + min-width: 0; + margin-left: 5px; + margin-bottom: 4px; +} + +table p.datetime { + font-size: 11px; + margin-left: 0; + padding-left: 0; +} + +.datetimeshortcuts .clock-icon, .datetimeshortcuts .date-icon { + position: relative; + display: inline-block; + vertical-align: middle; + height: 16px; + width: 16px; + overflow: hidden; +} + +.datetimeshortcuts .clock-icon { + background: url(../img/icon-clock.svg) 0 0 no-repeat; +} + +.datetimeshortcuts a:focus .clock-icon, +.datetimeshortcuts a:hover .clock-icon { + background-position: 0 -16px; +} + +.datetimeshortcuts .date-icon { + background: url(../img/icon-calendar.svg) 0 0 no-repeat; + top: -1px; +} + +.datetimeshortcuts a:focus .date-icon, +.datetimeshortcuts a:hover .date-icon { + background-position: 0 -16px; +} + +.timezonewarning { + font-size: 11px; + color: #999; +} + +/* URL */ + +p.url { + line-height: 20px; + margin: 0; + padding: 0; + color: #666; + font-size: 11px; + font-weight: bold; +} + +.url a { + font-weight: normal; +} + +/* FILE UPLOADS */ + +p.file-upload { + line-height: 20px; + margin: 0; + padding: 0; + color: #666; + font-size: 11px; + font-weight: bold; +} + +.aligned p.file-upload { + margin-left: 170px; +} + +.file-upload a { + font-weight: normal; +} + +.file-upload .deletelink { + margin-left: 5px; +} + +span.clearable-file-input label { + color: #333; + font-size: 11px; + display: inline; + float: none; +} + +/* CALENDARS & CLOCKS */ + +.calendarbox, .clockbox { + margin: 5px auto; + font-size: 12px; + width: 19em; + text-align: center; + background: white; + border: 1px solid #ddd; + border-radius: 4px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15); + overflow: hidden; + position: relative; +} + +.clockbox { + width: auto; +} + +.calendar { + margin: 0; + padding: 0; +} + +.calendar table { + margin: 0; + padding: 0; + border-collapse: collapse; + background: white; + width: 100%; +} + +.calendar caption, .calendarbox h2 { + margin: 0; + text-align: center; + border-top: none; + background: #f5dd5d; + font-weight: 700; + font-size: 12px; + color: #333; +} + +.calendar th { + padding: 8px 5px; + background: #f8f8f8; + border-bottom: 1px solid #ddd; + font-weight: 400; + font-size: 12px; + text-align: center; + color: #666; +} + +.calendar td { + font-weight: 400; + font-size: 12px; + text-align: center; + padding: 0; + border-top: 1px solid #eee; + border-bottom: none; +} + +.calendar td.selected a { + background: #79aec8; + color: #fff; +} + +.calendar td.nonday { + background: #f8f8f8; +} + +.calendar td.today a { + font-weight: 700; +} + +.calendar td a, .timelist a { + display: block; + font-weight: 400; + padding: 6px; + text-decoration: none; + color: #444; +} + +.calendar td a:focus, .timelist a:focus, +.calendar td a:hover, .timelist a:hover { + background: #79aec8; + color: white; +} + +.calendar td a:active, .timelist a:active { + background: #417690; + color: white; +} + +.calendarnav { + font-size: 10px; + text-align: center; + color: #ccc; + margin: 0; + padding: 1px 3px; +} + +.calendarnav a:link, #calendarnav a:visited, +#calendarnav a:focus, #calendarnav a:hover { + color: #999; +} + +.calendar-shortcuts { + background: white; + font-size: 11px; + line-height: 11px; + border-top: 1px solid #eee; + padding: 8px 0; + color: #ccc; +} + +.calendarbox .calendarnav-previous, .calendarbox .calendarnav-next { + display: block; + position: absolute; + top: 8px; + width: 15px; + height: 15px; + text-indent: -9999px; + padding: 0; +} + +.calendarnav-previous { + left: 10px; + background: url(../img/calendar-icons.svg) 0 0 no-repeat; +} + +.calendarbox .calendarnav-previous:focus, +.calendarbox .calendarnav-previous:hover { + background-position: 0 -15px; +} + +.calendarnav-next { + right: 10px; + background: url(../img/calendar-icons.svg) 0 -30px no-repeat; +} + +.calendarbox .calendarnav-next:focus, +.calendarbox .calendarnav-next:hover { + background-position: 0 -45px; +} + +.calendar-cancel { + margin: 0; + padding: 4px 0; + font-size: 12px; + background: #eee; + border-top: 1px solid #ddd; + color: #333; +} + +.calendar-cancel:focus, .calendar-cancel:hover { + background: #ddd; +} + +.calendar-cancel a { + color: black; + display: block; +} + +ul.timelist, .timelist li { + list-style-type: none; + margin: 0; + padding: 0; +} + +.timelist a { + padding: 2px; +} + +/* EDIT INLINE */ + +.inline-deletelink { + float: right; + text-indent: -9999px; + background: url(../img/inline-delete.svg) 0 0 no-repeat; + width: 16px; + height: 16px; + border: 0px none; +} + +.inline-deletelink:focus, .inline-deletelink:hover { + cursor: pointer; +} + +/* RELATED WIDGET WRAPPER */ +.related-widget-wrapper { + float: left; /* display properly in form rows with multiple fields */ + overflow: hidden; /* clear floated contents */ +} + +.related-widget-wrapper-link { + opacity: 0.3; +} + +.related-widget-wrapper-link:link { + opacity: .8; +} + +.related-widget-wrapper-link:link:focus, +.related-widget-wrapper-link:link:hover { + opacity: 1; +} + +select + .related-widget-wrapper-link, +.related-widget-wrapper-link + .related-widget-wrapper-link { + margin-left: 7px; +} diff --git a/static/admin/fonts/LICENSE.txt b/static/admin/fonts/LICENSE.txt new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/static/admin/fonts/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/static/admin/fonts/README.txt b/static/admin/fonts/README.txt new file mode 100644 index 0000000..cc2135a --- /dev/null +++ b/static/admin/fonts/README.txt @@ -0,0 +1,2 @@ +Roboto webfont source: https://www.google.com/fonts/specimen/Roboto +Weights used in this project: Light (300), Regular (400), Bold (700) diff --git a/static/admin/fonts/Roboto-Bold-webfont.woff b/static/admin/fonts/Roboto-Bold-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..03357ce4f5833006114f2e790a7b89dbf69d4f90 GIT binary patch literal 82564 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 U5+{zuf?@lC+j6Kse)s?X0ZPdgP5=M^ literal 0 HcmV?d00001 diff --git a/static/admin/img/LICENSE b/static/admin/img/LICENSE new file mode 100644 index 0000000..a4faaa1 --- /dev/null +++ b/static/admin/img/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2014 Code Charm Ltd + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/static/admin/img/README.txt b/static/admin/img/README.txt new file mode 100644 index 0000000..43373ad --- /dev/null +++ b/static/admin/img/README.txt @@ -0,0 +1,7 @@ +All icons are taken from Font Awesome (http://fontawesome.io/) project. +The Font Awesome font is licensed under the SIL OFL 1.1: +- http://scripts.sil.org/OFL + +SVG icons source: https://github.com/encharm/Font-Awesome-SVG-PNG +Font-Awesome-SVG-PNG is licensed under the MIT license (see file license +in current folder). diff --git a/static/admin/img/calendar-icons.svg b/static/admin/img/calendar-icons.svg new file mode 100644 index 0000000..dbf21c3 --- /dev/null +++ b/static/admin/img/calendar-icons.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/static/admin/img/gis/move_vertex_off.svg b/static/admin/img/gis/move_vertex_off.svg new file mode 100644 index 0000000..228854f --- /dev/null +++ b/static/admin/img/gis/move_vertex_off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/admin/img/gis/move_vertex_on.svg b/static/admin/img/gis/move_vertex_on.svg new file mode 100644 index 0000000..96b87fd --- /dev/null +++ b/static/admin/img/gis/move_vertex_on.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/admin/img/icon-addlink.svg b/static/admin/img/icon-addlink.svg new file mode 100644 index 0000000..e004fb1 --- /dev/null +++ b/static/admin/img/icon-addlink.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/admin/img/icon-alert.svg b/static/admin/img/icon-alert.svg new file mode 100644 index 0000000..e51ea83 --- /dev/null +++ b/static/admin/img/icon-alert.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/admin/img/icon-calendar.svg b/static/admin/img/icon-calendar.svg new file mode 100644 index 0000000..97910a9 --- /dev/null +++ b/static/admin/img/icon-calendar.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/static/admin/img/icon-changelink.svg b/static/admin/img/icon-changelink.svg new file mode 100644 index 0000000..bbb137a --- /dev/null +++ b/static/admin/img/icon-changelink.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/admin/img/icon-clock.svg b/static/admin/img/icon-clock.svg new file mode 100644 index 0000000..bf9985d --- /dev/null +++ b/static/admin/img/icon-clock.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/static/admin/img/icon-deletelink.svg b/static/admin/img/icon-deletelink.svg new file mode 100644 index 0000000..4059b15 --- /dev/null +++ b/static/admin/img/icon-deletelink.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/admin/img/icon-no.svg b/static/admin/img/icon-no.svg new file mode 100644 index 0000000..2e0d383 --- /dev/null +++ b/static/admin/img/icon-no.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/admin/img/icon-unknown-alt.svg b/static/admin/img/icon-unknown-alt.svg new file mode 100644 index 0000000..1c6b99f --- /dev/null +++ b/static/admin/img/icon-unknown-alt.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/admin/img/icon-unknown.svg b/static/admin/img/icon-unknown.svg new file mode 100644 index 0000000..50b4f97 --- /dev/null +++ b/static/admin/img/icon-unknown.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/admin/img/icon-yes.svg b/static/admin/img/icon-yes.svg new file mode 100644 index 0000000..5883d87 --- /dev/null +++ b/static/admin/img/icon-yes.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/admin/img/inline-delete.svg b/static/admin/img/inline-delete.svg new file mode 100644 index 0000000..17d1ad6 --- /dev/null +++ b/static/admin/img/inline-delete.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/admin/img/search.svg b/static/admin/img/search.svg new file mode 100644 index 0000000..c8c69b2 --- /dev/null +++ b/static/admin/img/search.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/admin/img/selector-icons.svg b/static/admin/img/selector-icons.svg new file mode 100644 index 0000000..926b8e2 --- /dev/null +++ b/static/admin/img/selector-icons.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/admin/img/sorting-icons.svg b/static/admin/img/sorting-icons.svg new file mode 100644 index 0000000..7c31ec9 --- /dev/null +++ b/static/admin/img/sorting-icons.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/static/admin/img/tooltag-add.svg b/static/admin/img/tooltag-add.svg new file mode 100644 index 0000000..1ca64ae --- /dev/null +++ b/static/admin/img/tooltag-add.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/admin/img/tooltag-arrowright.svg b/static/admin/img/tooltag-arrowright.svg new file mode 100644 index 0000000..b664d61 --- /dev/null +++ b/static/admin/img/tooltag-arrowright.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/admin/js/SelectBox.js b/static/admin/js/SelectBox.js new file mode 100644 index 0000000..1a14959 --- /dev/null +++ b/static/admin/js/SelectBox.js @@ -0,0 +1,144 @@ +(function($) { + 'use strict'; + var SelectBox = { + cache: {}, + init: function(id) { + var box = document.getElementById(id); + var node; + SelectBox.cache[id] = []; + var cache = SelectBox.cache[id]; + var boxOptions = box.options; + var boxOptionsLength = boxOptions.length; + for (var i = 0, j = boxOptionsLength; i < j; i++) { + node = boxOptions[i]; + cache.push({value: node.value, text: node.text, displayed: 1}); + } + }, + redisplay: function(id) { + // Repopulate HTML select box from cache + var box = document.getElementById(id); + var node; + $(box).empty(); // clear all options + var new_options = box.outerHTML.slice(0, -9); // grab just the opening tag + var cache = SelectBox.cache[id]; + for (var i = 0, j = cache.length; i < j; i++) { + node = cache[i]; + if (node.displayed) { + var new_option = new Option(node.text, node.value, false, false); + // Shows a tooltip when hovering over the option + new_option.setAttribute("title", node.text); + new_options += new_option.outerHTML; + } + } + new_options += ''; + box.outerHTML = new_options; + }, + filter: function(id, text) { + // Redisplay the HTML select box, displaying only the choices containing ALL + // the words in text. (It's an AND search.) + var tokens = text.toLowerCase().split(/\s+/); + var node, token; + var cache = SelectBox.cache[id]; + for (var i = 0, j = cache.length; i < j; i++) { + node = cache[i]; + node.displayed = 1; + var node_text = node.text.toLowerCase(); + var numTokens = tokens.length; + for (var k = 0; k < numTokens; k++) { + token = tokens[k]; + if (node_text.indexOf(token) === -1) { + node.displayed = 0; + break; // Once the first token isn't found we're done + } + } + } + SelectBox.redisplay(id); + }, + delete_from_cache: function(id, value) { + var node, delete_index = null; + var cache = SelectBox.cache[id]; + for (var i = 0, j = cache.length; i < j; i++) { + node = cache[i]; + if (node.value === value) { + delete_index = i; + break; + } + } + cache.splice(delete_index, 1); + }, + add_to_cache: function(id, option) { + SelectBox.cache[id].push({value: option.value, text: option.text, displayed: 1}); + }, + cache_contains: function(id, value) { + // Check if an item is contained in the cache + var node; + var cache = SelectBox.cache[id]; + for (var i = 0, j = cache.length; i < j; i++) { + node = cache[i]; + if (node.value === value) { + return true; + } + } + return false; + }, + move: function(from, to) { + var from_box = document.getElementById(from); + var option; + var boxOptions = from_box.options; + var boxOptionsLength = boxOptions.length; + for (var i = 0, j = boxOptionsLength; i < j; i++) { + option = boxOptions[i]; + var option_value = option.value; + if (option.selected && SelectBox.cache_contains(from, option_value)) { + SelectBox.add_to_cache(to, {value: option_value, text: option.text, displayed: 1}); + SelectBox.delete_from_cache(from, option_value); + } + } + SelectBox.redisplay(from); + SelectBox.redisplay(to); + }, + move_all: function(from, to) { + var from_box = document.getElementById(from); + var option; + var boxOptions = from_box.options; + var boxOptionsLength = boxOptions.length; + for (var i = 0, j = boxOptionsLength; i < j; i++) { + option = boxOptions[i]; + var option_value = option.value; + if (SelectBox.cache_contains(from, option_value)) { + SelectBox.add_to_cache(to, {value: option_value, text: option.text, displayed: 1}); + SelectBox.delete_from_cache(from, option_value); + } + } + SelectBox.redisplay(from); + SelectBox.redisplay(to); + }, + sort: function(id) { + SelectBox.cache[id].sort(function(a, b) { + a = a.text.toLowerCase(); + b = b.text.toLowerCase(); + try { + if (a > b) { + return 1; + } + if (a < b) { + return -1; + } + } + catch (e) { + // silently fail on IE 'unknown' exception + } + return 0; + } ); + }, + select_all: function(id) { + var box = document.getElementById(id); + var boxOptions = box.options; + var boxOptionsLength = boxOptions.length; + for (var i = 0; i < boxOptionsLength; i++) { + boxOptions[i].selected = 'selected'; + } + } + }; + window.SelectBox = SelectBox; +})(django.jQuery); diff --git a/static/admin/js/SelectFilter2.js b/static/admin/js/SelectFilter2.js new file mode 100644 index 0000000..52471d9 --- /dev/null +++ b/static/admin/js/SelectFilter2.js @@ -0,0 +1,252 @@ +/*global SelectBox, gettext, interpolate, quickElement, SelectFilter*/ +/* +SelectFilter2 - Turns a multiple-select box into a filter interface. + +Requires jQuery, core.js, and SelectBox.js. +*/ +(function($) { + 'use strict'; + function findForm(node) { + // returns the node of the form containing the given node + if (node.tagName.toLowerCase() !== 'form') { + return findForm(node.parentNode); + } + return node; + } + + window.SelectFilter = { + init: function(field_id, field_name, is_stacked) { + if (field_id.match(/__prefix__/)) { + // Don't initialize on empty forms. + return; + } + var from_box = document.getElementById(field_id); + from_box.id += '_from'; // change its ID + from_box.className = 'filtered'; + + var ps = from_box.parentNode.getElementsByTagName('p'); + for (var i = 0; i < ps.length; i++) { + if (ps[i].className.indexOf("info") !== -1) { + // Remove

, because it just gets in the way. + from_box.parentNode.removeChild(ps[i]); + } else if (ps[i].className.indexOf("help") !== -1) { + // Move help text up to the top so it isn't below the select + // boxes or wrapped off on the side to the right of the add + // button: + from_box.parentNode.insertBefore(ps[i], from_box.parentNode.firstChild); + } + } + + //

or
+ var selector_div = quickElement('div', from_box.parentNode); + selector_div.className = is_stacked ? 'selector stacked' : 'selector'; + + //
+ var selector_available = quickElement('div', selector_div); + selector_available.className = 'selector-available'; + var title_available = quickElement('h2', selector_available, interpolate(gettext('Available %s') + ' ', [field_name])); + quickElement( + 'span', title_available, '', + 'class', 'help help-tooltip help-icon', + 'title', interpolate( + gettext( + 'This is the list of available %s. You may choose some by ' + + 'selecting them in the box below and then clicking the ' + + '"Choose" arrow between the two boxes.' + ), + [field_name] + ) + ); + + var filter_p = quickElement('p', selector_available, '', 'id', field_id + '_filter'); + filter_p.className = 'selector-filter'; + + var search_filter_label = quickElement('label', filter_p, '', 'for', field_id + '_input'); + + quickElement( + 'span', search_filter_label, '', + 'class', 'help-tooltip search-label-icon', + 'title', interpolate(gettext("Type into this box to filter down the list of available %s."), [field_name]) + ); + + filter_p.appendChild(document.createTextNode(' ')); + + var filter_input = quickElement('input', filter_p, '', 'type', 'text', 'placeholder', gettext("Filter")); + filter_input.id = field_id + '_input'; + + selector_available.appendChild(from_box); + var choose_all = quickElement('a', selector_available, gettext('Choose all'), 'title', interpolate(gettext('Click to choose all %s at once.'), [field_name]), 'href', '#', 'id', field_id + '_add_all_link'); + choose_all.className = 'selector-chooseall'; + + //
    + var selector_chooser = quickElement('ul', selector_div); + selector_chooser.className = 'selector-chooser'; + var add_link = quickElement('a', quickElement('li', selector_chooser), gettext('Choose'), 'title', gettext('Choose'), 'href', '#', 'id', field_id + '_add_link'); + add_link.className = 'selector-add'; + var remove_link = quickElement('a', quickElement('li', selector_chooser), gettext('Remove'), 'title', gettext('Remove'), 'href', '#', 'id', field_id + '_remove_link'); + remove_link.className = 'selector-remove'; + + //
    + var selector_chosen = quickElement('div', selector_div); + selector_chosen.className = 'selector-chosen'; + var title_chosen = quickElement('h2', selector_chosen, interpolate(gettext('Chosen %s') + ' ', [field_name])); + quickElement( + 'span', title_chosen, '', + 'class', 'help help-tooltip help-icon', + 'title', interpolate( + gettext( + 'This is the list of chosen %s. You may remove some by ' + + 'selecting them in the box below and then clicking the ' + + '"Remove" arrow between the two boxes.' + ), + [field_name] + ) + ); + + var to_box = quickElement('select', selector_chosen, '', 'id', field_id + '_to', 'multiple', 'multiple', 'size', from_box.size, 'name', from_box.getAttribute('name')); + to_box.className = 'filtered'; + var clear_all = quickElement('a', selector_chosen, gettext('Remove all'), 'title', interpolate(gettext('Click to remove all chosen %s at once.'), [field_name]), 'href', '#', 'id', field_id + '_remove_all_link'); + clear_all.className = 'selector-clearall'; + + from_box.setAttribute('name', from_box.getAttribute('name') + '_old'); + + // Set up the JavaScript event handlers for the select box filter interface + var move_selection = function(e, elem, move_func, from, to) { + if (elem.className.indexOf('active') !== -1) { + move_func(from, to); + SelectFilter.refresh_icons(field_id); + } + e.preventDefault(); + }; + choose_all.addEventListener('click', function(e) { + move_selection(e, this, SelectBox.move_all, field_id + '_from', field_id + '_to'); + }); + add_link.addEventListener('click', function(e) { + move_selection(e, this, SelectBox.move, field_id + '_from', field_id + '_to'); + }); + remove_link.addEventListener('click', function(e) { + move_selection(e, this, SelectBox.move, field_id + '_to', field_id + '_from'); + }); + clear_all.addEventListener('click', function(e) { + move_selection(e, this, SelectBox.move_all, field_id + '_to', field_id + '_from'); + }); + filter_input.addEventListener('keypress', function(e) { + SelectFilter.filter_key_press(e, field_id); + }); + filter_input.addEventListener('keyup', function(e) { + SelectFilter.filter_key_up(e, field_id); + }); + filter_input.addEventListener('keydown', function(e) { + SelectFilter.filter_key_down(e, field_id); + }); + selector_div.addEventListener('change', function(e) { + if (e.target.tagName === 'SELECT') { + SelectFilter.refresh_icons(field_id); + } + }); + selector_div.addEventListener('dblclick', function(e) { + if (e.target.tagName === 'OPTION') { + if (e.target.closest('select').id === field_id + '_to') { + SelectBox.move(field_id + '_to', field_id + '_from'); + } else { + SelectBox.move(field_id + '_from', field_id + '_to'); + } + SelectFilter.refresh_icons(field_id); + } + }); + findForm(from_box).addEventListener('submit', function() { + SelectBox.select_all(field_id + '_to'); + }); + SelectBox.init(field_id + '_from'); + SelectBox.init(field_id + '_to'); + // Move selected from_box options to to_box + SelectBox.move(field_id + '_from', field_id + '_to'); + + if (!is_stacked) { + // In horizontal mode, give the same height to the two boxes. + var j_from_box = $(from_box); + var j_to_box = $(to_box); + var resize_filters = function() { j_to_box.height($(filter_p).outerHeight() + j_from_box.outerHeight()); }; + if (j_from_box.outerHeight() > 0) { + resize_filters(); // This fieldset is already open. Resize now. + } else { + // This fieldset is probably collapsed. Wait for its 'show' event. + j_to_box.closest('fieldset').one('show.fieldset', resize_filters); + } + } + + // Initial icon refresh + SelectFilter.refresh_icons(field_id); + }, + any_selected: function(field) { + var any_selected = false; + try { + // Temporarily add the required attribute and check validity. + // This is much faster in WebKit browsers than the fallback. + field.attr('required', 'required'); + any_selected = field.is(':valid'); + field.removeAttr('required'); + } catch (e) { + // Browsers that don't support :valid (IE < 10) + any_selected = field.find('option:selected').length > 0; + } + return any_selected; + }, + refresh_icons: function(field_id) { + var from = $('#' + field_id + '_from'); + var to = $('#' + field_id + '_to'); + // Active if at least one item is selected + $('#' + field_id + '_add_link').toggleClass('active', SelectFilter.any_selected(from)); + $('#' + field_id + '_remove_link').toggleClass('active', SelectFilter.any_selected(to)); + // Active if the corresponding box isn't empty + $('#' + field_id + '_add_all_link').toggleClass('active', from.find('option').length > 0); + $('#' + field_id + '_remove_all_link').toggleClass('active', to.find('option').length > 0); + }, + filter_key_press: function(event, field_id) { + var from = document.getElementById(field_id + '_from'); + // don't submit form if user pressed Enter + if ((event.which && event.which === 13) || (event.keyCode && event.keyCode === 13)) { + from.selectedIndex = 0; + SelectBox.move(field_id + '_from', field_id + '_to'); + from.selectedIndex = 0; + event.preventDefault(); + return false; + } + }, + filter_key_up: function(event, field_id) { + var from = document.getElementById(field_id + '_from'); + var temp = from.selectedIndex; + SelectBox.filter(field_id + '_from', document.getElementById(field_id + '_input').value); + from.selectedIndex = temp; + return true; + }, + filter_key_down: function(event, field_id) { + var from = document.getElementById(field_id + '_from'); + // right arrow -- move across + if ((event.which && event.which === 39) || (event.keyCode && event.keyCode === 39)) { + var old_index = from.selectedIndex; + SelectBox.move(field_id + '_from', field_id + '_to'); + from.selectedIndex = (old_index === from.length) ? from.length - 1 : old_index; + return false; + } + // down arrow -- wrap around + if ((event.which && event.which === 40) || (event.keyCode && event.keyCode === 40)) { + from.selectedIndex = (from.length === from.selectedIndex + 1) ? 0 : from.selectedIndex + 1; + } + // up arrow -- wrap around + if ((event.which && event.which === 38) || (event.keyCode && event.keyCode === 38)) { + from.selectedIndex = (from.selectedIndex === 0) ? from.length - 1 : from.selectedIndex - 1; + } + return true; + } + }; + + window.addEventListener('load', function(e) { + $('select.selectfilter, select.selectfilterstacked').each(function() { + var $el = $(this), + data = $el.data(); + SelectFilter.init($el.attr('id'), data.fieldName, parseInt(data.isStacked, 10)); + }); + }); + +})(django.jQuery); diff --git a/static/admin/js/actions.js b/static/admin/js/actions.js new file mode 100644 index 0000000..0f435ab --- /dev/null +++ b/static/admin/js/actions.js @@ -0,0 +1,153 @@ +/*global gettext, interpolate, ngettext*/ +(function($) { + 'use strict'; + var lastChecked; + + $.fn.actions = function(opts) { + var options = $.extend({}, $.fn.actions.defaults, opts); + var actionCheckboxes = $(this); + var list_editable_changed = false; + var showQuestion = function() { + $(options.acrossClears).hide(); + $(options.acrossQuestions).show(); + $(options.allContainer).hide(); + }, + showClear = function() { + $(options.acrossClears).show(); + $(options.acrossQuestions).hide(); + $(options.actionContainer).toggleClass(options.selectedClass); + $(options.allContainer).show(); + $(options.counterContainer).hide(); + }, + reset = function() { + $(options.acrossClears).hide(); + $(options.acrossQuestions).hide(); + $(options.allContainer).hide(); + $(options.counterContainer).show(); + }, + clearAcross = function() { + reset(); + $(options.acrossInput).val(0); + $(options.actionContainer).removeClass(options.selectedClass); + }, + checker = function(checked) { + if (checked) { + showQuestion(); + } else { + reset(); + } + $(actionCheckboxes).prop("checked", checked) + .parent().parent().toggleClass(options.selectedClass, checked); + }, + updateCounter = function() { + var sel = $(actionCheckboxes).filter(":checked").length; + // data-actions-icnt is defined in the generated HTML + // and contains the total amount of objects in the queryset + var actions_icnt = $('.action-counter').data('actionsIcnt'); + $(options.counterContainer).html(interpolate( + ngettext('%(sel)s of %(cnt)s selected', '%(sel)s of %(cnt)s selected', sel), { + sel: sel, + cnt: actions_icnt + }, true)); + $(options.allToggle).prop("checked", function() { + var value; + if (sel === actionCheckboxes.length) { + value = true; + showQuestion(); + } else { + value = false; + clearAcross(); + } + return value; + }); + }; + // Show counter by default + $(options.counterContainer).show(); + // Check state of checkboxes and reinit state if needed + $(this).filter(":checked").each(function(i) { + $(this).parent().parent().toggleClass(options.selectedClass); + updateCounter(); + if ($(options.acrossInput).val() === 1) { + showClear(); + } + }); + $(options.allToggle).show().click(function() { + checker($(this).prop("checked")); + updateCounter(); + }); + $("a", options.acrossQuestions).click(function(event) { + event.preventDefault(); + $(options.acrossInput).val(1); + showClear(); + }); + $("a", options.acrossClears).click(function(event) { + event.preventDefault(); + $(options.allToggle).prop("checked", false); + clearAcross(); + checker(0); + updateCounter(); + }); + lastChecked = null; + $(actionCheckboxes).click(function(event) { + if (!event) { event = window.event; } + var target = event.target ? event.target : event.srcElement; + if (lastChecked && $.data(lastChecked) !== $.data(target) && event.shiftKey === true) { + var inrange = false; + $(lastChecked).prop("checked", target.checked) + .parent().parent().toggleClass(options.selectedClass, target.checked); + $(actionCheckboxes).each(function() { + if ($.data(this) === $.data(lastChecked) || $.data(this) === $.data(target)) { + inrange = (inrange) ? false : true; + } + if (inrange) { + $(this).prop("checked", target.checked) + .parent().parent().toggleClass(options.selectedClass, target.checked); + } + }); + } + $(target).parent().parent().toggleClass(options.selectedClass, target.checked); + lastChecked = target; + updateCounter(); + }); + $('form#changelist-form table#result_list tr').on('change', 'td:gt(0) :input', function() { + list_editable_changed = true; + }); + $('form#changelist-form button[name="index"]').click(function(event) { + if (list_editable_changed) { + return confirm(gettext("You have unsaved changes on individual editable fields. If you run an action, your unsaved changes will be lost.")); + } + }); + $('form#changelist-form input[name="_save"]').click(function(event) { + var action_changed = false; + $('select option:selected', options.actionContainer).each(function() { + if ($(this).val()) { + action_changed = true; + } + }); + if (action_changed) { + if (list_editable_changed) { + return confirm(gettext("You have selected an action, but you haven't saved your changes to individual fields yet. Please click OK to save. You'll need to re-run the action.")); + } else { + return confirm(gettext("You have selected an action, and you haven't made any changes on individual fields. You're probably looking for the Go button rather than the Save button.")); + } + } + }); + }; + /* Setup plugin defaults */ + $.fn.actions.defaults = { + actionContainer: "div.actions", + counterContainer: "span.action-counter", + allContainer: "div.actions span.all", + acrossInput: "div.actions input.select-across", + acrossQuestions: "div.actions span.question", + acrossClears: "div.actions span.clear", + allToggle: "#action-toggle", + selectedClass: "selected" + }; + $(document).ready(function() { + var $actionsEls = $('tr input.action-select'); + if ($actionsEls.length > 0) { + $actionsEls.actions(); + } + }); +})(django.jQuery); diff --git a/static/admin/js/actions.min.js b/static/admin/js/actions.min.js new file mode 100644 index 0000000..1b771fb --- /dev/null +++ b/static/admin/js/actions.min.js @@ -0,0 +1,6 @@ +(function(a){var f;a.fn.actions=function(e){var b=a.extend({},a.fn.actions.defaults,e),g=a(this),k=!1,l=function(){a(b.acrossClears).hide();a(b.acrossQuestions).show();a(b.allContainer).hide()},m=function(){a(b.acrossClears).show();a(b.acrossQuestions).hide();a(b.actionContainer).toggleClass(b.selectedClass);a(b.allContainer).show();a(b.counterContainer).hide()},n=function(){a(b.acrossClears).hide();a(b.acrossQuestions).hide();a(b.allContainer).hide();a(b.counterContainer).show()},p=function(){n(); +a(b.acrossInput).val(0);a(b.actionContainer).removeClass(b.selectedClass)},q=function(c){c?l():n();a(g).prop("checked",c).parent().parent().toggleClass(b.selectedClass,c)},h=function(){var c=a(g).filter(":checked").length,d=a(".action-counter").data("actionsIcnt");a(b.counterContainer).html(interpolate(ngettext("%(sel)s of %(cnt)s selected","%(sel)s of %(cnt)s selected",c),{sel:c,cnt:d},!0));a(b.allToggle).prop("checked",function(){var a;c===g.length?(a=!0,l()):(a=!1,p());return a})};a(b.counterContainer).show(); +a(this).filter(":checked").each(function(c){a(this).parent().parent().toggleClass(b.selectedClass);h();1===a(b.acrossInput).val()&&m()});a(b.allToggle).show().click(function(){q(a(this).prop("checked"));h()});a("a",b.acrossQuestions).click(function(c){c.preventDefault();a(b.acrossInput).val(1);m()});a("a",b.acrossClears).click(function(c){c.preventDefault();a(b.allToggle).prop("checked",!1);p();q(0);h()});f=null;a(g).click(function(c){c||(c=window.event);var d=c.target?c.target:c.srcElement;if(f&& +a.data(f)!==a.data(d)&&!0===c.shiftKey){var e=!1;a(f).prop("checked",d.checked).parent().parent().toggleClass(b.selectedClass,d.checked);a(g).each(function(){if(a.data(this)===a.data(f)||a.data(this)===a.data(d))e=e?!1:!0;e&&a(this).prop("checked",d.checked).parent().parent().toggleClass(b.selectedClass,d.checked)})}a(d).parent().parent().toggleClass(b.selectedClass,d.checked);f=d;h()});a("form#changelist-form table#result_list tr").on("change","td:gt(0) :input",function(){k=!0});a('form#changelist-form button[name="index"]').click(function(a){if(k)return confirm(gettext("You have unsaved changes on individual editable fields. If you run an action, your unsaved changes will be lost."))}); +a('form#changelist-form input[name="_save"]').click(function(c){var d=!1;a("select option:selected",b.actionContainer).each(function(){a(this).val()&&(d=!0)});if(d)return k?confirm(gettext("You have selected an action, but you haven't saved your changes to individual fields yet. Please click OK to save. You'll need to re-run the action.")):confirm(gettext("You have selected an action, and you haven't made any changes on individual fields. You're probably looking for the Go button rather than the Save button."))})}; +a.fn.actions.defaults={actionContainer:"div.actions",counterContainer:"span.action-counter",allContainer:"div.actions span.all",acrossInput:"div.actions input.select-across",acrossQuestions:"div.actions span.question",acrossClears:"div.actions span.clear",allToggle:"#action-toggle",selectedClass:"selected"};a(document).ready(function(){var e=a("tr input.action-select");0 +// +(function() { + 'use strict'; + var DateTimeShortcuts = { + calendars: [], + calendarInputs: [], + clockInputs: [], + clockHours: { + default_: [ + [gettext_noop('Now'), -1], + [gettext_noop('Midnight'), 0], + [gettext_noop('6 a.m.'), 6], + [gettext_noop('Noon'), 12], + [gettext_noop('6 p.m.'), 18] + ] + }, + dismissClockFunc: [], + dismissCalendarFunc: [], + calendarDivName1: 'calendarbox', // name of calendar
    that gets toggled + calendarDivName2: 'calendarin', // name of
    that contains calendar + calendarLinkName: 'calendarlink',// name of the link that is used to toggle + clockDivName: 'clockbox', // name of clock
    that gets toggled + clockLinkName: 'clocklink', // name of the link that is used to toggle + shortCutsClass: 'datetimeshortcuts', // class of the clock and cal shortcuts + timezoneWarningClass: 'timezonewarning', // class of the warning for timezone mismatch + timezoneOffset: 0, + init: function() { + var body = document.getElementsByTagName('body')[0]; + var serverOffset = body.getAttribute('data-admin-utc-offset'); + if (serverOffset) { + var localOffset = new Date().getTimezoneOffset() * -60; + DateTimeShortcuts.timezoneOffset = localOffset - serverOffset; + } + + var inputs = document.getElementsByTagName('input'); + for (var i = 0; i < inputs.length; i++) { + var inp = inputs[i]; + if (inp.getAttribute('type') === 'text' && inp.className.match(/vTimeField/)) { + DateTimeShortcuts.addClock(inp); + DateTimeShortcuts.addTimezoneWarning(inp); + } + else if (inp.getAttribute('type') === 'text' && inp.className.match(/vDateField/)) { + DateTimeShortcuts.addCalendar(inp); + DateTimeShortcuts.addTimezoneWarning(inp); + } + } + }, + // Return the current time while accounting for the server timezone. + now: function() { + var body = document.getElementsByTagName('body')[0]; + var serverOffset = body.getAttribute('data-admin-utc-offset'); + if (serverOffset) { + var localNow = new Date(); + var localOffset = localNow.getTimezoneOffset() * -60; + localNow.setTime(localNow.getTime() + 1000 * (serverOffset - localOffset)); + return localNow; + } else { + return new Date(); + } + }, + // Add a warning when the time zone in the browser and backend do not match. + addTimezoneWarning: function(inp) { + var $ = django.jQuery; + var warningClass = DateTimeShortcuts.timezoneWarningClass; + var timezoneOffset = DateTimeShortcuts.timezoneOffset / 3600; + + // Only warn if there is a time zone mismatch. + if (!timezoneOffset) { + return; + } + + // Check if warning is already there. + if ($(inp).siblings('.' + warningClass).length) { + return; + } + + var message; + if (timezoneOffset > 0) { + message = ngettext( + 'Note: You are %s hour ahead of server time.', + 'Note: You are %s hours ahead of server time.', + timezoneOffset + ); + } + else { + timezoneOffset *= -1; + message = ngettext( + 'Note: You are %s hour behind server time.', + 'Note: You are %s hours behind server time.', + timezoneOffset + ); + } + message = interpolate(message, [timezoneOffset]); + + var $warning = $(''); + $warning.attr('class', warningClass); + $warning.text(message); + + $(inp).parent() + .append($('
    ')) + .append($warning); + }, + // Add clock widget to a given field + addClock: function(inp) { + var num = DateTimeShortcuts.clockInputs.length; + DateTimeShortcuts.clockInputs[num] = inp; + DateTimeShortcuts.dismissClockFunc[num] = function() { DateTimeShortcuts.dismissClock(num); return true; }; + + // Shortcut links (clock icon and "Now" link) + var shortcuts_span = document.createElement('span'); + shortcuts_span.className = DateTimeShortcuts.shortCutsClass; + inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling); + var now_link = document.createElement('a'); + now_link.setAttribute('href', "#"); + now_link.appendChild(document.createTextNode(gettext('Now'))); + now_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.handleClockQuicklink(num, -1); + }); + var clock_link = document.createElement('a'); + clock_link.setAttribute('href', '#'); + clock_link.id = DateTimeShortcuts.clockLinkName + num; + clock_link.addEventListener('click', function(e) { + e.preventDefault(); + // avoid triggering the document click handler to dismiss the clock + e.stopPropagation(); + DateTimeShortcuts.openClock(num); + }); + + quickElement( + 'span', clock_link, '', + 'class', 'clock-icon', + 'title', gettext('Choose a Time') + ); + shortcuts_span.appendChild(document.createTextNode('\u00A0')); + shortcuts_span.appendChild(now_link); + shortcuts_span.appendChild(document.createTextNode('\u00A0|\u00A0')); + shortcuts_span.appendChild(clock_link); + + // Create clock link div + // + // Markup looks like: + //
    + + var clock_box = document.createElement('div'); + clock_box.style.display = 'none'; + clock_box.style.position = 'absolute'; + clock_box.className = 'clockbox module'; + clock_box.setAttribute('id', DateTimeShortcuts.clockDivName + num); + document.body.appendChild(clock_box); + clock_box.addEventListener('click', function(e) { e.stopPropagation(); }); + + quickElement('h2', clock_box, gettext('Choose a time')); + var time_list = quickElement('ul', clock_box); + time_list.className = 'timelist'; + // The list of choices can be overridden in JavaScript like this: + // DateTimeShortcuts.clockHours.name = [['3 a.m.', 3]]; + // where name is the name attribute of the . + var name = typeof DateTimeShortcuts.clockHours[inp.name] === 'undefined' ? 'default_' : inp.name; + DateTimeShortcuts.clockHours[name].forEach(function(element) { + var time_link = quickElement('a', quickElement('li', time_list), gettext(element[0]), 'href', '#'); + time_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.handleClockQuicklink(num, element[1]); + }); + }); + + var cancel_p = quickElement('p', clock_box); + cancel_p.className = 'calendar-cancel'; + var cancel_link = quickElement('a', cancel_p, gettext('Cancel'), 'href', '#'); + cancel_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.dismissClock(num); + }); + + document.addEventListener('keyup', function(event) { + if (event.which === 27) { + // ESC key closes popup + DateTimeShortcuts.dismissClock(num); + event.preventDefault(); + } + }); + }, + openClock: function(num) { + var clock_box = document.getElementById(DateTimeShortcuts.clockDivName + num); + var clock_link = document.getElementById(DateTimeShortcuts.clockLinkName + num); + + // Recalculate the clockbox position + // is it left-to-right or right-to-left layout ? + if (getStyle(document.body, 'direction') !== 'rtl') { + clock_box.style.left = findPosX(clock_link) + 17 + 'px'; + } + else { + // since style's width is in em, it'd be tough to calculate + // px value of it. let's use an estimated px for now + // TODO: IE returns wrong value for findPosX when in rtl mode + // (it returns as it was left aligned), needs to be fixed. + clock_box.style.left = findPosX(clock_link) - 110 + 'px'; + } + clock_box.style.top = Math.max(0, findPosY(clock_link) - 30) + 'px'; + + // Show the clock box + clock_box.style.display = 'block'; + document.addEventListener('click', DateTimeShortcuts.dismissClockFunc[num]); + }, + dismissClock: function(num) { + document.getElementById(DateTimeShortcuts.clockDivName + num).style.display = 'none'; + document.removeEventListener('click', DateTimeShortcuts.dismissClockFunc[num]); + }, + handleClockQuicklink: function(num, val) { + var d; + if (val === -1) { + d = DateTimeShortcuts.now(); + } + else { + d = new Date(1970, 1, 1, val, 0, 0, 0); + } + DateTimeShortcuts.clockInputs[num].value = d.strftime(get_format('TIME_INPUT_FORMATS')[0]); + DateTimeShortcuts.clockInputs[num].focus(); + DateTimeShortcuts.dismissClock(num); + }, + // Add calendar widget to a given field. + addCalendar: function(inp) { + var num = DateTimeShortcuts.calendars.length; + + DateTimeShortcuts.calendarInputs[num] = inp; + DateTimeShortcuts.dismissCalendarFunc[num] = function() { DateTimeShortcuts.dismissCalendar(num); return true; }; + + // Shortcut links (calendar icon and "Today" link) + var shortcuts_span = document.createElement('span'); + shortcuts_span.className = DateTimeShortcuts.shortCutsClass; + inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling); + var today_link = document.createElement('a'); + today_link.setAttribute('href', '#'); + today_link.appendChild(document.createTextNode(gettext('Today'))); + today_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.handleCalendarQuickLink(num, 0); + }); + var cal_link = document.createElement('a'); + cal_link.setAttribute('href', '#'); + cal_link.id = DateTimeShortcuts.calendarLinkName + num; + cal_link.addEventListener('click', function(e) { + e.preventDefault(); + // avoid triggering the document click handler to dismiss the calendar + e.stopPropagation(); + DateTimeShortcuts.openCalendar(num); + }); + quickElement( + 'span', cal_link, '', + 'class', 'date-icon', + 'title', gettext('Choose a Date') + ); + shortcuts_span.appendChild(document.createTextNode('\u00A0')); + shortcuts_span.appendChild(today_link); + shortcuts_span.appendChild(document.createTextNode('\u00A0|\u00A0')); + shortcuts_span.appendChild(cal_link); + + // Create calendarbox div. + // + // Markup looks like: + // + //
    + //

    + // + // February 2003 + //

    + //
    + // + //
    + //
    + // Yesterday | Today | Tomorrow + //
    + //

    Cancel

    + //
    + var cal_box = document.createElement('div'); + cal_box.style.display = 'none'; + cal_box.style.position = 'absolute'; + cal_box.className = 'calendarbox module'; + cal_box.setAttribute('id', DateTimeShortcuts.calendarDivName1 + num); + document.body.appendChild(cal_box); + cal_box.addEventListener('click', function(e) { e.stopPropagation(); }); + + // next-prev links + var cal_nav = quickElement('div', cal_box); + var cal_nav_prev = quickElement('a', cal_nav, '<', 'href', '#'); + cal_nav_prev.className = 'calendarnav-previous'; + cal_nav_prev.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.drawPrev(num); + }); + + var cal_nav_next = quickElement('a', cal_nav, '>', 'href', '#'); + cal_nav_next.className = 'calendarnav-next'; + cal_nav_next.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.drawNext(num); + }); + + // main box + var cal_main = quickElement('div', cal_box, '', 'id', DateTimeShortcuts.calendarDivName2 + num); + cal_main.className = 'calendar'; + DateTimeShortcuts.calendars[num] = new Calendar(DateTimeShortcuts.calendarDivName2 + num, DateTimeShortcuts.handleCalendarCallback(num)); + DateTimeShortcuts.calendars[num].drawCurrent(); + + // calendar shortcuts + var shortcuts = quickElement('div', cal_box); + shortcuts.className = 'calendar-shortcuts'; + var day_link = quickElement('a', shortcuts, gettext('Yesterday'), 'href', '#'); + day_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.handleCalendarQuickLink(num, -1); + }); + shortcuts.appendChild(document.createTextNode('\u00A0|\u00A0')); + day_link = quickElement('a', shortcuts, gettext('Today'), 'href', '#'); + day_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.handleCalendarQuickLink(num, 0); + }); + shortcuts.appendChild(document.createTextNode('\u00A0|\u00A0')); + day_link = quickElement('a', shortcuts, gettext('Tomorrow'), 'href', '#'); + day_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.handleCalendarQuickLink(num, +1); + }); + + // cancel bar + var cancel_p = quickElement('p', cal_box); + cancel_p.className = 'calendar-cancel'; + var cancel_link = quickElement('a', cancel_p, gettext('Cancel'), 'href', '#'); + cancel_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.dismissCalendar(num); + }); + django.jQuery(document).bind('keyup', function(event) { + if (event.which === 27) { + // ESC key closes popup + DateTimeShortcuts.dismissCalendar(num); + event.preventDefault(); + } + }); + }, + openCalendar: function(num) { + var cal_box = document.getElementById(DateTimeShortcuts.calendarDivName1 + num); + var cal_link = document.getElementById(DateTimeShortcuts.calendarLinkName + num); + var inp = DateTimeShortcuts.calendarInputs[num]; + + // Determine if the current value in the input has a valid date. + // If so, draw the calendar with that date's year and month. + if (inp.value) { + var format = get_format('DATE_INPUT_FORMATS')[0]; + var selected = inp.value.strptime(format); + var year = selected.getUTCFullYear(); + var month = selected.getUTCMonth() + 1; + var re = /\d{4}/; + if (re.test(year.toString()) && month >= 1 && month <= 12) { + DateTimeShortcuts.calendars[num].drawDate(month, year, selected); + } + } + + // Recalculate the clockbox position + // is it left-to-right or right-to-left layout ? + if (getStyle(document.body, 'direction') !== 'rtl') { + cal_box.style.left = findPosX(cal_link) + 17 + 'px'; + } + else { + // since style's width is in em, it'd be tough to calculate + // px value of it. let's use an estimated px for now + // TODO: IE returns wrong value for findPosX when in rtl mode + // (it returns as it was left aligned), needs to be fixed. + cal_box.style.left = findPosX(cal_link) - 180 + 'px'; + } + cal_box.style.top = Math.max(0, findPosY(cal_link) - 75) + 'px'; + + cal_box.style.display = 'block'; + document.addEventListener('click', DateTimeShortcuts.dismissCalendarFunc[num]); + }, + dismissCalendar: function(num) { + document.getElementById(DateTimeShortcuts.calendarDivName1 + num).style.display = 'none'; + document.removeEventListener('click', DateTimeShortcuts.dismissCalendarFunc[num]); + }, + drawPrev: function(num) { + DateTimeShortcuts.calendars[num].drawPreviousMonth(); + }, + drawNext: function(num) { + DateTimeShortcuts.calendars[num].drawNextMonth(); + }, + handleCalendarCallback: function(num) { + var format = get_format('DATE_INPUT_FORMATS')[0]; + // the format needs to be escaped a little + format = format.replace('\\', '\\\\'); + format = format.replace('\r', '\\r'); + format = format.replace('\n', '\\n'); + format = format.replace('\t', '\\t'); + format = format.replace("'", "\\'"); + return function(y, m, d) { + DateTimeShortcuts.calendarInputs[num].value = new Date(y, m - 1, d).strftime(format); + DateTimeShortcuts.calendarInputs[num].focus(); + document.getElementById(DateTimeShortcuts.calendarDivName1 + num).style.display = 'none'; + }; + }, + handleCalendarQuickLink: function(num, offset) { + var d = DateTimeShortcuts.now(); + d.setDate(d.getDate() + offset); + DateTimeShortcuts.calendarInputs[num].value = d.strftime(get_format('DATE_INPUT_FORMATS')[0]); + DateTimeShortcuts.calendarInputs[num].focus(); + DateTimeShortcuts.dismissCalendar(num); + } + }; + + window.addEventListener('load', DateTimeShortcuts.init); + window.DateTimeShortcuts = DateTimeShortcuts; +})(); diff --git a/static/admin/js/admin/RelatedObjectLookups.js b/static/admin/js/admin/RelatedObjectLookups.js new file mode 100644 index 0000000..3d4d916 --- /dev/null +++ b/static/admin/js/admin/RelatedObjectLookups.js @@ -0,0 +1,181 @@ +/*global SelectBox, interpolate*/ +// Handles related-objects functionality: lookup link for raw_id_fields +// and Add Another links. + +(function($) { + 'use strict'; + + // IE doesn't accept periods or dashes in the window name, but the element IDs + // we use to generate popup window names may contain them, therefore we map them + // to allowed characters in a reversible way so that we can locate the correct + // element when the popup window is dismissed. + function id_to_windowname(text) { + text = text.replace(/\./g, '__dot__'); + text = text.replace(/\-/g, '__dash__'); + return text; + } + + function windowname_to_id(text) { + text = text.replace(/__dot__/g, '.'); + text = text.replace(/__dash__/g, '-'); + return text; + } + + function showAdminPopup(triggeringLink, name_regexp, add_popup) { + var name = triggeringLink.id.replace(name_regexp, ''); + name = id_to_windowname(name); + var href = triggeringLink.href; + if (add_popup) { + if (href.indexOf('?') === -1) { + href += '?_popup=1'; + } else { + href += '&_popup=1'; + } + } + var win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes'); + win.focus(); + return false; + } + + function showRelatedObjectLookupPopup(triggeringLink) { + return showAdminPopup(triggeringLink, /^lookup_/, true); + } + + function dismissRelatedLookupPopup(win, chosenId) { + var name = windowname_to_id(win.name); + var elem = document.getElementById(name); + if (elem.className.indexOf('vManyToManyRawIdAdminField') !== -1 && elem.value) { + elem.value += ',' + chosenId; + } else { + document.getElementById(name).value = chosenId; + } + win.close(); + } + + function showRelatedObjectPopup(triggeringLink) { + return showAdminPopup(triggeringLink, /^(change|add|delete)_/, false); + } + + function updateRelatedObjectLinks(triggeringLink) { + var $this = $(triggeringLink); + var siblings = $this.nextAll('.change-related, .delete-related'); + if (!siblings.length) { + return; + } + var value = $this.val(); + if (value) { + siblings.each(function() { + var elm = $(this); + elm.attr('href', elm.attr('data-href-template').replace('__fk__', value)); + }); + } else { + siblings.removeAttr('href'); + } + } + + function dismissAddRelatedObjectPopup(win, newId, newRepr) { + var name = windowname_to_id(win.name); + var elem = document.getElementById(name); + if (elem) { + var elemName = elem.nodeName.toUpperCase(); + if (elemName === 'SELECT') { + elem.options[elem.options.length] = new Option(newRepr, newId, true, true); + } else if (elemName === 'INPUT') { + if (elem.className.indexOf('vManyToManyRawIdAdminField') !== -1 && elem.value) { + elem.value += ',' + newId; + } else { + elem.value = newId; + } + } + // Trigger a change event to update related links if required. + $(elem).trigger('change'); + } else { + var toId = name + "_to"; + var o = new Option(newRepr, newId); + SelectBox.add_to_cache(toId, o); + SelectBox.redisplay(toId); + } + win.close(); + } + + function dismissChangeRelatedObjectPopup(win, objId, newRepr, newId) { + var id = windowname_to_id(win.name).replace(/^edit_/, ''); + var selectsSelector = interpolate('#%s, #%s_from, #%s_to', [id, id, id]); + var selects = $(selectsSelector); + selects.find('option').each(function() { + if (this.value === objId) { + this.textContent = newRepr; + this.value = newId; + } + }); + selects.next().find('.select2-selection__rendered').each(function() { + // The element can have a clear button as a child. + // Use the lastChild to modify only the displayed value. + this.lastChild.textContent = newRepr; + this.title = newRepr; + }); + win.close(); + } + + function dismissDeleteRelatedObjectPopup(win, objId) { + var id = windowname_to_id(win.name).replace(/^delete_/, ''); + var selectsSelector = interpolate('#%s, #%s_from, #%s_to', [id, id, id]); + var selects = $(selectsSelector); + selects.find('option').each(function() { + if (this.value === objId) { + $(this).remove(); + } + }).trigger('change'); + win.close(); + } + + // Global for testing purposes + window.id_to_windowname = id_to_windowname; + window.windowname_to_id = windowname_to_id; + + window.showRelatedObjectLookupPopup = showRelatedObjectLookupPopup; + window.dismissRelatedLookupPopup = dismissRelatedLookupPopup; + window.showRelatedObjectPopup = showRelatedObjectPopup; + window.updateRelatedObjectLinks = updateRelatedObjectLinks; + window.dismissAddRelatedObjectPopup = dismissAddRelatedObjectPopup; + window.dismissChangeRelatedObjectPopup = dismissChangeRelatedObjectPopup; + window.dismissDeleteRelatedObjectPopup = dismissDeleteRelatedObjectPopup; + + // Kept for backward compatibility + window.showAddAnotherPopup = showRelatedObjectPopup; + window.dismissAddAnotherPopup = dismissAddRelatedObjectPopup; + + $(document).ready(function() { + $("a[data-popup-opener]").click(function(event) { + event.preventDefault(); + opener.dismissRelatedLookupPopup(window, $(this).data("popup-opener")); + }); + $('body').on('click', '.related-widget-wrapper-link', function(e) { + e.preventDefault(); + if (this.href) { + var event = $.Event('django:show-related', {href: this.href}); + $(this).trigger(event); + if (!event.isDefaultPrevented()) { + showRelatedObjectPopup(this); + } + } + }); + $('body').on('change', '.related-widget-wrapper select', function(e) { + var event = $.Event('django:update-related'); + $(this).trigger(event); + if (!event.isDefaultPrevented()) { + updateRelatedObjectLinks(this); + } + }); + $('.related-widget-wrapper select').trigger('change'); + $('body').on('click', '.related-lookup', function(e) { + e.preventDefault(); + var event = $.Event('django:lookup-related'); + $(this).trigger(event); + if (!event.isDefaultPrevented()) { + showRelatedObjectLookupPopup(this); + } + }); + }); + +})(django.jQuery); diff --git a/static/admin/js/autocomplete.js b/static/admin/js/autocomplete.js new file mode 100644 index 0000000..65c0702 --- /dev/null +++ b/static/admin/js/autocomplete.js @@ -0,0 +1,37 @@ +(function($) { + 'use strict'; + var init = function($element, options) { + var settings = $.extend({ + ajax: { + data: function(params) { + return { + term: params.term, + page: params.page + }; + } + } + }, options); + $element.select2(settings); + }; + + $.fn.djangoAdminSelect2 = function(options) { + var settings = $.extend({}, options); + $.each(this, function(i, element) { + var $element = $(element); + init($element, settings); + }); + return this; + }; + + $(function() { + // Initialize all autocomplete widgets except the one in the template + // form used when a new formset is added. + $('.admin-autocomplete').not('[name*=__prefix__]').djangoAdminSelect2(); + }); + + $(document).on('formset:added', (function() { + return function(event, $newFormset) { + return $newFormset.find('.admin-autocomplete').djangoAdminSelect2(); + }; + })(this)); +}(django.jQuery)); diff --git a/static/admin/js/calendar.js b/static/admin/js/calendar.js new file mode 100644 index 0000000..a4c047a --- /dev/null +++ b/static/admin/js/calendar.js @@ -0,0 +1,208 @@ +/*global gettext, pgettext, get_format, quickElement, removeChildren*/ +/* +calendar.js - Calendar functions by Adrian Holovaty +depends on core.js for utility functions like removeChildren or quickElement +*/ + +(function() { + 'use strict'; + // CalendarNamespace -- Provides a collection of HTML calendar-related helper functions + var CalendarNamespace = { + monthsOfYear: [ + gettext('January'), + gettext('February'), + gettext('March'), + gettext('April'), + gettext('May'), + gettext('June'), + gettext('July'), + gettext('August'), + gettext('September'), + gettext('October'), + gettext('November'), + gettext('December') + ], + daysOfWeek: [ + pgettext('one letter Sunday', 'S'), + pgettext('one letter Monday', 'M'), + pgettext('one letter Tuesday', 'T'), + pgettext('one letter Wednesday', 'W'), + pgettext('one letter Thursday', 'T'), + pgettext('one letter Friday', 'F'), + pgettext('one letter Saturday', 'S') + ], + firstDayOfWeek: parseInt(get_format('FIRST_DAY_OF_WEEK')), + isLeapYear: function(year) { + return (((year % 4) === 0) && ((year % 100) !== 0 ) || ((year % 400) === 0)); + }, + getDaysInMonth: function(month, year) { + var days; + if (month === 1 || month === 3 || month === 5 || month === 7 || month === 8 || month === 10 || month === 12) { + days = 31; + } + else if (month === 4 || month === 6 || month === 9 || month === 11) { + days = 30; + } + else if (month === 2 && CalendarNamespace.isLeapYear(year)) { + days = 29; + } + else { + days = 28; + } + return days; + }, + draw: function(month, year, div_id, callback, selected) { // month = 1-12, year = 1-9999 + var today = new Date(); + var todayDay = today.getDate(); + var todayMonth = today.getMonth() + 1; + var todayYear = today.getFullYear(); + var todayClass = ''; + + // Use UTC functions here because the date field does not contain time + // and using the UTC function variants prevent the local time offset + // from altering the date, specifically the day field. For example: + // + // ``` + // var x = new Date('2013-10-02'); + // var day = x.getDate(); + // ``` + // + // The day variable above will be 1 instead of 2 in, say, US Pacific time + // zone. + var isSelectedMonth = false; + if (typeof selected !== 'undefined') { + isSelectedMonth = (selected.getUTCFullYear() === year && (selected.getUTCMonth() + 1) === month); + } + + month = parseInt(month); + year = parseInt(year); + var calDiv = document.getElementById(div_id); + removeChildren(calDiv); + var calTable = document.createElement('table'); + quickElement('caption', calTable, CalendarNamespace.monthsOfYear[month - 1] + ' ' + year); + var tableBody = quickElement('tbody', calTable); + + // Draw days-of-week header + var tableRow = quickElement('tr', tableBody); + for (var i = 0; i < 7; i++) { + quickElement('th', tableRow, CalendarNamespace.daysOfWeek[(i + CalendarNamespace.firstDayOfWeek) % 7]); + } + + var startingPos = new Date(year, month - 1, 1 - CalendarNamespace.firstDayOfWeek).getDay(); + var days = CalendarNamespace.getDaysInMonth(month, year); + + var nonDayCell; + + // Draw blanks before first of month + tableRow = quickElement('tr', tableBody); + for (i = 0; i < startingPos; i++) { + nonDayCell = quickElement('td', tableRow, ' '); + nonDayCell.className = "nonday"; + } + + function calendarMonth(y, m) { + function onClick(e) { + e.preventDefault(); + callback(y, m, this.textContent); + } + return onClick; + } + + // Draw days of month + var currentDay = 1; + for (i = startingPos; currentDay <= days; i++) { + if (i % 7 === 0 && currentDay !== 1) { + tableRow = quickElement('tr', tableBody); + } + if ((currentDay === todayDay) && (month === todayMonth) && (year === todayYear)) { + todayClass = 'today'; + } else { + todayClass = ''; + } + + // use UTC function; see above for explanation. + if (isSelectedMonth && currentDay === selected.getUTCDate()) { + if (todayClass !== '') { + todayClass += " "; + } + todayClass += "selected"; + } + + var cell = quickElement('td', tableRow, '', 'class', todayClass); + var link = quickElement('a', cell, currentDay, 'href', '#'); + link.addEventListener('click', calendarMonth(year, month)); + currentDay++; + } + + // Draw blanks after end of month (optional, but makes for valid code) + while (tableRow.childNodes.length < 7) { + nonDayCell = quickElement('td', tableRow, ' '); + nonDayCell.className = "nonday"; + } + + calDiv.appendChild(calTable); + } + }; + + // Calendar -- A calendar instance + function Calendar(div_id, callback, selected) { + // div_id (string) is the ID of the element in which the calendar will + // be displayed + // callback (string) is the name of a JavaScript function that will be + // called with the parameters (year, month, day) when a day in the + // calendar is clicked + this.div_id = div_id; + this.callback = callback; + this.today = new Date(); + this.currentMonth = this.today.getMonth() + 1; + this.currentYear = this.today.getFullYear(); + if (typeof selected !== 'undefined') { + this.selected = selected; + } + } + Calendar.prototype = { + drawCurrent: function() { + CalendarNamespace.draw(this.currentMonth, this.currentYear, this.div_id, this.callback, this.selected); + }, + drawDate: function(month, year, selected) { + this.currentMonth = month; + this.currentYear = year; + + if(selected) { + this.selected = selected; + } + + this.drawCurrent(); + }, + drawPreviousMonth: function() { + if (this.currentMonth === 1) { + this.currentMonth = 12; + this.currentYear--; + } + else { + this.currentMonth--; + } + this.drawCurrent(); + }, + drawNextMonth: function() { + if (this.currentMonth === 12) { + this.currentMonth = 1; + this.currentYear++; + } + else { + this.currentMonth++; + } + this.drawCurrent(); + }, + drawPreviousYear: function() { + this.currentYear--; + this.drawCurrent(); + }, + drawNextYear: function() { + this.currentYear++; + this.drawCurrent(); + } + }; + window.Calendar = Calendar; + window.CalendarNamespace = CalendarNamespace; +})(); diff --git a/static/admin/js/cancel.js b/static/admin/js/cancel.js new file mode 100644 index 0000000..b641387 --- /dev/null +++ b/static/admin/js/cancel.js @@ -0,0 +1,9 @@ +(function($) { + 'use strict'; + $(function() { + $('.cancel-link').click(function(e) { + e.preventDefault(); + window.history.back(); + }); + }); +})(django.jQuery); diff --git a/static/admin/js/change_form.js b/static/admin/js/change_form.js new file mode 100644 index 0000000..4797383 --- /dev/null +++ b/static/admin/js/change_form.js @@ -0,0 +1,20 @@ +/*global showAddAnotherPopup, showRelatedObjectLookupPopup showRelatedObjectPopup updateRelatedObjectLinks*/ + +(function($) { + 'use strict'; + $(document).ready(function() { + var modelName = $('#django-admin-form-add-constants').data('modelName'); + $('body').on('click', '.add-another', function(e) { + e.preventDefault(); + var event = $.Event('django:add-another-related'); + $(this).trigger(event); + if (!event.isDefaultPrevented()) { + showAddAnotherPopup(this); + } + }); + + if (modelName) { + $('form#' + modelName + '_form :input:visible:enabled:first').focus(); + } + }); +})(django.jQuery); diff --git a/static/admin/js/collapse.js b/static/admin/js/collapse.js new file mode 100644 index 0000000..7cb9362 --- /dev/null +++ b/static/admin/js/collapse.js @@ -0,0 +1,26 @@ +/*global gettext*/ +(function($) { + 'use strict'; + $(document).ready(function() { + // Add anchor tag for Show/Hide link + $("fieldset.collapse").each(function(i, elem) { + // Don't hide if fields in this fieldset have errors + if ($(elem).find("div.errors").length === 0) { + $(elem).addClass("collapsed").find("h2").first().append(' (' + gettext("Show") + + ')'); + } + }); + // Add toggle to anchor tag + $("fieldset.collapse a.collapse-toggle").click(function(ev) { + if ($(this).closest("fieldset").hasClass("collapsed")) { + // Show + $(this).text(gettext("Hide")).closest("fieldset").removeClass("collapsed").trigger("show.fieldset", [$(this).attr("id")]); + } else { + // Hide + $(this).text(gettext("Show")).closest("fieldset").addClass("collapsed").trigger("hide.fieldset", [$(this).attr("id")]); + } + return false; + }); + }); +})(django.jQuery); diff --git a/static/admin/js/collapse.min.js b/static/admin/js/collapse.min.js new file mode 100644 index 0000000..669282f --- /dev/null +++ b/static/admin/js/collapse.min.js @@ -0,0 +1,5 @@ +var $jscomp={scope:{},findInternal:function(a,c,b){a instanceof String&&(a=String(a));for(var d=a.length,e=0;e'+gettext("Show")+")")});a("fieldset.collapse a.collapse-toggle").click(function(c){a(this).closest("fieldset").hasClass("collapsed")?a(this).text(gettext("Hide")).closest("fieldset").removeClass("collapsed").trigger("show.fieldset",[a(this).attr("id")]):a(this).text(gettext("Show")).closest("fieldset").addClass("collapsed").trigger("hide.fieldset", +[a(this).attr("id")]);return!1})})})(django.jQuery); diff --git a/static/admin/js/core.js b/static/admin/js/core.js new file mode 100644 index 0000000..2989a94 --- /dev/null +++ b/static/admin/js/core.js @@ -0,0 +1,212 @@ +// Core javascript helper functions + +// basic browser identification & version +var isOpera = (navigator.userAgent.indexOf("Opera") >= 0) && parseFloat(navigator.appVersion); +var isIE = ((document.all) && (!isOpera)) && parseFloat(navigator.appVersion.split("MSIE ")[1].split(";")[0]); + +// quickElement(tagType, parentReference [, textInChildNode, attribute, attributeValue ...]); +function quickElement() { + 'use strict'; + var obj = document.createElement(arguments[0]); + if (arguments[2]) { + var textNode = document.createTextNode(arguments[2]); + obj.appendChild(textNode); + } + var len = arguments.length; + for (var i = 3; i < len; i += 2) { + obj.setAttribute(arguments[i], arguments[i + 1]); + } + arguments[1].appendChild(obj); + return obj; +} + +// "a" is reference to an object +function removeChildren(a) { + 'use strict'; + while (a.hasChildNodes()) { + a.removeChild(a.lastChild); + } +} + +// ---------------------------------------------------------------------------- +// Find-position functions by PPK +// See http://www.quirksmode.org/js/findpos.html +// ---------------------------------------------------------------------------- +function findPosX(obj) { + 'use strict'; + var curleft = 0; + if (obj.offsetParent) { + while (obj.offsetParent) { + curleft += obj.offsetLeft - ((isOpera) ? 0 : obj.scrollLeft); + obj = obj.offsetParent; + } + // IE offsetParent does not include the top-level + if (isIE && obj.parentElement) { + curleft += obj.offsetLeft - obj.scrollLeft; + } + } else if (obj.x) { + curleft += obj.x; + } + return curleft; +} + +function findPosY(obj) { + 'use strict'; + var curtop = 0; + if (obj.offsetParent) { + while (obj.offsetParent) { + curtop += obj.offsetTop - ((isOpera) ? 0 : obj.scrollTop); + obj = obj.offsetParent; + } + // IE offsetParent does not include the top-level + if (isIE && obj.parentElement) { + curtop += obj.offsetTop - obj.scrollTop; + } + } else if (obj.y) { + curtop += obj.y; + } + return curtop; +} + +//----------------------------------------------------------------------------- +// Date object extensions +// ---------------------------------------------------------------------------- +(function() { + 'use strict'; + Date.prototype.getTwelveHours = function() { + var hours = this.getHours(); + if (hours === 0) { + return 12; + } + else { + return hours <= 12 ? hours : hours - 12; + } + }; + + Date.prototype.getTwoDigitMonth = function() { + return (this.getMonth() < 9) ? '0' + (this.getMonth() + 1) : (this.getMonth() + 1); + }; + + Date.prototype.getTwoDigitDate = function() { + return (this.getDate() < 10) ? '0' + this.getDate() : this.getDate(); + }; + + Date.prototype.getTwoDigitTwelveHour = function() { + return (this.getTwelveHours() < 10) ? '0' + this.getTwelveHours() : this.getTwelveHours(); + }; + + Date.prototype.getTwoDigitHour = function() { + return (this.getHours() < 10) ? '0' + this.getHours() : this.getHours(); + }; + + Date.prototype.getTwoDigitMinute = function() { + return (this.getMinutes() < 10) ? '0' + this.getMinutes() : this.getMinutes(); + }; + + Date.prototype.getTwoDigitSecond = function() { + return (this.getSeconds() < 10) ? '0' + this.getSeconds() : this.getSeconds(); + }; + + Date.prototype.getHourMinute = function() { + return this.getTwoDigitHour() + ':' + this.getTwoDigitMinute(); + }; + + Date.prototype.getHourMinuteSecond = function() { + return this.getTwoDigitHour() + ':' + this.getTwoDigitMinute() + ':' + this.getTwoDigitSecond(); + }; + + Date.prototype.getFullMonthName = function() { + return typeof window.CalendarNamespace === "undefined" + ? this.getTwoDigitMonth() + : window.CalendarNamespace.monthsOfYear[this.getMonth()]; + }; + + Date.prototype.strftime = function(format) { + var fields = { + B: this.getFullMonthName(), + c: this.toString(), + d: this.getTwoDigitDate(), + H: this.getTwoDigitHour(), + I: this.getTwoDigitTwelveHour(), + m: this.getTwoDigitMonth(), + M: this.getTwoDigitMinute(), + p: (this.getHours() >= 12) ? 'PM' : 'AM', + S: this.getTwoDigitSecond(), + w: '0' + this.getDay(), + x: this.toLocaleDateString(), + X: this.toLocaleTimeString(), + y: ('' + this.getFullYear()).substr(2, 4), + Y: '' + this.getFullYear(), + '%': '%' + }; + var result = '', i = 0; + while (i < format.length) { + if (format.charAt(i) === '%') { + result = result + fields[format.charAt(i + 1)]; + ++i; + } + else { + result = result + format.charAt(i); + } + ++i; + } + return result; + }; + +// ---------------------------------------------------------------------------- +// String object extensions +// ---------------------------------------------------------------------------- + String.prototype.pad_left = function(pad_length, pad_string) { + var new_string = this; + for (var i = 0; new_string.length < pad_length; i++) { + new_string = pad_string + new_string; + } + return new_string; + }; + + String.prototype.strptime = function(format) { + var split_format = format.split(/[.\-/]/); + var date = this.split(/[.\-/]/); + var i = 0; + var day, month, year; + while (i < split_format.length) { + switch (split_format[i]) { + case "%d": + day = date[i]; + break; + case "%m": + month = date[i] - 1; + break; + case "%Y": + year = date[i]; + break; + case "%y": + year = date[i]; + break; + } + ++i; + } + // Create Date object from UTC since the parsed value is supposed to be + // in UTC, not local time. Also, the calendar uses UTC functions for + // date extraction. + return new Date(Date.UTC(year, month, day)); + }; + +})(); +// ---------------------------------------------------------------------------- +// Get the computed style for and element +// ---------------------------------------------------------------------------- +function getStyle(oElm, strCssRule) { + 'use strict'; + var strValue = ""; + if(document.defaultView && document.defaultView.getComputedStyle) { + strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule); + } + else if(oElm.currentStyle) { + strCssRule = strCssRule.replace(/\-(\w)/g, function(strMatch, p1) { + return p1.toUpperCase(); + }); + strValue = oElm.currentStyle[strCssRule]; + } + return strValue; +} diff --git a/static/admin/js/inlines.js b/static/admin/js/inlines.js new file mode 100644 index 0000000..c8eb997 --- /dev/null +++ b/static/admin/js/inlines.js @@ -0,0 +1,295 @@ +/*global DateTimeShortcuts, SelectFilter*/ +/** + * Django admin inlines + * + * Based on jQuery Formset 1.1 + * @author Stanislaus Madueke (stan DOT madueke AT gmail DOT com) + * @requires jQuery 1.2.6 or later + * + * Copyright (c) 2009, Stanislaus Madueke + * All rights reserved. + * + * Spiced up with Code from Zain Memon's GSoC project 2009 + * and modified for Django by Jannis Leidel, Travis Swicegood and Julien Phalip. + * + * Licensed under the New BSD License + * See: http://www.opensource.org/licenses/bsd-license.php + */ +(function($) { + 'use strict'; + $.fn.formset = function(opts) { + var options = $.extend({}, $.fn.formset.defaults, opts); + var $this = $(this); + var $parent = $this.parent(); + var updateElementIndex = function(el, prefix, ndx) { + var id_regex = new RegExp("(" + prefix + "-(\\d+|__prefix__))"); + var replacement = prefix + "-" + ndx; + if ($(el).prop("for")) { + $(el).prop("for", $(el).prop("for").replace(id_regex, replacement)); + } + if (el.id) { + el.id = el.id.replace(id_regex, replacement); + } + if (el.name) { + el.name = el.name.replace(id_regex, replacement); + } + }; + var totalForms = $("#id_" + options.prefix + "-TOTAL_FORMS").prop("autocomplete", "off"); + var nextIndex = parseInt(totalForms.val(), 10); + var maxForms = $("#id_" + options.prefix + "-MAX_NUM_FORMS").prop("autocomplete", "off"); + // only show the add button if we are allowed to add more items, + // note that max_num = None translates to a blank string. + var showAddButton = maxForms.val() === '' || (maxForms.val() - totalForms.val()) > 0; + $this.each(function(i) { + $(this).not("." + options.emptyCssClass).addClass(options.formCssClass); + }); + if ($this.length && showAddButton) { + var addButton = options.addButton; + if (addButton === null) { + if ($this.prop("tagName") === "TR") { + // If forms are laid out as table rows, insert the + // "add" button in a new table row: + var numCols = this.eq(-1).children().length; + $parent.append('' + options.addText + ""); + addButton = $parent.find("tr:last a"); + } else { + // Otherwise, insert it immediately after the last form: + $this.filter(":last").after('"); + addButton = $this.filter(":last").next().find("a"); + } + } + addButton.click(function(e) { + e.preventDefault(); + var template = $("#" + options.prefix + "-empty"); + var row = template.clone(true); + row.removeClass(options.emptyCssClass) + .addClass(options.formCssClass) + .attr("id", options.prefix + "-" + nextIndex); + if (row.is("tr")) { + // If the forms are laid out in table rows, insert + // the remove button into the last table cell: + row.children(":last").append('"); + } else if (row.is("ul") || row.is("ol")) { + // If they're laid out as an ordered/unordered list, + // insert an
  • after the last list item: + row.append('
  • ' + options.deleteText + "
  • "); + } else { + // Otherwise, just insert the remove button as the + // last child element of the form's container: + row.children(":first").append('' + options.deleteText + ""); + } + row.find("*").each(function() { + updateElementIndex(this, options.prefix, totalForms.val()); + }); + // Insert the new form when it has been fully edited + row.insertBefore($(template)); + // Update number of total forms + $(totalForms).val(parseInt(totalForms.val(), 10) + 1); + nextIndex += 1; + // Hide add button in case we've hit the max, except we want to add infinitely + if ((maxForms.val() !== '') && (maxForms.val() - totalForms.val()) <= 0) { + addButton.parent().hide(); + } + // The delete button of each row triggers a bunch of other things + row.find("a." + options.deleteCssClass).click(function(e1) { + e1.preventDefault(); + // Remove the parent form containing this button: + row.remove(); + nextIndex -= 1; + // If a post-delete callback was provided, call it with the deleted form: + if (options.removed) { + options.removed(row); + } + $(document).trigger('formset:removed', [row, options.prefix]); + // Update the TOTAL_FORMS form count. + var forms = $("." + options.formCssClass); + $("#id_" + options.prefix + "-TOTAL_FORMS").val(forms.length); + // Show add button again once we drop below max + if ((maxForms.val() === '') || (maxForms.val() - forms.length) > 0) { + addButton.parent().show(); + } + // Also, update names and ids for all remaining form controls + // so they remain in sequence: + var i, formCount; + var updateElementCallback = function() { + updateElementIndex(this, options.prefix, i); + }; + for (i = 0, formCount = forms.length; i < formCount; i++) { + updateElementIndex($(forms).get(i), options.prefix, i); + $(forms.get(i)).find("*").each(updateElementCallback); + } + }); + // If a post-add callback was supplied, call it with the added form: + if (options.added) { + options.added(row); + } + $(document).trigger('formset:added', [row, options.prefix]); + }); + } + return this; + }; + + /* Setup plugin defaults */ + $.fn.formset.defaults = { + prefix: "form", // The form prefix for your django formset + addText: "add another", // Text for the add link + deleteText: "remove", // Text for the delete link + addCssClass: "add-row", // CSS class applied to the add link + deleteCssClass: "delete-row", // CSS class applied to the delete link + emptyCssClass: "empty-row", // CSS class applied to the empty row + formCssClass: "dynamic-form", // CSS class applied to each form in a formset + added: null, // Function called each time a new form is added + removed: null, // Function called each time a form is deleted + addButton: null // Existing add button to use + }; + + + // Tabular inlines --------------------------------------------------------- + $.fn.tabularFormset = function(options) { + var $rows = $(this); + var alternatingRows = function(row) { + $($rows.selector).not(".add-row").removeClass("row1 row2") + .filter(":even").addClass("row1").end() + .filter(":odd").addClass("row2"); + }; + + var reinitDateTimeShortCuts = function() { + // Reinitialize the calendar and clock widgets by force + if (typeof DateTimeShortcuts !== "undefined") { + $(".datetimeshortcuts").remove(); + DateTimeShortcuts.init(); + } + }; + + var updateSelectFilter = function() { + // If any SelectFilter widgets are a part of the new form, + // instantiate a new SelectFilter instance for it. + if (typeof SelectFilter !== 'undefined') { + $('.selectfilter').each(function(index, value) { + var namearr = value.name.split('-'); + SelectFilter.init(value.id, namearr[namearr.length - 1], false); + }); + $('.selectfilterstacked').each(function(index, value) { + var namearr = value.name.split('-'); + SelectFilter.init(value.id, namearr[namearr.length - 1], true); + }); + } + }; + + var initPrepopulatedFields = function(row) { + row.find('.prepopulated_field').each(function() { + var field = $(this), + input = field.find('input, select, textarea'), + dependency_list = input.data('dependency_list') || [], + dependencies = []; + $.each(dependency_list, function(i, field_name) { + dependencies.push('#' + row.find('.field-' + field_name).find('input, select, textarea').attr('id')); + }); + if (dependencies.length) { + input.prepopulate(dependencies, input.attr('maxlength')); + } + }); + }; + + $rows.formset({ + prefix: options.prefix, + addText: options.addText, + formCssClass: "dynamic-" + options.prefix, + deleteCssClass: "inline-deletelink", + deleteText: options.deleteText, + emptyCssClass: "empty-form", + removed: alternatingRows, + added: function(row) { + initPrepopulatedFields(row); + reinitDateTimeShortCuts(); + updateSelectFilter(); + alternatingRows(row); + }, + addButton: options.addButton + }); + + return $rows; + }; + + // Stacked inlines --------------------------------------------------------- + $.fn.stackedFormset = function(options) { + var $rows = $(this); + var updateInlineLabel = function(row) { + $($rows.selector).find(".inline_label").each(function(i) { + var count = i + 1; + $(this).html($(this).html().replace(/(#\d+)/g, "#" + count)); + }); + }; + + var reinitDateTimeShortCuts = function() { + // Reinitialize the calendar and clock widgets by force, yuck. + if (typeof DateTimeShortcuts !== "undefined") { + $(".datetimeshortcuts").remove(); + DateTimeShortcuts.init(); + } + }; + + var updateSelectFilter = function() { + // If any SelectFilter widgets were added, instantiate a new instance. + if (typeof SelectFilter !== "undefined") { + $(".selectfilter").each(function(index, value) { + var namearr = value.name.split('-'); + SelectFilter.init(value.id, namearr[namearr.length - 1], false); + }); + $(".selectfilterstacked").each(function(index, value) { + var namearr = value.name.split('-'); + SelectFilter.init(value.id, namearr[namearr.length - 1], true); + }); + } + }; + + var initPrepopulatedFields = function(row) { + row.find('.prepopulated_field').each(function() { + var field = $(this), + input = field.find('input, select, textarea'), + dependency_list = input.data('dependency_list') || [], + dependencies = []; + $.each(dependency_list, function(i, field_name) { + dependencies.push('#' + row.find('.form-row .field-' + field_name).find('input, select, textarea').attr('id')); + }); + if (dependencies.length) { + input.prepopulate(dependencies, input.attr('maxlength')); + } + }); + }; + + $rows.formset({ + prefix: options.prefix, + addText: options.addText, + formCssClass: "dynamic-" + options.prefix, + deleteCssClass: "inline-deletelink", + deleteText: options.deleteText, + emptyCssClass: "empty-form", + removed: updateInlineLabel, + added: function(row) { + initPrepopulatedFields(row); + reinitDateTimeShortCuts(); + updateSelectFilter(); + updateInlineLabel(row); + }, + addButton: options.addButton + }); + + return $rows; + }; + + $(document).ready(function() { + $(".js-inline-admin-formset").each(function() { + var data = $(this).data(), + inlineOptions = data.inlineFormset; + switch(data.inlineType) { + case "stacked": + $(inlineOptions.name + "-group .inline-related").stackedFormset(inlineOptions.options); + break; + case "tabular": + $(inlineOptions.name + "-group .tabular.inline-related tbody:first > tr").tabularFormset(inlineOptions.options); + break; + } + }); + }); +})(django.jQuery); diff --git a/static/admin/js/inlines.min.js b/static/admin/js/inlines.min.js new file mode 100644 index 0000000..3f50ab9 --- /dev/null +++ b/static/admin/js/inlines.min.js @@ -0,0 +1,13 @@ +var $jscomp={scope:{},findInternal:function(b,c,a){b instanceof String&&(b=String(b));for(var d=b.length,e=0;e'+a.addText+""),k=c.find("tr:last a")):(d.filter(":last").after('"),k=d.filter(":last").next().find("a")));k.click(function(c){c.preventDefault();c=b("#"+a.prefix+"-empty"); +var d=c.clone(!0);d.removeClass(a.emptyCssClass).addClass(a.formCssClass).attr("id",a.prefix+"-"+l);d.is("tr")?d.children(":last").append('"):d.is("ul")||d.is("ol")?d.append('
  • '+a.deleteText+"
  • "):d.children(":first").append(''+a.deleteText+"");d.find("*").each(function(){e(this,a.prefix,f.val())});d.insertBefore(b(c)); +b(f).val(parseInt(f.val(),10)+1);l+=1;""!==h.val()&&0>=h.val()-f.val()&&k.parent().hide();d.find("a."+a.deleteCssClass).click(function(c){c.preventDefault();d.remove();--l;a.removed&&a.removed(d);b(document).trigger("formset:removed",[d,a.prefix]);c=b("."+a.formCssClass);b("#id_"+a.prefix+"-TOTAL_FORMS").val(c.length);(""===h.val()||0 tr").tabularFormset(a.options)}})})})(django.jQuery); diff --git a/static/admin/js/jquery.init.js b/static/admin/js/jquery.init.js new file mode 100644 index 0000000..f3ac162 --- /dev/null +++ b/static/admin/js/jquery.init.js @@ -0,0 +1,8 @@ +/*global django:true, jQuery:false*/ +/* Puts the included jQuery into our own namespace using noConflict and passing + * it 'true'. This ensures that the included jQuery doesn't pollute the global + * namespace (i.e. this preserves pre-existing values for both window.$ and + * window.jQuery). + */ +var django = django || {}; +django.jQuery = jQuery.noConflict(true); diff --git a/static/admin/js/popup_response.js b/static/admin/js/popup_response.js new file mode 100644 index 0000000..b4a07e7 --- /dev/null +++ b/static/admin/js/popup_response.js @@ -0,0 +1,16 @@ +/*global opener */ +(function() { + 'use strict'; + var initData = JSON.parse(document.getElementById('django-admin-popup-response-constants').dataset.popupResponse); + switch(initData.action) { + case 'change': + opener.dismissChangeRelatedObjectPopup(window, initData.value, initData.obj, initData.new_value); + break; + case 'delete': + opener.dismissDeleteRelatedObjectPopup(window, initData.value); + break; + default: + opener.dismissAddRelatedObjectPopup(window, initData.value, initData.obj); + break; + } +})(); diff --git a/static/admin/js/prepopulate.js b/static/admin/js/prepopulate.js new file mode 100644 index 0000000..5d4b0e8 --- /dev/null +++ b/static/admin/js/prepopulate.js @@ -0,0 +1,42 @@ +/*global URLify*/ +(function($) { + 'use strict'; + $.fn.prepopulate = function(dependencies, maxLength, allowUnicode) { + /* + Depends on urlify.js + Populates a selected field with the values of the dependent fields, + URLifies and shortens the string. + dependencies - array of dependent fields ids + maxLength - maximum length of the URLify'd string + allowUnicode - Unicode support of the URLify'd string + */ + return this.each(function() { + var prepopulatedField = $(this); + + var populate = function() { + // Bail if the field's value has been changed by the user + if (prepopulatedField.data('_changed')) { + return; + } + + var values = []; + $.each(dependencies, function(i, field) { + field = $(field); + if (field.val().length > 0) { + values.push(field.val()); + } + }); + prepopulatedField.val(URLify(values.join(' '), maxLength, allowUnicode)); + }; + + prepopulatedField.data('_changed', false); + prepopulatedField.change(function() { + prepopulatedField.data('_changed', true); + }); + + if (!prepopulatedField.val()) { + $(dependencies.join(',')).keyup(populate).change(populate).focus(populate); + } + }); + }; +})(django.jQuery); diff --git a/static/admin/js/prepopulate.min.js b/static/admin/js/prepopulate.min.js new file mode 100644 index 0000000..75f3c17 --- /dev/null +++ b/static/admin/js/prepopulate.min.js @@ -0,0 +1 @@ +(function(c){c.fn.prepopulate=function(e,f,g){return this.each(function(){var a=c(this),b=function(){if(!a.data("_changed")){var b=[];c.each(e,function(a,d){d=c(d);0= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = jQuery.isArray( copy ) ) ) ) { + + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray( src ) ? src : []; + + } else { + clone = src && jQuery.isPlainObject( src ) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isFunction: function( obj ) { + return jQuery.type( obj ) === "function"; + }, + + isArray: Array.isArray, + + isWindow: function( obj ) { + return obj != null && obj === obj.window; + }, + + isNumeric: function( obj ) { + + // parseFloat NaNs numeric-cast false positives (null|true|false|"") + // ...but misinterprets leading-number strings, particularly hex literals ("0x...") + // subtraction forces infinities to NaN + // adding 1 corrects loss of precision from parseFloat (#15100) + var realStringObj = obj && obj.toString(); + return !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0; + }, + + isPlainObject: function( obj ) { + var key; + + // Not plain objects: + // - Any object or value whose internal [[Class]] property is not "[object Object]" + // - DOM nodes + // - window + if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + // Not own constructor property must be Object + if ( obj.constructor && + !hasOwn.call( obj, "constructor" ) && + !hasOwn.call( obj.constructor.prototype || {}, "isPrototypeOf" ) ) { + return false; + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own + for ( key in obj ) {} + + return key === undefined || hasOwn.call( obj, key ); + }, + + isEmptyObject: function( obj ) { + var name; + for ( name in obj ) { + return false; + } + return true; + }, + + type: function( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android<4.0, iOS<6 (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; + }, + + // Evaluates a script in a global context + globalEval: function( code ) { + var script, + indirect = eval; + + code = jQuery.trim( code ); + + if ( code ) { + + // If the code includes a valid, prologue position + // strict mode pragma, execute code by injecting a + // script tag into the document. + if ( code.indexOf( "use strict" ) === 1 ) { + script = document.createElement( "script" ); + script.text = code; + document.head.appendChild( script ).parentNode.removeChild( script ); + } else { + + // Otherwise, avoid the DOM node creation, insertion + // and removal by using an indirect global eval + + indirect( code ); + } + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Support: IE9-11+ + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // Support: Android<4.1 + trim: function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var tmp, args, proxy; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + now: Date.now, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +// JSHint would error on this code due to the Symbol not being defined in ES5. +// Defining this global in .jshintrc would create a danger of using the global +// unguarded in another place, it seems safer to just disable JSHint for these +// three lines. +/* jshint ignore: start */ +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} +/* jshint ignore: end */ + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), +function( i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +} ); + +function isArrayLike( obj ) { + + // Support: iOS 8.2 (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = jQuery.type( obj ); + + if ( type === "function" || jQuery.isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.2.1 + * http://sizzlejs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2015-10-17 + */ +(function( window ) { + +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // General-purpose constants + MAX_NEGATIVE = 1 << 31, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf as it's faster than native + // http://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + rescape = /'|\\/g, + + // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox<24 + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + high < 0 ? + // BMP codepoint + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }; + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, nidselect, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { + + // ID selector + if ( (m = match[1]) ) { + + // Document context + if ( nodeType === 9 ) { + if ( (elem = context.getElementById( m )) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && (elem = newContext.getElementById( m )) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( (m = match[3]) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !compilerCache[ selector + " " ] && + (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + + if ( nodeType !== 1 ) { + newContext = context; + newSelector = selector; + + // qSA looks outside Element context, which is not what we want + // Thanks to Andrew Dupont for this workaround technique + // Support: IE <=8 + // Exclude object elements + } else if ( context.nodeName.toLowerCase() !== "object" ) { + + // Capture the context ID, setting it first if necessary + if ( (nid = context.getAttribute( "id" )) ) { + nid = nid.replace( rescape, "\\$&" ); + } else { + context.setAttribute( "id", (nid = expando) ); + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + nidselect = ridentifier.test( nid ) ? "#" + nid : "[id='" + nid + "']"; + while ( i-- ) { + groups[i] = nidselect + " " + toSelector( groups[i] ); + } + newSelector = groups.join( "," ); + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key + " " ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created div and expects a boolean result + */ +function assert( fn ) { + var div = document.createElement("div"); + + try { + return !!fn( div ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( div.parentNode ) { + div.parentNode.removeChild( div ); + } + // release memory in IE + div = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + ( ~b.sourceIndex || MAX_NEGATIVE ) - + ( ~a.sourceIndex || MAX_NEGATIVE ); + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, parent, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9-11, Edge + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + if ( (parent = document.defaultView) && parent.top !== parent ) { + // Support: IE 11 + if ( parent.addEventListener ) { + parent.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( parent.attachEvent ) { + parent.attachEvent( "onunload", unloadHandler ); + } + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert(function( div ) { + div.className = "i"; + return !div.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( div ) { + div.appendChild( document.createComment("") ); + return !div.getElementsByTagName("*").length; + }); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( div ) { + docElem.appendChild( div ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + }); + + // ID find and filter + if ( support.getById ) { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var m = context.getElementById( id ); + return m ? [ m ] : []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + } else { + // Support: IE6/7 + // getElementById is not reliable as a find shortcut + delete Expr.find["ID"]; + + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See http://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( div ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // http://bugs.jquery.com/ticket/12359 + docElem.appendChild( div ).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( div.querySelectorAll("[msallowcapture^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !div.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push("~="); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibing-combinator selector` fails + if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push(".#.+[+~]"); + } + }); + + assert(function( div ) { + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement("input"); + input.setAttribute( "type", "hidden" ); + div.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( div.querySelectorAll("[name=d]").length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":enabled").length ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + div.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( div ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( div, "div" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( div, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + return -1; + } + if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + return a === document ? -1 : + b === document ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + !compilerCache[ expr + " " ] && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch (e) {} + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + while ( (node = elem[i++]) ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[6] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] ) { + match[2] = match[4] || match[5] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) { + + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + // Use previously-cached element index if available + if ( useCache ) { + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + uniqueCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + // Don't keep the element (issue #299) + input[0] = null; + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": function( elem ) { + return elem.disabled === false; + }, + + "disabled": function( elem ) { + return elem.disabled === true; + }, + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( (tokens = []) ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + checkNonElements = base && dir === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); + + if ( (oldCache = uniqueCache[ dir ]) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return (newCache[ 2 ] = oldCache[ 2 ]); + } else { + // Reuse newcache so results back-propagate to previous elements + uniqueCache[ dir ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + return true; + } + } + } + } + } + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + len = elems.length; + + if ( outermost ) { + outermostContext = context === document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + if ( !context && elem.ownerDocument !== document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context || document, xml) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( (selector = compiled.selector || selector) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + support.getById && context.nodeType === 9 && documentIsHTML && + Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome 14-35+ +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( div1 ) { + // Should return 1, but returns 4 (following) + return div1.compareDocumentPosition( document.createElement("div") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( div ) { + div.innerHTML = ""; + return div.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( div ) { + div.innerHTML = ""; + div.firstChild.setAttribute( "value", "" ); + return div.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( div ) { + return div.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + null; + } + }); +} + +return Sizzle; + +})( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +var rneedsContext = jQuery.expr.match.needsContext; + +var rsingleTag = ( /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/ ); + + + +var risSimple = /^.[^:#\[\.,]*$/; + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + /* jshint -W018 */ + return !!qualifier.call( elem, i, elem ) !== not; + } ); + + } + + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + + } + + if ( typeof qualifier === "string" ) { + if ( risSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, elements, not ); + } + + qualifier = jQuery.filter( qualifier, elements ); + } + + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 && elem.nodeType === 1 ? + jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : + jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); +}; + +jQuery.fn.extend( { + find: function( selector ) { + var i, + len = this.length, + ret = [], + self = this; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + } ) ); + } + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + // Needed because $( selector, context ) becomes $( context ).find( selector ) + ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); + ret.selector = this.selector ? this.selector + " " + selector : selector; + return ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +} ); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[ 0 ] === "<" && + selector[ selector.length - 1 ] === ">" && + selector.length >= 3 ) { + + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && ( match[ 1 ] || !context ) ) { + + // HANDLE: $(html) -> $(array) + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; + + // Option to run scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[ 1 ], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[ 2 ] ); + + // Support: Blackberry 4.6 + // gEBID returns nodes no longer in the document (#6963) + if ( elem && elem.parentNode ) { + + // Inject the element directly into the jQuery object + this.length = 1; + this[ 0 ] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this.context = this[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // Methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend( { + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter( function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( pos ? + pos.index( cur ) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within the set + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // Index in selector + if ( typeof elem === "string" ) { + return indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } +} ); + +function sibling( cur, dir ) { + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} + return cur; +} + +jQuery.each( { + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + return elem.contentDocument || jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.uniqueSort( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +} ); +var rnotwhite = ( /\S+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { + object[ flag ] = true; + } ); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( jQuery.isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; + } + } + } ); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = queue = []; + if ( !memory ) { + list = memory = ""; + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, listener list, final state + [ "resolve", "done", jQuery.Callbacks( "once memory" ), "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), "rejected" ], + [ "notify", "progress", jQuery.Callbacks( "memory" ) ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + then: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; + + // deferred[ done | fail | progress ] for forwarding actions to newDefer + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this === promise ? newDefer.promise() : this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Keep pipe for back-compat + promise.pipe = promise.then; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 3 ]; + + // promise[ done | fail | progress ] = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( function() { + + // state = [ resolved | rejected ] + state = stateString; + + // [ reject_list | resolve_list ].disable; progress_list.lock + }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); + } + + // deferred[ resolve | reject | notify ] + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? promise : this, arguments ); + return this; + }; + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( subordinate /* , ..., subordinateN */ ) { + var i = 0, + resolveValues = slice.call( arguments ), + length = resolveValues.length, + + // the count of uncompleted subordinates + remaining = length !== 1 || + ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, + + // the master Deferred. + // If resolveValues consist of only a single Deferred, just use that. + deferred = remaining === 1 ? subordinate : jQuery.Deferred(), + + // Update function for both resolve and progress values + updateFunc = function( i, contexts, values ) { + return function( value ) { + contexts[ i ] = this; + values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( values === progressValues ) { + deferred.notifyWith( contexts, values ); + } else if ( !( --remaining ) ) { + deferred.resolveWith( contexts, values ); + } + }; + }, + + progressValues, progressContexts, resolveContexts; + + // Add listeners to Deferred subordinates; treat others as resolved + if ( length > 1 ) { + progressValues = new Array( length ); + progressContexts = new Array( length ); + resolveContexts = new Array( length ); + for ( ; i < length; i++ ) { + if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { + resolveValues[ i ].promise() + .progress( updateFunc( i, progressContexts, progressValues ) ) + .done( updateFunc( i, resolveContexts, resolveValues ) ) + .fail( deferred.reject ); + } else { + --remaining; + } + } + } + + // If we're not waiting on anything, resolve the master + if ( !remaining ) { + deferred.resolveWith( resolveContexts, resolveValues ); + } + + return deferred.promise(); + } +} ); + + +// The deferred used on DOM ready +var readyList; + +jQuery.fn.ready = function( fn ) { + + // Add the callback + jQuery.ready.promise().done( fn ); + + return this; +}; + +jQuery.extend( { + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.triggerHandler ) { + jQuery( document ).triggerHandler( "ready" ); + jQuery( document ).off( "ready" ); + } + } +} ); + +/** + * The ready event handler and self cleanup method + */ +function completed() { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + jQuery.ready(); +} + +jQuery.ready.promise = function( obj ) { + if ( !readyList ) { + + readyList = jQuery.Deferred(); + + // Catch cases where $(document).ready() is called + // after the browser event has already occurred. + // Support: IE9-10 only + // Older IE sometimes signals "interactive" too soon + if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + + } else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); + } + } + return readyList.promise( obj ); +}; + +// Kick off the DOM ready check even if the user does not +jQuery.ready.promise(); + + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + access( elems, fn, i, key[ i ], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < len; i++ ) { + fn( + elems[ i ], key, raw ? + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + return chainable ? + elems : + + // Gets + bulk ? + fn.call( elems ) : + len ? fn( elems[ 0 ], key ) : emptyGet; +}; +var acceptData = function( owner ) { + + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + /* jshint -W018 */ + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); +}; + + + + +function Data() { + this.expando = jQuery.expando + Data.uid++; +} + +Data.uid = 1; + +Data.prototype = { + + register: function( owner, initial ) { + var value = initial || {}; + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable, non-writable property + // configurability must be true to allow the property to be + // deleted with the delete operator + } else { + Object.defineProperty( owner, this.expando, { + value: value, + writable: true, + configurable: true + } ); + } + return owner[ this.expando ]; + }, + cache: function( owner ) { + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( !acceptData( owner ) ) { + return {}; + } + + // Check if the owner object already has a cache + var value = owner[ this.expando ]; + + // If not, create one + if ( !value ) { + value = {}; + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( acceptData( owner ) ) { + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty( owner, this.expando, { + value: value, + configurable: true + } ); + } + } + } + + return value; + }, + set: function( owner, data, value ) { + var prop, + cache = this.cache( owner ); + + // Handle: [ owner, key, value ] args + if ( typeof data === "string" ) { + cache[ data ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ prop ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + owner[ this.expando ] && owner[ this.expando ][ key ]; + }, + access: function( owner, key, value ) { + var stored; + + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ( ( key && typeof key === "string" ) && value === undefined ) ) { + + stored = this.get( owner, key ); + + return stored !== undefined ? + stored : this.get( owner, jQuery.camelCase( key ) ); + } + + // When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, name, camel, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key === undefined ) { + this.register( owner ); + + } else { + + // Support array or space separated string of keys + if ( jQuery.isArray( key ) ) { + + // If "name" is an array of keys... + // When data is initially created, via ("key", "val") signature, + // keys will be converted to camelCase. + // Since there is no way to tell _how_ a key was added, remove + // both plain key and camelCase key. #12786 + // This will only penalize the array argument path. + name = key.concat( key.map( jQuery.camelCase ) ); + } else { + camel = jQuery.camelCase( key ); + + // Try the string as a key before any manipulation + if ( key in cache ) { + name = [ key, camel ]; + } else { + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + name = camel; + name = name in cache ? + [ name ] : ( name.match( rnotwhite ) || [] ); + } + } + + i = name.length; + + while ( i-- ) { + delete cache[ name[ i ] ]; + } + } + + // Remove the expando if there's no more data + if ( key === undefined || jQuery.isEmptyObject( cache ) ) { + + // Support: Chrome <= 35-45+ + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://code.google.com/p/chromium/issues/detail?id=378607 + if ( owner.nodeType ) { + owner[ this.expando ] = undefined; + } else { + delete owner[ this.expando ]; + } + } + }, + hasData: function( owner ) { + var cache = owner[ this.expando ]; + return cache !== undefined && !jQuery.isEmptyObject( cache ); + } +}; +var dataPriv = new Data(); + +var dataUser = new Data(); + + + +// Implementation Summary +// +// 1. Enforce API surface and semantic compatibility with 1.9.x branch +// 2. Improve the module's maintainability by reducing the storage +// paths to a single mechanism. +// 3. Use the same single mechanism to support "private" and "user" data. +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) +// 5. Avoid exposing implementation details on user objects (eg. expando properties) +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /[A-Z]/g; + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + dataUser.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend( { + hasData: function( elem ) { + return dataUser.hasData( elem ) || dataPriv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return dataUser.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + dataUser.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to dataPriv methods, these can be deprecated. + _data: function( elem, name, data ) { + return dataPriv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + dataPriv.remove( elem, name ); + } +} ); + +jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = dataUser.get( elem ); + + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE11+ + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + dataPriv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + dataUser.set( this, key ); + } ); + } + + return access( this, function( value ) { + var data, camelKey; + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + + // Attempt to get data from the cache + // with the key as-is + data = dataUser.get( elem, key ) || + + // Try to find dashed key if it exists (gh-2779) + // This is for 2.2.x only + dataUser.get( elem, key.replace( rmultiDash, "-$&" ).toLowerCase() ); + + if ( data !== undefined ) { + return data; + } + + camelKey = jQuery.camelCase( key ); + + // Attempt to get data from the cache + // with the key camelized + data = dataUser.get( elem, camelKey ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, camelKey, undefined ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + camelKey = jQuery.camelCase( key ); + this.each( function() { + + // First, attempt to store a copy or reference of any + // data that might've been store with a camelCased key. + var data = dataUser.get( this, camelKey ); + + // For HTML5 data-* attribute interop, we have to + // store property names with dashes in a camelCase form. + // This might not apply to all properties...* + dataUser.set( this, camelKey, value ); + + // *... In the case of properties that might _actually_ + // have dashes, we need to also store a copy of that + // unchanged property. + if ( key.indexOf( "-" ) > -1 && data !== undefined ) { + dataUser.set( this, key, value ); + } + } ); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each( function() { + dataUser.remove( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = dataPriv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray( data ) ) { + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // Clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // Not public - generate a queueHooks object, or return the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + dataPriv.remove( elem, [ type + "queue", key ] ); + } ) + } ); + } +} ); + +jQuery.fn.extend( { + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[ 0 ], type ); + } + + return data === undefined ? + this : + this.each( function() { + var queue = jQuery.queue( this, type, data ); + + // Ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + } ); + }, + dequeue: function( type ) { + return this.each( function() { + jQuery.dequeue( this, type ); + } ); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +} ); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var isHidden = function( elem, el ) { + + // isHidden might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + return jQuery.css( elem, "display" ) === "none" || + !jQuery.contains( elem.ownerDocument, elem ); + }; + + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, + scale = 1, + maxIterations = 20, + currentValue = tween ? + function() { return tween.cur(); } : + function() { return jQuery.css( elem, prop, "" ); }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + do { + + // If previous iteration zeroed out, double until we get *something*. + // Use string for doubling so we don't accidentally see scale as unchanged below + scale = scale || ".5"; + + // Adjust and apply + initialInUnit = initialInUnit / scale; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Update scale, tolerating zero or NaN from tween.cur() + // Break the loop if scale is unchanged or perfect, or if we've just had enough. + } while ( + scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations + ); + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([\w:-]+)/ ); + +var rscriptType = ( /^$|\/(?:java|ecma)script/i ); + + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { + + // Support: IE9 + option: [ 1, "" ], + + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting or other required elements. + thead: [ 1, "", "
    " ], + col: [ 2, "", "
    " ], + tr: [ 2, "", "
    " ], + td: [ 3, "", "
    " ], + + _default: [ 0, "", "" ] +}; + +// Support: IE9 +wrapMap.optgroup = wrapMap.option; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + + +function getAll( context, tag ) { + + // Support: IE9-11+ + // Use typeof to avoid zero-argument method invocation on host objects (#15151) + var ret = typeof context.getElementsByTagName !== "undefined" ? + context.getElementsByTagName( tag || "*" ) : + typeof context.querySelectorAll !== "undefined" ? + context.querySelectorAll( tag || "*" ) : + []; + + return tag === undefined || tag && jQuery.nodeName( context, tag ) ? + jQuery.merge( [ context ], ret ) : + ret; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/; + +function buildFragment( elems, context, scripts, selection, ignored ) { + var elem, tmp, tag, wrap, contains, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + + // Support: Android<4.1, PhantomJS<2 + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android<4.1, PhantomJS<2 + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (#12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; +} + + +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0-4.3, Safari<=5.1 + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Safari<=5.1, Android<4.2 + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE<=11+ + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; +} )(); + + +var + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +// Support: IE9 +// See #13393 for more info +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.get( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = {}; + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnotwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnotwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove data and the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + dataPriv.remove( elem, "handle events" ); + } + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event ); + + var i, j, ret, matched, handleObj, + handlerQueue = [], + args = slice.call( arguments ), + handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or 2) have namespace(s) + // a subset or equal to those in the bound event (both can have no namespace). + if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, matches, sel, handleObj, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Support (at least): Chrome, IE9 + // Find delegate handlers + // Black-hole SVG instance trees (#13180) + // + // Support: Firefox<=42+ + // Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343) + if ( delegateCount && cur.nodeType && + ( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== "click" ) ) { + matches = []; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matches[ sel ] === undefined ) { + matches[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matches[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push( { elem: cur, handlers: matches } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + props: ( "altKey bubbles cancelable ctrlKey currentTarget detail eventPhase " + + "metaKey relatedTarget shiftKey target timeStamp view which" ).split( " " ), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split( " " ), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: ( "button buttons clientX clientY offsetX offsetY pageX pageY " + + "screenX screenY toElement" ).split( " " ), + filter: function( event, original ) { + var eventDoc, doc, body, + button = original.button; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - + ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - + ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, copy, + type = event.type, + originalEvent = event, + fixHook = this.fixHooks[ type ]; + + if ( !fixHook ) { + this.fixHooks[ type ] = fixHook = + rmouseEvent.test( type ) ? this.mouseHooks : + rkeyEvent.test( type ) ? this.keyHooks : + {}; + } + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = new jQuery.Event( originalEvent ); + + i = copy.length; + while ( i-- ) { + prop = copy[ i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Support: Cordova 2.5 (WebKit) (#13255) + // All events should have a target; Cordova deviceready doesn't + if ( !event.target ) { + event.target = document; + } + + // Support: Safari 6.0+, Chrome<28 + // Target should not be a text node (#504, #13143) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + focus: { + + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== safeActiveElement() && this.focus ) { + this.focus(); + return false; + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === safeActiveElement() && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + click: { + + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire native .click() on links + _default: function( event ) { + return jQuery.nodeName( event.target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + } +}; + +jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } +}; + +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: Android<4.0 + src.returnValue === false ? + returnTrue : + returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://code.google.com/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +} ); + +jQuery.fn.extend( { + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + } +} ); + + +var + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi, + + // Support: IE 10-11, Edge 10240+ + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + +// Manipulating tables requires a tbody +function manipulationTarget( elem, content ) { + return jQuery.nodeName( elem, "table" ) && + jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? + + elem.getElementsByTagName( "tbody" )[ 0 ] || + elem.appendChild( elem.ownerDocument.createElement( "tbody" ) ) : + elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + + if ( match ) { + elem.type = match[ 1 ]; + } else { + elem.removeAttribute( "type" ); + } + + return elem; +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.access( src ); + pdataCur = dataPriv.set( dest, pdataOld ); + events = pdataOld.events; + + if ( events ) { + delete pdataCur.handle; + pdataCur.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + dataUser.set( dest, udataCur ); + } +} + +// Fix IE bugs, see support tests +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = concat.apply( [], args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( isFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android<4.1, PhantomJS<2 + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !dataPriv.access( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl ) { + jQuery._evalUrl( node.src ); + } + } else { + jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) ); + } + } + } + } + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html.replace( rxhtmlTag, "<$1>" ); + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = jQuery.contains( elem.ownerDocument, elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + cleanData: function( elems ) { + var data, elem, type, + special = jQuery.event.special, + i = 0; + + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Support: Chrome <= 35-45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <= 35-45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; + } + } + } + } +} ); + +jQuery.fn.extend( { + + // Keep domManip exposed until 3.0 (gh-2225) + domManip: domManip, + + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each( function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + } ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: QtWebKit + // .get() because push.apply(_, arraylike) throws + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); + + +var iframe, + elemdisplay = { + + // Support: Firefox + // We have to pre-define these values for FF (#10227) + HTML: "block", + BODY: "block" + }; + +/** + * Retrieve the actual display of a element + * @param {String} name nodeName of the element + * @param {Object} doc Document object + */ + +// Called only from within defaultDisplay +function actualDisplay( name, doc ) { + var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), + + display = jQuery.css( elem[ 0 ], "display" ); + + // We don't have any data stored on the element, + // so use "detach" method as fast way to get rid of the element + elem.detach(); + + return display; +} + +/** + * Try to determine the default display value of an element + * @param {String} nodeName + */ +function defaultDisplay( nodeName ) { + var doc = document, + display = elemdisplay[ nodeName ]; + + if ( !display ) { + display = actualDisplay( nodeName, doc ); + + // If the simple way fails, read from inside an iframe + if ( display === "none" || !display ) { + + // Use the already-created iframe if possible + iframe = ( iframe || jQuery( "',"
    ","
    "].join(""));return l.ie&&l.ie<8?c.removeClass("layui-hide").addClass(o):(d[0]&&d.remove(),s.call(a,m,c[0],y),c.addClass("layui-hide").after(m),a.index)},c.prototype.getContent=function(t){var e=u(t);if(e[0])return d(e[0].document.body.innerHTML)},c.prototype.getText=function(t){var i=u(t);if(i[0])return e(i[0].document.body).text()},c.prototype.setContent=function(t,i,a){var l=u(t);l[0]&&(a?e(l[0].document.body).append(i):e(l[0].document.body).html(i),layedit.sync(t))},c.prototype.sync=function(t){var i=u(t);if(i[0]){var a=e("#"+i[1].attr("textarea"));a.val(d(i[0].document.body.innerHTML))}},c.prototype.getSelection=function(t){var e=u(t);if(e[0]){var i=m(e[0].document);return document.selection?i.text:i.toString()}};var s=function(t,i,a){var l=this,n=t.find("iframe");n.css({height:a.height}).on("load",function(){var o=n.contents(),r=n.prop("contentWindow"),c=o.find("head"),s=e([""].join("")),u=o.find("body");c.append(s),u.attr("contenteditable","true").css({"min-height":a.height}).html(i.value||""),y.apply(l,[r,n,i,a]),g.call(l,r,t,a)})},u=function(t){var i=e("#LAY_layedit_"+t),a=i.prop("contentWindow");return[a,i]},d=function(t){return 8==l.ie&&(t=t.replace(/<.+>/g,function(t){return t.toLowerCase()})),t},y=function(t,a,n,o){var r=t.document,c=e(r.body);c.on("keydown",function(t){var e=t.keyCode;if(13===e){var a=m(r),l=p(a),n=l.parentNode;if("pre"===n.tagName.toLowerCase()){if(t.shiftKey)return;return i.msg("请暂时用shift+enter"),!1}r.execCommand("formatBlock",!1,"

    ")}}),e(n).parents("form").on("submit",function(){var t=c.html();8==l.ie&&(t=t.replace(/<.+>/g,function(t){return t.toLowerCase()})),n.value=t}),c.on("paste",function(e){r.execCommand("formatBlock",!1,"

    "),setTimeout(function(){f.call(t,c),n.value=c.html()},100)})},f=function(t){var i=this;i.document;t.find("*[style]").each(function(){var t=this.style.textAlign;this.removeAttribute("style"),e(this).css({"text-align":t||""})}),t.find("table").addClass("layui-table"),t.find("script,link").remove()},m=function(t){return t.selection?t.selection.createRange():t.getSelection().getRangeAt(0)},p=function(t){return t.endContainer||t.parentElement().childNodes[0]},v=function(t,i,a){var l=this.document,n=document.createElement(t);for(var o in i)n.setAttribute(o,i[o]);if(n.removeAttribute("text"),l.selection){var r=a.text||i.text;if("a"===t&&!r)return;r&&(n.innerHTML=r),a.pasteHTML(e(n).prop("outerHTML")),a.select()}else{var r=a.toString()||i.text;if("a"===t&&!r)return;r&&(n.innerHTML=r),a.deleteContents(),a.insertNode(n)}},h=function(t,i){var a=this.document,l="layedit-tool-active",n=p(m(a)),o=function(e){return t.find(".layedit-tool-"+e)};i&&i[i.hasClass(l)?"removeClass":"addClass"](l),t.find(">i").removeClass(l),o("unlink").addClass(r),e(n).parents().each(function(){var t=this.tagName.toLowerCase(),e=this.style.textAlign;"b"!==t&&"strong"!==t||o("b").addClass(l),"i"!==t&&"em"!==t||o("i").addClass(l),"u"===t&&o("u").addClass(l),"strike"===t&&o("d").addClass(l),"p"===t&&("center"===e?o("center").addClass(l):"right"===e?o("right").addClass(l):o("left").addClass(l)),"a"===t&&(o("link").addClass(l),o("unlink").removeClass(r))})},g=function(t,a,l){var n=t.document,o=e(n.body),c={link:function(i){var a=p(i),l=e(a).parent();b.call(o,{href:l.attr("href"),target:l.attr("target")},function(e){var a=l[0];"A"===a.tagName?a.href=e.url:v.call(t,"a",{target:e.target,href:e.url,text:e.url},i)})},unlink:function(t){n.execCommand("unlink")},face:function(e){x.call(this,function(i){v.call(t,"img",{src:i.src,alt:i.alt},e)})},image:function(a){var n=this;layui.use("upload",function(o){var r=l.uploadImage||{};o.render({url:r.url,method:r.type,elem:e(n).find("input")[0],done:function(e){0==e.code?(e.data=e.data||{},v.call(t,"img",{src:e.data.src,alt:e.data.title},a)):i.msg(e.msg||"上传失败")}})})},code:function(e){k.call(o,function(i){v.call(t,"pre",{text:i.code,"lay-lang":i.lang},e)})},help:function(){i.open({type:2,title:"帮助",area:["600px","380px"],shadeClose:!0,shade:.1,skin:"layui-layer-msg",content:["http://www.layui.com/about/layedit/help.html","no"]})}},s=a.find(".layui-layedit-tool"),u=function(){var i=e(this),a=i.attr("layedit-event"),l=i.attr("lay-command");if(!i.hasClass(r)){o.focus();var u=m(n);u.commonAncestorContainer;l?(n.execCommand(l),/justifyLeft|justifyCenter|justifyRight/.test(l)&&n.execCommand("formatBlock",!1,"

    "),setTimeout(function(){o.focus()},10)):c[a]&&c[a].call(this,u),h.call(t,s,i)}},d=/image/;s.find(">i").on("mousedown",function(){var t=e(this),i=t.attr("layedit-event");d.test(i)||u.call(this)}).on("click",function(){var t=e(this),i=t.attr("layedit-event");d.test(i)&&u.call(this)}),o.on("click",function(){h.call(t,s),i.close(x.index)})},b=function(t,e){var l=this,n=i.open({type:1,id:"LAY_layedit_link",area:"350px",shade:.05,shadeClose:!0,moveType:1,title:"超链接",skin:"layui-layer-msg",content:['

      ','
    • ','','
      ','',"
      ","
    • ",'
    • ','','
      ','",'","
      ","
    • ",'
    • ','','',"
    • ","
    "].join(""),success:function(t,n){var o="submit(layedit-link-yes)";a.render("radio"),t.find(".layui-btn-primary").on("click",function(){i.close(n),l.focus()}),a.on(o,function(t){i.close(b.index),e&&e(t.field)})}});b.index=n},x=function(t){var a=function(){var t=["[微笑]","[嘻嘻]","[哈哈]","[可爱]","[可怜]","[挖鼻]","[吃惊]","[害羞]","[挤眼]","[闭嘴]","[鄙视]","[爱你]","[泪]","[偷笑]","[亲亲]","[生病]","[太开心]","[白眼]","[右哼哼]","[左哼哼]","[嘘]","[衰]","[委屈]","[吐]","[哈欠]","[抱抱]","[怒]","[疑问]","[馋嘴]","[拜拜]","[思考]","[汗]","[困]","[睡]","[钱]","[失望]","[酷]","[色]","[哼]","[鼓掌]","[晕]","[悲伤]","[抓狂]","[黑线]","[阴险]","[怒骂]","[互粉]","[心]","[伤心]","[猪头]","[熊猫]","[兔子]","[ok]","[耶]","[good]","[NO]","[赞]","[来]","[弱]","[草泥马]","[神马]","[囧]","[浮云]","[给力]","[围观]","[威武]","[奥特曼]","[礼物]","[钟]","[话筒]","[蜡烛]","[蛋糕]"],e={};return layui.each(t,function(t,i){e[i]=layui.cache.dir+"images/face/"+t+".gif"}),e}();return x.hide=x.hide||function(t){"face"!==e(t.target).attr("layedit-event")&&i.close(x.index)},x.index=i.tips(function(){var t=[];return layui.each(a,function(e,i){t.push('
  • '+e+'
  • ')}),'
      '+t.join("")+"
    "}(),this,{tips:1,time:0,skin:"layui-box layui-util-face",maxWidth:500,success:function(l,n){l.css({marginTop:-4,marginLeft:-10}).find(".layui-clear>li").on("click",function(){t&&t({src:a[this.title],alt:this.title}),i.close(n)}),e(document).off("click",x.hide).on("click",x.hide)}})},k=function(t){var e=this,l=i.open({type:1,id:"LAY_layedit_code",area:"550px",shade:.05,shadeClose:!0,moveType:1,title:"插入代码",skin:"layui-layer-msg",content:['
      ','
    • ','','
      ','","
      ","
    • ",'
    • ','','
      ','',"
      ","
    • ",'
    • ','','',"
    • ","
    "].join(""),success:function(l,n){var o="submit(layedit-code-yes)";a.render("select"),l.find(".layui-btn-primary").on("click",function(){i.close(n),e.focus()}),a.on(o,function(e){i.close(k.index),t&&t(e.field)})}});k.index=l},C={html:'',strong:'',italic:'',underline:'',del:'',"|":'',left:'',center:'',right:'',link:'',unlink:'',face:'',image:'',code:'',help:''},w=new c;t(n,w)}); \ No newline at end of file diff --git a/static/admin/simpleui/layui/lay/modules/layer.js b/static/admin/simpleui/layui/lay/modules/layer.js new file mode 100644 index 0000000..7141336 --- /dev/null +++ b/static/admin/simpleui/layui/lay/modules/layer.js @@ -0,0 +1,2 @@ +/** layui-v2.0.2 MIT License By http://www.layui.com */ + ;!function(e,t){"use strict";var i,n,a=e.layui&&layui.define,o={getPath:function(){var e=document.scripts,t=e[e.length-1],i=t.src;if(!t.getAttribute("merge"))return i.substring(0,i.lastIndexOf("/")+1)}(),config:{},end:{},minIndex:0,minLeft:[],btn:["确定","取消"],type:["dialog","page","iframe","loading","tips"],getStyle:function(e,t){var i=e.currentStyle?e.currentStyle:n.getComputedStyle(e,null);return i[i.getPropertyValue?"getPropertyValue":"getAttribute"](t)},link:function(t,i,n){if(r.path){var a=document.getElementsByTagName("head")[0],s=document.createElement("link");"string"==typeof i&&(n=i);var l=(n||t).replace(/\.|\//g,""),f="layuicss-"+l,c=0;s.rel="stylesheet",s.href=r.path+t,s.id=f,document.getElementById(f)||a.appendChild(s),"function"==typeof i&&!function u(){return++c>80?e.console&&console.error("layer.css: Invalid"):void(1989===parseInt(o.getStyle(document.getElementById(f),"width"))?i():setTimeout(u,100))}()}}},r={v:"3.0.3",ie:function(){var t=navigator.userAgent.toLowerCase();return!!(e.ActiveXObject||"ActiveXObject"in e)&&((t.match(/msie\s(\d+)/)||[])[1]||"11")}(),index:e.layer&&e.layer.v?1e5:0,path:o.getPath,config:function(e,t){return e=e||{},r.cache=o.config=i.extend({},o.config,e),r.path=o.config.path||r.path,"string"==typeof e.extend&&(e.extend=[e.extend]),o.config.path&&r.ready(),e.extend?(a?layui.addcss("modules/layer/"+e.extend):o.link("skin/"+e.extend),this):this},ready:function(e){var t="layer",i="",n=(a?"modules/layer/":"theme/")+"default/layer.css?v="+r.v+i;return a?layui.addcss(n,e,t):o.link(n,e,t),this},alert:function(e,t,n){var a="function"==typeof t;return a&&(n=t),r.open(i.extend({content:e,yes:n},a?{}:t))},confirm:function(e,t,n,a){var s="function"==typeof t;return s&&(a=n,n=t),r.open(i.extend({content:e,btn:o.btn,yes:n,btn2:a},s?{}:t))},msg:function(e,n,a){var s="function"==typeof n,f=o.config.skin,c=(f?f+" "+f+"-msg":"")||"layui-layer-msg",u=l.anim.length-1;return s&&(a=n),r.open(i.extend({content:e,time:3e3,shade:!1,skin:c,title:!1,closeBtn:!1,btn:!1,resize:!1,end:a},s&&!o.config.skin?{skin:c+" layui-layer-hui",anim:u}:function(){return n=n||{},(n.icon===-1||n.icon===t&&!o.config.skin)&&(n.skin=c+" "+(n.skin||"layui-layer-hui")),n}()))},load:function(e,t){return r.open(i.extend({type:3,icon:e||0,resize:!1,shade:.01},t))},tips:function(e,t,n){return r.open(i.extend({type:4,content:[e,t],closeBtn:!1,time:3e3,shade:!1,resize:!1,fixed:!1,maxWidth:210},n))}},s=function(e){var t=this;t.index=++r.index,t.config=i.extend({},t.config,o.config,e),document.body?t.creat():setTimeout(function(){t.creat()},30)};s.pt=s.prototype;var l=["layui-layer",".layui-layer-title",".layui-layer-main",".layui-layer-dialog","layui-layer-iframe","layui-layer-content","layui-layer-btn","layui-layer-close"];l.anim=["layer-anim","layer-anim-01","layer-anim-02","layer-anim-03","layer-anim-04","layer-anim-05","layer-anim-06"],s.pt.config={type:0,shade:.3,fixed:!0,move:l[1],title:"信息",offset:"auto",area:"auto",closeBtn:1,time:0,zIndex:19891014,maxWidth:360,anim:0,isOutAnim:!0,icon:-1,moveType:1,resize:!0,scrollbar:!0,tips:2},s.pt.vessel=function(e,t){var n=this,a=n.index,r=n.config,s=r.zIndex+a,f="object"==typeof r.title,c=r.maxmin&&(1===r.type||2===r.type),u=r.title?'
    '+(f?r.title[0]:r.title)+"
    ":"";return r.zIndex=s,t([r.shade?'
    ':"",'
    '+(e&&2!=r.type?"":u)+'
    '+(0==r.type&&r.icon!==-1?'':"")+(1==r.type&&e?"":r.content||"")+'
    '+function(){var e=c?'':"";return r.closeBtn&&(e+=''),e}()+""+(r.btn?function(){var e="";"string"==typeof r.btn&&(r.btn=[r.btn]);for(var t=0,i=r.btn.length;t'+r.btn[t]+"";return'
    '+e+"
    "}():"")+(r.resize?'':"")+"
    "],u,i('
    ')),n},s.pt.creat=function(){var e=this,t=e.config,a=e.index,s=t.content,f="object"==typeof s,c=i("body");if(!t.id||!i("#"+t.id)[0]){switch("string"==typeof t.area&&(t.area="auto"===t.area?["",""]:[t.area,""]),t.shift&&(t.anim=t.shift),6==r.ie&&(t.fixed=!1),t.type){case 0:t.btn="btn"in t?t.btn:o.btn[0],r.closeAll("dialog");break;case 2:var s=t.content=f?t.content:[t.content||"http://layer.layui.com","auto"];t.content='';break;case 3:delete t.title,delete t.closeBtn,t.icon===-1&&0===t.icon,r.closeAll("loading");break;case 4:f||(t.content=[t.content,"body"]),t.follow=t.content[1],t.content=t.content[0]+'',delete t.title,t.tips="object"==typeof t.tips?t.tips:[t.tips,!0],t.tipsMore||r.closeAll("tips")}e.vessel(f,function(n,r,u){c.append(n[0]),f?function(){2==t.type||4==t.type?function(){i("body").append(n[1])}():function(){s.parents("."+l[0])[0]||(s.data("display",s.css("display")).show().addClass("layui-layer-wrap").wrap(n[1]),i("#"+l[0]+a).find("."+l[5]).before(r))}()}():c.append(n[1]),i(".layui-layer-move")[0]||c.append(o.moveElem=u),e.layero=i("#"+l[0]+a),t.scrollbar||l.html.css("overflow","hidden").attr("layer-full",a)}).auto(a),2==t.type&&6==r.ie&&e.layero.find("iframe").attr("src",s[0]),4==t.type?e.tips():e.offset(),t.fixed&&n.on("resize",function(){e.offset(),(/^\d+%$/.test(t.area[0])||/^\d+%$/.test(t.area[1]))&&e.auto(a),4==t.type&&e.tips()}),t.time<=0||setTimeout(function(){r.close(e.index)},t.time),e.move().callback(),l.anim[t.anim]&&e.layero.addClass(l.anim[t.anim]),t.isOutAnim&&e.layero.data("isOutAnim",!0)}},s.pt.auto=function(e){var t=this,a=t.config,o=i("#"+l[0]+e);""===a.area[0]&&a.maxWidth>0&&(r.ie&&r.ie<8&&a.btn&&o.width(o.innerWidth()),o.outerWidth()>a.maxWidth&&o.width(a.maxWidth));var s=[o.innerWidth(),o.innerHeight()],f=o.find(l[1]).outerHeight()||0,c=o.find("."+l[6]).outerHeight()||0,u=function(e){e=o.find(e),e.height(s[1]-f-c-2*(0|parseFloat(e.css("padding-top"))))};switch(a.type){case 2:u("iframe");break;default:""===a.area[1]?a.maxHeight>0&&o.outerHeight()>a.maxHeight?(s[1]=a.maxHeight,u("."+l[5])):a.fixed&&s[1]>=n.height()&&(s[1]=n.height(),u("."+l[5])):u("."+l[5])}return t},s.pt.offset=function(){var e=this,t=e.config,i=e.layero,a=[i.outerWidth(),i.outerHeight()],o="object"==typeof t.offset;e.offsetTop=(n.height()-a[1])/2,e.offsetLeft=(n.width()-a[0])/2,o?(e.offsetTop=t.offset[0],e.offsetLeft=t.offset[1]||e.offsetLeft):"auto"!==t.offset&&("t"===t.offset?e.offsetTop=0:"r"===t.offset?e.offsetLeft=n.width()-a[0]:"b"===t.offset?e.offsetTop=n.height()-a[1]:"l"===t.offset?e.offsetLeft=0:"lt"===t.offset?(e.offsetTop=0,e.offsetLeft=0):"lb"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=0):"rt"===t.offset?(e.offsetTop=0,e.offsetLeft=n.width()-a[0]):"rb"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=n.width()-a[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?n.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?n.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=n.scrollTop(),e.offsetLeft+=n.scrollLeft()),i.attr("minLeft")&&(e.offsetTop=n.height()-(i.find(l[1]).outerHeight()||0),e.offsetLeft=i.css("left")),i.css({top:e.offsetTop,left:e.offsetLeft})},s.pt.tips=function(){var e=this,t=e.config,a=e.layero,o=[a.outerWidth(),a.outerHeight()],r=i(t.follow);r[0]||(r=i("body"));var s={width:r.outerWidth(),height:r.outerHeight(),top:r.offset().top,left:r.offset().left},f=a.find(".layui-layer-TipsG"),c=t.tips[0];t.tips[1]||f.remove(),s.autoLeft=function(){s.left+o[0]-n.width()>0?(s.tipLeft=s.left+s.width-o[0],f.css({right:12,left:"auto"})):s.tipLeft=s.left},s.where=[function(){s.autoLeft(),s.tipTop=s.top-o[1]-10,f.removeClass("layui-layer-TipsB").addClass("layui-layer-TipsT").css("border-right-color",t.tips[1])},function(){s.tipLeft=s.left+s.width+10,s.tipTop=s.top,f.removeClass("layui-layer-TipsL").addClass("layui-layer-TipsR").css("border-bottom-color",t.tips[1])},function(){s.autoLeft(),s.tipTop=s.top+s.height+10,f.removeClass("layui-layer-TipsT").addClass("layui-layer-TipsB").css("border-right-color",t.tips[1])},function(){s.tipLeft=s.left-o[0]-10,s.tipTop=s.top,f.removeClass("layui-layer-TipsR").addClass("layui-layer-TipsL").css("border-bottom-color",t.tips[1])}],s.where[c-1](),1===c?s.top-(n.scrollTop()+o[1]+16)<0&&s.where[2]():2===c?n.width()-(s.left+s.width+o[0]+16)>0||s.where[3]():3===c?s.top-n.scrollTop()+s.height+o[1]+16-n.height()>0&&s.where[0]():4===c&&o[0]+16-s.left>0&&s.where[1](),a.find("."+l[5]).css({"background-color":t.tips[1],"padding-right":t.closeBtn?"30px":""}),a.css({left:s.tipLeft-(t.fixed?n.scrollLeft():0),top:s.tipTop-(t.fixed?n.scrollTop():0)})},s.pt.move=function(){var e=this,t=e.config,a=i(document),s=e.layero,l=s.find(t.move),f=s.find(".layui-layer-resize"),c={};return t.move&&l.css("cursor","move"),l.on("mousedown",function(e){e.preventDefault(),t.move&&(c.moveStart=!0,c.offset=[e.clientX-parseFloat(s.css("left")),e.clientY-parseFloat(s.css("top"))],o.moveElem.css("cursor","move").show())}),f.on("mousedown",function(e){e.preventDefault(),c.resizeStart=!0,c.offset=[e.clientX,e.clientY],c.area=[s.outerWidth(),s.outerHeight()],o.moveElem.css("cursor","se-resize").show()}),a.on("mousemove",function(i){if(c.moveStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1],l="fixed"===s.css("position");if(i.preventDefault(),c.stX=l?0:n.scrollLeft(),c.stY=l?0:n.scrollTop(),!t.moveOut){var f=n.width()-s.outerWidth()+c.stX,u=n.height()-s.outerHeight()+c.stY;af&&(a=f),ou&&(o=u)}s.css({left:a,top:o})}if(t.resize&&c.resizeStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1];i.preventDefault(),r.style(e.index,{width:c.area[0]+a,height:c.area[1]+o}),c.isResize=!0,t.resizing&&t.resizing(s)}}).on("mouseup",function(e){c.moveStart&&(delete c.moveStart,o.moveElem.hide(),t.moveEnd&&t.moveEnd(s)),c.resizeStart&&(delete c.resizeStart,o.moveElem.hide())}),e},s.pt.callback=function(){function e(){var e=a.cancel&&a.cancel(t.index,n);e===!1||r.close(t.index)}var t=this,n=t.layero,a=t.config;t.openLayer(),a.success&&(2==a.type?n.find("iframe").on("load",function(){a.success(n,t.index)}):a.success(n,t.index)),6==r.ie&&t.IE6(n),n.find("."+l[6]).children("a").on("click",function(){var e=i(this).index();if(0===e)a.yes?a.yes(t.index,n):a.btn1?a.btn1(t.index,n):r.close(t.index);else{var o=a["btn"+(e+1)]&&a["btn"+(e+1)](t.index,n);o===!1||r.close(t.index)}}),n.find("."+l[7]).on("click",e),a.shadeClose&&i("#layui-layer-shade"+t.index).on("click",function(){r.close(t.index)}),n.find(".layui-layer-min").on("click",function(){var e=a.min&&a.min(n);e===!1||r.min(t.index,a)}),n.find(".layui-layer-max").on("click",function(){i(this).hasClass("layui-layer-maxmin")?(r.restore(t.index),a.restore&&a.restore(n)):(r.full(t.index,a),setTimeout(function(){a.full&&a.full(n)},100))}),a.end&&(o.end[t.index]=a.end)},o.reselect=function(){i.each(i("select"),function(e,t){var n=i(this);n.parents("."+l[0])[0]||1==n.attr("layer")&&i("."+l[0]).length<1&&n.removeAttr("layer").show(),n=null})},s.pt.IE6=function(e){i("select").each(function(e,t){var n=i(this);n.parents("."+l[0])[0]||"none"===n.css("display")||n.attr({layer:"1"}).hide(),n=null})},s.pt.openLayer=function(){var e=this;r.zIndex=e.config.zIndex,r.setTop=function(e){var t=function(){r.zIndex++,e.css("z-index",r.zIndex+1)};return r.zIndex=parseInt(e[0].style.zIndex),e.on("mousedown",t),r.zIndex}},o.record=function(e){var t=[e.width(),e.height(),e.position().top,e.position().left+parseFloat(e.css("margin-left"))];e.find(".layui-layer-max").addClass("layui-layer-maxmin"),e.attr({area:t})},o.rescollbar=function(e){l.html.attr("layer-full")==e&&(l.html[0].style.removeProperty?l.html[0].style.removeProperty("overflow"):l.html[0].style.removeAttribute("overflow"),l.html.removeAttr("layer-full"))},e.layer=r,r.getChildFrame=function(e,t){return t=t||i("."+l[4]).attr("times"),i("#"+l[0]+t).find("iframe").contents().find(e)},r.getFrameIndex=function(e){return i("#"+e).parents("."+l[4]).attr("times")},r.iframeAuto=function(e){if(e){var t=r.getChildFrame("html",e).outerHeight(),n=i("#"+l[0]+e),a=n.find(l[1]).outerHeight()||0,o=n.find("."+l[6]).outerHeight()||0;n.css({height:t+a+o}),n.find("iframe").css({height:t})}},r.iframeSrc=function(e,t){i("#"+l[0]+e).find("iframe").attr("src",t)},r.style=function(e,t,n){var a=i("#"+l[0]+e),r=a.find(".layui-layer-content"),s=a.attr("type"),f=a.find(l[1]).outerHeight()||0,c=a.find("."+l[6]).outerHeight()||0;a.attr("minLeft");s!==o.type[3]&&s!==o.type[4]&&(n||(parseFloat(t.width)<=260&&(t.width=260),parseFloat(t.height)-f-c<=64&&(t.height=64+f+c)),a.css(t),c=a.find("."+l[6]).outerHeight(),s===o.type[2]?a.find("iframe").css({height:parseFloat(t.height)-f-c}):r.css({height:parseFloat(t.height)-f-c-parseFloat(r.css("padding-top"))-parseFloat(r.css("padding-bottom"))}))},r.min=function(e,t){var a=i("#"+l[0]+e),s=a.find(l[1]).outerHeight()||0,f=a.attr("minLeft")||181*o.minIndex+"px",c=a.css("position");o.record(a),o.minLeft[0]&&(f=o.minLeft[0],o.minLeft.shift()),a.attr("position",c),r.style(e,{width:180,height:s,left:f,top:n.height()-s,position:"fixed",overflow:"hidden"},!0),a.find(".layui-layer-min").hide(),"page"===a.attr("type")&&a.find(l[4]).hide(),o.rescollbar(e),a.attr("minLeft")||o.minIndex++,a.attr("minLeft",f)},r.restore=function(e){var t=i("#"+l[0]+e),n=t.attr("area").split(",");t.attr("type");r.style(e,{width:parseFloat(n[0]),height:parseFloat(n[1]),top:parseFloat(n[2]),left:parseFloat(n[3]),position:t.attr("position"),overflow:"visible"},!0),t.find(".layui-layer-max").removeClass("layui-layer-maxmin"),t.find(".layui-layer-min").show(),"page"===t.attr("type")&&t.find(l[4]).show(),o.rescollbar(e)},r.full=function(e){var t,a=i("#"+l[0]+e);o.record(a),l.html.attr("layer-full")||l.html.css("overflow","hidden").attr("layer-full",e),clearTimeout(t),t=setTimeout(function(){var t="fixed"===a.css("position");r.style(e,{top:t?0:n.scrollTop(),left:t?0:n.scrollLeft(),width:n.width(),height:n.height()},!0),a.find(".layui-layer-min").hide()},100)},r.title=function(e,t){var n=i("#"+l[0]+(t||r.index)).find(l[1]);n.html(e)},r.close=function(e){var t=i("#"+l[0]+e),n=t.attr("type"),a="layer-anim-close";if(t[0]){var s="layui-layer-wrap",f=function(){if(n===o.type[1]&&"object"===t.attr("conType")){t.children(":not(."+l[5]+")").remove();for(var a=t.find("."+s),r=0;r<2;r++)a.unwrap();a.css("display",a.data("display")).removeClass(s)}else{if(n===o.type[2])try{var f=i("#"+l[4]+e)[0];f.contentWindow.document.write(""),f.contentWindow.close(),t.find("."+l[5])[0].removeChild(f)}catch(c){}t[0].innerHTML="",t.remove()}"function"==typeof o.end[e]&&o.end[e](),delete o.end[e]};t.data("isOutAnim")&&t.addClass(a),i("#layui-layer-moves, #layui-layer-shade"+e).remove(),6==r.ie&&o.reselect(),o.rescollbar(e),t.attr("minLeft")&&(o.minIndex--,o.minLeft.push(t.attr("minLeft"))),r.ie&&r.ie<10||!t.data("isOutAnim")?f():setTimeout(function(){f()},200)}},r.closeAll=function(e){i.each(i("."+l[0]),function(){var t=i(this),n=e?t.attr("type")===e:1;n&&r.close(t.attr("times")),n=null})};var f=r.cache||{},c=function(e){return f.skin?" "+f.skin+" "+f.skin+"-"+e:""};r.prompt=function(e,t){var a="";if(e=e||{},"function"==typeof e&&(t=e),e.area){var o=e.area;a='style="width: '+o[0]+"; height: "+o[1]+';"',delete e.area}var s,l=2==e.formType?'":function(){return''}(),f=e.success;return delete e.success,r.open(i.extend({type:1,btn:["确定","取消"],content:l,skin:"layui-layer-prompt"+c("prompt"),maxWidth:n.width(),success:function(e){s=e.find(".layui-layer-input"),s.focus(),"function"==typeof f&&f(e)},resize:!1,yes:function(i){var n=s.val();""===n?s.focus():n.length>(e.maxlength||500)?r.tips("最多输入"+(e.maxlength||500)+"个字数",s,{tips:1}):t&&t(n,i,s)}},e))},r.tab=function(e){e=e||{};var t=e.tab||{},n="layui-this",a=e.success;return delete e.success,r.open(i.extend({type:1,skin:"layui-layer-tab"+c("tab"),resize:!1,title:function(){var e=t.length,i=1,a="";if(e>0)for(a=''+t[0].title+"";i"+t[i].title+"";return a}(),content:'
      '+function(){var e=t.length,i=1,a="";if(e>0)for(a='
    • '+(t[0].content||"no content")+"
    • ";i'+(t[i].content||"no content")+"";return a}()+"
    ",success:function(t){var o=t.find(".layui-layer-title").children(),r=t.find(".layui-layer-tabmain").children();o.on("mousedown",function(t){t.stopPropagation?t.stopPropagation():t.cancelBubble=!0;var a=i(this),o=a.index();a.addClass(n).siblings().removeClass(n),r.eq(o).show().siblings().hide(),"function"==typeof e.change&&e.change(o)}),"function"==typeof a&&a(t)}},e))},r.photos=function(t,n,a){function o(e,t,i){var n=new Image;return n.src=e,n.complete?t(n):(n.onload=function(){n.onload=null,t(n)},void(n.onerror=function(e){n.onerror=null,i(e)}))}var s={};if(t=t||{},t.photos){var l=t.photos.constructor===Object,f=l?t.photos:{},u=f.data||[],d=f.start||0;s.imgIndex=(0|d)+1,t.img=t.img||"img";var y=t.success;if(delete t.success,l){if(0===u.length)return r.msg("没有图片")}else{var p=i(t.photos),h=function(){u=[],p.find(t.img).each(function(e){var t=i(this);t.attr("layer-index",e),u.push({alt:t.attr("alt"),pid:t.attr("layer-pid"),src:t.attr("layer-src")||t.attr("src"),thumb:t.attr("src")})})};if(h(),0===u.length)return;if(n||p.on("click",t.img,function(){var e=i(this),n=e.attr("layer-index");r.photos(i.extend(t,{photos:{start:n,data:u,tab:t.tab},full:t.full}),!0),h()}),!n)return}s.imgprev=function(e){s.imgIndex--,s.imgIndex<1&&(s.imgIndex=u.length),s.tabimg(e)},s.imgnext=function(e,t){s.imgIndex++,s.imgIndex>u.length&&(s.imgIndex=1,t)||s.tabimg(e)},s.keyup=function(e){if(!s.end){var t=e.keyCode;e.preventDefault(),37===t?s.imgprev(!0):39===t?s.imgnext(!0):27===t&&r.close(s.index)}},s.tabimg=function(e){if(!(u.length<=1))return f.start=s.imgIndex-1,r.close(s.index),r.photos(t,!0,e)},s.event=function(){s.bigimg.hover(function(){s.imgsee.show()},function(){s.imgsee.hide()}),s.bigimg.find(".layui-layer-imgprev").on("click",function(e){e.preventDefault(),s.imgprev()}),s.bigimg.find(".layui-layer-imgnext").on("click",function(e){e.preventDefault(),s.imgnext()}),i(document).on("keyup",s.keyup)},s.loadi=r.load(1,{shade:!("shade"in t)&&.9,scrollbar:!1}),o(u[d].src,function(n){r.close(s.loadi),s.index=r.open(i.extend({type:1,id:"layui-layer-photos",area:function(){var a=[n.width,n.height],o=[i(e).width()-100,i(e).height()-100];if(!t.full&&(a[0]>o[0]||a[1]>o[1])){var r=[a[0]/o[0],a[1]/o[1]];r[0]>r[1]?(a[0]=a[0]/r[0],a[1]=a[1]/r[0]):r[0]'+(u[d].alt||
    '+(u.length>1?'':"")+'
    '+(u[d].alt||"")+""+s.imgIndex+"/"+u.length+"
    ",success:function(e,i){s.bigimg=e.find(".layui-layer-phimg"),s.imgsee=e.find(".layui-layer-imguide,.layui-layer-imgbar"),s.event(e),t.tab&&t.tab(u[d],e),"function"==typeof y&&y(e)},end:function(){s.end=!0,i(document).off("keyup",s.keyup)}},t))},function(){r.close(s.loadi),r.msg("当前图片地址异常
    是否继续查看下一张?",{time:3e4,btn:["下一张","不看了"],yes:function(){u.length>1&&s.imgnext(!0,!0)}})})}},o.run=function(t){i=t,n=i(e),l.html=i("html"),r.open=function(e){var t=new s(e);return t.index}},e.layui&&layui.define?(r.ready(),layui.define("jquery",function(t){r.path=layui.cache.dir,o.run(layui.$),e.layer=r,t("layer",r)})):"function"==typeof define&&define.amd?define(["jquery"],function(){return o.run(e.jQuery),r}):function(){o.run(e.jQuery),r.ready()}()}(window); \ No newline at end of file diff --git a/static/admin/simpleui/layui/lay/modules/laypage.js b/static/admin/simpleui/layui/lay/modules/laypage.js new file mode 100644 index 0000000..dab3b99 --- /dev/null +++ b/static/admin/simpleui/layui/lay/modules/laypage.js @@ -0,0 +1,2 @@ +/** layui-v2.0.2 MIT License By http://www.layui.com */ + ;layui.define(function(e){"use strict";var a=document,t="getElementById",r="getElementsByTagName",n="laypage",i="layui-disabled",u=function(e){var a=this;a.config=e||{},a.config.index=++s.index,a.render(!0)};u.prototype.type=function(){var e=this.config;if("object"==typeof e.elem)return void 0===e.elem.length?2:3},u.prototype.view=function(){var e=this,a=e.config;a.layout="object"==typeof a.layout?a.layout:["prev","page","next"],a.count=0|a.count,a.curr=0|a.curr||1,a.groups=0|a.groups||5,a.limits="object"==typeof a.limits?a.limits:[10,20,30,40,50],a.limit=0|a.limit||10,a.pages=Math.ceil(a.count/a.limit)||1,a.curr>a.pages&&(a.curr=a.pages),a.groups<0?a.groups=0:a.groups>a.pages&&(a.groups=a.pages),a.prev="prev"in a?a.prev:"上一页",a.next="next"in a?a.next:"下一页";var t=a.pages>a.groups?Math.ceil((a.curr+(a.groups>1?1:0))/(a.groups>0?a.groups:1)):1,r={prev:function(){return a.prev?''+a.prev+"":""}(),page:function(){var e=[];if(a.count<1)return"";t>1&&a.first!==!1&&0!==a.groups&&e.push(''+(a.first||1)+"");var r=Math.floor((a.groups-1)/2),n=t>1?a.curr-r:1,i=t>1?function(){var e=a.curr+(a.groups-r-1);return e>a.pages?a.pages:e}():a.groups;for(i-n2&&e.push('');n<=i;n++)n===a.curr?e.push('"+n+""):e.push(''+n+"");return a.pages>a.groups&&a.pages>i&&a.last!==!1&&(i+1…'),0!==a.groups&&e.push(''+(a.last||a.pages)+"")),e.join("")}(),next:function(){return a.next?''+a.next+"":""}(),count:'共 '+a.count+" 条",limit:function(){var e=['"}(),skip:function(){return['到第','','页',""].join("")}()};return['
    ',function(){var e=[];return layui.each(a.layout,function(a,t){r[t]&&e.push(r[t])}),e.join("")}(),"
    "].join("")},u.prototype.jump=function(e,a){if(e){var t=this,n=t.config,i=e.children,u=e[r]("button")[0],p=e[r]("input")[0],l=e[r]("select")[0],o=function(){var e=0|p.value.replace(/\s|\D/g,"");e&&(n.curr=e,t.render())};if(a)return o();for(var c=0,g=i.length;cn.pages||(n.curr=e,t.render())});l&&s.on(l,"change",function(){var e=this.value;n.curr*e>n.count&&(n.curr=Math.ceil(n.count/e)),n.limit=e,t.render()}),u&&s.on(u,"click",function(){o()})}},u.prototype.skip=function(e){if(e){var a=this,t=e[r]("input")[0];t&&s.on(t,"keyup",function(t){var r=this.value,n=t.keyCode;/^(37|38|39|40)$/.test(n)||(/\D/.test(r)&&(this.value=r.replace(/\D/,"")),13===n&&a.jump(e,!0))})}},u.prototype.render=function(e){var r=this,n=r.config,i=r.type(),u=r.view();2===i?n.elem&&(n.elem.innerHTML=u):3===i?n.elem.html(u):a[t](n.elem)&&(a[t](n.elem).innerHTML=u),n.jump&&n.jump(n,e);var s=a[t]("layui-laypage-"+n.index);r.jump(s),n.hash&&!e&&(location.hash="!"+n.hash+"="+n.curr),r.skip(s)};var s={render:function(e){var a=new u(e);return a.index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(e,a,t){return e.attachEvent?e.attachEvent("on"+a,function(a){t.call(e,a)}):e.addEventListener(a,t,!1),this}};e(n,s)}); \ No newline at end of file diff --git a/static/admin/simpleui/layui/lay/modules/laytpl.js b/static/admin/simpleui/layui/lay/modules/laytpl.js new file mode 100644 index 0000000..5f2a55a --- /dev/null +++ b/static/admin/simpleui/layui/lay/modules/laytpl.js @@ -0,0 +1,2 @@ +/** layui-v2.0.2 MIT License By http://www.layui.com */ + ;layui.define(function(e){"use strict";var r={open:"{{",close:"}}"},n={exp:function(e){return new RegExp(e,"g")},query:function(e,n,t){var o=["#([\\s\\S])+?","([^{#}])*?"][e||0];return c((n||"")+r.open+o+r.close+(t||""))},escape:function(e){return String(e||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""")},error:function(e,r){var n="Laytpl Error:";return"object"==typeof console&&console.error(n+e+"\n"+(r||"")),n+e}},c=n.exp,t=function(e){this.tpl=e};t.pt=t.prototype,window.errors=0,t.pt.parse=function(e,t){var o=this,p=e,a=c("^"+r.open+"#",""),l=c(r.close+"$","");e=e.replace(/\s+|\r|\t|\n/g," ").replace(c(r.open+"#"),r.open+"# ").replace(c(r.close+"}"),"} "+r.close).replace(/\\/g,"\\\\").replace(/(?="|')/g,"\\").replace(n.query(),function(e){return e=e.replace(a,"").replace(l,""),'";'+e.replace(/\\/g,"")+';view+="'}).replace(n.query(1),function(e){var n='"+(';return e.replace(/\s/g,"")===r.open+r.close?"":(e=e.replace(c(r.open+"|"+r.close),""),/^=/.test(e)&&(e=e.replace(/^=/,""),n='"+_escape_('),n+e.replace(/\\/g,"")+')+"')}),e='"use strict";var view = "'+e+'";return view;';try{return o.cache=e=new Function("d, _escape_",e),e(t,n.escape)}catch(u){return delete o.cache,n.error(u,p)}},t.pt.render=function(e,r){var c,t=this;return e?(c=t.cache?t.cache(e,n.escape):t.parse(t.tpl,e),r?void r(c):c):n.error("no data")};var o=function(e){return"string"!=typeof e?n.error("Template not found"):new t(e)};o.config=function(e){e=e||{};for(var n in e)r[n]=e[n]},o.v="1.2.0",e("laytpl",o)}); \ No newline at end of file diff --git a/static/admin/simpleui/layui/lay/modules/mobile.js b/static/admin/simpleui/layui/lay/modules/mobile.js new file mode 100644 index 0000000..1942223 --- /dev/null +++ b/static/admin/simpleui/layui/lay/modules/mobile.js @@ -0,0 +1,2 @@ +/** layui-v2.0.2 MIT License By http://www.layui.com */ + ;layui.define(function(i){i("layui.mobile",layui.v)});layui.define(function(e){"use strict";var r={open:"{{",close:"}}"},n={exp:function(e){return new RegExp(e,"g")},query:function(e,n,t){var o=["#([\\s\\S])+?","([^{#}])*?"][e||0];return c((n||"")+r.open+o+r.close+(t||""))},escape:function(e){return String(e||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""")},error:function(e,r){var n="Laytpl Error:";return"object"==typeof console&&console.error(n+e+"\n"+(r||"")),n+e}},c=n.exp,t=function(e){this.tpl=e};t.pt=t.prototype,window.errors=0,t.pt.parse=function(e,t){var o=this,p=e,a=c("^"+r.open+"#",""),l=c(r.close+"$","");e=e.replace(/\s+|\r|\t|\n/g," ").replace(c(r.open+"#"),r.open+"# ").replace(c(r.close+"}"),"} "+r.close).replace(/\\/g,"\\\\").replace(/(?="|')/g,"\\").replace(n.query(),function(e){return e=e.replace(a,"").replace(l,""),'";'+e.replace(/\\/g,"")+';view+="'}).replace(n.query(1),function(e){var n='"+(';return e.replace(/\s/g,"")===r.open+r.close?"":(e=e.replace(c(r.open+"|"+r.close),""),/^=/.test(e)&&(e=e.replace(/^=/,""),n='"+_escape_('),n+e.replace(/\\/g,"")+')+"')}),e='"use strict";var view = "'+e+'";return view;';try{return o.cache=e=new Function("d, _escape_",e),e(t,n.escape)}catch(u){return delete o.cache,n.error(u,p)}},t.pt.render=function(e,r){var c,t=this;return e?(c=t.cache?t.cache(e,n.escape):t.parse(t.tpl,e),r?void r(c):c):n.error("no data")};var o=function(e){return"string"!=typeof e?n.error("Template not found"):new t(e)};o.config=function(e){e=e||{};for(var n in e)r[n]=e[n]},o.v="1.2.0",e("laytpl",o)});layui.define(function(e){"use strict";var t=(window,document),i="querySelectorAll",n="getElementsByClassName",a=function(e){return t[i](e)},s={type:0,shade:!0,shadeClose:!0,fixed:!0,anim:"scale"},l={extend:function(e){var t=JSON.parse(JSON.stringify(s));for(var i in e)t[i]=e[i];return t},timer:{},end:{}};l.touch=function(e,t){e.addEventListener("click",function(e){t.call(this,e)},!1)};var o=0,r=["layui-m-layer"],d=function(e){var t=this;t.config=l.extend(e),t.view()};d.prototype.view=function(){var e=this,i=e.config,s=t.createElement("div");e.id=s.id=r[0]+o,s.setAttribute("class",r[0]+" "+r[0]+(i.type||0)),s.setAttribute("index",o);var l=function(){var e="object"==typeof i.title;return i.title?'

    '+(e?i.title[0]:i.title)+"

    ":""}(),d=function(){"string"==typeof i.btn&&(i.btn=[i.btn]);var e,t=(i.btn||[]).length;return 0!==t&&i.btn?(e=''+i.btn[0]+"",2===t&&(e=''+i.btn[1]+""+e),'
    '+e+"
    "):""}();if(i.fixed||(i.top=i.hasOwnProperty("top")?i.top:100,i.style=i.style||"",i.style+=" top:"+(t.body.scrollTop+i.top)+"px"),2===i.type&&(i.content='

    '+(i.content||"")+"

    "),i.skin&&(i.anim="up"),"msg"===i.skin&&(i.shade=!1),s.innerHTML=(i.shade?"
    ':"")+'
    "+l+'
    '+i.content+"
    "+d+"
    ",!i.type||2===i.type){var y=t[n](r[0]+i.type),u=y.length;u>=1&&c.close(y[0].getAttribute("index"))}document.body.appendChild(s);var m=e.elem=a("#"+e.id)[0];i.success&&i.success(m),e.index=o++,e.action(i,m)},d.prototype.action=function(e,t){var i=this;e.time&&(l.timer[i.index]=setTimeout(function(){c.close(i.index)},1e3*e.time));var a=function(){var t=this.getAttribute("type");0==t?(e.no&&e.no(),c.close(i.index)):e.yes?e.yes(i.index):c.close(i.index)};if(e.btn)for(var s=t[n]("layui-m-layerbtn")[0].children,o=s.length,r=0;r0&&e-1 in t)}function s(t){return A.call(t,function(t){return null!=t})}function u(t){return t.length>0?T.fn.concat.apply([],t):t}function c(t){return t.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function l(t){return t in F?F[t]:F[t]=new RegExp("(^|\\s)"+t+"(\\s|$)")}function f(t,e){return"number"!=typeof e||k[c(t)]?e:e+"px"}function h(t){var e,n;return $[t]||(e=L.createElement(t),L.body.appendChild(e),n=getComputedStyle(e,"").getPropertyValue("display"),e.parentNode.removeChild(e),"none"==n&&(n="block"),$[t]=n),$[t]}function p(t){return"children"in t?D.call(t.children):T.map(t.childNodes,function(t){if(1==t.nodeType)return t})}function d(t,e){var n,r=t?t.length:0;for(n=0;n]*>/,R=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,z=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,Z=/^(?:body|html)$/i,q=/([A-Z])/g,H=["val","css","html","text","data","width","height","offset"],I=["after","prepend","before","append"],V=L.createElement("table"),_=L.createElement("tr"),B={tr:L.createElement("tbody"),tbody:V,thead:V,tfoot:V,td:_,th:_,"*":L.createElement("div")},U=/complete|loaded|interactive/,X=/^[\w-]*$/,J={},W=J.toString,Y={},G=L.createElement("div"),K={tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},Q=Array.isArray||function(t){return t instanceof Array};return Y.matches=function(t,e){if(!e||!t||1!==t.nodeType)return!1;var n=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.matchesSelector;if(n)return n.call(t,e);var r,i=t.parentNode,o=!i;return o&&(i=G).appendChild(t),r=~Y.qsa(i,e).indexOf(t),o&&G.removeChild(t),r},C=function(t){return t.replace(/-+(.)?/g,function(t,e){return e?e.toUpperCase():""})},N=function(t){return A.call(t,function(e,n){return t.indexOf(e)==n})},Y.fragment=function(t,e,n){var r,i,a;return R.test(t)&&(r=T(L.createElement(RegExp.$1))),r||(t.replace&&(t=t.replace(z,"<$1>")),e===E&&(e=M.test(t)&&RegExp.$1),e in B||(e="*"),a=B[e],a.innerHTML=""+t,r=T.each(D.call(a.childNodes),function(){a.removeChild(this)})),o(n)&&(i=T(r),T.each(n,function(t,e){H.indexOf(t)>-1?i[t](e):i.attr(t,e)})),r},Y.Z=function(t,e){return new d(t,e)},Y.isZ=function(t){return t instanceof Y.Z},Y.init=function(t,n){var r;if(!t)return Y.Z();if("string"==typeof t)if(t=t.trim(),"<"==t[0]&&M.test(t))r=Y.fragment(t,RegExp.$1,n),t=null;else{if(n!==E)return T(n).find(t);r=Y.qsa(L,t)}else{if(e(t))return T(L).ready(t);if(Y.isZ(t))return t;if(Q(t))r=s(t);else if(i(t))r=[t],t=null;else if(M.test(t))r=Y.fragment(t.trim(),RegExp.$1,n),t=null;else{if(n!==E)return T(n).find(t);r=Y.qsa(L,t)}}return Y.Z(r,t)},T=function(t,e){return Y.init(t,e)},T.extend=function(t){var e,n=D.call(arguments,1);return"boolean"==typeof t&&(e=t,t=n.shift()),n.forEach(function(n){m(t,n,e)}),t},Y.qsa=function(t,e){var n,r="#"==e[0],i=!r&&"."==e[0],o=r||i?e.slice(1):e,a=X.test(o);return t.getElementById&&a&&r?(n=t.getElementById(o))?[n]:[]:1!==t.nodeType&&9!==t.nodeType&&11!==t.nodeType?[]:D.call(a&&!r&&t.getElementsByClassName?i?t.getElementsByClassName(o):t.getElementsByTagName(e):t.querySelectorAll(e))},T.contains=L.documentElement.contains?function(t,e){return t!==e&&t.contains(e)}:function(t,e){for(;e&&(e=e.parentNode);)if(e===t)return!0;return!1},T.type=t,T.isFunction=e,T.isWindow=n,T.isArray=Q,T.isPlainObject=o,T.isEmptyObject=function(t){var e;for(e in t)return!1;return!0},T.isNumeric=function(t){var e=Number(t),n=typeof t;return null!=t&&"boolean"!=n&&("string"!=n||t.length)&&!isNaN(e)&&isFinite(e)||!1},T.inArray=function(t,e,n){return O.indexOf.call(e,t,n)},T.camelCase=C,T.trim=function(t){return null==t?"":String.prototype.trim.call(t)},T.uuid=0,T.support={},T.expr={},T.noop=function(){},T.map=function(t,e){var n,r,i,o=[];if(a(t))for(r=0;r=0?t:t+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each(function(){null!=this.parentNode&&this.parentNode.removeChild(this)})},each:function(t){return O.every.call(this,function(e,n){return t.call(e,n,e)!==!1}),this},filter:function(t){return e(t)?this.not(this.not(t)):T(A.call(this,function(e){return Y.matches(e,t)}))},add:function(t,e){return T(N(this.concat(T(t,e))))},is:function(t){return this.length>0&&Y.matches(this[0],t)},not:function(t){var n=[];if(e(t)&&t.call!==E)this.each(function(e){t.call(this,e)||n.push(this)});else{var r="string"==typeof t?this.filter(t):a(t)&&e(t.item)?D.call(t):T(t);this.forEach(function(t){r.indexOf(t)<0&&n.push(t)})}return T(n)},has:function(t){return this.filter(function(){return i(t)?T.contains(this,t):T(this).find(t).size()})},eq:function(t){return t===-1?this.slice(t):this.slice(t,+t+1)},first:function(){var t=this[0];return t&&!i(t)?t:T(t)},last:function(){var t=this[this.length-1];return t&&!i(t)?t:T(t)},find:function(t){var e,n=this;return e=t?"object"==typeof t?T(t).filter(function(){var t=this;return O.some.call(n,function(e){return T.contains(e,t)})}):1==this.length?T(Y.qsa(this[0],t)):this.map(function(){return Y.qsa(this,t)}):T()},closest:function(t,e){var n=[],i="object"==typeof t&&T(t);return this.each(function(o,a){for(;a&&!(i?i.indexOf(a)>=0:Y.matches(a,t));)a=a!==e&&!r(a)&&a.parentNode;a&&n.indexOf(a)<0&&n.push(a)}),T(n)},parents:function(t){for(var e=[],n=this;n.length>0;)n=T.map(n,function(t){if((t=t.parentNode)&&!r(t)&&e.indexOf(t)<0)return e.push(t),t});return v(e,t)},parent:function(t){return v(N(this.pluck("parentNode")),t)},children:function(t){return v(this.map(function(){return p(this)}),t)},contents:function(){return this.map(function(){return this.contentDocument||D.call(this.childNodes)})},siblings:function(t){return v(this.map(function(t,e){return A.call(p(e.parentNode),function(t){return t!==e})}),t)},empty:function(){return this.each(function(){this.innerHTML=""})},pluck:function(t){return T.map(this,function(e){return e[t]})},show:function(){return this.each(function(){"none"==this.style.display&&(this.style.display=""),"none"==getComputedStyle(this,"").getPropertyValue("display")&&(this.style.display=h(this.nodeName))})},replaceWith:function(t){return this.before(t).remove()},wrap:function(t){var n=e(t);if(this[0]&&!n)var r=T(t).get(0),i=r.parentNode||this.length>1;return this.each(function(e){T(this).wrapAll(n?t.call(this,e):i?r.cloneNode(!0):r)})},wrapAll:function(t){if(this[0]){T(this[0]).before(t=T(t));for(var e;(e=t.children()).length;)t=e.first();T(t).append(this)}return this},wrapInner:function(t){var n=e(t);return this.each(function(e){var r=T(this),i=r.contents(),o=n?t.call(this,e):t;i.length?i.wrapAll(o):r.append(o)})},unwrap:function(){return this.parent().each(function(){T(this).replaceWith(T(this).children())}),this},clone:function(){return this.map(function(){return this.cloneNode(!0)})},hide:function(){return this.css("display","none")},toggle:function(t){return this.each(function(){var e=T(this);(t===E?"none"==e.css("display"):t)?e.show():e.hide()})},prev:function(t){return T(this.pluck("previousElementSibling")).filter(t||"*")},next:function(t){return T(this.pluck("nextElementSibling")).filter(t||"*")},html:function(t){return 0 in arguments?this.each(function(e){var n=this.innerHTML;T(this).empty().append(g(this,t,e,n))}):0 in this?this[0].innerHTML:null},text:function(t){return 0 in arguments?this.each(function(e){var n=g(this,t,e,this.textContent);this.textContent=null==n?"":""+n}):0 in this?this.pluck("textContent").join(""):null},attr:function(t,e){var n;return"string"!=typeof t||1 in arguments?this.each(function(n){if(1===this.nodeType)if(i(t))for(j in t)y(this,j,t[j]);else y(this,t,g(this,e,n,this.getAttribute(t)))}):0 in this&&1==this[0].nodeType&&null!=(n=this[0].getAttribute(t))?n:E},removeAttr:function(t){return this.each(function(){1===this.nodeType&&t.split(" ").forEach(function(t){y(this,t)},this)})},prop:function(t,e){return t=K[t]||t,1 in arguments?this.each(function(n){this[t]=g(this,e,n,this[t])}):this[0]&&this[0][t]},removeProp:function(t){return t=K[t]||t,this.each(function(){delete this[t]})},data:function(t,e){var n="data-"+t.replace(q,"-$1").toLowerCase(),r=1 in arguments?this.attr(n,e):this.attr(n);return null!==r?b(r):E},val:function(t){return 0 in arguments?(null==t&&(t=""),this.each(function(e){this.value=g(this,t,e,this.value)})):this[0]&&(this[0].multiple?T(this[0]).find("option").filter(function(){return this.selected}).pluck("value"):this[0].value)},offset:function(t){if(t)return this.each(function(e){var n=T(this),r=g(this,t,e,n.offset()),i=n.offsetParent().offset(),o={top:r.top-i.top,left:r.left-i.left};"static"==n.css("position")&&(o.position="relative"),n.css(o)});if(!this.length)return null;if(L.documentElement!==this[0]&&!T.contains(L.documentElement,this[0]))return{top:0,left:0};var e=this[0].getBoundingClientRect();return{left:e.left+window.pageXOffset,top:e.top+window.pageYOffset,width:Math.round(e.width),height:Math.round(e.height)}},css:function(e,n){if(arguments.length<2){var r=this[0];if("string"==typeof e){if(!r)return;return r.style[C(e)]||getComputedStyle(r,"").getPropertyValue(e)}if(Q(e)){if(!r)return;var i={},o=getComputedStyle(r,"");return T.each(e,function(t,e){i[e]=r.style[C(e)]||o.getPropertyValue(e)}),i}}var a="";if("string"==t(e))n||0===n?a=c(e)+":"+f(e,n):this.each(function(){this.style.removeProperty(c(e))});else for(j in e)e[j]||0===e[j]?a+=c(j)+":"+f(j,e[j])+";":this.each(function(){this.style.removeProperty(c(j))});return this.each(function(){this.style.cssText+=";"+a})},index:function(t){return t?this.indexOf(T(t)[0]):this.parent().children().indexOf(this[0])},hasClass:function(t){return!!t&&O.some.call(this,function(t){return this.test(x(t))},l(t))},addClass:function(t){return t?this.each(function(e){if("className"in this){S=[];var n=x(this),r=g(this,t,e,n);r.split(/\s+/g).forEach(function(t){T(this).hasClass(t)||S.push(t)},this),S.length&&x(this,n+(n?" ":"")+S.join(" "))}}):this},removeClass:function(t){return this.each(function(e){if("className"in this){if(t===E)return x(this,"");S=x(this),g(this,t,e,S).split(/\s+/g).forEach(function(t){S=S.replace(l(t)," ")}),x(this,S.trim())}})},toggleClass:function(t,e){return t?this.each(function(n){var r=T(this),i=g(this,t,n,x(this));i.split(/\s+/g).forEach(function(t){(e===E?!r.hasClass(t):e)?r.addClass(t):r.removeClass(t)})}):this},scrollTop:function(t){if(this.length){var e="scrollTop"in this[0];return t===E?e?this[0].scrollTop:this[0].pageYOffset:this.each(e?function(){this.scrollTop=t}:function(){this.scrollTo(this.scrollX,t)})}},scrollLeft:function(t){if(this.length){var e="scrollLeft"in this[0];return t===E?e?this[0].scrollLeft:this[0].pageXOffset:this.each(e?function(){this.scrollLeft=t}:function(){this.scrollTo(t,this.scrollY)})}},position:function(){if(this.length){var t=this[0],e=this.offsetParent(),n=this.offset(),r=Z.test(e[0].nodeName)?{top:0,left:0}:e.offset();return n.top-=parseFloat(T(t).css("margin-top"))||0,n.left-=parseFloat(T(t).css("margin-left"))||0,r.top+=parseFloat(T(e[0]).css("border-top-width"))||0,r.left+=parseFloat(T(e[0]).css("border-left-width"))||0,{top:n.top-r.top,left:n.left-r.left}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent||L.body;t&&!Z.test(t.nodeName)&&"static"==T(t).css("position");)t=t.offsetParent;return t})}},T.fn.detach=T.fn.remove,["width","height"].forEach(function(t){var e=t.replace(/./,function(t){return t[0].toUpperCase()});T.fn[t]=function(i){var o,a=this[0];return i===E?n(a)?a["inner"+e]:r(a)?a.documentElement["scroll"+e]:(o=this.offset())&&o[t]:this.each(function(e){a=T(this),a.css(t,g(this,i,e,a[t]()))})}}),I.forEach(function(e,n){var r=n%2;T.fn[e]=function(){var e,i,o=T.map(arguments,function(n){var r=[];return e=t(n),"array"==e?(n.forEach(function(t){return t.nodeType!==E?r.push(t):T.zepto.isZ(t)?r=r.concat(t.get()):void(r=r.concat(Y.fragment(t)))}),r):"object"==e||null==n?n:Y.fragment(n)}),a=this.length>1;return o.length<1?this:this.each(function(t,e){i=r?e:e.parentNode,e=0==n?e.nextSibling:1==n?e.firstChild:2==n?e:null;var s=T.contains(L.documentElement,i);o.forEach(function(t){if(a)t=t.cloneNode(!0);else if(!i)return T(t).remove();i.insertBefore(t,e),s&&w(t,function(t){if(!(null==t.nodeName||"SCRIPT"!==t.nodeName.toUpperCase()||t.type&&"text/javascript"!==t.type||t.src)){var e=t.ownerDocument?t.ownerDocument.defaultView:window;e.eval.call(e,t.innerHTML)}})})})},T.fn[r?e+"To":"insert"+(n?"Before":"After")]=function(t){return T(t)[e](this),this}}),Y.Z.prototype=d.prototype=T.fn,Y.uniq=N,Y.deserializeValue=b,T.zepto=Y,T}();!function(t){function e(t){return t._zid||(t._zid=h++)}function n(t,n,o,a){if(n=r(n),n.ns)var s=i(n.ns);return(v[e(t)]||[]).filter(function(t){return t&&(!n.e||t.e==n.e)&&(!n.ns||s.test(t.ns))&&(!o||e(t.fn)===e(o))&&(!a||t.sel==a)})}function r(t){var e=(""+t).split(".");return{e:e[0],ns:e.slice(1).sort().join(" ")}}function i(t){return new RegExp("(?:^| )"+t.replace(" "," .* ?")+"(?: |$)")}function o(t,e){return t.del&&!y&&t.e in x||!!e}function a(t){return b[t]||y&&x[t]||t}function s(n,i,s,u,l,h,p){var d=e(n),m=v[d]||(v[d]=[]);i.split(/\s/).forEach(function(e){if("ready"==e)return t(document).ready(s);var i=r(e);i.fn=s,i.sel=l,i.e in b&&(s=function(e){var n=e.relatedTarget;if(!n||n!==this&&!t.contains(this,n))return i.fn.apply(this,arguments)}),i.del=h;var d=h||s;i.proxy=function(t){if(t=c(t),!t.isImmediatePropagationStopped()){t.data=u;var e=d.apply(n,t._args==f?[t]:[t].concat(t._args));return e===!1&&(t.preventDefault(),t.stopPropagation()),e}},i.i=m.length,m.push(i),"addEventListener"in n&&n.addEventListener(a(i.e),i.proxy,o(i,p))})}function u(t,r,i,s,u){var c=e(t);(r||"").split(/\s/).forEach(function(e){n(t,e,i,s).forEach(function(e){delete v[c][e.i],"removeEventListener"in t&&t.removeEventListener(a(e.e),e.proxy,o(e,u))})})}function c(e,n){return!n&&e.isDefaultPrevented||(n||(n=e),t.each(T,function(t,r){var i=n[t];e[t]=function(){return this[r]=w,i&&i.apply(n,arguments)},e[r]=E}),e.timeStamp||(e.timeStamp=Date.now()),(n.defaultPrevented!==f?n.defaultPrevented:"returnValue"in n?n.returnValue===!1:n.getPreventDefault&&n.getPreventDefault())&&(e.isDefaultPrevented=w)),e}function l(t){var e,n={originalEvent:t};for(e in t)j.test(e)||t[e]===f||(n[e]=t[e]);return c(n,t)}var f,h=1,p=Array.prototype.slice,d=t.isFunction,m=function(t){return"string"==typeof t},v={},g={},y="onfocusin"in window,x={focus:"focusin",blur:"focusout"},b={mouseenter:"mouseover",mouseleave:"mouseout"};g.click=g.mousedown=g.mouseup=g.mousemove="MouseEvents",t.event={add:s,remove:u},t.proxy=function(n,r){var i=2 in arguments&&p.call(arguments,2);if(d(n)){var o=function(){return n.apply(r,i?i.concat(p.call(arguments)):arguments)};return o._zid=e(n),o}if(m(r))return i?(i.unshift(n[r],n),t.proxy.apply(null,i)):t.proxy(n[r],n);throw new TypeError("expected function")},t.fn.bind=function(t,e,n){return this.on(t,e,n)},t.fn.unbind=function(t,e){return this.off(t,e)},t.fn.one=function(t,e,n,r){return this.on(t,e,n,r,1)};var w=function(){return!0},E=function(){return!1},j=/^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,T={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};t.fn.delegate=function(t,e,n){return this.on(e,t,n)},t.fn.undelegate=function(t,e,n){return this.off(e,t,n)},t.fn.live=function(e,n){return t(document.body).delegate(this.selector,e,n),this},t.fn.die=function(e,n){return t(document.body).undelegate(this.selector,e,n),this},t.fn.on=function(e,n,r,i,o){var a,c,h=this;return e&&!m(e)?(t.each(e,function(t,e){h.on(t,n,r,e,o)}),h):(m(n)||d(i)||i===!1||(i=r,r=n,n=f),i!==f&&r!==!1||(i=r,r=f),i===!1&&(i=E),h.each(function(f,h){o&&(a=function(t){return u(h,t.type,i),i.apply(this,arguments)}),n&&(c=function(e){var r,o=t(e.target).closest(n,h).get(0);if(o&&o!==h)return r=t.extend(l(e),{currentTarget:o,liveFired:h}),(a||i).apply(o,[r].concat(p.call(arguments,1)))}),s(h,e,i,r,n,c||a)}))},t.fn.off=function(e,n,r){var i=this;return e&&!m(e)?(t.each(e,function(t,e){i.off(t,n,e)}),i):(m(n)||d(r)||r===!1||(r=n,n=f),r===!1&&(r=E),i.each(function(){u(this,e,r,n)}))},t.fn.trigger=function(e,n){return e=m(e)||t.isPlainObject(e)?t.Event(e):c(e),e._args=n,this.each(function(){e.type in x&&"function"==typeof this[e.type]?this[e.type]():"dispatchEvent"in this?this.dispatchEvent(e):t(this).triggerHandler(e,n)})},t.fn.triggerHandler=function(e,r){var i,o;return this.each(function(a,s){i=l(m(e)?t.Event(e):e),i._args=r,i.target=s,t.each(n(s,e.type||e),function(t,e){if(o=e.proxy(i),i.isImmediatePropagationStopped())return!1})}),o},"focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach(function(e){t.fn[e]=function(t){return 0 in arguments?this.bind(e,t):this.trigger(e)}}),t.Event=function(t,e){m(t)||(e=t,t=e.type);var n=document.createEvent(g[t]||"Events"),r=!0;if(e)for(var i in e)"bubbles"==i?r=!!e[i]:n[i]=e[i];return n.initEvent(t,r,!0),c(n)}}(e),function(t){function e(e,n,r){var i=t.Event(n);return t(e).trigger(i,r),!i.isDefaultPrevented()}function n(t,n,r,i){if(t.global)return e(n||x,r,i)}function r(e){e.global&&0===t.active++&&n(e,null,"ajaxStart")}function i(e){e.global&&!--t.active&&n(e,null,"ajaxStop")}function o(t,e){var r=e.context;return e.beforeSend.call(r,t,e)!==!1&&n(e,r,"ajaxBeforeSend",[t,e])!==!1&&void n(e,r,"ajaxSend",[t,e])}function a(t,e,r,i){var o=r.context,a="success";r.success.call(o,t,a,e),i&&i.resolveWith(o,[t,a,e]),n(r,o,"ajaxSuccess",[e,r,t]),u(a,e,r)}function s(t,e,r,i,o){var a=i.context;i.error.call(a,r,e,t),o&&o.rejectWith(a,[r,e,t]),n(i,a,"ajaxError",[r,i,t||e]),u(e,r,i)}function u(t,e,r){var o=r.context;r.complete.call(o,e,t),n(r,o,"ajaxComplete",[e,r]),i(r)}function c(t,e,n){if(n.dataFilter==l)return t;var r=n.context;return n.dataFilter.call(r,t,e)}function l(){}function f(t){return t&&(t=t.split(";",2)[0]),t&&(t==T?"html":t==j?"json":w.test(t)?"script":E.test(t)&&"xml")||"text"}function h(t,e){return""==e?t:(t+"&"+e).replace(/[&?]{1,2}/,"?")}function p(e){e.processData&&e.data&&"string"!=t.type(e.data)&&(e.data=t.param(e.data,e.traditional)),!e.data||e.type&&"GET"!=e.type.toUpperCase()&&"jsonp"!=e.dataType||(e.url=h(e.url,e.data),e.data=void 0)}function d(e,n,r,i){return t.isFunction(n)&&(i=r,r=n,n=void 0),t.isFunction(r)||(i=r,r=void 0),{url:e,data:n,success:r,dataType:i}}function m(e,n,r,i){var o,a=t.isArray(n),s=t.isPlainObject(n);t.each(n,function(n,u){o=t.type(u),i&&(n=r?i:i+"["+(s||"object"==o||"array"==o?n:"")+"]"),!i&&a?e.add(u.name,u.value):"array"==o||!r&&"object"==o?m(e,u,r,n):e.add(n,u)})}var v,g,y=+new Date,x=window.document,b=/)<[^<]*)*<\/script>/gi,w=/^(?:text|application)\/javascript/i,E=/^(?:text|application)\/xml/i,j="application/json",T="text/html",S=/^\s*$/,C=x.createElement("a");C.href=window.location.href,t.active=0,t.ajaxJSONP=function(e,n){if(!("type"in e))return t.ajax(e);var r,i,u=e.jsonpCallback,c=(t.isFunction(u)?u():u)||"Zepto"+y++,l=x.createElement("script"),f=window[c],h=function(e){t(l).triggerHandler("error",e||"abort")},p={abort:h};return n&&n.promise(p),t(l).on("load error",function(o,u){clearTimeout(i),t(l).off().remove(),"error"!=o.type&&r?a(r[0],p,e,n):s(null,u||"error",p,e,n),window[c]=f,r&&t.isFunction(f)&&f(r[0]),f=r=void 0}),o(p,e)===!1?(h("abort"),p):(window[c]=function(){r=arguments},l.src=e.url.replace(/\?(.+)=\?/,"?$1="+c),x.head.appendChild(l),e.timeout>0&&(i=setTimeout(function(){h("timeout")},e.timeout)),p)},t.ajaxSettings={type:"GET",beforeSend:l,success:l,error:l,complete:l,context:null,global:!0,xhr:function(){return new window.XMLHttpRequest},accepts:{script:"text/javascript, application/javascript, application/x-javascript",json:j,xml:"application/xml, text/xml",html:T,text:"text/plain"},crossDomain:!1,timeout:0,processData:!0,cache:!0,dataFilter:l},t.ajax=function(e){var n,i,u=t.extend({},e||{}),d=t.Deferred&&t.Deferred();for(v in t.ajaxSettings)void 0===u[v]&&(u[v]=t.ajaxSettings[v]);r(u),u.crossDomain||(n=x.createElement("a"),n.href=u.url,n.href=n.href,u.crossDomain=C.protocol+"//"+C.host!=n.protocol+"//"+n.host),u.url||(u.url=window.location.toString()),(i=u.url.indexOf("#"))>-1&&(u.url=u.url.slice(0,i)),p(u);var m=u.dataType,y=/\?.+=\?/.test(u.url);if(y&&(m="jsonp"),u.cache!==!1&&(e&&e.cache===!0||"script"!=m&&"jsonp"!=m)||(u.url=h(u.url,"_="+Date.now())),"jsonp"==m)return y||(u.url=h(u.url,u.jsonp?u.jsonp+"=?":u.jsonp===!1?"":"callback=?")),t.ajaxJSONP(u,d);var b,w=u.accepts[m],E={},j=function(t,e){E[t.toLowerCase()]=[t,e]},T=/^([\w-]+:)\/\//.test(u.url)?RegExp.$1:window.location.protocol,N=u.xhr(),O=N.setRequestHeader;if(d&&d.promise(N),u.crossDomain||j("X-Requested-With","XMLHttpRequest"),j("Accept",w||"*/*"),(w=u.mimeType||w)&&(w.indexOf(",")>-1&&(w=w.split(",",2)[0]),N.overrideMimeType&&N.overrideMimeType(w)),(u.contentType||u.contentType!==!1&&u.data&&"GET"!=u.type.toUpperCase())&&j("Content-Type",u.contentType||"application/x-www-form-urlencoded"),u.headers)for(g in u.headers)j(g,u.headers[g]);if(N.setRequestHeader=j,N.onreadystatechange=function(){if(4==N.readyState){N.onreadystatechange=l,clearTimeout(b);var e,n=!1;if(N.status>=200&&N.status<300||304==N.status||0==N.status&&"file:"==T){if(m=m||f(u.mimeType||N.getResponseHeader("content-type")),"arraybuffer"==N.responseType||"blob"==N.responseType)e=N.response;else{e=N.responseText;try{e=c(e,m,u),"script"==m?(0,eval)(e):"xml"==m?e=N.responseXML:"json"==m&&(e=S.test(e)?null:t.parseJSON(e))}catch(r){n=r}if(n)return s(n,"parsererror",N,u,d)}a(e,N,u,d)}else s(N.statusText||null,N.status?"error":"abort",N,u,d)}},o(N,u)===!1)return N.abort(),s(null,"abort",N,u,d),N;var P=!("async"in u)||u.async;if(N.open(u.type,u.url,P,u.username,u.password),u.xhrFields)for(g in u.xhrFields)N[g]=u.xhrFields[g];for(g in E)O.apply(N,E[g]);return u.timeout>0&&(b=setTimeout(function(){N.onreadystatechange=l,N.abort(),s(null,"timeout",N,u,d)},u.timeout)),N.send(u.data?u.data:null),N},t.get=function(){return t.ajax(d.apply(null,arguments))},t.post=function(){var e=d.apply(null,arguments);return e.type="POST",t.ajax(e)},t.getJSON=function(){var e=d.apply(null,arguments);return e.dataType="json",t.ajax(e)},t.fn.load=function(e,n,r){if(!this.length)return this;var i,o=this,a=e.split(/\s/),s=d(e,n,r),u=s.success;return a.length>1&&(s.url=a[0],i=a[1]),s.success=function(e){o.html(i?t("
    ").html(e.replace(b,"")).find(i):e),u&&u.apply(o,arguments)},t.ajax(s),this};var N=encodeURIComponent;t.param=function(e,n){var r=[];return r.add=function(e,n){t.isFunction(n)&&(n=n()),null==n&&(n=""),this.push(N(e)+"="+N(n))},m(r,e,n),r.join("&").replace(/%20/g,"+")}}(e),function(t){t.fn.serializeArray=function(){var e,n,r=[],i=function(t){return t.forEach?t.forEach(i):void r.push({name:e,value:t})};return this[0]&&t.each(this[0].elements,function(r,o){n=o.type,e=o.name,e&&"fieldset"!=o.nodeName.toLowerCase()&&!o.disabled&&"submit"!=n&&"reset"!=n&&"button"!=n&&"file"!=n&&("radio"!=n&&"checkbox"!=n||o.checked)&&i(t(o).val())}),r},t.fn.serialize=function(){var t=[];return this.serializeArray().forEach(function(e){t.push(encodeURIComponent(e.name)+"="+encodeURIComponent(e.value))}),t.join("&")},t.fn.submit=function(e){if(0 in arguments)this.bind("submit",e);else if(this.length){var n=t.Event("submit");this.eq(0).trigger(n),n.isDefaultPrevented()||this.get(0).submit()}return this}}(e),function(){try{getComputedStyle(void 0)}catch(t){var e=getComputedStyle;window.getComputedStyle=function(t,n){try{return e(t,n)}catch(r){return null}}}}(),t("zepto",e)});layui.define(["layer-mobile","zepto"],function(e){"use strict";var t=layui.zepto,a=layui["layer-mobile"],i=(layui.device(),"layui-upload-enter"),n="layui-upload-iframe",r={icon:2,shift:6},o={file:"文件",video:"视频",audio:"音频"};a.msg=function(e){return a.open({content:e||"",skin:"msg",time:2})};var s=function(e){this.options=e};s.prototype.init=function(){var e=this,a=e.options,r=t("body"),s=t(a.elem||".layui-upload-file"),u=t('');return t("#"+n)[0]||r.append(u),s.each(function(r,s){s=t(s);var u='
    ',l=s.attr("lay-type")||a.type;a.unwrap||(u='
    '+u+''+(s.attr("lay-title")||a.title||"上传"+(o[l]||"图片"))+"
    "),u=t(u),a.unwrap||u.on("dragover",function(e){e.preventDefault(),t(this).addClass(i)}).on("dragleave",function(){t(this).removeClass(i)}).on("drop",function(){t(this).removeClass(i)}),s.parent("form").attr("target")===n&&(a.unwrap?s.unwrap():(s.parent().next().remove(),s.unwrap().unwrap())),s.wrap(u),s.off("change").on("change",function(){e.action(this,l)})})},s.prototype.action=function(e,i){var o=this,s=o.options,u=e.value,l=t(e),p=l.attr("lay-ext")||s.ext||"";if(u){switch(i){case"file":if(p&&!RegExp("\\w\\.("+p+")$","i").test(escape(u)))return a.msg("不支持该文件格式",r),e.value="";break;case"video":if(!RegExp("\\w\\.("+(p||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(u)))return a.msg("不支持该视频格式",r),e.value="";break;case"audio":if(!RegExp("\\w\\.("+(p||"mp3|wav|mid")+")$","i").test(escape(u)))return a.msg("不支持该音频格式",r),e.value="";break;default:if(!RegExp("\\w\\.("+(p||"jpg|png|gif|bmp|jpeg")+")$","i").test(escape(u)))return a.msg("不支持该图片格式",r),e.value=""}s.before&&s.before(e),l.parent().submit();var c=t("#"+n),f=setInterval(function(){var t;try{t=c.contents().find("body").text()}catch(i){a.msg("上传接口存在跨域",r),clearInterval(f)}if(t){clearInterval(f),c.contents().find("body").html("");try{t=JSON.parse(t)}catch(i){return t={},a.msg("请对上传接口返回JSON字符",r)}"function"==typeof s.success&&s.success(t,e)}},30);e.value=""}},e("upload-mobile",function(e){var t=new s(e=e||{});t.init()})});layui.define(function(i){i("layim-mobile",layui.v)});layui["layui.mobile"]||layui.config({base:layui.cache.dir+"lay/modules/mobile/"}).extend({"layer-mobile":"layer-mobile",zepto:"zepto","upload-mobile":"upload-mobile","layim-mobile":"layim-mobile"}),layui.define(["layer-mobile","zepto","layim-mobile"],function(l){l("mobile",{layer:layui["layer-mobile"],layim:layui["layim-mobile"]})}); \ No newline at end of file diff --git a/static/admin/simpleui/layui/lay/modules/table.js b/static/admin/simpleui/layui/lay/modules/table.js new file mode 100644 index 0000000..8f1c4e0 --- /dev/null +++ b/static/admin/simpleui/layui/lay/modules/table.js @@ -0,0 +1,2 @@ +/** layui-v2.0.2 MIT License By http://www.layui.com */ + ;layui.define(["laytpl","laypage","layer","form"],function(e){"use strict";var t=layui.$,i=layui.laytpl,a=layui.laypage,l=layui.layer,n=layui.form,d=layui.hint(),c=layui.device(),r={config:{checkName:"LAY_CHECKED"},cache:{},index:layui.table?layui.table.index+1e4:0,set:function(e){var i=this;return i.config=t.extend({},i.config,e),i},on:function(e,t){return layui.onevent.call(this,s,e,t)}},o=function(){var e=this;return{reload:function(t){e.reload.call(e,t)},config:e.config}},s="table",u=".layui-table",f="layui-hide",h="layui-table-view",y=".layui-table-header",p=".layui-table-body",v=".layui-table-main",m=".layui-table-fixed",x=".layui-table-fixed-l",b=".layui-table-fixed-r",g=".layui-table-tool",k=".layui-table-sort",C="layui-table-edit",w="layui-table-hover",z=function(e){return e=e||{},['',"","{{# layui.each(d.data.cols, function(i1, item1){ }}","","{{# layui.each(item1, function(i2, item2){ }}",'{{# if(item2.fixed && item2.fixed !== "right"){ fixed = true; } }}',"{{# if(item2.fixed){ right = true; } }}",function(){return e.fixed&&"right"!==e.fixed?'{{# if(item2.fixed && item2.fixed !== "right"){ }}':"right"===e.fixed?'{{# if(item2.fixed === "right"){ }}':""}(),"{{# if(item2.checkbox){ }}",'',"{{# } else if(item2.space){ }}",'',"{{# } else { }}",'","{{# }; }}",e.fixed?"{{# }; }}":"","{{# }); }}","","{{# }); }}","","
    ',"{{# if(item2.colspan > 1){ }}",'
    ','{{item2.title||""}}',"
    ","{{# } else { }}",'
    ','{{item2.title||""}}',"{{# if(item2.sort){ }}",'',"{{# } }}","
    ","{{# } }}","
    "].join("")},T=['',"","
    "].join(""),A=['
    ',"{{# var fixed, right; }}",'
    ',z(),"
    ",'
    ',T,"
    ",'{{# if(fixed && fixed !== "right"){ }}','
    ','
    ',z({fixed:!0}),"
    ",'
    ',T,"
    ","
    ","{{# }; }}","{{# if(right){ }}",'
    ','
    ',z({fixed:"right"}),'
    ',"
    ",'
    ',T,"
    ","
    ","{{# }; }}","{{# if(d.data.page){ }}",'
    ','
    ',"
    ","{{# } }}","","
    "].join(""),D=t(window),F=t(document),j=function(e){var i=this;i.index=++r.index,i.config=t.extend({},i.config,r.config,e),i.render()};j.prototype.config={limit:30,loading:!0},j.prototype.render=function(){var e=this,a=e.config;if(a.elem=t(a.elem),a.where=a.where||{},!a.elem[0])return e;var l=a.elem,n=l.next("."+h),d=e.elem=t(i(A).render({VIEW_CLASS:h,data:a,index:e.index}));if(a.index=e.index,n[0]&&n.remove(),l.after(d),e.layHeader=d.find(y),e.layMain=d.find(v),e.layBody=d.find(p),e.layFixed=d.find(m),e.layFixLeft=d.find(x),e.layFixRight=d.find(b),e.layTool=d.find(g),a.height){var c=parseFloat(a.height)-parseFloat(e.layHeader.height())-1;a.page&&(c-=parseFloat(e.layTool.outerHeight()+1)),e.layBody.css("height",c)}e.pullData(1),e.events()},j.prototype.reload=function(e){var i=this;i.config=t.extend({},i.config,e),i.render()},j.prototype.pullData=function(e,i){var a=this,n=a.config;if(n.url)t.ajax({type:n.method||"get",url:n.url,data:t.extend({page:e,limit:n.limit},n.where),dataType:"json",success:function(t){return 0!=t.code?l.msg(t.msg):(a.renderData(t,e,t.count),i&&l.close(i),void("function"==typeof n.done&&n.done(t,e,t.count)))},error:function(e,t){l.msg("数据请求异常"),d.error("初始table时的接口"+n.url+"异常:"+t),i&&l.close(i)}});else if(n.data&&n.data.constructor===Array){var c=e*n.limit-n.limit,r={data:n.data.concat().splice(c,n.limit),count:n.data.length};a.renderData(r,e,n.data.length),"function"==typeof n.done&&n.done(r,e,r.count)}},j.prototype.page=1,j.prototype.eachCols=function(e){layui.each(this.config.cols,function(t,i){layui.each(i,function(a,l){e(a,l,[t,i])})})},j.prototype.renderData=function(e,l,d,c){var o=this,s=e.data,u=o.config,f=[],h=[],y=[],p=function(){return!c&&o.sortKey?o.sort(o.sortKey.field,o.sortKey.sort,!0):(layui.each(s,function(e,a){var l=[],n=[],d=[];o.eachCols(function(e,c){var o=a[c.field||e];if(void 0!==o&&null!==o||(o=""),!(c.colspan>1)){var s=['",'
    '+function(){return c.checkbox?'":c.toolbar?i(t(c.toolbar).html()||"").render(a):c.templet?i(t(c.templet).html()||String(o)).render(a):o}(),"
    "].join("");l.push(s),c.fixed&&"right"!==c.fixed&&n.push(s),"right"===c.fixed&&d.push(s)}}),f.push(''+l.join("")+""),h.push(''+n.join("")+""),y.push(''+d.join("")+"")}),o.layBody.scrollTop(0),o.layMain.find("tbody").html(f.join("")),o.layFixLeft.find("tbody").html(h.join("")),o.layFixRight.find("tbody").html(y.join("")),n.render("checkbox","LAY-table-"+o.index),o.syncCheckAll(),o.haveInit?o.scrollPatch():setTimeout(function(){o.scrollPatch()},50),void(o.haveInit=!0))};return o.key=u.id||u.index,r.cache[o.key]=s,c?p():(o.cacheData=s,0===s.length?o.layMain.html('
    无数据
    '):(p(),void(u.page&&(o.page=l,o.count=d,a.render({elem:"layui-table-page"+u.index,count:d,groups:3,limits:u.limits||[10,20,30,40,50,60,70,80,90],limit:u.limit,curr:l,layout:["prev","page","next","skip","count","limit"],prev:'',next:'',jump:function(e,t){t||(o.page=e.curr,u.limit=e.limit,o.pullData(e.curr,o.loading()))}}),o.layTool.find(".layui-table-count span").html(d)))))},j.prototype.sort=function(e,i,a){var n,c=this,o=c.config,s=r.cache[c.key];"string"==typeof e&&c.layHeader.find("th").each(function(i,a){var l=t(this),d=l.data("field");if(d===e)return e=l,n=d,!1});try{var n=n||e.data("field");if(c.sortKey&&!a&&n===c.sortKey.field&&i===c.sortKey.sort)return;var u=c.layHeader.find("th .laytable-cell-"+o.index+"-"+n).find(k);c.layHeader.find("th").find(k).removeAttr("lay-sort"),u.attr("lay-sort",i||null),c.layFixed.find("th")}catch(f){return d.error("未到匹配field")}c.sortKey={field:n,sort:i},"asc"===i?s=layui.sort(s,n):"desc"===i?s=layui.sort(s,n,!0):(s=c.cacheData,delete c.sortKey),c.renderData({data:s},c.page,c.count,!0),l.close(c.tipsIndex)},j.prototype.loading=function(){var e=this,t=e.config;if(t.loading&&t.url)return l.msg("数据请求中",{icon:16,offset:[e.layTool.offset().top-100-D.scrollTop()+"px",e.layTool.offset().left+e.layTool.width()/2-90-D.scrollLeft()+"px"],anim:-1,fixed:!1})},j.prototype.setCheckData=function(e,t){var i=this,a=i.config,l=r.cache[i.key];l[e]&&(l[e][a.checkName]=t,i.cacheData[e][a.checkName]=t)},j.prototype.syncCheckAll=function(){var e=this,t=e.config,i=e.layHeader.find('input[name="layTableCheckbox"]'),a=function(i){return e.eachCols(function(e,a){a.checkbox&&(a[t.checkName]=i)}),i};i[0]&&(r.checkStatus(e.key).isAll?(i[0].checked||(i.prop("checked",!0),n.render("checkbox","LAY-table-"+e.index)),a(!0)):(i[0].checked&&(i.prop("checked",!1),n.render("checkbox","LAY-table-"+e.index)),a(!1)))},j.prototype.getCssRule=function(e,t){var i=this,a=i.elem.find("style")[0],l=a.sheet||a.styleSheet,n=l.cssRules||l.rules;layui.each(n,function(a,l){if(l.selectorText===".laytable-cell-"+i.index+"-"+e)return t(l),!0})},j.prototype.scrollPatch=function(){var e=this,i=e.layMain.width()-e.layMain.prop("clientWidth"),a=e.layMain.height()-e.layMain.prop("clientHeight");if(i&&a){if(!e.elem.find(".layui-table-patch")[0]){var l=t('
    ');l.find("div").css({width:i}),e.layHeader.eq(0).find("thead tr").append(l)}}else e.layHeader.eq(0).find(".layui-table-patch").remove();e.layFixed.find(p).css("height",e.layMain.height()-a),e.layFixRight[a?"removeClass":"addClass"](f),e.layFixRight.css("right",i-1)},j.prototype.events=function(){var e,a=this,d=a.config,o=t("body"),u={},f=a.layHeader.find("th"),h=".layui-table-cell",y=d.elem.attr("lay-filter");f.on("mousemove",function(e){var i=t(this),a=i.offset().left,l=e.clientX-a;i.attr("colspan")>1||i.attr("unresize")||u.resizeStart||(u.allowResize=i.width()-l<=10,o.css("cursor",u.allowResize?"col-resize":""))}).on("mouseleave",function(){t(this);u.resizeStart||o.css("cursor","")}).on("mousedown",function(e){if(u.allowResize){var i=t(this).data("field");e.preventDefault(),u.resizeStart=!0,u.offset=[e.clientX,e.clientY],a.getCssRule(i,function(e){u.rule=e,u.ruleWidth=parseFloat(e.style.width)})}}),F.on("mousemove",function(t){if(u.resizeStart){if(t.preventDefault(),u.rule){var i=u.ruleWidth+t.clientX-u.offset[0];u.rule.style.width=i+"px",l.close(a.tipsIndex)}e=1}}).on("mouseup",function(t){u.resizeStart&&(u={},o.css("cursor",""),a.scrollPatch()),2===e&&(e=null)}),f.on("click",function(){var i,l=t(this),n=l.find(k),d=n.attr("lay-sort");return n[0]&&1!==e?(i="asc"===d?"desc":"desc"===d?null:"asc",void a.sort(l,i)):e=2}).find(k+" .layui-edge ").on("click",function(e){var i=t(this),l=i.index(),n=i.parents("th").eq(0).data("field");layui.stope(e),0===l?a.sort(n,"asc"):a.sort(n,"desc")}),a.elem.on("click",'input[name="layTableCheckbox"]+',function(){var e=t(this).prev(),i=a.layBody.find('input[name="layTableCheckbox"]'),l=e.parents("tr").eq(0).data("index"),d=e[0].checked,c="layTableAllChoose"===e.attr("lay-filter");c?(i.each(function(e,t){t.checked=d,a.setCheckData(e,d)}),a.syncCheckAll(),n.render("checkbox","LAY-table-"+a.index)):(a.setCheckData(l,d),a.syncCheckAll()),layui.event.call(this,s,"checkbox("+y+")",{checked:d,data:r.cache[a.key][l],type:c?"all":"one"})}),a.layBody.on("mouseenter","tr",function(){var e=t(this),i=e.index();a.layBody.find("tr:eq("+i+")").addClass(w)}).on("mouseleave","tr",function(){var e=t(this),i=e.index();a.layBody.find("tr:eq("+i+")").removeClass(w)}),a.layBody.on("change","."+C,function(){var e=t(this),i=this.value,l=e.parent().data("field"),n=e.parents("tr").eq(0).data("index");layui.event.call(this,s,"edit("+y+")",{value:i,data:r.cache[a.key][n],field:l})}).on("blur","."+C,function(){var e,l=t(this),n=l.parent().data("field"),d=l.parents("tr").eq(0).data("index"),c=r.cache[a.key][d];a.eachCols(function(t,i){i.field==n&&i.templet&&(e=i.templet)}),l.siblings(h).html(e?i(t(e).html()||this.value).render(c):this.value),l.parent().data("content",this.value),l.remove()}),a.layBody.on("click","td",function(){var e=t(this),i=(e.data("field"),e.children(h));if(!e.data("off")){if(e.data("edit")){var n=t('');return n[0].value=e.data("content")||i.text(),e.find("."+C)[0]||e.append(n),n.focus()}i.prop("scrollWidth")>i.outerWidth()&&(a.tipsIndex=l.tips(['
    ',i.html(),"
    ",''].join(""),i[0],{tips:[3,""],time:-1,anim:-1,maxWidth:c.ios||c.android?300:600,isOutAnim:!1,skin:"layui-table-tips",success:function(e,t){e.find(".layui-table-tips-c").on("click",function(){l.close(t)})}}))}}),a.layBody.on("click","*[lay-event]",function(){var e=t(this),l=e.parents("tr").eq(0).data("index"),n=a.layBody.find('tr[data-index="'+l+'"]'),d="layui-table-click";layui.event.call(this,s,"tool("+y+")",{data:r.cache[a.key][l],event:e.attr("lay-event"),tr:n,del:function(){var e=this.data;delete e[r.config.checkName],n.remove(),a.scrollPatch()},update:function(e){var l=this.data;e=e||{},layui.each(e,function(e,d){if(e in l){var c;l[e]=d,a.eachCols(function(t,i){i.field==e&&i.templet&&(c=i.templet)}),n.children('td[data-field="'+e+'"]').children(h).html(c?i(t(c).html()||d).render(l):d)}})}}),n.addClass(d).siblings("tr").removeClass(d)}),a.layMain.on("scroll",function(){var e=t(this),i=e.scrollLeft(),n=e.scrollTop();a.layHeader.scrollLeft(i),a.layFixed.find(p).scrollTop(n),l.close(a.tipsIndex)}),D.on("resize",function(){a.scrollPatch()})},r.init=function(e,i){i=i||{};var a=this,l=t(e?'table[lay-filter="'+e+'"]':u+"[lay-data]");return l.each(function(){var a=t(this),l=a.attr("lay-data");try{l=new Function("return "+l)()}catch(n){d.error("table元素属性lay-data配置项存在语法错误:"+l)}var c=[],o=t.extend({elem:this,cols:[],data:[],skin:a.attr("lay-skin"),size:a.attr("lay-size"),even:"string"==typeof a.attr("lay-even")},r.config,i,l);e&&a.hide(),a.find("thead>tr").each(function(e){o.cols[e]=[],t(this).children().each(function(i){var a=t(this),l=a.attr("lay-data");try{l=new Function("return "+l)()}catch(n){return d.error("table元素属性lay-data配置项存在语法错误:"+l)}var r=t.extend({title:a.text(),colspan:a.attr("colspan"),rowspan:a.attr("rowspan")},l);c.push(r),o.cols[e].push(r)})}),a.find("tbody>tr").each(function(e){var i=t(this),a={};i.children("td").each(function(e,i){var l=t(this),n=l.data("field");if(n)return a[n]=l.html()}),layui.each(c,function(e,t){var l=i.children("td").eq(e);a[t.field]=l.html()}),o.data[e]=a}),r.render(o)}),a},r.checkStatus=function(e){var t=0,i=[],a=r.cache[e];return a?(layui.each(a,function(e,a){a[r.config.checkName]&&(t++,i.push(a))}),{data:i,isAll:t===a.length}):{}},r.render=function(e){var t=new j(e);return o.call(t)},r.init(),e(s,r)}); \ No newline at end of file diff --git a/static/admin/simpleui/layui/lay/modules/tree.js b/static/admin/simpleui/layui/lay/modules/tree.js new file mode 100644 index 0000000..48c89de --- /dev/null +++ b/static/admin/simpleui/layui/lay/modules/tree.js @@ -0,0 +1,2 @@ +/** layui-v2.0.2 MIT License By http://www.layui.com */ + ;layui.define("jquery",function(e){"use strict";var o=layui.$,a=layui.hint(),i="layui-tree-enter",r=function(e){this.options=e},t={arrow:["",""],checkbox:["",""],radio:["",""],branch:["",""],leaf:""};r.prototype.init=function(e){var o=this;e.addClass("layui-box layui-tree"),o.options.skin&&e.addClass("layui-tree-skin-"+o.options.skin),o.tree(e),o.on(e)},r.prototype.tree=function(e,a){var i=this,r=i.options,n=a||r.nodes;layui.each(n,function(a,n){var l=n.children&&n.children.length>0,c=o('
      '),s=o(["
    • ",function(){return l?''+(n.spread?t.arrow[1]:t.arrow[0])+"":""}(),function(){return r.check?''+("checkbox"===r.check?t.checkbox[0]:"radio"===r.check?t.radio[0]:"")+"":""}(),function(){return'"+(''+(l?n.spread?t.branch[1]:t.branch[0]:t.leaf)+"")+(""+(n.name||"未命名")+"")}(),"
    • "].join(""));l&&(s.append(c),i.tree(c,n.children)),e.append(s),"function"==typeof r.click&&i.click(s,n),i.spread(s,n),r.drag&&i.drag(s,n)})},r.prototype.click=function(e,o){var a=this,i=a.options;e.children("a").on("click",function(e){layui.stope(e),i.click(o)})},r.prototype.spread=function(e,o){var a=this,i=(a.options,e.children(".layui-tree-spread")),r=e.children("ul"),n=e.children("a"),l=function(){e.data("spread")?(e.data("spread",null),r.removeClass("layui-show"),i.html(t.arrow[0]),n.find(".layui-icon").html(t.branch[0])):(e.data("spread",!0),r.addClass("layui-show"),i.html(t.arrow[1]),n.find(".layui-icon").html(t.branch[1]))};r[0]&&(i.on("click",l),n.on("dblclick",l))},r.prototype.on=function(e){var a=this,r=a.options,t="layui-tree-drag";e.find("i").on("selectstart",function(e){return!1}),r.drag&&o(document).on("mousemove",function(e){var i=a.move;if(i.from){var r=(i.to,o('
      '));e.preventDefault(),o("."+t)[0]||o("body").append(r);var n=o("."+t)[0]?o("."+t):r;n.addClass("layui-show").html(i.from.elem.children("a").html()),n.css({left:e.pageX+10,top:e.pageY+10})}}).on("mouseup",function(){var e=a.move;e.from&&(e.from.elem.children("a").removeClass(i),e.to&&e.to.elem.children("a").removeClass(i),a.move={},o("."+t).remove())})},r.prototype.move={},r.prototype.drag=function(e,a){var r=this,t=(r.options,e.children("a")),n=function(){var t=o(this),n=r.move;n.from&&(n.to={item:a,elem:e},t.addClass(i))};t.on("mousedown",function(){var o=r.move;o.from={item:a,elem:e}}),t.on("mouseenter",n).on("mousemove",n).on("mouseleave",function(){var e=o(this),a=r.move;a.from&&(delete a.to,e.removeClass(i))})},e("tree",function(e){var i=new r(e=e||{}),t=o(e.elem);return t[0]?void i.init(t):a.error("layui.tree 没有找到"+e.elem+"元素")})}); \ No newline at end of file diff --git a/static/admin/simpleui/layui/lay/modules/upload.js b/static/admin/simpleui/layui/lay/modules/upload.js new file mode 100644 index 0000000..1b80730 --- /dev/null +++ b/static/admin/simpleui/layui/lay/modules/upload.js @@ -0,0 +1,2 @@ +/** layui-v2.0.2 MIT License By http://www.layui.com */ + ;layui.define("layer",function(e){"use strict";var i=layui.$,t=layui.layer,n=(layui.hint(),layui.device()),o={config:{},set:function(e){var t=this;return t.config=i.extend({},t.config,e),t},on:function(e,i){return layui.onevent.call(this,l,e,i)}},a=function(){var e=this;return{upload:function(i){e.upload.call(e,i)},config:e.config}},l="upload",r="layui-upload-file",u="layui-upload-form",c="layui-upload-iframe",s="layui-upload-choose",f=function(e){var t=this;t.config=i.extend({},t.config,o.config,e),t.render()};f.prototype.config={accept:"images",exts:"",auto:!0,bindAction:"",url:"",field:"file",method:"post",data:{},drag:!0,size:0,multiple:!1},f.prototype.render=function(e){var t=this,e=t.config;e.elem=i(e.elem),e.bindAction=i(e.bindAction),t.file(),t.events()},f.prototype.file=function(){var e=this,t=e.config,o=e.elemFile=i(['"].join("")),a=t.elem.next();(a.hasClass(r)||a.hasClass(u))&&a.remove(),n.ie&&n.ie<10&&t.elem.wrap('
      '),e.isFile()?(e.elemFile=t.elem,t.field=t.elem[0].name):t.elem.after(o),n.ie&&n.ie<10&&e.initIE()},f.prototype.initIE=function(){var e=this,t=e.config,n=i(''),o=i(['
      ',"
      "].join(""));i("#"+c)[0]||i("body").append(n),t.elem.next().hasClass(c)||(e.elemFile.wrap(o),t.elem.next("."+c).append(function(){var e=[];return layui.each(t.data,function(i,t){e.push('')}),e.join("")}()))},f.prototype.msg=function(e){return t.msg(e,{icon:2,shift:6})},f.prototype.isFile=function(){var e=this.config.elem[0];if(e)return"input"===e.tagName.toLocaleLowerCase()&&"file"===e.type},f.prototype.preview=function(e){var i=this;window.FileReader&&layui.each(i.chooseFiles,function(i,t){var n=new FileReader;n.readAsDataURL(t),n.onload=function(){e&&e(i,t,this.result)}})},f.prototype.upload=function(e,t){var o,a=this,l=a.config,r=a.elemFile[0],u=function(){layui.each(e||a.files||a.chooseFiles||r.files,function(e,t){var n=new FormData;n.append(l.field,t),layui.each(l.data,function(e,i){n.append(e,i)}),i.ajax({url:l.url,type:l.method,data:n,contentType:!1,processData:!1,dataType:"json",success:function(i){d(e,i)},error:function(){a.msg("请求上传接口出现异常"),m(e)}})})},p=function(){var e=i("#"+c);a.elemFile.parent().submit(),clearInterval(f.timer),f.timer=setInterval(function(){var i,t=e.contents().find("body");try{i=t.text()}catch(n){a.msg("获取上传后的响应信息出现异常"),clearInterval(f.timer),m()}i&&(clearInterval(f.timer),t.html(""),d(0,i))},30)},d=function(e,i){if(a.elemFile.next("."+s).remove(),r.value="","object"!=typeof i)try{i=JSON.parse(i)}catch(t){return i={},a.msg("请对上传接口返回有效JSON")}"function"==typeof l.done&&l.done(i,e||0,function(e){a.upload(e)})},m=function(e){l.auto&&(r.value=""),"function"==typeof l.error&&l.error(e||0,function(e){a.upload(e)})},v=l.exts,h=function(){var i=[];return layui.each(e||a.chooseFiles,function(e,t){i.push(t.name)}),i}(),g={preview:function(e){a.preview(e)},upload:function(e,i){var t={};t[e]=i,a.upload(t)},pushFile:function(){return a.files=a.files||{},layui.each(a.chooseFiles,function(e,i){a.files[e]=i}),a.files},elemFile:r},y=function(){return"choose"===t?l.choose&&l.choose(g):(l.before&&l.before(g),n.ie?n.ie>9?u():p():void u())};switch(h=0===h.length?r.value.match(/[^\/\\]+\..+/g)||[]||"":h,l.accept){case"file":if(v&&!RegExp("\\w\\.("+v+")$","i").test(escape(h)))return a.msg("选择的文件中包含不支持的格式"),r.value="";break;case"video":if(!RegExp("\\w\\.("+(v||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(h)))return a.msg("选择的视频中包含不支持的格式"),r.value="";break;case"audio":if(!RegExp("\\w\\.("+(v||"mp3|wav|mid")+")$","i").test(escape(h)))return a.msg("选择的音频中包含不支持的格式"),r.value="";break;default:if(layui.each(h,function(e,i){RegExp("\\w\\.("+(v||"jpg|png|gif|bmp|jpeg$")+")","i").test(escape(i))||(o=!0)}),o)return a.msg("选择的图片中包含不支持的格式"),r.value=""}return l.size>0&&!(n.ie&&n.ie<10)?layui.each(a.chooseFiles,function(e,i){if(i.size>1024*l.size){var t=l.size/1024;return t=t>=1?Math.floor(t)+(t%1>0?t.toFixed(1):0)+"MB":l.size+"KB",r.value="",a.msg("文件不能超过"+t)}y()}):void y()},f.prototype.events=function(){var e=this,t=e.config,o=function(i){e.chooseFiles={},layui.each(i,function(i,t){var n=(new Date).getTime();e.chooseFiles[n+"-"+i]=t})},a=function(i,n){var o=e.elemFile,a=i.length>1?i.length+"个文件":(i[0]||{}).name||o[0].value.match(/[^\/\\]+\..+/g)||[]||"";o.next().hasClass(s)&&o.next().remove(),e.upload(null,"choose"),e.isFile()||t.choose||o.after(''+a+"")};t.elem.off("upload.start").on("upload.start",function(){e.elemFile[0].click()}),n.ie&&n.ie<10||t.elem.off("upload.over").on("upload.over",function(){var e=i(this);e.attr("lay-over","")}).off("upload.leave").on("upload.leave",function(){var e=i(this);e.removeAttr("lay-over")}).off("upload.drop").on("upload.drop",function(n,l){var r=i(this),u=l.originalEvent.dataTransfer.files||[];r.removeAttr("lay-over"),o(u),t.auto?e.upload(u):a(u)}),e.elemFile.off("upload.change").on("upload.change",function(){var i=this.files||[];o(i),t.auto?e.upload():a(i)}),t.bindAction.off("upload.action").on("upload.action",function(){e.upload()}),t.elem.data("haveEvents")||(e.elemFile.on("change",function(){i(this).trigger("upload.change")}),t.elem.on("click",function(){e.isFile()||i(this).trigger("upload.start")}),t.drag&&t.elem.on("dragover",function(e){e.preventDefault(),i(this).trigger("upload.over")}).on("dragleave",function(e){i(this).trigger("upload.leave")}).on("drop",function(e){e.preventDefault(),i(this).trigger("upload.drop",e)}),t.bindAction.on("click",function(){i(this).trigger("upload.action")}),t.elem.data("haveEvents",!0))},o.render=function(e){var i=new f(e);return a.call(i)},e(l,o)}); \ No newline at end of file diff --git a/static/admin/simpleui/layui/lay/modules/util.js b/static/admin/simpleui/layui/lay/modules/util.js new file mode 100644 index 0000000..55f63b2 --- /dev/null +++ b/static/admin/simpleui/layui/lay/modules/util.js @@ -0,0 +1,2 @@ +/** layui-v2.0.2 MIT License By http://www.layui.com */ + ;layui.define("jquery",function(e){"use strict";var o=layui.$,t={fixbar:function(e){var t,a,i="layui-fixbar",l="layui-fixbar-top",r=o(document),c=o("body");e=o.extend({showHeight:200},e),e.bar1=e.bar1===!0?"":e.bar1,e.bar2=e.bar2===!0?"":e.bar2,e.bgcolor=e.bgcolor?"background-color:"+e.bgcolor:"";var n=[e.bar1,e.bar2,""],u=o(['
        ',e.bar1?'
      • '+n[0]+"
      • ":"",e.bar2?'
      • '+n[1]+"
      • ":"",'
      • '+n[2]+"
      • ","
      "].join("")),s=u.find("."+l),b=function(){var o=r.scrollTop();o>=e.showHeight?t||(s.show(),t=1):t&&(s.hide(),t=0)};o("."+i)[0]||("object"==typeof e.css&&u.css(e.css),c.append(u),b(),u.find("li").on("click",function(){var t=o(this),a=t.attr("lay-type");"top"===a&&o("html,body").animate({scrollTop:0},200),e.click&&e.click.call(this,a)}),r.on("scroll",function(){clearTimeout(a),a=setTimeout(function(){b()},100)}))},countdown:function(e,o,t){var a=this,i="function"==typeof o,l=new Date(e).getTime(),r=new Date(!o||i?(new Date).getTime():o).getTime(),c=l-r,n=[Math.floor(c/864e5),Math.floor(c/36e5)%24,Math.floor(c/6e4)%60,Math.floor(c/1e3)%60];i&&(t=o);var u=setTimeout(function(){a.countdown(e,r+1e3,t)},1e3);return t&&t(c>0?n:[0,0,0,0],o,u),c<=0&&clearTimeout(u),u},timeAgo:function(e,o){var t=(new Date).getTime()-new Date(e).getTime();return t>2592e6?(t=new Date(e).toLocaleString(),o&&(t=t.replace(/\s[\S]+$/g,"")),t):t>=864e5?(t/1e3/60/60/24|0)+"天前":t>=36e5?(t/1e3/60/60|0)+"小时前":t>=18e4?(t/1e3/60|0)+"分钟前":t<0?"未来":"刚刚"}};e("util",t)}); \ No newline at end of file diff --git a/static/admin/simpleui/layui/layui.all.js b/static/admin/simpleui/layui/layui.all.js new file mode 100644 index 0000000..1e5284f --- /dev/null +++ b/static/admin/simpleui/layui/layui.all.js @@ -0,0 +1,5 @@ +/** layui-v2.0.2 MIT License By http://www.layui.com */ + ;!function(e){"use strict";var t=document,o={modules:{},status:{},timeout:10,event:{}},n=function(){this.v="2.0.2"},r=function(){var e=t.scripts,o=e[e.length-1].src;return o.substring(0,o.lastIndexOf("/")+1)}(),a=function(t){e.console&&console.error&&console.error("Layui hint: "+t)},i="undefined"!=typeof opera&&"[object Opera]"===opera.toString(),u={layer:"modules/layer",laydate:"modules/laydate",laypage:"modules/laypage",laytpl:"modules/laytpl",layim:"modules/layim",layedit:"modules/layedit",form:"modules/form",upload:"modules/upload",tree:"modules/tree",table:"modules/table",element:"modules/element",util:"modules/util",flow:"modules/flow",carousel:"modules/carousel",code:"modules/code",jquery:"modules/jquery",mobile:"modules/mobile","layui.all":"dest/layui.all"};n.prototype.cache=o,n.prototype.define=function(e,t){var n=this,r="function"==typeof e,a=function(){return"function"==typeof t&&t(function(e,t){layui[e]=t,o.status[e]=!0}),this};return r&&(t=e,e=[]),layui["layui.all"]||!layui["layui.all"]&&layui["layui.mobile"]?a.call(n):(n.use(e,a),n)},n.prototype.use=function(e,n,l){function s(e,t){var n="PLaySTATION 3"===navigator.platform?/^complete$/:/^(complete|loaded)$/;("load"===e.type||n.test((e.currentTarget||e.srcElement).readyState))&&(o.modules[f]=t,d.removeChild(v),function r(){return++m>1e3*o.timeout/4?a(f+" is not a valid module"):void(o.status[f]?c():setTimeout(r,4))}())}function c(){l.push(layui[f]),e.length>1?y.use(e.slice(1),n,l):"function"==typeof n&&n.apply(layui,l)}var y=this,p=o.dir=o.dir?o.dir:r,d=t.getElementsByTagName("head")[0];e="string"==typeof e?[e]:e,window.jQuery&&jQuery.fn.on&&(y.each(e,function(t,o){"jquery"===o&&e.splice(t,1)}),layui.jquery=layui.$=jQuery);var f=e[0],m=0;if(l=l||[],o.host=o.host||(p.match(/\/\/([\s\S]+?)\//)||["//"+location.host+"/"])[0],0===e.length||layui["layui.all"]&&u[f]||!layui["layui.all"]&&layui["layui.mobile"]&&u[f])return c(),y;if(o.modules[f])!function g(){return++m>1e3*o.timeout/4?a(f+" is not a valid module"):void("string"==typeof o.modules[f]&&o.status[f]?c():setTimeout(g,4))}();else{var v=t.createElement("script"),h=(u[f]?p+"lay/":o.base||"")+(y.modules[f]||f)+".js";v.async=!0,v.charset="utf-8",v.src=h+function(){var e=o.version===!0?o.v||(new Date).getTime():o.version||"";return e?"?v="+e:""}(),d.appendChild(v),!v.attachEvent||v.attachEvent.toString&&v.attachEvent.toString().indexOf("[native code")<0||i?v.addEventListener("load",function(e){s(e,h)},!1):v.attachEvent("onreadystatechange",function(e){s(e,h)}),o.modules[f]=h}return y},n.prototype.getStyle=function(t,o){var n=t.currentStyle?t.currentStyle:e.getComputedStyle(t,null);return n[n.getPropertyValue?"getPropertyValue":"getAttribute"](o)},n.prototype.link=function(e,n,r){var i=this,u=t.createElement("link"),l=t.getElementsByTagName("head")[0];"string"==typeof n&&(r=n);var s=(r||e).replace(/\.|\//g,""),c=u.id="layuicss-"+s,y=0;return u.rel="stylesheet",u.href=e+(o.debug?"?v="+(new Date).getTime():""),u.media="all",t.getElementById(c)||l.appendChild(u),"function"!=typeof n?i:(function p(){return++y>1e3*o.timeout/100?a(e+" timeout"):void(1989===parseInt(i.getStyle(t.getElementById(c),"width"))?function(){n()}():setTimeout(p,100))}(),i)},n.prototype.addcss=function(e,t,n){return layui.link(o.dir+"css/"+e,t,n)},n.prototype.img=function(e,t,o){var n=new Image;return n.src=e,n.complete?t(n):(n.onload=function(){n.onload=null,t(n)},void(n.onerror=function(e){n.onerror=null,o(e)}))},n.prototype.config=function(e){e=e||{};for(var t in e)o[t]=e[t];return this},n.prototype.modules=function(){var e={};for(var t in u)e[t]=u[t];return e}(),n.prototype.extend=function(e){var t=this;e=e||{};for(var o in e)t[o]||t.modules[o]?a("模块名 "+o+" 已被占用"):t.modules[o]=e[o];return t},n.prototype.router=function(e){var t=this,e=e||location.hash,o={path:[],search:{},hash:(e.match(/[^#](#.*$)/)||[])[1]||""};return/^#\//.test(e)?(e=e.replace(/^#\//,"").replace(/([^#])(#.*$)/,"$1").split("/")||[],t.each(e,function(e,t){/^\w+=/.test(t)?function(){t=t.split("="),o.search[t[0]]=t[1]}():o.path.push(t)}),o):o},n.prototype.data=function(t,o){if(t=t||"layui",e.JSON&&e.JSON.parse){if(null===o)return delete localStorage[t];o="object"==typeof o?o:{key:o};try{var n=JSON.parse(localStorage[t])}catch(r){var n={}}return o.value&&(n[o.key]=o.value),o.remove&&delete n[o.key],localStorage[t]=JSON.stringify(n),o.key?n[o.key]:n}},n.prototype.device=function(t){var o=navigator.userAgent.toLowerCase(),n=function(e){var t=new RegExp(e+"/([^\\s\\_\\-]+)");return e=(o.match(t)||[])[1],e||!1},r={os:function(){return/windows/.test(o)?"windows":/linux/.test(o)?"linux":/iphone|ipod|ipad|ios/.test(o)?"ios":/mac/.test(o)?"mac":void 0}(),ie:function(){return!!(e.ActiveXObject||"ActiveXObject"in e)&&((o.match(/msie\s(\d+)/)||[])[1]||"11")}(),weixin:n("micromessenger")};return t&&!r[t]&&(r[t]=n(t)),r.android=/android/.test(o),r.ios="ios"===r.os,r},n.prototype.hint=function(){return{error:a}},n.prototype.each=function(e,t){var o,n=this;if("function"!=typeof t)return n;if(e=e||[],e.constructor===Object){for(o in e)if(t.call(e[o],o,e[o]))break}else for(o=0;oa?1:r/g,">").replace(/'/g,"'").replace(/"/g,""")},error:function(e,r){var n="Laytpl Error:";return"object"==typeof console&&console.error(n+e+"\n"+(r||"")),n+e}},c=n.exp,t=function(e){this.tpl=e};t.pt=t.prototype,window.errors=0,t.pt.parse=function(e,t){var o=this,p=e,a=c("^"+r.open+"#",""),l=c(r.close+"$","");e=e.replace(/\s+|\r|\t|\n/g," ").replace(c(r.open+"#"),r.open+"# ").replace(c(r.close+"}"),"} "+r.close).replace(/\\/g,"\\\\").replace(/(?="|')/g,"\\").replace(n.query(),function(e){return e=e.replace(a,"").replace(l,""),'";'+e.replace(/\\/g,"")+';view+="'}).replace(n.query(1),function(e){var n='"+(';return e.replace(/\s/g,"")===r.open+r.close?"":(e=e.replace(c(r.open+"|"+r.close),""),/^=/.test(e)&&(e=e.replace(/^=/,""),n='"+_escape_('),n+e.replace(/\\/g,"")+')+"')}),e='"use strict";var view = "'+e+'";return view;';try{return o.cache=e=new Function("d, _escape_",e),e(t,n.escape)}catch(u){return delete o.cache,n.error(u,p)}},t.pt.render=function(e,r){var c,t=this;return e?(c=t.cache?t.cache(e,n.escape):t.parse(t.tpl,e),r?void r(c):c):n.error("no data")};var o=function(e){return"string"!=typeof e?n.error("Template not found"):new t(e)};o.config=function(e){e=e||{};for(var n in e)r[n]=e[n]},o.v="1.2.0",e("laytpl",o)});layui.define(function(e){"use strict";var a=document,t="getElementById",r="getElementsByTagName",n="laypage",i="layui-disabled",u=function(e){var a=this;a.config=e||{},a.config.index=++s.index,a.render(!0)};u.prototype.type=function(){var e=this.config;if("object"==typeof e.elem)return void 0===e.elem.length?2:3},u.prototype.view=function(){var e=this,a=e.config;a.layout="object"==typeof a.layout?a.layout:["prev","page","next"],a.count=0|a.count,a.curr=0|a.curr||1,a.groups=0|a.groups||5,a.limits="object"==typeof a.limits?a.limits:[10,20,30,40,50],a.limit=0|a.limit||10,a.pages=Math.ceil(a.count/a.limit)||1,a.curr>a.pages&&(a.curr=a.pages),a.groups<0?a.groups=0:a.groups>a.pages&&(a.groups=a.pages),a.prev="prev"in a?a.prev:"上一页",a.next="next"in a?a.next:"下一页";var t=a.pages>a.groups?Math.ceil((a.curr+(a.groups>1?1:0))/(a.groups>0?a.groups:1)):1,r={prev:function(){return a.prev?''+a.prev+"":""}(),page:function(){var e=[];if(a.count<1)return"";t>1&&a.first!==!1&&0!==a.groups&&e.push(''+(a.first||1)+"");var r=Math.floor((a.groups-1)/2),n=t>1?a.curr-r:1,i=t>1?function(){var e=a.curr+(a.groups-r-1);return e>a.pages?a.pages:e}():a.groups;for(i-n2&&e.push('');n<=i;n++)n===a.curr?e.push('"+n+""):e.push(''+n+"");return a.pages>a.groups&&a.pages>i&&a.last!==!1&&(i+1…'),0!==a.groups&&e.push(''+(a.last||a.pages)+"")),e.join("")}(),next:function(){return a.next?''+a.next+"":""}(),count:'共 '+a.count+" 条",limit:function(){var e=['"}(),skip:function(){return['到第','','页',""].join("")}()};return['
      ',function(){var e=[];return layui.each(a.layout,function(a,t){r[t]&&e.push(r[t])}),e.join("")}(),"
      "].join("")},u.prototype.jump=function(e,a){if(e){var t=this,n=t.config,i=e.children,u=e[r]("button")[0],p=e[r]("input")[0],l=e[r]("select")[0],o=function(){var e=0|p.value.replace(/\s|\D/g,"");e&&(n.curr=e,t.render())};if(a)return o();for(var c=0,g=i.length;cn.pages||(n.curr=e,t.render())});l&&s.on(l,"change",function(){var e=this.value;n.curr*e>n.count&&(n.curr=Math.ceil(n.count/e)),n.limit=e,t.render()}),u&&s.on(u,"click",function(){o()})}},u.prototype.skip=function(e){if(e){var a=this,t=e[r]("input")[0];t&&s.on(t,"keyup",function(t){var r=this.value,n=t.keyCode;/^(37|38|39|40)$/.test(n)||(/\D/.test(r)&&(this.value=r.replace(/\D/,"")),13===n&&a.jump(e,!0))})}},u.prototype.render=function(e){var r=this,n=r.config,i=r.type(),u=r.view();2===i?n.elem&&(n.elem.innerHTML=u):3===i?n.elem.html(u):a[t](n.elem)&&(a[t](n.elem).innerHTML=u),n.jump&&n.jump(n,e);var s=a[t]("layui-laypage-"+n.index);r.jump(s),n.hash&&!e&&(location.hash="!"+n.hash+"="+n.curr),r.skip(s)};var s={render:function(e){var a=new u(e);return a.index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(e,a,t){return e.attachEvent?e.attachEvent("on"+a,function(a){t.call(e,a)}):e.addEventListener(a,t,!1),this}};e(n,s)});!function(){"use strict";var e=window.layui&&layui.define,t={getPath:function(){var e=document.scripts,t=e[e.length-1],n=t.src;if(!t.getAttribute("merge"))return n.substring(0,n.lastIndexOf("/")+1)}(),getStyle:function(e,t){var n=e.currentStyle?e.currentStyle:window.getComputedStyle(e,null);return n[n.getPropertyValue?"getPropertyValue":"getAttribute"](t)},link:function(e,a,i){if(n.path){var r=document.getElementsByTagName("head")[0],o=document.createElement("link");"string"==typeof a&&(i=a);var s=(i||e).replace(/\.|\//g,""),l="layuicss-"+s,d=0;o.rel="stylesheet",o.href=n.path+e,o.id=l,document.getElementById(l)||r.appendChild(o),"function"==typeof a&&!function c(){return++d>80?window.console&&console.error("laydate.css: Invalid"):void(1989===parseInt(t.getStyle(document.getElementById(l),"width"))?a():setTimeout(c,100))}()}}},n={v:"5.0.2",config:{},index:window.laydate&&window.laydate.v?1e5:0,path:t.getPath,set:function(e){var n=this;return n.config=t.extend({},n.config,e),n},ready:function(a){var i="laydate",r="",o=(e?"modules/laydate/":"theme/")+"default/laydate.css?v="+n.v+r;return e?layui.addcss(o,a,i):t.link(o,a,i),this}},a=function(){var e=this;return{hint:function(t){e.hint.call(e,t)},config:e.config}},i="laydate",r=".layui-laydate",o="layui-this",s="laydate-disabled",l="开始日期超出了结束日期
      建议重新选择",d=[100,2e5],c="layui-laydate-list",m="laydate-selected",u="layui-laydate-hint",h="laydate-day-prev",y="laydate-day-next",f="layui-laydate-footer",p=".laydate-btns-confirm",g="laydate-time-text",v=".laydate-btns-time",D=function(e){var t=this;t.index=++n.index,t.config=T.extend({},t.config,n.config,e),n.ready(function(){t.init()})},T=function(e){return new w(e)},w=function(e){for(var t=0,n="object"==typeof e?[e]:(this.selector=e,document.querySelectorAll(e||null));t0)return n[0].getAttribute(e)}():n.each(function(n,a){a.setAttribute(e,t)})},w.prototype.removeAttr=function(e){return this.each(function(t,n){n.removeAttribute(e)})},w.prototype.html=function(e){return this.each(function(t,n){n.innerHTML=e})},w.prototype.val=function(e){return this.each(function(t,n){n.value=e})},w.prototype.append=function(e){return this.each(function(t,n){"object"==typeof e?n.appendChild(e):n.innerHTML=n.innerHTML+e})},w.prototype.remove=function(e){return this.each(function(t,n){e?n.removeChild(e):n.parentNode.removeChild(n)})},w.prototype.on=function(e,t){return this.each(function(n,a){a.attachEvent?a.attachEvent("on"+e,function(e){e.target=e.srcElement,t.call(a,e)}):a.addEventListener(e,t,!1)})},w.prototype.off=function(e,t){return this.each(function(n,a){a.detachEvent?a.detachEvent("on"+e,t):a.removeEventListener(e,t,!1)})},D.isLeapYear=function(e){return e%4===0&&e%100!==0||e%400===0},D.prototype.config={type:"date",range:!1,format:"yyyy-MM-dd",value:null,min:"1900-1-1",max:"2099-12-31",trigger:"focus",show:!1,showBottom:!0,btns:["clear","now","confirm"],lang:"cn",theme:"default",position:null,calendar:!1,mark:{},zIndex:null,done:null,change:null},D.prototype.lang=function(){var e=this,t=e.config,n={cn:{weeks:["日","一","二","三","四","五","六"],time:["时","分","秒"],timeTips:"选择时间",startTime:"开始时间",endTime:"结束时间",dateTips:"返回日期",month:["一","二","三","四","五","六","七","八","九","十","十一","十二"],tools:{confirm:"确定",clear:"清空",now:"现在"}},en:{weeks:["Su","Mo","Tu","We","Th","Fr","Sa"],time:["Hours","Minutes","Seconds"],timeTips:"Select Time",startTime:"Start Time",endTime:"End Time",dateTips:"Select Date",month:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],tools:{confirm:"Confirm",clear:"Clear",now:"Now"}}};return n[t.lang]||n.cn},D.prototype.init=function(){var e=this,t=e.config,n="yyyy|y|MM|M|dd|d|HH|H|mm|m|ss|s",a="static"===t.position,i={year:"yyyy",month:"yyyy-MM",date:"yyyy-MM-dd",time:"HH:mm:ss",datetime:"yyyy-MM-dd HH:mm:ss"};t.elem=T(t.elem),t.eventElem=T(t.eventElem),t.elem[0]&&(t.range===!0&&(t.range="-"),t.format===i.date&&(t.format=i[t.type]),e.format=t.format.match(new RegExp(n+"|.","g"))||[],e.EXP_IF="",e.EXP_SPLIT="",T.each(e.format,function(t,a){var i=new RegExp(n).test(a)?"\\b\\d{1,"+function(){return/yyyy/.test(a)?4:/y/.test(a)?308:2}()+"}\\b":"\\"+a;e.EXP_IF=e.EXP_IF+i,e.EXP_SPLIT=e.EXP_SPLIT+(e.EXP_SPLIT?"|":"")+"("+i+")"}),e.EXP_IF=new RegExp("^"+(t.range?e.EXP_IF+"\\s\\"+t.range+"\\s"+e.EXP_IF:e.EXP_IF)+"$"),e.EXP_SPLIT=new RegExp(e.EXP_SPLIT,"g"),e.isInput(t.elem[0])||"focus"===t.trigger&&(t.trigger="click"),t.elem.attr("lay-key")||(t.elem.attr("lay-key",e.index),t.eventElem.attr("lay-key",e.index)),t.mark=T.extend({},t.calendar&&"cn"===t.lang?{"0-1-1":"元旦","0-2-14":"情人","0-3-8":"妇女","0-3-12":"植树","0-4-1":"愚人","0-5-1":"劳动","0-5-4":"青年","0-6-1":"儿童","0-9-10":"教师","0-9-18":"国耻","0-10-1":"国庆","0-12-25":"圣诞"}:{},t.mark),T.each(["min","max"],function(e,n){var a=[],i=[];if("number"==typeof t[n]){var r=t[n],o=(new Date).getTime(),s=864e5,l=new Date(r?r0)return!0;var a=T.elem("div",{"class":"layui-laydate-header"}),i=[function(){var e=T.elem("i",{"class":"layui-icon laydate-icon laydate-prev-y"});return e.innerHTML="",e}(),function(){var e=T.elem("i",{"class":"layui-icon laydate-icon laydate-prev-m"});return e.innerHTML="",e}(),function(){var e=T.elem("div",{"class":"laydate-set-ym"}),t=T.elem("span"),n=T.elem("span");return e.appendChild(t),e.appendChild(n),e}(),function(){var e=T.elem("i",{"class":"layui-icon laydate-icon laydate-next-m"});return e.innerHTML="",e}(),function(){var e=T.elem("i",{"class":"layui-icon laydate-icon laydate-next-y"});return e.innerHTML="",e}()],d=T.elem("div",{"class":"layui-laydate-content"}),c=T.elem("table"),m=T.elem("thead"),u=T.elem("tr");T.each(i,function(e,t){a.appendChild(t)}),m.appendChild(u),T.each(new Array(6),function(e){var t=c.insertRow(0);T.each(new Array(7),function(a){if(0===e){var i=T.elem("th");i.innerHTML=n.weeks[a],u.appendChild(i)}t.insertCell(a)})}),c.insertBefore(m,c.children[0]),d.appendChild(c),r[e]=T.elem("div",{"class":"layui-laydate-main laydate-main-list-"+e}),r[e].appendChild(a),r[e].appendChild(d),o.push(i),s.push(d),l.push(c)}),T(d).html(function(){var e=[],i=[];return"datetime"===t.type&&e.push(''+n.timeTips+""),T.each(t.btns,function(e,r){var o=n.tools[r]||"btn";t.range&&"now"===r||(a&&"clear"===r&&(o="cn"===t.lang?"重置":"Reset"),i.push(''+o+""))}),e.push('"),e.join("")}()),T.each(r,function(e,t){i.appendChild(t)}),t.showBottom&&i.appendChild(d),/^#/.test(t.theme)){var c=T.elem("style"),m=["#{{id}} .layui-laydate-header{background-color:{{theme}};}","#{{id}} .layui-this{background-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,e.elemID).replace(/{{theme}}/g,t.theme);"styleSheet"in c?(c.setAttribute("type","text/css"),c.styleSheet.cssText=m):c.innerHTML=m,T(i).addClass("laydate-theme-molv"),i.appendChild(c)}e.remove(),a?t.elem.append(i):(document.body.appendChild(i),e.position()),e.checkDate().calendar(),e.changeEvent(),D.thisElem=e.elemID,"function"==typeof t.ready&&t.ready(T.extend({},t.dateTime,{month:t.dateTime.month+1}))},D.prototype.remove=function(){var e=this,t=e.config,n=T("#"+e.elemID);return n[0]&&"static"!==t.position&&e.checkDate(function(){n.remove()}),e},D.prototype.position=function(){var e=this,t=e.config,n=e.bindElem||t.elem[0],a=n.getBoundingClientRect(),i=e.elem.offsetWidth,r=e.elem.offsetHeight,o=function(e){return e=e?"scrollLeft":"scrollTop",document.body[e]|document.documentElement[e]},s=function(e){return document.documentElement[e?"clientWidth":"clientHeight"]},l=5,d=a.left,c=a.bottom;d+i+l>s("width")&&(d=s("width")-i-l),c+r+l>s()&&(c=a.top>r?a.top-r:s()-r,c-=2*l),t.position&&(e.elem.style.position=t.position),e.elem.style.left=d+("fixed"===t.position?0:o(1))+"px",e.elem.style.top=c+("fixed"===t.position?0:o())+"px"},D.prototype.hint=function(e){var t=this,n=(t.config,T.elem("div",{"class":u}));n.innerHTML=e||"",T(t.elem).find("."+u).remove(),t.elem.appendChild(n),clearTimeout(t.hinTimer),t.hinTimer=setTimeout(function(){T(t.elem).find("."+u).remove()},3e3)},D.prototype.getAsYM=function(e,t,n){return n?t--:t++,t<0&&(t=11,e--),t>11&&(t=0,e++),[e,t]},D.prototype.systemDate=function(e){var t=e||new Date;return{year:t.getFullYear(),month:t.getMonth(),date:t.getDate(),hours:e?e.getHours():0,minutes:e?e.getMinutes():0,seconds:e?e.getSeconds():0}},D.prototype.checkDate=function(e){var t,a,i=this,r=(new Date,i.config),o=r.dateTime=r.dateTime||i.systemDate(),s=i.bindElem||r.elem[0],l=(i.isInput(s)?"val":"html",i.isInput(s)?s.value:"static"===r.position?"":s.innerHTML),c=function(e){e.year>d[1]&&(e.year=d[1],a=!0),e.month>11&&(e.month=11,a=!0),e.hours>23&&(e.hours=0,a=!0),e.minutes>59&&(e.minutes=0,e.hours++,a=!0),e.seconds>59&&(e.seconds=0,e.minutes++,a=!0),t=n.getEndDate(e.month+1,e.year),e.date>t&&(e.date=t,a=!0)},m=function(e,t,n){var o=["startTime","endTime"];t=t.match(i.EXP_SPLIT),n=n||0,r.range&&(i[o[n]]=i[o[n]]||{}),T.each(i.format,function(s,l){var c=parseFloat(t[s]);t[s].length必须遵循下述格式:
      "+(r.range?r.format+" "+r.range+" "+r.format:r.format)+"
      已为你重置"),a=!0):l&&l.constructor===Date?r.dateTime=i.systemDate(l):(r.dateTime=i.systemDate(),delete i.startState,delete i.endState,delete i.startDate,delete i.endDate,delete i.startTime,delete i.endTime),c(o),a&&l&&i.setValue(r.range?i.endDate?i.parse():"":i.parse()),e&&e(),i)},D.prototype.mark=function(e,t){var n,a=this,i=a.config;return T.each(i.mark,function(e,a){var i=e.split("-");i[0]!=t[0]&&0!=i[0]||i[1]!=t[1]||i[2]!=t[2]||(n=a||t[2])}),n&&e.html(''+n+""),a},D.prototype.limit=function(e,t,n,a){var i,r=this,o=r.config,l={},d=o[n>41?"endDate":"dateTime"],c=T.extend({},d,t||{});return T.each({now:c,min:o.min,max:o.max},function(e,t){l[e]=r.newDate(T.extend({year:t.year,month:t.month,date:t.date},function(){var e={};return T.each(a,function(n,a){e[a]=t[a]}),e}())).getTime()}),i=l.nowl.max,e&&e[i?"addClass":"removeClass"](s),i},D.prototype.calendar=function(e){var t,a,i,r=this,s=r.config,l=e||s.dateTime,c=new Date,m=r.lang(),u="date"!==s.type&&"datetime"!==s.type,h=e?1:0,y=T(r.table[h]).find("td"),f=T(r.elemHeader[h][2]).find("span");if(l.yeard[1]&&(l.year=d[1],r.hint("最高只能支持到公元"+d[1]+"年")),r.firstDate||(r.firstDate=T.extend({},l)),c.setFullYear(l.year,l.month,1),t=c.getDay(),a=n.getEndDate(l.month,l.year),i=n.getEndDate(l.month+1,l.year),T.each(y,function(e,n){var d=[l.year,l.month],c=0;n=T(n),n.removeAttr("class"),e=t&&e"+r.time[e]+"

        "];T.each(new Array(t),function(t){i.push(""+T.digit(t,2)+"")}),a.innerHTML=i.join("")+"
      ",d.appendChild(a)}),E()}if(y&&h.removeChild(y),h.appendChild(d),"year"===e||"month"===e)T(n.elemMain[t]).addClass("laydate-ym-show"),T(d).find("li").on("click",function(){var r=0|T(this).attr("lay-ym");if(!T(this).hasClass(s)){if(0===t)i[e]=r,l&&(n.startDate[e]=r);else if(l)n.endDate[e]=r;else{var c="year"===e?n.getAsYM(r,w[1]-1,"sub"):n.getAsYM(w[0],r,"sub");T.extend(i,{year:c[0],month:c[1]})}"year"===a.type||"month"===a.type?(T(d).find("."+o).removeClass(o),T(this).addClass(o),"month"===a.type&&"year"===e&&(n.listYM[t][0]=r,l&&(n[["startDate","endDate"][t]].year=r),n.list("month",t))):(n.checkDate("limit").calendar(),n.closeList()),n.setBtnStatus(),a.range||n.done(null,"change"),T(n.footer).find(v).removeClass(s)}});else{var S=T.elem("span",{"class":g}),k=function(){T(d).find("ol").each(function(e){var t=this,a=T(t).find("li");t.scrollTop=30*(n[x][C[e]]-2),t.scrollTop<=0&&a.each(function(e,n){if(!T(this).hasClass(s))return t.scrollTop=30*(e-2),!0})})},H=T(m[2]).find("."+g);k(),S.innerHTML=a.range?[r.startTime,r.endTime][t]:r.timeTips,T(n.elemMain[t]).addClass("laydate-time-show"),H[0]&&H.remove(),m[2].appendChild(S),T(d).find("ol").each(function(e){var t=this;T(t).find("li").on("click",function(){var r=0|this.innerHTML;T(this).hasClass(s)||(a.range?n[x][C[e]]=r:i[C[e]]=r,T(t).find("."+o).removeClass(o),T(this).addClass(o),n.setBtnStatus(null,T.extend({},n.systemDate(),n.startTime),T.extend({},n.systemDate(),n.endTime)),E(),k(),(n.endDate||"time"===a.type)&&n.done(null,"change"))})})}return n},D.prototype.listYM=[],D.prototype.closeList=function(){var e=this;e.config;T.each(e.elemCont,function(t,n){T(this).find("."+c).remove(),T(e.elemMain[t]).removeClass("laydate-ym-show laydate-time-show")}),T(e.elem).find("."+g).remove()},D.prototype.setBtnStatus=function(e,t,n){var a,i=this,r=i.config,o=T(i.footer).find(p),d=r.range&&"date"!==r.type&&"datetime"!==r.type;d&&(t=t||i.startDate,n=n||i.endDate,a=i.newDate(t).getTime()>i.newDate(n).getTime(),i.limit(null,t)||i.limit(null,n)?o.addClass(s):o[a?"addClass":"removeClass"](s),e&&a&&i.hint("string"==typeof e?l.replace(/日期/g,e):l))},D.prototype.parse=function(e){var t=this,n=t.config,a=e?T.extend({},t.endDate,t.endTime):n.range?T.extend({},t.startDate,t.startTime):n.dateTime,i=t.format.concat();return T.each(i,function(e,t){/yyyy|y/.test(t)?i[e]=T.digit(a.year,t.length):/MM|M/.test(t)?i[e]=T.digit(a.month+1,t.length):/dd|d/.test(t)?i[e]=T.digit(a.date,t.length):/HH|H/.test(t)?i[e]=T.digit(a.hours,t.length):/mm|m/.test(t)?i[e]=T.digit(a.minutes,t.length):/ss|s/.test(t)&&(i[e]=T.digit(a.seconds,t.length))}),n.range&&!e?i.join("")+" "+n.range+" "+t.parse(1):i.join("")},D.prototype.newDate=function(e){return new Date(e.year||1,e.month||0,e.date||1,e.hours||0,e.minutes||0,e.seconds||0)},D.prototype.setValue=function(e){var t=this,n=t.config,a=t.bindElem||n.elem[0],i=t.isInput(a)?"val":"html";return"static"===n.position||T(a)[i](e||""),this},D.prototype.stampRange=function(){var e,t,n=this,a=n.config,i=T(n.elem).find("td");if(a.range&&!n.endDate&&T(n.footer).find(p).addClass(s),n.endDate)return e=n.newDate({year:n.startDate.year,month:n.startDate.month,date:n.startDate.date}).getTime(),t=n.newDate({year:n.endDate.year,month:n.endDate.month,date:n.endDate.date}).getTime(),e>t?n.hint(l):void T.each(i,function(a,i){var r=T(i).attr("lay-ymd").split("-"),s=n.newDate({year:r[0],month:r[1]-1,date:r[2]}).getTime();T(i).removeClass(m+" "+o),s!==e&&s!==t||T(i).addClass(T(i).hasClass(h)||T(i).hasClass(y)?m:o),s>e&&s0&&t-1 in e)}function r(e,t,n){if(pe.isFunction(t))return pe.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return pe.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(Ce.test(t))return pe.filter(t,e,n);t=pe.filter(t,e)}return pe.grep(e,function(e){return pe.inArray(e,t)>-1!==n})}function i(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function o(e){var t={};return pe.each(e.match(De)||[],function(e,n){t[n]=!0}),t}function a(){re.addEventListener?(re.removeEventListener("DOMContentLoaded",s),e.removeEventListener("load",s)):(re.detachEvent("onreadystatechange",s),e.detachEvent("onload",s))}function s(){(re.addEventListener||"load"===e.event.type||"complete"===re.readyState)&&(a(),pe.ready())}function u(e,t,n){if(void 0===n&&1===e.nodeType){var r="data-"+t.replace(_e,"-$1").toLowerCase();if(n=e.getAttribute(r),"string"==typeof n){try{n="true"===n||"false"!==n&&("null"===n?null:+n+""===n?+n:qe.test(n)?pe.parseJSON(n):n)}catch(i){}pe.data(e,t,n)}else n=void 0}return n}function l(e){var t;for(t in e)if(("data"!==t||!pe.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function c(e,t,n,r){if(He(e)){var i,o,a=pe.expando,s=e.nodeType,u=s?pe.cache:e,l=s?e[a]:e[a]&&a;if(l&&u[l]&&(r||u[l].data)||void 0!==n||"string"!=typeof t)return l||(l=s?e[a]=ne.pop()||pe.guid++:a),u[l]||(u[l]=s?{}:{toJSON:pe.noop}),"object"!=typeof t&&"function"!=typeof t||(r?u[l]=pe.extend(u[l],t):u[l].data=pe.extend(u[l].data,t)),o=u[l],r||(o.data||(o.data={}),o=o.data),void 0!==n&&(o[pe.camelCase(t)]=n),"string"==typeof t?(i=o[t],null==i&&(i=o[pe.camelCase(t)])):i=o,i}}function f(e,t,n){if(He(e)){var r,i,o=e.nodeType,a=o?pe.cache:e,s=o?e[pe.expando]:pe.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){pe.isArray(t)?t=t.concat(pe.map(t,pe.camelCase)):t in r?t=[t]:(t=pe.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;for(;i--;)delete r[t[i]];if(n?!l(r):!pe.isEmptyObject(r))return}(n||(delete a[s].data,l(a[s])))&&(o?pe.cleanData([e],!0):fe.deleteExpando||a!=a.window?delete a[s]:a[s]=void 0)}}}function d(e,t,n,r){var i,o=1,a=20,s=r?function(){return r.cur()}:function(){return pe.css(e,t,"")},u=s(),l=n&&n[3]||(pe.cssNumber[t]?"":"px"),c=(pe.cssNumber[t]||"px"!==l&&+u)&&Me.exec(pe.css(e,t));if(c&&c[3]!==l){l=l||c[3],n=n||[],c=+u||1;do o=o||".5",c/=o,pe.style(e,t,c+l);while(o!==(o=s()/u)&&1!==o&&--a)}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}function p(e){var t=ze.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function h(e,t){var n,r,i=0,o="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):void 0;if(!o)for(o=[],n=e.childNodes||e;null!=(r=n[i]);i++)!t||pe.nodeName(r,t)?o.push(r):pe.merge(o,h(r,t));return void 0===t||t&&pe.nodeName(e,t)?pe.merge([e],o):o}function g(e,t){for(var n,r=0;null!=(n=e[r]);r++)pe._data(n,"globalEval",!t||pe._data(t[r],"globalEval"))}function m(e){Be.test(e.type)&&(e.defaultChecked=e.checked)}function y(e,t,n,r,i){for(var o,a,s,u,l,c,f,d=e.length,y=p(t),v=[],x=0;x"!==f[1]||Ve.test(a)?0:u:u.firstChild,o=a&&a.childNodes.length;o--;)pe.nodeName(c=a.childNodes[o],"tbody")&&!c.childNodes.length&&a.removeChild(c);for(pe.merge(v,u.childNodes),u.textContent="";u.firstChild;)u.removeChild(u.firstChild);u=y.lastChild}else v.push(t.createTextNode(a));for(u&&y.removeChild(u),fe.appendChecked||pe.grep(h(v,"input"),m),x=0;a=v[x++];)if(r&&pe.inArray(a,r)>-1)i&&i.push(a);else if(s=pe.contains(a.ownerDocument,a),u=h(y.appendChild(a),"script"),s&&g(u),n)for(o=0;a=u[o++];)Ie.test(a.type||"")&&n.push(a);return u=null,y}function v(){return!0}function x(){return!1}function b(){try{return re.activeElement}catch(e){}}function w(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)w(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),i===!1)i=x;else if(!i)return e;return 1===o&&(a=i,i=function(e){return pe().off(e),a.apply(this,arguments)},i.guid=a.guid||(a.guid=pe.guid++)),e.each(function(){pe.event.add(this,t,i,r,n)})}function T(e,t){return pe.nodeName(e,"table")&&pe.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function C(e){return e.type=(null!==pe.find.attr(e,"type"))+"/"+e.type,e}function E(e){var t=it.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function N(e,t){if(1===t.nodeType&&pe.hasData(e)){var n,r,i,o=pe._data(e),a=pe._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;r1&&"string"==typeof p&&!fe.checkClone&&rt.test(p))return e.each(function(i){var o=e.eq(i);g&&(t[0]=p.call(this,i,o.html())),S(o,t,n,r)});if(f&&(l=y(t,e[0].ownerDocument,!1,e,r),i=l.firstChild,1===l.childNodes.length&&(l=i),i||r)){for(s=pe.map(h(l,"script"),C),a=s.length;c")).appendTo(t.documentElement),t=(ut[0].contentWindow||ut[0].contentDocument).document,t.write(),t.close(),n=D(e,t),ut.detach()),lt[e]=n),n}function L(e,t){return{get:function(){return e()?void delete this.get:(this.get=t).apply(this,arguments)}}}function H(e){if(e in Et)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=Ct.length;n--;)if(e=Ct[n]+t,e in Et)return e}function q(e,t){for(var n,r,i,o=[],a=0,s=e.length;a=0&&n=0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},isPlainObject:function(e){var t;if(!e||"object"!==pe.type(e)||e.nodeType||pe.isWindow(e))return!1;try{if(e.constructor&&!ce.call(e,"constructor")&&!ce.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}if(!fe.ownFirst)for(t in e)return ce.call(e,t);for(t in e);return void 0===t||ce.call(e,t)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?ue[le.call(e)]||"object":typeof e},globalEval:function(t){t&&pe.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(ge,"ms-").replace(me,ye)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t){var r,i=0;if(n(e))for(r=e.length;iT.cacheLength&&delete e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return e[P]=!0,e}function i(e){var t=H.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split("|"),r=n.length;r--;)T.attrHandle[n[r]]=t}function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||V)-(~e.sourceIndex||V);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function u(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function l(e){return r(function(t){return t=+t,r(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function c(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function f(){}function d(e){for(var t=0,n=e.length,r="";t1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function g(e,n,r){for(var i=0,o=n.length;i-1&&(r[l]=!(a[l]=f))}}else x=m(x===a?x.splice(h,x.length):x),o?o(null,a,x,u):Q.apply(a,x)})}function v(e){for(var t,n,r,i=e.length,o=T.relative[e[0].type],a=o||T.relative[" "],s=o?1:0,u=p(function(e){return e===t},a,!0),l=p(function(e){return ee(t,e)>-1},a,!0),c=[function(e,n,r){var i=!o&&(r||n!==A)||((t=n).nodeType?u(e,n,r):l(e,n,r));return t=null,i}];s1&&h(c),s>1&&d(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(se,"$1"),n,s0,o=e.length>0,a=function(r,a,s,u,l){var c,f,d,p=0,h="0",g=r&&[],y=[],v=A,x=r||o&&T.find.TAG("*",l),b=W+=null==v?1:Math.random()||.1,w=x.length;for(l&&(A=a===H||a||l);h!==w&&null!=(c=x[h]);h++){if(o&&c){for(f=0,a||c.ownerDocument===H||(L(c),s=!_);d=e[f++];)if(d(c,a||H,s)){u.push(c);break}l&&(W=b)}i&&((c=!d&&c)&&p--,r&&g.push(c))}if(p+=h,i&&h!==p){for(f=0;d=n[f++];)d(g,y,a,s);if(r){if(p>0)for(;h--;)g[h]||y[h]||(y[h]=G.call(u));y=m(y)}Q.apply(u,y),l&&!r&&y.length>0&&p+n.length>1&&t.uniqueSort(u)}return l&&(W=b,A=v),g};return i?r(a):a}var b,w,T,C,E,N,k,S,A,D,j,L,H,q,_,F,M,O,R,P="sizzle"+1*new Date,B=e.document,W=0,I=0,$=n(),z=n(),X=n(),U=function(e,t){return e===t&&(j=!0),0},V=1<<31,Y={}.hasOwnProperty,J=[],G=J.pop,K=J.push,Q=J.push,Z=J.slice,ee=function(e,t){for(var n=0,r=e.length;n+~]|"+ne+")"+ne+"*"),ce=new RegExp("="+ne+"*([^\\]'\"]*?)"+ne+"*\\]","g"),fe=new RegExp(oe),de=new RegExp("^"+re+"$"),pe={ID:new RegExp("^#("+re+")"),CLASS:new RegExp("^\\.("+re+")"),TAG:new RegExp("^("+re+"|[*])"),ATTR:new RegExp("^"+ie),PSEUDO:new RegExp("^"+oe),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ne+"*(even|odd|(([+-]|)(\\d*)n|)"+ne+"*(?:([+-]|)"+ne+"*(\\d+)|))"+ne+"*\\)|)","i"),bool:new RegExp("^(?:"+te+")$","i"),needsContext:new RegExp("^"+ne+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ne+"*((?:-\\d)?\\d*)"+ne+"*\\)|)(?=[^-]|$)","i")},he=/^(?:input|select|textarea|button)$/i,ge=/^h\d$/i,me=/^[^{]+\{\s*\[native \w/,ye=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ve=/[+~]/,xe=/'|\\/g,be=new RegExp("\\\\([\\da-f]{1,6}"+ne+"?|("+ne+")|.)","ig"),we=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},Te=function(){L()};try{Q.apply(J=Z.call(B.childNodes),B.childNodes),J[B.childNodes.length].nodeType}catch(Ce){Q={apply:J.length?function(e,t){K.apply(e,Z.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}w=t.support={},E=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},L=t.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:B;return r!==H&&9===r.nodeType&&r.documentElement?(H=r,q=H.documentElement,_=!E(H),(n=H.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",Te,!1):n.attachEvent&&n.attachEvent("onunload",Te)),w.attributes=i(function(e){return e.className="i",!e.getAttribute("className")}),w.getElementsByTagName=i(function(e){return e.appendChild(H.createComment("")),!e.getElementsByTagName("*").length}),w.getElementsByClassName=me.test(H.getElementsByClassName),w.getById=i(function(e){return q.appendChild(e).id=P,!H.getElementsByName||!H.getElementsByName(P).length}),w.getById?(T.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&_){var n=t.getElementById(e);return n?[n]:[]}},T.filter.ID=function(e){var t=e.replace(be,we);return function(e){return e.getAttribute("id")===t}}):(delete T.find.ID,T.filter.ID=function(e){var t=e.replace(be,we);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}}),T.find.TAG=w.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):w.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},T.find.CLASS=w.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&_)return t.getElementsByClassName(e)},M=[],F=[],(w.qsa=me.test(H.querySelectorAll))&&(i(function(e){q.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&F.push("[*^$]="+ne+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||F.push("\\["+ne+"*(?:value|"+te+")"),e.querySelectorAll("[id~="+P+"-]").length||F.push("~="),e.querySelectorAll(":checked").length||F.push(":checked"),e.querySelectorAll("a#"+P+"+*").length||F.push(".#.+[+~]")}),i(function(e){var t=H.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&F.push("name"+ne+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||F.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),F.push(",.*:")})),(w.matchesSelector=me.test(O=q.matches||q.webkitMatchesSelector||q.mozMatchesSelector||q.oMatchesSelector||q.msMatchesSelector))&&i(function(e){w.disconnectedMatch=O.call(e,"div"),O.call(e,"[s!='']:x"),M.push("!=",oe)}),F=F.length&&new RegExp(F.join("|")),M=M.length&&new RegExp(M.join("|")),t=me.test(q.compareDocumentPosition),R=t||me.test(q.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},U=t?function(e,t){if(e===t)return j=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!w.sortDetached&&t.compareDocumentPosition(e)===n?e===H||e.ownerDocument===B&&R(B,e)?-1:t===H||t.ownerDocument===B&&R(B,t)?1:D?ee(D,e)-ee(D,t):0:4&n?-1:1)}:function(e,t){if(e===t)return j=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,s=[e],u=[t];if(!i||!o)return e===H?-1:t===H?1:i?-1:o?1:D?ee(D,e)-ee(D,t):0;if(i===o)return a(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;s[r]===u[r];)r++;return r?a(s[r],u[r]):s[r]===B?-1:u[r]===B?1:0},H):H},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==H&&L(e),n=n.replace(ce,"='$1']"),w.matchesSelector&&_&&!X[n+" "]&&(!M||!M.test(n))&&(!F||!F.test(n)))try{var r=O.call(e,n);if(r||w.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(i){}return t(n,H,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==H&&L(e),R(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==H&&L(e);var n=T.attrHandle[t.toLowerCase()],r=n&&Y.call(T.attrHandle,t.toLowerCase())?n(e,t,!_):void 0;return void 0!==r?r:w.attributes||!_?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],r=0,i=0;if(j=!w.detectDuplicates,D=!w.sortStable&&e.slice(0),e.sort(U),j){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return D=null,e},C=t.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=C(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=C(t);return n},T=t.selectors={cacheLength:50,createPseudo:r,match:pe,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(be,we),e[3]=(e[3]||e[4]||e[5]||"").replace(be,we),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||t.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return pe.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&fe.test(n)&&(t=N(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(be,we).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=$[e+" "];return t||(t=new RegExp("(^|"+ne+")"+e+"("+ne+"|$)"))&&$(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,n,r){return function(i){var o=t.attr(i,e);return null==o?"!="===n:!n||(o+="","="===n?o===r:"!="===n?o!==r:"^="===n?r&&0===o.indexOf(r):"*="===n?r&&o.indexOf(r)>-1:"$="===n?r&&o.slice(-r.length)===r:"~="===n?(" "+o.replace(ae," ")+" ").indexOf(r)>-1:"|="===n&&(o===r||o.slice(0,r.length+1)===r+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,d,p,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s,x=!1;if(m){if(o){for(;g;){for(d=t;d=d[g];)if(s?d.nodeName.toLowerCase()===y:1===d.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){for(d=m,f=d[P]||(d[P]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}), +l=c[e]||[],p=l[0]===W&&l[1],x=p&&l[2],d=p&&m.childNodes[p];d=++p&&d&&d[g]||(x=p=0)||h.pop();)if(1===d.nodeType&&++x&&d===t){c[e]=[W,p,x];break}}else if(v&&(d=t,f=d[P]||(d[P]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}),l=c[e]||[],p=l[0]===W&&l[1],x=p),x===!1)for(;(d=++p&&d&&d[g]||(x=p=0)||h.pop())&&((s?d.nodeName.toLowerCase()!==y:1!==d.nodeType)||!++x||(v&&(f=d[P]||(d[P]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}),c[e]=[W,x]),d!==t)););return x-=i,x===r||x%r===0&&x/r>=0}}},PSEUDO:function(e,n){var i,o=T.pseudos[e]||T.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return o[P]?o(n):o.length>1?(i=[e,e,"",n],T.setFilters.hasOwnProperty(e.toLowerCase())?r(function(e,t){for(var r,i=o(e,n),a=i.length;a--;)r=ee(e,i[a]),e[r]=!(t[r]=i[a])}):function(e){return o(e,0,i)}):o}},pseudos:{not:r(function(e){var t=[],n=[],i=k(e.replace(se,"$1"));return i[P]?r(function(e,t,n,r){for(var o,a=i(e,null,r,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,r,o){return t[0]=e,i(t,null,o,n),t[0]=null,!n.pop()}}),has:r(function(e){return function(n){return t(e,n).length>0}}),contains:r(function(e){return e=e.replace(be,we),function(t){return(t.textContent||t.innerText||C(t)).indexOf(e)>-1}}),lang:r(function(e){return de.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(be,we).toLowerCase(),function(t){var n;do if(n=_?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===q},focus:function(e){return e===H.activeElement&&(!H.hasFocus||H.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!T.pseudos.empty(e)},header:function(e){return ge.test(e.nodeName)},input:function(e){return he.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:l(function(){return[0]}),last:l(function(e,t){return[t-1]}),eq:l(function(e,t,n){return[n<0?n+t:n]}),even:l(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:l(function(e,t,n){for(var r=n<0?n+t:n;++r2&&"ID"===(a=o[0]).type&&w.getById&&9===t.nodeType&&_&&T.relative[o[1].type]){if(t=(T.find.ID(a.matches[0].replace(be,we),t)||[])[0],!t)return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(i=pe.needsContext.test(e)?0:o.length;i--&&(a=o[i],!T.relative[s=a.type]);)if((u=T.find[s])&&(r=u(a.matches[0].replace(be,we),ve.test(o[0].type)&&c(t.parentNode)||t))){if(o.splice(i,1),e=r.length&&d(o),!e)return Q.apply(n,r),n;break}}return(l||k(e,f))(r,t,!_,n,!t||ve.test(e)&&c(t.parentNode)||t),n},w.sortStable=P.split("").sort(U).join("")===P,w.detectDuplicates=!!j,L(),w.sortDetached=i(function(e){return 1&e.compareDocumentPosition(H.createElement("div"))}),i(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||o("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),w.attributes&&i(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||o("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),i(function(e){return null==e.getAttribute("disabled")})||o(te,function(e,t,n){var r;if(!n)return e[t]===!0?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),t}(e);pe.find=ve,pe.expr=ve.selectors,pe.expr[":"]=pe.expr.pseudos,pe.uniqueSort=pe.unique=ve.uniqueSort,pe.text=ve.getText,pe.isXMLDoc=ve.isXML,pe.contains=ve.contains;var xe=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&pe(e).is(n))break;r.push(e)}return r},be=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},we=pe.expr.match.needsContext,Te=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,Ce=/^.[^:#\[\.,]*$/;pe.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?pe.find.matchesSelector(r,e)?[r]:[]:pe.find.matches(e,pe.grep(t,function(e){return 1===e.nodeType}))},pe.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(pe(e).filter(function(){for(t=0;t1?pe.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},filter:function(e){return this.pushStack(r(this,e||[],!1))},not:function(e){return this.pushStack(r(this,e||[],!0))},is:function(e){return!!r(this,"string"==typeof e&&we.test(e)?pe(e):e||[],!1).length}});var Ee,Ne=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,ke=pe.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||Ee,"string"==typeof e){if(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:Ne.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof pe?t[0]:t,pe.merge(this,pe.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:re,!0)),Te.test(r[1])&&pe.isPlainObject(t))for(r in t)pe.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}if(i=re.getElementById(r[2]),i&&i.parentNode){if(i.id!==r[2])return Ee.find(e);this.length=1,this[0]=i}return this.context=re,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):pe.isFunction(e)?"undefined"!=typeof n.ready?n.ready(e):e(pe):(void 0!==e.selector&&(this.selector=e.selector,this.context=e.context),pe.makeArray(e,this))};ke.prototype=pe.fn,Ee=pe(re);var Se=/^(?:parents|prev(?:Until|All))/,Ae={children:!0,contents:!0,next:!0,prev:!0};pe.fn.extend({has:function(e){var t,n=pe(e,this),r=n.length;return this.filter(function(){for(t=0;t-1:1===n.nodeType&&pe.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?pe.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?pe.inArray(this[0],pe(e)):pe.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(pe.uniqueSort(pe.merge(this.get(),pe(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),pe.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return xe(e,"parentNode")},parentsUntil:function(e,t,n){return xe(e,"parentNode",n)},next:function(e){return i(e,"nextSibling")},prev:function(e){return i(e,"previousSibling")},nextAll:function(e){return xe(e,"nextSibling")},prevAll:function(e){return xe(e,"previousSibling")},nextUntil:function(e,t,n){return xe(e,"nextSibling",n)},prevUntil:function(e,t,n){return xe(e,"previousSibling",n)},siblings:function(e){return be((e.parentNode||{}).firstChild,e)},children:function(e){return be(e.firstChild)},contents:function(e){return pe.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:pe.merge([],e.childNodes)}},function(e,t){pe.fn[e]=function(n,r){var i=pe.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=pe.filter(r,i)),this.length>1&&(Ae[e]||(i=pe.uniqueSort(i)),Se.test(e)&&(i=i.reverse())),this.pushStack(i)}});var De=/\S+/g;pe.Callbacks=function(e){e="string"==typeof e?o(e):pe.extend({},e);var t,n,r,i,a=[],s=[],u=-1,l=function(){for(i=e.once,r=t=!0;s.length;u=-1)for(n=s.shift();++u-1;)a.splice(n,1),n<=u&&u--}),this},has:function(e){return e?pe.inArray(e,a)>-1:a.length>0},empty:function(){return a&&(a=[]),this},disable:function(){return i=s=[],a=n="",this},disabled:function(){return!a},lock:function(){return i=!0,n||c.disable(),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=n||[],n=[e,n.slice?n.slice():n],s.push(n),t||l()),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},pe.extend({Deferred:function(e){var t=[["resolve","done",pe.Callbacks("once memory"),"resolved"],["reject","fail",pe.Callbacks("once memory"),"rejected"],["notify","progress",pe.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return pe.Deferred(function(n){pe.each(t,function(t,o){var a=pe.isFunction(e[t])&&e[t];i[o[1]](function(){var e=a&&a.apply(this,arguments);e&&pe.isFunction(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[o[0]+"With"](this===r?n.promise():this,a?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?pe.extend(e,r):r}},i={};return r.pipe=r.then,pe.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t,n,r,i=0,o=ie.call(arguments),a=o.length,s=1!==a||e&&pe.isFunction(e.promise)?a:0,u=1===s?e:pe.Deferred(),l=function(e,n,r){return function(i){n[e]=this,r[e]=arguments.length>1?ie.call(arguments):i,r===t?u.notifyWith(n,r):--s||u.resolveWith(n,r)}};if(a>1)for(t=new Array(a),n=new Array(a),r=new Array(a);i0||(je.resolveWith(re,[pe]),pe.fn.triggerHandler&&(pe(re).triggerHandler("ready"),pe(re).off("ready"))))}}),pe.ready.promise=function(t){if(!je)if(je=pe.Deferred(),"complete"===re.readyState||"loading"!==re.readyState&&!re.documentElement.doScroll)e.setTimeout(pe.ready);else if(re.addEventListener)re.addEventListener("DOMContentLoaded",s),e.addEventListener("load",s);else{re.attachEvent("onreadystatechange",s),e.attachEvent("onload",s);var n=!1;try{n=null==e.frameElement&&re.documentElement}catch(r){}n&&n.doScroll&&!function i(){if(!pe.isReady){try{n.doScroll("left")}catch(t){return e.setTimeout(i,50)}a(),pe.ready()}}()}return je.promise(t)},pe.ready.promise();var Le;for(Le in pe(fe))break;fe.ownFirst="0"===Le,fe.inlineBlockNeedsLayout=!1,pe(function(){var e,t,n,r;n=re.getElementsByTagName("body")[0],n&&n.style&&(t=re.createElement("div"),r=re.createElement("div"),r.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(r).appendChild(t),"undefined"!=typeof t.style.zoom&&(t.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",fe.inlineBlockNeedsLayout=e=3===t.offsetWidth,e&&(n.style.zoom=1)),n.removeChild(r))}),function(){var e=re.createElement("div");fe.deleteExpando=!0;try{delete e.test}catch(t){fe.deleteExpando=!1}e=null}();var He=function(e){var t=pe.noData[(e.nodeName+" ").toLowerCase()],n=+e.nodeType||1;return(1===n||9===n)&&(!t||t!==!0&&e.getAttribute("classid")===t)},qe=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,_e=/([A-Z])/g;pe.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?pe.cache[e[pe.expando]]:e[pe.expando],!!e&&!l(e)},data:function(e,t,n){return c(e,t,n)},removeData:function(e,t){return f(e,t)},_data:function(e,t,n){return c(e,t,n,!0)},_removeData:function(e,t){return f(e,t,!0)}}),pe.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=pe.data(o),1===o.nodeType&&!pe._data(o,"parsedAttrs"))){for(n=a.length;n--;)a[n]&&(r=a[n].name,0===r.indexOf("data-")&&(r=pe.camelCase(r.slice(5)),u(o,r,i[r])));pe._data(o,"parsedAttrs",!0)}return i}return"object"==typeof e?this.each(function(){pe.data(this,e)}):arguments.length>1?this.each(function(){pe.data(this,e,t)}):o?u(o,e,pe.data(o,e)):void 0},removeData:function(e){return this.each(function(){pe.removeData(this,e)})}}),pe.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=pe._data(e,t),n&&(!r||pe.isArray(n)?r=pe._data(e,t,pe.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=pe.queue(e,t),r=n.length,i=n.shift(),o=pe._queueHooks(e,t),a=function(){pe.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return pe._data(e,n)||pe._data(e,n,{empty:pe.Callbacks("once memory").add(function(){pe._removeData(e,t+"queue"),pe._removeData(e,n)})})}}),pe.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length
      a",fe.leadingWhitespace=3===e.firstChild.nodeType,fe.tbody=!e.getElementsByTagName("tbody").length,fe.htmlSerialize=!!e.getElementsByTagName("link").length,fe.html5Clone="<:nav>"!==re.createElement("nav").cloneNode(!0).outerHTML,n.type="checkbox",n.checked=!0,t.appendChild(n),fe.appendChecked=n.checked,e.innerHTML="",fe.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue,t.appendChild(e),n=re.createElement("input"),n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),e.appendChild(n),fe.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,fe.noCloneEvent=!!e.addEventListener,e[pe.expando]=1,fe.attributes=!e.getAttribute(pe.expando)}();var Xe={option:[1,""],legend:[1,"
      ","
      "],area:[1,"",""],param:[1,"",""],thead:[1,"","
      "],tr:[2,"","
      "],col:[2,"","
      "],td:[3,"","
      "],_default:fe.htmlSerialize?[0,"",""]:[1,"X
      ","
      "]};Xe.optgroup=Xe.option,Xe.tbody=Xe.tfoot=Xe.colgroup=Xe.caption=Xe.thead,Xe.th=Xe.td;var Ue=/<|&#?\w+;/,Ve=/-1&&(h=p.split("."),p=h.shift(),h.sort()),a=p.indexOf(":")<0&&"on"+p,t=t[pe.expando]?t:new pe.Event(p,"object"==typeof t&&t),t.isTrigger=i?2:3,t.namespace=h.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:pe.makeArray(n,[t]),l=pe.event.special[p]||{},i||!l.trigger||l.trigger.apply(r,n)!==!1)){if(!i&&!l.noBubble&&!pe.isWindow(r)){for(u=l.delegateType||p,Ke.test(u+p)||(s=s.parentNode);s;s=s.parentNode)d.push(s),c=s;c===(r.ownerDocument||re)&&d.push(c.defaultView||c.parentWindow||e)}for(f=0;(s=d[f++])&&!t.isPropagationStopped();)t.type=f>1?u:l.bindType||p,o=(pe._data(s,"events")||{})[t.type]&&pe._data(s,"handle"),o&&o.apply(s,n),o=a&&s[a],o&&o.apply&&He(s)&&(t.result=o.apply(s,n),t.result===!1&&t.preventDefault());if(t.type=p,!i&&!t.isDefaultPrevented()&&(!l._default||l._default.apply(d.pop(),n)===!1)&&He(r)&&a&&r[p]&&!pe.isWindow(r)){c=r[a],c&&(r[a]=null),pe.event.triggered=p;try{r[p]()}catch(g){}pe.event.triggered=void 0,c&&(r[a]=c)}return t.result}},dispatch:function(e){e=pe.event.fix(e);var t,n,r,i,o,a=[],s=ie.call(arguments),u=(pe._data(this,"events")||{})[e.type]||[],l=pe.event.special[e.type]||{};if(s[0]=e,e.delegateTarget=this,!l.preDispatch||l.preDispatch.call(this,e)!==!1){for(a=pe.event.handlers.call(this,e,u),t=0;(i=a[t++])&&!e.isPropagationStopped();)for(e.currentTarget=i.elem,n=0;(o=i.handlers[n++])&&!e.isImmediatePropagationStopped();)e.rnamespace&&!e.rnamespace.test(o.namespace)||(e.handleObj=o,e.data=o.data,r=((pe.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s),void 0!==r&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()));return l.postDispatch&&l.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,r,i,o,a=[],s=t.delegateCount,u=e.target;if(s&&u.nodeType&&("click"!==e.type||isNaN(e.button)||e.button<1))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(r=[],n=0;n-1:pe.find(i,this,null,[u]).length),r[i]&&r.push(o);r.length&&a.push({elem:u,handlers:r})}return s]","i"),tt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,nt=/\s*$/g,at=p(re),st=at.appendChild(re.createElement("div"));pe.extend({htmlPrefilter:function(e){return e.replace(tt,"<$1>")},clone:function(e,t,n){var r,i,o,a,s,u=pe.contains(e.ownerDocument,e);if(fe.html5Clone||pe.isXMLDoc(e)||!et.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(st.innerHTML=e.outerHTML,st.removeChild(o=st.firstChild)),!(fe.noCloneEvent&&fe.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||pe.isXMLDoc(e)))for(r=h(o),s=h(e),a=0;null!=(i=s[a]);++a)r[a]&&k(i,r[a]);if(t)if(n)for(s=s||h(e),r=r||h(o),a=0;null!=(i=s[a]);a++)N(i,r[a]);else N(e,o);return r=h(o,"script"),r.length>0&&g(r,!u&&h(e,"script")),r=s=i=null,o},cleanData:function(e,t){for(var n,r,i,o,a=0,s=pe.expando,u=pe.cache,l=fe.attributes,c=pe.event.special;null!=(n=e[a]);a++)if((t||He(n))&&(i=n[s],o=i&&u[i])){if(o.events)for(r in o.events)c[r]?pe.event.remove(n,r):pe.removeEvent(n,r,o.handle);u[i]&&(delete u[i],l||"undefined"==typeof n.removeAttribute?n[s]=void 0:n.removeAttribute(s),ne.push(i))}}}),pe.fn.extend({domManip:S,detach:function(e){return A(this,e,!0)},remove:function(e){return A(this,e)},text:function(e){return Pe(this,function(e){return void 0===e?pe.text(this):this.empty().append((this[0]&&this[0].ownerDocument||re).createTextNode(e))},null,e,arguments.length)},append:function(){return S(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=T(this,e);t.appendChild(e)}})},prepend:function(){return S(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=T(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return S(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return S(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&pe.cleanData(h(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&pe.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return pe.clone(this,e,t)})},html:function(e){return Pe(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e)return 1===t.nodeType?t.innerHTML.replace(Ze,""):void 0;if("string"==typeof e&&!nt.test(e)&&(fe.htmlSerialize||!et.test(e))&&(fe.leadingWhitespace||!$e.test(e))&&!Xe[(We.exec(e)||["",""])[1].toLowerCase()]){e=pe.htmlPrefilter(e);try{for(;nt",t=l.getElementsByTagName("td"),t[0].style.cssText="margin:0;border:0;padding:0;display:none",o=0===t[0].offsetHeight,o&&(t[0].style.display="",t[1].style.display="none",o=0===t[0].offsetHeight)),f.removeChild(u)}var n,r,i,o,a,s,u=re.createElement("div"),l=re.createElement("div");l.style&&(l.style.cssText="float:left;opacity:.5",fe.opacity="0.5"===l.style.opacity,fe.cssFloat=!!l.style.cssFloat,l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",fe.clearCloneStyle="content-box"===l.style.backgroundClip,u=re.createElement("div"),u.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",l.innerHTML="",u.appendChild(l),fe.boxSizing=""===l.style.boxSizing||""===l.style.MozBoxSizing||""===l.style.WebkitBoxSizing,pe.extend(fe,{reliableHiddenOffsets:function(){return null==n&&t(),o},boxSizingReliable:function(){return null==n&&t(),i},pixelMarginRight:function(){return null==n&&t(),r},pixelPosition:function(){return null==n&&t(),n},reliableMarginRight:function(){return null==n&&t(),a},reliableMarginLeft:function(){return null==n&&t(),s}}))}();var ht,gt,mt=/^(top|right|bottom|left)$/;e.getComputedStyle?(ht=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)},gt=function(e,t,n){var r,i,o,a,s=e.style;return n=n||ht(e),a=n?n.getPropertyValue(t)||n[t]:void 0,""!==a&&void 0!==a||pe.contains(e.ownerDocument,e)||(a=pe.style(e,t)),n&&!fe.pixelMarginRight()&&ft.test(a)&&ct.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o),void 0===a?a:a+""}):pt.currentStyle&&(ht=function(e){return e.currentStyle},gt=function(e,t,n){var r,i,o,a,s=e.style;return n=n||ht(e),a=n?n[t]:void 0,null==a&&s&&s[t]&&(a=s[t]),ft.test(a)&&!mt.test(t)&&(r=s.left,i=e.runtimeStyle,o=i&&i.left,o&&(i.left=e.currentStyle.left),s.left="fontSize"===t?"1em":a,a=s.pixelLeft+"px",s.left=r,o&&(i.left=o)),void 0===a?a:a+""||"auto"});var yt=/alpha\([^)]*\)/i,vt=/opacity\s*=\s*([^)]*)/i,xt=/^(none|table(?!-c[ea]).+)/,bt=new RegExp("^("+Fe+")(.*)$","i"),wt={position:"absolute",visibility:"hidden",display:"block"},Tt={letterSpacing:"0",fontWeight:"400"},Ct=["Webkit","O","Moz","ms"],Et=re.createElement("div").style;pe.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=gt(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":fe.cssFloat?"cssFloat":"styleFloat"},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=pe.camelCase(t),u=e.style;if(t=pe.cssProps[s]||(pe.cssProps[s]=H(s)||s),a=pe.cssHooks[t]||pe.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:u[t];if(o=typeof n,"string"===o&&(i=Me.exec(n))&&i[1]&&(n=d(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(pe.cssNumber[s]?"":"px")),fe.clearCloneStyle||""!==n||0!==t.indexOf("background")||(u[t]="inherit"),!(a&&"set"in a&&void 0===(n=a.set(e,n,r)))))try{u[t]=n}catch(l){}}},css:function(e,t,n,r){var i,o,a,s=pe.camelCase(t);return t=pe.cssProps[s]||(pe.cssProps[s]=H(s)||s),a=pe.cssHooks[t]||pe.cssHooks[s],a&&"get"in a&&(o=a.get(e,!0,n)),void 0===o&&(o=gt(e,t,r)),"normal"===o&&t in Tt&&(o=Tt[t]),""===n||n?(i=parseFloat(o),n===!0||isFinite(i)?i||0:o):o}}),pe.each(["height","width"],function(e,t){pe.cssHooks[t]={get:function(e,n,r){if(n)return xt.test(pe.css(e,"display"))&&0===e.offsetWidth?dt(e,wt,function(){return M(e,t,r)}):M(e,t,r)},set:function(e,n,r){var i=r&&ht(e);return _(e,n,r?F(e,t,r,fe.boxSizing&&"border-box"===pe.css(e,"boxSizing",!1,i),i):0)}}}),fe.opacity||(pe.cssHooks.opacity={get:function(e,t){return vt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=pe.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===pe.trim(o.replace(yt,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=yt.test(o)?o.replace(yt,i):o+" "+i)}}),pe.cssHooks.marginRight=L(fe.reliableMarginRight,function(e,t){if(t)return dt(e,{display:"inline-block"},gt,[e,"marginRight"])}),pe.cssHooks.marginLeft=L(fe.reliableMarginLeft,function(e,t){if(t)return(parseFloat(gt(e,"marginLeft"))||(pe.contains(e.ownerDocument,e)?e.getBoundingClientRect().left-dt(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}):0))+"px"}),pe.each({margin:"",padding:"",border:"Width"},function(e,t){pe.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+Oe[r]+t]=o[r]||o[r-2]||o[0];return i}},ct.test(e)||(pe.cssHooks[e+t].set=_)}),pe.fn.extend({css:function(e,t){return Pe(this,function(e,t,n){var r,i,o={},a=0;if(pe.isArray(t)){for(r=ht(e),i=t.length;a1)},show:function(){return q(this,!0)},hide:function(){return q(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){Re(this)?pe(this).show():pe(this).hide()})}}),pe.Tween=O,O.prototype={constructor:O,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||pe.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(pe.cssNumber[n]?"":"px")},cur:function(){var e=O.propHooks[this.prop];return e&&e.get?e.get(this):O.propHooks._default.get(this)},run:function(e){var t,n=O.propHooks[this.prop];return this.options.duration?this.pos=t=pe.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):O.propHooks._default.set(this),this}},O.prototype.init.prototype=O.prototype,O.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=pe.css(e.elem,e.prop,""),t&&"auto"!==t?t:0)},set:function(e){pe.fx.step[e.prop]?pe.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[pe.cssProps[e.prop]]&&!pe.cssHooks[e.prop]?e.elem[e.prop]=e.now:pe.style(e.elem,e.prop,e.now+e.unit)}}},O.propHooks.scrollTop=O.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},pe.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},pe.fx=O.prototype.init,pe.fx.step={};var Nt,kt,St=/^(?:toggle|show|hide)$/,At=/queueHooks$/;pe.Animation=pe.extend($,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return d(n.elem,e,Me.exec(t),n),n}]},tweener:function(e,t){pe.isFunction(e)?(t=e,e=["*"]):e=e.match(De);for(var n,r=0,i=e.length;r
      a",e=n.getElementsByTagName("a")[0],t.setAttribute("type","checkbox"),n.appendChild(t),e=n.getElementsByTagName("a")[0],e.style.cssText="top:1px",fe.getSetAttribute="t"!==n.className,fe.style=/top/.test(e.getAttribute("style")),fe.hrefNormalized="/a"===e.getAttribute("href"),fe.checkOn=!!t.value,fe.optSelected=i.selected,fe.enctype=!!re.createElement("form").enctype,r.disabled=!0,fe.optDisabled=!i.disabled,t=re.createElement("input"),t.setAttribute("value",""),fe.input=""===t.getAttribute("value"),t.value="t",t.setAttribute("type","radio"),fe.radioValue="t"===t.value}();var Dt=/\r/g,jt=/[\x20\t\r\n\f]+/g;pe.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=pe.isFunction(e),this.each(function(n){var i;1===this.nodeType&&(i=r?e.call(this,n,pe(this).val()):e,null==i?i="":"number"==typeof i?i+="":pe.isArray(i)&&(i=pe.map(i,function(e){return null==e?"":e+""})),t=pe.valHooks[this.type]||pe.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return t=pe.valHooks[i.type]||pe.valHooks[i.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:(n=i.value,"string"==typeof n?n.replace(Dt,""):null==n?"":n)}}}),pe.extend({valHooks:{option:{get:function(e){var t=pe.find.attr(e,"value");return null!=t?t:pe.trim(pe.text(e)).replace(jt," ")}},select:{get:function(e){for(var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||i<0,a=o?null:[],s=o?i+1:r.length,u=i<0?s:o?i:0;u-1)try{r.selected=n=!0}catch(s){r.scrollHeight}else r.selected=!1;return n||(e.selectedIndex=-1),i}}}}),pe.each(["radio","checkbox"],function(){pe.valHooks[this]={set:function(e,t){if(pe.isArray(t))return e.checked=pe.inArray(pe(e).val(),t)>-1}},fe.checkOn||(pe.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Lt,Ht,qt=pe.expr.attrHandle,_t=/^(?:checked|selected)$/i,Ft=fe.getSetAttribute,Mt=fe.input;pe.fn.extend({attr:function(e,t){return Pe(this,pe.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){pe.removeAttr(this,e)})}}),pe.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?pe.prop(e,t,n):(1===o&&pe.isXMLDoc(e)||(t=t.toLowerCase(),i=pe.attrHooks[t]||(pe.expr.match.bool.test(t)?Ht:Lt)),void 0!==n?null===n?void pe.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:(r=pe.find.attr(e,t),null==r?void 0:r))},attrHooks:{type:{set:function(e,t){if(!fe.radioValue&&"radio"===t&&pe.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(De);if(o&&1===e.nodeType)for(;n=o[i++];)r=pe.propFix[n]||n,pe.expr.match.bool.test(n)?Mt&&Ft||!_t.test(n)?e[r]=!1:e[pe.camelCase("default-"+n)]=e[r]=!1:pe.attr(e,n,""),e.removeAttribute(Ft?n:r)}}),Ht={set:function(e,t,n){return t===!1?pe.removeAttr(e,n):Mt&&Ft||!_t.test(n)?e.setAttribute(!Ft&&pe.propFix[n]||n,n):e[pe.camelCase("default-"+n)]=e[n]=!0,n}},pe.each(pe.expr.match.bool.source.match(/\w+/g),function(e,t){var n=qt[t]||pe.find.attr;Mt&&Ft||!_t.test(t)?qt[t]=function(e,t,r){var i,o;return r||(o=qt[t],qt[t]=i,i=null!=n(e,t,r)?t.toLowerCase():null,qt[t]=o),i}:qt[t]=function(e,t,n){if(!n)return e[pe.camelCase("default-"+t)]?t.toLowerCase():null}}),Mt&&Ft||(pe.attrHooks.value={set:function(e,t,n){return pe.nodeName(e,"input")?void(e.defaultValue=t):Lt&&Lt.set(e,t,n)}}),Ft||(Lt={set:function(e,t,n){var r=e.getAttributeNode(n);if(r||e.setAttributeNode(r=e.ownerDocument.createAttribute(n)),r.value=t+="","value"===n||t===e.getAttribute(n))return t}},qt.id=qt.name=qt.coords=function(e,t,n){var r;if(!n)return(r=e.getAttributeNode(t))&&""!==r.value?r.value:null},pe.valHooks.button={get:function(e,t){var n=e.getAttributeNode(t);if(n&&n.specified)return n.value},set:Lt.set},pe.attrHooks.contenteditable={set:function(e,t,n){Lt.set(e,""!==t&&t,n)}},pe.each(["width","height"],function(e,t){pe.attrHooks[t]={set:function(e,n){if(""===n)return e.setAttribute(t,"auto"),n}}})),fe.style||(pe.attrHooks.style={get:function(e){return e.style.cssText||void 0},set:function(e,t){return e.style.cssText=t+""}});var Ot=/^(?:input|select|textarea|button|object)$/i,Rt=/^(?:a|area)$/i;pe.fn.extend({prop:function(e,t){return Pe(this,pe.prop,e,t,arguments.length>1)},removeProp:function(e){return e=pe.propFix[e]||e,this.each(function(){try{this[e]=void 0,delete this[e]}catch(t){}})}}),pe.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&pe.isXMLDoc(e)||(t=pe.propFix[t]||t,i=pe.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=pe.find.attr(e,"tabindex");return t?parseInt(t,10):Ot.test(e.nodeName)||Rt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),fe.hrefNormalized||pe.each(["href","src"],function(e,t){pe.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),fe.optSelected||(pe.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),pe.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){pe.propFix[this.toLowerCase()]=this}),fe.enctype||(pe.propFix.enctype="encoding");var Pt=/[\t\r\n\f]/g;pe.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(pe.isFunction(e))return this.each(function(t){pe(this).addClass(e.call(this,t,z(this)))});if("string"==typeof e&&e)for(t=e.match(De)||[];n=this[u++];)if(i=z(n),r=1===n.nodeType&&(" "+i+" ").replace(Pt," ")){for(a=0;o=t[a++];)r.indexOf(" "+o+" ")<0&&(r+=o+" ");s=pe.trim(r),i!==s&&pe.attr(n,"class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(pe.isFunction(e))return this.each(function(t){pe(this).removeClass(e.call(this,t,z(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof e&&e)for(t=e.match(De)||[];n=this[u++];)if(i=z(n),r=1===n.nodeType&&(" "+i+" ").replace(Pt," ")){for(a=0;o=t[a++];)for(;r.indexOf(" "+o+" ")>-1;)r=r.replace(" "+o+" "," ");s=pe.trim(r),i!==s&&pe.attr(n,"class",s)}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):pe.isFunction(e)?this.each(function(n){pe(this).toggleClass(e.call(this,n,z(this),t),t)}):this.each(function(){var t,r,i,o;if("string"===n)for(r=0,i=pe(this),o=e.match(De)||[];t=o[r++];)i.hasClass(t)?i.removeClass(t):i.addClass(t);else void 0!==e&&"boolean"!==n||(t=z(this),t&&pe._data(this,"__className__",t),pe.attr(this,"class",t||e===!1?"":pe._data(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+z(n)+" ").replace(Pt," ").indexOf(t)>-1)return!0;return!1}}),pe.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){pe.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),pe.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}});var Bt=e.location,Wt=pe.now(),It=/\?/,$t=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;pe.parseJSON=function(t){if(e.JSON&&e.JSON.parse)return e.JSON.parse(t+"");var n,r=null,i=pe.trim(t+"");return i&&!pe.trim(i.replace($t,function(e,t,i,o){return n&&t&&(r=0),0===r?e:(n=i||t,r+=!o-!i,"")}))?Function("return "+i)():pe.error("Invalid JSON: "+t)},pe.parseXML=function(t){var n,r;if(!t||"string"!=typeof t)return null;try{e.DOMParser?(r=new e.DOMParser,n=r.parseFromString(t,"text/xml")):(n=new e.ActiveXObject("Microsoft.XMLDOM"),n.async="false",n.loadXML(t))}catch(i){n=void 0}return n&&n.documentElement&&!n.getElementsByTagName("parsererror").length||pe.error("Invalid XML: "+t),n};var zt=/#.*$/,Xt=/([?&])_=[^&]*/,Ut=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Vt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Yt=/^(?:GET|HEAD)$/,Jt=/^\/\//,Gt=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Kt={},Qt={},Zt="*/".concat("*"),en=Bt.href,tn=Gt.exec(en.toLowerCase())||[];pe.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:en,type:"GET",isLocal:Vt.test(tn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Zt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":pe.parseJSON,"text xml":pe.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?V(V(e,pe.ajaxSettings),t):V(pe.ajaxSettings,e)},ajaxPrefilter:X(Kt),ajaxTransport:X(Qt),ajax:function(t,n){function r(t,n,r,i){var o,f,v,x,w,C=n;2!==b&&(b=2,u&&e.clearTimeout(u),c=void 0,s=i||"",T.readyState=t>0?4:0,o=t>=200&&t<300||304===t,r&&(x=Y(d,T,r)),x=J(d,x,T,o),o?(d.ifModified&&(w=T.getResponseHeader("Last-Modified"),w&&(pe.lastModified[a]=w),w=T.getResponseHeader("etag"),w&&(pe.etag[a]=w)),204===t||"HEAD"===d.type?C="nocontent":304===t?C="notmodified":(C=x.state,f=x.data,v=x.error,o=!v)):(v=C,!t&&C||(C="error",t<0&&(t=0))),T.status=t,T.statusText=(n||C)+"",o?g.resolveWith(p,[f,C,T]):g.rejectWith(p,[T,C,v]),T.statusCode(y),y=void 0,l&&h.trigger(o?"ajaxSuccess":"ajaxError",[T,d,o?f:v]),m.fireWith(p,[T,C]),l&&(h.trigger("ajaxComplete",[T,d]),--pe.active||pe.event.trigger("ajaxStop")))}"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,d=pe.ajaxSetup({},n),p=d.context||d,h=d.context&&(p.nodeType||p.jquery)?pe(p):pe.event,g=pe.Deferred(),m=pe.Callbacks("once memory"),y=d.statusCode||{},v={},x={},b=0,w="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!f)for(f={};t=Ut.exec(s);)f[t[1].toLowerCase()]=t[2];t=f[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?s:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=x[n]=x[n]||e,v[e]=t),this},overrideMimeType:function(e){return b||(d.mimeType=e),this},statusCode:function(e){var t;if(e)if(b<2)for(t in e)y[t]=[y[t],e[t]];else T.always(e[T.status]);return this},abort:function(e){var t=e||w;return c&&c.abort(t),r(0,t),this}};if(g.promise(T).complete=m.add,T.success=T.done,T.error=T.fail,d.url=((t||d.url||en)+"").replace(zt,"").replace(Jt,tn[1]+"//"),d.type=n.method||n.type||d.method||d.type,d.dataTypes=pe.trim(d.dataType||"*").toLowerCase().match(De)||[""],null==d.crossDomain&&(i=Gt.exec(d.url.toLowerCase()),d.crossDomain=!(!i||i[1]===tn[1]&&i[2]===tn[2]&&(i[3]||("http:"===i[1]?"80":"443"))===(tn[3]||("http:"===tn[1]?"80":"443")))),d.data&&d.processData&&"string"!=typeof d.data&&(d.data=pe.param(d.data,d.traditional)),U(Kt,d,n,T),2===b)return T;l=pe.event&&d.global,l&&0===pe.active++&&pe.event.trigger("ajaxStart"),d.type=d.type.toUpperCase(),d.hasContent=!Yt.test(d.type),a=d.url,d.hasContent||(d.data&&(a=d.url+=(It.test(a)?"&":"?")+d.data,delete d.data),d.cache===!1&&(d.url=Xt.test(a)?a.replace(Xt,"$1_="+Wt++):a+(It.test(a)?"&":"?")+"_="+Wt++)),d.ifModified&&(pe.lastModified[a]&&T.setRequestHeader("If-Modified-Since",pe.lastModified[a]),pe.etag[a]&&T.setRequestHeader("If-None-Match",pe.etag[a])),(d.data&&d.hasContent&&d.contentType!==!1||n.contentType)&&T.setRequestHeader("Content-Type",d.contentType),T.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+("*"!==d.dataTypes[0]?", "+Zt+"; q=0.01":""):d.accepts["*"]);for(o in d.headers)T.setRequestHeader(o,d.headers[o]);if(d.beforeSend&&(d.beforeSend.call(p,T,d)===!1||2===b))return T.abort();w="abort";for(o in{success:1,error:1,complete:1})T[o](d[o]);if(c=U(Qt,d,n,T)){if(T.readyState=1,l&&h.trigger("ajaxSend",[T,d]),2===b)return T;d.async&&d.timeout>0&&(u=e.setTimeout(function(){T.abort("timeout")},d.timeout));try{b=1,c.send(v,r)}catch(C){if(!(b<2))throw C;r(-1,C)}}else r(-1,"No Transport");return T},getJSON:function(e,t,n){return pe.get(e,t,n,"json")},getScript:function(e,t){return pe.get(e,void 0,t,"script")}}),pe.each(["get","post"],function(e,t){pe[t]=function(e,n,r,i){return pe.isFunction(n)&&(i=i||r,r=n,n=void 0),pe.ajax(pe.extend({url:e,type:t,dataType:i,data:n,success:r},pe.isPlainObject(e)&&e))}}),pe._evalUrl=function(e){return pe.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},pe.fn.extend({wrapAll:function(e){if(pe.isFunction(e))return this.each(function(t){pe(this).wrapAll(e.call(this,t))});if(this[0]){var t=pe(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstChild&&1===e.firstChild.nodeType;)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return pe.isFunction(e)?this.each(function(t){pe(this).wrapInner(e.call(this,t))}):this.each(function(){var t=pe(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=pe.isFunction(e);return this.each(function(n){pe(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){pe.nodeName(this,"body")||pe(this).replaceWith(this.childNodes)}).end()}}),pe.expr.filters.hidden=function(e){return fe.reliableHiddenOffsets()?e.offsetWidth<=0&&e.offsetHeight<=0&&!e.getClientRects().length:K(e)},pe.expr.filters.visible=function(e){return!pe.expr.filters.hidden(e)};var nn=/%20/g,rn=/\[\]$/,on=/\r?\n/g,an=/^(?:submit|button|image|reset|file)$/i,sn=/^(?:input|select|textarea|keygen)/i;pe.param=function(e,t){var n,r=[],i=function(e,t){t=pe.isFunction(t)?t():null==t?"":t,r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(void 0===t&&(t=pe.ajaxSettings&&pe.ajaxSettings.traditional),pe.isArray(e)||e.jquery&&!pe.isPlainObject(e))pe.each(e,function(){i(this.name,this.value)});else for(n in e)Q(n,e[n],t,i);return r.join("&").replace(nn,"+")},pe.fn.extend({serialize:function(){return pe.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=pe.prop(this,"elements");return e?pe.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!pe(this).is(":disabled")&&sn.test(this.nodeName)&&!an.test(e)&&(this.checked||!Be.test(e))}).map(function(e,t){var n=pe(this).val();return null==n?null:pe.isArray(n)?pe.map(n,function(e){return{name:t.name,value:e.replace(on,"\r\n")}}):{name:t.name,value:n.replace(on,"\r\n")}}).get()}}),pe.ajaxSettings.xhr=void 0!==e.ActiveXObject?function(){return this.isLocal?ee():re.documentMode>8?Z():/^(get|post|head|put|delete|options)$/i.test(this.type)&&Z()||ee()}:Z;var un=0,ln={},cn=pe.ajaxSettings.xhr();e.attachEvent&&e.attachEvent("onunload",function(){for(var e in ln)ln[e](void 0,!0)}),fe.cors=!!cn&&"withCredentials"in cn,cn=fe.ajax=!!cn,cn&&pe.ajaxTransport(function(t){if(!t.crossDomain||fe.cors){var n;return{send:function(r,i){var o,a=t.xhr(),s=++un;if(a.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(o in t.xhrFields)a[o]=t.xhrFields[o];t.mimeType&&a.overrideMimeType&&a.overrideMimeType(t.mimeType),t.crossDomain||r["X-Requested-With"]||(r["X-Requested-With"]="XMLHttpRequest");for(o in r)void 0!==r[o]&&a.setRequestHeader(o,r[o]+"");a.send(t.hasContent&&t.data||null),n=function(e,r){var o,u,l;if(n&&(r||4===a.readyState))if(delete ln[s],n=void 0,a.onreadystatechange=pe.noop,r)4!==a.readyState&&a.abort();else{l={},o=a.status,"string"==typeof a.responseText&&(l.text=a.responseText);try{u=a.statusText}catch(c){u=""}o||!t.isLocal||t.crossDomain?1223===o&&(o=204):o=l.text?200:404}l&&i(o,u,l,a.getAllResponseHeaders())},t.async?4===a.readyState?e.setTimeout(n):a.onreadystatechange=ln[s]=n:n()},abort:function(){n&&n(void 0,!0)}}}}),pe.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return pe.globalEval(e),e}}}),pe.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),pe.ajaxTransport("script",function(e){if(e.crossDomain){var t,n=re.head||pe("head")[0]||re.documentElement;return{send:function(r,i){t=re.createElement("script"),t.async=!0,e.scriptCharset&&(t.charset=e.scriptCharset),t.src=e.url,t.onload=t.onreadystatechange=function(e,n){(n||!t.readyState||/loaded|complete/.test(t.readyState))&&(t.onload=t.onreadystatechange=null,t.parentNode&&t.parentNode.removeChild(t),t=null,n||i(200,"success"))},n.insertBefore(t,n.firstChild)},abort:function(){t&&t.onload(void 0,!0)}}}});var fn=[],dn=/(=)\?(?=&|$)|\?\?/;pe.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=fn.pop()||pe.expando+"_"+Wt++;return this[e]=!0,e}}),pe.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,a,s=t.jsonp!==!1&&(dn.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&dn.test(t.data)&&"data");if(s||"jsonp"===t.dataTypes[0])return i=t.jsonpCallback=pe.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(dn,"$1"+i):t.jsonp!==!1&&(t.url+=(It.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return a||pe.error(i+" was not called"),a[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){a=arguments},r.always(function(){void 0===o?pe(e).removeProp(i):e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,fn.push(i)),a&&pe.isFunction(o)&&o(a[0]),a=o=void 0}),"script"}),pe.parseHTML=function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||re;var r=Te.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=y([e],t,i),i&&i.length&&pe(i).remove(),pe.merge([],r.childNodes))};var pn=pe.fn.load;return pe.fn.load=function(e,t,n){if("string"!=typeof e&&pn)return pn.apply(this,arguments);var r,i,o,a=this,s=e.indexOf(" ");return s>-1&&(r=pe.trim(e.slice(s,e.length)),e=e.slice(0,s)),pe.isFunction(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),a.length>0&&pe.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?pe("
      ").append(pe.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},pe.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){pe.fn[t]=function(e){return this.on(t,e)}}),pe.expr.filters.animated=function(e){return pe.grep(pe.timers,function(t){return e===t.elem}).length},pe.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l,c=pe.css(e,"position"),f=pe(e),d={};"static"===c&&(e.style.position="relative"),s=f.offset(),o=pe.css(e,"top"),u=pe.css(e,"left"),l=("absolute"===c||"fixed"===c)&&pe.inArray("auto",[o,u])>-1,l?(r=f.position(),a=r.top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),pe.isFunction(t)&&(t=t.call(e,n,pe.extend({},s))),null!=t.top&&(d.top=t.top-s.top+a),null!=t.left&&(d.left=t.left-s.left+i),"using"in t?t.using.call(e,d):f.css(d)}},pe.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){pe.offset.setOffset(this,e,t)});var t,n,r={top:0,left:0},i=this[0],o=i&&i.ownerDocument;if(o)return t=o.documentElement,pe.contains(t,i)?("undefined"!=typeof i.getBoundingClientRect&&(r=i.getBoundingClientRect()),n=te(o),{top:r.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0),left:r.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)}):r},position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===pe.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),pe.nodeName(e[0],"html")||(n=e.offset()),n.top+=pe.css(e[0],"borderTopWidth",!0),n.left+=pe.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-pe.css(r,"marginTop",!0),left:t.left-n.left-pe.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){ +for(var e=this.offsetParent;e&&!pe.nodeName(e,"html")&&"static"===pe.css(e,"position");)e=e.offsetParent;return e||pt})}}),pe.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n=/Y/.test(t);pe.fn[e]=function(r){return Pe(this,function(e,r,i){var o=te(e);return void 0===i?o?t in o?o[t]:o.document.documentElement[r]:e[r]:void(o?o.scrollTo(n?pe(o).scrollLeft():i,n?i:pe(o).scrollTop()):e[r]=i)},e,r,arguments.length,null)}}),pe.each(["top","left"],function(e,t){pe.cssHooks[t]=L(fe.pixelPosition,function(e,n){if(n)return n=gt(e,t),ft.test(n)?pe(e).position()[t]+"px":n})}),pe.each({Height:"height",Width:"width"},function(e,t){pe.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){pe.fn[r]=function(r,i){var o=arguments.length&&(n||"boolean"!=typeof r),a=n||(r===!0||i===!0?"margin":"border");return Pe(this,function(t,n,r){var i;return pe.isWindow(t)?t.document.documentElement["client"+e]:9===t.nodeType?(i=t.documentElement,Math.max(t.body["scroll"+e],i["scroll"+e],t.body["offset"+e],i["offset"+e],i["client"+e])):void 0===r?pe.css(t,n,a):pe.style(t,n,r,a)},t,o?r:void 0,o,null)}})}),pe.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),pe.fn.size=function(){return this.length},pe.fn.andSelf=pe.fn.addBack,layui.define(function(e){layui.$=pe,e("jquery",pe)}),pe});!function(e,t){"use strict";var i,n,a=e.layui&&layui.define,o={getPath:function(){var e=document.scripts,t=e[e.length-1],i=t.src;if(!t.getAttribute("merge"))return i.substring(0,i.lastIndexOf("/")+1)}(),config:{},end:{},minIndex:0,minLeft:[],btn:["确定","取消"],type:["dialog","page","iframe","loading","tips"],getStyle:function(e,t){var i=e.currentStyle?e.currentStyle:n.getComputedStyle(e,null);return i[i.getPropertyValue?"getPropertyValue":"getAttribute"](t)},link:function(t,i,n){if(r.path){var a=document.getElementsByTagName("head")[0],s=document.createElement("link");"string"==typeof i&&(n=i);var l=(n||t).replace(/\.|\//g,""),f="layuicss-"+l,c=0;s.rel="stylesheet",s.href=r.path+t,s.id=f,document.getElementById(f)||a.appendChild(s),"function"==typeof i&&!function u(){return++c>80?e.console&&console.error("layer.css: Invalid"):void(1989===parseInt(o.getStyle(document.getElementById(f),"width"))?i():setTimeout(u,100))}()}}},r={v:"3.0.3",ie:function(){var t=navigator.userAgent.toLowerCase();return!!(e.ActiveXObject||"ActiveXObject"in e)&&((t.match(/msie\s(\d+)/)||[])[1]||"11")}(),index:e.layer&&e.layer.v?1e5:0,path:o.getPath,config:function(e,t){return e=e||{},r.cache=o.config=i.extend({},o.config,e),r.path=o.config.path||r.path,"string"==typeof e.extend&&(e.extend=[e.extend]),o.config.path&&r.ready(),e.extend?(a?layui.addcss("modules/layer/"+e.extend):o.link("skin/"+e.extend),this):this},ready:function(e){var t="layer",i="",n=(a?"modules/layer/":"theme/")+"default/layer.css?v="+r.v+i;return a?layui.addcss(n,e,t):o.link(n,e,t),this},alert:function(e,t,n){var a="function"==typeof t;return a&&(n=t),r.open(i.extend({content:e,yes:n},a?{}:t))},confirm:function(e,t,n,a){var s="function"==typeof t;return s&&(a=n,n=t),r.open(i.extend({content:e,btn:o.btn,yes:n,btn2:a},s?{}:t))},msg:function(e,n,a){var s="function"==typeof n,f=o.config.skin,c=(f?f+" "+f+"-msg":"")||"layui-layer-msg",u=l.anim.length-1;return s&&(a=n),r.open(i.extend({content:e,time:3e3,shade:!1,skin:c,title:!1,closeBtn:!1,btn:!1,resize:!1,end:a},s&&!o.config.skin?{skin:c+" layui-layer-hui",anim:u}:function(){return n=n||{},(n.icon===-1||n.icon===t&&!o.config.skin)&&(n.skin=c+" "+(n.skin||"layui-layer-hui")),n}()))},load:function(e,t){return r.open(i.extend({type:3,icon:e||0,resize:!1,shade:.01},t))},tips:function(e,t,n){return r.open(i.extend({type:4,content:[e,t],closeBtn:!1,time:3e3,shade:!1,resize:!1,fixed:!1,maxWidth:210},n))}},s=function(e){var t=this;t.index=++r.index,t.config=i.extend({},t.config,o.config,e),document.body?t.creat():setTimeout(function(){t.creat()},30)};s.pt=s.prototype;var l=["layui-layer",".layui-layer-title",".layui-layer-main",".layui-layer-dialog","layui-layer-iframe","layui-layer-content","layui-layer-btn","layui-layer-close"];l.anim=["layer-anim","layer-anim-01","layer-anim-02","layer-anim-03","layer-anim-04","layer-anim-05","layer-anim-06"],s.pt.config={type:0,shade:.3,fixed:!0,move:l[1],title:"信息",offset:"auto",area:"auto",closeBtn:1,time:0,zIndex:19891014,maxWidth:360,anim:0,isOutAnim:!0,icon:-1,moveType:1,resize:!0,scrollbar:!0,tips:2},s.pt.vessel=function(e,t){var n=this,a=n.index,r=n.config,s=r.zIndex+a,f="object"==typeof r.title,c=r.maxmin&&(1===r.type||2===r.type),u=r.title?'
      '+(f?r.title[0]:r.title)+"
      ":"";return r.zIndex=s,t([r.shade?'
      ':"",'
      '+(e&&2!=r.type?"":u)+'
      '+(0==r.type&&r.icon!==-1?'':"")+(1==r.type&&e?"":r.content||"")+'
      '+function(){var e=c?'':"";return r.closeBtn&&(e+=''),e}()+""+(r.btn?function(){var e="";"string"==typeof r.btn&&(r.btn=[r.btn]);for(var t=0,i=r.btn.length;t'+r.btn[t]+"";return'
      '+e+"
      "}():"")+(r.resize?'':"")+"
      "],u,i('
      ')),n},s.pt.creat=function(){var e=this,t=e.config,a=e.index,s=t.content,f="object"==typeof s,c=i("body");if(!t.id||!i("#"+t.id)[0]){switch("string"==typeof t.area&&(t.area="auto"===t.area?["",""]:[t.area,""]),t.shift&&(t.anim=t.shift),6==r.ie&&(t.fixed=!1),t.type){case 0:t.btn="btn"in t?t.btn:o.btn[0],r.closeAll("dialog");break;case 2:var s=t.content=f?t.content:[t.content||"http://layer.layui.com","auto"];t.content='';break;case 3:delete t.title,delete t.closeBtn,t.icon===-1&&0===t.icon,r.closeAll("loading");break;case 4:f||(t.content=[t.content,"body"]),t.follow=t.content[1],t.content=t.content[0]+'',delete t.title,t.tips="object"==typeof t.tips?t.tips:[t.tips,!0],t.tipsMore||r.closeAll("tips")}e.vessel(f,function(n,r,u){c.append(n[0]),f?function(){2==t.type||4==t.type?function(){i("body").append(n[1])}():function(){s.parents("."+l[0])[0]||(s.data("display",s.css("display")).show().addClass("layui-layer-wrap").wrap(n[1]),i("#"+l[0]+a).find("."+l[5]).before(r))}()}():c.append(n[1]),i(".layui-layer-move")[0]||c.append(o.moveElem=u),e.layero=i("#"+l[0]+a),t.scrollbar||l.html.css("overflow","hidden").attr("layer-full",a)}).auto(a),2==t.type&&6==r.ie&&e.layero.find("iframe").attr("src",s[0]),4==t.type?e.tips():e.offset(),t.fixed&&n.on("resize",function(){e.offset(),(/^\d+%$/.test(t.area[0])||/^\d+%$/.test(t.area[1]))&&e.auto(a),4==t.type&&e.tips()}),t.time<=0||setTimeout(function(){r.close(e.index)},t.time),e.move().callback(),l.anim[t.anim]&&e.layero.addClass(l.anim[t.anim]),t.isOutAnim&&e.layero.data("isOutAnim",!0)}},s.pt.auto=function(e){var t=this,a=t.config,o=i("#"+l[0]+e);""===a.area[0]&&a.maxWidth>0&&(r.ie&&r.ie<8&&a.btn&&o.width(o.innerWidth()),o.outerWidth()>a.maxWidth&&o.width(a.maxWidth));var s=[o.innerWidth(),o.innerHeight()],f=o.find(l[1]).outerHeight()||0,c=o.find("."+l[6]).outerHeight()||0,u=function(e){e=o.find(e),e.height(s[1]-f-c-2*(0|parseFloat(e.css("padding-top"))))};switch(a.type){case 2:u("iframe");break;default:""===a.area[1]?a.maxHeight>0&&o.outerHeight()>a.maxHeight?(s[1]=a.maxHeight,u("."+l[5])):a.fixed&&s[1]>=n.height()&&(s[1]=n.height(),u("."+l[5])):u("."+l[5])}return t},s.pt.offset=function(){var e=this,t=e.config,i=e.layero,a=[i.outerWidth(),i.outerHeight()],o="object"==typeof t.offset;e.offsetTop=(n.height()-a[1])/2,e.offsetLeft=(n.width()-a[0])/2,o?(e.offsetTop=t.offset[0],e.offsetLeft=t.offset[1]||e.offsetLeft):"auto"!==t.offset&&("t"===t.offset?e.offsetTop=0:"r"===t.offset?e.offsetLeft=n.width()-a[0]:"b"===t.offset?e.offsetTop=n.height()-a[1]:"l"===t.offset?e.offsetLeft=0:"lt"===t.offset?(e.offsetTop=0,e.offsetLeft=0):"lb"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=0):"rt"===t.offset?(e.offsetTop=0,e.offsetLeft=n.width()-a[0]):"rb"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=n.width()-a[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?n.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?n.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=n.scrollTop(),e.offsetLeft+=n.scrollLeft()),i.attr("minLeft")&&(e.offsetTop=n.height()-(i.find(l[1]).outerHeight()||0),e.offsetLeft=i.css("left")),i.css({top:e.offsetTop,left:e.offsetLeft})},s.pt.tips=function(){var e=this,t=e.config,a=e.layero,o=[a.outerWidth(),a.outerHeight()],r=i(t.follow);r[0]||(r=i("body"));var s={width:r.outerWidth(),height:r.outerHeight(),top:r.offset().top,left:r.offset().left},f=a.find(".layui-layer-TipsG"),c=t.tips[0];t.tips[1]||f.remove(),s.autoLeft=function(){s.left+o[0]-n.width()>0?(s.tipLeft=s.left+s.width-o[0],f.css({right:12,left:"auto"})):s.tipLeft=s.left},s.where=[function(){s.autoLeft(),s.tipTop=s.top-o[1]-10,f.removeClass("layui-layer-TipsB").addClass("layui-layer-TipsT").css("border-right-color",t.tips[1])},function(){s.tipLeft=s.left+s.width+10,s.tipTop=s.top,f.removeClass("layui-layer-TipsL").addClass("layui-layer-TipsR").css("border-bottom-color",t.tips[1])},function(){s.autoLeft(),s.tipTop=s.top+s.height+10,f.removeClass("layui-layer-TipsT").addClass("layui-layer-TipsB").css("border-right-color",t.tips[1])},function(){s.tipLeft=s.left-o[0]-10,s.tipTop=s.top,f.removeClass("layui-layer-TipsR").addClass("layui-layer-TipsL").css("border-bottom-color",t.tips[1])}],s.where[c-1](),1===c?s.top-(n.scrollTop()+o[1]+16)<0&&s.where[2]():2===c?n.width()-(s.left+s.width+o[0]+16)>0||s.where[3]():3===c?s.top-n.scrollTop()+s.height+o[1]+16-n.height()>0&&s.where[0]():4===c&&o[0]+16-s.left>0&&s.where[1](),a.find("."+l[5]).css({"background-color":t.tips[1],"padding-right":t.closeBtn?"30px":""}),a.css({left:s.tipLeft-(t.fixed?n.scrollLeft():0),top:s.tipTop-(t.fixed?n.scrollTop():0)})},s.pt.move=function(){var e=this,t=e.config,a=i(document),s=e.layero,l=s.find(t.move),f=s.find(".layui-layer-resize"),c={};return t.move&&l.css("cursor","move"),l.on("mousedown",function(e){e.preventDefault(),t.move&&(c.moveStart=!0,c.offset=[e.clientX-parseFloat(s.css("left")),e.clientY-parseFloat(s.css("top"))],o.moveElem.css("cursor","move").show())}),f.on("mousedown",function(e){e.preventDefault(),c.resizeStart=!0,c.offset=[e.clientX,e.clientY],c.area=[s.outerWidth(),s.outerHeight()],o.moveElem.css("cursor","se-resize").show()}),a.on("mousemove",function(i){if(c.moveStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1],l="fixed"===s.css("position");if(i.preventDefault(),c.stX=l?0:n.scrollLeft(),c.stY=l?0:n.scrollTop(),!t.moveOut){var f=n.width()-s.outerWidth()+c.stX,u=n.height()-s.outerHeight()+c.stY;af&&(a=f),ou&&(o=u)}s.css({left:a,top:o})}if(t.resize&&c.resizeStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1];i.preventDefault(),r.style(e.index,{width:c.area[0]+a,height:c.area[1]+o}),c.isResize=!0,t.resizing&&t.resizing(s)}}).on("mouseup",function(e){c.moveStart&&(delete c.moveStart,o.moveElem.hide(),t.moveEnd&&t.moveEnd(s)),c.resizeStart&&(delete c.resizeStart,o.moveElem.hide())}),e},s.pt.callback=function(){function e(){var e=a.cancel&&a.cancel(t.index,n);e===!1||r.close(t.index)}var t=this,n=t.layero,a=t.config;t.openLayer(),a.success&&(2==a.type?n.find("iframe").on("load",function(){a.success(n,t.index)}):a.success(n,t.index)),6==r.ie&&t.IE6(n),n.find("."+l[6]).children("a").on("click",function(){var e=i(this).index();if(0===e)a.yes?a.yes(t.index,n):a.btn1?a.btn1(t.index,n):r.close(t.index);else{var o=a["btn"+(e+1)]&&a["btn"+(e+1)](t.index,n);o===!1||r.close(t.index)}}),n.find("."+l[7]).on("click",e),a.shadeClose&&i("#layui-layer-shade"+t.index).on("click",function(){r.close(t.index)}),n.find(".layui-layer-min").on("click",function(){var e=a.min&&a.min(n);e===!1||r.min(t.index,a)}),n.find(".layui-layer-max").on("click",function(){i(this).hasClass("layui-layer-maxmin")?(r.restore(t.index),a.restore&&a.restore(n)):(r.full(t.index,a),setTimeout(function(){a.full&&a.full(n)},100))}),a.end&&(o.end[t.index]=a.end)},o.reselect=function(){i.each(i("select"),function(e,t){var n=i(this);n.parents("."+l[0])[0]||1==n.attr("layer")&&i("."+l[0]).length<1&&n.removeAttr("layer").show(),n=null})},s.pt.IE6=function(e){i("select").each(function(e,t){var n=i(this);n.parents("."+l[0])[0]||"none"===n.css("display")||n.attr({layer:"1"}).hide(),n=null})},s.pt.openLayer=function(){var e=this;r.zIndex=e.config.zIndex,r.setTop=function(e){var t=function(){r.zIndex++,e.css("z-index",r.zIndex+1)};return r.zIndex=parseInt(e[0].style.zIndex),e.on("mousedown",t),r.zIndex}},o.record=function(e){var t=[e.width(),e.height(),e.position().top,e.position().left+parseFloat(e.css("margin-left"))];e.find(".layui-layer-max").addClass("layui-layer-maxmin"),e.attr({area:t})},o.rescollbar=function(e){l.html.attr("layer-full")==e&&(l.html[0].style.removeProperty?l.html[0].style.removeProperty("overflow"):l.html[0].style.removeAttribute("overflow"),l.html.removeAttr("layer-full"))},e.layer=r,r.getChildFrame=function(e,t){return t=t||i("."+l[4]).attr("times"),i("#"+l[0]+t).find("iframe").contents().find(e)},r.getFrameIndex=function(e){return i("#"+e).parents("."+l[4]).attr("times")},r.iframeAuto=function(e){if(e){var t=r.getChildFrame("html",e).outerHeight(),n=i("#"+l[0]+e),a=n.find(l[1]).outerHeight()||0,o=n.find("."+l[6]).outerHeight()||0;n.css({height:t+a+o}),n.find("iframe").css({height:t})}},r.iframeSrc=function(e,t){i("#"+l[0]+e).find("iframe").attr("src",t)},r.style=function(e,t,n){var a=i("#"+l[0]+e),r=a.find(".layui-layer-content"),s=a.attr("type"),f=a.find(l[1]).outerHeight()||0,c=a.find("."+l[6]).outerHeight()||0;a.attr("minLeft");s!==o.type[3]&&s!==o.type[4]&&(n||(parseFloat(t.width)<=260&&(t.width=260),parseFloat(t.height)-f-c<=64&&(t.height=64+f+c)),a.css(t),c=a.find("."+l[6]).outerHeight(),s===o.type[2]?a.find("iframe").css({height:parseFloat(t.height)-f-c}):r.css({height:parseFloat(t.height)-f-c-parseFloat(r.css("padding-top"))-parseFloat(r.css("padding-bottom"))}))},r.min=function(e,t){var a=i("#"+l[0]+e),s=a.find(l[1]).outerHeight()||0,f=a.attr("minLeft")||181*o.minIndex+"px",c=a.css("position");o.record(a),o.minLeft[0]&&(f=o.minLeft[0],o.minLeft.shift()),a.attr("position",c),r.style(e,{width:180,height:s,left:f,top:n.height()-s,position:"fixed",overflow:"hidden"},!0),a.find(".layui-layer-min").hide(),"page"===a.attr("type")&&a.find(l[4]).hide(),o.rescollbar(e),a.attr("minLeft")||o.minIndex++,a.attr("minLeft",f)},r.restore=function(e){var t=i("#"+l[0]+e),n=t.attr("area").split(",");t.attr("type");r.style(e,{width:parseFloat(n[0]),height:parseFloat(n[1]),top:parseFloat(n[2]),left:parseFloat(n[3]),position:t.attr("position"),overflow:"visible"},!0),t.find(".layui-layer-max").removeClass("layui-layer-maxmin"),t.find(".layui-layer-min").show(),"page"===t.attr("type")&&t.find(l[4]).show(),o.rescollbar(e)},r.full=function(e){var t,a=i("#"+l[0]+e);o.record(a),l.html.attr("layer-full")||l.html.css("overflow","hidden").attr("layer-full",e),clearTimeout(t),t=setTimeout(function(){var t="fixed"===a.css("position");r.style(e,{top:t?0:n.scrollTop(),left:t?0:n.scrollLeft(),width:n.width(),height:n.height()},!0),a.find(".layui-layer-min").hide()},100)},r.title=function(e,t){var n=i("#"+l[0]+(t||r.index)).find(l[1]);n.html(e)},r.close=function(e){var t=i("#"+l[0]+e),n=t.attr("type"),a="layer-anim-close";if(t[0]){var s="layui-layer-wrap",f=function(){if(n===o.type[1]&&"object"===t.attr("conType")){t.children(":not(."+l[5]+")").remove();for(var a=t.find("."+s),r=0;r<2;r++)a.unwrap();a.css("display",a.data("display")).removeClass(s)}else{if(n===o.type[2])try{var f=i("#"+l[4]+e)[0];f.contentWindow.document.write(""),f.contentWindow.close(),t.find("."+l[5])[0].removeChild(f)}catch(c){}t[0].innerHTML="",t.remove()}"function"==typeof o.end[e]&&o.end[e](),delete o.end[e]};t.data("isOutAnim")&&t.addClass(a),i("#layui-layer-moves, #layui-layer-shade"+e).remove(),6==r.ie&&o.reselect(),o.rescollbar(e),t.attr("minLeft")&&(o.minIndex--,o.minLeft.push(t.attr("minLeft"))),r.ie&&r.ie<10||!t.data("isOutAnim")?f():setTimeout(function(){f()},200)}},r.closeAll=function(e){i.each(i("."+l[0]),function(){var t=i(this),n=e?t.attr("type")===e:1;n&&r.close(t.attr("times")),n=null})};var f=r.cache||{},c=function(e){return f.skin?" "+f.skin+" "+f.skin+"-"+e:""};r.prompt=function(e,t){var a="";if(e=e||{},"function"==typeof e&&(t=e),e.area){var o=e.area;a='style="width: '+o[0]+"; height: "+o[1]+';"',delete e.area}var s,l=2==e.formType?'":function(){return''}(),f=e.success;return delete e.success,r.open(i.extend({type:1,btn:["确定","取消"],content:l,skin:"layui-layer-prompt"+c("prompt"),maxWidth:n.width(),success:function(e){s=e.find(".layui-layer-input"),s.focus(),"function"==typeof f&&f(e)},resize:!1,yes:function(i){var n=s.val();""===n?s.focus():n.length>(e.maxlength||500)?r.tips("最多输入"+(e.maxlength||500)+"个字数",s,{tips:1}):t&&t(n,i,s)}},e))},r.tab=function(e){e=e||{};var t=e.tab||{},n="layui-this",a=e.success;return delete e.success,r.open(i.extend({type:1,skin:"layui-layer-tab"+c("tab"),resize:!1,title:function(){var e=t.length,i=1,a="";if(e>0)for(a=''+t[0].title+"";i"+t[i].title+"";return a}(),content:'
        '+function(){var e=t.length,i=1,a="";if(e>0)for(a='
      • '+(t[0].content||"no content")+"
      • ";i'+(t[i].content||"no content")+"";return a}()+"
      ",success:function(t){var o=t.find(".layui-layer-title").children(),r=t.find(".layui-layer-tabmain").children();o.on("mousedown",function(t){t.stopPropagation?t.stopPropagation():t.cancelBubble=!0;var a=i(this),o=a.index();a.addClass(n).siblings().removeClass(n),r.eq(o).show().siblings().hide(),"function"==typeof e.change&&e.change(o)}),"function"==typeof a&&a(t)}},e))},r.photos=function(t,n,a){function o(e,t,i){var n=new Image;return n.src=e,n.complete?t(n):(n.onload=function(){n.onload=null,t(n)},void(n.onerror=function(e){n.onerror=null,i(e)}))}var s={};if(t=t||{},t.photos){var l=t.photos.constructor===Object,f=l?t.photos:{},u=f.data||[],d=f.start||0;s.imgIndex=(0|d)+1,t.img=t.img||"img";var y=t.success;if(delete t.success,l){if(0===u.length)return r.msg("没有图片")}else{var p=i(t.photos),h=function(){u=[],p.find(t.img).each(function(e){var t=i(this);t.attr("layer-index",e),u.push({alt:t.attr("alt"),pid:t.attr("layer-pid"),src:t.attr("layer-src")||t.attr("src"),thumb:t.attr("src")})})};if(h(),0===u.length)return;if(n||p.on("click",t.img,function(){var e=i(this),n=e.attr("layer-index");r.photos(i.extend(t,{photos:{start:n,data:u,tab:t.tab},full:t.full}),!0),h()}),!n)return}s.imgprev=function(e){s.imgIndex--,s.imgIndex<1&&(s.imgIndex=u.length),s.tabimg(e)},s.imgnext=function(e,t){s.imgIndex++,s.imgIndex>u.length&&(s.imgIndex=1,t)||s.tabimg(e)},s.keyup=function(e){if(!s.end){var t=e.keyCode;e.preventDefault(),37===t?s.imgprev(!0):39===t?s.imgnext(!0):27===t&&r.close(s.index)}},s.tabimg=function(e){if(!(u.length<=1))return f.start=s.imgIndex-1,r.close(s.index),r.photos(t,!0,e)},s.event=function(){s.bigimg.hover(function(){s.imgsee.show()},function(){s.imgsee.hide()}),s.bigimg.find(".layui-layer-imgprev").on("click",function(e){e.preventDefault(),s.imgprev()}),s.bigimg.find(".layui-layer-imgnext").on("click",function(e){e.preventDefault(),s.imgnext()}),i(document).on("keyup",s.keyup)},s.loadi=r.load(1,{shade:!("shade"in t)&&.9,scrollbar:!1}),o(u[d].src,function(n){r.close(s.loadi),s.index=r.open(i.extend({type:1,id:"layui-layer-photos",area:function(){var a=[n.width,n.height],o=[i(e).width()-100,i(e).height()-100];if(!t.full&&(a[0]>o[0]||a[1]>o[1])){var r=[a[0]/o[0],a[1]/o[1]];r[0]>r[1]?(a[0]=a[0]/r[0],a[1]=a[1]/r[0]):r[0]'+(u[d].alt||
      '+(u.length>1?'':"")+'
      '+(u[d].alt||"")+""+s.imgIndex+"/"+u.length+"
      ",success:function(e,i){s.bigimg=e.find(".layui-layer-phimg"),s.imgsee=e.find(".layui-layer-imguide,.layui-layer-imgbar"),s.event(e),t.tab&&t.tab(u[d],e),"function"==typeof y&&y(e)},end:function(){s.end=!0,i(document).off("keyup",s.keyup)}},t))},function(){r.close(s.loadi),r.msg("当前图片地址异常
      是否继续查看下一张?",{time:3e4,btn:["下一张","不看了"],yes:function(){u.length>1&&s.imgnext(!0,!0)}})})}},o.run=function(t){i=t,n=i(e),l.html=i("html"),r.open=function(e){var t=new s(e);return t.index}},e.layui&&layui.define?(r.ready(),layui.define("jquery",function(t){r.path=layui.cache.dir,o.run(layui.$),e.layer=r,t("layer",r)})):"function"==typeof define&&define.amd?define(["jquery"],function(){return o.run(e.jQuery),r}):function(){o.run(e.jQuery),r.ready()}()}(window);layui.define("jquery",function(i){"use strict";var a=layui.$,t=(layui.hint(),layui.device()),l="element",e="layui-this",n="layui-show",s=function(){this.config={}};s.prototype.set=function(i){var t=this;return a.extend(!0,t.config,i),t},s.prototype.on=function(i,a){return layui.onevent.call(this,l,i,a)},s.prototype.tabAdd=function(i,t){var l=".layui-tab-title",e=a(".layui-tab[lay-filter="+i+"]"),n=e.children(l),s=e.children(".layui-tab-content");return n.append('
    • '+(t.title||"unnaming")+"
    • "),s.append('
      '+(t.content||"")+"
      "),y.hideTabMore(!0),y.tabAuto(),this},s.prototype.tabDelete=function(i,t){var l=".layui-tab-title",e=a(".layui-tab[lay-filter="+i+"]"),n=e.children(l),s=n.find('>li[lay-id="'+t+'"]');return y.tabDelete(null,s),this},s.prototype.tabChange=function(i,t){var l=".layui-tab-title",e=a(".layui-tab[lay-filter="+i+"]"),n=e.children(l),s=n.find('>li[lay-id="'+t+'"]');return y.tabClick(null,null,s),this},s.prototype.progress=function(i,t){var l="layui-progress",e=a("."+l+"[lay-filter="+i+"]"),n=e.find("."+l+"-bar"),s=n.find("."+l+"-text");return n.css("width",t),s.text(t),this};var o=".layui-nav",c="layui-nav-item",r="layui-nav-bar",u="layui-nav-tree",d="layui-nav-child",h="layui-nav-more",f="layui-anim layui-anim-upbit",y={tabClick:function(i,t,s){var o=s||a(this),t=t||o.parent().children("li").index(o),c=o.parents(".layui-tab").eq(0),r=c.children(".layui-tab-content").children(".layui-tab-item"),u=o.find("a"),d=c.attr("lay-filter");"javascript:;"!==u.attr("href")&&"_blank"===u.attr("target")||(o.addClass(e).siblings().removeClass(e),r.eq(t).addClass(n).siblings().removeClass(n)),layui.event.call(this,l,"tab("+d+")",{elem:c,index:t})},tabDelete:function(i,t){var l=t||a(this).parent(),n=l.index(),s=l.parents(".layui-tab").eq(0),o=s.children(".layui-tab-content").children(".layui-tab-item");l.hasClass(e)&&(l.next()[0]?y.tabClick.call(l.next()[0],null,n+1):l.prev()[0]&&y.tabClick.call(l.prev()[0],null,n-1)),l.remove(),o.eq(n).remove(),setTimeout(function(){y.tabAuto()},50)},tabAuto:function(){var i="layui-tab-more",l="layui-tab-bar",e="layui-tab-close",n=this;a(".layui-tab").each(function(){var s=a(this),o=s.children(".layui-tab-title"),c=(s.children(".layui-tab-content").children(".layui-tab-item"),'lay-stope="tabmore"'),r=a('');if(n===window&&8!=t.ie&&y.hideTabMore(!0),s.attr("lay-allowClose")&&o.find("li").each(function(){var i=a(this);if(!i.find("."+e)[0]){var t=a('');t.on("click",y.tabDelete),i.append(t)}}),o.prop("scrollWidth")>o.outerWidth()+1){if(o.find("."+l)[0])return;o.append(r),s.attr("overflow",""),r.on("click",function(a){o[this.title?"removeClass":"addClass"](i),this.title=this.title?"":"收缩"})}else o.find("."+l).remove(),s.removeAttr("overflow")})},hideTabMore:function(i){var t=a(".layui-tab-title");i!==!0&&"tabmore"===a(i.target).attr("lay-stope")||(t.removeClass("layui-tab-more"),t.find(".layui-tab-bar").attr("title",""))},clickThis:function(){var i=a(this),t=i.parents(o),n=t.attr("lay-filter"),s=i.find("a");i.find("."+d)[0]||("javascript:;"!==s.attr("href")&&"_blank"===s.attr("target")||(t.find("."+e).removeClass(e),i.addClass(e)),layui.event.call(this,l,"nav("+n+")",i))},clickChild:function(){var i=a(this),t=i.parents(o),n=t.attr("lay-filter");t.find("."+e).removeClass(e),i.addClass(e),layui.event.call(this,l,"nav("+n+")",i)},showChild:function(){var i=a(this),t=i.parents(o),l=i.parent(),e=i.siblings("."+d);t.hasClass(u)&&(e.removeClass(f),l["none"===e.css("display")?"addClass":"removeClass"](c+"ed"))},collapse:function(){var i=a(this),t=i.find(".layui-colla-icon"),e=i.siblings(".layui-colla-content"),s=i.parents(".layui-collapse").eq(0),o=s.attr("lay-filter"),c="none"===e.css("display");if("string"==typeof s.attr("lay-accordion")){var r=s.children(".layui-colla-item").children("."+n);r.siblings(".layui-colla-title").children(".layui-colla-icon").html(""),r.removeClass(n)}e[c?"addClass":"removeClass"](n),t.html(c?"":""),layui.event.call(this,l,"collapse("+o+")",{title:i,content:e,show:c})}};s.prototype.init=function(i){var l={tab:function(){y.tabAuto.call({})},nav:function(){var i=200,l={},e={},s={},p=function(o,c,r){var y=a(this),p=y.find("."+d);c.hasClass(u)?o.css({top:y.position().top,height:y.children("a").height(),opacity:1}):(p.addClass(f),o.css({left:y.position().left+parseFloat(y.css("marginLeft")),top:y.position().top+y.height()-5}),l[r]=setTimeout(function(){o.css({width:y.width(),opacity:1})},t.ie&&t.ie<10?0:i),clearTimeout(s[r]),"block"===p.css("display")&&clearTimeout(e[r]),e[r]=setTimeout(function(){p.addClass(n),y.find("."+h).addClass(h+"d")},300))};a(o).each(function(t){var o=a(this),f=a(''),v=o.find("."+c);o.find("."+r)[0]||(o.append(f),v.on("mouseenter",function(){p.call(this,f,o,t)}).on("mouseleave",function(){o.hasClass(u)||(clearTimeout(e[t]),e[t]=setTimeout(function(){o.find("."+d).removeClass(n),o.find("."+h).removeClass(h+"d")},300))}),o.on("mouseleave",function(){clearTimeout(l[t]),s[t]=setTimeout(function(){o.hasClass(u)?f.css({height:0,top:f.position().top+f.height()/2,opacity:0}):f.css({width:0,left:f.position().left+f.width()/2,opacity:0})},i)})),v.each(function(){var i=a(this),t=i.find("."+d);if(t[0]&&!i.find("."+h)[0]){var l=i.children("a");l.append('')}i.off("click",y.clickThis).on("click",y.clickThis),i.children("a").off("click",y.showChild).on("click",y.showChild),t.children("dd").off("click",y.clickChild).on("click",y.clickChild)})})},breadcrumb:function(){var i=".layui-breadcrumb";a(i).each(function(){var i=a(this),t=i.attr("lay-separator")||">",l=i.find("a");l.find(".layui-box")[0]||(l.each(function(i){i!==l.length-1&&a(this).append(''+t+"")}),i.css("visibility","visible"))})},progress:function(){var i="layui-progress";a("."+i).each(function(){var t=a(this),l=t.find(".layui-progress-bar"),e=l.attr("lay-percent");l.css("width",e),t.attr("lay-showPercent")&&setTimeout(function(){var a=Math.round(l.width()/t.width()*100);a>100&&(a=100),l.html(''+a+"%")},350)})},collapse:function(){var i="layui-collapse";a("."+i).each(function(){var i=a(this).find(".layui-colla-item");i.each(function(){var i=a(this),t=i.find(".layui-colla-title"),l=i.find(".layui-colla-content"),e="none"===l.css("display");t.find(".layui-colla-icon").remove(),t.append(''+(e?"":"")+""),t.off("click",y.collapse).on("click",y.collapse)})})}};return layui.each(l,function(i,a){a()})};var p=new s,v=a(document);p.init();var b=".layui-tab-title li";v.on("click",b,y.tabClick),v.on("click",y.hideTabMore),a(window).on("resize",y.tabAuto),i(l,p)});layui.define("layer",function(e){"use strict";var i=layui.$,t=layui.layer,a=layui.hint(),n=layui.device(),l="form",s=".layui-form",r="layui-this",u="layui-hide",c="layui-disabled",o=function(){this.config={verify:{required:[/[\S]+/,"必填项不能为空"],phone:[/^1\d{10}$/,"请输入正确的手机号"],email:[/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/,"邮箱格式不正确"],url:[/(^#)|(^http(s*):\/\/[^\s]+\.[^\s]+)/,"链接格式不正确"],number:[/^\d+$/,"只能填写数字"],date:[/^(\d{4})[-\/](\d{1}|0\d{1}|1[0-2])([-\/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/,"日期格式不正确"],identity:[/(^\d{15}$)|(^\d{17}(x|X|\d)$)/,"请输入正确的身份证号"]}}};o.prototype.set=function(e){var t=this;return i.extend(!0,t.config,e),t},o.prototype.verify=function(e){var t=this;return i.extend(!0,t.config.verify,e),t},o.prototype.on=function(e,i){return layui.onevent.call(this,l,e,i)},o.prototype.render=function(e,t){var n=this,o=i(s+function(){return t?'[lay-filter="'+t+'"]':""}()),d={select:function(){var e,t="请选择",a="layui-form-select",n="layui-select-title",s="layui-select-none",d="",f=o.find("select"),y=function(t,l){i(t.target).parent().hasClass(n)&&!l||(i("."+a).removeClass(a+"ed "+a+"up"),e&&d&&e.val(d)),e=null},h=function(t,o,f){var h=i(this),p=t.find("."+n),m=p.find("input"),k=t.find("dl"),g=k.children("dd");if(!o){var b=function(){var e=t.offset().top+t.outerHeight()+5-v.scrollTop(),i=k.outerHeight();t.addClass(a+"ed"),g.removeClass(u),e+i>v.height()&&e>=i&&t.addClass(a+"up")},x=function(e){t.removeClass(a+"ed "+a+"up"),m.blur(),e||C(m.val(),function(e){e&&(d=k.find("."+r).html(),m&&m.val(d))})};p.on("click",function(e){t.hasClass(a+"ed")?x():(y(e,!0),b()),k.find("."+s).remove()}),p.find(".layui-edge").on("click",function(){m.focus()}),m.on("keyup",function(e){var i=e.keyCode;9===i&&b()}).on("keydown",function(e){var i=e.keyCode;9===i?x():13===i&&e.preventDefault()});var C=function(e,t,a){var n=0;layui.each(g,function(){var t=i(this),l=t.text(),s=l.indexOf(e)===-1;(""===e||"blur"===a?e!==l:s)&&n++,"keyup"===a&&t[s?"addClass":"removeClass"](u)});var l=n===g.length;return t(l),l},w=function(e){var i=this.value,t=e.keyCode;return 9!==t&&13!==t&&37!==t&&38!==t&&39!==t&&40!==t&&(C(i,function(e){e?k.find("."+s)[0]||k.append('

      无匹配项

      '):k.find("."+s).remove()},"keyup"),void(""===i&&k.find("."+s).remove()))};f&&m.on("keyup",w).on("blur",function(i){e=m,d=k.find("."+r).html(),setTimeout(function(){C(m.val(),function(e){e&&!d&&m.val("")},"blur")},200)}),g.on("click",function(){var e=i(this),a=e.attr("lay-value"),n=h.attr("lay-filter");return!e.hasClass(c)&&(e.hasClass("layui-select-tips")?m.val(""):(m.val(e.text()),e.addClass(r)),e.siblings().removeClass(r),h.val(a).removeClass("layui-form-danger"),layui.event.call(this,l,"select("+n+")",{elem:h[0],value:a,othis:t}),x(!0),!1)}),t.find("dl>dt").on("click",function(e){return!1}),i(document).off("click",y).on("click",y)}};f.each(function(e,l){var s=i(this),u=s.next("."+a),o=this.disabled,d=l.value,f=i(l.options[l.selectedIndex]),y=l.options[0];if("string"==typeof s.attr("lay-ignore"))return s.show();var v="string"==typeof s.attr("lay-search"),p=y?y.value?t:y.innerHTML||t:t,m=i(['
      ','
      ','
      ','
      '+function(e){var i=[];return layui.each(e,function(e,a){0!==e||a.value?"optgroup"===a.tagName.toLowerCase()?i.push("
      "+a.label+"
      "):i.push('
      '+a.innerHTML+"
      "):i.push('
      '+(a.innerHTML||t)+"
      ")}),0===i.length&&i.push('
      没有选项
      '),i.join("")}(s.find("*"))+"
      ","
      "].join(""));u[0]&&u.remove(),s.after(m),h.call(this,m,o,v)})},checkbox:function(){var e={checkbox:["layui-form-checkbox","layui-form-checked","checkbox"],_switch:["layui-form-switch","layui-form-onswitch","switch"]},t=o.find("input[type=checkbox]"),a=function(e,t){var a=i(this);e.on("click",function(){var i=a.attr("lay-filter"),n=(a.attr("lay-text")||"").split("|");a[0].disabled||(a[0].checked?(a[0].checked=!1,e.removeClass(t[1]).find("em").text(n[1])):(a[0].checked=!0,e.addClass(t[1]).find("em").text(n[0])),layui.event.call(a[0],l,t[2]+"("+i+")",{elem:a[0],value:a[0].value,othis:e}))})};t.each(function(t,n){var l=i(this),s=l.attr("lay-skin"),r=(l.attr("lay-text")||"").split("|"),u=this.disabled;"switch"===s&&(s="_"+s);var o=e[s]||e.checkbox;if("string"==typeof l.attr("lay-ignore"))return l.show();var d=l.next("."+o[0]),f=i(['
      ',{_switch:""+((n.checked?r[0]:r[1])||"")+""}[s]||(n.title.replace(/\s/g,"")?""+n.title+"":"")+''+(s?"":"")+"","
      "].join(""));d[0]&&d.remove(),l.after(f),a.call(this,f,o)})},radio:function(){var e="layui-form-radio",t=["",""],a=o.find("input[type=radio]"),n=function(a){var n=i(this),r="layui-anim-scaleSpring";a.on("click",function(){var u=n[0].name,c=n.parents(s),o=n.attr("lay-filter"),d=c.find("input[name="+u.replace(/(\.|#|\[|\])/g,"\\$1")+"]");n[0].disabled||(layui.each(d,function(){var a=i(this).next("."+e);this.checked=!1,a.removeClass(e+"ed"),a.find(".layui-icon").removeClass(r).html(t[1])}),n[0].checked=!0,a.addClass(e+"ed"),a.find(".layui-icon").addClass(r).html(t[0]),layui.event.call(n[0],l,"radio("+o+")",{elem:n[0],value:n[0].value,othis:a}))})};a.each(function(a,l){var s=i(this),r=s.next("."+e),u=this.disabled;if("string"==typeof s.attr("lay-ignore"))return s.show();var o=i(['
      ',''+t[l.checked?0:1]+"",""+(l.title||"未命名")+"","
      "].join(""));r[0]&&r.remove(),s.after(o),n.call(this,o)})}};return e?d[e]?d[e]():a.error("不支持的"+e+"表单渲染"):layui.each(d,function(e,i){i()}),n};var d=function(){var e=i(this),a=f.config.verify,r=null,u="layui-form-danger",c={},o=e.parents(s),d=o.find("*[lay-verify]"),y=e.parents("form")[0],v=o.find("input,select,textarea"),h=e.attr("lay-filter");return layui.each(d,function(e,l){var s=i(this),c=s.attr("lay-verify").split("|"),o="",d=s.val();if(s.removeClass(u),layui.each(c,function(e,i){var c="function"==typeof a[i];if(a[i]&&(c?o=a[i](d,l):!a[i][0].test(d)))return t.msg(o||a[i][1],{icon:5,shift:6}),n.android||n.ios||l.focus(),s.addClass(u),r=!0}),r)return r}),!r&&(layui.each(v,function(e,i){i.name&&(/^checkbox|radio$/.test(i.type)&&!i.checked||(c[i.name]=i.value))}),layui.event.call(this,l,"submit("+h+")",{elem:this,form:y,field:c}))},f=new o,y=i(document),v=i(window);f.render(),y.on("reset",s,function(){var e=i(this).attr("lay-filter");setTimeout(function(){f.render(null,e)},50)}),y.on("submit",s,d).on("click","*[lay-submit]",d),e(l,f)});layui.define("layer",function(e){"use strict";var i=layui.$,t=layui.layer,n=(layui.hint(),layui.device()),o={config:{},set:function(e){var t=this;return t.config=i.extend({},t.config,e),t},on:function(e,i){return layui.onevent.call(this,l,e,i)}},a=function(){var e=this;return{upload:function(i){e.upload.call(e,i)},config:e.config}},l="upload",r="layui-upload-file",u="layui-upload-form",c="layui-upload-iframe",s="layui-upload-choose",f=function(e){var t=this;t.config=i.extend({},t.config,o.config,e),t.render()};f.prototype.config={accept:"images",exts:"",auto:!0,bindAction:"",url:"",field:"file",method:"post",data:{},drag:!0,size:0,multiple:!1},f.prototype.render=function(e){var t=this,e=t.config;e.elem=i(e.elem),e.bindAction=i(e.bindAction),t.file(),t.events()},f.prototype.file=function(){var e=this,t=e.config,o=e.elemFile=i(['"].join("")),a=t.elem.next();(a.hasClass(r)||a.hasClass(u))&&a.remove(),n.ie&&n.ie<10&&t.elem.wrap('
      '),e.isFile()?(e.elemFile=t.elem,t.field=t.elem[0].name):t.elem.after(o),n.ie&&n.ie<10&&e.initIE()},f.prototype.initIE=function(){var e=this,t=e.config,n=i(''),o=i(['
      ',"
      "].join(""));i("#"+c)[0]||i("body").append(n),t.elem.next().hasClass(c)||(e.elemFile.wrap(o),t.elem.next("."+c).append(function(){var e=[];return layui.each(t.data,function(i,t){e.push('')}),e.join("")}()))},f.prototype.msg=function(e){return t.msg(e,{icon:2,shift:6})},f.prototype.isFile=function(){var e=this.config.elem[0];if(e)return"input"===e.tagName.toLocaleLowerCase()&&"file"===e.type},f.prototype.preview=function(e){var i=this;window.FileReader&&layui.each(i.chooseFiles,function(i,t){var n=new FileReader;n.readAsDataURL(t),n.onload=function(){e&&e(i,t,this.result)}})},f.prototype.upload=function(e,t){var o,a=this,l=a.config,r=a.elemFile[0],u=function(){layui.each(e||a.files||a.chooseFiles||r.files,function(e,t){var n=new FormData;n.append(l.field,t),layui.each(l.data,function(e,i){n.append(e,i)}),i.ajax({url:l.url,type:l.method,data:n,contentType:!1,processData:!1,dataType:"json",success:function(i){d(e,i)},error:function(){a.msg("请求上传接口出现异常"),m(e)}})})},p=function(){var e=i("#"+c);a.elemFile.parent().submit(),clearInterval(f.timer),f.timer=setInterval(function(){var i,t=e.contents().find("body");try{i=t.text()}catch(n){a.msg("获取上传后的响应信息出现异常"),clearInterval(f.timer),m()}i&&(clearInterval(f.timer),t.html(""),d(0,i))},30)},d=function(e,i){if(a.elemFile.next("."+s).remove(),r.value="","object"!=typeof i)try{i=JSON.parse(i)}catch(t){return i={},a.msg("请对上传接口返回有效JSON")}"function"==typeof l.done&&l.done(i,e||0,function(e){a.upload(e)})},m=function(e){l.auto&&(r.value=""),"function"==typeof l.error&&l.error(e||0,function(e){a.upload(e)})},v=l.exts,h=function(){var i=[];return layui.each(e||a.chooseFiles,function(e,t){i.push(t.name)}),i}(),g={preview:function(e){a.preview(e)},upload:function(e,i){var t={};t[e]=i,a.upload(t)},pushFile:function(){return a.files=a.files||{},layui.each(a.chooseFiles,function(e,i){a.files[e]=i}),a.files},elemFile:r},y=function(){return"choose"===t?l.choose&&l.choose(g):(l.before&&l.before(g),n.ie?n.ie>9?u():p():void u())};switch(h=0===h.length?r.value.match(/[^\/\\]+\..+/g)||[]||"":h,l.accept){case"file":if(v&&!RegExp("\\w\\.("+v+")$","i").test(escape(h)))return a.msg("选择的文件中包含不支持的格式"),r.value="";break;case"video":if(!RegExp("\\w\\.("+(v||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(h)))return a.msg("选择的视频中包含不支持的格式"),r.value="";break;case"audio":if(!RegExp("\\w\\.("+(v||"mp3|wav|mid")+")$","i").test(escape(h)))return a.msg("选择的音频中包含不支持的格式"),r.value="";break;default:if(layui.each(h,function(e,i){RegExp("\\w\\.("+(v||"jpg|png|gif|bmp|jpeg$")+")","i").test(escape(i))||(o=!0)}),o)return a.msg("选择的图片中包含不支持的格式"),r.value=""}return l.size>0&&!(n.ie&&n.ie<10)?layui.each(a.chooseFiles,function(e,i){if(i.size>1024*l.size){var t=l.size/1024;return t=t>=1?Math.floor(t)+(t%1>0?t.toFixed(1):0)+"MB":l.size+"KB",r.value="",a.msg("文件不能超过"+t)}y()}):void y()},f.prototype.events=function(){var e=this,t=e.config,o=function(i){e.chooseFiles={},layui.each(i,function(i,t){var n=(new Date).getTime();e.chooseFiles[n+"-"+i]=t})},a=function(i,n){var o=e.elemFile,a=i.length>1?i.length+"个文件":(i[0]||{}).name||o[0].value.match(/[^\/\\]+\..+/g)||[]||"";o.next().hasClass(s)&&o.next().remove(),e.upload(null,"choose"),e.isFile()||t.choose||o.after(''+a+"")};t.elem.off("upload.start").on("upload.start",function(){e.elemFile[0].click()}),n.ie&&n.ie<10||t.elem.off("upload.over").on("upload.over",function(){var e=i(this);e.attr("lay-over","")}).off("upload.leave").on("upload.leave",function(){var e=i(this);e.removeAttr("lay-over")}).off("upload.drop").on("upload.drop",function(n,l){var r=i(this),u=l.originalEvent.dataTransfer.files||[];r.removeAttr("lay-over"),o(u),t.auto?e.upload(u):a(u)}),e.elemFile.off("upload.change").on("upload.change",function(){var i=this.files||[];o(i),t.auto?e.upload():a(i)}),t.bindAction.off("upload.action").on("upload.action",function(){e.upload()}),t.elem.data("haveEvents")||(e.elemFile.on("change",function(){i(this).trigger("upload.change")}),t.elem.on("click",function(){e.isFile()||i(this).trigger("upload.start")}),t.drag&&t.elem.on("dragover",function(e){e.preventDefault(),i(this).trigger("upload.over")}).on("dragleave",function(e){i(this).trigger("upload.leave")}).on("drop",function(e){e.preventDefault(),i(this).trigger("upload.drop",e)}),t.bindAction.on("click",function(){i(this).trigger("upload.action")}),t.elem.data("haveEvents",!0))},o.render=function(e){var i=new f(e);return a.call(i)},e(l,o)});layui.define("jquery",function(e){"use strict";var o=layui.$,a=layui.hint(),i="layui-tree-enter",r=function(e){this.options=e},t={arrow:["",""],checkbox:["",""],radio:["",""],branch:["",""],leaf:""};r.prototype.init=function(e){var o=this;e.addClass("layui-box layui-tree"),o.options.skin&&e.addClass("layui-tree-skin-"+o.options.skin),o.tree(e),o.on(e)},r.prototype.tree=function(e,a){var i=this,r=i.options,n=a||r.nodes;layui.each(n,function(a,n){var l=n.children&&n.children.length>0,c=o('
        '),s=o(["
      • ",function(){return l?''+(n.spread?t.arrow[1]:t.arrow[0])+"":""}(),function(){return r.check?''+("checkbox"===r.check?t.checkbox[0]:"radio"===r.check?t.radio[0]:"")+"":""}(),function(){return'"+(''+(l?n.spread?t.branch[1]:t.branch[0]:t.leaf)+"")+(""+(n.name||"未命名")+"")}(),"
      • "].join(""));l&&(s.append(c),i.tree(c,n.children)),e.append(s),"function"==typeof r.click&&i.click(s,n),i.spread(s,n),r.drag&&i.drag(s,n)})},r.prototype.click=function(e,o){var a=this,i=a.options;e.children("a").on("click",function(e){layui.stope(e),i.click(o)})},r.prototype.spread=function(e,o){var a=this,i=(a.options,e.children(".layui-tree-spread")),r=e.children("ul"),n=e.children("a"),l=function(){e.data("spread")?(e.data("spread",null),r.removeClass("layui-show"),i.html(t.arrow[0]),n.find(".layui-icon").html(t.branch[0])):(e.data("spread",!0),r.addClass("layui-show"),i.html(t.arrow[1]),n.find(".layui-icon").html(t.branch[1]))};r[0]&&(i.on("click",l),n.on("dblclick",l))},r.prototype.on=function(e){var a=this,r=a.options,t="layui-tree-drag";e.find("i").on("selectstart",function(e){return!1}),r.drag&&o(document).on("mousemove",function(e){var i=a.move;if(i.from){var r=(i.to,o('
        '));e.preventDefault(),o("."+t)[0]||o("body").append(r);var n=o("."+t)[0]?o("."+t):r;n.addClass("layui-show").html(i.from.elem.children("a").html()),n.css({left:e.pageX+10,top:e.pageY+10})}}).on("mouseup",function(){var e=a.move;e.from&&(e.from.elem.children("a").removeClass(i),e.to&&e.to.elem.children("a").removeClass(i),a.move={},o("."+t).remove())})},r.prototype.move={},r.prototype.drag=function(e,a){var r=this,t=(r.options,e.children("a")),n=function(){var t=o(this),n=r.move;n.from&&(n.to={item:a,elem:e},t.addClass(i))};t.on("mousedown",function(){var o=r.move;o.from={item:a,elem:e}}),t.on("mouseenter",n).on("mousemove",n).on("mouseleave",function(){var e=o(this),a=r.move;a.from&&(delete a.to,e.removeClass(i))})},e("tree",function(e){var i=new r(e=e||{}),t=o(e.elem);return t[0]?void i.init(t):a.error("layui.tree 没有找到"+e.elem+"元素")})});layui.define(["laytpl","laypage","layer","form"],function(e){"use strict";var t=layui.$,i=layui.laytpl,a=layui.laypage,l=layui.layer,n=layui.form,d=layui.hint(),c=layui.device(),r={config:{checkName:"LAY_CHECKED"},cache:{},index:layui.table?layui.table.index+1e4:0,set:function(e){var i=this;return i.config=t.extend({},i.config,e),i},on:function(e,t){return layui.onevent.call(this,s,e,t)}},o=function(){var e=this;return{reload:function(t){e.reload.call(e,t)},config:e.config}},s="table",u=".layui-table",f="layui-hide",h="layui-table-view",y=".layui-table-header",p=".layui-table-body",v=".layui-table-main",m=".layui-table-fixed",x=".layui-table-fixed-l",b=".layui-table-fixed-r",g=".layui-table-tool",k=".layui-table-sort",C="layui-table-edit",w="layui-table-hover",z=function(e){return e=e||{},['',"","{{# layui.each(d.data.cols, function(i1, item1){ }}","","{{# layui.each(item1, function(i2, item2){ }}",'{{# if(item2.fixed && item2.fixed !== "right"){ fixed = true; } }}',"{{# if(item2.fixed){ right = true; } }}",function(){return e.fixed&&"right"!==e.fixed?'{{# if(item2.fixed && item2.fixed !== "right"){ }}':"right"===e.fixed?'{{# if(item2.fixed === "right"){ }}':""}(),"{{# if(item2.checkbox){ }}",'',"{{# } else if(item2.space){ }}",'',"{{# } else { }}",'","{{# }; }}",e.fixed?"{{# }; }}":"","{{# }); }}","","{{# }); }}","","
        ',"{{# if(item2.colspan > 1){ }}",'
        ','{{item2.title||""}}',"
        ","{{# } else { }}",'
        ','{{item2.title||""}}',"{{# if(item2.sort){ }}",'',"{{# } }}","
        ","{{# } }}","
        "].join("")},T=['',"","
        "].join(""),A=['
        ',"{{# var fixed, right; }}",'
        ',z(),"
        ",'
        ',T,"
        ",'{{# if(fixed && fixed !== "right"){ }}','
        ','
        ',z({fixed:!0}),"
        ",'
        ',T,"
        ","
        ","{{# }; }}","{{# if(right){ }}",'
        ','
        ',z({fixed:"right"}),'
        ',"
        ",'
        ',T,"
        ","
        ","{{# }; }}","{{# if(d.data.page){ }}",'
        ','
        ',"
        ","{{# } }}","","
        "].join(""),D=t(window),F=t(document),j=function(e){var i=this;i.index=++r.index,i.config=t.extend({},i.config,r.config,e),i.render()};j.prototype.config={limit:30,loading:!0},j.prototype.render=function(){var e=this,a=e.config;if(a.elem=t(a.elem),a.where=a.where||{},!a.elem[0])return e;var l=a.elem,n=l.next("."+h),d=e.elem=t(i(A).render({VIEW_CLASS:h,data:a,index:e.index}));if(a.index=e.index,n[0]&&n.remove(),l.after(d),e.layHeader=d.find(y),e.layMain=d.find(v),e.layBody=d.find(p),e.layFixed=d.find(m),e.layFixLeft=d.find(x),e.layFixRight=d.find(b),e.layTool=d.find(g),a.height){var c=parseFloat(a.height)-parseFloat(e.layHeader.height())-1;a.page&&(c-=parseFloat(e.layTool.outerHeight()+1)),e.layBody.css("height",c)}e.pullData(1),e.events()},j.prototype.reload=function(e){var i=this;i.config=t.extend({},i.config,e),i.render()},j.prototype.pullData=function(e,i){var a=this,n=a.config;if(n.url)t.ajax({type:n.method||"get",url:n.url,data:t.extend({page:e,limit:n.limit},n.where),dataType:"json",success:function(t){return 0!=t.code?l.msg(t.msg):(a.renderData(t,e,t.count),i&&l.close(i),void("function"==typeof n.done&&n.done(t,e,t.count)))},error:function(e,t){l.msg("数据请求异常"),d.error("初始table时的接口"+n.url+"异常:"+t),i&&l.close(i)}});else if(n.data&&n.data.constructor===Array){var c=e*n.limit-n.limit,r={data:n.data.concat().splice(c,n.limit),count:n.data.length};a.renderData(r,e,n.data.length),"function"==typeof n.done&&n.done(r,e,r.count)}},j.prototype.page=1,j.prototype.eachCols=function(e){layui.each(this.config.cols,function(t,i){layui.each(i,function(a,l){e(a,l,[t,i])})})},j.prototype.renderData=function(e,l,d,c){var o=this,s=e.data,u=o.config,f=[],h=[],y=[],p=function(){return!c&&o.sortKey?o.sort(o.sortKey.field,o.sortKey.sort,!0):(layui.each(s,function(e,a){var l=[],n=[],d=[];o.eachCols(function(e,c){var o=a[c.field||e];if(void 0!==o&&null!==o||(o=""),!(c.colspan>1)){var s=['",'
        '+function(){return c.checkbox?'":c.toolbar?i(t(c.toolbar).html()||"").render(a):c.templet?i(t(c.templet).html()||String(o)).render(a):o}(),"
        "].join("");l.push(s),c.fixed&&"right"!==c.fixed&&n.push(s),"right"===c.fixed&&d.push(s)}}),f.push(''+l.join("")+""),h.push(''+n.join("")+""),y.push(''+d.join("")+"")}),o.layBody.scrollTop(0),o.layMain.find("tbody").html(f.join("")),o.layFixLeft.find("tbody").html(h.join("")),o.layFixRight.find("tbody").html(y.join("")),n.render("checkbox","LAY-table-"+o.index),o.syncCheckAll(),o.haveInit?o.scrollPatch():setTimeout(function(){o.scrollPatch()},50),void(o.haveInit=!0))};return o.key=u.id||u.index,r.cache[o.key]=s,c?p():(o.cacheData=s,0===s.length?o.layMain.html('
        无数据
        '):(p(),void(u.page&&(o.page=l,o.count=d,a.render({elem:"layui-table-page"+u.index,count:d,groups:3,limits:u.limits||[10,20,30,40,50,60,70,80,90],limit:u.limit,curr:l,layout:["prev","page","next","skip","count","limit"],prev:'',next:'',jump:function(e,t){t||(o.page=e.curr,u.limit=e.limit,o.pullData(e.curr,o.loading()))}}),o.layTool.find(".layui-table-count span").html(d)))))},j.prototype.sort=function(e,i,a){var n,c=this,o=c.config,s=r.cache[c.key];"string"==typeof e&&c.layHeader.find("th").each(function(i,a){var l=t(this),d=l.data("field");if(d===e)return e=l,n=d,!1});try{var n=n||e.data("field");if(c.sortKey&&!a&&n===c.sortKey.field&&i===c.sortKey.sort)return;var u=c.layHeader.find("th .laytable-cell-"+o.index+"-"+n).find(k);c.layHeader.find("th").find(k).removeAttr("lay-sort"),u.attr("lay-sort",i||null),c.layFixed.find("th")}catch(f){return d.error("未到匹配field")}c.sortKey={field:n,sort:i},"asc"===i?s=layui.sort(s,n):"desc"===i?s=layui.sort(s,n,!0):(s=c.cacheData,delete c.sortKey),c.renderData({data:s},c.page,c.count,!0),l.close(c.tipsIndex)},j.prototype.loading=function(){var e=this,t=e.config;if(t.loading&&t.url)return l.msg("数据请求中",{icon:16,offset:[e.layTool.offset().top-100-D.scrollTop()+"px",e.layTool.offset().left+e.layTool.width()/2-90-D.scrollLeft()+"px"],anim:-1,fixed:!1})},j.prototype.setCheckData=function(e,t){var i=this,a=i.config,l=r.cache[i.key];l[e]&&(l[e][a.checkName]=t,i.cacheData[e][a.checkName]=t)},j.prototype.syncCheckAll=function(){var e=this,t=e.config,i=e.layHeader.find('input[name="layTableCheckbox"]'),a=function(i){return e.eachCols(function(e,a){a.checkbox&&(a[t.checkName]=i)}),i};i[0]&&(r.checkStatus(e.key).isAll?(i[0].checked||(i.prop("checked",!0),n.render("checkbox","LAY-table-"+e.index)),a(!0)):(i[0].checked&&(i.prop("checked",!1),n.render("checkbox","LAY-table-"+e.index)),a(!1)))},j.prototype.getCssRule=function(e,t){var i=this,a=i.elem.find("style")[0],l=a.sheet||a.styleSheet,n=l.cssRules||l.rules;layui.each(n,function(a,l){if(l.selectorText===".laytable-cell-"+i.index+"-"+e)return t(l),!0})},j.prototype.scrollPatch=function(){var e=this,i=e.layMain.width()-e.layMain.prop("clientWidth"),a=e.layMain.height()-e.layMain.prop("clientHeight");if(i&&a){if(!e.elem.find(".layui-table-patch")[0]){var l=t('
        ');l.find("div").css({width:i}),e.layHeader.eq(0).find("thead tr").append(l)}}else e.layHeader.eq(0).find(".layui-table-patch").remove();e.layFixed.find(p).css("height",e.layMain.height()-a),e.layFixRight[a?"removeClass":"addClass"](f),e.layFixRight.css("right",i-1)},j.prototype.events=function(){var e,a=this,d=a.config,o=t("body"),u={},f=a.layHeader.find("th"),h=".layui-table-cell",y=d.elem.attr("lay-filter");f.on("mousemove",function(e){var i=t(this),a=i.offset().left,l=e.clientX-a;i.attr("colspan")>1||i.attr("unresize")||u.resizeStart||(u.allowResize=i.width()-l<=10,o.css("cursor",u.allowResize?"col-resize":""))}).on("mouseleave",function(){t(this);u.resizeStart||o.css("cursor","")}).on("mousedown",function(e){if(u.allowResize){var i=t(this).data("field");e.preventDefault(),u.resizeStart=!0,u.offset=[e.clientX,e.clientY],a.getCssRule(i,function(e){u.rule=e,u.ruleWidth=parseFloat(e.style.width)})}}),F.on("mousemove",function(t){if(u.resizeStart){if(t.preventDefault(),u.rule){var i=u.ruleWidth+t.clientX-u.offset[0];u.rule.style.width=i+"px",l.close(a.tipsIndex)}e=1}}).on("mouseup",function(t){u.resizeStart&&(u={},o.css("cursor",""),a.scrollPatch()),2===e&&(e=null)}),f.on("click",function(){var i,l=t(this),n=l.find(k),d=n.attr("lay-sort");return n[0]&&1!==e?(i="asc"===d?"desc":"desc"===d?null:"asc",void a.sort(l,i)):e=2}).find(k+" .layui-edge ").on("click",function(e){var i=t(this),l=i.index(),n=i.parents("th").eq(0).data("field");layui.stope(e),0===l?a.sort(n,"asc"):a.sort(n,"desc")}),a.elem.on("click",'input[name="layTableCheckbox"]+',function(){var e=t(this).prev(),i=a.layBody.find('input[name="layTableCheckbox"]'),l=e.parents("tr").eq(0).data("index"),d=e[0].checked,c="layTableAllChoose"===e.attr("lay-filter");c?(i.each(function(e,t){t.checked=d,a.setCheckData(e,d)}),a.syncCheckAll(),n.render("checkbox","LAY-table-"+a.index)):(a.setCheckData(l,d),a.syncCheckAll()),layui.event.call(this,s,"checkbox("+y+")",{checked:d,data:r.cache[a.key][l],type:c?"all":"one"})}),a.layBody.on("mouseenter","tr",function(){var e=t(this),i=e.index();a.layBody.find("tr:eq("+i+")").addClass(w)}).on("mouseleave","tr",function(){var e=t(this),i=e.index();a.layBody.find("tr:eq("+i+")").removeClass(w)}),a.layBody.on("change","."+C,function(){var e=t(this),i=this.value,l=e.parent().data("field"),n=e.parents("tr").eq(0).data("index");layui.event.call(this,s,"edit("+y+")",{value:i,data:r.cache[a.key][n],field:l})}).on("blur","."+C,function(){var e,l=t(this),n=l.parent().data("field"),d=l.parents("tr").eq(0).data("index"),c=r.cache[a.key][d];a.eachCols(function(t,i){i.field==n&&i.templet&&(e=i.templet)}),l.siblings(h).html(e?i(t(e).html()||this.value).render(c):this.value),l.parent().data("content",this.value),l.remove()}),a.layBody.on("click","td",function(){var e=t(this),i=(e.data("field"),e.children(h));if(!e.data("off")){if(e.data("edit")){var n=t('');return n[0].value=e.data("content")||i.text(),e.find("."+C)[0]||e.append(n),n.focus()}i.prop("scrollWidth")>i.outerWidth()&&(a.tipsIndex=l.tips(['
        ',i.html(),"
        ",''].join(""),i[0],{tips:[3,""],time:-1,anim:-1,maxWidth:c.ios||c.android?300:600,isOutAnim:!1,skin:"layui-table-tips",success:function(e,t){e.find(".layui-table-tips-c").on("click",function(){l.close(t)})}}))}}),a.layBody.on("click","*[lay-event]",function(){var e=t(this),l=e.parents("tr").eq(0).data("index"),n=a.layBody.find('tr[data-index="'+l+'"]'),d="layui-table-click";layui.event.call(this,s,"tool("+y+")",{data:r.cache[a.key][l],event:e.attr("lay-event"),tr:n,del:function(){var e=this.data;delete e[r.config.checkName],n.remove(),a.scrollPatch()},update:function(e){var l=this.data;e=e||{},layui.each(e,function(e,d){if(e in l){var c;l[e]=d,a.eachCols(function(t,i){i.field==e&&i.templet&&(c=i.templet)}),n.children('td[data-field="'+e+'"]').children(h).html(c?i(t(c).html()||d).render(l):d)}})}}),n.addClass(d).siblings("tr").removeClass(d)}),a.layMain.on("scroll",function(){var e=t(this),i=e.scrollLeft(),n=e.scrollTop();a.layHeader.scrollLeft(i),a.layFixed.find(p).scrollTop(n),l.close(a.tipsIndex)}),D.on("resize",function(){a.scrollPatch()})},r.init=function(e,i){i=i||{};var a=this,l=t(e?'table[lay-filter="'+e+'"]':u+"[lay-data]");return l.each(function(){var a=t(this),l=a.attr("lay-data");try{l=new Function("return "+l)()}catch(n){d.error("table元素属性lay-data配置项存在语法错误:"+l)}var c=[],o=t.extend({elem:this,cols:[],data:[],skin:a.attr("lay-skin"),size:a.attr("lay-size"),even:"string"==typeof a.attr("lay-even")},r.config,i,l);e&&a.hide(),a.find("thead>tr").each(function(e){o.cols[e]=[],t(this).children().each(function(i){var a=t(this),l=a.attr("lay-data");try{l=new Function("return "+l)()}catch(n){return d.error("table元素属性lay-data配置项存在语法错误:"+l)}var r=t.extend({title:a.text(),colspan:a.attr("colspan"),rowspan:a.attr("rowspan")},l);c.push(r),o.cols[e].push(r)})}),a.find("tbody>tr").each(function(e){var i=t(this),a={};i.children("td").each(function(e,i){var l=t(this),n=l.data("field");if(n)return a[n]=l.html()}),layui.each(c,function(e,t){var l=i.children("td").eq(e);a[t.field]=l.html()}),o.data[e]=a}),r.render(o)}),a},r.checkStatus=function(e){var t=0,i=[],a=r.cache[e];return a?(layui.each(a,function(e,a){a[r.config.checkName]&&(t++,i.push(a))}),{data:i,isAll:t===a.length}):{}},r.render=function(e){var t=new j(e);return o.call(t)},r.init(),e(s,r)});layui.define("jquery",function(e){"use strict";var i=layui.$,n=(layui.hint(),layui.device(),{config:{},set:function(e){var n=this;return n.config=i.extend({},n.config,e),n},on:function(e,i){return layui.onevent.call(this,t,e,i)}}),t="carousel",a="layui-this",o=">*[carousel-item]>*",l="layui-carousel-left",r="layui-carousel-right",d="layui-carousel-prev",s="layui-carousel-next",u="layui-carousel-arrow",c="layui-carousel-ind",m=function(e){var t=this;t.config=i.extend({},t.config,n.config,e),t.render()};m.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},m.prototype.render=function(){var e=this,n=e.config;n.elem=i(n.elem),n.elem[0]&&(e.elemItem=n.elem.find(o),n.index<0&&(n.index=0),n.index>=e.elemItem.length&&(n.index=e.elemItem.length-1),n.interval<800&&(n.interval=800),n.full?n.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):n.elem.css({width:n.width,height:n.height}),n.elem.attr("lay-anim",n.anim),e.elemItem.eq(n.index).addClass(a),e.indicator(),e.elemItem.length<=1||(e.arrow(),e.autoplay(),e.events()))},m.prototype.reload=function(e){var n=this;clearInterval(n.timer),n.config=i.extend({},n.config,e),n.render()},m.prototype.prevIndex=function(){var e=this,i=e.config,n=i.index-1;return n<0&&(n=e.elemItem.length-1),n},m.prototype.nextIndex=function(){var e=this,i=e.config,n=i.index+1;return n>=e.elemItem.length&&(n=0),n},m.prototype.addIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index+e,n.index>=i.elemItem.length&&(n.index=0)},m.prototype.subIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index-e,n.index<0&&(n.index=i.elemItem.length-1)},m.prototype.autoplay=function(){var e=this,i=e.config;i.autoplay&&(e.timer=setInterval(function(){e.slide()},i.interval))},m.prototype.arrow=function(){var e=this,n=e.config,t=i(['",'"].join(""));n.elem.attr("lay-arrow",n.arrow),n.elem.find("."+u)[0]&&n.elem.find("."+u).remove(),n.elem.append(t),t.on("click",function(){var n=i(this),t=n.attr("lay-type");e.slide(t)})},m.prototype.indicator=function(){var e=this,n=e.config,t=e.elemInd=i(['
          ',function(){var i=[];return layui.each(e.elemItem,function(e){i.push("")}),i.join("")}(),"
        "].join(""));n.elem.attr("lay-indicator",n.indicator),n.elem.find("."+c)[0]&&n.elem.find("."+c).remove(),n.elem.append(t),"updown"===n.anim&&t.css("margin-top",-(t.height()/2)),t.find("li").on("hover"===n.trigger?"mouseover":n.trigger,function(){var t=i(this),a=t.index();a>n.index?e.slide("add",a-n.index):a',e.bar1?'
      • '+n[0]+"
      • ":"",e.bar2?'
      • '+n[1]+"
      • ":"",'
      • '+n[2]+"
      • ","
      "].join("")),s=u.find("."+l),b=function(){var o=r.scrollTop();o>=e.showHeight?t||(s.show(),t=1):t&&(s.hide(),t=0)};o("."+i)[0]||("object"==typeof e.css&&u.css(e.css),c.append(u),b(),u.find("li").on("click",function(){var t=o(this),a=t.attr("lay-type");"top"===a&&o("html,body").animate({scrollTop:0},200),e.click&&e.click.call(this,a)}),r.on("scroll",function(){clearTimeout(a),a=setTimeout(function(){b()},100)}))},countdown:function(e,o,t){var a=this,i="function"==typeof o,l=new Date(e).getTime(),r=new Date(!o||i?(new Date).getTime():o).getTime(),c=l-r,n=[Math.floor(c/864e5),Math.floor(c/36e5)%24,Math.floor(c/6e4)%60,Math.floor(c/1e3)%60];i&&(t=o);var u=setTimeout(function(){a.countdown(e,r+1e3,t)},1e3);return t&&t(c>0?n:[0,0,0,0],o,u),c<=0&&clearTimeout(u),u},timeAgo:function(e,o){var t=(new Date).getTime()-new Date(e).getTime();return t>2592e6?(t=new Date(e).toLocaleString(),o&&(t=t.replace(/\s[\S]+$/g,"")),t):t>=864e5?(t/1e3/60/60/24|0)+"天前":t>=36e5?(t/1e3/60/60|0)+"小时前":t>=18e4?(t/1e3/60|0)+"分钟前":t<0?"未来":"刚刚"}};e("util",t)});layui.define("jquery",function(e){"use strict";var l=layui.$,o=function(e){},t='';o.prototype.load=function(e){var o,i,n,r,a=this,c=0;e=e||{};var f=l(e.elem);if(f[0]){var m=l(e.scrollElem||document),u=e.mb||50,s=!("isAuto"in e)||e.isAuto,v=e.end||"没有更多了",y=e.scrollElem&&e.scrollElem!==document,d="加载更多",h=l('");f.find(".layui-flow-more")[0]||f.append(h);var p=function(e,t){e=l(e),h.before(e),t=0==t||null,t?h.html(v):h.find("a").html(d),i=t,o=null,n&&n()},g=function(){o=!0,h.find("a").html(t),"function"==typeof e.done&&e.done(++c,p)};if(g(),h.find("a").on("click",function(){l(this);i||o||g()}),e.isLazyimg)var n=a.lazyimg({elem:e.elem+" img",scrollElem:e.scrollElem});return s?(m.on("scroll",function(){var e=l(this),t=e.scrollTop();r&&clearTimeout(r),i||(r=setTimeout(function(){var i=y?e.height():l(window).height(),n=y?e.prop("scrollHeight"):document.documentElement.scrollHeight;n-t-i<=u&&(o||g())},100))}),a):a}},o.prototype.lazyimg=function(e){var o,t=this,i=0;e=e||{};var n=l(e.scrollElem||document),r=e.elem||"img",a=e.scrollElem&&e.scrollElem!==document,c=function(e,l){var o=n.scrollTop(),r=o+l,c=a?function(){return e.offset().top-n.offset().top+o}():e.offset().top;if(c>=o&&c<=r&&!e.attr("src")){var m=e.attr("lay-src");layui.img(m,function(){var l=t.lazyimg.elem.eq(i);e.attr("src",m).removeAttr("lay-src"),l[0]&&f(l),i++})}},f=function(e,o){var f=a?(o||n).height():l(window).height(),m=n.scrollTop(),u=m+f;if(t.lazyimg.elem=l(r),e)c(e,f);else for(var s=0;su)break}};if(f(),!o){var m;n.on("scroll",function(){var e=l(this);m&&clearTimeout(m),m=setTimeout(function(){f(null,e)},50)}),o=!0}return f},e("flow",new o)});layui.define(["layer","form"],function(t){"use strict";var e=layui.$,i=layui.layer,a=layui.form,l=(layui.hint(),layui.device()),n="layedit",o="layui-show",r="layui-disabled",c=function(){var t=this;t.index=0,t.config={tool:["strong","italic","underline","del","|","left","center","right","|","link","unlink","face","image"],hideTool:[],height:280}};c.prototype.set=function(t){var i=this;return e.extend(!0,i.config,t),i},c.prototype.on=function(t,e){return layui.onevent(n,t,e)},c.prototype.build=function(t,i){i=i||{};var a=this,n=a.config,r="layui-layedit",c=e("#"+t),u="LAY_layedit_"+ ++a.index,d=c.next("."+r),y=e.extend({},n,i),f=function(){var t=[],e={};return layui.each(y.hideTool,function(t,i){e[i]=!0}),layui.each(y.tool,function(i,a){C[a]&&!e[a]&&t.push(C[a])}),t.join("")}(),m=e(['
      ','
      '+f+"
      ",'
      ','',"
      ","
      "].join(""));return l.ie&&l.ie<8?c.removeClass("layui-hide").addClass(o):(d[0]&&d.remove(),s.call(a,m,c[0],y),c.addClass("layui-hide").after(m),a.index)},c.prototype.getContent=function(t){var e=u(t);if(e[0])return d(e[0].document.body.innerHTML)},c.prototype.getText=function(t){var i=u(t);if(i[0])return e(i[0].document.body).text()},c.prototype.setContent=function(t,i,a){var l=u(t);l[0]&&(a?e(l[0].document.body).append(i):e(l[0].document.body).html(i),layedit.sync(t))},c.prototype.sync=function(t){var i=u(t);if(i[0]){var a=e("#"+i[1].attr("textarea"));a.val(d(i[0].document.body.innerHTML))}},c.prototype.getSelection=function(t){var e=u(t);if(e[0]){var i=m(e[0].document);return document.selection?i.text:i.toString()}};var s=function(t,i,a){var l=this,n=t.find("iframe");n.css({height:a.height}).on("load",function(){var o=n.contents(),r=n.prop("contentWindow"),c=o.find("head"),s=e([""].join("")),u=o.find("body");c.append(s),u.attr("contenteditable","true").css({"min-height":a.height}).html(i.value||""),y.apply(l,[r,n,i,a]),g.call(l,r,t,a)})},u=function(t){var i=e("#LAY_layedit_"+t),a=i.prop("contentWindow");return[a,i]},d=function(t){return 8==l.ie&&(t=t.replace(/<.+>/g,function(t){return t.toLowerCase()})),t},y=function(t,a,n,o){var r=t.document,c=e(r.body);c.on("keydown",function(t){var e=t.keyCode;if(13===e){var a=m(r),l=p(a),n=l.parentNode;if("pre"===n.tagName.toLowerCase()){if(t.shiftKey)return;return i.msg("请暂时用shift+enter"),!1}r.execCommand("formatBlock",!1,"

      ")}}),e(n).parents("form").on("submit",function(){var t=c.html();8==l.ie&&(t=t.replace(/<.+>/g,function(t){return t.toLowerCase()})),n.value=t}),c.on("paste",function(e){r.execCommand("formatBlock",!1,"

      "),setTimeout(function(){f.call(t,c),n.value=c.html()},100)})},f=function(t){var i=this;i.document;t.find("*[style]").each(function(){var t=this.style.textAlign;this.removeAttribute("style"),e(this).css({"text-align":t||""})}),t.find("table").addClass("layui-table"),t.find("script,link").remove()},m=function(t){return t.selection?t.selection.createRange():t.getSelection().getRangeAt(0)},p=function(t){return t.endContainer||t.parentElement().childNodes[0]},v=function(t,i,a){var l=this.document,n=document.createElement(t);for(var o in i)n.setAttribute(o,i[o]);if(n.removeAttribute("text"),l.selection){var r=a.text||i.text;if("a"===t&&!r)return;r&&(n.innerHTML=r),a.pasteHTML(e(n).prop("outerHTML")),a.select()}else{var r=a.toString()||i.text;if("a"===t&&!r)return;r&&(n.innerHTML=r),a.deleteContents(),a.insertNode(n)}},h=function(t,i){var a=this.document,l="layedit-tool-active",n=p(m(a)),o=function(e){return t.find(".layedit-tool-"+e)};i&&i[i.hasClass(l)?"removeClass":"addClass"](l),t.find(">i").removeClass(l),o("unlink").addClass(r),e(n).parents().each(function(){var t=this.tagName.toLowerCase(),e=this.style.textAlign;"b"!==t&&"strong"!==t||o("b").addClass(l),"i"!==t&&"em"!==t||o("i").addClass(l),"u"===t&&o("u").addClass(l),"strike"===t&&o("d").addClass(l),"p"===t&&("center"===e?o("center").addClass(l):"right"===e?o("right").addClass(l):o("left").addClass(l)),"a"===t&&(o("link").addClass(l),o("unlink").removeClass(r))})},g=function(t,a,l){var n=t.document,o=e(n.body),c={link:function(i){var a=p(i),l=e(a).parent();b.call(o,{href:l.attr("href"),target:l.attr("target")},function(e){var a=l[0];"A"===a.tagName?a.href=e.url:v.call(t,"a",{target:e.target,href:e.url,text:e.url},i)})},unlink:function(t){n.execCommand("unlink")},face:function(e){x.call(this,function(i){v.call(t,"img",{src:i.src,alt:i.alt},e)})},image:function(a){var n=this;layui.use("upload",function(o){var r=l.uploadImage||{};o.render({url:r.url,method:r.type,elem:e(n).find("input")[0],done:function(e){0==e.code?(e.data=e.data||{},v.call(t,"img",{src:e.data.src,alt:e.data.title},a)):i.msg(e.msg||"上传失败")}})})},code:function(e){k.call(o,function(i){v.call(t,"pre",{text:i.code,"lay-lang":i.lang},e)})},help:function(){i.open({type:2,title:"帮助",area:["600px","380px"],shadeClose:!0,shade:.1,skin:"layui-layer-msg",content:["http://www.layui.com/about/layedit/help.html","no"]})}},s=a.find(".layui-layedit-tool"),u=function(){var i=e(this),a=i.attr("layedit-event"),l=i.attr("lay-command");if(!i.hasClass(r)){o.focus();var u=m(n);u.commonAncestorContainer;l?(n.execCommand(l),/justifyLeft|justifyCenter|justifyRight/.test(l)&&n.execCommand("formatBlock",!1,"

      "),setTimeout(function(){o.focus()},10)):c[a]&&c[a].call(this,u),h.call(t,s,i)}},d=/image/;s.find(">i").on("mousedown",function(){var t=e(this),i=t.attr("layedit-event");d.test(i)||u.call(this)}).on("click",function(){var t=e(this),i=t.attr("layedit-event");d.test(i)&&u.call(this)}),o.on("click",function(){h.call(t,s),i.close(x.index)})},b=function(t,e){var l=this,n=i.open({type:1,id:"LAY_layedit_link",area:"350px",shade:.05,shadeClose:!0,moveType:1,title:"超链接",skin:"layui-layer-msg",content:['

        ','
      • ','','
        ','',"
        ","
      • ",'
      • ','','
        ','",'","
        ","
      • ",'
      • ','','',"
      • ","
      "].join(""),success:function(t,n){var o="submit(layedit-link-yes)";a.render("radio"),t.find(".layui-btn-primary").on("click",function(){i.close(n),l.focus()}),a.on(o,function(t){i.close(b.index),e&&e(t.field)})}});b.index=n},x=function(t){var a=function(){var t=["[微笑]","[嘻嘻]","[哈哈]","[可爱]","[可怜]","[挖鼻]","[吃惊]","[害羞]","[挤眼]","[闭嘴]","[鄙视]","[爱你]","[泪]","[偷笑]","[亲亲]","[生病]","[太开心]","[白眼]","[右哼哼]","[左哼哼]","[嘘]","[衰]","[委屈]","[吐]","[哈欠]","[抱抱]","[怒]","[疑问]","[馋嘴]","[拜拜]","[思考]","[汗]","[困]","[睡]","[钱]","[失望]","[酷]","[色]","[哼]","[鼓掌]","[晕]","[悲伤]","[抓狂]","[黑线]","[阴险]","[怒骂]","[互粉]","[心]","[伤心]","[猪头]","[熊猫]","[兔子]","[ok]","[耶]","[good]","[NO]","[赞]","[来]","[弱]","[草泥马]","[神马]","[囧]","[浮云]","[给力]","[围观]","[威武]","[奥特曼]","[礼物]","[钟]","[话筒]","[蜡烛]","[蛋糕]"],e={};return layui.each(t,function(t,i){e[i]=layui.cache.dir+"images/face/"+t+".gif"}),e}();return x.hide=x.hide||function(t){"face"!==e(t.target).attr("layedit-event")&&i.close(x.index)},x.index=i.tips(function(){var t=[];return layui.each(a,function(e,i){t.push('
    • '+e+'
    • ')}),'
        '+t.join("")+"
      "}(),this,{tips:1,time:0,skin:"layui-box layui-util-face",maxWidth:500,success:function(l,n){l.css({marginTop:-4,marginLeft:-10}).find(".layui-clear>li").on("click",function(){t&&t({src:a[this.title],alt:this.title}),i.close(n)}),e(document).off("click",x.hide).on("click",x.hide)}})},k=function(t){var e=this,l=i.open({type:1,id:"LAY_layedit_code",area:"550px",shade:.05,shadeClose:!0,moveType:1,title:"插入代码",skin:"layui-layer-msg",content:['
        ','
      • ','','
        ','","
        ","
      • ",'
      • ','','
        ','',"
        ","
      • ",'
      • ','','',"
      • ","
      "].join(""),success:function(l,n){var o="submit(layedit-code-yes)";a.render("select"),l.find(".layui-btn-primary").on("click",function(){i.close(n),e.focus()}),a.on(o,function(e){i.close(k.index),t&&t(e.field)})}});k.index=l},C={html:'',strong:'',italic:'',underline:'',del:'',"|":'',left:'',center:'',right:'',link:'',unlink:'',face:'',image:'',code:'',help:''},w=new c;t(n,w)});layui.define("jquery",function(e){"use strict";var a=layui.$,l="http://www.layui.com/doc/modules/code.html";e("code",function(e){var t=[];e=e||{},e.elem=a(e.elem||".layui-code"),e.about=!("about"in e)||e.about,e.elem.each(function(){t.push(this)}),layui.each(t.reverse(),function(t,i){var c=a(i),o=c.html();(c.attr("lay-encode")||e.encode)&&(o=o.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""")),c.html('
      1. '+o.replace(/[\r\t\n]+/g,"
      2. ")+"
      "),c.find(">.layui-code-h3")[0]||c.prepend('

      '+(c.attr("lay-title")||e.title||"code")+(e.about?'layui.code':"")+"

      ");var d=c.find(">.layui-code-ol");c.addClass("layui-box layui-code-view"),(c.attr("lay-skin")||e.skin)&&c.addClass("layui-code-"+(c.attr("lay-skin")||e.skin)),(d.find("li").length/100|0)>0&&d.css("margin-left",(d.find("li").length/100|0)+"px"),(c.attr("lay-height")||e.height)&&d.css("max-height",c.attr("lay-height")||e.height)})})}).addcss("modules/code.css","skincodecss"); \ No newline at end of file diff --git a/static/admin/simpleui/layui/layui.js b/static/admin/simpleui/layui/layui.js new file mode 100644 index 0000000..68290ac --- /dev/null +++ b/static/admin/simpleui/layui/layui.js @@ -0,0 +1,2 @@ +/** layui-v2.0.2 MIT License By http://www.layui.com */ + ;!function(e){"use strict";var t=document,o={modules:{},status:{},timeout:10,event:{}},n=function(){this.v="2.0.2"},r=function(){var e=t.scripts,o=e[e.length-1].src;return o.substring(0,o.lastIndexOf("/")+1)}(),a=function(t){e.console&&console.error&&console.error("Layui hint: "+t)},i="undefined"!=typeof opera&&"[object Opera]"===opera.toString(),u={layer:"modules/layer",laydate:"modules/laydate",laypage:"modules/laypage",laytpl:"modules/laytpl",layim:"modules/layim",layedit:"modules/layedit",form:"modules/form",upload:"modules/upload",tree:"modules/tree",table:"modules/table",element:"modules/element",util:"modules/util",flow:"modules/flow",carousel:"modules/carousel",code:"modules/code",jquery:"modules/jquery",mobile:"modules/mobile","layui.all":"dest/layui.all"};n.prototype.cache=o,n.prototype.define=function(e,t){var n=this,r="function"==typeof e,a=function(){return"function"==typeof t&&t(function(e,t){layui[e]=t,o.status[e]=!0}),this};return r&&(t=e,e=[]),layui["layui.all"]||!layui["layui.all"]&&layui["layui.mobile"]?a.call(n):(n.use(e,a),n)},n.prototype.use=function(e,n,l){function s(e,t){var n="PLaySTATION 3"===navigator.platform?/^complete$/:/^(complete|loaded)$/;("load"===e.type||n.test((e.currentTarget||e.srcElement).readyState))&&(o.modules[f]=t,d.removeChild(v),function r(){return++m>1e3*o.timeout/4?a(f+" is not a valid module"):void(o.status[f]?c():setTimeout(r,4))}())}function c(){l.push(layui[f]),e.length>1?y.use(e.slice(1),n,l):"function"==typeof n&&n.apply(layui,l)}var y=this,p=o.dir=o.dir?o.dir:r,d=t.getElementsByTagName("head")[0];e="string"==typeof e?[e]:e,window.jQuery&&jQuery.fn.on&&(y.each(e,function(t,o){"jquery"===o&&e.splice(t,1)}),layui.jquery=layui.$=jQuery);var f=e[0],m=0;if(l=l||[],o.host=o.host||(p.match(/\/\/([\s\S]+?)\//)||["//"+location.host+"/"])[0],0===e.length||layui["layui.all"]&&u[f]||!layui["layui.all"]&&layui["layui.mobile"]&&u[f])return c(),y;if(o.modules[f])!function g(){return++m>1e3*o.timeout/4?a(f+" is not a valid module"):void("string"==typeof o.modules[f]&&o.status[f]?c():setTimeout(g,4))}();else{var v=t.createElement("script"),h=(u[f]?p+"lay/":o.base||"")+(y.modules[f]||f)+".js";v.async=!0,v.charset="utf-8",v.src=h+function(){var e=o.version===!0?o.v||(new Date).getTime():o.version||"";return e?"?v="+e:""}(),d.appendChild(v),!v.attachEvent||v.attachEvent.toString&&v.attachEvent.toString().indexOf("[native code")<0||i?v.addEventListener("load",function(e){s(e,h)},!1):v.attachEvent("onreadystatechange",function(e){s(e,h)}),o.modules[f]=h}return y},n.prototype.getStyle=function(t,o){var n=t.currentStyle?t.currentStyle:e.getComputedStyle(t,null);return n[n.getPropertyValue?"getPropertyValue":"getAttribute"](o)},n.prototype.link=function(e,n,r){var i=this,u=t.createElement("link"),l=t.getElementsByTagName("head")[0];"string"==typeof n&&(r=n);var s=(r||e).replace(/\.|\//g,""),c=u.id="layuicss-"+s,y=0;return u.rel="stylesheet",u.href=e+(o.debug?"?v="+(new Date).getTime():""),u.media="all",t.getElementById(c)||l.appendChild(u),"function"!=typeof n?i:(function p(){return++y>1e3*o.timeout/100?a(e+" timeout"):void(1989===parseInt(i.getStyle(t.getElementById(c),"width"))?function(){n()}():setTimeout(p,100))}(),i)},n.prototype.addcss=function(e,t,n){return layui.link(o.dir+"css/"+e,t,n)},n.prototype.img=function(e,t,o){var n=new Image;return n.src=e,n.complete?t(n):(n.onload=function(){n.onload=null,t(n)},void(n.onerror=function(e){n.onerror=null,o(e)}))},n.prototype.config=function(e){e=e||{};for(var t in e)o[t]=e[t];return this},n.prototype.modules=function(){var e={};for(var t in u)e[t]=u[t];return e}(),n.prototype.extend=function(e){var t=this;e=e||{};for(var o in e)t[o]||t.modules[o]?a("模块名 "+o+" 已被占用"):t.modules[o]=e[o];return t},n.prototype.router=function(e){var t=this,e=e||location.hash,o={path:[],search:{},hash:(e.match(/[^#](#.*$)/)||[])[1]||""};return/^#\//.test(e)?(e=e.replace(/^#\//,"").replace(/([^#])(#.*$)/,"$1").split("/")||[],t.each(e,function(e,t){/^\w+=/.test(t)?function(){t=t.split("="),o.search[t[0]]=t[1]}():o.path.push(t)}),o):o},n.prototype.data=function(t,o){if(t=t||"layui",e.JSON&&e.JSON.parse){if(null===o)return delete localStorage[t];o="object"==typeof o?o:{key:o};try{var n=JSON.parse(localStorage[t])}catch(r){var n={}}return o.value&&(n[o.key]=o.value),o.remove&&delete n[o.key],localStorage[t]=JSON.stringify(n),o.key?n[o.key]:n}},n.prototype.device=function(t){var o=navigator.userAgent.toLowerCase(),n=function(e){var t=new RegExp(e+"/([^\\s\\_\\-]+)");return e=(o.match(t)||[])[1],e||!1},r={os:function(){return/windows/.test(o)?"windows":/linux/.test(o)?"linux":/iphone|ipod|ipad|ios/.test(o)?"ios":/mac/.test(o)?"mac":void 0}(),ie:function(){return!!(e.ActiveXObject||"ActiveXObject"in e)&&((o.match(/msie\s(\d+)/)||[])[1]||"11")}(),weixin:n("micromessenger")};return t&&!r[t]&&(r[t]=n(t)),r.android=/android/.test(o),r.ios="ios"===r.os,r},n.prototype.hint=function(){return{error:a}},n.prototype.each=function(e,t){var o,n=this;if("function"!=typeof t)return n;if(e=e||[],e.constructor===Object){for(o in e)if(t.call(e[o],o,e[o]))break}else for(o=0;oa?1:r .layui-tab-title li span i { + margin-right: 5px; +} + +.my-side ul.layui-nav li dl dd a i { + margin-left: 15px; +} + +.my-body { + position: fixed; + top: 60px; + bottom: 0; + left: 200px; + right: 0; + z-index: 1; + overflow: hidden; +} + +.body { + padding: 10px; +} + +.my-body .layui-tab, .my-body .layui-tab .layui-tab-content { + margin: 0; + padding: 0; +} + +.my-body .layui-tab .layui-tab-title li:first-child > i { + display: none; +} + +.my-body .layui-tab, .my-body .layui-tab .layui-tab-content, .my-body .layui-tab .layui-tab-item { + height: 100%; +} + +.my-body iframe { + width: 100%; + height: 100%; + border: none; + outline: none; +} + +.layui-layout-admin .my-footer { + height: 40px; + padding: 2px 0; +} + +.layui-layout-admin .my-footer p { + height: 20px; + line-height: 20px; + font-size: 12px; + text-align: center; +} + +.my-btn-box { + height: 38px; + margin-bottom: 10px; +} + +.my-pay-box > div p { + text-align: center; + margin-bottom: 10px; +} + +/* welcome */ +.my-index-main button.layui-icon { + width: 100%; + font-size: 20px; +} + +.my-index-main .my-nav-btn { + background: #efefef; + cursor: pointer; + border-radius: 2px; + overflow: hidden; +} + +.my-index-main .my-nav-text:first-child { + height: 24px; + line-height: 25px; + font-size: 16px; + font-weight: bold; +} + +.my-index-main .my-nav-text:last-child { + height: 20px; + line-height: 20px; + font-size: 12px; +} + +/* login */ +.login-body { + background: url("../image/bg.png") repeat fixed; +} + +.login-box { + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + width: 320px; + height: 241px; + max-height: 300px; +} + +.login-body .login-box h3 { + color: #444; + font-size: 22px; + font-weight: 100; + text-align: center; +} + +.login-box .layui-input[type='number'] { + display: inline-block; + width: 50%; + vertical-align: top; +} + +.login-box img { + display: inline-block; + width: 46%; + height: 38px; + border: none; + vertical-align: top; + cursor: pointer; + margin-left: 4%; +} + +.login-box button.btn-reset { + width: 95px; +} + +.login-box button.btn-submit { + width: 190px; +} + +.login-main { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + width: 350px; + margin: 0 auto; +} + +.login-main header { + margin-top: 150px; + height: 35px; + line-height: 35px; + font-size: 30px; + font-weight: 100; + text-align: center; +} + +.login-main header, .login-main form, .login-main form .layui-input-inline { + margin-bottom: 15px; +} + +.login-main form .layui-input-inline, .login-main form .layui-input-inline input, .login-main form .layui-input-inline button { + width: 100%; +} + +.login-main form .login-btn { + margin-bottom: 5px; +} + +/* demo */ +.site-demo-button div { + margin: 20px 30px 10px; +} + +.site-demo-button .layui-btn { + margin: 0 7px 10px 0; +} + +/* check */ +input[type='checkbox'] { + vertical-align: middle; +} + +.my-checkbox { + -webkit-appearance: none; + position: relative; + width: 20px; + height: 20px; + background-color: #FFFFFF; + border: solid 2px #28B779; + border-radius: 2px; + background-clip: padding-box; + display: inline-block; + cursor: pointer; +} + +.my-checkbox:checked { + background-color: #28B779; + border: solid 0 #28B779; +} + +.my-checkbox:checked:before { + position: absolute; + display: inline-block; + right: 50%; + bottom: 50%; + -webkit-transform: translate(50%, 50%); + -ms-transform: translate(50%, 50%); + transform: translate(50%, 50%); + font-family: "Microsoft Yahei"; + content: "√"; + color: #FFFFFF; + font-size: 16px; + font-weight: 600; +} + +/* dblclick css */ +.dblclick-tab tr td { + height: 30px; + line-height: 30px; + padding: 0 6px; + border-radius: 2px; + cursor: pointer; +} + +.dblclick-tab tr td:hover { + color: black; + background: white; +} + +.dblclick-tab tr td i { + position: relative; + top: 2px; + display: inline-block; + margin-right: 5px; +} + +/* tips 404 */ +.my-page-box { + font-family: "Segoe UI", "Lucida Grande", Helvetica, Arial, "Microsoft YaHei", FreeSans, Arimo, "Droid Sans", "wenquanyi micro hei", "Hiragino Sans GB", "Hiragino Sans GB W3", FontAwesome, sans-serif; + text-align: center; + padding: 20px; + background-color: white; +} + +.my-page-box i { + font-size: 100px; +} + +.my-page-box h2, .my-page-box h3, .my-page-box h4, .my-page-box h5 { + font-size: 80px; +} + +.my-page-box p.msg { + color: #dce2ec; + font-size: 20px; + margin-top: 20px; +} + +.my-page-box p.text { + color: #666; + font-size: 16px; + margin-top: 20px; +} + +.my-page-box .my-btn-box { + margin-top: 20px; + margin-bottom: 20px; +} + +/* tree table */ +.my-tree-table-box .tree-table-tree-box { + width: 20%; + min-height: 200px; + display: inline-block; + vertical-align: top; + overflow-y: auto; + overflow-x: auto; +} + +.my-tree-table-box .tree-table-table-box { + display: inline-block; + vertical-align: top; + width: 79%; + margin-left: 1%; +} + +/* skin0 */ +html .skin-0 .dblclick-tips-box .layui-layer-content { + background-color: #009688; +} + +html .skin-0 .dblclick-tips-box i.layui-layer-TipsB { + border-right-color: #009688; +} + +/* skin1 */ +html .skin-1 .my-header .my-header-logo, +html .skin-1 .layui-nav .layui-nav-item a, +html .skin-1 .layui-nav .layui-nav-item a:hover { + color: #444; +} + +html .skin-1 .my-header, +html .skin-1 .layui-nav, +html .skin-1 .layui-nav-child { + background: white; +} + +html .skin-1 .layui-nav .layui-nav-item .layui-nav-child dd.layui-this a { + color: white; +} + +html .skin-1 .layui-nav .layui-nav-item .layui-nav-child dd.layui-this, +html .skin-1 .layui-nav .layui-nav-item .layui-nav-child dd.layui-this > a, +html .skin-1 .layui-nav-tree .layui-nav-item > a:hover, +html .skin-1 .layui-nav .layui-nav-item .layui-nav-child dd:hover > a, +html .skin-1 .layui-tab-title li .layui-tab-close:hover, +html .skin-1 .dblclick-tips-box .layui-layer-content { + color: white !important; + background-color: #666 !important; +} + +html .skin-1 .dblclick-tips-box i.layui-layer-TipsB { + border-right-color: #666; +} + +html .skin-1 .layui-nav .layui-nav-itemed > a { + background: #444 !important; +} + +html .skin-1 .layui-nav .layui-nav-more { + border-color: #444 transparent transparent; +} + +html .skin-1 .layui-nav .layui-nav-mored { + border-color: transparent transparent #444; +} + +/* skin2 */ +html .skin-2 .my-header .my-header-logo, +html .skin-2 .layui-nav .layui-nav-item a, +html .skin-2 .layui-nav .layui-nav-item a:hover { + color: white; +} + +html .skin-2 .my-header, +html .skin-2 .layui-nav, +html .skin-2 .layui-nav-child { + background-color: #01AAED; +} + +html .skin-2 .layui-nav .layui-nav-item .layui-nav-child dd.layui-this a { + color: white; +} + +html .skin-2 .layui-nav .layui-nav-item .layui-nav-child dd.layui-this, +html .skin-2 .layui-nav .layui-nav-item .layui-nav-child dd.layui-this > a, +html .skin-2 .layui-nav-tree .layui-nav-item > a:hover, +html .skin-2 .layui-nav .layui-nav-item .layui-nav-child dd:hover > a, +html .skin-2 .layui-tab-title li .layui-tab-close:hover, +html .skin-2 .dblclick-tips-box .layui-layer-content { + color: white !important; + background-color: #00C0F7 !important; +} + +html .skin-2 .dblclick-tips-box i.layui-layer-TipsB { + border-right-color: #00C0F7; +} + +html .skin-2 .layui-nav .layui-nav-itemed > a { + background-color: #1684af !important; +} + +/* skin0-2 */ +html .skin-2 .layui-nav .layui-nav-more, +html .skin-1 .layui-nav-tree .layui-nav-more, +html .skin-2 .layui-nav-tree .layui-nav-more { + border-color: white transparent transparent; +} + +html .skin-2 .layui-nav .layui-nav-mored, +html .skin-1 .layui-nav-itemed .layui-nav-more, +html .skin-2 .layui-nav-itemed .layui-nav-more { + border-color: transparent transparent white; +} +.layui-layout-admin .layui-body{ + bottom: 0px; +} +.actions{ + color: #FFF; +} +/* tools */ +.fl { + float: left; +} + +.fr { + float: right; +} + +.none { + display: none; +} + +.block { + display: block; +} + +.tc { + text-align: center; +} + +.max-auto { + max-height: 450px; + overflow-y: auto; +} + +/* layui css cover */ +html body .layui-nav .layui-nav-bar { + opacity: 0 !important; + overflow: hidden !important; +} + +.layui-nav .layui-this:after, .layui-nav-bar, .layui-nav-tree .layui-nav-itemed:after { + background-color: transparent; +} + +.my-body .layui-tab-card > .layui-tab-title li { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.layui-layer-tips .layui-layer-content { + padding: 5px; +} + +/* media */ +@media screen and (max-width: 1023px) { + .my-header ul.layui-nav, .my-header-btn, .my-side, .layui-field-title, .my-btn-box .fr { + display: none; + } + + .layui-side-scroll { + width: 170px; + } + + body div.my-mobile { + background: #282b33; + } + + body div.my-mobile .layui-layer-content { + overflow-x: hidden; + } + + .my-header ul.my-header-user-nav { + display: inline-block; + padding-left: 0; + padding-right: 10px; + } + + .my-header ul.my-header-user-nav a { + padding: 0 10px; + } + + .my-header ul.my-header-user-nav:last-child a:first-child { + padding-right: 20px; + } + + .my-side, .layui-nav-tree, .my-btn-box input[type='text'] { + width: 150px; + } + + .my-body { + left: 0; + width: 100%; + overflow-x: auto; + } + + .my-body iframe { + width: 100%; + } + + select { + background: white; + } + + .layui-layout-admin .layui-footer { + left: 0; + } +} + +@media screen and ( max-width: 450px) { + .my-header ul.my-header-user-nav li a.pay { + display: none; + } +} + +#home{ + padding: 20px; + height: 95%; + overflow: auto; +} +.site-title{ margin: 30px 0 20px;} +.site-title fieldset{border: none; padding: 0; border-top: 1px solid #eee;} +.site-title fieldset legend{margin-left: 20px; padding: 0 10px; font-size: 22px; font-weight: 300;} + +.site-doc-icon{margin-bottom: 50px; font-size: 0;} +.site-doc-icon li{display: inline-block; vertical-align: middle; width: 127px; height: 80px; line-height: 25px; padding: 20px 0; margin-right: -1px; margin-bottom: -1px; border: 1px solid #e2e2e2; font-size: 14px; text-align: center; color: #666; transition: all .3s; -webkit-transition: all .3s;cursor: pointer} +.site-doc-anim li{height: auto;} +.site-doc-icon li .layui-icon{display: inline-block; font-size: 36px;} + +.site-doc-icon li .doc-icon-name, +.site-doc-icon li .doc-icon-code{color: #c2c2c2;} +.site-doc-icon li .doc-icon-fontclass{height: 40px; line-height: 20px; padding: 0 5px; font-size: 13px; color: #333; } +.site-doc-icon li:hover{background-color: #f2f2f2; color: #000;} \ No newline at end of file diff --git a/static/admin/simpleui/static/image/bg.png b/static/admin/simpleui/static/image/bg.png new file mode 100644 index 0000000000000000000000000000000000000000..3c598b02ef705cd0e0d7bf5bc38a9f33b825dadb GIT binary patch literal 5932 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 literal 0 HcmV?d00001 diff --git a/static/admin/simpleui/static/image/code.png b/static/admin/simpleui/static/image/code.png new file mode 100644 index 0000000000000000000000000000000000000000..e7ca1e1ebe1b3b502ec45d7d70a9af85573d99a9 GIT binary patch literal 2108 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 IM6N<$f*CM=0{{R3 literal 0 HcmV?d00001 diff --git a/static/admin/simpleui/static/image/wx.png b/static/admin/simpleui/static/image/wx.png new file mode 100644 index 0000000000000000000000000000000000000000..eddc0ea79a234e0b8af25c8082b33a9851173b85 GIT binary patch literal 39482 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 literal 0 HcmV?d00001 diff --git a/static/admin/simpleui/static/image/zfb.png b/static/admin/simpleui/static/image/zfb.png new file mode 100644 index 0000000000000000000000000000000000000000..58e9dd26b2deca0b1b9b141827c16f63b01d17c2 GIT binary patch literal 25040 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 F{{cM=BANgI literal 0 HcmV?d00001 diff --git a/static/admin/simpleui/static/js/vip_comm.js b/static/admin/simpleui/static/js/vip_comm.js new file mode 100644 index 0000000..ee143cf --- /dev/null +++ b/static/admin/simpleui/static/js/vip_comm.js @@ -0,0 +1,325 @@ +/** + * @name: vip-admin 后台模板主入口 + * @author: 随丶 + */ + +// 配置 +layui.config({ + base: './frame/static/js/' // 模块目录 +}).extend({ // 模块别名 + // vip_nav: 'vip_nav' + // , + vip_tab: 'vip_tab' + , vip_table: 'vip_table' +}); + +// 主入口方法 +layui.use(['layer', 'element', 'util'], function () { + + // 操作对象 + var device = layui.device() + , element = layui.element + , layer = layui.layer + , util = layui.util + , $ = layui.jquery + , cardIdx = 0 + , cardLayId = 0 + , side = $('.my-side') + , body = $('.my-body') + , footer = $('.my-footer'); + + //阻止IE7以下访问 + if (device.ie && device.ie < 8) { + layer.alert('如果您非得使用ie浏览vip-admin 后台模板,那么请使用ie8+'); + } + + // 导航栏收缩 + function navHide(t, st) { + var time = t ? t : 50; + st ? localStorage.log = 1 : localStorage.log = 0; + side.animate({'left': -200}, time); + body.animate({'left': 0}, time); + footer.animate({'left': 0}, time); + } + + // 导航栏展开 + function navShow(t, st) { + var time = t ? t : 50; + st ? localStorage.log = 0 : localStorage.log = 1; + side.animate({'left': 0}, time); + body.animate({'left': 200}, time); + footer.animate({'left': 200}, time); + } + + // 监听导航栏收缩 + $('.btn-nav').on('click', function () { + if (localStorage.log == 0) { + navShow(50); + } else { + navHide(50); + } + }); + + // 根据导航栏text获取lay-id + function getTitleId(card, title) { + var id = -1; + $(document).find(".layui-tab[lay-filter=" + card + "] ul li").each(function () { + if (title === $(this).find('span').html()) { + id = $(this).attr('lay-id'); + } + }); + return id; + } + + // 添加TAB选项卡 + window.addTab = function (elem, tit, url) { + + var card = 'card'; // 选项卡对象 + + var title = elem; + if (typeof(elem) != 'string') { + title = tit ? tit : elem.children('a').html(); // 导航栏text + } + var src = url ? url : elem.children('a').attr('href-url'); // 导航栏跳转URL + var id = new Date().getTime(); // ID + var flag = getTitleId(card, title); // 是否有该选项卡存在 + // 大于0就是有该选项卡了 + if (flag > 0) { + id = flag; + } else { + if (src) { + //新增 + element.tabAdd(card, { + title: '' + title + '' + , content: '' + , id: id + }); + // 关闭弹窗 + layer.closeAll(); + } + } + // 切换相应的ID tab + element.tabChange(card, id); + // 提示信息 + // layer.msg(title); + }; + + // 监听顶部左侧导航 + element.on('nav(side-top-left)', function (elem) { + // 添加tab方法 + window.addTab(elem); + }); + + // 监听顶部右侧导航 + element.on('nav(side-top-right)', function (elem) { + // 修改skin + if ($(this).attr('data-skin')) { + localStorage.skin = $(this).attr('data-skin'); + skin(); + } else { + // 添加tab方法 + window.addTab(elem); + } + }); + + // 监听导航(side-main)点击切换页面 + element.on('nav(side-main)', function (elem) { + // 添加tab方法 + window.addTab(elem); + }); + + // 删除选项卡 + window.delTab = function (layId) { + // 删除 + element.tabDelete('card', layId); + }; + + // 删除所有选项卡 + window.delAllTab = function () { + // 选项卡对象 + layui.each($('.my-body .layui-tab-title > li'), function (k, v) { + var layId = $(v).attr('lay-id'); + if (layId > 1) { + // 删除 + element.tabDelete('card', layId); + } + }); + }; + + // 获取当前选中选项卡lay-id + window.getThisTabID = function () { + // 当前选中的选项卡id + return $(document).find('body .my-body .layui-tab-card > .layui-tab-title .layui-this').attr('lay-id'); + }; + + // 双击关闭相应选项卡 + $(document).on('dblclick', '.my-body .layui-tab-card > .layui-tab-title li', function () { + // 欢迎页面以外,删除选项卡 + if ($(this).index() > 0) { + element.tabDelete('card', $(this).attr('lay-id')); + } else { + layer.msg('欢迎页面不能关闭') + } + }); + + // 选项卡右键事件阻止 + $(document).on("contextmenu", '.my-body .layui-tab-card > .layui-tab-title li', function () { + return false; + }); + + // 选项卡右键事件 + $(document).on("mousedown", '.my-body .layui-tab-card > .layui-tab-title li', function (e) { + // 判断是右键点击事件并且不是欢迎页面选项卡 + if (3 == e.which && $(this).index() > 0) { + // 赋值 + cardIdx = $(this).index(); + cardLayId = $(this).attr('lay-id'); + console.log('lay-id:' + cardLayId); + // 选择框 + layer.tips($('.my-dblclick-box').html(), $(this), { + skin: 'dblclick-tips-box', + tips: 3, + time: false + }); + } + }); + + // 点击body关闭tips + $(document).on('click', 'html', function () { + layer.closeAll('tips'); + }); + + // 右键提示框菜单操作-刷新页面 + $(document).on('click', '.card-refresh', function () { + // 窗体对象 + var ifr = $(document).find('.my-body .layui-tab-content .layui-tab-item iframe').eq(cardIdx-1); + // 刷新当前页 + ifr.attr('src', ifr.attr('src')); + // 切换到当前选项卡 + element.tabChange('card', cardLayId); + }); + + // 右键提示框菜单操作-关闭页面 + $(document).on('click', '.card-close', function () { + // 删除 + window.delTab(cardLayId); + }); + + // 右键提示框菜单操作-关闭所有页面 + $(document).on('click', '.card-close-all', function () { + // 删除 + window.delAllTab(); + }); + + // 打赏 + $('.pay').on('click', function () { + layer.open({ + type: 1, + title: false, // 标题不显示 + closeBtn: false, // 关闭按钮不显示 + shadeClose: true, // 点击遮罩关闭 + area: ['auto', 'auto'], // 宽高 + content: $('.my-pay-box') // 弹出内容 + }); + }); + + // 皮肤 + function skin() { + var skin = localStorage.skin ? localStorage.skin : 0; + var body = $('body'); + body.removeClass('skin-0'); + body.removeClass('skin-1'); + body.removeClass('skin-2'); + body.addClass('skin-' + skin); + } + + // 工具 + function _util() { + var bar = $('.layui-fixbar'); + // 分辨率小于1023 使用内部工具组件 + if ($(window).width() < 1023) { + util.fixbar({ + bar1: '' + , css: {left: 10, bottom: 54} + , click: function (type) { + if (type === 'bar1') { + //iframe层 + layer.open({ + type: 1, // 类型 + title: false, // 标题 + offset: 'l', // 定位 左边 + closeBtn: 0, // 关闭按钮 + anim: 0, // 动画 + shadeClose: true, // 点击遮罩关闭 + shade: 0.8, // 半透明 + area: ['150px', '100%'], // 区域 + skin: 'my-mobile', // 样式 + content: $('body .my-side').html() // 内容 + }); + } + element.init(); + } + }); + bar.removeClass('layui-hide'); + bar.addClass('layui-show'); + } else { + bar.removeClass('layui-show'); + bar.addClass('layui-hide'); + } + }; + + // 自适应 + $(window).on('resize', function () { + if ($(window).width() > 1023) { + navShow(10); + } else { + navHide(10); + } + _util(); + }); + + // 监听控制content高度 + function init() { + // 起始判断-收缩/展开 + if (!localStorage.log) { + if ($(window).width() > 1023) { + if (localStorage.log == 0) { + navHide(10); + } else { + navShow(10); + } + } else { + navHide(10); + } + } else { + if (localStorage.log == 0) { + navHide(10); + } else { + navShow(10); + } + } + // 工具 + _util(); + // skin + skin(); + // 选项卡高度 + cardTitleHeight = $(document).find(".layui-tab[lay-filter='card'] ul.layui-tab-title").height(); + // 需要减去的高度 + height = $(window).height() - $('.layui-header').height() - cardTitleHeight;// - $('.layui-footer').height(); + // 设置高度 + $(document).find(".layui-tab[lay-filter='card'] div.layui-tab-content").height(height - 2); + } + + // 初始化 + init(); + + window.processForm=function (obj) { + $(obj).find("*[name]").each(function () { + var val = $(this).val(); + if(val==""){ + $(this).removeAttr('name'); + } + }); + return false; + } +}); \ No newline at end of file diff --git a/static/admin/simpleui/static/js/vip_nav.js b/static/admin/simpleui/static/js/vip_nav.js new file mode 100644 index 0000000..c994ecf --- /dev/null +++ b/static/admin/simpleui/static/js/vip_nav.js @@ -0,0 +1,73 @@ +/** + * Created by Administrator on 2017/5/20. + * @name: vip-admin 后台模板 菜单navJS + * @author: 随丶 + */ +layui.define(['layer', 'element'], function (exports) { + // 操作对象 + var layer = layui.layer + , element = layui.element + , $ = layui.jquery; + + // 封装方法 + var mod = { + // 添加 HTMl + addHtml: function (addr, obj, treeStatus, data) { + // 请求数据 + $.get(addr, data, function (res) { + var view = ""; + if (res.data) { + $(res.data).each(function (k, v) { + v.subset && treeStatus ? view += '
    • ' : view += '
    • '; + if (v.subset) { + view += '' + v.icon + '' + v.text + '
      '; + $(v.subset).each(function (ko, vo) { + view += '
      '; + if(vo.target){ + view += ''; + }else{ + view += ''; + } + view += '' + vo.icon + '' + vo.text + '
      '; + }); + view += '
      '; + } else { + if (v.target) { + view += ''; + } else { + view += ''; + } + view += '' + v.icon + '' + v.text + ''; + } + view += '
    • '; + }); + } else { + layer.msg('接受的菜单数据不符合规范,无法解析'); + } + // 添加到 HTML + $(document).find(".layui-nav[lay-filter=" + obj + "]").html(view); + // 更新渲染 + element.init(); + },'json'); + } + // 左侧主体菜单 [请求地址,过滤ID,是否展开,携带参数] + , main: function (addr, obj, treeStatus, data) { + // 添加HTML + this.addHtml(addr, obj, treeStatus, data); + } + // 顶部左侧菜单 [请求地址,过滤ID,是否展开,携带参数] + , top_left: function (addr, obj, treeStatus, data) { + // 添加HTML + this.addHtml(addr, obj, treeStatus, data); + } + /*// 顶部右侧菜单 + ,top_right: function(){ + + }*/ + }; + + // 输出 + exports('vip_nav', mod); +}); + + diff --git a/static/admin/simpleui/static/js/vip_tab.js b/static/admin/simpleui/static/js/vip_tab.js new file mode 100644 index 0000000..de77608 --- /dev/null +++ b/static/admin/simpleui/static/js/vip_tab.js @@ -0,0 +1,29 @@ +/** + * Created by Administrator on 2017/05/20 1582. + * @name: vip-admin 后台模板 选项卡JS操作 + * @author: 随丶 + */ +layui.define('layer', function (exports) { + + // 封装方法 + var mod = { + // 添加选项卡 [操作对象,标签标题,url地址] + add: function (elem, tit, url) { + parent.addTab(elem, tit, url); + } + // 获取当前选中的选项卡的lay-id + ,getThisTabId: function () { + // 获取并返回 id + return parent.getThisTabID(); + } + // 删除选项卡[标签lay-id] + ,del: function (id) { + parent.delTab(id); + } + }; + + // 输出 + exports('vip_tab', mod); +}); + + diff --git a/static/admin/simpleui/static/js/vip_table.js b/static/admin/simpleui/static/js/vip_table.js new file mode 100644 index 0000000..19b444c --- /dev/null +++ b/static/admin/simpleui/static/js/vip_table.js @@ -0,0 +1,115 @@ +/** + * Created by Administrator on 2017/08/25. + * @name: vip-admin 后台模板 表格JS功能 + * @author: 随丶 + */ +layui.define(['layer', 'element'], function (exports) { + + var $ = layui.jquery; + + // 封装方法 + var mod = { + // 删除公共方法 deleteAll(ids,请求的url,操作成功跳转url,操作失败跳转url) + deleteAll: function (ids, url, sUrl, eUrl) { + // ids不能为空 + if (ids == null || ids == '') { + layer.msg('请选择要删除的数据', {time: 2000}); + return false; + } else { + layer.confirm('确认删除选中数据?', { + title: '删除', + btn: ['确认', '取消'] // 按钮 + }, function (index, layero) { + // 确认 + $.post(url, {ids: ids}, function (res) { + // 大于0表示删除成功 + if (res.status > 0) { + // 提示信息并跳转 + layer.msg(res.msg, {time: 1500}, function () { + location.href = sUrl; + }) + } else { + // 提示信息并跳转 + layer.msg(res.msg, {time: 1500}, function () { + location.href = eUrl; + }) + } + }); + }, function (index) { + // 关闭 + layer.close(index); + }); + } + } + // 转换时间戳为日期时间(时间戳,是否只显示年月日时分,8) + ,unixToDate: function (unixTime, isFull, timeZone) { + if (unixTime == '' || unixTime == null) { + return ''; + } + if (typeof (timeZone) == 'number') { + unixTime = parseInt(unixTime) + parseInt(timeZone) * 60 * 60; + } + var time = new Date(unixTime * 1000); + var ymdhis = ""; + var year, month, date, hours, minutes, seconds; + if (time.getUTCFullYear() < 10) { + year = '0' + time.getUTCFullYear(); + } else { + year = time.getUTCFullYear(); + } + if ((time.getUTCMonth() + 1) < 10) { + month = '0' + (time.getUTCMonth() + 1); + } else { + month = (time.getUTCMonth() + 1); + } + if (time.getUTCDate() < 10) { + date = '0' + time.getUTCDate(); + } else { + date = time.getUTCDate(); + } + ymdhis += year + "-"; + ymdhis += month + "-"; + ymdhis += date; + if (isFull === true) { + if (time.getUTCHours() < 10) { + hours = '0' + time.getUTCHours(); + } else { + hours = time.getUTCHours(); + } + if (time.getUTCMinutes() < 10) { + minutes = '0' + time.getUTCMinutes(); + } else { + minutes = time.getUTCMinutes(); + } + if (time.getUTCSeconds() < 10) { + seconds = '0' + time.getUTCSeconds(); + } else { + seconds = time.getUTCSeconds(); + } + ymdhis += " " + hours + ":"; + ymdhis += minutes; + // ymdhis += seconds; + } + return ymdhis; + } + // 批量删除 返回需要的 ids + ,getIds: function (o, str) { + var obj = o.find('tbody tr td:first-child input[type="checkbox"]:checked'); + var list = ''; + obj.each(function (index, elem) { + list += $(elem).attr(str) + ','; + }); + // 去除最后一位逗号 + list = list.substr(0, (list.length - 1)); + return list; + } + // 获取高度 + ,getFullHeight: function(){ + return $(window).height() - ( $('.my-btn-box').outerHeight(true) ? $('.my-btn-box').outerHeight(true) + 35 : 40 ); + } + }; + + // 输出 + exports('vip_table', mod); +}); +