From e057d613b9380b47a113c43b6fd39e2bf47defa0 Mon Sep 17 00:00:00 2001 From: lxyer <237809796@qq.com> Date: Thu, 7 Mar 2019 10:24:29 +0800 Subject: [PATCH] . --- apidoc.html | 110 + apidoc.json | 552 + conf/application.xml | 25 + conf/config.txt | 26 + conf/logging.properties | 24 + conf/persistence.xml | 14 + pom.xml | 50 +- qtask/.gitignore | 12 - qtask/pom.xml | 39 - qtask/src/main/java/net/tccn/base/Kv.java | 21 - .../src/main/java/net/tccn/qtask/QTaskEs.java | 16 - readme.md | 8 + root/ddl_export.html | 167 + root/favicon.ico | Bin 0 -> 2462 bytes root/index.html | 164 + root/list.html | 321 + root/meta.html | 511 + root/metadata/dataList.html | 262 + root/metadata/metaLinK.html | 29 + root/metadata/metaService.html | 614 + root/metadata/metatable/list.html | 110 + root/metadata/metatable/metaTable.html | 573 + root/plat/db.html | 229 + root/plat/dev.html | 5 + root/plat/index.html | 144 + root/qtask/abc.html | 24 + root/qtask/ddl.html | 143 + root/qtask/debug.html | 131 + root/qtask/list.html | 237 + root/res/css/red-kit.css | 137 + root/res/css/zui-theme-black.css | 1310 ++ root/res/css/zui-theme.css | 1310 ++ root/res/img/bg.jpg | Bin 0 -> 23911 bytes root/res/js/red.js | 141 + root/res/zui/css/zui-theme.css | 1347 ++ root/res/zui/css/zui-theme.min.css | 6 + root/res/zui/css/zui.css | 8714 +++++++++++++ root/res/zui/css/zui.lite.css | 6763 ++++++++++ root/res/zui/css/zui.lite.min.css | 6 + root/res/zui/css/zui.min.css | 6 + root/res/zui/fonts/zenicon.eot | Bin 0 -> 85080 bytes root/res/zui/fonts/zenicon.svg | 375 + root/res/zui/fonts/zenicon.ttf | Bin 0 -> 84916 bytes root/res/zui/fonts/zenicon.woff | Bin 0 -> 84992 bytes root/res/zui/js/zui.js | 6451 ++++++++++ root/res/zui/js/zui.lite.js | 3439 +++++ root/res/zui/js/zui.lite.min.js | 15 + root/res/zui/js/zui.min.js | 16 + root/res/zui/lib/array/zui.array.js | 243 + root/res/zui/lib/array/zui.array.min.js | 7 + root/res/zui/lib/board/zui.board.css | 104 + root/res/zui/lib/board/zui.board.js | 128 + root/res/zui/lib/board/zui.board.min.css | 6 + root/res/zui/lib/board/zui.board.min.js | 7 + root/res/zui/lib/bootbox/bootbox.css | 3 + root/res/zui/lib/bootbox/bootbox.js | 847 ++ root/res/zui/lib/bootbox/bootbox.min.css | 1 + root/res/zui/lib/bootbox/bootbox.min.js | 2 + root/res/zui/lib/calendar/zui.calendar.css | 156 + root/res/zui/lib/calendar/zui.calendar.js | 705 + .../res/zui/lib/calendar/zui.calendar.min.css | 6 + root/res/zui/lib/calendar/zui.calendar.min.js | 7 + root/res/zui/lib/chart/zui.chart.js | 3267 +++++ root/res/zui/lib/chart/zui.chart.min.js | 14 + root/res/zui/lib/chosen/chosen.css | 436 + root/res/zui/lib/chosen/chosen.js | 1313 ++ root/res/zui/lib/chosen/chosen.min.css | 7 + root/res/zui/lib/chosen/chosen.min.js | 11 + .../zui/lib/chosenicons/zui.chosenicons.css | 27 + .../zui/lib/chosenicons/zui.chosenicons.js | 160 + .../lib/chosenicons/zui.chosenicons.min.css | 6 + .../lib/chosenicons/zui.chosenicons.min.js | 7 + root/res/zui/lib/clipboard/clipboard.js | 745 ++ root/res/zui/lib/clipboard/clipboard.min.js | 7 + .../zui/lib/colorpicker/zui.colorpicker.css | 71 + .../zui/lib/colorpicker/zui.colorpicker.js | 230 + .../lib/colorpicker/zui.colorpicker.min.css | 6 + .../lib/colorpicker/zui.colorpicker.min.js | 7 + root/res/zui/lib/colorset.js/zui.colorset.js | 72 + .../zui/lib/colorset.js/zui.colorset.min.js | 13 + root/res/zui/lib/dashboard/zui.dashboard.css | 288 + root/res/zui/lib/dashboard/zui.dashboard.js | 529 + .../zui/lib/dashboard/zui.dashboard.min.css | 6 + .../zui/lib/dashboard/zui.dashboard.min.js | 7 + root/res/zui/lib/datagrid/zui.datagrid.css | 272 + root/res/zui/lib/datagrid/zui.datagrid.js | 1825 +++ .../res/zui/lib/datagrid/zui.datagrid.min.css | 6 + root/res/zui/lib/datagrid/zui.datagrid.min.js | 14 + root/res/zui/lib/datatable/zui.datatable.css | 200 + root/res/zui/lib/datatable/zui.datatable.js | 948 ++ .../zui/lib/datatable/zui.datatable.min.css | 6 + .../zui/lib/datatable/zui.datatable.min.js | 7 + .../zui/lib/datetimepicker/datetimepicker.css | 239 + .../zui/lib/datetimepicker/datetimepicker.js | 1710 +++ .../lib/datetimepicker/datetimepicker.min.css | 5 + .../lib/datetimepicker/datetimepicker.min.js | 7 + root/res/zui/lib/hotkey/hotkey.js | 179 + root/res/zui/lib/hotkey/hotkey.min.js | 12 + root/res/zui/lib/ieonly/excanvas.js | 14 + root/res/zui/lib/ieonly/html5shiv.js | 8 + root/res/zui/lib/ieonly/respond.js | 5 + root/res/zui/lib/imgcutter/zui.imgcutter.css | 120 + root/res/zui/lib/imgcutter/zui.imgcutter.js | 280 + .../zui/lib/imgcutter/zui.imgcutter.min.css | 6 + .../zui/lib/imgcutter/zui.imgcutter.min.js | 7 + root/res/zui/lib/imgready/imgready.js | 105 + root/res/zui/lib/imgready/imgready.min.js | 2 + root/res/zui/lib/jquery/jquery.js | 4 + root/res/zui/lib/kindeditor/README.md | 3 + root/res/zui/lib/kindeditor/kindeditor.css | 1100 ++ root/res/zui/lib/kindeditor/kindeditor.js | 10652 ++++++++++++++++ .../res/zui/lib/kindeditor/kindeditor.min.css | 1 + root/res/zui/lib/kindeditor/kindeditor.min.js | 6 + root/res/zui/lib/kindeditor/lang/en.js | 232 + root/res/zui/lib/kindeditor/lang/zh_CN.js | 236 + root/res/zui/lib/kindeditor/lang/zh_TW.js | 235 + root/res/zui/lib/kindeditor/plugins.zip | Bin 0 -> 361228 bytes .../lib/kindeditor/themes/default/default.png | Bin 0 -> 6955 bytes root/res/zui/lib/migrate1.2/zui.migrate1.2.js | 44 + .../zui/lib/migrate1.2/zui.migrate1.2.min.js | 7 + root/res/zui/lib/prettify/lang-apollo.js | 2 + root/res/zui/lib/prettify/lang-basic.js | 3 + root/res/zui/lib/prettify/lang-clj.js | 18 + root/res/zui/lib/prettify/lang-css.js | 2 + root/res/zui/lib/prettify/lang-dart.js | 3 + root/res/zui/lib/prettify/lang-erlang.js | 2 + root/res/zui/lib/prettify/lang-go.js | 1 + root/res/zui/lib/prettify/lang-hs.js | 2 + root/res/zui/lib/prettify/lang-lisp.js | 3 + root/res/zui/lib/prettify/lang-llvm.js | 1 + root/res/zui/lib/prettify/lang-lua.js | 2 + root/res/zui/lib/prettify/lang-matlab.js | 6 + root/res/zui/lib/prettify/lang-ml.js | 2 + root/res/zui/lib/prettify/lang-mumps.js | 2 + root/res/zui/lib/prettify/lang-n.js | 4 + root/res/zui/lib/prettify/lang-pascal.js | 3 + root/res/zui/lib/prettify/lang-proto.js | 1 + root/res/zui/lib/prettify/lang-r.js | 2 + root/res/zui/lib/prettify/lang-rd.js | 1 + root/res/zui/lib/prettify/lang-scala.js | 2 + root/res/zui/lib/prettify/lang-sql.js | 2 + root/res/zui/lib/prettify/lang-tcl.js | 3 + root/res/zui/lib/prettify/lang-tex.js | 1 + root/res/zui/lib/prettify/lang-vb.js | 2 + root/res/zui/lib/prettify/lang-vhdl.js | 3 + root/res/zui/lib/prettify/lang-wiki.js | 2 + root/res/zui/lib/prettify/lang-xq.js | 3 + root/res/zui/lib/prettify/lang-yaml.js | 2 + root/res/zui/lib/prettify/prettify.css | 2 + root/res/zui/lib/prettify/prettify.js | 31 + root/res/zui/lib/prettify/run_prettify.js | 35 + root/res/zui/lib/selectable/zui.selectable.js | 318 + .../zui/lib/selectable/zui.selectable.min.js | 7 + root/res/zui/lib/sortable/zui.sortable.js | 185 + root/res/zui/lib/sortable/zui.sortable.min.js | 7 + root/res/zui/lib/tabs/zui.tabs.css | 146 + root/res/zui/lib/tabs/zui.tabs.js | 488 + root/res/zui/lib/tabs/zui.tabs.min.css | 6 + root/res/zui/lib/tabs/zui.tabs.min.js | 7 + root/res/zui/lib/treemap/zui.treemap.css | 120 + root/res/zui/lib/treemap/zui.treemap.js | 415 + root/res/zui/lib/treemap/zui.treemap.min.css | 6 + root/res/zui/lib/treemap/zui.treemap.min.js | 7 + root/res/zui/lib/ueditor/ueditor.css | 1604 +++ root/res/zui/lib/ueditor/ueditor.min.css | 1 + root/res/zui/lib/uploader/Moxie.swf | Bin 0 -> 27517 bytes root/res/zui/lib/uploader/Moxie.xap | Bin 0 -> 65757 bytes root/res/zui/lib/uploader/zui.uploader.css | 615 + root/res/zui/lib/uploader/zui.uploader.js | 934 ++ .../res/zui/lib/uploader/zui.uploader.min.css | 6 + root/res/zui/lib/uploader/zui.uploader.min.js | 23 + root/user/login.html | 127 + src/main/java/net/tccn/base/JBean.java | 78 + src/main/java/net/tccn/base/Kv.java | 156 + src/main/java/net/tccn/base/PageBean.java | 39 + .../net/tccn/base/arango/ArangoSource.java | 290 + src/main/java/net/tccn/base/arango/Doc.java | 251 + .../java/net/tccn/base/arango/Source.java | 15 + src/main/java/net/tccn/dbq/DbPlat.java | 98 + src/main/java/net/tccn/dbq/Field.java | 99 + src/main/java/net/tccn/dbq/fbean/DbType.java | 8 + src/main/java/net/tccn/dbq/fbean/FBean.java | 73 + src/main/java/net/tccn/dbq/fbean/Filter.java | 89 + .../java/net/tccn/dbq/fbean/FilterType.java | 81 + src/main/java/net/tccn/dbq/fbean/Limit.java | 44 + src/main/java/net/tccn/dbq/fbean/Order.java | 58 + .../java/net/tccn/dbq/fbean/ParseArango.java | 29 + src/main/java/net/tccn/dbq/fbean/ParseEs.java | 26 + .../java/net/tccn/dbq/fbean/ParseMysql.java | 118 + src/main/java/net/tccn/dbq/fbean/Parser.java | 31 + src/main/java/net/tccn/dbq/jdbc/Column.java | 55 + .../java/net/tccn/dbq/jdbc/JdbcAccount.java | 72 + .../java/net/tccn/dbq/jdbc/JdbcService.java | 151 + .../java/net/tccn/dbq/jdbc/JdbcSource.java | 209 + src/main/java/net/tccn/dbq/jdbc/Table.java | 72 + src/main/java/net/tccn/dbq/qtask/Qtask.java | 105 + src/main/java/net/tccn/dbq/qtask/SysPlat.java | 39 + src/main/java/net/tccn/meta/MetaKit.java | 236 + src/main/java/net/tccn/meta/MetaLink.java | 35 + src/main/java/net/tccn/meta/MetaService.java | 103 + src/main/java/net/tccn/meta/MetaTable.java | 75 + .../main/java/net/tccn/qtask}/E.java | 2 +- .../main/java/net/tccn/qtask}/QRuner.java | 11 +- .../main/java/net/tccn/qtask/QTask.java | 2 - .../java/net/tccn/qtask/impl}/QTaskAbs.java | 5 +- .../java/net/tccn/qtask/impl/QTaskEs.java | 24 + .../java/net/tccn/qtask/impl}/QTaskHttp.java | 31 +- .../net/tccn/qtask/impl}/QTaskMethod.java | 5 +- .../java/net/tccn/qtask/impl}/QTaskMysql.java | 5 +- .../java/net/tccn/service/BaseService.java | 88 + .../java/net/tccn/service/BaseServlet.java | 79 + .../net/tccn/service/MetadataService.java | 181 + .../java/net/tccn/service/QtaskService.java | 122 + {qtask/src => src}/test/java/RunTest.java | 12 +- {qtask/src => src}/test/java/User.java | 18 + 215 files changed, 70917 insertions(+), 118 deletions(-) create mode 100644 apidoc.html create mode 100644 apidoc.json create mode 100644 conf/application.xml create mode 100644 conf/config.txt create mode 100644 conf/logging.properties create mode 100644 conf/persistence.xml delete mode 100644 qtask/.gitignore delete mode 100644 qtask/pom.xml delete mode 100644 qtask/src/main/java/net/tccn/base/Kv.java delete mode 100644 qtask/src/main/java/net/tccn/qtask/QTaskEs.java create mode 100644 readme.md create mode 100644 root/ddl_export.html create mode 100644 root/favicon.ico create mode 100644 root/index.html create mode 100644 root/list.html create mode 100644 root/meta.html create mode 100644 root/metadata/dataList.html create mode 100644 root/metadata/metaLinK.html create mode 100644 root/metadata/metaService.html create mode 100644 root/metadata/metatable/list.html create mode 100644 root/metadata/metatable/metaTable.html create mode 100644 root/plat/db.html create mode 100644 root/plat/dev.html create mode 100644 root/plat/index.html create mode 100644 root/qtask/abc.html create mode 100644 root/qtask/ddl.html create mode 100644 root/qtask/debug.html create mode 100644 root/qtask/list.html create mode 100644 root/res/css/red-kit.css create mode 100644 root/res/css/zui-theme-black.css create mode 100644 root/res/css/zui-theme.css create mode 100644 root/res/img/bg.jpg create mode 100644 root/res/js/red.js create mode 100644 root/res/zui/css/zui-theme.css create mode 100644 root/res/zui/css/zui-theme.min.css create mode 100644 root/res/zui/css/zui.css create mode 100644 root/res/zui/css/zui.lite.css create mode 100644 root/res/zui/css/zui.lite.min.css create mode 100644 root/res/zui/css/zui.min.css create mode 100644 root/res/zui/fonts/zenicon.eot create mode 100644 root/res/zui/fonts/zenicon.svg create mode 100644 root/res/zui/fonts/zenicon.ttf create mode 100644 root/res/zui/fonts/zenicon.woff create mode 100644 root/res/zui/js/zui.js create mode 100644 root/res/zui/js/zui.lite.js create mode 100644 root/res/zui/js/zui.lite.min.js create mode 100644 root/res/zui/js/zui.min.js create mode 100644 root/res/zui/lib/array/zui.array.js create mode 100644 root/res/zui/lib/array/zui.array.min.js create mode 100644 root/res/zui/lib/board/zui.board.css create mode 100644 root/res/zui/lib/board/zui.board.js create mode 100644 root/res/zui/lib/board/zui.board.min.css create mode 100644 root/res/zui/lib/board/zui.board.min.js create mode 100644 root/res/zui/lib/bootbox/bootbox.css create mode 100644 root/res/zui/lib/bootbox/bootbox.js create mode 100644 root/res/zui/lib/bootbox/bootbox.min.css create mode 100644 root/res/zui/lib/bootbox/bootbox.min.js create mode 100644 root/res/zui/lib/calendar/zui.calendar.css create mode 100644 root/res/zui/lib/calendar/zui.calendar.js create mode 100644 root/res/zui/lib/calendar/zui.calendar.min.css create mode 100644 root/res/zui/lib/calendar/zui.calendar.min.js create mode 100644 root/res/zui/lib/chart/zui.chart.js create mode 100644 root/res/zui/lib/chart/zui.chart.min.js create mode 100644 root/res/zui/lib/chosen/chosen.css create mode 100644 root/res/zui/lib/chosen/chosen.js create mode 100644 root/res/zui/lib/chosen/chosen.min.css create mode 100644 root/res/zui/lib/chosen/chosen.min.js create mode 100644 root/res/zui/lib/chosenicons/zui.chosenicons.css create mode 100644 root/res/zui/lib/chosenicons/zui.chosenicons.js create mode 100644 root/res/zui/lib/chosenicons/zui.chosenicons.min.css create mode 100644 root/res/zui/lib/chosenicons/zui.chosenicons.min.js create mode 100644 root/res/zui/lib/clipboard/clipboard.js create mode 100644 root/res/zui/lib/clipboard/clipboard.min.js create mode 100644 root/res/zui/lib/colorpicker/zui.colorpicker.css create mode 100644 root/res/zui/lib/colorpicker/zui.colorpicker.js create mode 100644 root/res/zui/lib/colorpicker/zui.colorpicker.min.css create mode 100644 root/res/zui/lib/colorpicker/zui.colorpicker.min.js create mode 100644 root/res/zui/lib/colorset.js/zui.colorset.js create mode 100644 root/res/zui/lib/colorset.js/zui.colorset.min.js create mode 100644 root/res/zui/lib/dashboard/zui.dashboard.css create mode 100644 root/res/zui/lib/dashboard/zui.dashboard.js create mode 100644 root/res/zui/lib/dashboard/zui.dashboard.min.css create mode 100644 root/res/zui/lib/dashboard/zui.dashboard.min.js create mode 100644 root/res/zui/lib/datagrid/zui.datagrid.css create mode 100644 root/res/zui/lib/datagrid/zui.datagrid.js create mode 100644 root/res/zui/lib/datagrid/zui.datagrid.min.css create mode 100644 root/res/zui/lib/datagrid/zui.datagrid.min.js create mode 100644 root/res/zui/lib/datatable/zui.datatable.css create mode 100644 root/res/zui/lib/datatable/zui.datatable.js create mode 100644 root/res/zui/lib/datatable/zui.datatable.min.css create mode 100644 root/res/zui/lib/datatable/zui.datatable.min.js create mode 100644 root/res/zui/lib/datetimepicker/datetimepicker.css create mode 100644 root/res/zui/lib/datetimepicker/datetimepicker.js create mode 100644 root/res/zui/lib/datetimepicker/datetimepicker.min.css create mode 100644 root/res/zui/lib/datetimepicker/datetimepicker.min.js create mode 100644 root/res/zui/lib/hotkey/hotkey.js create mode 100644 root/res/zui/lib/hotkey/hotkey.min.js create mode 100644 root/res/zui/lib/ieonly/excanvas.js create mode 100644 root/res/zui/lib/ieonly/html5shiv.js create mode 100644 root/res/zui/lib/ieonly/respond.js create mode 100644 root/res/zui/lib/imgcutter/zui.imgcutter.css create mode 100644 root/res/zui/lib/imgcutter/zui.imgcutter.js create mode 100644 root/res/zui/lib/imgcutter/zui.imgcutter.min.css create mode 100644 root/res/zui/lib/imgcutter/zui.imgcutter.min.js create mode 100644 root/res/zui/lib/imgready/imgready.js create mode 100644 root/res/zui/lib/imgready/imgready.min.js create mode 100644 root/res/zui/lib/jquery/jquery.js create mode 100644 root/res/zui/lib/kindeditor/README.md create mode 100644 root/res/zui/lib/kindeditor/kindeditor.css create mode 100644 root/res/zui/lib/kindeditor/kindeditor.js create mode 100644 root/res/zui/lib/kindeditor/kindeditor.min.css create mode 100644 root/res/zui/lib/kindeditor/kindeditor.min.js create mode 100644 root/res/zui/lib/kindeditor/lang/en.js create mode 100644 root/res/zui/lib/kindeditor/lang/zh_CN.js create mode 100644 root/res/zui/lib/kindeditor/lang/zh_TW.js create mode 100644 root/res/zui/lib/kindeditor/plugins.zip create mode 100644 root/res/zui/lib/kindeditor/themes/default/default.png create mode 100644 root/res/zui/lib/migrate1.2/zui.migrate1.2.js create mode 100644 root/res/zui/lib/migrate1.2/zui.migrate1.2.min.js create mode 100644 root/res/zui/lib/prettify/lang-apollo.js create mode 100644 root/res/zui/lib/prettify/lang-basic.js create mode 100644 root/res/zui/lib/prettify/lang-clj.js create mode 100644 root/res/zui/lib/prettify/lang-css.js create mode 100644 root/res/zui/lib/prettify/lang-dart.js create mode 100644 root/res/zui/lib/prettify/lang-erlang.js create mode 100644 root/res/zui/lib/prettify/lang-go.js create mode 100644 root/res/zui/lib/prettify/lang-hs.js create mode 100644 root/res/zui/lib/prettify/lang-lisp.js create mode 100644 root/res/zui/lib/prettify/lang-llvm.js create mode 100644 root/res/zui/lib/prettify/lang-lua.js create mode 100644 root/res/zui/lib/prettify/lang-matlab.js create mode 100644 root/res/zui/lib/prettify/lang-ml.js create mode 100644 root/res/zui/lib/prettify/lang-mumps.js create mode 100644 root/res/zui/lib/prettify/lang-n.js create mode 100644 root/res/zui/lib/prettify/lang-pascal.js create mode 100644 root/res/zui/lib/prettify/lang-proto.js create mode 100644 root/res/zui/lib/prettify/lang-r.js create mode 100644 root/res/zui/lib/prettify/lang-rd.js create mode 100644 root/res/zui/lib/prettify/lang-scala.js create mode 100644 root/res/zui/lib/prettify/lang-sql.js create mode 100644 root/res/zui/lib/prettify/lang-tcl.js create mode 100644 root/res/zui/lib/prettify/lang-tex.js create mode 100644 root/res/zui/lib/prettify/lang-vb.js create mode 100644 root/res/zui/lib/prettify/lang-vhdl.js create mode 100644 root/res/zui/lib/prettify/lang-wiki.js create mode 100644 root/res/zui/lib/prettify/lang-xq.js create mode 100644 root/res/zui/lib/prettify/lang-yaml.js create mode 100644 root/res/zui/lib/prettify/prettify.css create mode 100644 root/res/zui/lib/prettify/prettify.js create mode 100644 root/res/zui/lib/prettify/run_prettify.js create mode 100644 root/res/zui/lib/selectable/zui.selectable.js create mode 100644 root/res/zui/lib/selectable/zui.selectable.min.js create mode 100644 root/res/zui/lib/sortable/zui.sortable.js create mode 100644 root/res/zui/lib/sortable/zui.sortable.min.js create mode 100644 root/res/zui/lib/tabs/zui.tabs.css create mode 100644 root/res/zui/lib/tabs/zui.tabs.js create mode 100644 root/res/zui/lib/tabs/zui.tabs.min.css create mode 100644 root/res/zui/lib/tabs/zui.tabs.min.js create mode 100644 root/res/zui/lib/treemap/zui.treemap.css create mode 100644 root/res/zui/lib/treemap/zui.treemap.js create mode 100644 root/res/zui/lib/treemap/zui.treemap.min.css create mode 100644 root/res/zui/lib/treemap/zui.treemap.min.js create mode 100644 root/res/zui/lib/ueditor/ueditor.css create mode 100644 root/res/zui/lib/ueditor/ueditor.min.css create mode 100644 root/res/zui/lib/uploader/Moxie.swf create mode 100644 root/res/zui/lib/uploader/Moxie.xap create mode 100644 root/res/zui/lib/uploader/zui.uploader.css create mode 100644 root/res/zui/lib/uploader/zui.uploader.js create mode 100644 root/res/zui/lib/uploader/zui.uploader.min.css create mode 100644 root/res/zui/lib/uploader/zui.uploader.min.js create mode 100644 root/user/login.html create mode 100644 src/main/java/net/tccn/base/JBean.java create mode 100644 src/main/java/net/tccn/base/Kv.java create mode 100644 src/main/java/net/tccn/base/PageBean.java create mode 100644 src/main/java/net/tccn/base/arango/ArangoSource.java create mode 100644 src/main/java/net/tccn/base/arango/Doc.java create mode 100644 src/main/java/net/tccn/base/arango/Source.java create mode 100644 src/main/java/net/tccn/dbq/DbPlat.java create mode 100644 src/main/java/net/tccn/dbq/Field.java create mode 100644 src/main/java/net/tccn/dbq/fbean/DbType.java create mode 100644 src/main/java/net/tccn/dbq/fbean/FBean.java create mode 100644 src/main/java/net/tccn/dbq/fbean/Filter.java create mode 100644 src/main/java/net/tccn/dbq/fbean/FilterType.java create mode 100644 src/main/java/net/tccn/dbq/fbean/Limit.java create mode 100644 src/main/java/net/tccn/dbq/fbean/Order.java create mode 100644 src/main/java/net/tccn/dbq/fbean/ParseArango.java create mode 100644 src/main/java/net/tccn/dbq/fbean/ParseEs.java create mode 100644 src/main/java/net/tccn/dbq/fbean/ParseMysql.java create mode 100644 src/main/java/net/tccn/dbq/fbean/Parser.java create mode 100644 src/main/java/net/tccn/dbq/jdbc/Column.java create mode 100644 src/main/java/net/tccn/dbq/jdbc/JdbcAccount.java create mode 100644 src/main/java/net/tccn/dbq/jdbc/JdbcService.java create mode 100644 src/main/java/net/tccn/dbq/jdbc/JdbcSource.java create mode 100644 src/main/java/net/tccn/dbq/jdbc/Table.java create mode 100644 src/main/java/net/tccn/dbq/qtask/Qtask.java create mode 100644 src/main/java/net/tccn/dbq/qtask/SysPlat.java create mode 100644 src/main/java/net/tccn/meta/MetaKit.java create mode 100644 src/main/java/net/tccn/meta/MetaLink.java create mode 100644 src/main/java/net/tccn/meta/MetaService.java create mode 100644 src/main/java/net/tccn/meta/MetaTable.java rename {qtask/src/main/java/net/tccn => src/main/java/net/tccn/qtask}/E.java (97%) rename {qtask/src/main/java/net/tccn => src/main/java/net/tccn/qtask}/QRuner.java (60%) rename {qtask/src => src}/main/java/net/tccn/qtask/QTask.java (81%) rename {qtask/src/main/java/net/tccn/qtask => src/main/java/net/tccn/qtask/impl}/QTaskAbs.java (69%) create mode 100644 src/main/java/net/tccn/qtask/impl/QTaskEs.java rename {qtask/src/main/java/net/tccn/qtask => src/main/java/net/tccn/qtask/impl}/QTaskHttp.java (63%) rename {qtask/src/main/java/net/tccn/qtask => src/main/java/net/tccn/qtask/impl}/QTaskMethod.java (94%) rename {qtask/src/main/java/net/tccn/qtask => src/main/java/net/tccn/qtask/impl}/QTaskMysql.java (88%) create mode 100644 src/main/java/net/tccn/service/BaseService.java create mode 100644 src/main/java/net/tccn/service/BaseServlet.java create mode 100644 src/main/java/net/tccn/service/MetadataService.java create mode 100644 src/main/java/net/tccn/service/QtaskService.java rename {qtask/src => src}/test/java/RunTest.java (62%) rename {qtask/src => src}/test/java/User.java (51%) diff --git a/apidoc.html b/apidoc.html new file mode 100644 index 0000000..112ff87 --- /dev/null +++ b/apidoc.html @@ -0,0 +1,110 @@ + + + + 接口文档(apidoc生成) + + + + + + + + + diff --git a/apidoc.json b/apidoc.json new file mode 100644 index 0000000..af42043 --- /dev/null +++ b/apidoc.json @@ -0,0 +1,552 @@ +{ + "servers": [ + { + "address": "0.0.0.0:80", + "servlets": [ + { + "urlregs": [ + "/meta/*" + ], + "moduleid": 0, + "name": "", + "comment": "元数据服务", + "mappings": [ + { + "url": "/meta/db_plat_list", + "auth": true, + "actionid": 0, + "comment": "数据平台", + "params": [], + "results": [], + "result": "java.util.List" + }, + { + "url": "/meta/exportsort", + "auth": true, + "actionid": 0, + "comment": "导出字段排序保存", + "params": [ + { + "name": "serviceKey", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "items", + "radix": 10, + "type": "java.util.List", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "platToken", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + } + ], + "results": [], + "result": "java.util.List" + }, + { + "url": "/meta/filter_update", + "auth": true, + "actionid": 0, + "comment": "查询配置修改", + "params": [ + { + "name": "serviceKey", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "filters", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "platToken", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + } + ], + "results": [], + "result": "net.tccn.base.JBean" + }, + { + "url": "/meta/findMetaTable", + "auth": true, + "actionid": 0, + "comment": "", + "params": [ + { + "name": "name", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "token", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + } + ], + "results": [], + "result": "net.tccn.meta.MetaTable" + }, + { + "url": "/meta/importsort", + "auth": true, + "actionid": 0, + "comment": "导入字段保存", + "params": [ + { + "name": "serviceKey", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "items", + "radix": 10, + "type": "java.util.List", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "platToken", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + } + ], + "results": [], + "result": "java.util.List" + }, + { + "url": "/meta/itemsort", + "auth": true, + "actionid": 0, + "comment": "字段排序", + "params": [ + { + "name": "serviceKey", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "items", + "radix": 10, + "type": "java.lang.String[]", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "platToken", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + } + ], + "results": [], + "result": "[Ljava.lang.String;" + }, + { + "url": "/meta/itemupdate", + "auth": true, + "actionid": 0, + "comment": "字段修改", + "params": [ + { + "name": "serviceKey", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "items", + "radix": 10, + "type": "java.util.List", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "platToken", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + } + ], + "results": [], + "result": "java.util.List" + }, + { + "url": "/meta/listcfg", + "auth": false, + "actionid": 0, + "comment": "内容列表配置", + "params": [ + { + "name": "key", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "platToken", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + } + ], + "results": [], + "result": "net.tccn.base.JBean" + }, + { + "url": "/meta/showsort", + "auth": true, + "actionid": 0, + "comment": "展示字段修改", + "params": [ + { + "name": "serviceKey", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "items", + "radix": 10, + "type": "java.util.List", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "platToken", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + } + ], + "results": [], + "result": "java.util.List" + }, + { + "url": "/meta/tableinfo", + "auth": true, + "actionid": 0, + "comment": "table详情", + "params": [ + { + "name": "platToken", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "name", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + } + ], + "results": [], + "result": "net.tccn.base.JBean" + }, + { + "url": "/meta/tablelist", + "auth": true, + "actionid": 0, + "comment": "table列表", + "params": [ + { + "name": "platToken", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "catalog", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "dbPlatId", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "name", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + } + ], + "results": [], + "result": "net.tccn.base.JBean" + } + ] + }, + { + "urlregs": [ + "/qtask/test", + "/qtask/call", + "/qtask/getSysPlat", + "/qtask/qsave" + ], + "moduleid": 0, + "name": "", + "comment": "qtask查询服务", + "mappings": [ + { + "url": "/qtask/call", + "auth": true, + "actionid": 0, + "comment": "qtask查询", + "params": [ + { + "name": "queryId", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "para", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + }, + { + "name": "platToken", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + } + ], + "results": [], + "result": "net.tccn.base.JBean" + }, + { + "url": "/qtask/getSysPlat", + "auth": true, + "actionid": 0, + "comment": "", + "params": [ + { + "name": "token", + "radix": 10, + "type": "java.lang.String", + "src": "PARAMETER", + "comment": "", + "required": true + } + ], + "results": [], + "result": "net.tccn.dbq.qtask.SysPlat" + }, + { + "url": "/qtask/qsave", + "auth": true, + "actionid": 0, + "comment": "qtask保存", + "params": [ + { + "name": "qtask", + "radix": 10, + "type": "net.tccn.dbq.qtask.Qtask", + "src": "PARAMETER", + "comment": "", + "required": true + } + ], + "results": [], + "result": "net.tccn.base.JBean" + }, + { + "url": "/qtask/test", + "auth": true, + "actionid": 0, + "comment": "qtask调试", + "params": [ + { + "name": "qtask", + "radix": 10, + "type": "net.tccn.dbq.qtask.Qtask", + "src": "PARAMETER", + "comment": "", + "required": true + } + ], + "results": [], + "result": "net.tccn.base.JBean" + } + ] + } + ] + } + ], + "types": { + "net.tccn.dbq.qtask.Qtask": { + "queryId": { + "type": "java.lang.String", + "primary": false, + "updatable": true + }, + "name": { + "type": "java.lang.String", + "primary": false, + "updatable": true + }, + "remark": { + "type": "java.lang.String", + "primary": false, + "updatable": true + }, + "sql": { + "type": "java.lang.String", + "primary": false, + "updatable": true + }, + "para": { + "type": "java.lang.String", + "primary": false, + "updatable": true + }, + "cate": { + "type": "java.lang.String", + "primary": false, + "updatable": true + }, + "sysPlatId": { + "type": "java.lang.Integer", + "primary": false, + "updatable": true + }, + "platId": { + "type": "java.lang.Integer", + "primary": false, + "updatable": true + }, + "catalog": { + "type": "java.lang.String", + "primary": false, + "updatable": true + }, + "status": { + "type": "java.lang.Integer", + "primary": false, + "updatable": true + }, + "attr": { + "type": "java.util.HashMap", + "primary": false, + "updatable": true + }, + "_id": { + "type": "java.lang.String", + "primary": false, + "updatable": true + }, + "_key": { + "type": "java.lang.String", + "primary": false, + "updatable": true + }, + "_shows": { + "type": "java.util.Set", + "primary": false, + "updatable": true + }, + "_order": { + "type": "java.util.Map", + "primary": false, + "updatable": true + }, + "fieldName": { + "type": "java.util.function.Function", + "primary": false, + "updatable": true + }, + "arangoSource": { + "type": "net.tccn.base.arango.ArangoSource", + "primary": false, + "updatable": true + }, + "db": { + "type": "com.arangodb.ArangoDatabase", + "primary": false, + "updatable": true + }, + "collection": { + "type": "com.arangodb.ArangoCollection", + "primary": false, + "updatable": true + } + } + } +} \ No newline at end of file diff --git a/conf/application.xml b/conf/application.xml new file mode 100644 index 0000000..c17c399 --- /dev/null +++ b/conf/application.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/config.txt b/conf/config.txt new file mode 100644 index 0000000..642aed2 --- /dev/null +++ b/conf/config.txt @@ -0,0 +1,26 @@ +#--------------- FTP -------------- +ftp.host=192.168.202.11 +ftp.port=21 +ftp.user=ftptest +ftp.passwd=123 +ftp.verdict.url_file_path=verdict_url +ftp.verdict.app_file_path=verdict_app + +#apk文件存放目录 /home/ftptest/apk +ftp.verdict.apk_dir=C:\\Users\\eversec\\Documents\\WXWork\\1688854143550524\\Cache\\File\\2018-12\\02 + +#--------------- xml-rpc、kafak -------------- +rpc.url=http://192.168.205.147:8888 + +kafak.servers=192.168.202.11:9092 +#app研判发送地址 +kafak.topic.app_verdict=static_task_virus_topic +#app研判结果监听 +kafak.topic.app_verdict_result=static_task_virus_result_topic + +#--------------- arango -------------- +arango.host=120.24.230.60 +arango.port=8529 +arango.user=root +arango.passwd=abc123 +arango.database=db_dev diff --git a/conf/logging.properties b/conf/logging.properties new file mode 100644 index 0000000..caf8540 --- /dev/null +++ b/conf/logging.properties @@ -0,0 +1,24 @@ + +#FileHandler/ConsoleHandler +handlers = java.util.logging.ConsoleHandler + +############################################################ +.level = FINER + +java.level = INFO +javax.level = INFO +com.sun.level = INFO +sun.level = INFO +jdk.level = INFO + + +java.util.logging.FileHandler.level = FINER +#10M +java.util.logging.FileHandler.limit = 10485760 +java.util.logging.FileHandler.count = 10000 +java.util.logging.FileHandler.encoding = UTF-8 +java.util.logging.FileHandler.pattern = ${APP_HOME}/logs-%m/log-%d.log +java.util.logging.FileHandler.unusual = ${APP_HOME}/logs-%m/log-warnerr-%u.log +java.util.logging.FileHandler.append = true + +java.util.logging.ConsoleHandler.level = FINER diff --git a/conf/persistence.xml b/conf/persistence.xml new file mode 100644 index 0000000..749e535 --- /dev/null +++ b/conf/persistence.xml @@ -0,0 +1,14 @@ + + + + + ALL + + + + + + + + diff --git a/pom.xml b/pom.xml index 359f577..14e52c6 100644 --- a/pom.xml +++ b/pom.xml @@ -7,13 +7,33 @@ net.tccn meta-kit 1.0 - pom + jar - qtask + + + + org.redkale + redkale + 1.9.9 + + + + + com.arangodb + arangodb-java-driver + 5.0.1 + + + + com.google.code.gson + gson + 2.8.4 + + junit junit @@ -31,6 +51,32 @@ 8 + + + + org.apache.maven.plugins + maven-dependency-plugin + + + copy-artifact + package + + copy + + + + + ${project.groupId} + ${project.artifactId} + ${project.version} + ${project.packaging} + + + lib + + + + diff --git a/qtask/.gitignore b/qtask/.gitignore deleted file mode 100644 index 9b1ddc0..0000000 --- a/qtask/.gitignore +++ /dev/null @@ -1,12 +0,0 @@ -/target/ -.project -.classpath -/.settings/ -/.externalToolBuilders/ -/bin/ -*.iml -.idea/ -/.idea/ -/out/ -/tmp/ -/libs/ \ No newline at end of file diff --git a/qtask/pom.xml b/qtask/pom.xml deleted file mode 100644 index 9277f21..0000000 --- a/qtask/pom.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - 4.0.0 - - net.tccn - meta-kit - 1.0 - - - net.tccn - qtask - 1.0 - - - - - junit - junit - RELEASE - test - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - 8 - 8 - - - - - - - \ No newline at end of file diff --git a/qtask/src/main/java/net/tccn/base/Kv.java b/qtask/src/main/java/net/tccn/base/Kv.java deleted file mode 100644 index 757e036..0000000 --- a/qtask/src/main/java/net/tccn/base/Kv.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.tccn.base; - -import java.util.LinkedHashMap; - -/** - * Created by liangxianyou@eversec.cn at 2018/3/12 14:17. - */ -public class Kv extends LinkedHashMap { - public static Kv of(){ - return new Kv(); - } - - public static Kv of(Object k, Object v){ - return new Kv().set(k,v); - } - - public Kv set(K k, V v){ - put(k, v); - return this; - } -} \ No newline at end of file diff --git a/qtask/src/main/java/net/tccn/qtask/QTaskEs.java b/qtask/src/main/java/net/tccn/qtask/QTaskEs.java deleted file mode 100644 index 1f4f3f2..0000000 --- a/qtask/src/main/java/net/tccn/qtask/QTaskEs.java +++ /dev/null @@ -1,16 +0,0 @@ -package net.tccn.qtask; - -import net.tccn.E; - -public class QTaskEs extends QTaskAbs { - - public QTaskEs(E e) { - super(e); - } - - @Override - public Object execute() { - //find result by es api todo: - return null; - } -} diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..3f57fe8 --- /dev/null +++ b/readme.md @@ -0,0 +1,8 @@ +MetaData +-- +1、元数据管理、Db组件、界面展示 +--------------------------- +2、Excel操作、Mysql操作、ES操作、 +--------------------------- +3、 +--------------------------- \ No newline at end of file diff --git a/root/ddl_export.html b/root/ddl_export.html new file mode 100644 index 0000000..565d877 --- /dev/null +++ b/root/ddl_export.html @@ -0,0 +1,167 @@ + + + + + + + MySql数据库表结构导出 + + + + + + + + +
+ +
+

导出数据库表结构(导出后使用wps打开)

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

最近使用记录 共 {{logs.total}} 条记录

+ + + + + + + + + + + + + + + +
IP时间导出数据类型
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/root/favicon.ico b/root/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..93564d36fa9cbc7f0b217593741ee333317d124b GIT binary patch literal 2462 zcmbVO2~D>i3zb;pqeJ9H5Eh_*$YI}VzqG6S{fJh z#5KjWrbiMD2+qO`Xc_i(;LXA?%mxfIfFdv>Ff0RK?|aBOG4-_P^q=#+J9FQ?-@knS zyKe|_qMyZ!3B9f$e|wgYMT8J93OYsBQLyuz(R=0drZGM7->)lAe?mS)ApyWHbfTC; zG50ap@3SbJ7AL($hyQIaZduJOT3en%{z*BX+wMJYLB>10CD|VZyMDDT+Wq{m_qw0` zc;B+)!HF)JK|AJ0`Ug7uF7lw8=2JL3&7IB0@Kp1;6-k!FZYCS_hsm-t+ZK7|hQ_{n zCrPxuIKvcIc5?WSRXL77S6{_nC=ONSOeRQA**}(K^lZ8nU+JE`?a1>%t2R^OpHZ-R zJz+liQN$zbSHxGENLCg^Y}#D3_ul@h3yyr|E*e^zpi(K(qEw(oF6W?9$e~oq(V&!} zkogx5R^?2+k(Z=&N&UqhO1zZf2_I`p5{Zu}maGy)Z3rq!SEW>(MXsy}8l?(MlMGFb z4gUeAu@MRx_1(;%h5EnQEW!Jt^lq1wK-R|sC+F!}c?+V6pD2#35bS;-K$6P8)L4Ln z6@SN>%3QD<&9X+wnPwm3or;m;TN+cq_lff7-}Zci z`f#QoYsB%yuPBbJ5=L!LsXjZZR4Gv2P>GUyDU{4~Y?@Xzv~3#bwOSZ;I$UVT!>giX z@C0!Py_h?DLrt}EB`Fr3ih{ZZ#0&X>mx%G0o??w$D8^4Vyo8$RYwy&Ic zG23FPU^kj30Ua?Ls1Zk58+*#U!I2aUP~%}f&_O1>OkcyP<7 zlz$G(?{;U`n`yF~M{Tsm>J}ArIxUXWUB^aI68tG%7k`dz(l79xQHuUyD<($AF)}<1 zt91|q4MXC{_reZcn7TprbT1%G!?26NqRH0YtzXu#-H*jjS% zagAfJsVEtxJq$f2rfq6!3XX{hjN0w6*=%^&*N1M4nbS$vs=?ukoGI56A;~lR?)>m~ zGvwFpT%NQ)be#t5DnE)>?nH4uSPes@nYhtj3hVgrj2lciCNO3ng>`Tc_j`M3ojPIA z>TtO7;-u@zki?n#EH4ZTNNc)iGqW)m4Ctl#)|!+!(0B<4nl3|Vu1ALa8@w+09AVYR zQP5S5Y;_*?$u6SAEW@KmkGLEx<}MiZdZbmH8()?k97g$PvGrL}xN~(x-6?a|0}DFa z+tJ(80~?LWZXbbT(!s^+n3_a&pBgcBUvau{{X_G6=WaSw4-Bvl4A2@`pw(*;S$fRo zlJ(22bR&Is^7hkMgtUg9kt2-NeT8 zw*H|(Jh*=!1O5H5kBne)a`MOYn3!@v)~|!eQje4Be1ujWMNHKx%R%w>p!fM-7yBO&5Wx$ z2~H?(LE0|EHI)ckO8(H`ksr=mt2jW~AIH!7@VygFcr*_$(H_pnM#=9l#WkF@e&1OE z&7cYWb{p*DW3=BL9IRtQFjy^+-ETv_u>#5U=Z7{)QgT-cBE5Y|*|sO-IWHG(oVoZ3 z + + + + MetaKit + + + + + + +
+ +
+ +
+ +
+
+ +
+
+ + +
+
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/root/list.html b/root/list.html new file mode 100644 index 0000000..c95769e --- /dev/null +++ b/root/list.html @@ -0,0 +1,321 @@ + + + + + 高级查询 + + + + + + + +
+

高级查询 - [测试用例]

+
+
+ +
+
+
+ + + + + + + + + + + + +
+
+ +
+
+ {{x.label}} + + + + +
+ +
+
+ + + + + + + + + + + + +
+ +
+
+ +
+ + +
+ + + + + + + + + \ No newline at end of file diff --git a/root/meta.html b/root/meta.html new file mode 100644 index 0000000..4a2919e --- /dev/null +++ b/root/meta.html @@ -0,0 +1,511 @@ + + + + + Title + + + + + + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名中文名数据类型输入类型附加属性备注
+ + + + + + +
+
+ +
+ + + + + + + + + + + + + + + + + +
字段名中文名展示名
+
+
+
+
+ 列表展示的属性 +
+
+ + + + + + + + + + + + + + + +
字段名中文名支持排序
+ + {{getFieldLabel(item)}}
+
+
+
+ + +
+
+
+ 导出的属性配置 +
+
+ + + + + + + + + + + + + + + +
字段名中文名
+ + {{getFieldLabel(item)}}
+
+
+
+ + +
+
+
+ 导入的属性配置 +
+
+ + + + + + + + + + + + + + + +
字段名中文名
+ + {{getFieldLabel(item)}}
+
+
+
+ + +
+ + +
+
+ 高级查询的属性配置 +
+
+ + + + + + + + + + + + + + + +
字段名中文名支持查询类型
+ + {{getFieldLabel(item.name)}} + +
+
+
+
+ +
+ + +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/root/metadata/dataList.html b/root/metadata/dataList.html new file mode 100644 index 0000000..1612681 --- /dev/null +++ b/root/metadata/dataList.html @@ -0,0 +1,262 @@ + + + + +

高级查询 - [测试用例]

+
+ +
+
+
+ + + + + + + + + + + + +
+
+ +
+
+
+ {{x.label}} + + + + + + + +
+
+
+ +
+ + + + + + + + + + + +
+ +
+
+ +
+ + \ No newline at end of file diff --git a/root/metadata/metaLinK.html b/root/metadata/metaLinK.html new file mode 100644 index 0000000..4fb5dc0 --- /dev/null +++ b/root/metadata/metaLinK.html @@ -0,0 +1,29 @@ + + + + + + \ No newline at end of file diff --git a/root/metadata/metaService.html b/root/metadata/metaService.html new file mode 100644 index 0000000..b393663 --- /dev/null +++ b/root/metadata/metaService.html @@ -0,0 +1,614 @@ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名中文名数据类型输入类型附加属性备注
+ + + + + + +
+
+ +
+ + + + + + + + + + + + + + + + + +
字段名中文名展示名
+
+
+
+
列表展示的属性
+
+ + + + + + + + + + + + + + + + + +
字段名中文名
+ + {{getFieldLabel(item)}}
+
+
+
+ + +
+
+
导出的属性配置
+
+ + + + + + + + + + + + + + + + + +
字段名中文名
+ + {{getFieldLabel(item)}}
+
+
+
+ + +
+
+
+ 导入的属性配置 +
+
+ + + + + + + + + + + + + + + + + +
字段名中文名
+ + {{getFieldLabel(item)}}
+
+
+
+ + +
+
+
查询配置
+
+ + + + + + + + + + + + + + + + + + + +
字段名中文名默认展示支持查询类型
+ + {{getFieldLabel(item.name)}} + + + +
+
+
+
+ + +
+
+
数据平台配置
+
+
+
+ +
+ + +
+
+ +
+
+
+
+
+
+ +
+ + + + + \ No newline at end of file diff --git a/root/metadata/metatable/list.html b/root/metadata/metatable/list.html new file mode 100644 index 0000000..f681639 --- /dev/null +++ b/root/metadata/metatable/list.html @@ -0,0 +1,110 @@ + + +
+

+
+
+
+ + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + +
操作
+ +
+
+ +
+ \ No newline at end of file diff --git a/root/metadata/metatable/metaTable.html b/root/metadata/metatable/metaTable.html new file mode 100644 index 0000000..25db513 --- /dev/null +++ b/root/metadata/metatable/metaTable.html @@ -0,0 +1,573 @@ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名中文名数据类型输入类型附加属性备注
+ + + + + + +
+
+ +
+ + + + + + + + + + + + + + + + + +
字段名中文名展示名
+
+
+
+
列表展示的属性
+
+ + + + + + + + + + + + + + + + + +
字段名中文名
+ + {{getFieldLabel(item)}}
+
+
+
+ + +
+
+
导出的属性配置
+
+ + + + + + + + + + + + + + + + + +
字段名中文名
+ + {{getFieldLabel(item)}}
+
+
+
+ + +
+
+
+ 导入的属性配置 +
+
+ + + + + + + + + + + + + + + + + +
字段名中文名
+ + {{getFieldLabel(item)}}
+
+
+
+ + +
+
+
查询配置
+
+ + + + + + + + + + + + + + + + + + + +
字段名中文名默认展示支持查询类型
+ + {{getFieldLabel(item.name)}} + + + +
+
+
+
+ + +
+
+
数据平台配置
+
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+
+
+
+
+ +
+ + + + \ No newline at end of file diff --git a/root/plat/db.html b/root/plat/db.html new file mode 100644 index 0000000..cb339fd --- /dev/null +++ b/root/plat/db.html @@ -0,0 +1,229 @@ + + + +
+

+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
操作
+ + 编辑 | + 启用 + 不启用 | + 删除 +
+
+ + + + +
+ + \ No newline at end of file diff --git a/root/plat/dev.html b/root/plat/dev.html new file mode 100644 index 0000000..d95a645 --- /dev/null +++ b/root/plat/dev.html @@ -0,0 +1,5 @@ + +
+ sdaf +
+
\ No newline at end of file diff --git a/root/plat/index.html b/root/plat/index.html new file mode 100644 index 0000000..d95175a --- /dev/null +++ b/root/plat/index.html @@ -0,0 +1,144 @@ + + + +
+

+
+
+
+ + + +
+
+ +
+ + + + + + + + + + + + + +
操作
+ 编辑 | + 启用 + 不启用 | + 删除 +
+
+ + + + +
+ + \ No newline at end of file diff --git a/root/qtask/abc.html b/root/qtask/abc.html new file mode 100644 index 0000000..dc4d906 --- /dev/null +++ b/root/qtask/abc.html @@ -0,0 +1,24 @@ +
+ {{cfg.title}} + + + +
+ + \ No newline at end of file diff --git a/root/qtask/ddl.html b/root/qtask/ddl.html new file mode 100644 index 0000000..252884b --- /dev/null +++ b/root/qtask/ddl.html @@ -0,0 +1,143 @@ + + +
+

导出数据库表结构(导出后使用wps打开)

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

最近使用记录 共 {{logs.total}} 条记录

+ + + + + + + + + + + + + + + + + + + + + + + +
IP最后时间最后导出数据类型导出总次数
合计总人数{{logs.userTotal}}合计总次数{{logs.total}}
+
+ +
+ \ No newline at end of file diff --git a/root/qtask/debug.html b/root/qtask/debug.html new file mode 100644 index 0000000..e9cba61 --- /dev/null +++ b/root/qtask/debug.html @@ -0,0 +1,131 @@ + +
+

QTask - [测试用例]

+
+
+
+ + 选择QTask任务 + + +
+ + + + +
+
+
查询结果:
+

+    
+
+ + \ No newline at end of file diff --git a/root/qtask/list.html b/root/qtask/list.html new file mode 100644 index 0000000..35e4f54 --- /dev/null +++ b/root/qtask/list.html @@ -0,0 +1,237 @@ + +
+

+
+ +
+ + +
+ + +
+
+
+ + + + + + + + + + + + + + + +
状态操作
+ 编辑| + 启用 + 不启用 | + 删除 +
+
+ + +
+ + + + + + + +
+
+ + \ No newline at end of file diff --git a/root/res/css/red-kit.css b/root/res/css/red-kit.css new file mode 100644 index 0000000..200be64 --- /dev/null +++ b/root/res/css/red-kit.css @@ -0,0 +1,137 @@ +body { + /*background: url("../img/bg.jpg") no-repeat;*/ +} + +/*.navbar-inverse { + background-color: #65487a; + border-color: #9361b8; +} +.navbar-inverse .navbar-nav > .active > a, .navbar-inverse .navbar-nav > .active > a:hover, .navbar-inverse .navbar-nav > .active > a:focus { + background-color: #996fb8; +}*/ + +.container-fluid { + padding-left: 0px; +} + +#home { + /*background-color: #fff;*/ + /*margin: 20px auto; + padding-bottom: 20px;*/ + /*min-height: 500px;*/ +} +#top { + background-color: #404a53; + padding: 0 10px; + margin: 0px; + height: 45px; +} +#top a { + color: #ddd; +} + +#top .nav-tabs{ + border-bottom:0; +} +.nav-tabs>li>a{ + border: 0; +} +.nav-tabs>li.active>a, .nav-tabs>li.active>a:focus, .nav-tabs>li.active>a:hover, .nav-tabs>li>a:hover { + background-color: #404a53; + color: #fff; + border: 0; + border-bottom: 2px solid #607d8b; +} + +#left { + background-color: #404a53; /*padding-bottom: 0px; margin-bottom: 0px;*/ +} +#main { + +} +#left.col-md-1 { + padding: 0 2px; + width: 10.63333333%; +} +#mainDiv .col-md-11 { + width: 89.36666667%; + /*background-color: #fff;*/ +} +#left .nav { + background-color: #404a53; +} + +#left .menu > .nav > li > .nav > li > a { + border:0; + border-bottom: 1px solid #495158; + color: #eee; +} +#left .menu > .nav > li > .nav > li>a:hover { + background-color: #404a53; + border:0; + border-bottom: 1px solid #495158; + color: #fff; +} +#left .menu > .nav > li > .nav > li.active > a:hover { + background-color: rgba(255,255,255,.2);/*#607D8B;*/ + color: #fff; +} + + +#left .menu > .nav > li > .nav > li.active a,#left .menu > .nav > li > .nav > li a:hover{ + background-color: rgba(255,255,255,.2);/*#607D8B;*/ + border-left: 2px solid #77cb99; + color: #fff; +} + +.list-head { + padding-bottom: 10px; +} + +.meta-list .col-md-5 .panel-body { + padding: 0px; +} + +table td,th{ + white-space:nowrap; + overflow:hidden; + text-overflow: ellipsis; + max-width: 200px; +} +th{ + background-color: #f1f1f1; +} + +/*ddl-page*/ +.ddl .input-group { + margin-bottom: 10px; +} + +/*.data-list 元数据测试用例页面*/ +.data-list .table > thead > tr > th.sort:after{ + display: inline-block; + margin-left: 5px; + font-family: ZenIcon; + font-size: 14px; + font-style: normal; + font-weight: normal; + font-variant: normal; + line-height: 1; + color: #808080; + text-transform: none; + content: '\e6bd'; + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.data-list .table > thead > tr > th.sort:hover{ + cursor:pointer; +} +.data-list .table > thead > tr > th.sort-up:after { + color: #145ccd; + content: '\e6b9'; +} +.data-list .table > thead > tr > th.sort-down:after { + color: #145ccd; + content: '\e6b8'; +} \ No newline at end of file diff --git a/root/res/css/zui-theme-black.css b/root/res/css/zui-theme-black.css new file mode 100644 index 0000000..9e53253 --- /dev/null +++ b/root/res/css/zui-theme-black.css @@ -0,0 +1,1310 @@ +/*! + * ZUI user custom theme for - v1.8.1 - 2018-10-12 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +a { + color: #222; +} +a:hover, +a:focus { + color: #000000; +} +.btn { + border-radius: 0; + color: #353535; + background-color: #f2f2f2; + border-color: #bfbfbf; +} +.btn:hover, +.btn:focus, +.btn:active, +.btn.active, +.open .dropdown-toggle.btn { + color: #353535; + background-color: #dedede; + border-color: #a1a1a1; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn:active, +.btn.active, +.open .dropdown-toggle.btn { + background-image: none; + background-color: #cccccc; + border-color: #a6a6a6; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn, +.btn.disabled:hover, +.btn[disabled]:hover, +fieldset[disabled] .btn:hover, +.btn.disabled:focus, +.btn[disabled]:focus, +fieldset[disabled] .btn:focus, +.btn.disabled:active, +.btn[disabled]:active, +fieldset[disabled] .btn:active, +.btn.disabled.active, +.btn[disabled].active, +fieldset[disabled] .btn.active { + background-color: #f2f2f2; + border-color: #bfbfbf; +} +.btn:hover, +.btn:focus, +.btn:active, +.btn.active, +.open .dropdown-toggle.btn { + color: #353535; + background-color: #dedede; + border-color: #a1a1a1; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn:active, +.btn.active, +.open .dropdown-toggle.btn { + background-image: none; + background-color: #cccccc; + border-color: #a6a6a6; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn, +.btn.disabled:hover, +.btn[disabled]:hover, +fieldset[disabled] .btn:hover, +.btn.disabled:focus, +.btn[disabled]:focus, +fieldset[disabled] .btn:focus, +.btn.disabled:active, +.btn[disabled]:active, +fieldset[disabled] .btn:active, +.btn.disabled.active, +.btn[disabled].active, +fieldset[disabled] .btn.active { + background-color: #f2f2f2; + border-color: #bfbfbf; +} +.btn-primary { + color: #fff; + background-color: #333; + border-color: #262626; +} +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + color: #fff; + background-color: #1f1f1f; + border-color: #080808; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + background-image: none; + background-color: #0d0d0d; + border-color: #0d0d0d; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #333; + border-color: #262626; +} +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + color: #fff; + background-color: #1f1f1f; + border-color: #080808; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + background-image: none; + background-color: #0d0d0d; + border-color: #0d0d0d; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #333; + border-color: #262626; +} +.btn-warning { + color: #fff; + background-color: #f1a325; + border-color: #ed980f; +} +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + color: #fff; + background-color: #df8f0e; + border-color: #b4730c; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + background-image: none; + background-color: #bd7a0c; + border-color: #bd7a0c; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #f1a325; + border-color: #ed980f; +} +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + color: #fff; + background-color: #df8f0e; + border-color: #b4730c; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + background-image: none; + background-color: #bd7a0c; + border-color: #bd7a0c; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #f1a325; + border-color: #ed980f; +} +.btn-danger { + color: #fff; + background-color: #ea644a; + border-color: #e75033; +} +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + color: #fff; + background-color: #e64525; + border-color: #c63317; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + background-image: none; + background-color: #cf3618; + border-color: #cf3618; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #ea644a; + border-color: #e75033; +} +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + color: #fff; + background-color: #e64525; + border-color: #c63317; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + background-image: none; + background-color: #cf3618; + border-color: #cf3618; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #ea644a; + border-color: #e75033; +} +.btn-success { + color: #fff; + background-color: #38b03f; + border-color: #329d38; +} +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + color: #fff; + background-color: #2e9134; + border-color: #236e27; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + background-image: none; + background-color: #26762a; + border-color: #26762a; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #38b03f; + border-color: #329d38; +} +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + color: #fff; + background-color: #2e9134; + border-color: #236e27; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + background-image: none; + background-color: #26762a; + border-color: #26762a; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #38b03f; + border-color: #329d38; +} +.btn-info { + color: #fff; + background-color: #03b8cf; + border-color: #03a2b6; +} +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + color: #fff; + background-color: #0294a7; + border-color: #026c7a; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + background-image: none; + background-color: #027584; + border-color: #027584; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #03b8cf; + border-color: #03a2b6; +} +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + color: #fff; + background-color: #0294a7; + border-color: #026c7a; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + background-image: none; + background-color: #027584; + border-color: #027584; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #03b8cf; + border-color: #03a2b6; +} +.btn-link { + color: #222; + background-color: transparent; +} +.btn-link, +.btn-link:active, +.btn-link[disabled], +fieldset[disabled] .btn-link, +.btn-link:hover, +.btn-link:focus { + border-color: transparent; + box-shadow: none; +} +.btn-link:hover, +.btn-link:focus { + color: #000000; +} +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #dddddd; +} +.popover, +.tooltip-inner { + border-radius: 0; +} +.label { + border-radius: 0; +} +.label-badge { + border-radius: 9px; +} +.label-dot { + border-radius: 5px; +} +.label-primary { + background-color: #333; +} +.label-primary[href]:hover, +.label-primary[href]:focus { + color: #fff; + background-color: #1a1a1a; +} +.label-primary.label-circle { + background: none; + border: 1px solid #333; + color: #333; +} +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #1a1a1a; +} +.label-success { + background-color: #38b03f; +} +.label-success[href]:hover, +.label-success[href]:focus { + color: #fff; + background-color: #2c8931; +} +.label-success.label-circle { + background: none; + border: 1px solid #38b03f; + color: #38b03f; +} +.label-success[href]:hover, +.label-success[href]:focus { + background-color: #2c8931; +} +.label-info { + background-color: #03b8cf; +} +.label-info[href]:hover, +.label-info[href]:focus { + color: #fff; + background-color: #028b9d; +} +.label-info.label-circle { + background: none; + border: 1px solid #03b8cf; + color: #03b8cf; +} +.label-info[href]:hover, +.label-info[href]:focus { + background-color: #028b9d; +} +.label-warning { + background-color: #f1a325; +} +.label-warning[href]:hover, +.label-warning[href]:focus { + color: #fff; + background-color: #d5890e; +} +.label-warning.label-circle { + background: none; + border: 1px solid #f1a325; + color: #f1a325; +} +.label-warning[href]:hover, +.label-warning[href]:focus { + background-color: #d5890e; +} +.label-danger { + background-color: #ea644a; +} +.label-danger[href]:hover, +.label-danger[href]:focus { + color: #fff; + background-color: #e53d1c; +} +.label-danger.label-circle { + background: none; + border: 1px solid #ea644a; + color: #ea644a; +} +.label-danger[href]:hover, +.label-danger[href]:focus { + background-color: #e53d1c; +} +.btn-primary .label-badge, +.btn-primary .label-dot { + background-color: #666666; +} +.text-primary { + color: #333; +} +.text-primary:hover { + color: #1a1a1a; +} +.text-warning { + color: #f1a325; +} +.text-warning:hover { + color: #d5890e; +} +.text-danger { + color: #ea644a; +} +.text-danger:hover { + color: #e53d1c; +} +.text-success { + color: #38b03f; +} +.text-success:hover { + color: #2c8931; +} +.text-info { + color: #03b8cf; +} +.text-info:hover { + color: #028b9d; +} +.text-important { + color: #bd7b46; +} +.text-important:hover { + color: #996337; +} +.text-special { + color: #8666b8; +} +.text-special:hover { + color: #6c4aa1; +} +.text-muted a:hover, +.text-muted a:active { + color: #222; +} +.text-link:hover, +.text-link:active { + color: #222; +} +.bg-primary { + background-color: #333; +} +a.bg-primary:hover { + background-color: #1a1a1a; +} +.hl-primary { + background-color: #f5f5f5; +} +a.hl-primary:hover { + background-color: #dcdcdc; +} +.form-control { + border-radius: 0; +} +.form-control:focus, +.form-control.focus { + border-color: #222; + outline: 0; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(34, 34, 34, 0.6); +} +.form-control:focus { + border-color: #222; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(34, 34, 34, 0.6); +} +.form-condensed .form-control, +.form-condensed .btn { + border-radius: 0; +} +.switch > input:checked + label:before { + background-color: #333; + border-color: #333; +} +.switch input:focus + label { + color: #333; +} +.switch input:focus + label:before { + border-color: #333; +} +.form-control:focus + .input-control-label-left { + color: #222; +} +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; +} +.btn-group-vertical > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-bottom-left-radius: 0; + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group-vertical > .btn-group:first-child > .btn:last-child, +.btn-group-vertical > .btn-group:first-child > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn-group:last-child > .btn:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.input-group-addon { + background-color: #e5e5e5; +} +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; +} +.input-group-addon { + border-radius: 0; +} +.input-group-btn.fix-border > .btn { + border-radius: 0; +} +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.list-group-item { + background-color: #fff; + border: 1px solid #dddddd; +} +.list-group-item:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +a.list-group-item { + color: #555; +} +a.list-group-item .list-group-item-heading { + color: #333; +} +a.list-group-item:hover, +a.list-group-item:focus { + text-decoration: none; + background-color: #f5f5f5; + color: #353535; +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + background-color: #333; + border-color: #333; + color: #fff; +} +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading { + color: inherit; +} +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .list-group-item-text { + color: #e6e6e6; +} +.list-group-item-heading { + color: #333333; +} +.navbar-toggle { + border-radius: 0; +} +@media (min-width: 768px) { + .navbar { + border-radius: 0; + } +} +.navbar-inverse { + background-color: #222; + border-color: #080808; +} +.navbar-inverse .navbar-nav > li.nav-heading { + background-color: #151515; +} +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + background-color: #313131; +} +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + background-color: #3c3c3c; +} +.navbar-inverse .navbar-toggle { + border-color: #3c3c3c; +} +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #151515; +} +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #101010; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + background-color: #3c3c3c; +} +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + background-color: #313131; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + background-color: #3c3c3c; + } +} +.navbar-fixed-left.navbar-inverse .navbar-header, +.navbar-fixed-left.navbar-inverse .navbar-nav { + border-bottom: 1px solid #3c3c3c; + box-shadow: inset 0 -1px 0 #080808; +} +.navbar-fixed-left.navbar-inverse.navbar-collapsed .navbar-nav > li.nav-heading:hover { + color: #eaeaea; + background-color: #0e0e0e; +} +.nav > li > a:hover, +.nav > li > a:focus { + color: #000000; +} +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + border-color: #222; +} +.nav-pills > li.active > a, +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { + background-color: #333; +} +.nav-primary > li:first-child > a { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.nav-primary > li:last-child > a { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.nav-primary > li > a { + border: 1px solid #dddddd; +} +.nav-primary > li.active > a, +.nav-primary > li.active > a:hover, +.nav-primary > li.active > a:focus { + background-color: #333; + border-color: #333; + color: #fff; +} +.nav-secondary > li.active > a, +.nav-secondary > li.active > a:hover, +.nav-secondary > li.active > a:focus { + color: #333; + border-bottom-color: #333; +} +.nav-stacked.nav-primary > li, +.nav-stacked.nav-primary > li > a { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.nav-stacked.nav-primary > li:first-child > a, +.nav-stacked.nav-primary > li:first-child.nav-heading { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.nav-stacked.nav-primary > li:last-child > a { + border-top-right-radius: 0; + border-top-left-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.nav-stacked.nav-primary > li.nav-heading { + border: 1px solid #dddddd; + background-color: #f1f1f1; +} +.nav-stacked.nav-secondary > li > a { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + box-shadow: inset 2px 0 0 #f5f5f5; +} +.nav-stacked.nav-secondary > li > a:hover { + box-shadow: inset 2px 0 0 #e5e5e5; +} +.nav-stacked.nav-secondary > li.active > a, +.nav-stacked.nav-secondary > li.active > a:hover, +.nav-stacked.nav-secondary > li.active > a:focus { + background-color: #f5f5f5; + box-shadow: inset 2px 0 0 #333; +} +.nav-stacked.nav-secondary > li.nav-heading { + border-bottom: 1px solid #dddddd; +} +.nav-tabs > li > a { + border-radius: 0 0 0 0; +} +.pager { + border-radius: 0; +} +.pager > li > a, +.pager > li > span { + background-color: #fff; + border: 1px solid #dddddd; +} +.pager > li:first-child > a, +.pager > li:first-child > span { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.pager > li:last-child > a, +.pager > li:last-child > span { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.pager > li > a:hover, +.pager > li > span:hover, +.pager > li > a:focus, +.pager > li > span:focus { + background-color: #e5e5e5; +} +.pager > li.active > a, +.pager > li.active > span, +.pager > li.active > a:hover, +.pager > li.active > span:hover { + color: #fff; + background-color: #333; + border-color: #333; +} +.pager > li.disabled > span, +.pager > li.disabled > span:hover, +.pager > li.disabled > span:focus, +.pager > li.disabled > a, +.pager > li.disabled > a:hover, +.pager > li.disabled > a:focus { + color: #dddddd; + background-color: #fff; + border-color: #dddddd; +} +.panel { + border-radius: 0; + box-shadow: none; +} +.panel > .panel-heading { + background-image: none; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.panel-group .panel { + border-radius: 0; +} +.dashboard .panel { + box-shadow: none; +} +.panel-primary { + border-color: #333; +} +.panel-primary > .panel-heading { + color: #fff; + background-color: #333; + border-color: #333; +} +.panel-primary > .panel-heading + .panel-collapse .panel-body { + border-top-color: #333; +} +.panel-primary > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #333; +} +.panel-success > .panel-body, +.panel-warning > .panel-body, +.panel-primary > .panel-body, +.panel-info > .panel-body, +.panel-danger > .panel-body { + box-shadow: none; +} +.table-hover > tbody > tr:hover > td, +.table-hover > tbody > tr:hover > th { + background-color: #f5f5f5; +} +.table tr > td.active, +.table tr > th.active, +.table tr.active > td, +.table tr.active > th { + background-color: #ffe7bc; +} +table.tablesorter thead tr .headerSortUp:after, +table.tablesorter thead tr .headerSortDown:after { + color: #222 !important; +} +.chosen-container-single .chosen-search:focus, +.chosen-container-single .chosen-search input[type="text"]:focus { + border-color: #222 !important; +} +.chosen-container-single .chosen-single { + border-radius: 0 !important; +} +.chosen-container-single.chosen-with-drop .chosen-single { + border-bottom-right-radius: 0 !important; + border-bottom-left-radius: 0 !important; +} +.chosen-container-single.chosen-with-drop.chosen-up .chosen-single { + border-bottom-right-radius: #222 !important; + border-bottom-left-radius: #222 !important; + border-top-right-radius: 0 !important; + border-top-left-radius: 0 !important; +} +.chosen-container .chosen-results li.highlighted { + background-color: #333 !important; +} +.chosen-container-active .chosen-single { + border-color: #222 !important; +} +.chosen-container-active.chosen-with-drop .chosen-single { + border-color: #cbcbcb !important; + border-color: rgba(0, 0, 0, 0.15) !important; +} +.chosen-container-active .chosen-choices { + border-color: #222 !important; +} +.chosen-container-multi .chosen-choices { + border-radius: 0 !important; +} +.chosen-container-multi.chosen-with-drop .chosen-choices { + border-bottom-right-radius: 0 !important; + border-bottom-left-radius: 0 !important; +} +.chosen-container-multi.chosen-with-drop.chosen-up .chosen-choices { + border-bottom-right-radius: #222 !important; + border-bottom-left-radius: #222 !important; + border-top-right-radius: 0 !important; + border-top-left-radius: 0 !important; +} +.menu > .nav > li > .nav { + background-color: #f6f6f6; +} +.menu > .nav > li > .nav > li > a { + border: 1px solid #dddddd; +} +.menu > .nav > li > .nav > li > a:hover, +.menu > .nav > li > .nav > li > a:focus { + background-color: #e4e4e4; +} +.menu > .nav > li > .nav > li.active > a, +.menu > .nav > li > .nav > li.active > a:hover, +.menu > .nav > li > .nav > li.active > a:focus { + background-color: #333; + border-color: #333; + color: #fff; +} +.menu > .nav > li:first-child > a, +.menu > .nav > li:first-child.nav-heading { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.menu > .nav > li:last-child > a { + border-top-right-radius: 0; + border-top-left-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.menu > .nav > li:first-child > a, +.menu > .nav > li:first-child.nav-heading { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.menu > .nav > li.show > a, +.menu > .nav > li.show > a:hover, +.menu > .nav > li.show > a:focus { + color: #353535; + background-color: #fff; + border-color: #dddddd; +} +.menu > .nav > li.show > a > [class*='icon-'], +.menu > .nav > li.show > a:hover > [class*='icon-'], +.menu > .nav > li.show > a:focus > [class*='icon-'] { + color: #353535; +} +.menu > .nav > li.show > a:hover { + background-color: #f1f1f1; +} +.menu > .nav > li.show:last-child > a { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.menu > .nav > li.show:last-child > .nav > li:last-child > a { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.menu > .nav > li.nav-heading { + border: 1px solid #dddddd; + background-color: #f1f1f1; +} +.dropdown-menu { + border-radius: 0; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + background-color: #333; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + background-color: #333; +} +.dropdown-submenu:hover > a, +.dropdown-submenu:focus > a { + background-color: #333; +} +.dropdown-submenu:hover > a:after { + border-left-color: #fff; +} +.datetimepicker td.day.today { + background-color: #f1a325 !important; + border-color: #f1a325 !important; +} +.datetimepicker td.day.active { + background-color: #333 !important; + border-color: #1a1a1a !important; +} +.datetimepicker td.day.active:hover { + background-color: #1a1a1a !important; +} +.datetimepicker td.day.today:hover, +.datetimepicker td.day.today.active:hover { + background-color: #d5890e !important; +} +.ke-container { + border-radius: 0 !important; +} +.ke-container.focus { + border-color: #222 !important; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(34, 34, 34, 0.6) !important; +} +.ke-menu-item-on { + background-color: #333 !important; +} +.ke-colorpicker-cell-on { + background-color: #333 !important; +} +.ke-input-text:focus { + border-color: #222 !important; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(34, 34, 34, 0.6) !important; +} +.messager { + border-radius: 0; +} +.messager-primary { + background-color: #333; +} +.messager-success { + background-color: #38b03f; +} +.messager-info { + background-color: #03b8cf; +} +.messager-warning { + background-color: #f1a325; +} +.messager-danger { + background-color: #ea644a; +} +.messager-important { + background-color: #bd7b46; +} +.messager-special { + background-color: #8666b8; +} +.comment:hover > .content > .actions > a { + color: #222; +} +.alert:not(.alert-block) { + border-radius: 0; +} +.alert-primary { + background-color: #f5f5f5; + color: #282828; +} +.alert-primary hr { + border-top-color: #e3e3e3; +} +.alert-primary .alert-link { + color: #161616; +} +.alert-success { + background-color: #ddf4df; + color: #329d38; +} +.alert-success hr { + border-top-color: #bae8b6; +} +.alert-success .alert-link { + color: #29822e; +} +.alert-info { + background-color: #ddf3f5; + color: #03a2b6; +} +.alert-info hr { + border-top-color: #a2e4de; +} +.alert-info .alert-link { + color: #028293; +} +.alert-warning { + background-color: #fff0d5; + color: #ed980f; +} +.alert-warning hr { + border-top-color: #ffdcbc; +} +.alert-warning .alert-link { + color: #cc830d; +} +.alert-danger { + background-color: #ffe5e0; + color: #e75033; +} +.alert-danger hr { + border-top-color: #ffc6c7; +} +.alert-danger .alert-link { + color: #dd391a; +} +.alert-primary-inverse { + background-color: #333; + border-color: #333; + color: #fff; +} +.alert-primary-inverse hr { + border-top-color: #dddddd; + border-top-color: rgba(221, 221, 221, 0.25); +} +.alert-primary-inverse .alert-link { + color: rgba(255, 255, 255, 0.8); +} +.modal-dialog { + border-radius: 0; +} +.card { + box-shadow: none; + border-radius: 0; +} +pre { + border-radius: 0; +} +.datagrid .datagrid-hover-row .datagrid-row-cell:hover .datagrid-cell, +.datagrid .datagrid-hover-col .datagrid-cell.hover, +.datagrid .datagrid-hover-col .datagrid-row-cell.active .datagrid-cell.hover { + background-color: #f5f5f5; +} +.datagrid .datagrid-loading > .content > .icon, +.datagrid .datagrid-sort-up > .icon-sort:before, +.datagrid .datagrid-sort-down > .icon-sort:before { + color: #333; +} +.tree-drag-holder { + background-color: #f5f5f5; +} +.tree-menu li.active > a { + background-color: #333; + border-color: #333; + color: #fff; +} +.tree-menu li.active > .list-toggle { + color: #fff; +} diff --git a/root/res/css/zui-theme.css b/root/res/css/zui-theme.css new file mode 100644 index 0000000..3e89655 --- /dev/null +++ b/root/res/css/zui-theme.css @@ -0,0 +1,1310 @@ +/*! + * ZUI user custom theme for - v1.8.1 - 2018-11-06 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +a { + color: #546E7A; +} +a:hover, +a:focus { + color: #35454d; +} +.btn { + border-radius: 0; + color: #353535; + background-color: #f2f2f2; + border-color: #bfbfbf; +} +.btn:hover, +.btn:focus, +.btn:active, +.btn.active, +.open .dropdown-toggle.btn { + color: #353535; + background-color: #dedede; + border-color: #a1a1a1; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn:active, +.btn.active, +.open .dropdown-toggle.btn { + background-image: none; + background-color: #cccccc; + border-color: #a6a6a6; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn, +.btn.disabled:hover, +.btn[disabled]:hover, +fieldset[disabled] .btn:hover, +.btn.disabled:focus, +.btn[disabled]:focus, +fieldset[disabled] .btn:focus, +.btn.disabled:active, +.btn[disabled]:active, +fieldset[disabled] .btn:active, +.btn.disabled.active, +.btn[disabled].active, +fieldset[disabled] .btn.active { + background-color: #f2f2f2; + border-color: #bfbfbf; +} +.btn:hover, +.btn:focus, +.btn:active, +.btn.active, +.open .dropdown-toggle.btn { + color: #353535; + background-color: #dedede; + border-color: #a1a1a1; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn:active, +.btn.active, +.open .dropdown-toggle.btn { + background-image: none; + background-color: #cccccc; + border-color: #a6a6a6; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn, +.btn.disabled:hover, +.btn[disabled]:hover, +fieldset[disabled] .btn:hover, +.btn.disabled:focus, +.btn[disabled]:focus, +fieldset[disabled] .btn:focus, +.btn.disabled:active, +.btn[disabled]:active, +fieldset[disabled] .btn:active, +.btn.disabled.active, +.btn[disabled].active, +fieldset[disabled] .btn.active { + background-color: #f2f2f2; + border-color: #bfbfbf; +} +.btn-primary { + color: #fff; + background-color: #607D8B; + border-color: #566f7c; +} +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + color: #fff; + background-color: #4f6773; + border-color: #3d4f58; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + background-image: none; + background-color: #41545e; + border-color: #41545e; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #607D8B; + border-color: #566f7c; +} +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + color: #fff; + background-color: #4f6773; + border-color: #3d4f58; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + background-image: none; + background-color: #41545e; + border-color: #41545e; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #607D8B; + border-color: #566f7c; +} +.btn-warning { + color: #fff; + background-color: #f1a325; + border-color: #ed980f; +} +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + color: #fff; + background-color: #df8f0e; + border-color: #b4730c; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + background-image: none; + background-color: #bd7a0c; + border-color: #bd7a0c; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #f1a325; + border-color: #ed980f; +} +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + color: #fff; + background-color: #df8f0e; + border-color: #b4730c; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + background-image: none; + background-color: #bd7a0c; + border-color: #bd7a0c; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #f1a325; + border-color: #ed980f; +} +.btn-danger { + color: #fff; + background-color: #ea644a; + border-color: #e75033; +} +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + color: #fff; + background-color: #e64525; + border-color: #c63317; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + background-image: none; + background-color: #cf3618; + border-color: #cf3618; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #ea644a; + border-color: #e75033; +} +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + color: #fff; + background-color: #e64525; + border-color: #c63317; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + background-image: none; + background-color: #cf3618; + border-color: #cf3618; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #ea644a; + border-color: #e75033; +} +.btn-success { + color: #fff; + background-color: #38b03f; + border-color: #329d38; +} +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + color: #fff; + background-color: #2e9134; + border-color: #236e27; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + background-image: none; + background-color: #26762a; + border-color: #26762a; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #38b03f; + border-color: #329d38; +} +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + color: #fff; + background-color: #2e9134; + border-color: #236e27; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + background-image: none; + background-color: #26762a; + border-color: #26762a; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #38b03f; + border-color: #329d38; +} +.btn-info { + color: #fff; + background-color: #03b8cf; + border-color: #03a2b6; +} +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + color: #fff; + background-color: #0294a7; + border-color: #026c7a; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + background-image: none; + background-color: #027584; + border-color: #027584; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #03b8cf; + border-color: #03a2b6; +} +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + color: #fff; + background-color: #0294a7; + border-color: #026c7a; + box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); +} +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + background-image: none; + background-color: #027584; + border-color: #027584; + box-shadow: inset 0 4px 6px rgba(0, 0, 0, 0.15); +} +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #03b8cf; + border-color: #03a2b6; +} +.btn-link { + color: #546E7A; + background-color: transparent; +} +.btn-link, +.btn-link:active, +.btn-link[disabled], +fieldset[disabled] .btn-link, +.btn-link:hover, +.btn-link:focus { + border-color: transparent; + box-shadow: none; +} +.btn-link:hover, +.btn-link:focus { + color: #35454d; +} +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #dddddd; +} +.popover, +.tooltip-inner { + border-radius: 0; +} +.label { + border-radius: 0; +} +.label-badge { + border-radius: 9px; +} +.label-dot { + border-radius: 5px; +} +.label-primary { + background-color: #607D8B; +} +.label-primary[href]:hover, +.label-primary[href]:focus { + color: #fff; + background-color: #4b626d; +} +.label-primary.label-circle { + background: none; + border: 1px solid #607D8B; + color: #607D8B; +} +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #4b626d; +} +.label-success { + background-color: #38b03f; +} +.label-success[href]:hover, +.label-success[href]:focus { + color: #fff; + background-color: #2c8931; +} +.label-success.label-circle { + background: none; + border: 1px solid #38b03f; + color: #38b03f; +} +.label-success[href]:hover, +.label-success[href]:focus { + background-color: #2c8931; +} +.label-info { + background-color: #03b8cf; +} +.label-info[href]:hover, +.label-info[href]:focus { + color: #fff; + background-color: #028b9d; +} +.label-info.label-circle { + background: none; + border: 1px solid #03b8cf; + color: #03b8cf; +} +.label-info[href]:hover, +.label-info[href]:focus { + background-color: #028b9d; +} +.label-warning { + background-color: #f1a325; +} +.label-warning[href]:hover, +.label-warning[href]:focus { + color: #fff; + background-color: #d5890e; +} +.label-warning.label-circle { + background: none; + border: 1px solid #f1a325; + color: #f1a325; +} +.label-warning[href]:hover, +.label-warning[href]:focus { + background-color: #d5890e; +} +.label-danger { + background-color: #ea644a; +} +.label-danger[href]:hover, +.label-danger[href]:focus { + color: #fff; + background-color: #e53d1c; +} +.label-danger.label-circle { + background: none; + border: 1px solid #ea644a; + color: #ea644a; +} +.label-danger[href]:hover, +.label-danger[href]:focus { + background-color: #e53d1c; +} +.btn-primary .label-badge, +.btn-primary .label-dot { + background-color: #99aeb8; +} +.text-primary { + color: #607D8B; +} +.text-primary:hover { + color: #4b626d; +} +.text-warning { + color: #f1a325; +} +.text-warning:hover { + color: #d5890e; +} +.text-danger { + color: #ea644a; +} +.text-danger:hover { + color: #e53d1c; +} +.text-success { + color: #38b03f; +} +.text-success:hover { + color: #2c8931; +} +.text-info { + color: #03b8cf; +} +.text-info:hover { + color: #028b9d; +} +.text-important { + color: #bd7b46; +} +.text-important:hover { + color: #996337; +} +.text-special { + color: #8666b8; +} +.text-special:hover { + color: #6c4aa1; +} +.text-muted a:hover, +.text-muted a:active { + color: #546E7A; +} +.text-link:hover, +.text-link:active { + color: #546E7A; +} +.bg-primary { + background-color: #607D8B; +} +a.bg-primary:hover { + background-color: #4b626d; +} +.hl-primary { + background-color: #ECEFF1; +} +a.hl-primary:hover { + background-color: #cfd6db; +} +.form-control { + border-radius: 0; +} +.form-control:focus, +.form-control.focus { + border-color: #546E7A; + outline: 0; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(84, 110, 122, 0.6); +} +.form-control:focus { + border-color: #546E7A; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(84, 110, 122, 0.6); +} +.form-condensed .form-control, +.form-condensed .btn { + border-radius: 0; +} +.switch > input:checked + label:before { + background-color: #607D8B; + border-color: #607D8B; +} +.switch input:focus + label { + color: #607D8B; +} +.switch input:focus + label:before { + border-color: #607D8B; +} +.form-control:focus + .input-control-label-left { + color: #546E7A; +} +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; +} +.btn-group-vertical > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-bottom-left-radius: 0; + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group-vertical > .btn-group:first-child > .btn:last-child, +.btn-group-vertical > .btn-group:first-child > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn-group:last-child > .btn:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.input-group-addon { + background-color: #e5e5e5; +} +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; +} +.input-group-addon { + border-radius: 0; +} +.input-group-btn.fix-border > .btn { + border-radius: 0; +} +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.list-group-item { + background-color: #fff; + border: 1px solid #dddddd; +} +.list-group-item:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +a.list-group-item { + color: #555; +} +a.list-group-item .list-group-item-heading { + color: #333; +} +a.list-group-item:hover, +a.list-group-item:focus { + text-decoration: none; + background-color: #ECEFF1; + color: #353535; +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + background-color: #607D8B; + border-color: #607D8B; + color: #fff; +} +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading { + color: inherit; +} +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .list-group-item-text { + color: #e6e6e6; +} +.list-group-item-heading { + color: #333333; +} +.navbar-toggle { + border-radius: 0; +} +@media (min-width: 768px) { + .navbar { + border-radius: 0; + } +} +.navbar-inverse { + background-color: #546E7A; + border-color: #3f535c; +} +.navbar-inverse .navbar-nav > li.nav-heading { + background-color: #4a606b; +} +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + background-color: #607e8c; +} +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + background-color: #698998; +} +.navbar-inverse .navbar-toggle { + border-color: #698998; +} +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #4a606b; +} +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #455b65; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + background-color: #698998; +} +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #3f535c; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + background-color: #607e8c; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + background-color: #698998; + } +} +.navbar-fixed-left.navbar-inverse .navbar-header, +.navbar-fixed-left.navbar-inverse .navbar-nav { + border-bottom: 1px solid #698998; + box-shadow: inset 0 -1px 0 #3f535c; +} +.navbar-fixed-left.navbar-inverse.navbar-collapsed .navbar-nav > li.nav-heading:hover { + color: #eaeaea; + background-color: #435862; +} +.nav > li > a:hover, +.nav > li > a:focus { + color: #35454d; +} +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + border-color: #546E7A; +} +.nav-pills > li.active > a, +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { + background-color: #607D8B; +} +.nav-primary > li:first-child > a { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.nav-primary > li:last-child > a { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.nav-primary > li > a { + border: 1px solid #dddddd; +} +.nav-primary > li.active > a, +.nav-primary > li.active > a:hover, +.nav-primary > li.active > a:focus { + background-color: #607D8B; + border-color: #607D8B; + color: #fff; +} +.nav-secondary > li.active > a, +.nav-secondary > li.active > a:hover, +.nav-secondary > li.active > a:focus { + color: #607D8B; + border-bottom-color: #607D8B; +} +.nav-stacked.nav-primary > li, +.nav-stacked.nav-primary > li > a { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.nav-stacked.nav-primary > li:first-child > a, +.nav-stacked.nav-primary > li:first-child.nav-heading { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.nav-stacked.nav-primary > li:last-child > a { + border-top-right-radius: 0; + border-top-left-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.nav-stacked.nav-primary > li.nav-heading { + border: 1px solid #dddddd; + background-color: #f1f1f1; +} +.nav-stacked.nav-secondary > li > a { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + box-shadow: inset 2px 0 0 #f5f5f5; +} +.nav-stacked.nav-secondary > li > a:hover { + box-shadow: inset 2px 0 0 #e5e5e5; +} +.nav-stacked.nav-secondary > li.active > a, +.nav-stacked.nav-secondary > li.active > a:hover, +.nav-stacked.nav-secondary > li.active > a:focus { + background-color: #f5f5f5; + box-shadow: inset 2px 0 0 #607D8B; +} +.nav-stacked.nav-secondary > li.nav-heading { + border-bottom: 1px solid #dddddd; +} +.nav-tabs > li > a { + border-radius: 0 0 0 0; +} +.pager { + border-radius: 0; +} +.pager > li > a, +.pager > li > span { + background-color: #fff; + border: 1px solid #dddddd; +} +.pager > li:first-child > a, +.pager > li:first-child > span { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.pager > li:last-child > a, +.pager > li:last-child > span { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.pager > li > a:hover, +.pager > li > span:hover, +.pager > li > a:focus, +.pager > li > span:focus { + background-color: #e5e5e5; +} +.pager > li.active > a, +.pager > li.active > span, +.pager > li.active > a:hover, +.pager > li.active > span:hover { + color: #fff; + background-color: #607D8B; + border-color: #607D8B; +} +.pager > li.disabled > span, +.pager > li.disabled > span:hover, +.pager > li.disabled > span:focus, +.pager > li.disabled > a, +.pager > li.disabled > a:hover, +.pager > li.disabled > a:focus { + color: #dddddd; + background-color: #fff; + border-color: #dddddd; +} +.panel { + border-radius: 0; + box-shadow: none; +} +.panel > .panel-heading { + background-image: none; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.panel-group .panel { + border-radius: 0; +} +.dashboard .panel { + box-shadow: none; +} +.panel-primary { + border-color: #607D8B; +} +.panel-primary > .panel-heading { + color: #fff; + background-color: #607D8B; + border-color: #607D8B; +} +.panel-primary > .panel-heading + .panel-collapse .panel-body { + border-top-color: #607D8B; +} +.panel-primary > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #607D8B; +} +.panel-success > .panel-body, +.panel-warning > .panel-body, +.panel-primary > .panel-body, +.panel-info > .panel-body, +.panel-danger > .panel-body { + box-shadow: none; +} +.table-hover > tbody > tr:hover > td, +.table-hover > tbody > tr:hover > th { + background-color: #ECEFF1; +} +.table tr > td.active, +.table tr > th.active, +.table tr.active > td, +.table tr.active > th { + background-color: #ffe7bc; +} +table.tablesorter thead tr .headerSortUp:after, +table.tablesorter thead tr .headerSortDown:after { + color: #546E7A !important; +} +.chosen-container-single .chosen-search:focus, +.chosen-container-single .chosen-search input[type="text"]:focus { + border-color: #546E7A !important; +} +.chosen-container-single .chosen-single { + border-radius: 0 !important; +} +.chosen-container-single.chosen-with-drop .chosen-single { + border-bottom-right-radius: 0 !important; + border-bottom-left-radius: 0 !important; +} +.chosen-container-single.chosen-with-drop.chosen-up .chosen-single { + border-bottom-right-radius: #546E7A !important; + border-bottom-left-radius: #546E7A !important; + border-top-right-radius: 0 !important; + border-top-left-radius: 0 !important; +} +.chosen-container .chosen-results li.highlighted { + background-color: #607D8B !important; +} +.chosen-container-active .chosen-single { + border-color: #546E7A !important; +} +.chosen-container-active.chosen-with-drop .chosen-single { + border-color: #cbcbcb !important; + border-color: rgba(0, 0, 0, 0.15) !important; +} +.chosen-container-active .chosen-choices { + border-color: #546E7A !important; +} +.chosen-container-multi .chosen-choices { + border-radius: 0 !important; +} +.chosen-container-multi.chosen-with-drop .chosen-choices { + border-bottom-right-radius: 0 !important; + border-bottom-left-radius: 0 !important; +} +.chosen-container-multi.chosen-with-drop.chosen-up .chosen-choices { + border-bottom-right-radius: #546E7A !important; + border-bottom-left-radius: #546E7A !important; + border-top-right-radius: 0 !important; + border-top-left-radius: 0 !important; +} +.menu > .nav > li > .nav { + background-color: #f6f6f6; +} +.menu > .nav > li > .nav > li > a { + border: 1px solid #dddddd; +} +.menu > .nav > li > .nav > li > a:hover, +.menu > .nav > li > .nav > li > a:focus { + background-color: #e4e4e4; +} +.menu > .nav > li > .nav > li.active > a, +.menu > .nav > li > .nav > li.active > a:hover, +.menu > .nav > li > .nav > li.active > a:focus { + background-color: #607D8B; + border-color: #607D8B; + color: #fff; +} +.menu > .nav > li:first-child > a, +.menu > .nav > li:first-child.nav-heading { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.menu > .nav > li:last-child > a { + border-top-right-radius: 0; + border-top-left-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.menu > .nav > li:first-child > a, +.menu > .nav > li:first-child.nav-heading { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.menu > .nav > li.show > a, +.menu > .nav > li.show > a:hover, +.menu > .nav > li.show > a:focus { + color: #353535; + background-color: #fff; + border-color: #dddddd; +} +.menu > .nav > li.show > a > [class*='icon-'], +.menu > .nav > li.show > a:hover > [class*='icon-'], +.menu > .nav > li.show > a:focus > [class*='icon-'] { + color: #353535; +} +.menu > .nav > li.show > a:hover { + background-color: #f1f1f1; +} +.menu > .nav > li.show:last-child > a { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.menu > .nav > li.show:last-child > .nav > li:last-child > a { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.menu > .nav > li.nav-heading { + border: 1px solid #dddddd; + background-color: #f1f1f1; +} +.dropdown-menu { + border-radius: 0; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + background-color: #607D8B; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + background-color: #607D8B; +} +.dropdown-submenu:hover > a, +.dropdown-submenu:focus > a { + background-color: #607D8B; +} +.dropdown-submenu:hover > a:after { + border-left-color: #fff; +} +.datetimepicker td.day.today { + background-color: #f1a325 !important; + border-color: #f1a325 !important; +} +.datetimepicker td.day.active { + background-color: #607D8B !important; + border-color: #4b626d !important; +} +.datetimepicker td.day.active:hover { + background-color: #4b626d !important; +} +.datetimepicker td.day.today:hover, +.datetimepicker td.day.today.active:hover { + background-color: #d5890e !important; +} +.ke-container { + border-radius: 0 !important; +} +.ke-container.focus { + border-color: #546E7A !important; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(84, 110, 122, 0.6) !important; +} +.ke-menu-item-on { + background-color: #607D8B !important; +} +.ke-colorpicker-cell-on { + background-color: #607D8B !important; +} +.ke-input-text:focus { + border-color: #546E7A !important; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(84, 110, 122, 0.6) !important; +} +.messager { + border-radius: 0; +} +.messager-primary { + background-color: #607D8B; +} +.messager-success { + background-color: #38b03f; +} +.messager-info { + background-color: #03b8cf; +} +.messager-warning { + background-color: #f1a325; +} +.messager-danger { + background-color: #ea644a; +} +.messager-important { + background-color: #bd7b46; +} +.messager-special { + background-color: #8666b8; +} +.comment:hover > .content > .actions > a { + color: #546E7A; +} +.alert:not(.alert-block) { + border-radius: 0; +} +.alert-primary { + background-color: #ECEFF1; + color: #282828; +} +.alert-primary hr { + border-top-color: #d7dee2; +} +.alert-primary .alert-link { + color: #161616; +} +.alert-success { + background-color: #ddf4df; + color: #329d38; +} +.alert-success hr { + border-top-color: #bae8b6; +} +.alert-success .alert-link { + color: #29822e; +} +.alert-info { + background-color: #ddf3f5; + color: #03a2b6; +} +.alert-info hr { + border-top-color: #a2e4de; +} +.alert-info .alert-link { + color: #028293; +} +.alert-warning { + background-color: #fff0d5; + color: #ed980f; +} +.alert-warning hr { + border-top-color: #ffdcbc; +} +.alert-warning .alert-link { + color: #cc830d; +} +.alert-danger { + background-color: #ffe5e0; + color: #e75033; +} +.alert-danger hr { + border-top-color: #ffc6c7; +} +.alert-danger .alert-link { + color: #dd391a; +} +.alert-primary-inverse { + background-color: #607D8B; + border-color: #607D8B; + color: #fff; +} +.alert-primary-inverse hr { + border-top-color: #dddddd; + border-top-color: rgba(221, 221, 221, 0.25); +} +.alert-primary-inverse .alert-link { + color: rgba(255, 255, 255, 0.8); +} +.modal-dialog { + border-radius: 0; +} +.card { + box-shadow: none; + border-radius: 0; +} +pre { + border-radius: 0; +} +.datagrid .datagrid-hover-row .datagrid-row-cell:hover .datagrid-cell, +.datagrid .datagrid-hover-col .datagrid-cell.hover, +.datagrid .datagrid-hover-col .datagrid-row-cell.active .datagrid-cell.hover { + background-color: #ECEFF1; +} +.datagrid .datagrid-loading > .content > .icon, +.datagrid .datagrid-sort-up > .icon-sort:before, +.datagrid .datagrid-sort-down > .icon-sort:before { + color: #607D8B; +} +.tree-drag-holder { + background-color: #ECEFF1; +} +.tree-menu li.active > a { + background-color: #607D8B; + border-color: #607D8B; + color: #fff; +} +.tree-menu li.active > .list-toggle { + color: #fff; +} diff --git a/root/res/img/bg.jpg b/root/res/img/bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f2160c41f0fe5dc538fa5ba86b78d8d95b4d310f GIT binary patch literal 23911 zcmb8X34Bb~`v-jHW`;2dCg~(iXqm}UlL#7uMuMA3q!HAJh@`bO2}02l)b2_%Bm@aT zMZ`sDEJYHfw3gZ;G!do03RPQ4?E6;A`+d%xp#A;+@B4Y5ntRVZ%d?;7Jm=h-zC88v zJkv)-bd6vt6=N#=$6lUcVN6%IuC{I+omQ)L)ae`>xa%9#uixNZS2t&OuckiUo=rVX z?=^4V>OJ2;Uz6wip#gzG!JRsF@@W~~H7q2ueaBA0ghZutbZk(+!8>~WJHcj8bMXIf zc)5=`Yt>WhN)9S#COE4coK-ImFb}Xwz+Qt&a8TDpliR=Q(L*J?Jk6XOR7}u2=<)na zOJcqTSvE)lL#2@Qy7FJ8Xo;D$QIdi6iTqc~|9GrKo$+qG*2e5n?I8_4C@kc3DJpR*Gt4p;iz@ z=BiWaplpL+GpzDWrm+&~NQ^eXjYy_9ebA1Z-_*W3k+tJRNvY@3M2R|3h2VxXlb<@x zN2}87WUd-t9j6QqMXR-!VZCp{uX=-?Sut1zR2+1oRi)Dsb(<*?EEFgjgyiTZuv5Gf z^`#$kRqm?z3~NR`tKPVt$ubm0O}GP$yn_H4)Mm54u8*5<6tA~m%qEfPW&Bs5VYXMA zL!-kWTtI`@=~B5Jgc6TcNiimuMpmk)=o-2sh3YvgPTTU^&RxF8?%vs z)KdYq+0-@G$P9WR>pM>gqO$r~kQ6e4VIiB}Rn5IUqtZMri@FdkK3D^0{|k&%!)byp zxYao_m1Q>52pXotxKM-52cD{C#+B$MxEj^6nmrsM(I}mZK_dBD4_O6DQ72bPR^6Mr zqiM(;kvaoZjB|z(jbaj*rMrNizJQt;uC-e6g;zS9$VG*ZDUy14wCUwz@rdeUFeu`1 zk026c{{IVr(@ur73Ls*yK&DcIr*gee+*KBj)=PaX@q@O?Oh?G=1Zo+gzOvRJq^|en z+BB-SXtjQDzkdLi%r4-Y4FycTo(qx9+Cdq)X{IP0CjpH1POpTJwep(9IjGeutZEod z+mtLs`y?H)#CBQiHv<#b z04131{djyrS;uDU;)jV$FL6n<(JIn5pDYp<1GUj7i!-9LWGU6uDi~}=U(^U$C{P7K zgQYv##CJdGIZQOj|A;9h0D(@etKVWaP#W<-KLV>Il|0{U1XjrkiXFYeD&St74CC=mc*N5F(Hz%onP z!Q@7qQ#iv|AvIN^2NGDq9TQti&-m%!tsh*Yx>^wJKByA?`xHf~w01fYwF|6XWR9Ad zx{~4q$*j?+HHfIxBrzgyK-5qGm3A9QwTiD-s8Ht}YPmCX(e&@a(u`0(2gH{}Cabp^ zgNa1~HTjxnsCo+xF0D(ws{-9hm(50yMHRPfaE0LQIuhx=G=;@|e!fBxq zVD!~S%`llQigI|B{X(Wusl*wgRU@=`v!S*OnmXcx2^8GbW-ge_jP-~$HVz(p46TSH5}SWSE4g548iS%Q|iz*(r;OzO-&J zk2c|Hvad*5Gvg5o0#^vv1r+8m2Z_EBzgH#zP0)n~WeFwj4|v9u+KUSYYn3o+)Hpgs z|B`B-s+O#Bg^Y|z40*WesXxPn01z=uUBe8;69^wwDD#^?@F~qp9cUsENf|e@X^(os&LR*62cgo&o^ zvle>OqlaK9%gyj>gq0CwXvtDT9SUH;DwE6-obLp{AYyC_-(H z+{y&_GUSti+Ra#Co}tq)Q)t4`^+ispP>0$#x6CCb&`O>_CL#?{7zS9G-|RSs@I!nd zYMCK>ftl&D%_{CER7s$&l^K?!xx-yjFfcV#1^x}1xh+@eB?)VIRGEu)4PP+K2n04G zB9P2Y0uR}`g-L0s;fxbnLX2RP17|F#CyKzt^ChJTu4z{=k0LzS!^fCv}E-$Qqf_J zRA^*=M|^vPx7Ml_xM9t-;zwzN)4O=H>S*^QV%gte_SxE2bOfJ5LZ(b7VO6$XQ7iksSknokadZWuvvd&Y|ph1l+g{HHR1@#zO z_&Y5%nVr)5%!$#;G>(J@7_bxDDp3jS*%NuVF+jqej4wV^F9MAqX>)iBYY(MuJ)WpG z<(7XX$_6dZIxtGG>5aHb%=~dLkJeGr;VyB%s<{SgL$-?LMzj&!nGjR$57 zu0hz*qmq6~oTVOGH8!9kcw3coW$AjWQKxk~1*NMDOk9svOxaXP6%&2vqj3w?wCIJU zi=L0kx}9}{1p@@sg@$5VqOqAq z@D4&M(>Shl-}I^P@N_-_h1rtg+lU%#yu;obj%coB8qr{8TVx>1h-3z&cEE}U`&r5b*a+?aG#yT%bgCdyd4F*T?R-EhztsjG%L>?jvD3JVO9J?Ym(3wxmh z9kXhjD@umUHd?9s$9m#gFxUi1)y<=If^5>p$ZOZ{rInZa2|UGWk+h0G(PC>ve>Ew` zD5-fZ+$0ipRBmt>_3%-N84)1_sR${sj_EYMU$yInO2Eg8K4C&#T-jHyss(FY3o9A> z&J=@H6z)w-S&${5V2aeK9I<#4P=;g4qLLPFM-vnBO9+<^J3&Cry3i=bwx?K=23}-m}Y<&vyH9sP6>$f`}kzCunx318{n1D@VKV6 zD#WNe0XL{#mPBkvB!k5LvA|cbUZs(0wgnqBaLo{7Xfe-TX2$6Q6bFUt(E$@wNH05F zp7Y)J1}2j&YPWbO{u9)%11TExoG>uKZ&)DqWmx^0=WMP27I3Q38x0`l0l^SQ`amt9 zX)e^k=`SW6{dlgyEE8_UIjHn1=Ob5!m~fO=@LJqR*=B@HfijNY3<8$f78Iw=f>9Q1 zMfC$Bu<><2mHY(?QJjSoEy)t~ z5rlM?LcZzKv$&5f=`=-{s2b~(26E_y#1uA_5hMrg>rLTDF(g=|(TuG!npD0nk|f)h zWus0Lr`zH>$jpqq4cO7k6si-INBx!p6f9Y*vee)g0WDeUsK;JGWH~MBP>#(f9k`4t zGDDYZ6Wy$R>|13e24J*C-9}%IJPVuqNChhbj4aD*W`v5q!*nvU)7B~>l)7l49f?$; zVvZJO#3q-iqMT$6lls89RCM+TH!(Q)>I%%tnr)X&_$nZ`Y@xUFaLH=bNl-12>x@tt z0vBNgH;Ci3Qp;OyIJg2+3U$N-8D(-_GMACb)@WyDHo8VyEqhU|vVwwq*uKB6rIwC~ zpJh#sFVy(NftX@MPKHpiEVCrQGIrmIM&2##EA%&GEt?Yx1MqnwL_@J!Ro76ruOcFC z%mqfqvd@gRepSK8L|!C(;NCl7$5P)BC#_rYAX5#un8*uM<^`25Qbz1LV6GJ! zn;s$O8s`I(&L2+l9dd>=h7|~QRp~@&m5fbDbVM>&nc0r6An0qK+_|ozY=8dO%`T`& z)gVbq62#faO%2im3GDp8P5v>~h z{t0$6s3e>iPt-)*u!wg!LI$%)l0mPP^;TiVY9rI;nBgz*NfiQzaxg%Xj6fBcbfk}r zLID_gBdpk`hCL}$9EJKz=%vP3fvG!~37<~DjCF)u*1#mRLwS4xz^htQe+_0Hfv%oM zA=Ye&Z}${l`_D_QyDLJ$;wro{ku-Fi0Y3s}!6NBa(HO}f@NEpUsuoCijv*}q$MW@&Ee@(?ctC zx@G54#BiJayp-l`J?zaxyQ5RBNpxCxLalof0UEl-ndI2 z#CwgatV;OLr7nIFbx}aiSfp0#8i|cO)PJyrH5yy(YAtF(mp~Ot8%R4?RXu(GEJ+P3x<24|jGd#}Hry#h;O8mUvzoKk34*Y=MRbl~ zjoCL;gaV*sS7w$#Pe(o-8Y7}Rv&^u{+VzU1PQ%s!Dg&2 z@v%lo;}fY*EfBjP6G_df^o{B*A|!~+pVG3ZE^>iUt05~uZW6En;}?kv4*9T>w%`e8 z9c5l_ePrZ$k+irfw#N-p;m{QY9@cAb64Pt77G1Wmk2M^mMzW_d&JazJ0Ff?CqKKeomY8|h@T6kSp}J79S0vae zR1Lyaj=>2{0h$!hsFekSL=v*Hb8*~I+w{NhBC3^Hphronpd=iK_{XJ8Ib+zEHgr>fdj8c z3EaB1v2suQf7O>!8OE<7^kb$HG%j%;RzkkoOpM#ZKj{zv%$n9bkiSB2aCk2v2I?y? zBgsUwP{@jsNomRe<;JgSb3HdndA6gY2S*o4ZH5Y|>`NCeg<&S?uQv8+oc+R0&CR|s zcB-T!m3|8j&k*;!;3bI`74)+M_k3Qab%uk+h?~TH)ou?^bo7u>%Sq$roGVFqEI`nL z*tDBd0MrDQJ;-c!7R~FUbCh?3)byH+y(i_Y+#hh&iM&#VR8Bc4q5yy-dWqWy4_1+? zIM|t|H;!p)v&K1e{Tkm$?h2w+>0#FmJ@_KZkq@A#C=$M;N(_9ZFRN!vYqWA(QvX+A zq!Kw5V@6mgJZ+m+$SDFT(MW3q!9U0-RWL3Uh+edwCM1E5Wu7#N|CbX(41k0ms2NqQ zEivhaZD9Bie=MW8b`>AAw+yxO=JS?L52#36#djTj=5oXOVG7gCZFoe4#R` zLyUBifc?L1fyP=8l>)X-u($)BU~`jbw=K270Fq1vC6HHtIR+gGk8O7RE;Bl^o8$8R`Mem z?jUK5xGC1AJ7nND%seBKKDFizDlmaUrGORKsISOaT)Cnu1FPq;o)^s=fiX&wBwn&# zu+pf){q}xm6793aP6=ZAVJC`J*{Jk{t??qBW3igBn?SA1nEw!E`dgWEu8ri=@ZO#= zwLZolagnHi8HV={&RsYSoB}9dgU-Yl475m8A<4M#2&pq--_BKJz(xoqByQkR#ykNC zCO>!x*Bm`^Fw#{|7pxfmj+PwKr$o=V>hLn4kCDGcLA$kfVZ^3IMmr=!l0leZk~9*9 z%NkxN{*weca1e0?Gx(Xh35#uJn)}>N1~JDGD0rU!CKa`;mxmTui#WD;fyq4_8OYWIN@Ptn+U5Z76CdDwNT0om8cxzvff5gS%H~p%Rz<8%s51b zQ2$dNQWO9;BW^|<56QS=3;n6JMWoLDY7luJDgjobhGlTY=#ro*yEIm=GS~&gxbpr< zs`eB^Aw}lLNFydcQ$zP!ysJTxKw}g6-Jr$kbQIw?r13VHMdDD36EqH4DRQA?-qjwt zl`=<6MTst!EGDu*D!~PW1+a1|SB8)tLzVbofXNcaDUe}MBHyJhZYIU26FZZlGdUvXH(glJ}5Bd{)G_YimW|qjxn}PPkOzKCln>2~c04b_IID zAdw2O+tO~u`PEh<;h+o&prs3+I|3+WiOg4_Wj0y2P!rzCfj@F&?t+*iS#*Mpxf&J- zv2=>Z%<$u8(1~au;3CPgp-aKXlHvo1nBXT>X_U?0U|P{zsw+-70J578?jWvdZJ#!W z6+eUCAP$kld+U`nZQlfus`1lVb-i>%0|5O~LCp+iqok;j##5bD6=}o`Pd413C^#IE zQ`7f@RA730az^Dh0V08pU@*vQ^xy(OZ-r5*6H--RA4OPOUucy$UUUZ)-vxLA!*=74 z&SdT!acPAj+{4Zs3JU1?&B%Gx6DdMt;?qPAVelqgq#ksbjjnk2N15CtA`y~6f4+TtBYhkc^ z*i6i8(uYVg`uQ`HA1OeQm&UyboDv2TH3XUl64Q5~CrlJR6Ol^NF{oO`tF0`UU#+25 zCTp#F8#7oW=BO{{o*l;&&*shiqQ@1}2Mj4-q??2v4&~}gOvD=)bTHON4S%x@eAo}5 zEm;P>j)MO>QRH{31do*>?shVEq((@l6A2HFE2ILeD%3s?6%9gjOvENbyNLSJG{Tt* zmB>PDCE-N}mFTEPJ6Pp@LIOcuTbSS>Yep10OAF773}3#)wrJ#sMWIAjXwjBr9A&-GXkaR2ml_!|WjO zyHOz)ou$M$1S%W=qo*K=NL9CoL7z|Hh8k3dTgc&+|0+25Gf}}ALqecNLAwsBUTLPdr)gWfd#grvF zJ|cMyxzoQui)RtYfS=)D#mGg}rAJ4bWzGVcffUZB*6?_MH!rBMNQ#Jx+O{z6dm2gc zJz@Z$(rrPe0p_rOV=_W*Q9{ELpxfq#6nnkPbFdGl5~|3P56x(b%X!fG#w3 zOd@v(;te%m6@Hj`64vEn>4=oRoRgwgKTzZwAR>m$2<;l{gF3rxdKNYaR=|6sK0+Uz z2%B+`i3`ah8PEdZL|9W)Y*p0UhsnZTHe_WeiKkzr644=!sp|2e_VLU}XfUBv;rzH# zR3r;j^yzZM72hh^<$@nb^iI!C3cgCDXu@FsKwiPAmd7y=NnEW_TM1aoiI1ny4 zwl1!Zk+>zwiioN~lvR<9@GL@VeDhpO3M!B(dj|W97No-QR8GI*3pa)si&=%c#RZ(f zNWd*KJHSSYPiS$@W|25yG!h@e0U4H;_(l<95ZOTr4bTttf!CFsR5_k$Q6hrm@di?! zmbk=V#go8L4#p5jG!z6)QPC3kB{1UW%c7$VQXzQ5aw4Km!)%l(fh=P%v!Xy~F^)OG zIW!XaJa>+n$x4a@ZVNPcb1IO8AiOfciW|g%qO{ED8^xy%RZwWa=NzuUuEcJ&hDkDr z@sT2iNisTdVqtAVMegiYE0<0{Jfz6ZqVOUCB>>(cBjDTAGRj7-OG&^fLNX~9&wv8F zOqMnDrijErW{ljAYz+V9O&G%!j&1-IU5xmu9h^dK zL`_v+;u4~PJ`J+SIHWW(8IQ0u-UQqCLX0wPe%Zn>ccH*?E|PYLjYoIB=D$G;s38Xk z()%_E=7Rfa>!;QV1ymy1@U}>zj$Eb!k`Dme(OD00aMVbh122}BVo`RgvA=8TuV+{ z-+;0aXb6ZHd9F$!ftQDNKh{V-BpG&7jx0(dVc;oButG}M7Lx@ZF)f1V==2IuR%0_xJ1uT-~*p&$uL^1t&9 zpf!SoDhhiyGMa-(6)QMHRDf&xD4i^j)GBnt2wje$68=Tnh5P^i#Ew7VpeCA-%Xxfuw}*e>iP za;kck)V+d>jctL0gbt#N^j~hT1v9>P#i8i z7FtD=nE6d=c+Cxa3{t4Agg|!rC|GfabXp+MB$GMgh$ko$R->kl3;`qt`Aj{iQs_dD zigQrrM2j>)hfGd!lP&6%gH&dk>P0xTje`;ev$_zmgA-Ts5X!Bfc_YSQELSDP2ob1l zzTI&2O*FzliHi+B6kh~~q(p#BFS)3IdNhLi{jsUni z5K6H@Rc}DPEz)q3Ocg3KHHaf$0Y06`waG&kX~gUd`56v!-z3P$=Nw%q@{?Z*F^D84 zGo}Nd=*m_Tql#!K$H|cbHQ)$3)y60hl9mwU%9!|e z@!*yYf#fYjmi!Y-w}f$9SPody${36Zhrc)=nxe>Ow_sQ+K`4a_J;|zgCX=z}fvO=L zE98#L+|&ldiL~|L-4B6FpJVptuEGmEVAdI~?3s*(5cf6ss41gVWAX}2rP3wK_QPN% zAg`5_-5!JkLA4*QI7~%c0zg2^UZ(QH3P9>qh%G`P*I-{-?dfCM;u#Br$ zGLS>op@K{^=YpC>dm&YVm9iXqT_p)Zqd=Zwqn$eqZIoa;a%$)ppNjfLG&OS0GvTvU+I)4`b zQCF?S^ekcXy{11%P10D?oIUhjxX!%FvA6~6*1s6P-VV=#eb0>it^c^kXUE~X?aWC0 zTg=P!Sn+vv>*DL1cV8c|tZ<*Vh{1qL=A4)>jvG zLYv|pa^1`k9&z;Y16`9-*;MK88zNB=_>^^KcDE;S5(x3M?`&D1w`RvmnH%P~kLlTKJNtE?OLB&1pAw!ihXGKY0X za#?2cP2Y#dSES@!_Kk{KUzYPt5Xxuuo7Qhg^K4QHk*{Vkc11+DI%|T;2Y3t)stQWB zjq9rof4K4XvGNtUj?>fL(FWjPY*7#Q7;?ws(>6en)26bvYvgBmI7Kbh4 z>(|Xqu58qyQGGTxkO3i}iNiT~P=mx#?OZAz?<=m_A~ney%NoqOliZ=sT-C|j`M#?c zf?U1oFTWaGa*}l{xRzWwz1f}VM&y`vqz*td&SB+GU!R$qTk-tX?dqxM)7hc(Y8ful z;ayfaJygEGuhFtUw*ANbRNeQIwTJX+Cfx=6HH~sJHhJQHy2q_{RfUP8=0$pG#gpF* zUK}3;6|Gkc@m@`)Noz4q9yWLN^0V7Jw@71u3h&QcGk9U&wD_p;pOEr^N;~6v+UV`^ ze?0oOq)%>x4@^RAe6z2|7B62MKXO}qPzO$qW>XU>aYVmcH>#(W5A}>tZ(MeP`{st9 z)^G5wINE~GX8*kE_qsi2Dsuir_d{?3ZA3t(7~<8q`|XO!Zl@AIT|LjM{zpIGy0v~6 z4mh_$&gwsAb3E(UKdIAh=^rmye8sd_=bF(6>Qya2yY{10<2zY(H@Tl4I{o4Ds;A@T zXV#1^7*w_V?~Im`!(4}T^4UOer?)g3=<>~Qz1ogU{l-mZ9(__=4|sErlX(UI>^d~I?#vC-L` z<%ypj&d&dG<3p#Bm-YpuMf656*>(o;>f3GCM{X;t=&#-Pex~>^B=O7g<#*=$WV#Ja z@vQ6a>~UsfNuRsF##fEp-hbSGs)E+J?}N%5^3UyQ+@M?Il#S1qp7m<{!IpX7jGET( zc3<1{?W;EU^1g_O3-gwQQujnXbC6P2X9s+D_TJBj_GhTJ{eJ7j-%+1i0@Az?<}wrA z4|wUl^ck42&pY|8Kax^>l;RwPy6Yp0%PPh!*u~I^9IL^6&qR;2KU_IfwB=&xv7;*% zO)42(xNql0_JzpsKc&dd6w~WUFPY=7(--}+%atbRl>7jg=F`m4rsYqcrtG-7{Fjr> zH##6lAy+w&X)!W3sn^Ea^Ibmc{NA*Fw^DXaIO%t2?<0L6b)azeXF%rdi(zQ&8(h$L zer9J4yHqqQ=)(Ts`}c>AJyNvg`TLi`g1=9Rf4Y6j#(=v`^Di}QFm&4O2W=CFR$o~D zd%zFX$I9l~J7#ei`;DsJTFCRO$Vv(u;7wm)c zl@UNeVepGI&$?au#P%*eim(qJZ|%H3BDcoN{ZL5Dl%E<^+|pP4eXi5A1lPUCuZma! zF^gdu?ST&KcTVzO6WroLn|y7>EvK`4I@eT;zMD8`GLFG%&YAQb-#M{&Y59&ro!)=^ zm8kk@Xo&XCdtX*hnf_kI1pn$870+Mv${ZS^%6odHWY4|4&w|d^t!Rs>v8Xz=V#@Pd z7xuQ<35H&>qDP%dPd#fo^v2ZrRIGZ|H1WpNIk&-N-g3t3{#bo%iI&Vc`;*QGOUgTaviw};(4`eqz6svb{@CKD z@n@g>F>zMe5^bZ3XPZg#TL_MraXdth+KG^GhV)o>&84p^rexka-!(qzp>CzV!OXdh z0>^f!Yh|$ahwpk+938do`ljMhQpbb$ns!QAJTH<7?{9KG5ez52wJol)u19|S-TN!r z^`81p2lc1A4fEOtZ+_Nv$g`nx!_G}cO<7V}F=g9;O$-@;{LxERGXKH3ap_GKKRLE! zdDSDU7K&N8=g_gG`JIFA^}F@xj@ONb*~^bzh`ZmWbZDneUk>d&Gx5~h4~HIFqOP+T zOE6zpgDS=>^r=xj4gc{`O5XCi3+i@JvWzvA4G*qpk(VD6Sh9TaM`Om;-Lc#2a@2r% zPTve(xNL4+#}&=q88D^q;hbIZc{hqDoR#n0-S}6NDSZzOzP>jxdimlW4c}_=`|h7v zr}sL>-%Z)^+_6dQgv=)sk7eZTNlpBQs!pj#QWgh}cE4CuI<(`B>ir9^j;IbifB&k-{eijxg%x9tKXE*N^gmVQ zkKTD)^2ZdXTNf&Z<^6pr=yr9_dBZ66fssJ+qcIC!1gvO#H@=njNJ?J*tXA_soqWvZ z8!}^UG?K1T*Zf;4e^gAV)9d^5e>l870{-mDmj*K}pf6}q}d5`|MUXyuw^_}h8^ByOHX2nEUsyPQ06PW^&J|3lEg!t!UNwn_EFQ zs}D}zxT9U~(W^_BY_I-q#oIx*TD6@UHRgG6$BmCl@=yQe7_=vC=y!RKQu5E#JURKz z{K>~Y>(nIW^b}|&2*%**xihN$?%OLGc3iUciBrLo>WJu^73~}4?Rp%Nly5k+v|>PP z+mNAulvEu{d)zl`XyDzVyw9IE3%b#GChJbFBa%bz-y3NETn_nEBQJR)Pw?MuCb+;r_PiRre*LaXJs*AM@dDY~&!ezW z3&BUG0&}RNac~ecs(QeO4OuVe=uaK=0io6}uv<&WHkwwdEu&k{(73$SdrX_au<%4F zHEY3f`~JY6 zJ!xB%fBetq^Ue1*FNp8u7k>4v%KWqk%~p1-SJTrnNqLA|?wFGll2*KGQsZvV8+Si&zc}{Aq|dhXY}4%P z>!dB~XWM66yXpt-&=MKUu!u=dvppHU6XD ze(G57WY_2>0}tQJKXLkC_qmZ6AMa@Tdgj=$4nXsB`W4G}_nNz|9GD&3+;#JUcDp05 zgr|6VWIG+6nG_b_bim*CLi^dBuz{%^o;$B|Z0^>z$$uty_Bs+$uiqKC zPr(D#_s6=oY?D#)S_Z^%q+a8#vCR^Ef&_e-6^_fcaNX{&qdl zy)?}I?@3GCvP*vKa>OO+n)&pQ{ZGQC3?_kRCAvTM^wv7B?s0<#WKKSHsN>Hlbv&(0 zKQ5^KV}~PYeE4y{c&Afya+1pK&5k(!;zsAR_6N85J!tO!xVdNe+(u4`O`{Us%eCk~ z;D`O(k^`@i|v7hb8Ol&&nk3Z8_WtCog8xKuxYQmG} z>W$(IN3VpU_;u?xJ>uL_V#~AJLjiwx$en#Kp}1Yd;dnu<)tk_N+;2PL4aoryx+Jyn zbc;Bg{oDDNW1n?geI#U0_T}gETm3n4y4TUCO?p+{d+}k;qZd7g-5mPe?61Fj;u&$c zs4Z(mwu>=I-Taz;c7EZdcBZ~-PC-EQS(dfkq>VLAn%z9* z-nx|VRxYc`eu2fmzI$-?4?<~T(Wx8bgNe;I3t#Ry*Ece9TC`(k)(+p+6Qi5umCpJ6 z+3X+IfRMT6;4Z~uv)dm^aJf|wd*yjrUk}fag-PeM=X=~;v3JMCpFe1Mz00U+A#aC7 zJPG^rbf;nNcSmN7xxNuzwJUBT9Dnw~A$!80lt=Yjls{QFdV>D)9PcL|{<-W@NaqE~|J*-5 zGqy{Lr=NT2FL5`@uV{T`uSTAh zba<65tJuu~qkAQdn44YPj$}(F3CnwM=rUwgks`9a&(oOgiRbs-g}6fWB~!}{u0MB6 zb-#Tmw#8|u$t#k6xf6Zy&f7j2TNlp^8Q^&>V|0?W^umVUYZ7-IE%BY83yEKp@KL`z z`ke*6B0vAB?~ckFC;R93`s-2?|D!HrF5Ypumf`$y=JbzCEMZ0C=QQw{>W2YuEphYt z)#c)WnJ>0RZFzUeoSUutIel3WeIReg`Id!QS?7Mqjw=o;>O0&J@pw~Q@tDfp8w{P- zO!wZPx}UJ=*Z5CXH%VHdnKA!t#<<7>D|cNx^u)90oW1?O?d5-@$fu=$|JdfecGWDb z+@8K9I`Q|7bF+%o+RDP1$sdak#cUX!Z2Z}SqFa-5oae`6wrzaAYfZ~#u0Qw7 zZYICT(+qyEY|rVBerYnk<%H~&efth@a6i;3zjOy?Tyd=VVdVb5Ry=Cfd26f|TI?1H zZ>Z_Ev}^I_i`6BL%SOy~+%`NU;>Gc2j%(H&%ntwhk3V-Tn)BY%LEZAwUo!8$nlqWZ zS_#dgyC3K_C*b_D_pZME-r-ICf9Un=y#9X9)#*>&jvQP#WlNi`#m!T1-dyxc%!D7+ zd)6c*9tvNfT{va%j3(!OHe7vwmRql&drup`Sm)gD?Jst;%r2R~qh{pz{F6f_%ntcs zX4bh6`x*C?Z}yzr^ZJt0+3t7xhsHY{wk>OIIDEO|H(STfid>ww)jKk~MLm~-4q->; z54-6W9TeHyw63Jx_z^c|CU|7ObGYyIn4O(^KR-7yWKu%E!>xX|Ec5fuICZYm%p2po zVL8uF7~g&IR|S)MCKqR|GL$bZDfURGRrlw)Q#+Q8P5Q3!Ro~G`Z-;a_;$1edvL>ti zOOwtPk>A5w7~|)vwYc5HRQoUyEcp3^&l>PnaqJs7Lkb_w@qMSjH|u28vfy?T=jL;M zVr|pIelPv4sAk>p_Q&sBykq>Xsn3j%Ltd-GigdRB^wHTYE42}8*RC$gOv>ox=iRy9 zywaqS))OiM?J6Ii%t+=hc?{+vKJnmag({|4l^Ngrb((yzi&g>y~xH z(r=eP;j^4wS9l}QJD~FUSH-bqSDHeRlFYg{3pZw^U)VEdKdcAE=|DO}z z9ow&iXV}yR0T)Z3dHr1#G(D!u^{4R*mj%>}tNi8U!V_DcSIxKVEnR6nH+*zW+*rfx zn*%zfcKhzfoo=0`wp^w;lw4H}-9I#SpVwPsMGgI$#Do-1>~#Z=@m+G}A>Yy^ zwQV;^(MjUa<$6j@wtjZ)9k-5k8_ekM(Q-)nw0n*-{R9EAE^sdAMv~ z&EIv-Jo3+%)EL<@@)`+#fWpe6jSxcYk;9d@MU;@SVAvPTc&f^PQW!e>=N%;MLOm zk2{yXWPM(;iCg~mo;t^E0Hs5V^a%5oi-oMpNS|z?%y=(P>zuO)BwB*!?OV7i* zr9Qwq*2pV7eE9HS@9xW8R>chaq1Tn^-uH_qW>j^o7u_Vrzo2!op*(->v4D~am|*wZ z)Ef73H7(uCYo@K8(z&c;p#LWW|9aMA?QdPX-Mq8=P-()Jsu3$SH{&J^vlh;EUO9Yt z>DP-ERxWp0dE&2l|DW^6_Y4U3iJWrLmNPSU#KQ;sB05bnFY$Mt|IWbmzdEl943DMm z&2q**e|+Y|2Zr|77lnWJ%c-XaW*y!6!Ndcz{`kGlv$m-Za>FK#uWqoRzo%p7rF$c$ z{~mF)@AL4P@h{oKx1XhSzPGmXql|l13lEQM?KLdBardHjI}%2YIdFP##@3^64O{%) z3BP99Qx+cH-8Jd?g2N%Rit-QnFYsC%?)x0cbJe-?Rae?gEYF{iRo*oFV#T!N&eemzO=*xTJO16=P4O#M|hoHVoJUyZbuqJb&Sa_Ll8Y(bJu<5QY8 zZTjB!_9sEmPrrF<+*3oRA3w$md* z#&-Jt2C8>=-`cYD(`&JQu8+QI`2NONDCflZWm^N!u9Qh3tBX=BQ@@QhWqx_(?1Hm$ zTJsvG{&V*4-+$OM>#uG_nU$739~`Xm4;j&6Ls71_=U4Yzm3&?Q;kMS5KMb5PUtXSR z*?sa-&CHpmP7RBmJXn)Zr0ugOw6bPwhj$wRv=-L~5jz&AJ@cJ4Ykqd$9rK=_DVjG| z-TZ#JQ_t@{UtM(SpymEZw`RwRPfa*HwM(wH@0CVxcPhJ3xhS2EoCoF&Nxh{DbT6H} z`0|AoN5^9|Ju&9qrgF{c8&e{Nw+h)lJaXKQiSNy^>^_!w;nT~N+mnaUe(mr2?M)NX z!-{ep4+poX_h`Y7JMYa&DVn#vRlNqKmb-UQ^+`j=CTq6`H@SS?bn5BK3FVF@-#=Zn z>(*~LoUlFkY{#t=WA0?#m{vbwW~)XAp0$}D{mH58KYg-7nsupd;fmxxK5!p5B}Dzf z^@}Aq74dYY_ttn{EvV>|0Dv=7eWAAwl4PUleKG4iKl>0=s?O~1DRb|fI+adv?B-Hu zK;x@FJ~)M{r>Py=FKFD@**V|i!G2HAcJ12F!js2^6^X4|dwRCtKkZKVgrVoUXJ+0> zPoMwih!LMZUHg)~m6({A;0b8m=0cCT>31rQjQB9wYkzP+k;m!Cn{^JAJ_~HWA3Zu; zEh=)(&R(HU8u~%IcAjlY8atn^pI-6Hhr_*syB57$cnL8|_ozq%hA z)~57E#FzU!$1I#0;jnS+f@n+TS}yR0fyt|82f^$`$udXTI~*{NnAMF6_t{HRhANJDx2UUmg{G t&F6M>*f{<3|Fpbvz2(`n$3}d4^!va1_jDZo`HA-9MvZ$iyWz{K{|CDb8{7Z@ literal 0 HcmV?d00001 diff --git a/root/res/js/red.js b/root/res/js/red.js new file mode 100644 index 0000000..a3cc2c5 --- /dev/null +++ b/root/res/js/red.js @@ -0,0 +1,141 @@ +var red = { + showMsg: function(option) { + var defOption = {msg: "操作成功", type:"info", placement: "bottom-right"}; + + option = option || defOption; + for (var k in defOption) { + option[k] = option[k] || defOption[k] + } + + new $.zui.Messager(option.msg, { + type: option.type // 定义颜色主题 + ,placement: option.placement + }).show(); + }, + getData: function(key, defaultValue) { + var v = localStorage.getItem(key) || defaultValue || ""; + if (typeof(v) == "string" && v.startsWith("{") && v.endsWith("}")) { + v = JSON.parse(v); + } else if (typeof(v) == "string" && v.startsWith("[") && v.endsWith("]")) { + v = JSON.parse(v); + } + return v; + }, + setData: function(key, value) { + var v = value; + if (typeof(v) == "object") { + v = JSON.stringify(value); + } + localStorage.setItem(key, v); + }, + getPlatId: function() { + var plat = red.getData("sysPlat") || {}; + return plat["_key"]; + }, + getPlatToken: function() { + var plat = red.getData("sysPlat") || {}; + return plat["token"]; + }, + getJSON: function (url, para, callback) { + para["platToken"] = red.getPlatToken(); + $.getJSON(url, para, function (json) { + json = json || {}; + red.loginCheck(json); + var data = json; + if (json.code == -1) { + red.showMsg({type:"error", msg: json.message}); + return; + } + + if (json.code == 0) { + data = json.body; + } + + callback(data); + }); + }, + post: function(url, para, callback) { + para["platToken"] = red.getPlatToken(); + $.post(url, para, function (json) { + red.loginCheck(json); + if (json.code == -1) { + red.showMsg({msg: json.message, type: "error"}); + return; + } + + if (callback) { + + callback(json.code == 0 ? json.body : json); + } else { + red.showMsg(); + } + }); + }, + + //TODO: 提取统一查询、请求,失败提示 + //QTASK find list + qtaskCall: function (para, callback) { + + /*$.p$.post("/db/list", {fBean: JSON.stringify(fBean)}, function (json) { + vm.list = json.body; + });*/ + $.getJSON("/qtask/call", para, function (json) { + callback(json); + }); + }, + + //db find + dbQuery: function (para, callback) { + $.getJSON("/db/list", para, function (json) { + red.loginCheck(json); + if (json.code == -1) { + console.log("json.code == -1") + } + + callback(json); + }); + }, + dbPlats: function(callBack) { + red.getJSON("/meta/db_plat_list", {}, function (json) { + callBack(json); + }); + }, + + putAll: function(t, s) { + t = t || {}; + s = s || {}; + + for (var k in s) { + t[k] = s[k]; + } + return t; + }, + + timeFmt: function (date,fmt){ + fmt = fmt || "yyyy-MM-dd HH:mm:ss"; + var o = { + "M+" : date.getMonth()+1, //月份 + "d+" : date.getDate(), //日 + "H+" : date.getHours(), //小时 + "m+" : date.getMinutes(), //分 + "s+" : date.getSeconds(), //秒 + "q+" : Math.floor((date.getMonth()+3)/3), //季度 + "S" : date.getMilliseconds() //毫秒 + }; + + if(/(y+)/.test(fmt)) + fmt=fmt.replace(RegExp.$1, (date.getFullYear()+"").substr(4 - RegExp.$1.length)); + for(var k in o) + if(new RegExp("("+ k +")").test(fmt)) + fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length))); + return fmt; + }, + loginCheck: function (json) { + if (json && json["code"] == -2) { + red.showMsg({type:"error", placement: "center", msg: "登陆过期,请前往登陆"}); + setTimeout(function () { + location.href = "/user/login.html"; + }, 2000); + } + } +} \ No newline at end of file diff --git a/root/res/zui/css/zui-theme.css b/root/res/zui/css/zui-theme.css new file mode 100644 index 0000000..e605a15 --- /dev/null +++ b/root/res/zui/css/zui-theme.css @@ -0,0 +1,1347 @@ +/*! + * ZUI: Theme - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +a { + color: #3949ab; + } +a:hover, +a:focus { + color: #263172; + } +.btn { + color: #353535; + background-color: #fff; + border-color: #ccc; + border-radius: 0; + } +.btn:hover, +.btn:focus, +.btn:active, +.btn.active, +.open .dropdown-toggle.btn { + color: #353535; + background-color: #ebebeb; + border-color: #adadad; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn:active, +.btn.active, +.open .dropdown-toggle.btn { + background-color: #d9d9d9; + background-image: none; + border-color: #b3b3b3; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn, +.btn.disabled:hover, +.btn[disabled]:hover, +fieldset[disabled] .btn:hover, +.btn.disabled:focus, +.btn[disabled]:focus, +fieldset[disabled] .btn:focus, +.btn.disabled:active, +.btn[disabled]:active, +fieldset[disabled] .btn:active, +.btn.disabled.active, +.btn[disabled].active, +fieldset[disabled] .btn.active { + background-color: #fff; + border-color: #ccc; + } +.btn:hover, +.btn:focus, +.btn:active, +.btn.active, +.open .dropdown-toggle.btn { + color: #353535; + background-color: #ebebeb; + border-color: #adadad; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn:active, +.btn.active, +.open .dropdown-toggle.btn { + background-color: #d9d9d9; + background-image: none; + border-color: #b3b3b3; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn, +.btn.disabled:hover, +.btn[disabled]:hover, +fieldset[disabled] .btn:hover, +.btn.disabled:focus, +.btn[disabled]:focus, +fieldset[disabled] .btn:focus, +.btn.disabled:active, +.btn[disabled]:active, +fieldset[disabled] .btn:active, +.btn.disabled.active, +.btn[disabled].active, +fieldset[disabled] .btn.active { + background-color: #fff; + border-color: #ccc; + } +.btn-primary { + color: #fff; + background-color: #3f51b5; + border-color: #3e4fb1; + } +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + color: #fff; + background-color: #344397; + border-color: #2e3b84; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + background-color: #2b387c; + background-image: none; + border-color: #313e8b; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #3f51b5; + border-color: #3e4fb1; + } +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + color: #fff; + background-color: #344397; + border-color: #2e3b84; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + background-color: #2b387c; + background-image: none; + border-color: #313e8b; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #3f51b5; + border-color: #3e4fb1; + } +.btn-warning { + color: #fff; + background-color: #f0ad4e; + border-color: #f0ab49; + } +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + color: #fff; + background-color: #ed9c28; + border-color: #e89014; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + background-color: #df8a13; + background-image: none; + border-color: #ec951a; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #f0ad4e; + border-color: #f0ab49; + } +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + color: #fff; + background-color: #ed9c28; + border-color: #e89014; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + background-color: #df8a13; + background-image: none; + border-color: #ec951a; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #f0ad4e; + border-color: #f0ab49; + } +.btn-danger { + color: #fff; + background-color: #d9534f; + border-color: #d84f4b; + } +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + color: #fff; + background-color: #d2322d; + border-color: #bd2d29; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + background-color: #b52b27; + background-image: none; + border-color: #c52f2b; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #d9534f; + border-color: #d84f4b; + } +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + color: #fff; + background-color: #d2322d; + border-color: #bd2d29; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + background-color: #b52b27; + background-image: none; + border-color: #c52f2b; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #d9534f; + border-color: #d84f4b; + } +.btn-success { + color: #fff; + background-color: #4caf50; + border-color: #4aab4e; + } +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + color: #fff; + background-color: #409343; + border-color: #38813b; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + background-color: #357a38; + background-image: none; + border-color: #3b883e; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #4caf50; + border-color: #4aab4e; + } +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + color: #fff; + background-color: #409343; + border-color: #38813b; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + background-color: #357a38; + background-image: none; + border-color: #3b883e; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #4caf50; + border-color: #4aab4e; + } +.btn-info { + color: #fff; + background-color: #039be5; + border-color: #0398e0; + } +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + color: #fff; + background-color: #0280bd; + border-color: #026fa4; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + background-color: #026899; + background-image: none; + border-color: #0276ae; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #039be5; + border-color: #0398e0; + } +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + color: #fff; + background-color: #0280bd; + border-color: #026fa4; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + background-color: #026899; + background-image: none; + border-color: #0276ae; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #039be5; + border-color: #0398e0; + } +.btn-link { + color: #3949ab; + background-color: transparent; + } +.btn-link, +.btn-link:active, +.btn-link[disabled], +fieldset[disabled] .btn-link, +.btn-link:hover, +.btn-link:focus { + border-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; + } +.btn-link:hover, +.btn-link:focus { + color: #263172; + } +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #ddd; + } +.popover, +.tooltip-inner { + border-radius: 0; + } +.label { + border-radius: 0; + } +.label-badge { + border-radius: 12px; + } +.label-dot { + border-radius: 5px; + } +.label-primary { + background-color: #3f51b5; + } +.label-primary[href]:hover, +.label-primary[href]:focus { + color: #fff; + background-color: #32408f; + } +.label-primary.label-circle { + color: #3f51b5; + background: none; + border: 1px solid #3f51b5; + } +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #32408f; + } +.label-success { + background-color: #4caf50; + } +.label-success[href]:hover, +.label-success[href]:focus { + color: #fff; + background-color: #3d8b40; + } +.label-success.label-circle { + color: #4caf50; + background: none; + border: 1px solid #4caf50; + } +.label-success[href]:hover, +.label-success[href]:focus { + background-color: #3d8b40; + } +.label-info { + background-color: #039be5; + } +.label-info[href]:hover, +.label-info[href]:focus { + color: #fff; + background-color: #0279b3; + } +.label-info.label-circle { + color: #039be5; + background: none; + border: 1px solid #039be5; + } +.label-info[href]:hover, +.label-info[href]:focus { + background-color: #0279b3; + } +.label-warning { + background-color: #f0ad4e; + } +.label-warning[href]:hover, +.label-warning[href]:focus { + color: #fff; + background-color: #ec971f; + } +.label-warning.label-circle { + color: #f0ad4e; + background: none; + border: 1px solid #f0ad4e; + } +.label-warning[href]:hover, +.label-warning[href]:focus { + background-color: #ec971f; + } +.label-danger { + background-color: #d9534f; + } +.label-danger[href]:hover, +.label-danger[href]:focus { + color: #fff; + background-color: #c9302c; + } +.label-danger.label-circle { + color: #d9534f; + background: none; + border: 1px solid #d9534f; + } +.label-danger[href]:hover, +.label-danger[href]:focus { + background-color: #c9302c; + } +.btn-primary .label-badge, +.btn-primary .label-dot { + background-color: #8591d5; + } +.text-primary { + color: #3f51b5; + } +.text-primary:hover { + color: #32408f; + } +.text-warning { + color: #f0ad4e; + } +.text-warning:hover { + color: #ec971f; + } +.text-danger { + color: #d9534f; + } +.text-danger:hover { + color: #c9302c; + } +.text-success { + color: #4caf50; + } +.text-success:hover { + color: #3d8b40; + } +.text-info { + color: #039be5; + } +.text-info:hover { + color: #0279b3; + } +.text-important { + color: #bd7b46; + } +.text-important:hover { + color: #996337; + } +.text-special { + color: #8666b8; + } +.text-special:hover { + color: #6c4aa1; + } +.text-muted a:hover, +.text-muted a:active { + color: #3949ab; + } +.text-link:hover, +.text-link:active { + color: #3949ab; + } +.bg-primary { + background-color: #3f51b5; + } +a.bg-primary:hover { + background-color: #32408f; + } +.hl-primary { + background-color: #eceff1; + } +a.hl-primary:hover { + background-color: #cfd6db; + } +.form-control { + border-radius: 0; + } +.form-control:focus, +.form-control.focus { + border-color: #3949ab; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(57, 73, 171, .6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(57, 73, 171, .6); + } +.form-control:focus { + border-color: #3949ab; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(57, 73, 171, .6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(57, 73, 171, .6); + } +.form-condensed .form-control, +.form-condensed .btn { + border-radius: 0; + } +.switch > input:checked + label:before { + background-color: #3f51b5; + border-color: #3f51b5; + } +.switch input:focus + label { + color: #3f51b5; + } +.switch input:focus + label:before { + border-color: #3f51b5; + } +.form-control:focus + .input-control-label-left { + color: #3949ab; + } +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; + } +.btn-group-vertical > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-left-radius: 0; + } +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; + } +.btn-group-vertical > .btn-group:first-child > .btn:last-child, +.btn-group-vertical > .btn-group:first-child > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } +.btn-group-vertical > .btn-group:last-child > .btn:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; + } +.input-group-addon { + background-color: #f1f1f1; + } +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; + } +.input-group-addon { + border-radius: 0; + } +.input-group-btn.fix-border > .btn { + border-radius: 0; + } +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } +.list-group-item { + background-color: #fff; + border: 1px solid #ddd; + } +.list-group-item:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; + } +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } +a.list-group-item { + color: #555; + } +a.list-group-item .list-group-item-heading { + color: #333; + } +a.list-group-item:hover, +a.list-group-item:focus { + color: #353535; + text-decoration: none; + background-color: #eceff1; + } +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + color: #fff; + background-color: #3f51b5; + border-color: #3f51b5; + } +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading { + color: inherit; + } +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .list-group-item-text { + color: #e6e6e6; + } +.list-group-item-heading { + color: #333; + } +.navbar-toggle { + border-radius: 0; + } +@media (min-width: 768px) { + .navbar { + border-radius: 0; + } + } +.navbar-inverse { + background-color: #3949ab; + border-color: #2c3985; + } +.navbar-inverse .navbar-nav > li.nav-heading { + background-color: #334198; + } +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + background-color: #4254c0; + } +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + background-color: #5262c5; + } +.navbar-inverse .navbar-toggle { + border-color: #5262c5; + } +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #334198; + } +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #303e90; + } +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + background-color: #5262c5; + } +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #2c3985; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + background-color: #4254c0; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + background-color: #5262c5; + } + } +.navbar-fixed-left.navbar-inverse .navbar-header, +.navbar-fixed-left.navbar-inverse .navbar-nav { + border-bottom: 1px solid #5262c5; + -webkit-box-shadow: inset 0 -1px 0 #2c3985; + box-shadow: inset 0 -1px 0 #2c3985; + } +.navbar-fixed-left.navbar-inverse.navbar-collapsed .navbar-nav > li.nav-heading:hover { + color: #eaeaea; + background-color: #2f3c8c; + } +.nav > li > a:hover, +.nav > li > a:focus { + color: #263172; + } +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + border-color: #3949ab; + } +.nav-pills > li.active > a, +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { + background-color: #3f51b5; + } +.nav-primary > li:first-child > a { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } +.nav-primary > li:last-child > a { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } +.nav-primary > li > a { + border: 1px solid #ddd; + } +.nav-primary > li.active > a, +.nav-primary > li.active > a:hover, +.nav-primary > li.active > a:focus { + color: #fff; + background-color: #3f51b5; + border-color: #3f51b5; + } +.nav-secondary > li.active > a, +.nav-secondary > li.active > a:hover, +.nav-secondary > li.active > a:focus { + color: #3f51b5; + border-bottom-color: #3f51b5; + } +.nav-stacked.nav-primary > li, +.nav-stacked.nav-primary > li > a { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } +.nav-stacked.nav-primary > li:first-child > a, +.nav-stacked.nav-primary > li:first-child.nav-heading { + border-top-left-radius: 0; + border-top-right-radius: 0; + } +.nav-stacked.nav-primary > li:last-child > a { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } +.nav-stacked.nav-primary > li.nav-heading { + background-color: #f1f1f1; + border: 1px solid #ddd; + } +.nav-stacked.nav-secondary > li > a { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + -webkit-box-shadow: inset 2px 0 0 #f5f5f5; + box-shadow: inset 2px 0 0 #f5f5f5; + } +.nav-stacked.nav-secondary > li > a:hover { + -webkit-box-shadow: inset 2px 0 0 #e5e5e5; + box-shadow: inset 2px 0 0 #e5e5e5; + } +.nav-stacked.nav-secondary > li.active > a, +.nav-stacked.nav-secondary > li.active > a:hover, +.nav-stacked.nav-secondary > li.active > a:focus { + background-color: #f5f5f5; + -webkit-box-shadow: inset 2px 0 0 #3f51b5; + box-shadow: inset 2px 0 0 #3f51b5; + } +.nav-stacked.nav-secondary > li.nav-heading { + border-bottom: 1px solid #ddd; + } +.nav-tabs > li > a { + border-radius: 0 0 0 0; + } +.pager { + border-radius: 0; + } +.pager > li > a, +.pager > li > span { + background-color: #fff; + border: 1px solid #ddd; + } +.pager > li:first-child > a, +.pager > li:first-child > span { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } +.pager > li:last-child > a, +.pager > li:last-child > span { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } +.pager > li > a:hover, +.pager > li > span:hover, +.pager > li > a:focus, +.pager > li > span:focus { + background-color: #e5e5e5; + } +.pager > li.active > a, +.pager > li.active > span, +.pager > li.active > a:hover, +.pager > li.active > span:hover { + color: #fff; + background-color: #3f51b5; + border-color: #3f51b5; + } +.pager > li.disabled > span, +.pager > li.disabled > span:hover, +.pager > li.disabled > span:focus, +.pager > li.disabled > a, +.pager > li.disabled > a:hover, +.pager > li.disabled > a:focus { + color: #ddd; + background-color: #fff; + border-color: #ddd; + } +.panel { + border-radius: 0; + -webkit-box-shadow: none; + box-shadow: none; + } +.panel > .panel-heading { + background-image: none; + border-top-left-radius: 0; + border-top-right-radius: 0; + } +.panel-group .panel { + border-radius: 0; + } +.dashboard .panel { + -webkit-box-shadow: none; + box-shadow: none; + } +.panel-primary { + border-color: #3f51b5; + } +.panel-primary > .panel-heading { + color: #fff; + background-color: #3f51b5; + border-color: #3f51b5; + } +.panel-primary > .panel-heading + .panel-collapse .panel-body { + border-top-color: #3f51b5; + } +.panel-primary > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #3f51b5; + } +.panel-success > .panel-body, +.panel-warning > .panel-body, +.panel-primary > .panel-body, +.panel-info > .panel-body, +.panel-danger > .panel-body { + -webkit-box-shadow: none; + box-shadow: none; + } +.table-hover > tbody > tr:hover > td, +.table-hover > tbody > tr:hover > th { + background-color: #eceff1; + } +.table tr > td.active, +.table tr > th.active, +.table tr.active > td, +.table tr.active > th { + background-color: #ffe7bc; + } +table.tablesorter thead tr .headerSortUp:after, +table.tablesorter thead tr .headerSortDown:after { + color: #3949ab !important; + } +.chosen-container-single .chosen-search:focus, +.chosen-container-single .chosen-search input[type="text"]:focus { + border-color: #3949ab !important; + } +.chosen-container-single .chosen-single { + border-radius: 0 !important; + } +.chosen-container-single.chosen-with-drop .chosen-single { + border-bottom-right-radius: 0 !important; + border-bottom-left-radius: 0 !important; + } +.chosen-container-single.chosen-with-drop.chosen-up .chosen-single { + border-top-left-radius: 0 !important; + border-top-right-radius: 0 !important; + border-bottom-right-radius: #3949ab !important; + border-bottom-left-radius: #3949ab !important; + } +.chosen-container .chosen-results li.highlighted { + background-color: #3f51b5 !important; + } +.chosen-container-active .chosen-single { + border-color: #3949ab !important; + } +.chosen-container-active.chosen-with-drop .chosen-single { + border-color: #cbcbcb !important; + border-color: rgba(0, 0, 0, .15) !important; + } +.chosen-container-active .chosen-choices { + border-color: #3949ab !important; + } +.chosen-container-multi .chosen-choices { + border-radius: 0 !important; + } +.chosen-container-multi.chosen-with-drop .chosen-choices { + border-bottom-right-radius: 0 !important; + border-bottom-left-radius: 0 !important; + } +.chosen-container-multi.chosen-with-drop.chosen-up .chosen-choices { + border-top-left-radius: 0 !important; + border-top-right-radius: 0 !important; + border-bottom-right-radius: #3949ab !important; + border-bottom-left-radius: #3949ab !important; + } +.menu > .nav > li > .nav { + background-color: #f6f6f6; + } +.menu > .nav > li > .nav > li > a { + border: 1px solid #ddd; + } +.menu > .nav > li > .nav > li > a:hover, +.menu > .nav > li > .nav > li > a:focus { + background-color: #e4e4e4; + } +.menu > .nav > li > .nav > li.active > a, +.menu > .nav > li > .nav > li.active > a:hover, +.menu > .nav > li > .nav > li.active > a:focus { + color: #fff; + background-color: #3f51b5; + border-color: #3f51b5; + } +.menu > .nav > li:first-child > a, +.menu > .nav > li:first-child.nav-heading { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } +.menu > .nav > li:last-child > a { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } +.menu > .nav > li:first-child > a, +.menu > .nav > li:first-child.nav-heading { + border-top-left-radius: 0; + border-top-right-radius: 0; + } +.menu > .nav > li.show > a, +.menu > .nav > li.show > a:hover, +.menu > .nav > li.show > a:focus { + color: #353535; + background-color: #fff; + border-color: #ddd; + } +.menu > .nav > li.show > a > [class*='icon-'], +.menu > .nav > li.show > a:hover > [class*='icon-'], +.menu > .nav > li.show > a:focus > [class*='icon-'] { + color: #353535; + } +.menu > .nav > li.show > a:hover { + background-color: #f1f1f1; + } +.menu > .nav > li.show:last-child > a { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } +.menu > .nav > li.show:last-child > .nav > li:last-child > a { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } +.menu > .nav > li.nav-heading { + background-color: #f1f1f1; + border: 1px solid #ddd; + } +.dropdown-menu { + border-radius: 0; + } +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + background-color: #3f51b5; + } +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + background-color: #3f51b5; + } +.dropdown-submenu:hover > a, +.dropdown-submenu:focus > a { + background-color: #3f51b5; + } +.dropdown-submenu:hover > a:after { + border-left-color: #fff; + } +.datetimepicker td.day.today { + background-color: #f0ad4e !important; + border-color: #f0ad4e !important; + } +.datetimepicker td.day.active { + background-color: #3f51b5 !important; + border-color: #32408f !important; + } +.datetimepicker td.day.active:hover { + background-color: #32408f !important; + } +.datetimepicker td.day.today:hover, +.datetimepicker td.day.today.active:hover { + background-color: #ec971f !important; + } +.ke-container { + border-radius: 0 !important; + } +.ke-container.focus { + border-color: #3949ab !important; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(57, 73, 171, .6) !important; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(57, 73, 171, .6) !important; + } +.ke-menu-item-on { + background-color: #3f51b5 !important; + } +.ke-colorpicker-cell-on { + background-color: #3f51b5 !important; + } +.ke-input-text:focus { + border-color: #3949ab !important; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(57, 73, 171, .6) !important; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(57, 73, 171, .6) !important; + } +.messager { + border-radius: 0; + } +.messager-primary { + background-color: #3f51b5; + } +.messager-success { + background-color: #4caf50; + } +.messager-info { + background-color: #039be5; + } +.messager-warning { + background-color: #f0ad4e; + } +.messager-danger { + background-color: #d9534f; + } +.messager-important { + background-color: #bd7b46; + } +.messager-special { + background-color: #8666b8; + } +.comment:hover > .content > .actions > a { + color: #3949ab; + } +.alert:not(.alert-block) { + border-radius: 0; + } +.alert-primary { + color: #282828; + background-color: #eceff1; + } +.alert-primary hr { + border-top-color: #eceff1; + } +.alert-primary .alert-link { + color: #161616; + } +.alert-success { + color: #449d48; + background-color: #ddf4df; + } +.alert-success hr { + border-top-color: #ddf4df; + } +.alert-success .alert-link { + color: #39843c; + } +.alert-info { + color: #038acc; + background-color: #ddf3f5; + } +.alert-info hr { + border-top-color: #ddf3f5; + } +.alert-info .alert-link { + color: #0272a9; + } +.alert-warning { + color: #eea236; + background-color: #fff0d5; + } +.alert-warning hr { + border-top-color: #fff0d5; + } +.alert-warning .alert-link { + color: #eb9316; + } +.alert-danger { + color: #d43f3a; + background-color: #ffe5e0; + } +.alert-danger hr { + border-top-color: #ffe5e0; + } +.alert-danger .alert-link { + color: #c12e2a; + } +.alert-primary-inverse { + color: #fff; + background-color: #3f51b5; + border-color: #3f51b5; + } +.alert-primary-inverse hr { + border-top-color: #ddd; + border-top-color: rgba(221, 221, 221, .25); + } +.alert-primary-inverse .alert-link { + color: rgba(255, 255, 255, .8); + } +.modal-dialog { + border-radius: 1px; + } +.card { + border-radius: 0; + -webkit-box-shadow: none; + box-shadow: none; + } +pre { + border-radius: 0; + } +.datagrid .datagrid-hover-row .datagrid-row-cell:hover .datagrid-cell, +.datagrid .datagrid-hover-col .datagrid-cell.hover, +.datagrid .datagrid-hover-col .datagrid-row-cell.active .datagrid-cell.hover { + background-color: #eceff1; + } +.datagrid .datagrid-loading > .content > .icon, +.datagrid .datagrid-sort-up > .icon-sort:before, +.datagrid .datagrid-sort-down > .icon-sort:before { + color: #3f51b5; + } +.tree-drag-holder { + background-color: #eceff1; + } +.tree-menu li.active > a { + color: #fff; + background-color: #3f51b5; + border-color: #3f51b5; + } +.tree-menu li.active > .list-toggle { + color: #fff; + } diff --git a/root/res/zui/css/zui-theme.min.css b/root/res/zui/css/zui-theme.min.css new file mode 100644 index 0000000..53322d9 --- /dev/null +++ b/root/res/zui/css/zui-theme.min.css @@ -0,0 +1,6 @@ +/*! + * ZUI: Theme - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */a{color:#3949ab}a:focus,a:hover{color:#263172}.btn{color:#353535;background-color:#fff;border-color:#ccc;border-radius:0}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#353535;background-color:#ebebeb;border-color:#adadad;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#d9d9d9;background-image:none;border-color:#b3b3b3;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#fff;border-color:#ccc}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#353535;background-color:#ebebeb;border-color:#adadad;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#d9d9d9;background-image:none;border-color:#b3b3b3;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#fff;border-color:#ccc}.btn-primary{color:#fff;background-color:#3f51b5;border-color:#3e4fb1}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#344397;border-color:#2e3b84;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#2b387c;background-image:none;border-color:#313e8b;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#3f51b5;border-color:#3e4fb1}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#344397;border-color:#2e3b84;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#2b387c;background-image:none;border-color:#313e8b;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#3f51b5;border-color:#3e4fb1}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#f0ab49}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#e89014;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#df8a13;background-image:none;border-color:#ec951a;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#f0ab49}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#e89014;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#df8a13;background-image:none;border-color:#ec951a;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#f0ab49}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d84f4b}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#bd2d29;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#b52b27;background-image:none;border-color:#c52f2b;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d84f4b}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#bd2d29;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#b52b27;background-image:none;border-color:#c52f2b;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d84f4b}.btn-success{color:#fff;background-color:#4caf50;border-color:#4aab4e}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#409343;border-color:#38813b;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#357a38;background-image:none;border-color:#3b883e;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#4caf50;border-color:#4aab4e}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#409343;border-color:#38813b;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#357a38;background-image:none;border-color:#3b883e;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#4caf50;border-color:#4aab4e}.btn-info{color:#fff;background-color:#039be5;border-color:#0398e0}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#fff;background-color:#0280bd;border-color:#026fa4;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#026899;background-image:none;border-color:#0276ae;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#039be5;border-color:#0398e0}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#fff;background-color:#0280bd;border-color:#026fa4;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#026899;background-image:none;border-color:#0276ae;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#039be5;border-color:#0398e0}.btn-link{color:#3949ab;background-color:transparent}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover,.btn-link[disabled],fieldset[disabled] .btn-link{border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link:focus,.btn-link:hover{color:#263172}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#ddd}.popover,.tooltip-inner{border-radius:0}.label{border-radius:0}.label-badge{border-radius:12px}.label-dot{border-radius:5px}.label-primary{background-color:#3f51b5}.label-primary[href]:focus,.label-primary[href]:hover{color:#fff;background-color:#32408f}.label-primary.label-circle{color:#3f51b5;background:0 0;border:1px solid #3f51b5}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#32408f}.label-success{background-color:#4caf50}.label-success[href]:focus,.label-success[href]:hover{color:#fff;background-color:#3d8b40}.label-success.label-circle{color:#4caf50;background:0 0;border:1px solid #4caf50}.label-success[href]:focus,.label-success[href]:hover{background-color:#3d8b40}.label-info{background-color:#039be5}.label-info[href]:focus,.label-info[href]:hover{color:#fff;background-color:#0279b3}.label-info.label-circle{color:#039be5;background:0 0;border:1px solid #039be5}.label-info[href]:focus,.label-info[href]:hover{background-color:#0279b3}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{color:#fff;background-color:#ec971f}.label-warning.label-circle{color:#f0ad4e;background:0 0;border:1px solid #f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{color:#fff;background-color:#c9302c}.label-danger.label-circle{color:#d9534f;background:0 0;border:1px solid #d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.btn-primary .label-badge,.btn-primary .label-dot{background-color:#8591d5}.text-primary{color:#3f51b5}.text-primary:hover{color:#32408f}.text-warning{color:#f0ad4e}.text-warning:hover{color:#ec971f}.text-danger{color:#d9534f}.text-danger:hover{color:#c9302c}.text-success{color:#4caf50}.text-success:hover{color:#3d8b40}.text-info{color:#039be5}.text-info:hover{color:#0279b3}.text-important{color:#bd7b46}.text-important:hover{color:#996337}.text-special{color:#8666b8}.text-special:hover{color:#6c4aa1}.text-muted a:active,.text-muted a:hover{color:#3949ab}.text-link:active,.text-link:hover{color:#3949ab}.bg-primary{background-color:#3f51b5}a.bg-primary:hover{background-color:#32408f}.hl-primary{background-color:#eceff1}a.hl-primary:hover{background-color:#cfd6db}.form-control{border-radius:0}.form-control.focus,.form-control:focus{border-color:#3949ab;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(57,73,171,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(57,73,171,.6)}.form-control:focus{border-color:#3949ab;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(57,73,171,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(57,73,171,.6)}.form-condensed .btn,.form-condensed .form-control{border-radius:0}.switch>input:checked+label:before{background-color:#3f51b5;border-color:#3f51b5}.switch input:focus+label{color:#3f51b5}.switch input:focus+label:before{border-color:#3f51b5}.form-control:focus+.input-control-label-left{color:#3949ab}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.input-group-addon{background-color:#f1f1f1}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon{border-radius:0}.input-group-btn.fix-border>.btn{border-radius:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.list-group-item{background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{color:#353535;text-decoration:none;background-color:#eceff1}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{color:#fff;background-color:#3f51b5;border-color:#3f51b5}.list-group-item.active .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#e6e6e6}.list-group-item-heading{color:#333}.navbar-toggle{border-radius:0}@media (min-width:768px){.navbar{border-radius:0}}.navbar-inverse{background-color:#3949ab;border-color:#2c3985}.navbar-inverse .navbar-nav>li.nav-heading{background-color:#334198}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{background-color:#4254c0}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{background-color:#5262c5}.navbar-inverse .navbar-toggle{border-color:#5262c5}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#334198}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#303e90}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#5262c5}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#2c3985}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{background-color:#4254c0}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{background-color:#5262c5}}.navbar-fixed-left.navbar-inverse .navbar-header,.navbar-fixed-left.navbar-inverse .navbar-nav{border-bottom:1px solid #5262c5;-webkit-box-shadow:inset 0 -1px 0 #2c3985;box-shadow:inset 0 -1px 0 #2c3985}.navbar-fixed-left.navbar-inverse.navbar-collapsed .navbar-nav>li.nav-heading:hover{color:#eaeaea;background-color:#2f3c8c}.nav>li>a:focus,.nav>li>a:hover{color:#263172}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{border-color:#3949ab}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{background-color:#3f51b5}.nav-primary>li:first-child>a{border-top-left-radius:0;border-bottom-left-radius:0}.nav-primary>li:last-child>a{border-top-right-radius:0;border-bottom-right-radius:0}.nav-primary>li>a{border:1px solid #ddd}.nav-primary>li.active>a,.nav-primary>li.active>a:focus,.nav-primary>li.active>a:hover{color:#fff;background-color:#3f51b5;border-color:#3f51b5}.nav-secondary>li.active>a,.nav-secondary>li.active>a:focus,.nav-secondary>li.active>a:hover{color:#3f51b5;border-bottom-color:#3f51b5}.nav-stacked.nav-primary>li,.nav-stacked.nav-primary>li>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.nav-stacked.nav-primary>li:first-child.nav-heading,.nav-stacked.nav-primary>li:first-child>a{border-top-left-radius:0;border-top-right-radius:0}.nav-stacked.nav-primary>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.nav-stacked.nav-primary>li.nav-heading{background-color:#f1f1f1;border:1px solid #ddd}.nav-stacked.nav-secondary>li>a{border-top-right-radius:0;border-bottom-right-radius:0;-webkit-box-shadow:inset 2px 0 0 #f5f5f5;box-shadow:inset 2px 0 0 #f5f5f5}.nav-stacked.nav-secondary>li>a:hover{-webkit-box-shadow:inset 2px 0 0 #e5e5e5;box-shadow:inset 2px 0 0 #e5e5e5}.nav-stacked.nav-secondary>li.active>a,.nav-stacked.nav-secondary>li.active>a:focus,.nav-stacked.nav-secondary>li.active>a:hover{background-color:#f5f5f5;-webkit-box-shadow:inset 2px 0 0 #3f51b5;box-shadow:inset 2px 0 0 #3f51b5}.nav-stacked.nav-secondary>li.nav-heading{border-bottom:1px solid #ddd}.nav-tabs>li>a{border-radius:0}.pager{border-radius:0}.pager>li>a,.pager>li>span{background-color:#fff;border:1px solid #ddd}.pager>li:first-child>a,.pager>li:first-child>span{border-top-left-radius:0;border-bottom-left-radius:0}.pager>li:last-child>a,.pager>li:last-child>span{border-top-right-radius:0;border-bottom-right-radius:0}.pager>li>a:focus,.pager>li>a:hover,.pager>li>span:focus,.pager>li>span:hover{background-color:#e5e5e5}.pager>li.active>a,.pager>li.active>a:hover,.pager>li.active>span,.pager>li.active>span:hover{color:#fff;background-color:#3f51b5;border-color:#3f51b5}.pager>li.disabled>a,.pager>li.disabled>a:focus,.pager>li.disabled>a:hover,.pager>li.disabled>span,.pager>li.disabled>span:focus,.pager>li.disabled>span:hover{color:#ddd;background-color:#fff;border-color:#ddd}.panel{border-radius:0;-webkit-box-shadow:none;box-shadow:none}.panel>.panel-heading{background-image:none;border-top-left-radius:0;border-top-right-radius:0}.panel-group .panel{border-radius:0}.dashboard .panel{-webkit-box-shadow:none;box-shadow:none}.panel-primary{border-color:#3f51b5}.panel-primary>.panel-heading{color:#fff;background-color:#3f51b5;border-color:#3f51b5}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#3f51b5}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#3f51b5}.panel-danger>.panel-body,.panel-info>.panel-body,.panel-primary>.panel-body,.panel-success>.panel-body,.panel-warning>.panel-body{-webkit-box-shadow:none;box-shadow:none}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#eceff1}.table tr.active>td,.table tr.active>th,.table tr>td.active,.table tr>th.active{background-color:#ffe7bc}table.tablesorter thead tr .headerSortDown:after,table.tablesorter thead tr .headerSortUp:after{color:#3949ab!important}.chosen-container-single .chosen-search input[type=text]:focus,.chosen-container-single .chosen-search:focus{border-color:#3949ab!important}.chosen-container-single .chosen-single{border-radius:0!important}.chosen-container-single.chosen-with-drop .chosen-single{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-single.chosen-with-drop.chosen-up .chosen-single{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#3949ab!important;border-bottom-left-radius:#3949ab!important}.chosen-container .chosen-results li.highlighted{background-color:#3f51b5!important}.chosen-container-active .chosen-single{border-color:#3949ab!important}.chosen-container-active.chosen-with-drop .chosen-single{border-color:#cbcbcb!important;border-color:rgba(0,0,0,.15)!important}.chosen-container-active .chosen-choices{border-color:#3949ab!important}.chosen-container-multi .chosen-choices{border-radius:0!important}.chosen-container-multi.chosen-with-drop .chosen-choices{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-multi.chosen-with-drop.chosen-up .chosen-choices{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#3949ab!important;border-bottom-left-radius:#3949ab!important}.menu>.nav>li>.nav{background-color:#f6f6f6}.menu>.nav>li>.nav>li>a{border:1px solid #ddd}.menu>.nav>li>.nav>li>a:focus,.menu>.nav>li>.nav>li>a:hover{background-color:#e4e4e4}.menu>.nav>li>.nav>li.active>a,.menu>.nav>li>.nav>li.active>a:focus,.menu>.nav>li>.nav>li.active>a:hover{color:#fff;background-color:#3f51b5;border-color:#3f51b5}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:0;border-top-right-radius:0}.menu>.nav>li.show>a,.menu>.nav>li.show>a:focus,.menu>.nav>li.show>a:hover{color:#353535;background-color:#fff;border-color:#ddd}.menu>.nav>li.show>a:focus>[class*=icon-],.menu>.nav>li.show>a:hover>[class*=icon-],.menu>.nav>li.show>a>[class*=icon-]{color:#353535}.menu>.nav>li.show>a:hover{background-color:#f1f1f1}.menu>.nav>li.show:last-child>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li.show:last-child>.nav>li:last-child>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li.nav-heading{background-color:#f1f1f1;border:1px solid #ddd}.dropdown-menu{border-radius:0}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#3f51b5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#3f51b5}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{background-color:#3f51b5}.dropdown-submenu:hover>a:after{border-left-color:#fff}.datetimepicker td.day.today{background-color:#f0ad4e!important;border-color:#f0ad4e!important}.datetimepicker td.day.active{background-color:#3f51b5!important;border-color:#32408f!important}.datetimepicker td.day.active:hover{background-color:#32408f!important}.datetimepicker td.day.today.active:hover,.datetimepicker td.day.today:hover{background-color:#ec971f!important}.ke-container{border-radius:0!important}.ke-container.focus{border-color:#3949ab!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(57,73,171,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(57,73,171,.6)!important}.ke-menu-item-on{background-color:#3f51b5!important}.ke-colorpicker-cell-on{background-color:#3f51b5!important}.ke-input-text:focus{border-color:#3949ab!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(57,73,171,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(57,73,171,.6)!important}.messager{border-radius:0}.messager-primary{background-color:#3f51b5}.messager-success{background-color:#4caf50}.messager-info{background-color:#039be5}.messager-warning{background-color:#f0ad4e}.messager-danger{background-color:#d9534f}.messager-important{background-color:#bd7b46}.messager-special{background-color:#8666b8}.comment:hover>.content>.actions>a{color:#3949ab}.alert:not(.alert-block){border-radius:0}.alert-primary{color:#282828;background-color:#eceff1}.alert-primary hr{border-top-color:#eceff1}.alert-primary .alert-link{color:#161616}.alert-success{color:#449d48;background-color:#ddf4df}.alert-success hr{border-top-color:#ddf4df}.alert-success .alert-link{color:#39843c}.alert-info{color:#038acc;background-color:#ddf3f5}.alert-info hr{border-top-color:#ddf3f5}.alert-info .alert-link{color:#0272a9}.alert-warning{color:#eea236;background-color:#fff0d5}.alert-warning hr{border-top-color:#fff0d5}.alert-warning .alert-link{color:#eb9316}.alert-danger{color:#d43f3a;background-color:#ffe5e0}.alert-danger hr{border-top-color:#ffe5e0}.alert-danger .alert-link{color:#c12e2a}.alert-primary-inverse{color:#fff;background-color:#3f51b5;border-color:#3f51b5}.alert-primary-inverse hr{border-top-color:#ddd;border-top-color:rgba(221,221,221,.25)}.alert-primary-inverse .alert-link{color:rgba(255,255,255,.8)}.modal-dialog{border-radius:1px}.card{border-radius:0;-webkit-box-shadow:none;box-shadow:none}pre{border-radius:0}.datagrid .datagrid-hover-col .datagrid-cell.hover,.datagrid .datagrid-hover-col .datagrid-row-cell.active .datagrid-cell.hover,.datagrid .datagrid-hover-row .datagrid-row-cell:hover .datagrid-cell{background-color:#eceff1}.datagrid .datagrid-loading>.content>.icon,.datagrid .datagrid-sort-down>.icon-sort:before,.datagrid .datagrid-sort-up>.icon-sort:before{color:#3f51b5}.tree-drag-holder{background-color:#eceff1}.tree-menu li.active>a{color:#fff;background-color:#3f51b5;border-color:#3f51b5}.tree-menu li.active>.list-toggle{color:#fff} \ No newline at end of file diff --git a/root/res/zui/css/zui.css b/root/res/zui/css/zui.css new file mode 100644 index 0000000..2ec96fd --- /dev/null +++ b/root/res/zui/css/zui.css @@ -0,0 +1,8714 @@ +/*! + * ZUI: Standard edition - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +/*! Some code copy from Bootstrap v3.0.0 by @fat and @mdo. (Copyright 2013 Twitter, Inc. Licensed under http://www.apache.org/licenses/)*/ + +/*! normalize.css v2.1.3 | MIT License | git.io/normalize */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section, +summary { + display: block; + } +audio, +canvas, +video { + display: inline-block; + } +audio:not([controls]) { + display: none; + height: 0; + } +[hidden], +template { + display: none; + } +html { + font-family: sans-serif; + + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; + } +body { + margin: 0; + } +a { + background: transparent; + } +a:focus { + outline: thin dotted; + } +a:active, +a:hover { + outline: 0; + } +h1 { + margin: .67em 0; + font-size: 2em; + } +abbr[title] { + border-bottom: 1px dotted; + } +b, +strong { + font-weight: bold; + } +dfn { + font-style: italic; + } +hr { + height: 0; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + } +mark { + color: #000; + background: #ff0; + } +code, +kbd, +pre, +samp { + font-family: monospace, serif; + font-size: 1em; + } +pre { + white-space: pre-wrap; + } +q { + quotes: "\201C" "\201D" "\2018" "\2019"; + } +small { + font-size: 80%; + } +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; + } +sup { + top: -.5em; + } +sub { + bottom: -.25em; + } +img { + border: 0; + } +svg:not(:root) { + overflow: hidden; + } +figure { + margin: 0; + } +fieldset { + padding: .35em .625em .75em; + margin: 0 2px; + border: 1px solid #c0c0c0; + } +legend { + padding: 0; + border: 0; + } +button, +input, +select, +textarea { + margin: 0; + font-family: inherit; + font-size: 100%; + } +button, +input { + line-height: normal; + } +button, +select { + text-transform: none; + } +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; + } +button[disabled], +html input[disabled] { + cursor: default; + } +input[type="checkbox"], +input[type="radio"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; + } +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; + } +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; + } +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; + } +textarea { + overflow: auto; + vertical-align: top; + } +table { + border-spacing: 0; + border-collapse: collapse; + } +.clearfix:before, +.clearfix:after, +.container:before, +.container:after, +.container-fluid:before, +.container-fluid:after, +.container-fixed:before, +.container-fixed:after, +.container-fixed-md:before, +.container-fixed-md:after, +.container-fixed-sm:before, +.container-fixed-sm:after, +.container-fixed-xs:before, +.container-fixed-xs:after, +.row:before, +.row:after, +.dl-horizontal dd:before, +.dl-horizontal dd:after, +.btn-toolbar:before, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after, +.form-horizontal .form-group:before, +.form-horizontal .form-group:after, +.panel-body:before, +.panel-body:after, +.pager-justify:before, +.pager-justify:after, +.pager-loose:before, +.pager-loose:after, +.nav:before, +.nav:after, +.navbar:before, +.navbar:after, +.navbar-header:before, +.navbar-header:after, +.navbar-collapse:before, +.navbar-collapse:after, +.modal-header:before, +.modal-header:after, +.modal-footer:before, +.modal-footer:after, +.cards:before, +.cards:after, +.btn-group-vertical > .btn-group-vertical:before, +.btn-group-vertical > .btn-group-vertical:after { + /* 1 */ + display: table; + content: " "; + /* 2 */ + } +.clearfix:after, +.container:after, +.container-fluid:after, +.container-fixed:after, +.container-fixed-md:after, +.container-fixed-sm:after, +.container-fixed-xs:after, +.row:after, +.dl-horizontal dd:after, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:after, +.form-horizontal .form-group:after, +.panel-body:after, +.pager-justify:after, +.pager-loose:after, +.nav:after, +.navbar:after, +.navbar-header:after, +.navbar-collapse:after, +.modal-header:after, +.modal-footer:after, +.cards:after, +.btn-group-vertical > .btn-group-vertical:after { + clear: both; + } +.center-block { + display: block; + margin-right: auto; + margin-left: auto; + } +.pull-right { + float: right !important; + } +.pull-left { + float: left !important; + } +.hide { + display: none; + } +.showing { + display: block; + } +.hidden { + display: none!important; + visibility: hidden !important; + } +.show { + display: block!important; + visibility: visible !important; + } +.invisible { + visibility: hidden; + } +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; + } +.affix { + position: fixed; + } +.with-padding { + padding: 5px 12px; + } +.no-padding { + padding: 0!important; + } +.visible-xs, +.inline.visible-xs, +.inline-block.visible-xs, +tr.visible-xs, +th.visible-xs, +td.visible-xs { + display: none !important; + } +@media (max-width: 767px) { + .visible-xs { + display: block !important; + } + .inline.visible-xs { + display: inline !important; + } + .inline-block.visible-xs { + display: inline-block !important; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } + } +@media (min-width: 768px) and (max-width: 991px) { + .visible-xs.visible-sm { + display: block !important; + } + .inline.visible-xs.visible-sm { + display: inline !important; + } + .inline-block.visible-xs.visible-sm { + display: inline-block !important; + } + tr.visible-xs.visible-sm { + display: table-row !important; + } + th.visible-xs.visible-sm, + td.visible-xs.visible-sm { + display: table-cell !important; + } + } +@media (min-width: 992px) and (max-width: 1199px) { + .visible-xs.visible-md { + display: block !important; + } + .inline.visible-xs.visible-md { + display: inline !important; + } + .inline-block.visible-xs.visible-md { + display: inline-block !important; + } + tr.visible-xs.visible-md { + display: table-row !important; + } + th.visible-xs.visible-md, + td.visible-xs.visible-md { + display: table-cell !important; + } + } +@media (min-width: 1200px) { + .visible-xs.visible-lg { + display: block !important; + } + .inline.visible-xs.visible-lg { + display: inline !important; + } + .inline-block.visible-xs.visible-lg { + display: inline-block !important; + } + tr.visible-xs.visible-lg { + display: table-row !important; + } + th.visible-xs.visible-lg, + td.visible-xs.visible-lg { + display: table-cell !important; + } + } +.visible-sm, +.inline.visible-sm, +.inline-block.visible-sm, +tr.visible-sm, +th.visible-sm, +td.visible-sm { + display: none !important; + } +@media (max-width: 767px) { + .visible-sm.visible-xs { + display: block !important; + } + .inline.visible-sm.visible-xs { + display: inline !important; + } + .inline-block.visible-sm.visible-xs { + display: inline-block !important; + } + tr.visible-sm.visible-xs { + display: table-row !important; + } + th.visible-sm.visible-xs, + td.visible-sm.visible-xs { + display: table-cell !important; + } + } +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; + } + .inline.visible-sm { + display: inline !important; + } + .inline-block.visible-sm { + display: inline-block !important; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.visible-sm { + display: table-cell !important; + } + } +@media (min-width: 992px) and (max-width: 1199px) { + .visible-sm.visible-md { + display: block !important; + } + .inline.visible-sm.visible-md { + display: inline !important; + } + .inline-block.visible-sm.visible-md { + display: inline-block !important; + } + tr.visible-sm.visible-md { + display: table-row !important; + } + th.visible-sm.visible-md, + td.visible-sm.visible-md { + display: table-cell !important; + } + } +@media (min-width: 1200px) { + .visible-sm.visible-lg { + display: block !important; + } + .inline.visible-sm.visible-lg { + display: inline !important; + } + .inline-block.visible-sm.visible-lg { + display: inline-block !important; + } + tr.visible-sm.visible-lg { + display: table-row !important; + } + th.visible-sm.visible-lg, + td.visible-sm.visible-lg { + display: table-cell !important; + } + } +.visible-md, +.inline.visible-md, +.inline-block.visible-md, +tr.visible-md, +th.visible-md, +td.visible-md { + display: none !important; + } +@media (max-width: 767px) { + .visible-md.visible-xs { + display: block !important; + } + .inline.visible-md.visible-xs { + display: inline !important; + } + .inline-block.visible-md.visible-xs { + display: inline-block !important; + } + tr.visible-md.visible-xs { + display: table-row !important; + } + th.visible-md.visible-xs, + td.visible-md.visible-xs { + display: table-cell !important; + } + } +@media (min-width: 768px) and (max-width: 991px) { + .visible-md.visible-sm { + display: block !important; + } + .inline.visible-md.visible-sm { + display: inline !important; + } + .inline-block.visible-md.visible-sm { + display: inline-block !important; + } + tr.visible-md.visible-sm { + display: table-row !important; + } + th.visible-md.visible-sm, + td.visible-md.visible-sm { + display: table-cell !important; + } + } +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; + } + .inline.visible-md { + display: inline !important; + } + .inline-block.visible-md { + display: inline-block !important; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.visible-md { + display: table-cell !important; + } + } +@media (min-width: 1200px) { + .visible-md.visible-lg { + display: block !important; + } + .inline.visible-md.visible-lg { + display: inline !important; + } + .inline-block.visible-md.visible-lg { + display: inline-block !important; + } + tr.visible-md.visible-lg { + display: table-row !important; + } + th.visible-md.visible-lg, + td.visible-md.visible-lg { + display: table-cell !important; + } + } +.visible-lg, +.inline.visible-lg, +.inline-block.visible-lg, +tr.visible-lg, +th.visible-lg, +td.visible-lg { + display: none !important; + } +@media (max-width: 767px) { + .visible-lg.visible-xs { + display: block !important; + } + .inline.visible-lg.visible-xs { + display: inline !important; + } + .inline-block.visible-lg.visible-xs { + display: inline-block !important; + } + tr.visible-lg.visible-xs { + display: table-row !important; + } + th.visible-lg.visible-xs, + td.visible-lg.visible-xs { + display: table-cell !important; + } + } +@media (min-width: 768px) and (max-width: 991px) { + .visible-lg.visible-sm { + display: block !important; + } + .inline.visible-lg.visible-sm { + display: inline !important; + } + .inline-block.visible-lg.visible-sm { + display: inline-block !important; + } + tr.visible-lg.visible-sm { + display: table-row !important; + } + th.visible-lg.visible-sm, + td.visible-lg.visible-sm { + display: table-cell !important; + } + } +@media (min-width: 992px) and (max-width: 1199px) { + .visible-lg.visible-md { + display: block !important; + } + .inline.visible-lg.visible-md { + display: inline !important; + } + .inline-block.visible-lg.visible-md { + display: inline-block !important; + } + tr.visible-lg.visible-md { + display: table-row !important; + } + th.visible-lg.visible-md, + td.visible-lg.visible-md { + display: table-cell !important; + } + } +@media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + .inline.visible-lg { + display: inline !important; + } + .inline-block.visible-lg { + display: inline-block !important; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !important; + } + } +.hidden-xs { + display: block !important; + } +.inline.hidden-xs { + display: inline !important; + } +.inline-block.hidden-xs { + display: inline-block !important; + } +tr.hidden-xs { + display: table-row !important; + } +th.hidden-xs, +td.hidden-xs { + display: table-cell !important; + } +@media (max-width: 767px) { + .hidden-xs, + .inline.hidden-xs, + .inline-block.hidden-xs, + tr.hidden-xs, + th.hidden-xs, + td.hidden-xs { + display: none !important; + } + } +@media (min-width: 768px) and (max-width: 991px) { + .hidden-xs.hidden-sm, + .inline.hidden-xs.hidden-sm, + .inline-block.hidden-xs.hidden-sm, + tr.hidden-xs.hidden-sm, + th.hidden-xs.hidden-sm, + td.hidden-xs.hidden-sm { + display: none !important; + } + } +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-xs.hidden-md, + .inline.hidden-xs.hidden-md, + .inline-block.hidden-xs.hidden-md, + tr.hidden-xs.hidden-md, + th.hidden-xs.hidden-md, + td.hidden-xs.hidden-md { + display: none !important; + } + } +@media (min-width: 1200px) { + .hidden-xs.hidden-lg, + .inline.hidden-xs.hidden-lg, + .inline-block.hidden-xs.hidden-lg, + tr.hidden-xs.hidden-lg, + th.hidden-xs.hidden-lg, + td.hidden-xs.hidden-lg { + display: none !important; + } + } +.hidden-sm { + display: block !important; + } +.inline.hidden-sm { + display: inline !important; + } +.inline-block.hidden-sm { + display: inline-block !important; + } +tr.hidden-sm { + display: table-row !important; + } +th.hidden-sm, +td.hidden-sm { + display: table-cell !important; + } +@media (max-width: 767px) { + .hidden-sm.hidden-xs, + .inline.hidden-sm.hidden-xs, + .inline-block.hidden-sm.hidden-xs, + tr.hidden-sm.hidden-xs, + th.hidden-sm.hidden-xs, + td.hidden-sm.hidden-xs { + display: none !important; + } + } +@media (min-width: 768px) and (max-width: 991px) { + .hidden-sm, + .inline.hidden-sm, + .inline-block.hidden-sm, + tr.hidden-sm, + th.hidden-sm, + td.hidden-sm { + display: none !important; + } + } +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-sm.hidden-md, + .inline.hidden-sm.hidden-md, + .inline-block.hidden-sm.hidden-md, + tr.hidden-sm.hidden-md, + th.hidden-sm.hidden-md, + td.hidden-sm.hidden-md { + display: none !important; + } + } +@media (min-width: 1200px) { + .hidden-sm.hidden-lg, + .inline.hidden-sm.hidden-lg, + .inline-block.hidden-sm.hidden-lg, + tr.hidden-sm.hidden-lg, + th.hidden-sm.hidden-lg, + td.hidden-sm.hidden-lg { + display: none !important; + } + } +.hidden-md { + display: block !important; + } +.inline.hidden-md { + display: inline !important; + } +.inline-block.hidden-md { + display: inline-block !important; + } +tr.hidden-md { + display: table-row !important; + } +th.hidden-md, +td.hidden-md { + display: table-cell !important; + } +@media (max-width: 767px) { + .hidden-md.hidden-xs, + .inline.hidden-md.hidden-xs, + .inline-block.hidden-md.hidden-xs, + tr.hidden-md.hidden-xs, + th.hidden-md.hidden-xs, + td.hidden-md.hidden-xs { + display: none !important; + } + } +@media (min-width: 768px) and (max-width: 991px) { + .hidden-md.hidden-sm, + .inline.hidden-md.hidden-sm, + .inline-block.hidden-md.hidden-sm, + tr.hidden-md.hidden-sm, + th.hidden-md.hidden-sm, + td.hidden-md.hidden-sm { + display: none !important; + } + } +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-md, + .inline.hidden-md, + .inline-block.hidden-md, + tr.hidden-md, + th.hidden-md, + td.hidden-md { + display: none !important; + } + } +@media (min-width: 1200px) { + .hidden-md.hidden-lg, + .inline.hidden-md.hidden-lg, + .inline-block.hidden-md.hidden-lg, + tr.hidden-md.hidden-lg, + th.hidden-md.hidden-lg, + td.hidden-md.hidden-lg { + display: none !important; + } + } +.hidden-lg { + display: block !important; + } +.inline.hidden-lg { + display: inline !important; + } +.inline-block.hidden-lg { + display: inline-block !important; + } +tr.hidden-lg { + display: table-row !important; + } +th.hidden-lg, +td.hidden-lg { + display: table-cell !important; + } +@media (max-width: 767px) { + .hidden-lg.hidden-xs, + .inline.hidden-lg.hidden-xs, + .inline-block.hidden-lg.hidden-xs, + tr.hidden-lg.hidden-xs, + th.hidden-lg.hidden-xs, + td.hidden-lg.hidden-xs { + display: none !important; + } + } +@media (min-width: 768px) and (max-width: 991px) { + .hidden-lg.hidden-sm, + .inline.hidden-lg.hidden-sm, + .inline-block.hidden-lg.hidden-sm, + tr.hidden-lg.hidden-sm, + th.hidden-lg.hidden-sm, + td.hidden-lg.hidden-sm { + display: none !important; + } + } +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-lg.hidden-md, + .inline.hidden-lg.hidden-md, + .inline-block.hidden-lg.hidden-md, + tr.hidden-lg.hidden-md, + th.hidden-lg.hidden-md, + td.hidden-lg.hidden-md { + display: none !important; + } + } +@media (min-width: 1200px) { + .hidden-lg, + .inline.hidden-lg, + .inline-block.hidden-lg, + tr.hidden-lg, + th.hidden-lg, + td.hidden-lg { + display: none !important; + } + } +.visible-print, +.inline.visible-print, +.inline-block.visible-print, +tr.visible-print, +th.visible-print, +td.visible-print { + display: none !important; + } +@media print { + .visible-print { + display: block !important; + } + .inline.visible-print { + display: inline !important; + } + .inline-block.visible-print { + display: inline-block !important; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } + .hidden-print, + .inline.hidden-print, + .inline-block.hidden-print, + tr.hidden-print, + th.hidden-print, + td.hidden-print { + display: none !important; + } + } +*, +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } +html { + font-size: 10px; + + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + } +body { + font-family: "Helvetica Neue", Helvetica, Tahoma, Arial, 'Microsoft Yahei', 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; + font-size: 13px; + line-height: 1.53846154; + color: #353535; + background-color: #fff; + } +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; + } +a { + color: #145ccd; + text-decoration: none; + -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: all .4s cubic-bezier(.175, .885, .32, 1); + transition: all .4s cubic-bezier(.175, .885, .32, 1); + } +a:hover, +a:focus { + color: #0d3d88; + text-decoration: underline; + } +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; + } +a.disabled, +a.disabled:hover, +a.disabled:focus, +a[disabled], +a[disabled]:hover, +a[disabled]:focus { + color: #aaa; + text-decoration: none; + cursor: default; + } +audio, +canvas, +img, +video { + max-width: 100%; + vertical-align: middle; + } +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0 0 0 0); + border: 0; + } +::-moz-selection { + text-shadow: none; + background: #b3d4fc; + } +::selection { + text-shadow: none; + background: #b3d4fc; + } +fieldset { + padding: 0; + margin: 0; + border: 0; + } +textarea { + resize: vertical; + } +ol, +ul { + padding-left: 20px; + } +.container, +.container-fluid, +.container-fixed, +.container-fixed-md, +.container-fixed-sm, +.container-fixed-xs { + padding-right: 10px; + padding-left: 10px; + margin-right: auto; + margin-left: auto; + } +@media (min-width: 768px) { + .container { + max-width: 740px; + } + } +@media (min-width: 992px) { + .container { + max-width: 960px; + } + } +@media (min-width: 1200px) { + .container { + max-width: 1160px; + } + } +.container-fixed { + width: 1160px; + } +.container-fixed-md { + width: 960px; + } +.container-fixed-sm { + width: 740px; + } +.container-fixed-xs { + width: 440px; + } +.row { + margin-right: -10px; + margin-left: -10px; + } +.col, +.col-xs-1, +.col-xs-2, +.col-xs-3, +.col-xs-4, +.col-xs-5, +.col-xs-6, +.col-xs-7, +.col-xs-8, +.col-xs-9, +.col-xs-10, +.col-xs-11, +.col-xs-12, +.col-sm-1, +.col-sm-2, +.col-sm-3, +.col-sm-4, +.col-sm-5, +.col-sm-6, +.col-sm-7, +.col-sm-8, +.col-sm-9, +.col-sm-10, +.col-sm-11, +.col-sm-12, +.col-md-1, +.col-md-2, +.col-md-3, +.col-md-4, +.col-md-5, +.col-md-6, +.col-md-7, +.col-md-8, +.col-md-9, +.col-md-10, +.col-md-11, +.col-md-12, +.col-lg-1, +.col-lg-2, +.col-lg-3, +.col-lg-4, +.col-lg-5, +.col-lg-6, +.col-lg-7, +.col-lg-8, +.col-lg-9, +.col-lg-10, +.col-lg-11, +.col-lg-12 { + position: relative; + min-height: 1px; + padding-right: 10px; + padding-left: 10px; + } +.col, +.col-xs, +.col-xs-1, +.col-xs-2, +.col-xs-3, +.col-xs-4, +.col-xs-5, +.col-xs-6, +.col-xs-7, +.col-xs-8, +.col-xs-9, +.col-xs-10, +.col-xs-11, +.col-xs-12 { + float: left; + } +.col-xs-1 { + width: 8.33333333%; + } +.col-xs-2 { + width: 16.66666667%; + } +.col-xs-3 { + width: 25%; + } +.col-xs-4 { + width: 33.33333333%; + } +.col-xs-5 { + width: 41.66666667%; + } +.col-xs-6 { + width: 50%; + } +.col-xs-7 { + width: 58.33333333%; + } +.col-xs-8 { + width: 66.66666667%; + } +.col-xs-9 { + width: 75%; + } +.col-xs-10 { + width: 83.33333333%; + } +.col-xs-11 { + width: 91.66666667%; + } +.col-xs-12 { + width: 100%; + } +@media (min-width: 768px) { + .col-sm-1, + .col-sm-2, + .col-sm-3, + .col-sm-4, + .col-sm-5, + .col-sm-6, + .col-sm-7, + .col-sm-8, + .col-sm-9, + .col-sm-10, + .col-sm-11, + .col-sm-12 { + float: left; + } + .col-sm-1 { + width: 8.33333333%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-12 { + width: 100%; + } + .col-sm-push-1 { + left: 8.33333333%; + } + .col-sm-push-2 { + left: 16.66666667%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-4 { + left: 33.33333333%; + } + .col-sm-push-5 { + left: 41.66666667%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-7 { + left: 58.33333333%; + } + .col-sm-push-8 { + left: 66.66666667%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-10 { + left: 83.33333333%; + } + .col-sm-push-11 { + left: 91.66666667%; + } + .col-sm-pull-1 { + right: 8.33333333%; + } + .col-sm-pull-2 { + right: 16.66666667%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-4 { + right: 33.33333333%; + } + .col-sm-pull-5 { + right: 41.66666667%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-7 { + right: 58.33333333%; + } + .col-sm-pull-8 { + right: 66.66666667%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-10 { + right: 83.33333333%; + } + .col-sm-pull-11 { + right: 91.66666667%; + } + .col-sm-offset-1 { + margin-left: 8.33333333%; + } + .col-sm-offset-2 { + margin-left: 16.66666667%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-4 { + margin-left: 33.33333333%; + } + .col-sm-offset-5 { + margin-left: 41.66666667%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-7 { + margin-left: 58.33333333%; + } + .col-sm-offset-8 { + margin-left: 66.66666667%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-10 { + margin-left: 83.33333333%; + } + .col-sm-offset-11 { + margin-left: 91.66666667%; + } + } +@media (min-width: 992px) { + .col-md-1, + .col-md-2, + .col-md-3, + .col-md-4, + .col-md-5, + .col-md-6, + .col-md-7, + .col-md-8, + .col-md-9, + .col-md-10, + .col-md-11, + .col-md-12 { + float: left; + } + .col-md-1 { + width: 8.33333333%; + } + .col-md-2 { + width: 16.66666667%; + } + .col-md-3 { + width: 25%; + } + .col-md-4 { + width: 33.33333333%; + } + .col-md-5 { + width: 41.66666667%; + } + .col-md-6 { + width: 50%; + } + .col-md-7 { + width: 58.33333333%; + } + .col-md-8 { + width: 66.66666667%; + } + .col-md-9 { + width: 75%; + } + .col-md-10 { + width: 83.33333333%; + } + .col-md-11 { + width: 91.66666667%; + } + .col-md-12 { + width: 100%; + } + .col-md-push-0 { + left: auto; + } + .col-md-push-1 { + left: 8.33333333%; + } + .col-md-push-2 { + left: 16.66666667%; + } + .col-md-push-3 { + left: 25%; + } + .col-md-push-4 { + left: 33.33333333%; + } + .col-md-push-5 { + left: 41.66666667%; + } + .col-md-push-6 { + left: 50%; + } + .col-md-push-7 { + left: 58.33333333%; + } + .col-md-push-8 { + left: 66.66666667%; + } + .col-md-push-9 { + left: 75%; + } + .col-md-push-10 { + left: 83.33333333%; + } + .col-md-push-11 { + left: 91.66666667%; + } + .col-md-pull-0 { + right: auto; + } + .col-md-pull-1 { + right: 8.33333333%; + } + .col-md-pull-2 { + right: 16.66666667%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-4 { + right: 33.33333333%; + } + .col-md-pull-5 { + right: 41.66666667%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-7 { + right: 58.33333333%; + } + .col-md-pull-8 { + right: 66.66666667%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-10 { + right: 83.33333333%; + } + .col-md-pull-11 { + right: 91.66666667%; + } + .col-md-offset-0 { + margin-left: 0; + } + .col-md-offset-1 { + margin-left: 8.33333333%; + } + .col-md-offset-2 { + margin-left: 16.66666667%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-4 { + margin-left: 33.33333333%; + } + .col-md-offset-5 { + margin-left: 41.66666667%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-7 { + margin-left: 58.33333333%; + } + .col-md-offset-8 { + margin-left: 66.66666667%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-10 { + margin-left: 83.33333333%; + } + .col-md-offset-11 { + margin-left: 91.66666667%; + } + } +@media (min-width: 1200px) { + .col-lg-1, + .col-lg-2, + .col-lg-3, + .col-lg-4, + .col-lg-5, + .col-lg-6, + .col-lg-7, + .col-lg-8, + .col-lg-9, + .col-lg-10, + .col-lg-11, + .col-lg-12 { + float: left; + } + .col-lg-1 { + width: 8.33333333%; + } + .col-lg-2 { + width: 16.66666667%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-4 { + width: 33.33333333%; + } + .col-lg-5 { + width: 41.66666667%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-7 { + width: 58.33333333%; + } + .col-lg-8 { + width: 66.66666667%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-10 { + width: 83.33333333%; + } + .col-lg-11 { + width: 91.66666667%; + } + .col-lg-12 { + width: 100%; + } + .col-lg-push-0 { + left: auto; + } + .col-lg-push-1 { + left: 8.33333333%; + } + .col-lg-push-2 { + left: 16.66666667%; + } + .col-lg-push-3 { + left: 25%; + } + .col-lg-push-4 { + left: 33.33333333%; + } + .col-lg-push-5 { + left: 41.66666667%; + } + .col-lg-push-6 { + left: 50%; + } + .col-lg-push-7 { + left: 58.33333333%; + } + .col-lg-push-8 { + left: 66.66666667%; + } + .col-lg-push-9 { + left: 75%; + } + .col-lg-push-10 { + left: 83.33333333%; + } + .col-lg-push-11 { + left: 91.66666667%; + } + .col-lg-pull-0 { + right: auto; + } + .col-lg-pull-1 { + right: 8.33333333%; + } + .col-lg-pull-2 { + right: 16.66666667%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-4 { + right: 33.33333333%; + } + .col-lg-pull-5 { + right: 41.66666667%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-7 { + right: 58.33333333%; + } + .col-lg-pull-8 { + right: 66.66666667%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-10 { + right: 83.33333333%; + } + .col-lg-pull-11 { + right: 91.66666667%; + } + .col-lg-offset-0 { + margin-left: 0; + } + .col-lg-offset-1 { + margin-left: 8.33333333%; + } + .col-lg-offset-2 { + margin-left: 16.66666667%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-4 { + margin-left: 33.33333333%; + } + .col-lg-offset-5 { + margin-left: 41.66666667%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-7 { + margin-left: 58.33333333%; + } + .col-lg-offset-8 { + margin-left: 66.66666667%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-10 { + margin-left: 83.33333333%; + } + .col-lg-offset-11 { + margin-left: 91.66666667%; + } + } +p { + margin: 0 0 10px; + } +.lead { + margin-bottom: 20px; + font-size: 14px; + line-height: 1.4; + } +@media (min-width: 768px) { + .lead { + font-size: 19.5px; + } + } +small, +.small { + font-size: 85%; + } +cite { + font-style: normal; + } +.text-gray, +.text-muted { + color: #808080; + } +.text-gray a, +.text-muted a { + color: #737373; + } +.text-gray a:hover, +.text-muted a:hover, +.text-gray a:active, +.text-muted a:active { + color: #145ccd; + } +.text-primary { + color: #3280fc; + } +.text-yellow, +.text-warning { + color: #f1a325; + } +.text-red, +.text-danger { + color: #ea644a; + } +.text-green, +.text-success { + color: #38b03f; + } +.text-blue, +.text-info { + color: #03b8cf; + } +.text-brown, +.text-important { + color: #bd7b46; + } +.text-purple, +.text-special { + color: #8666b8; + } +.text-link { + color: #353535; + } +.text-link:hover, +.text-link:active { + color: #145ccd; + } +.text-left { + text-align: left; + } +.text-right { + text-align: right; + } +.text-center { + text-align: center; + } +.text-nowrap, +.nobr { + overflow: hidden; + white-space: nowrap; + } +.text-ellipsis { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } +ul, +ol { + margin-top: 0; + margin-bottom: 10px; + } +ul ul, +ol ul, +ul ol, +ol ol { + margin-bottom: 0; + } +.list-unstyled { + padding-left: 0; + list-style: none; + } +dl { + margin-bottom: 20px; + } +dt, +dd { + line-height: 1.53846154; + } +dt { + font-weight: bold; + } +dd { + margin-left: 0; + } +.dl-inline:before, +.dl-inline:after { + /* 1 */ + display: table; + content: " "; + /* 2 */ + } +.dl-inline:after { + clear: both; + } +.dl-inline:before, +.dl-inline:after { + /* 1 */ + display: table; + content: " "; + /* 2 */ + } +.dl-inline:after { + clear: both; + } +.dl-inline dt { + display: inline-block; + } +.dl-inline dd { + display: inline-block; + padding-right: 1em; + } +.dl-inline dd:last-child { + padding-right: 0; + } +@media (min-width: 768px) { + .dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; + } + .dl-horizontal dd { + margin-left: 180px; + } + } +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 16.25px; + border-left: 5px solid #e5e5e5; + } +blockquote p, +blockquote ul, +blockquote ol { + font-weight: 300; + } +blockquote p:last-child, +blockquote ul:last-child, +blockquote ol:last-child { + margin-bottom: 0; + } +blockquote small { + display: block; + line-height: 1.53846154; + color: #808080; + } +blockquote small:before { + content: '\2014 \00A0'; + } +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #e5e5e5; + border-left: 0; + } +blockquote.pull-right p, +blockquote.pull-right small { + text-align: right; + } +blockquote.pull-right small:before { + content: ''; + } +blockquote.pull-right small:after { + content: '\00A0 \2014'; + } +.ol-pd-2 { + padding-left: 40px; + } +.ol-pd-3 { + padding-left: 60px; + } +.ol-pd-4 { + padding-left: 80px; + } +.bg-black, +.bg-default { + color: #fff; + background-color: #353535; + } +.bg-primary { + color: #fff; + background-color: #3280fc; + } +.bg-green, +.bg-success { + color: #fff; + background-color: #38b03f; + } +.bg-blue, +.bg-info { + color: #fff; + background-color: #03b8cf; + } +.bg-yellow, +.bg-warning { + color: #fff; + background-color: #f1a325; + } +.bg-red, +.bg-danger { + color: #fff; + background-color: #ea644a; + } +.bg-brown, +.bg-important { + color: #fff; + background-color: #bd7b46; + } +.bg-purple, +.bg-special { + color: #fff; + background-color: #8666b8; + } +.hl-gray, +.hl-default { + background-color: #f1f1f1; + } +.hl-primary { + background-color: #ebf2f9; + } +.hl-green, +.hl-success { + background-color: #ddf4df; + } +.hl-blue, +.hl-info { + background-color: #ddf3f5; + } +.hl-yellow, +.hl-warning { + background-color: #fff0d5; + } +.hl-red, +.hl-danger { + background-color: #ffe5e0; + } +.hl-brown, +.hl-important { + background-color: #f7ebe1; + } +.hl-purple, +.hl-special { + background-color: #f5eeff; + } +.page-header, +.header-dividing { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #e5e5e5; + } +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: "Helvetica Neue", Helvetica, Tahoma, Arial, 'Microsoft Yahei', 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; + font-weight: bold; + line-height: 1.1; + color: inherit; + } +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { + font-weight: normal; + line-height: 1; + color: #808080; + } +h1, +h2, +h3 { + margin-top: 20px; + margin-bottom: 10px; + } +h1 small, +h2 small, +h3 small { + font-size: 65%; + } +h4, +h5, +h6 { + margin-top: 10px; + margin-bottom: 10px; + } +h4 small, +h5 small, +h6 small { + font-size: 75%; + } +h1 { + font-size: 26px; + } +h2 { + font-size: 20px; + } +h3 { + font-size: 16px; + } +h4 { + font-size: 14px; + } +h5 { + font-size: 13px; + } +h6 { + font-size: 12px; + } +.btn { + display: inline-block; + padding: 5px 12px; + margin-bottom: 0; + font-size: 13px; + font-weight: normal; + line-height: 1.53846154; + text-align: center; + white-space: nowrap; + vertical-align: middle; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border: 1px solid transparent; + border-radius: 4px; + -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: all .4s cubic-bezier(.175, .885, .32, 1); + transition: all .4s cubic-bezier(.175, .885, .32, 1); + } +.btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; + } +.btn:hover, +.btn:focus { + color: #353535; + text-decoration: none; + } +.btn:active, +.btn.active { + background-image: none; + outline: none; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + } +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + pointer-events: none; + cursor: not-allowed; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; + opacity: .65; + } +.btn { + color: #353535; + text-shadow: 0 1px 0 #fff; + background-color: #f2f2f2; + border-color: #bfbfbf; + } +.btn:hover, +.btn:focus, +.btn:active, +.btn.active, +.open .dropdown-toggle.btn { + color: #353535; + background-color: #dedede; + border-color: #a1a1a1; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn:active, +.btn.active, +.open .dropdown-toggle.btn { + background-color: #ccc; + background-image: none; + border-color: #a6a6a6; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn, +.btn.disabled:hover, +.btn[disabled]:hover, +fieldset[disabled] .btn:hover, +.btn.disabled:focus, +.btn[disabled]:focus, +fieldset[disabled] .btn:focus, +.btn.disabled:active, +.btn[disabled]:active, +fieldset[disabled] .btn:active, +.btn.disabled.active, +.btn[disabled].active, +fieldset[disabled] .btn.active { + background-color: #f2f2f2; + border-color: #bfbfbf; + } +.btn-primary { + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); + background-color: #3280fc; + border-color: #1970fc; + } +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + color: #fff; + background-color: #0a67fb; + border-color: #0354d4; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + background-color: #0358de; + background-image: none; + border-color: #0358de; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #3280fc; + border-color: #1970fc; + } +.btn-warning { + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); + background-color: #f1a325; + border-color: #ed980f; + } +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + color: #fff; + background-color: #df8f0e; + border-color: #b4730c; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + background-color: #bd7a0c; + background-image: none; + border-color: #bd7a0c; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #f1a325; + border-color: #ed980f; + } +.btn-danger { + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); + background-color: #ea644a; + border-color: #e75033; + } +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + color: #fff; + background-color: #e64525; + border-color: #c63317; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + background-color: #cf3618; + background-image: none; + border-color: #cf3618; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #ea644a; + border-color: #e75033; + } +.btn-success { + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); + background-color: #38b03f; + border-color: #329d38; + } +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + color: #fff; + background-color: #2e9134; + border-color: #236e27; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + background-color: #26762a; + background-image: none; + border-color: #26762a; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #38b03f; + border-color: #329d38; + } +.btn-info { + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); + background-color: #03b8cf; + border-color: #03a2b6; + } +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + color: #fff; + background-color: #0294a7; + border-color: #026c7a; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + background-color: #027584; + background-image: none; + border-color: #027584; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #03b8cf; + border-color: #03a2b6; + } +.btn-link { + font-weight: normal; + color: #145ccd; + text-shadow: none; + cursor: pointer; + background: none; + -webkit-box-shadow: none; + box-shadow: none; + } +.btn-link, +.btn-link:active, +.btn-link[disabled], +fieldset[disabled] .btn-link, +.btn-link:hover, +.btn-link:focus { + border-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; + } +.btn-link:hover, +.btn-link:focus { + color: #0d3d88; + } +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #ddd; + text-decoration: none; + } +.btn-lg { + padding: 10px 16px; + font-size: 17px; + line-height: 1.25; + border-radius: 4px; + } +.btn-sm, +.btn-xs, +.btn-mini { + padding: 2px 8px; + font-size: 12px; + line-height: 1.5; + border-radius: 4px; + } +.btn-xs, +.btn-mini { + padding: 1px 5px; + } +.btn-block { + display: block; + width: 100%; + } +.btn-block + .btn-block { + margin-top: 5px; + } +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; + } +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; + } +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + float: left; + } +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn:hover, +.btn-group-vertical > .btn:focus, +.btn-group-vertical > .btn:active, +.btn-group-vertical > .btn.active { + z-index: 2; + } +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus { + outline: none; + } +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group, +.btn-group-vertical .btn + .btn, +.btn-group-vertical .btn + .btn-group-vertical, +.btn-group-vertical .btn-group-vertical + .btn, +.btn-group-vertical .btn-group-vertical + .btn-group-vertical { + margin-left: -1px; + } +.btn-toolbar { + margin-left: -5px; + } +.btn-toolbar .btn, +.btn-toolbar .btn-group, +.btn-toolbar .input-group, +.btn-toolbar .btn-group-vertical { + float: left; + } +.btn-toolbar > .btn, +.btn-toolbar > .btn-group, +.btn-toolbar > .input-group, +.btn-toolbar > .btn-group-vertical { + margin-left: 5px; + } +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle), +.btn-group-vertical > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; + } +.btn-group > .btn:first-child, +.btn-group-vertical > .btn:first-child { + margin-left: 0; + } +.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle), +.btn-group-vertical > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child), +.btn-group-vertical > .btn:last-child:not(:first-child), +.btn-group-vertical > .dropdown-toggle:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } +.btn-group > .btn-group, +.btn-group-vertical > .btn-group-vertical { + float: left; + } +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn, +.btn-group-vertical > .btn-group-vertical:not(:first-child):not(:last-child) > .btn { + border-radius: 0; + } +.btn-group > .btn-group:first-child > .btn:last-child, +.btn-group > .btn-group:first-child > .dropdown-toggle, +.btn-group-vertical > .btn-group-vertical:first-child > .btn:last-child, +.btn-group-vertical > .btn-group-vertical:first-child > .dropdown-toggle { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } +.btn-group > .btn-group:last-child > .btn:first-child, +.btn-group-vertical > .btn-group-vertical:last-child > .btn:first-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle, +.btn-group-vertical .dropdown-toggle:active, +.btn-group-vertical.open .dropdown-toggle { + outline: 0; + } +.btn-group-xs > .btn { + padding: 2px 8px; + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 4px; + } +.btn-group-sm > .btn { + padding: 2px 8px; + font-size: 12px; + line-height: 1.5; + border-radius: 4px; + } +.btn-group-lg > .btn { + padding: 10px 16px; + font-size: 17px; + line-height: 1.25; + border-radius: 4px; + } +.btn-group > .btn + .dropdown-toggle, +.btn-group-vertical > .btn + .dropdown-toggle { + padding-right: 8px; + padding-left: 8px; + } +.btn-group > .btn-lg + .dropdown-toggle, +.btn-group-vertical > .btn-lg + .dropdown-toggle { + padding-right: 12px; + padding-left: 12px; + } +.btn-group.open .dropdown-toggle, +.btn-group-vertical.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + } +.btn-group.open .dropdown-toggle.btn-link, +.btn-group-vertical.open .dropdown-toggle.btn-link { + -webkit-box-shadow: none; + box-shadow: none; + } +.btn .caret { + margin-left: 0; + } +.btn-lg .caret { + border-width: 5px 5px 0; + border-bottom-width: 0; + } +.dropup .btn-lg .caret { + border-width: 0 5px 5px; + } +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; + } +.btn-group-justified > .btn, +.btn-group-justified > .btn-group, +.btn-group-justified > .btn-group-vertical { + display: table-cell; + float: none; + width: 1%; + } +.btn-group-justified > .btn-group .btn, +.btn-group-justified > .btn-group-vertical .btn { + width: 100%; + } +.btn-group-justified > .btn-group .dropdown-menu, +.btn-group-justified > .btn-group-vertical .dropdown-menu { + left: auto; + } +[data-toggle="buttons"] > .btn input[type="radio"], +[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], +[data-toggle="buttons"] > .btn input[type="checkbox"], +[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"], +[data-toggle="buttons"] > .btn-group-vertical > .btn input[type="radio"], +[data-toggle="buttons"] > .btn-group-vertical > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; + } +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group, +.btn-group-vertical > .btn-group > .btn, +.btn-group-vertical > .btn-group-vertical, +.btn-group-vertical > .btn-group-vertical > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; + } +.btn-group-vertical > .btn-group > .btn, +.btn-group-vertical > .btn-group-vertical > .btn { + float: none; + } +.btn-group-vertical > .btn + .btn, +.btn-group-vertical > .btn + .btn-group, +.btn-group-vertical > .btn-group + .btn, +.btn-group-vertical > .btn-group + .btn-group, +.btn-group-vertical > .btn + .btn-group-vertical, +.btn-group-vertical > .btn-group-vertical + .btn, +.btn-group-vertical > .btn-group-vertical + .btn-group-vertical { + margin-top: -1px; + margin-left: 0; + } +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; + } +.btn-group-vertical > .btn:first-child:not(:last-child), +.btn-group-vertical > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; + } +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn, +.btn-group-vertical > .btn-group-vertical:not(:first-child):not(:last-child) > .btn { + border-radius: 0; + } +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle, +.btn-group-vertical > .btn-group-vertical:first-child:not(:last-child) > .btn:last-child, +.btn-group-vertical > .btn-group-vertical:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child, +.btn-group-vertical > .btn-group-vertical:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; + } +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } + } +@-o-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } + } +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } + } +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #e5e5e5; + border-radius: 4px; + } +.progress-bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + color: #fff; + text-align: center; + background-color: #3280fc; + -webkit-transition: width .6s ease; + -o-transition: width .6s ease; + transition: width .6s ease; + } +.progress-striped .progress-bar { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + background-size: 40px 40px; + } +.progress.active .progress-bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; + } +.progress-bar-success { + background-color: #38b03f; + } +.progress-bar-info { + background-color: #03b8cf; + } +.progress-bar-warning { + background-color: #f1a325; + } +.progress-bar-danger { + background-color: #ea644a; + } +.img-responsive, +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + max-width: 100%; + height: auto; + } +.img-rounded { + border-radius: 6px; + } +.img-thumbnail { + display: inline-block; + max-width: 100%; + height: auto; + padding: 4px; + line-height: 1.53846154; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: all .2s ease-in-out; + -o-transition: all .2s ease-in-out; + transition: all .2s ease-in-out; + } +.img-circle { + border-radius: 50%; + } +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #e5e5e5; + } +hr.divider-sm { + margin-top: 10px; + margin-bottom: 10px; + } +hr.divider { + margin: 0; + } +.label { + display: inline; + padding: .2em .6em .2em; + font-size: 75%; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: middle; + background-color: #808080; + border-radius: .25em; + } +.label[href]:hover, +.label[href]:focus { + color: #fff; + background-color: #666; + } +.label.label-circle { + color: #808080; + background: none; + border: 1px solid #808080; + } +a.label:hover, +a.label:focus { + color: #fff; + text-decoration: none; + cursor: pointer; + } +.label:empty { + display: none; + } +.label-badge { + display: inline-block; + min-width: 18px; + padding: 3px 7px; + font-size: 12px; + line-height: 1; + border-radius: 9px; + } +.label-dot { + display: inline-block; + width: 10px; + height: 10px; + padding: 0; + line-height: 13px; + text-indent: -9999em; + border-radius: 5px; + } +.label-dot:empty { + display: inline-block; + } +.label-primary { + background-color: #3280fc; + } +.label-primary[href]:hover, +.label-primary[href]:focus { + color: #fff; + background-color: #0462f7; + } +.label-primary.label-circle { + color: #3280fc; + background: none; + border: 1px solid #3280fc; + } +.label-success { + background-color: #38b03f; + } +.label-success[href]:hover, +.label-success[href]:focus { + color: #fff; + background-color: #2c8931; + } +.label-success.label-circle { + color: #38b03f; + background: none; + border: 1px solid #38b03f; + } +.label-info { + background-color: #03b8cf; + } +.label-info[href]:hover, +.label-info[href]:focus { + color: #fff; + background-color: #028b9d; + } +.label-info.label-circle { + color: #03b8cf; + background: none; + border: 1px solid #03b8cf; + } +.label-warning { + background-color: #f1a325; + } +.label-warning[href]:hover, +.label-warning[href]:focus { + color: #fff; + background-color: #d5890e; + } +.label-warning.label-circle { + color: #f1a325; + background: none; + border: 1px solid #f1a325; + } +.label-danger { + background-color: #ea644a; + } +.label-danger[href]:hover, +.label-danger[href]:focus { + color: #fff; + background-color: #e53d1c; + } +.label-danger.label-circle { + color: #ea644a; + background: none; + border: 1px solid #ea644a; + } +.nav-primary > li > a > .label, +.btn .label { + position: relative; + top: -1px; + } +.btn-primary .label, +.btn-success .label, +.btn-info .label, +.btn-danger .label, +.btn-warning .label { + background-color: rgba(0, 0, 0, .2); + } +.list-group-item.active > .label, +.nav-primary > .active > a > .label, +.nav-pills > .active > a > .label { + color: #145ccd; + background-color: #fff; + } +.nav > li > a > .label { + margin-left: 3px; + } +.breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + border-radius: 4px; + } +.breadcrumb > li { + display: inline-block; + } +.breadcrumb > li + li:before { + padding: 0 5px; + color: #ccc; + content: "/\00a0"; + } +.breadcrumb > .active { + color: #808080; + } +@font-face { + font-family: ZenIcon; + font-style: normal; + font-weight: normal; + + src: url('../fonts/zenicon.eot?v=2.2.0'); + src: url('../fonts/zenicon.eot?#iefix&v=2.2.0') format('embedded-opentype'), url('../fonts/zenicon.woff?v=2.2.0') format('woff'), url('../fonts/zenicon.ttf?v=2.2.0') format('truetype'), url('../fonts/zenicon.svg#regular?v=2.2.0') format('svg'); + } +.icon, +[class^="icon-"], +[class*=" icon-"] { + font-family: ZenIcon; + font-size: 14px; + font-style: normal; + font-weight: normal; + font-variant: normal; + line-height: 1; + text-transform: none; + + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } +.icon:before { + display: inline-block; + min-width: 14px; + text-align: center; + } +a .icon, +a [class^="icon-"], +a [class*=" icon-"] { + display: inline; + } +.icon-lg:before { + font-size: 1.33333333em; + vertical-align: -10%; + } +.icon-2x { + font-size: 28px; + } +.icon-3x { + font-size: 42px; + } +.icon-4x { + font-size: 56px; + } +.icon-5x { + font-size: 70px; + } +.icon-spin { + display: inline-block; + -webkit-animation: spin 2s infinite linear; + -o-animation: spin 2s infinite linear; + animation: spin 2s infinite linear; + } +a .icon-spin { + display: inline-block; + text-decoration: none; + } +@-webkit-keyframes spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } + } +@-o-keyframes spin { + 0% { + -o-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -o-transform: rotate(359deg); + transform: rotate(359deg); + } + } +@keyframes spin { + 0% { + -webkit-transform: rotate(0deg); + -o-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + -o-transform: rotate(359deg); + transform: rotate(359deg); + } + } +.icon-rotate-90 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); + } +.icon-rotate-180 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + -o-transform: rotate(180deg); + transform: rotate(180deg); + } +.icon-rotate-270 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + -o-transform: rotate(270deg); + transform: rotate(270deg); + } +.icon-flip-horizontal { + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + -o-transform: scale(-1, 1); + transform: scale(-1, 1); + } +.icon-flip-vertical { + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + -o-transform: scale(1, -1); + transform: scale(1, -1); + } +.icon.icon-rotate-90, +.icon.icon-rotate-180, +.icon.icon-rotate-270, +.icon.icon-flip-horizontal, +.icon.icon-flip-vertical { + display: inline-block; + } +.icon-resize:before { + content: '\e667'; + } +.icon-expand-full:before { + content: '\e6a3'; + } +.icon-arrows-alt:before { + content: '\e6a3'; + } +.icon-fullscreen:before { + content: '\e6a3'; + } +.icon-collapse-full:before { + content: '\e682'; + } +.icon-yinyang:before { + content: '\e687'; + } +.icon-taiji:before { + content: '\e687'; + } +.icon-window:before { + content: '\e68e'; + } +.icon-window-alt:before { + content: '\e68f'; + } +.icon-carousel:before { + content: '\e6b0'; + } +.icon-spinner-snake:before { + content: '\e97b'; + } +.icon-spinner-indicator:before { + content: '\e97c'; + } +.icon-check-board:before { + content: '\e9b8'; + } +.icon-bar-chart:before { + content: '\f080'; + } +.icon-bar-chart-o:before { + content: '\f080'; + } +.icon-github:before { + content: '\f09b'; + } +.icon-dot-circle:before { + content: '\f192'; + } +.icon-dot-circle-o:before { + content: '\f192'; + } +.icon-cube-alt:before { + content: '\f1b2'; + } +.icon-cubes:before { + content: '\f1b3'; + } +.icon-file-pdf:before { + content: '\f1c1'; + } +.icon-file-word:before { + content: '\f1c2'; + } +.icon-file-excel:before { + content: '\f1c3'; + } +.icon-file-powerpoint:before { + content: '\f1c4'; + } +.icon-file-image:before { + content: '\f1c5'; + } +.icon-file-photo:before { + content: '\f1c5'; + } +.icon-file-picture:before { + content: '\f1c5'; + } +.icon-file-archive:before { + content: '\f1c6'; + } +.icon-file-zip:before { + content: '\f1c6'; + } +.icon-file-audio:before { + content: '\f1c7'; + } +.icon-file-sound:before { + content: '\f1c7'; + } +.icon-file-movie:before { + content: '\f1c8'; + } +.icon-file-video:before { + content: '\f1c8'; + } +.icon-file-code:before { + content: '\f1c9'; + } +.icon-circle-o-notch:before { + content: '\f1ce'; + } +.icon-chanzhi:before { + content: '\e906'; + } +.icon-chanzhi-pro:before { + content: '\e905'; + } +.icon-zsite:before { + content: '\e904'; + } +.icon-zsite-pro:before { + content: '\e903'; + } +.icon-qq:before { + content: '\f600'; + } +.icon-wechat:before { + content: '\f1d7'; + } +.icon-weixin:before { + content: '\f1d7'; + } +.icon-history:before { + content: '\f1da'; + } +.icon-circle-thin:before { + content: '\f1db'; + } +.icon-sliders:before { + content: '\f1de'; + } +.icon-newspaper-o:before { + content: '\f1ea'; + } +.icon-calculator:before { + content: '\f1ec'; + } +.icon-paint-brush:before { + content: '\f1fc'; + } +.icon-area-chart:before { + content: '\f1fe'; + } +.icon-pie-chart:before { + content: '\f200'; + } +.icon-line-chart:before { + content: '\f201'; + } +.icon-toggle-off:before { + content: '\f204'; + } +.icon-toggle-on:before { + content: '\f205'; + } +.icon-diamond:before { + content: '\f219'; + } +.icon-venus:before { + content: '\f221'; + } +.icon-mars:before { + content: '\f222'; + } +.icon-server:before { + content: '\f233'; + } +.icon-music:before { + content: '\e602'; + } +.icon-search:before { + content: '\e603'; + } +.icon-envelope:before { + content: '\e604'; + } +.icon-heart:before { + content: '\e605'; + } +.icon-star:before { + content: '\e606'; + } +.icon-star-empty:before { + content: '\e607'; + } +.icon-user:before { + content: '\e608'; + } +.icon-film:before { + content: '\e609'; + } +.icon-th-large:before { + content: '\e60a'; + } +.icon-th:before { + content: '\e60b'; + } +.icon-th-list:before { + content: '\e60c'; + } +.icon-ok:before { + content: '\e60d'; + } +.icon-check:before { + content: '\e60d'; + } +.icon-remove:before { + content: '\d7'; + } +.icon-times:before { + content: '\d7'; + } +.icon-zoom-in:before { + content: '\e60f'; + } +.icon-zoom-out:before { + content: '\e610'; + } +.icon-off:before { + content: '\e611'; + } +.icon-cog:before { + content: '\e613'; + } +.icon-trash:before { + content: '\e614'; + } +.icon-home:before { + content: '\e615'; + } +.icon-file-o:before { + content: '\e616'; + } +.icon-file-alt:before { + content: '\e616'; + } +.icon-time:before { + content: '\e617'; + } +.icon-download-alt:before { + content: '\e618'; + } +.icon-download:before { + content: '\e619'; + } +.icon-upload:before { + content: '\e61a'; + } +.icon-inbox:before { + content: '\e61b'; + } +.icon-play-circle:before { + content: '\e61c'; + } +.icon-repeat:before { + content: '\e61d'; + } +.icon-refresh:before { + content: '\e61e'; + } +.icon-list-alt:before { + content: '\e61f'; + } +.icon-lock:before { + content: '\e620'; + } +.icon-flag:before { + content: '\e621'; + } +.icon-headphones:before { + content: '\e622'; + } +.icon-volume-off:before { + content: '\e623'; + } +.icon-volume-up:before { + content: '\e625'; + } +.icon-qrcode:before { + content: '\e626'; + } +.icon-barcode:before { + content: '\e627'; + } +.icon-tag:before { + content: '\e628'; + } +.icon-tags:before { + content: '\e629'; + } +.icon-book:before { + content: '\e62a'; + } +.icon-bookmark:before { + content: '\e62b'; + } +.icon-print:before { + content: '\e62c'; + } +.icon-camera:before { + content: '\e62d'; + } +.icon-font:before { + content: '\e62e'; + } +.icon-bold:before { + content: '\e62f'; + } +.icon-italic:before { + content: '\f033'; + } +.icon-header:before { + content: '\f1dc'; + } +.icon-underline:before { + content: '\f0cd'; + } +.icon-strikethrough:before { + content: '\f0cc'; + } +.icon-eraser:before { + content: '\f12d'; + } +.icon-align-justify:before { + content: '\e636'; + } +.icon-list:before { + content: '\e637'; + } +.icon-picture:before { + content: '\e63b'; + } +.icon-pencil:before { + content: '\e63c'; + } +.icon-map-marker:before { + content: '\e63d'; + } +.icon-adjust:before { + content: '\e63e'; + } +.icon-tint:before { + content: '\e63f'; + } +.icon-edit:before { + content: '\e640'; + } +.icon-share:before { + content: '\e641'; + } +.icon-checked:before { + content: '\e642'; + } +.icon-move:before { + content: '\e643'; + } +.icon-arrows:before { + content: '\e643'; + } +.icon-step-backward:before { + content: '\e644'; + } +.icon-fast-backward:before { + content: '\e645'; + } +.icon-backward:before { + content: '\e646'; + } +.icon-play:before { + content: '\e647'; + } +.icon-pause:before { + content: '\e648'; + } +.icon-stop:before { + content: '\e649'; + } +.icon-forward:before { + content: '\e64a'; + } +.icon-fast-forward:before { + content: '\e64b'; + } +.icon-step-forward:before { + content: '\e64c'; + } +.icon-eject:before { + content: '\e64d'; + } +.icon-chevron-left:before { + content: '\e64e'; + } +.icon-chevron-right:before { + content: '\e64f'; + } +.icon-plus-sign:before { + content: '\e650'; + } +.icon-minus-sign:before { + content: '\e651'; + } +.icon-remove-sign:before { + content: '\e652'; + } +.icon-ok-sign:before { + content: '\e653'; + } +.icon-check-circle:before { + content: '\e653'; + } +.icon-question-sign:before { + content: '\e654'; + } +.icon-info-sign:before { + content: '\e655'; + } +.icon-remove-circle:before { + content: '\e657'; + } +.icon-ok-circle:before { + content: '\e658'; + } +.icon-check-circle-o:before { + content: '\e658'; + } +.icon-ban-circle:before { + content: '\e659'; + } +.icon-arrow-left:before { + content: '\e65a'; + } +.icon-arrow-right:before { + content: '\e65b'; + } +.icon-arrow-up:before { + content: '\e65c'; + } +.icon-arrow-down:before { + content: '\e65d'; + } +.icon-share-alt:before { + content: '\e65e'; + } +.icon-resize-full:before { + content: '\e65f'; + } +.icon-resize-small:before { + content: '\e660'; + } +.icon-plus:before { + content: '\e661'; + } +.icon-minus:before { + content: '\e662'; + } +.icon-asterisk:before { + content: '\e663'; + } +.icon-exclamation-sign:before { + content: '\e664'; + } +.icon-gift:before { + content: '\e665'; + } +.icon-leaf:before { + content: '\e666'; + } +.icon-eye-open:before { + content: '\e668'; + } +.icon-eye-close:before { + content: '\e669'; + } +.icon-warning-sign:before { + content: '\e66a'; + } +.icon-plane:before { + content: '\e66b'; + } +.icon-calendar:before { + content: '\e66c'; + } +.icon-random:before { + content: '\e66d'; + } +.icon-comment:before { + content: '\e66e'; + } +.icon-chevron-up:before { + content: '\e670'; + } +.icon-chevron-down:before { + content: '\e671'; + } +.icon-shopping-cart:before { + content: '\e673'; + } +.icon-folder-close:before { + content: '\e674'; + } +.icon-folder-open:before { + content: '\e675'; + } +.icon-resize-v:before { + content: '\e676'; + } +.icon-resize-h:before { + content: '\e677'; + } +.icon-bar-chart-alt:before { + content: '\e678'; + } +.icon-camera-retro:before { + content: '\e679'; + } +.icon-key:before { + content: '\e67a'; + } +.icon-cogs:before { + content: '\e67b'; + } +.icon-comments:before { + content: '\e67c'; + } +.icon-thumbs-o-up:before { + content: '\e67d'; + } +.icon-thumbs-o-down:before { + content: '\e67e'; + } +.icon-star-half:before { + content: '\e67f'; + } +.icon-heart-empty:before { + content: '\e680'; + } +.icon-signout:before { + content: '\e681'; + } +.icon-pushpin:before { + content: '\e683'; + } +.icon-external-link:before { + content: '\e684'; + } +.icon-signin:before { + content: '\e685'; + } +.icon-trophy:before { + content: '\e686'; + } +.icon-upload-alt:before { + content: '\e688'; + } +.icon-lemon:before { + content: '\e689'; + } +.icon-phone:before { + content: '\e68a'; + } +.icon-check-empty:before { + content: '\e68b'; + } +.icon-bookmark-empty:before { + content: '\e68c'; + } +.icon-phone-sign:before { + content: '\e68d'; + } +.icon-credit:before { + content: '\e690'; + } +.icon-rss:before { + content: '\e691'; + } +.icon-hdd:before { + content: '\e692'; + } +.icon-bullhorn:before { + content: '\e693'; + } +.icon-bell:before { + content: '\e694'; + } +.icon-certificate:before { + content: '\e695'; + } +.icon-hand-right:before { + content: '\e696'; + } +.icon-hand-left:before { + content: '\e697'; + } +.icon-hand-up:before { + content: '\e698'; + } +.icon-hand-down:before { + content: '\e699'; + } +.icon-circle-arrow-left:before { + content: '\e69a'; + } +.icon-circle-arrow-right:before { + content: '\e69b'; + } +.icon-circle-arrow-up:before { + content: '\e69c'; + } +.icon-circle-arrow-down:before { + content: '\e69d'; + } +.icon-globe:before { + content: '\e69e'; + } +.icon-wrench:before { + content: '\e69f'; + } +.icon-tasks:before { + content: '\e6a0'; + } +.icon-filter:before { + content: '\e6a1'; + } +.icon-group:before { + content: '\e6a4'; + } +.icon-link:before { + content: '\e6a5'; + } +.icon-cloud:before { + content: '\e6a6'; + } +.icon-beaker:before { + content: '\e6a7'; + } +.icon-cut:before { + content: '\e6a8'; + } +.icon-copy:before { + content: '\e6a9'; + } +.icon-paper-clip:before { + content: '\e6aa'; + } +.icon-save:before { + content: '\e6ab'; + } +.icon-sign-blank:before { + content: '\e6ac'; + } +.icon-bars:before { + content: '\e6ad'; + } +.icon-reorder:before { + content: '\e6ad'; + } +.icon-list-ul:before { + content: '\e6ae'; + } +.icon-list-ol:before { + content: '\e6af'; + } +.icon-table:before { + content: '\e6b2'; + } +.icon-magic:before { + content: '\e6b3'; + } +.icon-caret-down:before { + content: '\e6b8'; + } +.icon-caret-up:before { + content: '\e6b9'; + } +.icon-caret-left:before { + content: '\e6ba'; + } +.icon-caret-right:before { + content: '\e6bb'; + } +.icon-columns:before { + content: '\e6bc'; + } +.icon-sort:before { + content: '\e6bd'; + } +.icon-sort-down:before { + content: '\e6be'; + } +.icon-sort-up:before { + content: '\e6bf'; + } +.icon-envelope-alt:before { + content: '\e6c0'; + } +.icon-undo:before { + content: '\e6c1'; + } +.icon-dashboard:before { + content: '\e6c3'; + } +.icon-comment-alt:before { + content: '\e6c4'; + } +.icon-comments-alt:before { + content: '\e6c5'; + } +.icon-bolt:before { + content: '\e6c6'; + } +.icon-sitemap:before { + content: '\e6c7'; + } +.icon-umbrella:before { + content: '\e6c8'; + } +.icon-paste:before { + content: '\e6c9'; + } +.icon-lightbulb:before { + content: '\e6ca'; + } +.icon-exchange:before { + content: '\e6cb'; + } +.icon-cloud-download:before { + content: '\e6cc'; + } +.icon-cloud-upload:before { + content: '\e6cd'; + } +.icon-bell-alt:before { + content: '\e6d1'; + } +.icon-coffee:before { + content: '\e6d2'; + } +.icon-file-text-o:before { + content: '\e6d4'; + } +.icon-file-text-alt:before { + content: '\e6d4'; + } +.icon-building:before { + content: '\e6d5'; + } +.icon-double-angle-left:before { + content: '\e6dc'; + } +.icon-double-angle-right:before { + content: '\e6dd'; + } +.icon-double-angle-up:before { + content: '\e6de'; + } +.icon-double-angle-down:before { + content: '\e6df'; + } +.icon-angle-left:before { + content: '\e6e0'; + } +.icon-angle-right:before { + content: '\e6e1'; + } +.icon-angle-up:before { + content: '\e6e2'; + } +.icon-angle-down:before { + content: '\e6e3'; + } +.icon-desktop:before { + content: '\e6e4'; + } +.icon-laptop:before { + content: '\e6e5'; + } +.icon-tablet:before { + content: '\e6e6'; + } +.icon-mobile:before { + content: '\e6e7'; + } +.icon-circle-blank:before { + content: '\e6e8'; + } +.icon-quote-left:before { + content: '\e6e9'; + } +.icon-quote-right:before { + content: '\e6ea'; + } +.icon-spinner:before { + content: '\e6eb'; + } +.icon-circle:before { + content: '\e6ec'; + } +.icon-reply:before { + content: '\e6ed'; + } +.icon-folder-close-alt:before { + content: '\e6ef'; + } +.icon-folder-open-alt:before { + content: '\e6f0'; + } +.icon-expand-alt:before { + content: '\e6f1'; + } +.icon-collapse-alt:before { + content: '\e6f2'; + } +.icon-smile:before { + content: '\e6f3'; + } +.icon-frown:before { + content: '\e6f4'; + } +.icon-meh:before { + content: '\e6f5'; + } +.icon-gamepad:before { + content: '\e6f6'; + } +.icon-keyboard:before { + content: '\e6f7'; + } +.icon-flag-alt:before { + content: '\e6f8'; + } +.icon-flag-checkered:before { + content: '\e6f9'; + } +.icon-terminal:before { + content: '\e6fa'; + } +.icon-code:before { + content: '\e6fb'; + } +.icon-reply-all:before { + content: '\e6fc'; + } +.icon-star-half-full:before { + content: '\e6fd'; + } +.icon-location-arrow:before { + content: '\e6fe'; + } +.icon-crop:before { + content: '\e6ff'; + } +.icon-code-fork:before { + content: '\e700'; + } +.icon-unlink:before { + content: '\e701'; + } +.icon-question:before { + content: '\e702'; + } +.icon-info:before { + content: '\e703'; + } +.icon-shield:before { + content: '\e70b'; + } +.icon-calendar-empty:before { + content: '\e70c'; + } +.icon-rocket:before { + content: '\e70e'; + } +.icon-chevron-sign-left:before { + content: '\e70f'; + } +.icon-chevron-sign-right:before { + content: '\e710'; + } +.icon-chevron-sign-up:before { + content: '\e711'; + } +.icon-chevron-sign-down:before { + content: '\e712'; + } +.icon-html5:before { + content: '\e713'; + } +.icon-anchor:before { + content: '\e714'; + } +.icon-unlock-alt:before { + content: '\e715'; + } +.icon-bullseye:before { + content: '\e716'; + } +.icon-ellipsis-h:before { + content: '\e717'; + } +.icon-ellipsis-v:before { + content: '\e718'; + } +.icon-rss-sign:before { + content: '\e719'; + } +.icon-play-sign:before { + content: '\e71a'; + } +.icon-minus-sign-alt:before { + content: '\e71c'; + } +.icon-plus-sign-alt:before { + content: '\f0fe'; + } +.icon-check-minus:before { + content: '\e71d'; + } +.icon-check-plus:before { + content: '\f196'; + } +.icon-level-up:before { + content: '\e71e'; + } +.icon-level-down:before { + content: '\e71f'; + } +.icon-check-sign:before { + content: '\e720'; + } +.icon-edit-sign:before { + content: '\e721'; + } +.icon-external-link-sign:before { + content: '\e722'; + } +.icon-share-sign:before { + content: '\e723'; + } +.icon-compass:before { + content: '\e724'; + } +.icon-collapse:before { + content: '\e725'; + } +.icon-collapse-top:before { + content: '\e726'; + } +.icon-expand:before { + content: '\e727'; + } +.icon-dollar:before { + content: '\e728'; + } +.icon-yen:before { + content: '\e729'; + } +.icon-file:before { + content: '\e72b'; + } +.icon-file-text:before { + content: '\e72c'; + } +.icon-sort-by-alphabet:before { + content: '\e72d'; + } +.icon-sort-by-alphabet-alt:before { + content: '\e72e'; + } +.icon-sort-by-attributes:before { + content: '\e72f'; + } +.icon-sort-by-attributes-alt:before { + content: '\e730'; + } +.icon-sort-by-order:before { + content: '\e731'; + } +.icon-sort-by-order-alt:before { + content: '\e732'; + } +.icon-thumbs-up:before { + content: '\e733'; + } +.icon-thumbs-down:before { + content: '\e734'; + } +.icon-long-arrow-down:before { + content: '\e736'; + } +.icon-long-arrow-up:before { + content: '\e737'; + } +.icon-long-arrow-left:before { + content: '\e738'; + } +.icon-long-arrow-right:before { + content: '\e739'; + } +.icon-apple:before { + content: '\e73a'; + } +.icon-windows:before { + content: '\e73b'; + } +.icon-android:before { + content: '\e73c'; + } +.icon-linux:before { + content: '\e73d'; + } +.icon-sun:before { + content: '\e742'; + } +.icon-moon:before { + content: '\e743'; + } +.icon-archive:before { + content: '\e744'; + } +.icon-bug:before { + content: '\e745'; + } +.icon-zhifubao:before, +.icon-alipay:before { + content: '\e901'; + } +.icon-zhifubao-square:before, +.icon-alipay-square:before { + content: '\e900'; + } +.icon-taobao:before { + content: '\e902'; + } +.icon-weibo:before { + content: '\e746'; + } +.icon-renren:before { + content: '\e747'; + } +.icon-chrome:before { + content: '\e76c'; + } +.icon-firefox:before { + content: '\e76d'; + } +.icon-ie:before { + content: '\e76e'; + } +.icon-opera:before { + content: '\e76f'; + } +.icon-safari:before { + content: '\e770'; + } +.icon-node:before { + content: '\e76a'; + } +.icon-layout:before { + content: '\e768'; + } +.icon-usecase:before { + content: '\e74a'; + } +.icon-stack:before { + content: '\e769'; + } +.icon-branch:before { + content: '\e74b'; + } +.icon-chat:before { + content: '\e74c'; + } +.icon-chat-line:before { + content: '\e74f'; + } +.icon-comment-line:before { + content: '\e74f'; + } +.icon-chat-dot:before { + content: '\e750'; + } +.icon-cube:before { + content: '\e751'; + } +.icon-database:before { + content: '\f1c0'; + } +.icon-align-left:before { + content: '\e633'; + } +fieldset { + padding: 0; + margin: 0; + border: 0; + } +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 19.5px; + line-height: inherit; + color: #333; + border: 0; + border-bottom: 1px solid #e5e5e5; + } +label { + display: inline-block; + margin-bottom: 5px; + font-weight: bold; + } +input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } +input[type="radio"], +input[type="checkbox"] { + margin: 5px 0 0; + margin-top: 0 \9; + /* IE8-9 */ + line-height: normal; + } +input[type="file"] { + display: block; + } +select[multiple], +select[size] { + height: auto; + } +select:-moz-focusring { + color: transparent; + text-shadow: 0 0 0 #000; + } +select optgroup { + font-family: inherit; + font-size: inherit; + font-style: inherit; + } +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; + } +input[type="number"]::-webkit-outer-spin-button, +input[type="number"]::-webkit-inner-spin-button { + height: auto; + } +.form-control::-webkit-input-placeholder { + color: #808080; + } +.form-control::-moz-placeholder { + color: #808080; + } +.form-control:-ms-input-placeholder { + color: #808080; + } +.form-control::placeholder { + color: #808080; + } +.form-control { + display: block; + width: 100%; + height: 32px; + padding: 5px 8px; + font-size: 13px; + line-height: 1.53846154; + color: #222; + vertical-align: middle; + background-color: #fff; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + } +.form-control:focus, +.form-control.focus { + border-color: #145ccd; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(20, 92, 205, .6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(20, 92, 205, .6); + } +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + cursor: not-allowed; + background-color: #e5e5e5; + } +.form-control[readonly] { + cursor: default; + } +textarea.form-control { + height: auto; + } +.form-group { + margin-bottom: 15px; + } +.radio, +.checkbox { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; + } +.radio label, +.checkbox label { + min-height: 20px; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; + } +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + position: absolute; + margin-top: 3px; + margin-top: 4px \9; + margin-left: -20px; + } +.os-android .radio input[type="radio"], +.os-android .radio-inline input[type="radio"], +.os-android .checkbox input[type="checkbox"], +.os-android .checkbox-inline input[type="checkbox"] { + margin-top: 0; + } +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; + } +.radio-inline, +.checkbox-inline { + position: relative; + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + vertical-align: middle; + cursor: pointer; + } +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; + } +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"].disabled, +input[type="checkbox"].disabled, +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"] { + cursor: not-allowed; + } +.radio-inline.disabled, +.checkbox-inline.disabled, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; + } +.radio.disabled label, +.checkbox.disabled label, +fieldset[disabled] .radio label, +fieldset[disabled] .checkbox label { + cursor: not-allowed; + } +.input-sm { + height: 24px; + padding: 2px 8px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; + } +select.input-sm { + height: 24px; + line-height: 24px; + } +textarea.input-sm { + height: auto; + } +.input-lg { + height: 43px; + padding: 10px 16px; + font-size: 17px; + line-height: 1.25; + border-radius: 6px; + } +select.input-lg { + height: 43px; + line-height: 43px; + } +textarea.input-lg { + height: auto; + } +.has-warning .help-block, +.has-warning > label { + color: #f1a325; + } +.has-warning .form-control { + border-color: #f1a325; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + } +.has-warning .form-control:focus { + border-color: #d5890e; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #f7cb85; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #f7cb85; + } +.has-warning .input-group-addon { + color: #f1a325; + background-color: #fff0d5; + border-color: #f1a325; + } +.has-error .help-block, +.has-error > label { + color: #ea644a; + } +.has-error .form-control { + border-color: #ea644a; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + } +.has-error .form-control:focus { + border-color: #e53d1c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #f5b2a5; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #f5b2a5; + } +.has-error .input-group-addon { + color: #ea644a; + background-color: #ffe5e0; + border-color: #ea644a; + } +.has-success .help-block, +.has-success > label { + color: #38b03f; + } +.has-success .form-control { + border-color: #38b03f; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + } +.has-success .form-control:focus { + border-color: #2c8931; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #79d57f; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #79d57f; + } +.has-success .input-group-addon { + color: #38b03f; + background-color: #ddf4df; + border-color: #38b03f; + } +.form-control-static { + min-height: 33px; + padding-top: 6px; + padding-bottom: 6px; + margin-bottom: 0; + } +.help-block { + display: block; + margin: 5px 0; + color: #757575; + } +@media (min-width: 768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + padding-left: 0; + margin-top: 0; + margin-bottom: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + float: none; + margin-left: 0; + } + } +.form-horizontal .form-group > label, +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + padding-top: 6px; + margin-top: 0; + margin-bottom: 0; + } +.form-horizontal .form-group { + margin-right: -10px; + margin-left: -10px; + } +@media (min-width: 768px) { + .form-horizontal .form-group > label { + text-align: right; + } + } +.required { + position: relative; + } +.required:after { + position: absolute; + top: 0; + right: -10px; + display: inline-block; + font-size: 17px; + color: #ea644a; + content: '*'; + } +.form-horizontal .required:after { + top: 5px; + right: -1px; + } +.form-condensed .form-group { + margin-bottom: 10px; + } +.form-condensed .form-control { + height: 24px; + padding: 2px 8px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; + } +select.form-condensed .form-control { + height: 24px; + line-height: 24px; + } +textarea.form-condensed .form-control { + height: auto; + } +.form-condensed textarea.form-control { + height: auto; + } +.form-condensed .btn { + padding: 2px 8px; + font-size: 12px; + line-height: 1.5; + border-radius: 4px; + } +.form-condensed .input-group > .form-control, +.form-condensed .input-group > .input-group-addon, +.form-condensed .input-group > .input-group-btn > .btn { + padding: 2px 8px; + font-size: 12px; + border-radius: 3px; + } +.form-condensed .input-group .form-control:first-child, +.form-condensed .input-group-addon:first-child, +.form-condensed .input-group-btn:first-child > .btn, +.form-condensed .input-group-btn:first-child > .btn-group > .btn, +.form-condensed .input-group-btn:first-child > .dropdown-toggle, +.form-condensed .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.form-condensed .input-group-btn:last-child > .btn-group:not(:last-child) > .btn, +.form-condensed .input-group-btn:first-child > .btn-group-vertical > .btn, +.form-condensed .input-group-btn:last-child > .btn-group-vertical:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } +.form-condensed .input-group .form-control:last-child, +.form-condensed .input-group-addon:last-child, +.form-condensed .input-group-btn:last-child > .btn, +.form-condensed .input-group-btn:last-child > .btn-group > .btn, +.form-condensed .input-group-btn:last-child > .dropdown-toggle, +.form-condensed .input-group-btn:first-child > .btn:not(:first-child), +.form-condensed .input-group-btn:first-child > .btn-group:not(:first-child) > .btn, +.form-condensed .input-group-btn:last-child > .btn-group-vertical > .btn, +.form-condensed .input-group-btn:first-child > .btn-group-vertical:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } +.form-condensed .input-group-addon:first-child { + border-right: 0; + } +.form-condensed .input-group-addon:last-child { + border-left: 0; + } +.form-condensed .input-group-addon.fix-border, +.form-condensed .input-group-btn.fix-border > .btn { + border-right: 0; + border-left: 0; + border-radius: 0; + } +.form-condensed.form-horizontal .form-group > label, +.form-condensed.form-horizontal .radio, +.form-condensed.form-horizontal .checkbox, +.form-condensed.form-horizontal .radio-inline, +.form-condensed.form-horizontal .checkbox-inline { + padding-top: 1px; + } +.switch { + position: relative; + } +.switch > input { + position: absolute; + top: 0; + left: 0; + display: block; + width: 100%; + height: 100%; + margin: 0; + opacity: 0; + } +.switch > label { + display: block; + padding: 5px 0 5px 35px; + margin: 0; + font-weight: normal; + line-height: 20px; + } +.switch > label:before, +.switch > label:after { + position: absolute; + top: 5px; + left: 0; + display: block; + width: 30px; + height: 20px; + pointer-events: none; + content: ' '; + border: 1px solid #ddd; + border-radius: 10px; + -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: all .4s cubic-bezier(.175, .885, .32, 1); + transition: all .4s cubic-bezier(.175, .885, .32, 1); + } +.switch > label:after { + top: 6px; + width: 18px; + height: 18px; + background-color: #fff; + border-color: #ccc; + border-radius: 9px; + -webkit-box-shadow: rgba(0, 0, 0, .05) 0 1px 4px, rgba(0, 0, 0, .12) 0 1px 2px; + box-shadow: rgba(0, 0, 0, .05) 0 1px 4px, rgba(0, 0, 0, .12) 0 1px 2px; + } +.switch > input:checked + label:before { + background-color: #3280fc; + border-color: #3280fc; + } +.switch > input:checked + label:after { + left: 11px; + border-color: #fff; + } +.switch.text-left > label { + padding: 5px 35px 5px 0; + } +.switch.text-left > label:before, +.switch.text-left > label:after { + right: 0; + left: auto; + } +.switch.text-left > label:after { + right: 12px; + } +.switch.text-left > input:checked + label:after { + right: 1px; + left: auto; + } +.switch.disabled { + pointer-events: none; + } +.switch.disabled > label, +.switch > input[disabled] + label { + color: #ddd; + pointer-events: none; + } +.switch.disabled > label:before, +.switch > input[disabled] + label:before { + background-color: #fafafa; + } +.switch.disabled > label:after, +.switch > input[disabled] + label:after { + opacity: .7; + } +.switch.disabled > input:checked + label:before, +.switch > input[disabled]:checked + label:before { + background-color: #ccc; + border-color: #ccc; + } +.switch input:focus + label { + color: #3280fc; + } +.switch input:focus + label:before { + border-color: #3280fc; + } +.switch-inline { + display: inline-block; + } +.checkbox-primary { + position: relative; + display: inline-block; + } +.checkbox-primary > label { + padding-left: 25px; + cursor: pointer; + } +.checkbox-primary > label:before, +.checkbox-primary > label:after { + position: absolute; + top: 2px; + right: 0; + left: 0; + display: block; + width: 16px; + height: 16px; + line-height: 16px; + text-align: center; + content: ' '; + border-radius: 2px; + } +.checkbox-primary > label:after { + z-index: 1; + border: 1px solid #808080; + -webkit-transition: .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: .4s cubic-bezier(.175, .885, .32, 1); + transition: .4s cubic-bezier(.175, .885, .32, 1); + -webkit-transition-property: border, background-color; + -o-transition-property: border, background-color; + transition-property: border, background-color; + } +.checkbox-primary > label:before { + top: 3px; + z-index: 2; + font-family: ZenIcon; + font-size: 14px; + font-style: normal; + font-weight: normal; + font-variant: normal; + line-height: 1; + text-transform: none; + content: '\e60d'; + opacity: 0; + -webkit-transition: .2s cubic-bezier(.175, .885, .32, 1); + -o-transition: .2s cubic-bezier(.175, .885, .32, 1); + transition: .2s cubic-bezier(.175, .885, .32, 1); + -webkit-transition-property: opacity, -webkit-transform; + -o-transition-property: opacity, -o-transform; + transition-property: opacity, -webkit-transform; + transition-property: opacity, transform; + transition-property: opacity, transform, -webkit-transform, -o-transform; + -webkit-transform: scale(0); + -ms-transform: scale(0); + -o-transform: scale(0); + transform: scale(0); + + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } +.checkbox-primary.checked > label:after { + background-color: #3280fc; + border-color: #3280fc; + border-width: 4px; + } +.checkbox-primary.checked > label:before { + color: white; + opacity: 1; + -webkit-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); + } +.close { + float: right; + font-size: 19.5px; + font-weight: bold; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + filter: alpha(opacity=20); + opacity: .2; + } +.close:hover, +.close:focus { + color: #000; + text-decoration: none; + cursor: pointer; + filter: alpha(opacity=50); + opacity: .5; + } +button.close { + -webkit-appearance: none; + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + } +@media (min-width: 768px) { + ::-webkit-scrollbar { + width: 10px; + height: 10px; + } + ::-webkit-scrollbar-button { + width: 0; + height: 0; + } + ::-webkit-scrollbar-button:start:decrement, + ::-webkit-scrollbar-button:end:increment { + display: block; + } + ::-webkit-scrollbar-button:vertical:start:increment, + ::-webkit-scrollbar-button:vertical:end:decrement { + display: none; + } + ::-webkit-scrollbar-track:vertical, + ::-webkit-scrollbar-track:horizontal, + ::-webkit-scrollbar-thumb:vertical, + ::-webkit-scrollbar-thumb:horizontal, + ::-webkit-scrollbar-track:vertical, + ::-webkit-scrollbar-track:horizontal, + ::-webkit-scrollbar-thumb:vertical, + ::-webkit-scrollbar-thumb:horizontal { + border-color: transparent; + border-style: solid; + } + ::-webkit-scrollbar-track:vertical::-webkit-scrollbar-track:horizontal { + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + } + ::-webkit-scrollbar-thumb { + min-height: 28px; + padding-top: 100; + background-color: rgba(0, 0, 0, .2); + -webkit-background-clip: padding-box; + background-clip: padding-box; + border-radius: 5px; + -webkit-box-shadow: inset 1px 1px 0 rgba(0, 0, 0, .1), inset 0 -1px 0 rgba(0, 0, 0, .07); + } + ::-webkit-scrollbar-thumb:hover { + background-color: rgba(0, 0, 0, .4); + -webkit-box-shadow: inset 1px 1px 1px rgba(0, 0, 0, .25); + } + ::-webkit-scrollbar-thumb:active { + background-color: rgba(0, 0, 0, .5); + -webkit-box-shadow: inset 1px 1px 3px rgba(0, 0, 0, .35); + } + ::-webkit-scrollbar-track:vertical, + ::-webkit-scrollbar-track:horizontal, + ::-webkit-scrollbar-thumb:vertical, + ::-webkit-scrollbar-thumb:horizontal { + border-width: 0; + } + ::-webkit-scrollbar-track:hover { + background-color: rgba(0, 0, 0, .05); + -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, .1); + } + ::-webkit-scrollbar-track:active { + background-color: rgba(0, 0, 0, .05); + -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, .14), inset -1px -1px 0 rgba(0, 0, 0, .07); + } + .scrollbar-hover::-webkit-scrollbar, + .scrollbar-hover::-webkit-scrollbar-button, + .scrollbar-hover::-webkit-scrollbar-track, + .scrollbar-hover::-webkit-scrollbar-thumb { + visibility: hidden; + } + .scrollbar-hover:hover::-webkit-scrollbar, + .scrollbar-hover:hover::-webkit-scrollbar-button, + .scrollbar-hover:hover::-webkit-scrollbar-track, + .scrollbar-hover:hover::-webkit-scrollbar-thumb { + visibility: visible; + } + } +table { + max-width: 100%; + background-color: transparent; + } +caption { + padding-top: 8px; + padding-bottom: 8px; + color: #808080; + text-align: left; + } +th { + text-align: left; + } +.table { + width: 100%; + margin-bottom: 20px; + } +.table th, +.table td { + padding: 8px; + line-height: 1.53846154; + vertical-align: top; + border-bottom: 1px solid #ddd; + -webkit-transition: background .2s cubic-bezier(.175, .885, .32, 1); + -o-transition: background .2s cubic-bezier(.175, .885, .32, 1); + transition: background .2s cubic-bezier(.175, .885, .32, 1); + } +.table > thead > tr > th { + vertical-align: bottom; + background-color: #f1f1f1; + border-bottom: 1px solid #ddd; + } +.table > tbody + tbody { + border-top: 2px solid #ddd; + } +.table-fixed { + table-layout: fixed; + } +.table-fixed th, +.table-fixed td { + overflow: hidden; + white-space: nowrap; + } +.table-fixed tfoot > tr > th, +.table-fixed tfoot > tr > td, +.table-fixed .nofixed, +.table-fixed .nofixed { + overflow: visible; + } +.table-borderless thead > tr > th, +.table-borderless th, +.table-borderless td { + border: none; + } +.table-auto { + width: auto; + max-width: 100%; + } +.table-condensed th, +.table-condensed td { + padding: 5px; + } +.table-bordered { + border: 1px solid #ddd; + } +.table-bordered th, +.table-bordered td { + border: 1px solid #ddd; + } +.table-striped > tbody > tr:nth-child(odd) > td, +.table-striped > tbody > tr:nth-child(odd) > th { + background-color: #f9f9f9; + } +.table-hover > tbody > tr:hover > td, +.table-hover > tbody > tr:hover > th { + background-color: #ebf2f9; + } +table col[class*="col-"] { + display: table-column; + float: none; + } +table td[class*="col-"], +table th[class*="col-"] { + display: table-cell; + float: none; + } +.table tr > td.active, +.table tr > th.active, +.table tr.active > td, +.table tr.active > th { + background-color: #ffe7bc; + } +.table > thead > tr > td.success, +.table > tbody > tr > td.success, +.table > tfoot > tr > td.success, +.table > thead > tr > th.success, +.table > tbody > tr > th.success, +.table > tfoot > tr > th.success, +.table > thead > tr.success > td, +.table > tbody > tr.success > td, +.table > tfoot > tr.success > td, +.table > thead > tr.success > th, +.table > tbody > tr.success > th, +.table > tfoot > tr.success > th { + background-color: #ddf4df; + border-color: #bae8b6; + } +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, +.table-hover > tbody > tr.success:hover > td, +.table-hover > tbody > tr.success:hover > th { + background-color: #caeecd; + border-color: #a8e1a3; + } +.table > thead > tr > td.danger, +.table > tbody > tr > td.danger, +.table > tfoot > tr > td.danger, +.table > thead > tr > th.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > tbody > tr.danger > td, +.table > tfoot > tr.danger > td, +.table > thead > tr.danger > th, +.table > tbody > tr.danger > th, +.table > tfoot > tr.danger > th { + background-color: #ffe5e0; + border-color: #ffc6c7; + } +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, +.table-hover > tbody > tr.danger:hover > td, +.table-hover > tbody > tr.danger:hover > th { + background-color: #ffd0c6; + border-color: #ffadad; + } +.table > thead > tr > td.warning, +.table > tbody > tr > td.warning, +.table > tfoot > tr > td.warning, +.table > thead > tr > th.warning, +.table > tbody > tr > th.warning, +.table > tfoot > tr > th.warning, +.table > thead > tr.warning > td, +.table > tbody > tr.warning > td, +.table > tfoot > tr.warning > td, +.table > thead > tr.warning > th, +.table > tbody > tr.warning > th, +.table > tfoot > tr.warning > th { + background-color: #fff0d5; + border-color: #ffdcbc; + } +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, +.table-hover > tbody > tr.warning:hover > td, +.table-hover > tbody > tr.warning:hover > th { + background-color: #ffe7bc; + border-color: #ffcea2; + } +.table-responsive { + min-height: .01%; + overflow-x: auto; + } +@media screen and (max-width: 767px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-y: hidden; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid #ddd; + } + .table-responsive > .table { + margin-bottom: 0; + } + .table-responsive > .table > thead > tr > th, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; + } + .table-responsive > .table-bordered { + border: 0; + } + .table-responsive > .table-bordered th { + border-top: none; + } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; + } + } +.list-group { + padding-left: 0; + margin-bottom: 20px; + } +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid #ddd; + } +.list-group-item:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; + } +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; + } +.list-group-item > .label-badge { + float: right; + } +.list-group-item > .label-badge + .label-badge { + margin-right: 5px; + } +a.list-group-item { + color: #555; + } +a.list-group-item .list-group-item-heading { + color: #333; + } +a.list-group-item:hover, +a.list-group-item:focus { + color: #353535; + text-decoration: none; + background-color: #ebf2f9; + } +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + z-index: 2; + color: #fff; + background-color: #3280fc; + border-color: #3280fc; + } +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading { + color: inherit; + } +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .list-group-item-text { + color: #e6e6e6; + } +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; + color: #333; + } +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; + } +.panel { + margin-bottom: 20px; + background-color: #fff; + border: 1px solid transparent; + border-color: #ddd; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: 0 1px 1px rgba(0, 0, 0, .05); + } +.panel > .panel-heading { + color: #333; + background-color: #f5f5f5; + border-color: #ddd; + } +.panel > .panel-heading + .panel-collapse .panel-body { + border-top-color: #ddd; + } +.panel > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #ddd; + } +.panel-body { + padding: 15px; + } +.panel > .table { + margin-bottom: 0; + } +.panel > .panel-body + .table { + border-top: 1px solid #ddd; + } +.panel-heading { + padding: 8px 15px; + border-bottom: 1px solid transparent; + border-top-left-radius: 3px; + border-top-right-radius: 3px; + } +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 15px; + } +.panel-title > a { + color: inherit; + } +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; + } +.panel-primary { + border-color: #3280fc; + } +.panel-primary > .panel-heading { + color: #fff; + background-color: #3280fc; + border-color: #3280fc; + } +.panel-primary > .panel-heading + .panel-collapse .panel-body { + border-top-color: #3280fc; + } +.panel-primary > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #3280fc; + } +.panel-success { + border-color: #bae8b6; + } +.panel-success > .panel-heading { + color: #38b03f; + background-color: #ddf4df; + border-color: #bae8b6; + } +.panel-success > .panel-heading + .panel-collapse .panel-body { + border-top-color: #bae8b6; + } +.panel-success > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #bae8b6; + } +.panel-warning { + border-color: #ffdcbc; + } +.panel-warning > .panel-heading { + color: #f1a325; + background-color: #fff0d5; + border-color: #ffdcbc; + } +.panel-warning > .panel-heading + .panel-collapse .panel-body { + border-top-color: #ffdcbc; + } +.panel-warning > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #ffdcbc; + } +.panel-danger { + border-color: #ffc6c7; + } +.panel-danger > .panel-heading { + color: #ea644a; + background-color: #ffe5e0; + border-color: #ffc6c7; + } +.panel-danger > .panel-heading + .panel-collapse .panel-body { + border-top-color: #ffc6c7; + } +.panel-danger > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #ffc6c7; + } +.panel-info { + border-color: #a2e4de; + } +.panel-info > .panel-heading { + color: #03b8cf; + background-color: #ddf3f5; + border-color: #a2e4de; + } +.panel-info > .panel-heading + .panel-collapse .panel-body { + border-top-color: #a2e4de; + } +.panel-info > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #a2e4de; + } +.panel-group { + margin-bottom: 20px; + } +.panel-group .panel { + margin-bottom: 0; + border-radius: 4px; + } +.panel-group .panel + .panel { + margin-top: 5px; + } +.panel-group .panel-heading { + border-bottom: 0; + } +.panel-group .panel-heading + .panel-collapse > .panel-body, +.panel-group .panel-heading + .panel-collapse > .list-group { + border-top: 1px solid #ddd; + } +.panel-group .panel-footer { + border-top: 0; + } +.panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #ddd; + } +.panel > .list-group, +.panel > .panel-collapse > .list-group { + margin-bottom: 0; + } +.panel > .list-group .list-group-item, +.panel > .panel-collapse > .list-group .list-group-item { + border-width: 1px 0; + border-radius: 0; + } +.panel > .list-group:first-child .list-group-item:first-child, +.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { + border-top: 0; + border-top-left-radius: 3px; + border-top-right-radius: 3px; + } +.panel > .list-group:last-child .list-group-item:last-child, +.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { + border-bottom: 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; + } +.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; + } +.panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; + } +.list-group + .panel-footer { + border-top-width: 0; + } +.alert { + padding: 15px; + margin-bottom: 20px; + color: #282828; + background-color: #f1f1f1; + border-radius: 3px; + -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: all .4s cubic-bezier(.175, .885, .32, 1); + transition: all .4s cubic-bezier(.175, .885, .32, 1); + } +.alert hr { + border-top-color: #e4e4e4; + } +.alert .alert-link { + color: #161616; + } +.alert h4 { + margin-top: 0; + color: inherit; + } +.alert hr { + margin: 10px 0; + } +.alert p, +.alert ul { + margin-bottom: 0; + } +.alert p + p { + margin-top: 5px; + } +.alert-link { + font-weight: bold; + } +.alert > [class*="icon-"] { + float: left; + margin-top: -5px; + font-size: 42px; + opacity: .6; + -webkit-transition: opacity .2s cubic-bezier(.175, .885, .32, 1); + -o-transition: opacity .2s cubic-bezier(.175, .885, .32, 1); + transition: opacity .2s cubic-bezier(.175, .885, .32, 1); + } +.alert > [class*="icon-"] + .content { + min-height: 30px; + margin-left: 64px; + } +.alert.with-icon { + display: table; + width: 100%; + } +.alert.with-icon > [class*="icon-"], +.alert.with-icon > [class*="icon-"] + .content { + display: table-cell; + float: none; + min-height: 0; + margin: 0; + vertical-align: middle; + } +.alert.with-icon > [class*="icon-"] { + width: 48px; + text-align: center; + } +.alert.with-icon > [class*="icon-"] + .content { + padding-left: 1em; + } +.alert-block { + margin: 0; + border-radius: 0; + } +.alert-dismissable { + padding-right: 35px; + } +.alert-dismissable .close { + position: relative; + top: -6px; + right: -21px; + color: inherit; + } +.alert-primary { + color: #282828; + background-color: #ebf2f9; + } +.alert-primary hr { + border-top-color: #d0e0f1; + } +.alert-primary .alert-link { + color: #161616; + } +.alert-success { + color: #329d38; + background-color: #ddf4df; + } +.alert-success hr { + border-top-color: #bae8b6; + } +.alert-success .alert-link { + color: #29822e; + } +.alert-info { + color: #03a2b6; + background-color: #ddf3f5; + } +.alert-info hr { + border-top-color: #a2e4de; + } +.alert-info .alert-link { + color: #028293; + } +.alert-warning { + color: #ed980f; + background-color: #fff0d5; + } +.alert-warning hr { + border-top-color: #ffdcbc; + } +.alert-warning .alert-link { + color: #cc830d; + } +.alert-danger { + color: #e75033; + background-color: #ffe5e0; + } +.alert-danger hr { + border-top-color: #ffc6c7; + } +.alert-danger .alert-link { + color: #dd391a; + } +.alert-inverse { + color: #fff; + background-color: #353535; + border-color: #353535; + } +.alert-inverse hr { + border-top-color: #ddd; + border-top-color: rgba(221, 221, 221, .25); + } +.alert-inverse .alert-link { + color: rgba(255, 255, 255, .8); + } +.alert-primary-inverse { + color: #fff; + background-color: #3280fc; + border-color: #3280fc; + } +.alert-primary-inverse hr { + border-top-color: #ddd; + border-top-color: rgba(221, 221, 221, .25); + } +.alert-primary-inverse .alert-link { + color: rgba(255, 255, 255, .8); + } +.alert-success-inverse { + color: #fff; + background-color: #38b03f; + border-color: #38b03f; + } +.alert-success-inverse hr { + border-top-color: #ddd; + border-top-color: rgba(221, 221, 221, .25); + } +.alert-success-inverse .alert-link { + color: rgba(255, 255, 255, .8); + } +.alert-info-inverse { + color: #fff; + background-color: #03b8cf; + border-color: #03b8cf; + } +.alert-info-inverse hr { + border-top-color: #ddd; + border-top-color: rgba(221, 221, 221, .25); + } +.alert-info-inverse .alert-link { + color: rgba(255, 255, 255, .8); + } +.alert-warning-inverse { + color: #fff; + background-color: #f1a325; + border-color: #f1a325; + } +.alert-warning-inverse hr { + border-top-color: #ddd; + border-top-color: rgba(221, 221, 221, .25); + } +.alert-warning-inverse .alert-link { + color: rgba(255, 255, 255, .8); + } +.alert-danger-inverse { + color: #fff; + background-color: #ea644a; + border-color: #ea644a; + } +.alert-danger-inverse hr { + border-top-color: #ddd; + border-top-color: rgba(221, 221, 221, .25); + } +.alert-danger-inverse .alert-link { + color: rgba(255, 255, 255, .8); + } +.input-control-icon-left, +.input-control-icon-right, +.input-control-label-left, +.input-control-label-right { + position: absolute; + top: 1px; + z-index: 5; + height: 30px; + line-height: 30px; + opacity: .5; + } +.input-control-icon-left, +.input-control-icon-right { + width: 30px; + text-align: center; + } +.input-control-label-left, +.input-control-icon-left { + left: 1px; + } +.input-control-label-right, +.input-control-icon-right { + right: 1px; + } +.input-control-label-left, +.input-control-label-right { + width: 70px; + padding: 0 8px; + overflow: hidden; + text-overflow: ellipsis; + } +.has-label-left-sm > .input-control-label-left, +.has-label-left-sm > .input-control-label-right { + width: 55px; + } +.has-label-left-lg > .input-control-label-left, +.has-label-left-lg > .input-control-label-right { + width: 95px; + } +.input-control { + position: relative; + } +.input-control.has-icon-left > .form-control { + padding-left: 30px; + } +.input-control.has-icon-right > .form-control { + padding-right: 30px; + } +.input-control.has-label-left > .form-control { + padding-left: 70px; + } +.input-control.has-label-right > .form-control { + padding-right: 70px; + } +.input-control.has-label-left-sm > .form-control { + padding-left: 55px; + } +.input-control.has-label-right-sm > .form-control { + padding-right: 55px; + } +.input-control.has-label-left-lg > .form-control { + padding-left: 95px; + } +.input-control.has-label-right-lg > .form-control { + padding-right: 95px; + } +.input-control > a:hover { + background-color: #f1f1f1; + opacity: 1; + } +.form-control:focus + [class^="input-control-"], +.form-control:focus + [class^="input-control-"] + [class^="input-control-"] { + opacity: 1; + } +.form-control:focus + .input-control-label-left { + color: #145ccd; + } +.empty + .search-clear-btn, +.empty + .search-icon + .search-clear-btn { + opacity: 0 !important; + } +input:placeholder-shown + .search-clear-btn, +input:placeholder-shown + .search-icon + .search-clear-btn { + opacity: 0 !important; + } +.search-box-circle .input-control-icon-left, +.search-box-circle .input-control-icon-right, +.search-box-circle > .form-control { + border-radius: 16px; + } +.search-box-circle + .input-group-btn > .btn { + border-radius: 0 16px 16px 0; + } +.input-group { + position: relative; + display: table; + border-collapse: separate; + } +.input-group[class*="col-"] { + float: none; + padding-right: 0; + padding-left: 0; + } +.input-group .form-control { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; + } +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; + } +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; + } +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; + } +.input-group-addon { + padding: 5px 12px; + font-size: 13px; + font-weight: normal; + line-height: 1; + color: #222; + text-align: center; + background-color: #e5e5e5; + border: 1px solid #ccc; + border-radius: 4px; + } +.input-group-addon input[type="radio"], +.input-group-addon input[type="checkbox"] { + margin-top: 0; + } +.input-group-addon.fix-border { + border-right: 0; + border-left: 0; + } +.input-group-addon:empty { + width: 1px; + padding: 0; + } +.input-group-addon.fix-padding { + width: 1px; + padding: 0; + } +.input-group-btn.fix-border > .btn { + border-right: 0; + border-left: 0; + border-radius: 0; + } +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn, +.input-group-btn:first-child > .btn-group-vertical > .btn, +.input-group-btn:last-child > .btn-group-vertical:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn, +.input-group-btn:last-child > .btn-group-vertical > .btn, +.input-group-btn:first-child > .btn-group-vertical:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } +.input-group-addon:first-child { + border-right: 0; + } +.input-group-addon:last-child { + border-left: 0; + } +.input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; + } +.input-group-btn > .btn { + position: relative; + } +.input-group-btn > .btn + .btn { + margin-left: -1px; + } +.input-group-btn > .btn:hover, +.input-group-btn > .btn:focus, +.input-group-btn > .btn:active { + z-index: 2; + } +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group, +.input-group-btn:first-child > .btn-group-vertical { + margin-right: -1px; + } +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group, +.input-group-btn:last-child > .btn-group-vertical { + margin-left: -1px; + } +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + height: 43px; + padding: 10px 16px; + font-size: 17px; + line-height: 1.25; + border-radius: 6px; + } +select.input-group-lg > .form-control, +select.input-group-lg > .input-group-addon, +select.input-group-lg > .input-group-btn > .btn { + height: 43px; + line-height: 43px; + } +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn { + height: auto; + } +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + height: 24px; + padding: 2px 8px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; + } +select.input-group-sm > .form-control, +select.input-group-sm > .input-group-addon, +select.input-group-sm > .input-group-btn > .btn { + height: 24px; + line-height: 24px; + } +textarea.input-group-sm > .form-control, +textarea.input-group-sm > .input-group-addon, +textarea.input-group-sm > .input-group-btn > .btn { + height: auto; + } +.input-group-addon.input-sm { + padding: 2px 8px; + font-size: 12px; + border-radius: 3px; + } +.input-group-addon.input-lg { + padding: 10px 16px; + font-size: 17px; + border-radius: 6px; + } +.code, +code, +kbd, +pre, +samp { + font-family: Monaco, Menlo, Consolas, "Courier New", monospace; + } +kbd, +code { + padding: 2px 4px; + font-size: 90%; + color: #37474f; + background-color: #f3f5f7; + border-radius: 4px; + } +kbd { + padding: 1px 4px; + font-weight: bold; + color: #666; + background-color: #f1f1f1; + border: 1px solid #d7d7d7; + border-bottom-width: 2px; + } +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 12px; + line-height: 1.38461538; + color: #333; + word-break: break-all; + word-wrap: break-word; + background-color: #f5f5f5; + border: 1px solid #ccc; + border-radius: 4px; + } +pre code { + padding: 0; + margin: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border: 0; + } +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; + } +.com { + color: #93a1a1; + } +.lit { + color: #195f91; + } +.pun, +.opn, +.clo { + color: #93a1a1; + } +.fun { + color: #dc322f; + } +.str, +.atv { + color: #d14; + } +.kwd, +.prettyprint .tag { + color: #1e347b; + } +.typ, +.atn, +.dec, +.var { + color: teal; + } +.pln { + color: #48484c; + } +.prettyprint.linenums { + -webkit-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; + box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; + } +.prettyprint ol.linenums { + padding-left: 35px; + margin-bottom: 0; + line-height: 20px; + color: #bebec5; + text-shadow: 0 1px 0 #fff; + } +.pager { + display: inline-block; + padding-left: 0; + margin: 20px 0; + list-style: none; + } +.pager > li { + display: inline; + } +.pager > li > a, +.pager > li > span { + position: relative; + float: left; + padding: 5px 12px; + margin-left: -1px; + line-height: 1.53846154; + text-decoration: none; + background-color: #fff; + border: 1px solid #ddd; + } +.pager > li:first-child > a, +.pager > li:first-child > span { + margin-left: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + } +.pager > li:last-child > a, +.pager > li:last-child > span { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + } +.pager > li > a:hover, +.pager > li > span:hover, +.pager > li > a:focus, +.pager > li > span:focus { + z-index: 2; + background-color: #e5e5e5; + } +.pager > li.active > a, +.pager > li.active > span, +.pager > li.active > a:hover, +.pager > li.active > span:hover { + z-index: 3; + color: #fff; + cursor: default; + background-color: #3280fc; + border-color: #3280fc; + } +.pager > li.disabled > span, +.pager > li.disabled > span:hover, +.pager > li.disabled > span:focus, +.pager > li.disabled > a, +.pager > li.disabled > a:hover, +.pager > li.disabled > a:focus { + color: #ddd; + pointer-events: none; + cursor: not-allowed; + background-color: #fff; + border-color: #ddd; + } +.pager-justify { + display: block; + } +.pager-justify .next > a, +.pager-justify .next > span { + float: right; + border-radius: 4px; + } +.pager-justify .previous > a, +.pager-justify .previous > span { + float: left; + border-radius: 4px; + } +.pager-goto { + width: 100px; + text-align: center; + } +.pager > li > div { + float: left; + } +.pager > li .pager-goto, +.pager > li .pager-size-menu, +.pager > li.space { + margin: 0 5px; + } +.pager-label { + position: relative; + float: left; + padding: 5px 4px; + margin-left: -1px; + line-height: 1.53846154; + text-decoration: none; + border: 1px solid transparent; + } +.pager-item-left > a { + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + } +.pager-item-right > a { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + } +.pager-lg > li > a, +.pager-lg > li > span { + padding: 10px 16px; + font-size: 17px; + } +.pager-lg > li:first-child > a, +.pager-lg > li:first-child > span { + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; + } +.pager-lg > li:last-child > a, +.pager-lg > li:last-child > span { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; + } +.pager-sm > li > a, +.pager-sm > li > span { + padding: 2px 8px; + font-size: 12px; + } +.pager-sm > li:first-child > a, +.pager-sm > li:first-child > span { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + } +.pager-sm > li:last-child > a, +.pager-sm > li:last-child > span { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + } +.pager-pills > li:first-child > a, +.pager-pills > li:first-child > span { + border-radius: 16px 0 0 16px; + } +.pager-pills > li:last-child > a, +.pager-pills > li:last-child > span { + border-radius: 0 16px 16px 0; + } +.pager-pills.pager-justify > li > a, +.pager-pills.pager-justify > li > span { + border-radius: 16px; + } +.pager-loose { + display: block; + margin: 20px 0; + } +.pager-loose.pager-pills > li > a, +.pager-loose.pager-pills > li > span { + border-radius: 16px; + } +.pager-loose > li > a, +.pager-loose > li > span { + margin-left: 5px; + border-radius: 4px; + } +.pager-loose > li:first-child > a, +.pager-loose > li:first-child > span { + margin-left: 0; + } +.nav { + padding-left: 0; + margin-bottom: 0; + list-style: none; + } +.nav > .nav-heading { + padding: 8px 15px; + font-weight: bold; + color: #808080; + } +.nav > li { + position: relative; + display: block; + } +.nav > li > a { + position: relative; + display: block; + padding: 8px 15px; + color: #353535; + } +.nav > li > a:hover, +.nav > li > a:focus { + color: #0d3d88; + text-decoration: none; + background-color: #f1f1f1; + } +.nav > li.disabled > a { + color: #ddd; + } +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #ddd; + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + } +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + background-color: #f1f1f1; + border-color: #145ccd; + } +.nav > li > a > img { + max-width: none; + } +.nav-pills > li { + float: left; + } +.nav-pills > li > a { + border-radius: 20px; + } +.nav-pills > li + li { + margin-left: 2px; + } +.nav-pills > li.active > a, +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { + color: #fff; + background-color: #3280fc; + } +.nav-primary > li { + float: left; + margin-left: -1px; + } +.nav-primary > li:first-child > a { + margin-left: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + } +.nav-primary > li:last-child > a { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + } +.nav-primary > li > a { + border: 1px solid #ddd; + } +.nav-primary > li.active > a, +.nav-primary > li.active > a:hover, +.nav-primary > li.active > a:focus { + color: #fff; + background-color: #3280fc; + border-color: #3280fc; + } +.nav-secondary > li { + float: left; + } +.nav-secondary > li > a { + border-bottom: 2px solid #e5e5e5; + } +.nav-secondary > li.active > a, +.nav-secondary > li.active > a:hover, +.nav-secondary > li.active > a:focus { + color: #3280fc; + border-bottom-color: #3280fc; + } +.nav-secondary > li.nav-heading { + border-bottom: 2px solid #e5e5e5; + } +.nav-stacked > li { + float: none; + } +.nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; + } +.nav-stacked.nav-primary > li, +.nav-stacked.nav-primary > li > a { + margin-left: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } +.nav-stacked.nav-primary > li + li { + margin-top: -1px; + } +.nav-stacked.nav-primary > li:first-child { + margin-top: 0; + } +.nav-stacked.nav-primary > li:first-child > a, +.nav-stacked.nav-primary > li:first-child.nav-heading { + margin-left: 0; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + } +.nav-stacked.nav-primary > li:last-child > a { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; + } +.nav-stacked.nav-primary > li.nav-heading { + background-color: #f1f1f1; + border: 1px solid #ddd; + } +.nav-stacked.nav-secondary > li > a { + border: none; + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + -webkit-box-shadow: inset 2px 0 0 #f5f5f5; + box-shadow: inset 2px 0 0 #f5f5f5; + } +.nav-stacked.nav-secondary > li > a:hover { + -webkit-box-shadow: inset 2px 0 0 #e5e5e5; + box-shadow: inset 2px 0 0 #e5e5e5; + } +.nav-stacked.nav-secondary > li + li { + margin-top: -1px; + } +.nav-stacked.nav-secondary > li:first-child { + margin-top: 0; + } +.nav-stacked.nav-secondary > li.active > a, +.nav-stacked.nav-secondary > li.active > a:hover, +.nav-stacked.nav-secondary > li.active > a:focus { + background-color: #f5f5f5; + -webkit-box-shadow: inset 2px 0 0 #3280fc; + box-shadow: inset 2px 0 0 #3280fc; + } +.nav-stacked.nav-secondary > li.nav-heading { + border-bottom: 1px solid #ddd; + } +.nav-justified { + width: 100%; + } +.nav-justified > li { + float: none; + } +.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; + } +@media (min-width: 768px) { + .nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-justified > li > a { + margin-bottom: 0; + } + .nav-justified.nav-primary > li + li > a { + border-left: 0; + } + } +.nav-tabs { + border-bottom: 1px solid #ddd; + } +.nav-tabs > li { + float: left; + margin-bottom: -1px; + } +.nav-tabs > li > a { + margin-right: 2px; + line-height: 1.53846154; + border: 1px solid transparent; + border-radius: 4px 4px 0 0; + } +.nav-tabs > li > a:hover { + border-color: #e5e5e5 #e5e5e5 #ddd; + } +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus { + color: #808080; + cursor: default; + background-color: #fff; + border: 1px solid #ddd; + border-bottom-color: transparent; + } +.nav-tabs.nav-justified { + width: 100%; + border-bottom: 0; + } +.nav-tabs.nav-justified > li { + float: none; + } +.nav-tabs.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; + } +@media (min-width: 768px) { + .nav-tabs.nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-tabs.nav-justified > li > a { + margin-bottom: 0; + } + .nav-tabs.nav-justified.nav-primary > li + li > a { + border-left: 0; + } + } +.nav-tabs.nav-justified > li > a { + margin-right: 0; + border-radius: 4px; + } +.nav-tabs.nav-justified > .active > a, +.nav-tabs.nav-justified > .active > a:hover, +.nav-tabs.nav-justified > .active > a:focus { + border: 1px solid #ddd; + } +@media (min-width: 768px) { + .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs.nav-justified > .active > a, + .nav-tabs.nav-justified > .active > a:hover, + .nav-tabs.nav-justified > .active > a:focus { + border-bottom-color: #fff; + } + } +@-moz-document url-prefix() { + .nav-tabs > li.active > a:focus .nav-tabs > li > a:focus { + outline: 0; + } + } +.nav-tabs.nav-stacked { + border-right: 1px solid #ddd; + border-bottom: none; + } +.nav-tabs.nav-stacked > li { + float: none; + margin-right: -1px; + margin-bottom: 0; + } +.nav-tabs.nav-stacked > li > a { + margin-right: 0; + border-radius: 4px 0 0 4px; + } +.nav-tabs.nav-stacked > li.active > a, +.nav-tabs.nav-stacked > li.active > a:hover, +.nav-tabs.nav-stacked > li.active > a:focus { + border: 1px solid #ddd; + border-right-color: transparent; + } +.nav-tabs-justified { + border-bottom: 0; + } +.nav-tabs-justified > li > a { + margin-right: 0; + border-radius: 4px; + } +.nav-tabs-justified > .active > a, +.nav-tabs-justified > .active > a:hover, +.nav-tabs-justified > .active > a:focus { + border: 1px solid #ddd; + } +@media (min-width: 768px) { + .nav-tabs-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus { + border-bottom-color: #fff; + } + } +.tab-content > .tab-pane { + display: none; + } +.tab-content > .active { + display: block; + } +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; + } +.navbar { + position: relative; + min-height: 40px; + margin-bottom: 20px; + border: 1px solid transparent; + } +@media (min-width: 768px) { + .navbar { + border-radius: 4px; + } + } +@media (min-width: 768px) { + .navbar-header { + float: left; + } + } +.navbar-collapse { + padding-right: 10px; + padding-left: 10px; + overflow-x: visible; + -webkit-overflow-scrolling: touch; + border-top: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); + } +.navbar-collapse.in { + overflow-y: auto; + } +@media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + } + .navbar-collapse.in { + overflow-y: visible; + } + .navbar-fixed-top .navbar-collapse, + .navbar-static-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + padding-right: 0; + padding-left: 0; + } + } +.navbar-fixed-top .navbar-collapse, +.navbar-fixed-bottom .navbar-collapse { + max-height: 340px; + } +@media (max-device-width: 480px) and (orientation: landscape) { + .navbar-fixed-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + max-height: 200px; + } + } +.container > .navbar-header, +.container-fluid > .navbar-header, +.container > .navbar-collapse, +.container-fluid > .navbar-collapse { + margin-right: -10px; + margin-left: -10px; + } +@media (min-width: 768px) { + .container > .navbar-header, + .container-fluid > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } + } +.navbar-static-top { + z-index: 1000; + border-width: 0 0 1px; + } +@media (min-width: 768px) { + .navbar-static-top { + border-radius: 0; + } + } +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; + } +@media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; + } + } +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px; + } +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; + } +.navbar-brand { + float: left; + height: 40px; + padding: 10px 15px; + font-size: 17px; + line-height: 20px; + } +.navbar-brand:hover, +.navbar-brand:focus { + text-decoration: none; + } +.navbar-brand > img { + display: block; + } +@media (min-width: 768px) { + .navbar > .container .navbar-brand, + .navbar > .container-fluid .navbar-brand { + margin-left: -10px; + } + } +.navbar-toggle { + position: relative; + float: right; + padding: 9px 10px; + margin-top: 3px; + margin-right: 3px; + margin-bottom: 3px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; + } +.navbar-toggle:focus { + outline: 0; + } +.navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; + } +.navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; + } +@media (min-width: 768px) { + .navbar-toggle { + display: none; + } + } +.navbar-nav { + margin: 5px -10px; + } +.navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px; + } +@media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; + } + } +@media (min-width: 768px) { + .navbar-nav { + float: left; + margin: 0; + } + .navbar-nav > li { + float: left; + } + .navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + } + .navbar-nav.nav-justified > li { + float: none; + } + } +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-left-radius: 0; + border-top-right-radius: 0; + } +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } +.navbar-nav.pull-right > li > .dropdown-menu, +.navbar-nav > li > .dropdown-menu.pull-right { + right: 0; + left: auto; + } +.navbar-btn { + margin-top: 4px; + margin-bottom: 4px; + } +.navbar-text { + float: left; + margin-top: 10px; + margin-bottom: 10px; + } +@media (min-width: 768px) { + .navbar-text { + margin-right: 10px; + margin-left: 10px; + } + } +@media (min-width: 768px) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + margin-right: -10px; + } + .navbar-right ~ .navbar-right { + margin-right: 0; + } + } +.navbar-default { + background-color: #f7f7f7; + border-color: #dedede; + } +.navbar-default .navbar-brand { + color: #333; + } +.navbar-default .navbar-brand:hover, +.navbar-default .navbar-brand:focus { + color: #1a1a1a; + background-color: transparent; + } +.navbar-default .navbar-text { + color: #333; + } +.navbar-default .navbar-nav > li > a { + color: #333; + } +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #222; + background-color: #e5e5e5; + } +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #555; + background-color: #e7e7e7; + } +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #ccc; + background-color: transparent; + } +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: #ddd; + } +.navbar-default .navbar-toggle .icon-bar { + background-color: #808080; + } +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #dedede; + } +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .open > a:hover, +.navbar-default .navbar-nav > .open > a:focus { + color: #555; + background-color: #e7e7e7; + } +@media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #333; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #222; + background-color: #e5e5e5; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #555; + background-color: #e7e7e7; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #ccc; + background-color: transparent; + } + } +.navbar-default .navbar-link { + color: #333; + } +.navbar-default .navbar-link:hover { + color: #222; + } +.navbar-default .btn-link { + color: #333; + } +.navbar-default .btn-link:hover, +.navbar-default .btn-link:focus { + color: #222; + } +.navbar-default .btn-link[disabled]:hover, +fieldset[disabled] .navbar-default .btn-link:hover, +.navbar-default .btn-link[disabled]:focus, +fieldset[disabled] .navbar-default .btn-link:focus { + color: #ccc; + } +.navbar-inverse { + background-color: #145ccd; + border-color: #10479f; + } +.navbar-inverse .navbar-brand { + color: #ddd; + } +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + color: #fff; + background-color: transparent; + } +.navbar-inverse .navbar-text { + color: #ddd; + } +.navbar-inverse .navbar-nav > li > a { + color: #ddd; + } +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #fff; + background-color: #1868e8; + } +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #fff; + background-color: #2a74ea; + } +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444; + background-color: transparent; + } +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #1251b6; + } +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #fff; + } +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #114dad; + } +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + color: #fff; + background-color: #2a74ea; + } +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #10479f; + } + .navbar-inverse .navbar-nav .open .dropdown-menu .divider { + background-color: #10479f; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #ddd; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #fff; + background-color: #1868e8; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #fff; + background-color: #2a74ea; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #444; + background-color: transparent; + } + } +.navbar-inverse .navbar-link { + color: #ddd; + } +.navbar-inverse .navbar-link:hover { + color: #fff; + } +.navbar-form { + padding: 10px 10px; + margin-top: 4px; + margin-right: -10px; + margin-bottom: 4px; + margin-left: -10px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); + } +@media (min-width: 768px) { + .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + padding-left: 0; + margin-top: 0; + margin-bottom: 0; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + float: none; + margin-left: 0; + } + } +@media (max-width: 767px) { + .navbar-form .form-group { + margin-bottom: 5px; + } + .navbar-form .form-group:last-child { + margin-bottom: 0; + } + } +@media (min-width: 768px) { + .navbar-form { + width: auto; + padding-top: 0; + padding-bottom: 0; + margin-right: 0; + margin-left: 0; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + } +.fade { + opacity: 0; + -webkit-transition: opacity .15s linear; + -o-transition: opacity .15s linear; + transition: opacity .15s linear; + } +.fade.in { + opacity: 1; + } +.scale { + -webkit-transition: all .15s ease; + -o-transition: all .15s ease; + transition: all .15s ease; + -webkit-transform: scale(.8); + -ms-transform: scale(.8); + -o-transform: scale(.8); + transform: scale(.8); + } +.scale.in { + -webkit-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); + } +.collapse { + display: none; + } +.collapse.in { + display: block; + } +tr.collapse.in { + display: table-row; + } +tbody.collapse.in { + display: table-row-group; + } +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height .35s ease; + -o-transition: height .35s ease; + transition: height .35s ease; + } +.modal-open { + overflow: hidden; + } +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + display: none; + overflow: hidden; + -webkit-overflow-scrolling: touch; + outline: 0; + } +.modal.fade .modal-dialog { + -webkit-transition: -webkit-transform .3s ease-out; + -o-transition: -o-transform .3s ease-out; + transition: -webkit-transform .3s ease-out; + transition: transform .3s ease-out; + transition: transform .3s ease-out, -webkit-transform .3s ease-out, -o-transform .3s ease-out; + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + -o-transform: translate(0, -25%); + transform: translate(0, -25%); + } +.modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); + } +.modal > .loader { + display: none; + } +.modal.modal-loading .modal-dialog { + opacity: 0; + } +.modal.modal-loading .loader { + position: absolute; + top: 35%; + left: 50%; + display: block; + width: 80px; + margin-left: -40px; + font-size: 56px; + color: #fff; + text-align: center; + } +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; + } +.modal-iframe .modal-body > iframe { + border-radius: 0 0 6px 6px; + } +.modal-dialog { + position: relative; + width: auto; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + outline: 0; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); + box-shadow: 0 3px 9px rgba(0, 0, 0, .5); + } +.modal-dialog.modal-moveable { + position: absolute; + margin: 0; + } +.modal-dialog.modal-moveable .modal-header { + cursor: move; + } +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000; + } +.modal-backdrop.fade { + filter: alpha(opacity=0); + opacity: 0; + } +.modal-backdrop.in { + filter: alpha(opacity=50); + opacity: .5; + } +.modal-header { + min-height: 16.53846154px; + padding: 15px; + border-bottom: 1px solid #e5e5e5; + } +.modal-header .close { + margin-top: -2px; + } +.modal-title { + margin: 0; + line-height: 1.53846154; + } +.modal-body { + position: relative; + padding: 15px; + } +.modal-footer { + padding: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; + } +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; + } +.modal-footer .btn-group .btn + .btn, +.modal-footer .btn-group-vertical .btn + .btn { + margin-left: -1px; + } +.modal-footer .btn-block + .btn-block { + margin-left: 0; + } +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; + } +@media (min-width: 768px) { + .modal-dialog { + width: 600px; + margin: 30px auto; + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + } + .modal-sm { + width: 300px; + } + } +@media (min-width: 992px) { + .modal-lg { + width: 900px; + } + } +/* full screen modal */ +.modal-fullscreen { + position: relative; + width: 100%!important; + height: 100%!important; + margin: 0; + border-radius: 0; + } +.modal-fullscreen .modal-body { + position: absolute; + top: 52px; + right: 0; + bottom: 0; + left: 0; + overflow-y: auto; + } +.tooltip { + position: absolute; + z-index: 1030; + display: block; + font-size: 12px; + line-height: 1.4; + visibility: visible; + filter: alpha(opacity=0); + opacity: 0; + } +.tooltip.in { + filter: alpha(opacity=100); + opacity: 1; + } +.tooltip.top { + padding: 5px 0; + margin-top: -3px; + } +.tooltip.right { + padding: 0 5px; + margin-left: 3px; + } +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; + } +.tooltip.left { + padding: 0 5px; + margin-left: -3px; + } +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #fff; + text-align: center; + text-decoration: none; + background-color: #353535; + border-radius: 4px; + } +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + } +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #353535; + } +.tooltip.top-left .tooltip-arrow { + bottom: 0; + left: 5px; + border-width: 5px 5px 0; + border-top-color: #353535; + } +.tooltip.top-right .tooltip-arrow { + right: 5px; + bottom: 0; + border-width: 5px 5px 0; + border-top-color: #353535; + } +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #353535; + } +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #353535; + } +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #353535; + } +.tooltip.bottom-left .tooltip-arrow { + top: 0; + left: 5px; + border-width: 0 5px 5px; + border-bottom-color: #353535; + } +.tooltip.bottom-right .tooltip-arrow { + top: 0; + right: 5px; + border-width: 0 5px 5px; + border-bottom-color: #353535; + } +.tooltip-primary .tooltip-inner { + background-color: #3280fc; + } +.tooltip-primary.tooltip.top .tooltip-arrow { + border-top-color: #3280fc; + } +.tooltip-primary.tooltip.top-left .tooltip-arrow { + border-top-color: #3280fc; + } +.tooltip-primary.tooltip.top-right .tooltip-arrow { + border-top-color: #3280fc; + } +.tooltip-primary.tooltip.right .tooltip-arrow { + border-right-color: #3280fc; + } +.tooltip-primary.tooltip.left .tooltip-arrow { + border-left-color: #3280fc; + } +.tooltip-primary.tooltip.bottom .tooltip-arrow { + border-bottom-color: #3280fc; + } +.tooltip-primary.tooltip.bottom-left .tooltip-arrow { + border-bottom-color: #3280fc; + } +.tooltip-primary.tooltip.bottom-right .tooltip-arrow { + border-bottom-color: #3280fc; + } +.tooltip-success .tooltip-inner { + background-color: #38b03f; + } +.tooltip-success.tooltip.top .tooltip-arrow { + border-top-color: #38b03f; + } +.tooltip-success.tooltip.top-left .tooltip-arrow { + border-top-color: #38b03f; + } +.tooltip-success.tooltip.top-right .tooltip-arrow { + border-top-color: #38b03f; + } +.tooltip-success.tooltip.right .tooltip-arrow { + border-right-color: #38b03f; + } +.tooltip-success.tooltip.left .tooltip-arrow { + border-left-color: #38b03f; + } +.tooltip-success.tooltip.bottom .tooltip-arrow { + border-bottom-color: #38b03f; + } +.tooltip-success.tooltip.bottom-left .tooltip-arrow { + border-bottom-color: #38b03f; + } +.tooltip-success.tooltip.bottom-right .tooltip-arrow { + border-bottom-color: #38b03f; + } +.tooltip-info .tooltip-inner { + background-color: #03b8cf; + } +.tooltip-info.tooltip.top .tooltip-arrow { + border-top-color: #03b8cf; + } +.tooltip-info.tooltip.top-left .tooltip-arrow { + border-top-color: #03b8cf; + } +.tooltip-info.tooltip.top-right .tooltip-arrow { + border-top-color: #03b8cf; + } +.tooltip-info.tooltip.right .tooltip-arrow { + border-right-color: #03b8cf; + } +.tooltip-info.tooltip.left .tooltip-arrow { + border-left-color: #03b8cf; + } +.tooltip-info.tooltip.bottom .tooltip-arrow { + border-bottom-color: #03b8cf; + } +.tooltip-info.tooltip.bottom-left .tooltip-arrow { + border-bottom-color: #03b8cf; + } +.tooltip-info.tooltip.bottom-right .tooltip-arrow { + border-bottom-color: #03b8cf; + } +.tooltip-warning .tooltip-inner { + background-color: #f1a325; + } +.tooltip-warning.tooltip.top .tooltip-arrow { + border-top-color: #f1a325; + } +.tooltip-warning.tooltip.top-left .tooltip-arrow { + border-top-color: #f1a325; + } +.tooltip-warning.tooltip.top-right .tooltip-arrow { + border-top-color: #f1a325; + } +.tooltip-warning.tooltip.right .tooltip-arrow { + border-right-color: #f1a325; + } +.tooltip-warning.tooltip.left .tooltip-arrow { + border-left-color: #f1a325; + } +.tooltip-warning.tooltip.bottom .tooltip-arrow { + border-bottom-color: #f1a325; + } +.tooltip-warning.tooltip.bottom-left .tooltip-arrow { + border-bottom-color: #f1a325; + } +.tooltip-warning.tooltip.bottom-right .tooltip-arrow { + border-bottom-color: #f1a325; + } +.tooltip-danger .tooltip-inner { + background-color: #ea644a; + } +.tooltip-danger.tooltip.top .tooltip-arrow { + border-top-color: #ea644a; + } +.tooltip-danger.tooltip.top-left .tooltip-arrow { + border-top-color: #ea644a; + } +.tooltip-danger.tooltip.top-right .tooltip-arrow { + border-top-color: #ea644a; + } +.tooltip-danger.tooltip.right .tooltip-arrow { + border-right-color: #ea644a; + } +.tooltip-danger.tooltip.left .tooltip-arrow { + border-left-color: #ea644a; + } +.tooltip-danger.tooltip.bottom .tooltip-arrow { + border-bottom-color: #ea644a; + } +.tooltip-danger.tooltip.bottom-left .tooltip-arrow { + border-bottom-color: #ea644a; + } +.tooltip-danger.tooltip.bottom-right .tooltip-arrow { + border-bottom-color: #ea644a; + } +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + max-width: 300px; + text-align: left; + white-space: normal; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 4px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2); + box-shadow: 0 5px 10px rgba(0, 0, 0, .2); + } +.popover.top { + margin-top: -10px; + } +.popover.right { + margin-left: 10px; + } +.popover.bottom { + margin-top: 10px; + } +.popover.left { + margin-left: -10px; + } +.popover.no-arrow.top { + margin-top: 0; + } +.popover.no-arrow.right { + margin-left: 0; + } +.popover.no-arrow.bottom { + margin-top: 0; + } +.popover.no-arrow.left { + margin-left: 0; + } +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 13px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: 4px 4px 0 0; + } +.popover-content { + padding: 9px 14px; + } +.popover .arrow, +.popover .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + } +.popover .arrow { + border-width: 11px; + } +.popover .arrow:after { + content: ""; + border-width: 10px; + } +.popover.top .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, .25); + border-bottom-width: 0; + } +.popover.top .arrow:after { + bottom: 1px; + margin-left: -10px; + content: " "; + border-top-color: #fff; + border-bottom-width: 0; + } +.popover.right .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, .25); + border-left-width: 0; + } +.popover.right .arrow:after { + bottom: -10px; + left: 1px; + content: " "; + border-right-color: #fff; + border-left-width: 0; + } +.popover.bottom .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, .25); + } +.popover.bottom .arrow:after { + top: 1px; + margin-left: -10px; + content: " "; + border-top-width: 0; + border-bottom-color: #fff; + } +.popover.left .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, .25); + } +.popover.left .arrow:after { + right: 1px; + bottom: -10px; + content: " "; + border-right-width: 0; + border-left-color: #fff; + } +.popover-primary { + border-color: #3280fc; + } +.popover-primary .popover-title { + color: #fff; + background-color: #3280fc; + } +.popover-primary.popover.top .arrow { + border-top-color: #3280fc; + } +.popover-primary.popover.right .arrow { + border-right-color: #3280fc; + } +.popover-primary.popover.left .arrow { + border-left-color: #3280fc; + } +.popover-primary.popover.bottom .arrow, +.popover-primary.popover.bottom .arrow:after { + border-bottom-color: #3280fc; + } +.popover-success { + border-color: #38b03f; + } +.popover-success .popover-title { + color: #fff; + background-color: #38b03f; + } +.popover-success.popover.top .arrow { + border-top-color: #38b03f; + } +.popover-success.popover.right .arrow { + border-right-color: #38b03f; + } +.popover-success.popover.left .arrow { + border-left-color: #38b03f; + } +.popover-success.popover.bottom .arrow, +.popover-success.popover.bottom .arrow:after { + border-bottom-color: #38b03f; + } +.popover-info { + border-color: #03b8cf; + } +.popover-info .popover-title { + color: #fff; + background-color: #03b8cf; + } +.popover-info.popover.top .arrow { + border-top-color: #03b8cf; + } +.popover-info.popover.right .arrow { + border-right-color: #03b8cf; + } +.popover-info.popover.left .arrow { + border-left-color: #03b8cf; + } +.popover-info.popover.bottom .arrow, +.popover-info.popover.bottom .arrow:after { + border-bottom-color: #03b8cf; + } +.popover-warning { + border-color: #f1a325; + } +.popover-warning .popover-title { + color: #fff; + background-color: #f1a325; + } +.popover-warning.popover.top .arrow { + border-top-color: #f1a325; + } +.popover-warning.popover.right .arrow { + border-right-color: #f1a325; + } +.popover-warning.popover.left .arrow { + border-left-color: #f1a325; + } +.popover-warning.popover.bottom .arrow, +.popover-warning.popover.bottom .arrow:after { + border-bottom-color: #f1a325; + } +.popover-danger { + border-color: #ea644a; + } +.popover-danger .popover-title { + color: #fff; + background-color: #ea644a; + } +.popover-danger.popover.top .arrow { + border-top-color: #ea644a; + } +.popover-danger.popover.right .arrow { + border-right-color: #ea644a; + } +.popover-danger.popover.left .arrow { + border-left-color: #ea644a; + } +.popover-danger.popover.bottom .arrow, +.popover-danger.popover.bottom .arrow:after { + border-bottom-color: #ea644a; + } +.caret { + display: inline-block; + width: 0; + height: 0; + margin-bottom: 2px; + margin-left: 2px; + vertical-align: middle; + border-top: 4px dashed; + border-top: 4px solid \9; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + } +.dropup, +.dropdown { + position: relative; + } +.dropdown-toggle:focus { + outline: 0; + } +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + font-size: 13px; + list-style: none; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #cbcbcb; + border: 1px solid rgba(0, 0, 0, .15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + } +.dropdown-menu.pull-right { + right: 0; + left: auto; + } +.dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; + } +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.53846154; + color: #353535; + white-space: nowrap; + } +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + color: #fff; + text-decoration: none; + background-color: #3280fc; + } +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #fff; + text-decoration: none; + background-color: #3280fc; + outline: 0; + } +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #ddd; + } +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + } +.dropdown-hover .dropdown-menu { + margin: -1px 0; + } +.dropdown-hover:hover > .dropdown-menu, +.open > .dropdown-menu { + display: block; + } +.dropdown-hover:hover > a, +.open > a { + outline: 0; + } +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + font-weight: bold; + line-height: 1.53846154; + color: #808080; + } +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; + } +.pull-right > .dropdown-menu { + right: 0; + left: auto; + } +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + content: ""; + border-top: 0 dotted; + border-bottom: 4px solid; + } +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; + } +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + right: 0; + left: auto; + } + } +.dropdown-submenu { + position: relative; + } +.dropdown-submenu > .dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + border-radius: 4px; + } +.dropdown-submenu.open > .dropdown-menu, +.dropdown-submenu:hover > .dropdown-menu { + display: block; + } +.dropup .dropdown-submenu > .dropdown-menu { + top: auto; + bottom: 0; + margin-top: 0; + margin-bottom: -2px; + border-radius: 4px; + } +.dropdown-submenu > a:after { + display: block; + float: right; + width: 0; + height: 0; + margin-top: 5px; + margin-right: -10px; + content: " "; + border-color: transparent; + border-style: solid; + border-width: 5px 0 5px 5px; + border-left-color: #ccc; + } +.dropdown-submenu:hover > a:after { + border-left-color: #fff; + } +.dropdown-submenu > a { + min-width: 160px; + } +.dropdown-submenu > .dropdown-menu.pull-left { + left: -100%; + } +.dropdown-submenu:hover > a, +.dropdown-submenu:focus > a { + color: #fff; + text-decoration: none; + background-color: #3280fc; + } +.carousel { + position: relative; + } +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; + } +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: .6s ease-in-out left; + -o-transition: .6s ease-in-out left; + transition: .6s ease-in-out left; + } +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + line-height: 1; + } +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; + } +.carousel-inner > .active { + left: 0; + } +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; + } +.carousel-inner > .next { + left: 100%; + } +.carousel-inner > .prev { + left: -100%; + } +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; + } +.carousel-inner > .active.left { + left: -100%; + } +.carousel-inner > .active.right { + left: 100%; + } +.carousel-control { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 10%; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); + filter: alpha(opacity=40); + outline: none; + opacity: .4; + } +.carousel-control > .icon { + font-size: 20px; + } +.carousel-control.left { + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .3)), to(rgba(0, 0, 0, .0001))); + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .3) 0%, rgba(0, 0, 0, .0001) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, .3) 0%, rgba(0, 0, 0, .0001) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, .3) 0%, rgba(0, 0, 0, .0001) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#4d000000', endColorstr='#00000000', GradientType=1); + background-repeat: repeat-x; + } +.carousel-control.right { + right: 0; + left: auto; + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .3))); + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .3) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .3) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .3) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#4d000000', GradientType=1); + background-repeat: repeat-x; + } +.carousel-control:hover, +.carousel-control:focus { + color: #fff; + text-decoration: none; + filter: alpha(opacity=100); + outline: none; + opacity: 1; + } +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .icon-chevron-left, +.carousel-control .icon-chevron-right { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; + } +.carousel-control .icon-prev, +.carousel-control .icon-chevron-left { + left: 50%; + } +.carousel-control .icon-next, +.carousel-control .icon-chevron-right { + right: 50%; + } +.carousel-control .icon-prev, +.carousel-control .icon-next { + width: 20px; + height: 20px; + margin-top: -10px; + margin-left: -10px; + font-family: serif; + } +.carousel-control .icon-prev:before { + content: '\2039'; + } +.carousel-control .icon-next:before { + content: '\203a'; + } +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); + } +.carousel-caption .btn { + text-shadow: none; + } +@media screen and (min-width: 768px) { + .carousel-control .icon-prev, + .carousel-control .icon-next { + top: 40%; + width: 30px; + height: 30px; + margin-top: -15px; + margin-left: -15px; + font-size: 80px; + } + .carousel-control .icon-prev { + left: 30%; + } + .carousel-control .icon-next { + right: 25%; + } + .carousel-caption { + right: 20%; + left: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } + } +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + padding-left: 0; + margin-left: -30%; + text-align: center; + list-style: none; + } +.carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + cursor: pointer; + border: 1px solid #fff; + border-radius: 10px; + } +.carousel-indicators .active { + width: 12px; + height: 12px; + margin: 0; + background-color: #fff; + } +[data-toggle="lightbox"] { + cursor: pointer; + } +.modal-lightbox .close { + position: absolute; + top: 0; + right: 0; + z-index: 10; + display: block; + width: 40px; + height: 40px; + font-size: 14px; + color: #fff; + text-align: center; + background-color: #353535; + background-color: rgba(53, 53, 53, .2); + filter: alpha(opacity=80); + opacity: .8; + -webkit-transition: opacity .2s cubic-bezier(.175, .885, .32, 1), background-color .2s cubic-bezier(.175, .885, .32, 1); + -o-transition: opacity .2s cubic-bezier(.175, .885, .32, 1), background-color .2s cubic-bezier(.175, .885, .32, 1); + transition: opacity .2s cubic-bezier(.175, .885, .32, 1), background-color .2s cubic-bezier(.175, .885, .32, 1); + } +.modal-lightbox .controller { + position: absolute; + top: 0; + display: none; + height: 100%; + padding: 0; + line-height: 100%; + color: #fff; + cursor: pointer; + background-color: transparent; + border: none; + outline: none; + -webkit-transition: background .2s cubic-bezier(.175, .885, .32, 1); + -o-transition: background .2s cubic-bezier(.175, .885, .32, 1); + transition: background .2s cubic-bezier(.175, .885, .32, 1); + } +.modal-lightbox .controller.show { + display: block; + } +.modal-lightbox .controller > .icon { + display: inline-block; + width: 60px; + height: 50px; + line-height: 50px; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); + background-color: transparent; + -webkit-transition: background .2s cubic-bezier(.175, .885, .32, 1); + -o-transition: background .2s cubic-bezier(.175, .885, .32, 1); + transition: background .2s cubic-bezier(.175, .885, .32, 1); + } +.modal-lightbox .controller > .icon:before { + font-size: 20px; + } +.modal-lightbox .controller.prev { + left: 0; + } +.modal-lightbox .controller.next { + right: 0; + } +.modal-lightbox .modal-dialog { + position: relative; + max-width: 100%; + max-height: 100%; + margin-bottom: 0; + background: none; + border: none; + -webkit-box-shadow: none; + box-shadow: none; + -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: all .4s cubic-bezier(.175, .885, .32, 1); + transition: all .4s cubic-bezier(.175, .885, .32, 1); + } +.modal-lightbox .modal-dialog:hover .close, +.modal-lightbox .modal-dialog:focus .close { + background-color: rgba(53, 53, 53, .5); + filter: alpha(opacity=100); + opacity: 1; + } +.modal-lightbox .modal-dialog:hover .close:hover, +.modal-lightbox .modal-dialog:focus .close:hover { + background-color: rgba(53, 53, 53, .9); + } +.modal-lightbox .modal-dialog:hover .controller > .icon, +.modal-lightbox .modal-dialog:focus .controller > .icon { + text-shadow: none; + background-color: #353535; + background-color: rgba(53, 53, 53, .5); + } +.modal-lightbox .modal-dialog:hover .controller:hover > .icon, +.modal-lightbox .modal-dialog:focus .controller:hover > .icon { + background-color: #353535; + background-color: rgba(53, 53, 53, .9); + } +.modal-lightbox .caption { + display: none; + } +.modal-lightbox.lightbox-with-caption .caption { + position: absolute; + bottom: 0; + display: block; + width: 100%; + padding: 10px 15px; + color: #fff; + text-align: center; + text-shadow: 1px 1px 0 rgba(0, 0, 0, .3); + background: rgba(0, 0, 0, .15); + opacity: .5; + -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: all .4s cubic-bezier(.175, .885, .32, 1); + transition: all .4s cubic-bezier(.175, .885, .32, 1); + } +.modal-lightbox.lightbox-with-caption .modal-dialog:hover .caption { + background: rgba(0, 0, 0, .6); + opacity: 1; + } +.lightbox-img { + display: block; + width: inherit; + max-width: 100%; + height: auto; + padding: 0; + margin: 0 auto; + cursor: pointer; + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: all .4s cubic-bezier(.175, .885, .32, 1); + transition: all .4s cubic-bezier(.175, .885, .32, 1); + } +.messager { + display: table; + margin: 10px; + overflow: hidden; + color: #fff; + pointer-events: auto; + background-color: #353535; + background-color: rgba(0, 0, 0, .8); + border-radius: 20px; + } +.messager-content { + display: table-cell; + padding: 10px 15px; + vertical-align: top; + } +.messager-content > [class^='icon-'] { + display: inline-block; + margin-right: 8px; + } +.messager-actions { + display: table-cell; + vertical-align: top; + } +.messager-actions > .action { + min-width: 40px; + height: 40px; + padding: 0 12px; + color: #fafafa; + color: rgba(255, 255, 255, .6); + text-align: center; + text-shadow: none; + background: none; + border: none; + } +.messager-actions > .action.close { + padding-bottom: 5px; + font-size: 20px; + font-weight: normal; + opacity: 1; + } +.messager-actions > .action:hover { + color: #fff; + background: rgba(0, 0, 0, .1); + } +.messager-actions .action-icon + .action-text { + margin-left: 8px; + } +.messagers-holder { + position: fixed; + z-index: 99999; + padding: 10px; + pointer-events: none; + -webkit-transition: top .2s cubic-bezier(.175, .885, .32, 1); + -o-transition: top .2s cubic-bezier(.175, .885, .32, 1); + transition: top .2s cubic-bezier(.175, .885, .32, 1); + } +.messagers-holder.top { + top: 0; + } +.messagers-holder.top-left { + top: 0; + left: 0; + } +.messagers-holder.top-right { + top: 0; + right: 0; + } +.messagers-holder.bottom { + bottom: 0; + } +.messagers-holder.bottom-left { + bottom: 0; + left: 0; + } +.messagers-holder.bottom-right { + right: 0; + bottom: 0; + } +.messagers-holder.top-right .messager, +.messagers-holder.bottom-right .messager { + margin-left: auto; + } +.messagers-holder.center { + top: 0; + } +.messagers-holder.top, +.messagers-holder.bottom, +.messagers-holder.center { + right: 0; + left: 0; + } +.messagers-holder.top .messager, +.messagers-holder.bottom .messager, +.messagers-holder.center .messager { + margin: 10px auto; + } +.messager-primary { + background-color: #3280fc; + } +.messager-success { + background-color: #38b03f; + } +.messager-info { + background-color: #03b8cf; + } +.messager-warning { + background-color: #f1a325; + } +.messager-danger { + background-color: #ea644a; + } +.messager-important { + background-color: #bd7b46; + } +.messager-special { + background-color: #8666b8; + } +.article { + padding: 20px; + } +.article > header h1, +.article > header h2, +.article > header h3 { + margin-bottom: 20px; + line-height: 1.5; + } +.article > header > .abstract, +.article > header > dl { + padding: 10px 15px; + font-size: 12px; + color: #686868; + background-color: #f1f1f1; + } +.article > header > .abstract > p:last-child, +.article > header > dl > p:last-child { + margin-bottom: 0; + } +.article > header > dl { + margin: 0; + border-bottom: 1px solid #e9e9e9; + } +.article > header > dl.pull-right { + background-color: transparent; + border: none; + } +.article > footer { + border-top: 1px dashed #d7d7d7; + } +.article > footer > p { + padding: 10px 15px; + } +.article > .content, +.article-content { + padding: 20px 0; + font-size: 14px; + line-height: 1.78571429; + } +.article > .content h1, +.article-content h1 { + font-size: 20px; + } +.article > .content h2, +.article-content h2 { + font-size: 18px; + } +.article > .content h3, +.article-content h3 { + font-size: 16px; + } +.article > .content h4, +.article-content h4 { + margin-top: 15px; + font-size: 14px; + } +.article > .content h5, +.article-content h5 { + margin-top: 15px; + font-size: 13px; + } +.article > .content h6, +.article-content h6 { + margin-top: 15px; + font-size: 11px; + } +.article > .content img, +.article-content img { + margin: 10px 0; + } +.article > .content p > img, +.article-content p > img { + margin-right: 10px; + } +.article > .content p > img[align='right'], +.article-content p > img[align='right'] { + margin-left: 10px; + } +.article > .content dl, +.article-content dl { + padding-right: 2em; + padding-left: 2em; + } +.article > .content table, +.article-content table { + margin-bottom: 20px; + } +.article > .content table th, +.article-content table th, +.article > .content table td, +.article-content table td { + padding: 8px; + line-height: 1.53846154; + vertical-align: top; + border-bottom: 1px solid #ddd; + } +.article > .content table > thead > tr > th, +.article-content table > thead > tr > th { + vertical-align: bottom; + background-color: #f1f1f1; + border-bottom: 1px solid #ddd; + } +.article-content p { + margin-bottom: 0; + } +.article-content table { + width: 100%; + } +.article > .content table th, +.article > .content table td, +.article > .content table > thead > tr > th { + border: 1px solid #ddd; + } +body.article-content { + padding: 8px; + } +.article-condensed { + padding: 20px 0; + } +.article-condensed > header { + padding: 0 20px; + } +.article-condensed > header > .abstract, +.article-condensed > header > dl { + padding: 10px 15px; + margin: 0 -20px; + } +.article-condensed > .content, +.article-condensed > .article-content { + padding: 20px; + } +.article-condensed > .content > img, +.article-condensed > .article-content > img, +.article-condensed > .content > pre, +.article-condensed > .article-content > pre { + margin-right: -20px; + margin-left: -20px; + border-radius: 0; + } +.article-condensed > .content > pre, +.article-condensed > .article-content > pre { + border-right: none; + border-left: none; + } +.article-condensed > footer { + border-top: 1px dashed #d7d7d7; + } +.article-condensed > footer > p { + padding: 10px 15px; + } +.article-condensed > footer > .pager-justify > .previous > a { + border-left: none; + border-radius: 0; + } +.article-condensed > footer > .pager-justify > .next > a { + border-right: none; + border-radius: 0; + } +.comments > header { + border-bottom: 1px solid #e5e5e5; + } +.comments > header > .alert { + padding: 7.5px 15px; + margin-bottom: -10px; + } +.comments > header h1, +.comments > header h2, +.comments > header h3 { + padding: 10px 0; + margin: 10px 0; + } +.comments > footer { + padding-top: 10px; + } +.comments > footer > .reply-form > .avatar { + display: block; + float: left; + width: 40px; + height: 40px; + margin-top: 10px; + } +.comments > footer > .reply-form > .avatar + .form { + padding-left: 50px; + } +.comment { + padding: 10px 0; + border-bottom: 1px solid #e5e5e5; + } +.comment:before, +.comment:after { + /* 1 */ + display: table; + content: " "; + /* 2 */ + } +.comment:after { + clear: both; + } +.comment:before, +.comment:after { + /* 1 */ + display: table; + content: " "; + /* 2 */ + } +.comment:after { + clear: both; + } +.comment > .avatar, +.comment > .content { + display: block; + } +.comment > .avatar { + float: left; + width: 40px; + height: 40px; + margin-top: 10px; + } +.comment > .avatar + .content { + padding-left: 50px; + } +.comment > .content > .text { + margin-top: 5px; + } +.comment > .content > .actions { + margin-top: 4px; + } +.comment > .content > .actions > a { + display: inline-block; + color: #808080; + } +.comment > .content > .actions > a + a { + margin-left: 5px; + } +.comment:hover > .content > .actions > a { + color: #145ccd; + } +.comment > .comments-list { + padding-top: 10px; + padding-bottom: 0; + padding-left: 30px; + margin-left: 20px; + border-left: 1px dashed #e5e5e5; + } +.comment > .comments-list > .comment { + border: none; + border-top: 1px solid #e5e5e5; + } +.comment > .comments-list > .comment:last-child { + padding-bottom: 0; + } +.list { + padding: 0 15px; + } +.list > header { + padding-bottom: 10px; + border-bottom: 1px solid #e5e5e5; + } +.items .item { + padding: 10px 0; + border-bottom: 1px solid #e5e5e5; + -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: all .4s cubic-bezier(.175, .885, .32, 1); + transition: all .4s cubic-bezier(.175, .885, .32, 1); + } +.items .item-heading > h6, +.items .item-heading h5, +.items .item-heading h4, +.items .item-heading h3, +.items .item-heading h2, +.items .item-heading h1 { + margin-top: 5px; + } +.items .item-content:before, +.items .item-content:after { + /* 1 */ + display: table; + content: " "; + /* 2 */ + } +.items .item-content:after { + clear: both; + } +.items .item-content:before, +.items .item-content:after { + /* 1 */ + display: table; + content: " "; + /* 2 */ + } +.items .item-content:after { + clear: both; + } +.items .item-content > .media { + max-width: 100%; + margin: 5px 0; + } +.items .item-content > .media.pull-left { + max-width: 150px; + margin: 0; + margin-right: 8px; + } +.items .item-content > .media.pull-right { + max-width: 150px; + margin: 0; + margin-left: 8px; + } +.items .item-footer { + padding-top: 5px; + } +.items .item-footer > a { + color: #808080; + } +.items-hover .item:hover { + background-color: #f5f5f5; + } +.list-condensed { + padding: 0; + } +.list-condensed > header, +.list-condensed > footer, +.list-condensed > .items > .item { + padding-right: 15px; + padding-left: 15px; + } +.cards { + padding-top: 10px; + padding-bottom: 10px; + margin-right: -10px; + margin-left: -10px; + } +.card { + position: relative; + display: block; + padding: 0; + margin-bottom: 20px; + overflow: hidden; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); + box-shadow: 0 1px 2px rgba(0, 0, 0, .075); + -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: all .4s cubic-bezier(.175, .885, .32, 1); + transition: all .4s cubic-bezier(.175, .885, .32, 1); + } +.card > img { + display: block; + max-width: 100%; + height: auto; + filter: alpha(opacity=100); + opacity: 1; + } +.card > .media-wrapper { + display: block; + width: 100%; + overflow: hidden; + text-align: center; + background-color: #f1f1f1; + filter: alpha(opacity=100); + opacity: 1; + -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: all .4s cubic-bezier(.175, .885, .32, 1); + transition: all .4s cubic-bezier(.175, .885, .32, 1); + } +.card > .media-wrapper > img { + max-width: 100%; + vertical-align: middle; + } +.card .card-heading { + display: block; + padding: 10px; + margin: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } +.card .card-content, +.card .card-actions { + padding: 0 10px 10px 10px; + overflow: hidden; + text-overflow: ellipsis; + } +.card .card-actions .btn + .pull-right { + padding: 6px 0; + line-height: 20px; + } +.card:hover { + text-decoration: none; + -webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, .175); + box-shadow: 0 1px 5px rgba(0, 0, 0, .175); + } +.card:hover > img, +.card:hover > .media-wrapper { + background-color: #e5e5e5; + filter: alpha(opacity=90); + opacity: .9; + } +.card:hover > .card-reveal { + top: 0; + } +.cards-borderless .card { + border: none; + border-radius: 0; + -webkit-box-shadow: none; + box-shadow: none; + } +.cards-borderless .card > img, +.cards-borderless .card > .media-wrapper { + overflow: hidden; + border-radius: 4px; + } +.cards-borderless .card > .card-heading, +.cards-borderless .card > .card-actions, +.cards-borderless .card > .card-content { + padding-right: 0; + padding-left: 0; + } +.card > .caption { + position: absolute; + top: -100%; + left: 0; + display: block; + width: 100%; + padding: 5px 10px; + overflow: hidden; + color: #fff; + text-align: center; + background-color: #666; + background-color: rgba(0, 0, 0, .7); + filter: alpha(opacity=0); + opacity: 0; + -webkit-transition: all .8s cubic-bezier(.175, .885, .32, 1); + -o-transition: all .8s cubic-bezier(.175, .885, .32, 1); + transition: all .8s cubic-bezier(.175, .885, .32, 1); + } +.card:hover > .caption { + top: 0; + filter: alpha(opacity=100); + opacity: 1; + } +.cards-condensed { + padding: 0; + border: 1px solid #ddd; + border-top: 0; + border-left: 0; + } +.cards-condensed > [class^="col-"], +.cards-condensed > [class*=" col-"] { + padding: 0; + } +.cards-condensed .card { + padding: 10px; + margin: 0; + border-right: 0; + border-bottom: 0; + border-radius: 0; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .015); + box-shadow: 0 1px 2px rgba(0, 0, 0, .015); + } +.card > .card-reveal { + position: absolute; + top: 100%; + left: 0; + width: 100%; + height: 100%; + background-color: #f1f1f1; + -webkit-transition: all .8s cubic-bezier(.175, .885, .32, 1); + -o-transition: all .8s cubic-bezier(.175, .885, .32, 1); + transition: all .8s cubic-bezier(.175, .885, .32, 1); + } +.card > .card-reveal > .card-heading { + padding: 20px 10px; + } +.card:hover > .card-reveal { + top: 0; + } +.tree { + padding-left: 0; + } +.tree ul { + position: relative; + display: none; + padding-left: 0; + } +.tree li { + position: relative; + padding: 2px 0 2px 20px; + list-style: none; + } +.tree li:before { + position: absolute; + top: 10px; + left: 8px; + display: block; + width: 3px; + height: 3px; + content: ' '; + background-color: #999; + } +.tree li.has-list:before { + display: none; + } +.tree li > .list-toggle { + position: absolute; + top: -1px; + left: 0; + z-index: 10; + width: 20px; + line-height: 24px; + color: #808080; + text-align: center; + cursor: pointer; + } +.tree li > .list-toggle:before { + content: '\f196'; + } +.tree li > .list-toggle:hover, +.tree li > .list-toggle:active { + color: #0d3d88; + } +.tree li.open > ul { + display: block; + } +.tree li.open > .list-toggle:before { + content: '\e71d'; + } +.tree-actions { + display: inline-block; + margin-left: 5px; + opacity: 0; + -webkit-transition: opacity .1s; + -o-transition: opacity .1s; + transition: opacity .1s; + } +.tree-action { + display: inline-block; + margin-left: 5px; + color: #808080; + } +.tree-action:hover, +.tree-action:active { + text-decoration: none; + } +.tree li:hover > .tree-actions, +.tree-item-wrapper:hover > .tree-actions { + opacity: 1; + } +.tree-drag-holder { + background-color: #ebf2f9; + opacity: .4; + } +.tree .sort-handler { + cursor: move; + } +.tree-animate ul { + opacity: 0; + -webkit-transition: opacity .2s cubic-bezier(.175, .885, .32, 1), -webkit-transform .2s cubic-bezier(.175, .885, .32, 1); + -o-transition: opacity .2s cubic-bezier(.175, .885, .32, 1), -o-transform .2s cubic-bezier(.175, .885, .32, 1); + transition: opacity .2s cubic-bezier(.175, .885, .32, 1), -webkit-transform .2s cubic-bezier(.175, .885, .32, 1); + transition: opacity .2s cubic-bezier(.175, .885, .32, 1), transform .2s cubic-bezier(.175, .885, .32, 1); + transition: opacity .2s cubic-bezier(.175, .885, .32, 1), transform .2s cubic-bezier(.175, .885, .32, 1), -webkit-transform .2s cubic-bezier(.175, .885, .32, 1), -o-transform .2s cubic-bezier(.175, .885, .32, 1); + -webkit-transform: scale(1, .5); + -ms-transform: scale(1, .5); + -o-transform: scale(1, .5); + transform: scale(1, .5); + } +.tree-animate li.open.in > ul { + opacity: 1; + -webkit-transform: scale(1, 1); + -ms-transform: scale(1, 1); + -o-transform: scale(1, 1); + transform: scale(1, 1); + } +.tree-animate.tree-lines li.has-list.open > ul:after { + top: -5px; + bottom: 12px; + left: -11px; + } +.tree-lines ul > li:after { + position: absolute; + top: 11px; + left: -10px; + z-index: 1; + display: block; + width: 22px; + content: ' '; + border-top: 1px dotted #999; + } +.tree-lines ul > li:before, +.tree-lines ul > li.has-list:before { + position: absolute; + top: -12px; + bottom: 12px; + left: -11px; + display: block; + width: auto; + height: auto; + content: ' '; + background: none; + border: none; + border-left: 1px dotted #999; + } +.tree-lines ul > li:last-child:before { + bottom: auto; + height: 23px; + } +.tree-lines ul > li:first-child:before { + top: -5px; + } +.tree-lines ul > li.tree-single-item:before { + height: 19px; + } +.tree-lines ul > li.has-list:after { + width: 14px; + } +.tree-lines ul > li.drag-shadow:after { + display: none; + } +.tree-folders li > .list-toggle:before { + content: '\e6ef'; + } +.tree-folders li.open > .list-toggle:before { + content: '\e6f0'; + } +.tree-folders.tree-lines ul > li:first-child:before { + top: -6px; + } +.tree-folders.tree-lines li.has-list.open > ul:after { + top: 16px; + } +.tree-folders ul > li.has-list:after { + width: 13px; + } +.tree-folders ul > li.has-list.open:after { + width: 15px; + } +.tree-chevrons li > .list-toggle:before { + content: '\e710'; + } +.tree-chevrons li.open > .list-toggle:before { + content: '\e712'; + } +.tree-chevrons li:before { + top: 6px; + left: 4px; + width: 10px; + height: 10px; + background-color: #ddd; + border-radius: 5px; + } +.tree-chevrons ul > li:after { + width: 13px; + } +.tree-angles li > .list-toggle:before { + content: '\e6e1'; + } +.tree-angles li.open > .list-toggle:before { + content: '\e6e3'; + } +.tree-angles ul > li.has-list:after { + width: 15px; + } +.tree-menu { + overflow: hidden; + border: 1px solid #ddd; + border-radius: 4px; + } +.tree-menu li { + padding: 0; + } +.tree-menu li:before { + display: none; + } +.tree-menu li > a { + display: block; + padding: 8px; + margin-bottom: -1px; + color: #353535; + } +.tree-menu li > a > .icon { + display: inline-block; + width: 20px; + color: inherit; + text-align: left; + opacity: .6; + } +.tree-menu li > a:hover, +.tree-menu li > a:active, +.tree-menu li > a:focus { + color: #0d3d88; + text-decoration: none; + background-color: rgba(0, 0, 0, .04); + } +.tree-menu li > a:hover > .icon, +.tree-menu li > a:active > .icon, +.tree-menu li > a:focus > .icon { + opacity: .9; + } +.tree-menu li .list-toggle { + top: 6px; + right: 4px; + left: auto; + width: 24px; + height: 24px; + filter: alpha(opacity=45); + opacity: .45; + -webkit-transition: all .3s; + -o-transition: all .3s; + transition: all .3s; + } +.tree-menu li .list-toggle:before { + content: '\e64f'; + } +.tree-menu li.open > .list-toggle { + filter: alpha(opacity=75); + opacity: .75; + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); + } +.tree-menu li.open > .list-toggle:before { + content: '\e64f'; + } +.tree-menu li > ul { + background-color: rgba(0, 0, 0, .04); + } +.tree-menu li li a { + padding-left: 28px; + border-top-color: transparent; + border-bottom-color: transparent; + } +.tree-menu li li li a { + padding-left: 48px; + } +.tree-menu li li li li a { + padding-left: 68px; + } +.tree-menu li.active > a { + color: #fff; + background-color: #3280fc; + border-color: #3280fc; + } +.tree-menu li.active > .list-toggle { + color: #fff; + } +.tree-menu > li > a { + border: 1px solid transparent; + border-bottom-color: #ddd; + } +.tree-menu > li.open + li > a { + border-top-color: #ddd; + } diff --git a/root/res/zui/css/zui.lite.css b/root/res/zui/css/zui.lite.css new file mode 100644 index 0000000..3129224 --- /dev/null +++ b/root/res/zui/css/zui.lite.css @@ -0,0 +1,6763 @@ +/*! + * ZUI: Lite edition - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +/*! Some code copy from Bootstrap v3.0.0 by @fat and @mdo. (Copyright 2013 Twitter, Inc. Licensed under http://www.apache.org/licenses/)*/ + +/*! normalize.css v2.1.3 | MIT License | git.io/normalize */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section, +summary { + display: block; + } +audio, +canvas, +video { + display: inline-block; + } +audio:not([controls]) { + display: none; + height: 0; + } +[hidden], +template { + display: none; + } +html { + font-family: sans-serif; + + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; + } +body { + margin: 0; + } +a { + background: transparent; + } +a:focus { + outline: thin dotted; + } +a:active, +a:hover { + outline: 0; + } +h1 { + margin: .67em 0; + font-size: 2em; + } +abbr[title] { + border-bottom: 1px dotted; + } +b, +strong { + font-weight: bold; + } +dfn { + font-style: italic; + } +hr { + height: 0; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + } +mark { + color: #000; + background: #ff0; + } +code, +kbd, +pre, +samp { + font-family: monospace, serif; + font-size: 1em; + } +pre { + white-space: pre-wrap; + } +q { + quotes: "\201C" "\201D" "\2018" "\2019"; + } +small { + font-size: 80%; + } +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; + } +sup { + top: -.5em; + } +sub { + bottom: -.25em; + } +img { + border: 0; + } +svg:not(:root) { + overflow: hidden; + } +figure { + margin: 0; + } +fieldset { + padding: .35em .625em .75em; + margin: 0 2px; + border: 1px solid #c0c0c0; + } +legend { + padding: 0; + border: 0; + } +button, +input, +select, +textarea { + margin: 0; + font-family: inherit; + font-size: 100%; + } +button, +input { + line-height: normal; + } +button, +select { + text-transform: none; + } +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; + } +button[disabled], +html input[disabled] { + cursor: default; + } +input[type="checkbox"], +input[type="radio"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; + } +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; + } +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; + } +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; + } +textarea { + overflow: auto; + vertical-align: top; + } +table { + border-spacing: 0; + border-collapse: collapse; + } +.clearfix:before, +.clearfix:after, +.container:before, +.container:after, +.container-fluid:before, +.container-fluid:after, +.container-fixed:before, +.container-fixed:after, +.container-fixed-md:before, +.container-fixed-md:after, +.container-fixed-sm:before, +.container-fixed-sm:after, +.container-fixed-xs:before, +.container-fixed-xs:after, +.row:before, +.row:after, +.dl-horizontal dd:before, +.dl-horizontal dd:after, +.form-horizontal .form-group:before, +.form-horizontal .form-group:after, +.panel-body:before, +.panel-body:after, +.pager-justify:before, +.pager-justify:after, +.nav:before, +.nav:after, +.navbar:before, +.navbar:after, +.navbar-header:before, +.navbar-header:after, +.navbar-collapse:before, +.navbar-collapse:after, +.modal-header:before, +.modal-header:after, +.modal-footer:before, +.modal-footer:after { + /* 1 */ + display: table; + content: " "; + /* 2 */ + } +.clearfix:after, +.container:after, +.container-fluid:after, +.container-fixed:after, +.container-fixed-md:after, +.container-fixed-sm:after, +.container-fixed-xs:after, +.row:after, +.dl-horizontal dd:after, +.form-horizontal .form-group:after, +.panel-body:after, +.pager-justify:after, +.nav:after, +.navbar:after, +.navbar-header:after, +.navbar-collapse:after, +.modal-header:after, +.modal-footer:after { + clear: both; + } +.center-block { + display: block; + margin-right: auto; + margin-left: auto; + } +.pull-right { + float: right !important; + } +.pull-left { + float: left !important; + } +.hide { + display: none; + } +.showing { + display: block; + } +.hidden { + display: none!important; + visibility: hidden !important; + } +.show { + display: block!important; + visibility: visible !important; + } +.invisible { + visibility: hidden; + } +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; + } +.affix { + position: fixed; + } +.with-padding { + padding: 5px 12px; + } +.no-padding { + padding: 0!important; + } +.visible-xs, +.inline.visible-xs, +.inline-block.visible-xs, +tr.visible-xs, +th.visible-xs, +td.visible-xs { + display: none !important; + } +@media (max-width: 767px) { + .visible-xs { + display: block !important; + } + .inline.visible-xs { + display: inline !important; + } + .inline-block.visible-xs { + display: inline-block !important; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } + } +@media (min-width: 768px) and (max-width: 991px) { + .visible-xs.visible-sm { + display: block !important; + } + .inline.visible-xs.visible-sm { + display: inline !important; + } + .inline-block.visible-xs.visible-sm { + display: inline-block !important; + } + tr.visible-xs.visible-sm { + display: table-row !important; + } + th.visible-xs.visible-sm, + td.visible-xs.visible-sm { + display: table-cell !important; + } + } +@media (min-width: 992px) and (max-width: 1199px) { + .visible-xs.visible-md { + display: block !important; + } + .inline.visible-xs.visible-md { + display: inline !important; + } + .inline-block.visible-xs.visible-md { + display: inline-block !important; + } + tr.visible-xs.visible-md { + display: table-row !important; + } + th.visible-xs.visible-md, + td.visible-xs.visible-md { + display: table-cell !important; + } + } +@media (min-width: 1200px) { + .visible-xs.visible-lg { + display: block !important; + } + .inline.visible-xs.visible-lg { + display: inline !important; + } + .inline-block.visible-xs.visible-lg { + display: inline-block !important; + } + tr.visible-xs.visible-lg { + display: table-row !important; + } + th.visible-xs.visible-lg, + td.visible-xs.visible-lg { + display: table-cell !important; + } + } +.visible-sm, +.inline.visible-sm, +.inline-block.visible-sm, +tr.visible-sm, +th.visible-sm, +td.visible-sm { + display: none !important; + } +@media (max-width: 767px) { + .visible-sm.visible-xs { + display: block !important; + } + .inline.visible-sm.visible-xs { + display: inline !important; + } + .inline-block.visible-sm.visible-xs { + display: inline-block !important; + } + tr.visible-sm.visible-xs { + display: table-row !important; + } + th.visible-sm.visible-xs, + td.visible-sm.visible-xs { + display: table-cell !important; + } + } +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; + } + .inline.visible-sm { + display: inline !important; + } + .inline-block.visible-sm { + display: inline-block !important; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.visible-sm { + display: table-cell !important; + } + } +@media (min-width: 992px) and (max-width: 1199px) { + .visible-sm.visible-md { + display: block !important; + } + .inline.visible-sm.visible-md { + display: inline !important; + } + .inline-block.visible-sm.visible-md { + display: inline-block !important; + } + tr.visible-sm.visible-md { + display: table-row !important; + } + th.visible-sm.visible-md, + td.visible-sm.visible-md { + display: table-cell !important; + } + } +@media (min-width: 1200px) { + .visible-sm.visible-lg { + display: block !important; + } + .inline.visible-sm.visible-lg { + display: inline !important; + } + .inline-block.visible-sm.visible-lg { + display: inline-block !important; + } + tr.visible-sm.visible-lg { + display: table-row !important; + } + th.visible-sm.visible-lg, + td.visible-sm.visible-lg { + display: table-cell !important; + } + } +.visible-md, +.inline.visible-md, +.inline-block.visible-md, +tr.visible-md, +th.visible-md, +td.visible-md { + display: none !important; + } +@media (max-width: 767px) { + .visible-md.visible-xs { + display: block !important; + } + .inline.visible-md.visible-xs { + display: inline !important; + } + .inline-block.visible-md.visible-xs { + display: inline-block !important; + } + tr.visible-md.visible-xs { + display: table-row !important; + } + th.visible-md.visible-xs, + td.visible-md.visible-xs { + display: table-cell !important; + } + } +@media (min-width: 768px) and (max-width: 991px) { + .visible-md.visible-sm { + display: block !important; + } + .inline.visible-md.visible-sm { + display: inline !important; + } + .inline-block.visible-md.visible-sm { + display: inline-block !important; + } + tr.visible-md.visible-sm { + display: table-row !important; + } + th.visible-md.visible-sm, + td.visible-md.visible-sm { + display: table-cell !important; + } + } +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; + } + .inline.visible-md { + display: inline !important; + } + .inline-block.visible-md { + display: inline-block !important; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.visible-md { + display: table-cell !important; + } + } +@media (min-width: 1200px) { + .visible-md.visible-lg { + display: block !important; + } + .inline.visible-md.visible-lg { + display: inline !important; + } + .inline-block.visible-md.visible-lg { + display: inline-block !important; + } + tr.visible-md.visible-lg { + display: table-row !important; + } + th.visible-md.visible-lg, + td.visible-md.visible-lg { + display: table-cell !important; + } + } +.visible-lg, +.inline.visible-lg, +.inline-block.visible-lg, +tr.visible-lg, +th.visible-lg, +td.visible-lg { + display: none !important; + } +@media (max-width: 767px) { + .visible-lg.visible-xs { + display: block !important; + } + .inline.visible-lg.visible-xs { + display: inline !important; + } + .inline-block.visible-lg.visible-xs { + display: inline-block !important; + } + tr.visible-lg.visible-xs { + display: table-row !important; + } + th.visible-lg.visible-xs, + td.visible-lg.visible-xs { + display: table-cell !important; + } + } +@media (min-width: 768px) and (max-width: 991px) { + .visible-lg.visible-sm { + display: block !important; + } + .inline.visible-lg.visible-sm { + display: inline !important; + } + .inline-block.visible-lg.visible-sm { + display: inline-block !important; + } + tr.visible-lg.visible-sm { + display: table-row !important; + } + th.visible-lg.visible-sm, + td.visible-lg.visible-sm { + display: table-cell !important; + } + } +@media (min-width: 992px) and (max-width: 1199px) { + .visible-lg.visible-md { + display: block !important; + } + .inline.visible-lg.visible-md { + display: inline !important; + } + .inline-block.visible-lg.visible-md { + display: inline-block !important; + } + tr.visible-lg.visible-md { + display: table-row !important; + } + th.visible-lg.visible-md, + td.visible-lg.visible-md { + display: table-cell !important; + } + } +@media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + .inline.visible-lg { + display: inline !important; + } + .inline-block.visible-lg { + display: inline-block !important; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !important; + } + } +.hidden-xs { + display: block !important; + } +.inline.hidden-xs { + display: inline !important; + } +.inline-block.hidden-xs { + display: inline-block !important; + } +tr.hidden-xs { + display: table-row !important; + } +th.hidden-xs, +td.hidden-xs { + display: table-cell !important; + } +@media (max-width: 767px) { + .hidden-xs, + .inline.hidden-xs, + .inline-block.hidden-xs, + tr.hidden-xs, + th.hidden-xs, + td.hidden-xs { + display: none !important; + } + } +@media (min-width: 768px) and (max-width: 991px) { + .hidden-xs.hidden-sm, + .inline.hidden-xs.hidden-sm, + .inline-block.hidden-xs.hidden-sm, + tr.hidden-xs.hidden-sm, + th.hidden-xs.hidden-sm, + td.hidden-xs.hidden-sm { + display: none !important; + } + } +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-xs.hidden-md, + .inline.hidden-xs.hidden-md, + .inline-block.hidden-xs.hidden-md, + tr.hidden-xs.hidden-md, + th.hidden-xs.hidden-md, + td.hidden-xs.hidden-md { + display: none !important; + } + } +@media (min-width: 1200px) { + .hidden-xs.hidden-lg, + .inline.hidden-xs.hidden-lg, + .inline-block.hidden-xs.hidden-lg, + tr.hidden-xs.hidden-lg, + th.hidden-xs.hidden-lg, + td.hidden-xs.hidden-lg { + display: none !important; + } + } +.hidden-sm { + display: block !important; + } +.inline.hidden-sm { + display: inline !important; + } +.inline-block.hidden-sm { + display: inline-block !important; + } +tr.hidden-sm { + display: table-row !important; + } +th.hidden-sm, +td.hidden-sm { + display: table-cell !important; + } +@media (max-width: 767px) { + .hidden-sm.hidden-xs, + .inline.hidden-sm.hidden-xs, + .inline-block.hidden-sm.hidden-xs, + tr.hidden-sm.hidden-xs, + th.hidden-sm.hidden-xs, + td.hidden-sm.hidden-xs { + display: none !important; + } + } +@media (min-width: 768px) and (max-width: 991px) { + .hidden-sm, + .inline.hidden-sm, + .inline-block.hidden-sm, + tr.hidden-sm, + th.hidden-sm, + td.hidden-sm { + display: none !important; + } + } +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-sm.hidden-md, + .inline.hidden-sm.hidden-md, + .inline-block.hidden-sm.hidden-md, + tr.hidden-sm.hidden-md, + th.hidden-sm.hidden-md, + td.hidden-sm.hidden-md { + display: none !important; + } + } +@media (min-width: 1200px) { + .hidden-sm.hidden-lg, + .inline.hidden-sm.hidden-lg, + .inline-block.hidden-sm.hidden-lg, + tr.hidden-sm.hidden-lg, + th.hidden-sm.hidden-lg, + td.hidden-sm.hidden-lg { + display: none !important; + } + } +.hidden-md { + display: block !important; + } +.inline.hidden-md { + display: inline !important; + } +.inline-block.hidden-md { + display: inline-block !important; + } +tr.hidden-md { + display: table-row !important; + } +th.hidden-md, +td.hidden-md { + display: table-cell !important; + } +@media (max-width: 767px) { + .hidden-md.hidden-xs, + .inline.hidden-md.hidden-xs, + .inline-block.hidden-md.hidden-xs, + tr.hidden-md.hidden-xs, + th.hidden-md.hidden-xs, + td.hidden-md.hidden-xs { + display: none !important; + } + } +@media (min-width: 768px) and (max-width: 991px) { + .hidden-md.hidden-sm, + .inline.hidden-md.hidden-sm, + .inline-block.hidden-md.hidden-sm, + tr.hidden-md.hidden-sm, + th.hidden-md.hidden-sm, + td.hidden-md.hidden-sm { + display: none !important; + } + } +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-md, + .inline.hidden-md, + .inline-block.hidden-md, + tr.hidden-md, + th.hidden-md, + td.hidden-md { + display: none !important; + } + } +@media (min-width: 1200px) { + .hidden-md.hidden-lg, + .inline.hidden-md.hidden-lg, + .inline-block.hidden-md.hidden-lg, + tr.hidden-md.hidden-lg, + th.hidden-md.hidden-lg, + td.hidden-md.hidden-lg { + display: none !important; + } + } +.hidden-lg { + display: block !important; + } +.inline.hidden-lg { + display: inline !important; + } +.inline-block.hidden-lg { + display: inline-block !important; + } +tr.hidden-lg { + display: table-row !important; + } +th.hidden-lg, +td.hidden-lg { + display: table-cell !important; + } +@media (max-width: 767px) { + .hidden-lg.hidden-xs, + .inline.hidden-lg.hidden-xs, + .inline-block.hidden-lg.hidden-xs, + tr.hidden-lg.hidden-xs, + th.hidden-lg.hidden-xs, + td.hidden-lg.hidden-xs { + display: none !important; + } + } +@media (min-width: 768px) and (max-width: 991px) { + .hidden-lg.hidden-sm, + .inline.hidden-lg.hidden-sm, + .inline-block.hidden-lg.hidden-sm, + tr.hidden-lg.hidden-sm, + th.hidden-lg.hidden-sm, + td.hidden-lg.hidden-sm { + display: none !important; + } + } +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-lg.hidden-md, + .inline.hidden-lg.hidden-md, + .inline-block.hidden-lg.hidden-md, + tr.hidden-lg.hidden-md, + th.hidden-lg.hidden-md, + td.hidden-lg.hidden-md { + display: none !important; + } + } +@media (min-width: 1200px) { + .hidden-lg, + .inline.hidden-lg, + .inline-block.hidden-lg, + tr.hidden-lg, + th.hidden-lg, + td.hidden-lg { + display: none !important; + } + } +.visible-print, +.inline.visible-print, +.inline-block.visible-print, +tr.visible-print, +th.visible-print, +td.visible-print { + display: none !important; + } +@media print { + .visible-print { + display: block !important; + } + .inline.visible-print { + display: inline !important; + } + .inline-block.visible-print { + display: inline-block !important; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } + .hidden-print, + .inline.hidden-print, + .inline-block.hidden-print, + tr.hidden-print, + th.hidden-print, + td.hidden-print { + display: none !important; + } + } +*, +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } +html { + font-size: 10px; + + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + } +body { + font-family: "Helvetica Neue", Helvetica, Tahoma, Arial, 'Microsoft Yahei', 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; + font-size: 13px; + line-height: 1.53846154; + color: #353535; + background-color: #fff; + } +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; + } +a { + color: #145ccd; + text-decoration: none; + -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: all .4s cubic-bezier(.175, .885, .32, 1); + transition: all .4s cubic-bezier(.175, .885, .32, 1); + } +a:hover, +a:focus { + color: #0d3d88; + text-decoration: underline; + } +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; + } +a.disabled, +a.disabled:hover, +a.disabled:focus, +a[disabled], +a[disabled]:hover, +a[disabled]:focus { + color: #aaa; + text-decoration: none; + cursor: default; + } +audio, +canvas, +img, +video { + max-width: 100%; + vertical-align: middle; + } +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0 0 0 0); + border: 0; + } +::-moz-selection { + text-shadow: none; + background: #b3d4fc; + } +::selection { + text-shadow: none; + background: #b3d4fc; + } +fieldset { + padding: 0; + margin: 0; + border: 0; + } +textarea { + resize: vertical; + } +ol, +ul { + padding-left: 20px; + } +.container, +.container-fluid, +.container-fixed, +.container-fixed-md, +.container-fixed-sm, +.container-fixed-xs { + padding-right: 10px; + padding-left: 10px; + margin-right: auto; + margin-left: auto; + } +@media (min-width: 768px) { + .container { + max-width: 740px; + } + } +@media (min-width: 992px) { + .container { + max-width: 960px; + } + } +@media (min-width: 1200px) { + .container { + max-width: 1160px; + } + } +.container-fixed { + width: 1160px; + } +.container-fixed-md { + width: 960px; + } +.container-fixed-sm { + width: 740px; + } +.container-fixed-xs { + width: 440px; + } +.row { + margin-right: -10px; + margin-left: -10px; + } +.col, +.col-xs-1, +.col-xs-2, +.col-xs-3, +.col-xs-4, +.col-xs-5, +.col-xs-6, +.col-xs-7, +.col-xs-8, +.col-xs-9, +.col-xs-10, +.col-xs-11, +.col-xs-12, +.col-sm-1, +.col-sm-2, +.col-sm-3, +.col-sm-4, +.col-sm-5, +.col-sm-6, +.col-sm-7, +.col-sm-8, +.col-sm-9, +.col-sm-10, +.col-sm-11, +.col-sm-12, +.col-md-1, +.col-md-2, +.col-md-3, +.col-md-4, +.col-md-5, +.col-md-6, +.col-md-7, +.col-md-8, +.col-md-9, +.col-md-10, +.col-md-11, +.col-md-12, +.col-lg-1, +.col-lg-2, +.col-lg-3, +.col-lg-4, +.col-lg-5, +.col-lg-6, +.col-lg-7, +.col-lg-8, +.col-lg-9, +.col-lg-10, +.col-lg-11, +.col-lg-12 { + position: relative; + min-height: 1px; + padding-right: 10px; + padding-left: 10px; + } +.col, +.col-xs, +.col-xs-1, +.col-xs-2, +.col-xs-3, +.col-xs-4, +.col-xs-5, +.col-xs-6, +.col-xs-7, +.col-xs-8, +.col-xs-9, +.col-xs-10, +.col-xs-11, +.col-xs-12 { + float: left; + } +.col-xs-1 { + width: 8.33333333%; + } +.col-xs-2 { + width: 16.66666667%; + } +.col-xs-3 { + width: 25%; + } +.col-xs-4 { + width: 33.33333333%; + } +.col-xs-5 { + width: 41.66666667%; + } +.col-xs-6 { + width: 50%; + } +.col-xs-7 { + width: 58.33333333%; + } +.col-xs-8 { + width: 66.66666667%; + } +.col-xs-9 { + width: 75%; + } +.col-xs-10 { + width: 83.33333333%; + } +.col-xs-11 { + width: 91.66666667%; + } +.col-xs-12 { + width: 100%; + } +@media (min-width: 768px) { + .col-sm-1, + .col-sm-2, + .col-sm-3, + .col-sm-4, + .col-sm-5, + .col-sm-6, + .col-sm-7, + .col-sm-8, + .col-sm-9, + .col-sm-10, + .col-sm-11, + .col-sm-12 { + float: left; + } + .col-sm-1 { + width: 8.33333333%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-12 { + width: 100%; + } + .col-sm-push-1 { + left: 8.33333333%; + } + .col-sm-push-2 { + left: 16.66666667%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-4 { + left: 33.33333333%; + } + .col-sm-push-5 { + left: 41.66666667%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-7 { + left: 58.33333333%; + } + .col-sm-push-8 { + left: 66.66666667%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-10 { + left: 83.33333333%; + } + .col-sm-push-11 { + left: 91.66666667%; + } + .col-sm-pull-1 { + right: 8.33333333%; + } + .col-sm-pull-2 { + right: 16.66666667%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-4 { + right: 33.33333333%; + } + .col-sm-pull-5 { + right: 41.66666667%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-7 { + right: 58.33333333%; + } + .col-sm-pull-8 { + right: 66.66666667%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-10 { + right: 83.33333333%; + } + .col-sm-pull-11 { + right: 91.66666667%; + } + .col-sm-offset-1 { + margin-left: 8.33333333%; + } + .col-sm-offset-2 { + margin-left: 16.66666667%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-4 { + margin-left: 33.33333333%; + } + .col-sm-offset-5 { + margin-left: 41.66666667%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-7 { + margin-left: 58.33333333%; + } + .col-sm-offset-8 { + margin-left: 66.66666667%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-10 { + margin-left: 83.33333333%; + } + .col-sm-offset-11 { + margin-left: 91.66666667%; + } + } +@media (min-width: 992px) { + .col-md-1, + .col-md-2, + .col-md-3, + .col-md-4, + .col-md-5, + .col-md-6, + .col-md-7, + .col-md-8, + .col-md-9, + .col-md-10, + .col-md-11, + .col-md-12 { + float: left; + } + .col-md-1 { + width: 8.33333333%; + } + .col-md-2 { + width: 16.66666667%; + } + .col-md-3 { + width: 25%; + } + .col-md-4 { + width: 33.33333333%; + } + .col-md-5 { + width: 41.66666667%; + } + .col-md-6 { + width: 50%; + } + .col-md-7 { + width: 58.33333333%; + } + .col-md-8 { + width: 66.66666667%; + } + .col-md-9 { + width: 75%; + } + .col-md-10 { + width: 83.33333333%; + } + .col-md-11 { + width: 91.66666667%; + } + .col-md-12 { + width: 100%; + } + .col-md-push-0 { + left: auto; + } + .col-md-push-1 { + left: 8.33333333%; + } + .col-md-push-2 { + left: 16.66666667%; + } + .col-md-push-3 { + left: 25%; + } + .col-md-push-4 { + left: 33.33333333%; + } + .col-md-push-5 { + left: 41.66666667%; + } + .col-md-push-6 { + left: 50%; + } + .col-md-push-7 { + left: 58.33333333%; + } + .col-md-push-8 { + left: 66.66666667%; + } + .col-md-push-9 { + left: 75%; + } + .col-md-push-10 { + left: 83.33333333%; + } + .col-md-push-11 { + left: 91.66666667%; + } + .col-md-pull-0 { + right: auto; + } + .col-md-pull-1 { + right: 8.33333333%; + } + .col-md-pull-2 { + right: 16.66666667%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-4 { + right: 33.33333333%; + } + .col-md-pull-5 { + right: 41.66666667%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-7 { + right: 58.33333333%; + } + .col-md-pull-8 { + right: 66.66666667%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-10 { + right: 83.33333333%; + } + .col-md-pull-11 { + right: 91.66666667%; + } + .col-md-offset-0 { + margin-left: 0; + } + .col-md-offset-1 { + margin-left: 8.33333333%; + } + .col-md-offset-2 { + margin-left: 16.66666667%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-4 { + margin-left: 33.33333333%; + } + .col-md-offset-5 { + margin-left: 41.66666667%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-7 { + margin-left: 58.33333333%; + } + .col-md-offset-8 { + margin-left: 66.66666667%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-10 { + margin-left: 83.33333333%; + } + .col-md-offset-11 { + margin-left: 91.66666667%; + } + } +@media (min-width: 1200px) { + .col-lg-1, + .col-lg-2, + .col-lg-3, + .col-lg-4, + .col-lg-5, + .col-lg-6, + .col-lg-7, + .col-lg-8, + .col-lg-9, + .col-lg-10, + .col-lg-11, + .col-lg-12 { + float: left; + } + .col-lg-1 { + width: 8.33333333%; + } + .col-lg-2 { + width: 16.66666667%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-4 { + width: 33.33333333%; + } + .col-lg-5 { + width: 41.66666667%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-7 { + width: 58.33333333%; + } + .col-lg-8 { + width: 66.66666667%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-10 { + width: 83.33333333%; + } + .col-lg-11 { + width: 91.66666667%; + } + .col-lg-12 { + width: 100%; + } + .col-lg-push-0 { + left: auto; + } + .col-lg-push-1 { + left: 8.33333333%; + } + .col-lg-push-2 { + left: 16.66666667%; + } + .col-lg-push-3 { + left: 25%; + } + .col-lg-push-4 { + left: 33.33333333%; + } + .col-lg-push-5 { + left: 41.66666667%; + } + .col-lg-push-6 { + left: 50%; + } + .col-lg-push-7 { + left: 58.33333333%; + } + .col-lg-push-8 { + left: 66.66666667%; + } + .col-lg-push-9 { + left: 75%; + } + .col-lg-push-10 { + left: 83.33333333%; + } + .col-lg-push-11 { + left: 91.66666667%; + } + .col-lg-pull-0 { + right: auto; + } + .col-lg-pull-1 { + right: 8.33333333%; + } + .col-lg-pull-2 { + right: 16.66666667%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-4 { + right: 33.33333333%; + } + .col-lg-pull-5 { + right: 41.66666667%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-7 { + right: 58.33333333%; + } + .col-lg-pull-8 { + right: 66.66666667%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-10 { + right: 83.33333333%; + } + .col-lg-pull-11 { + right: 91.66666667%; + } + .col-lg-offset-0 { + margin-left: 0; + } + .col-lg-offset-1 { + margin-left: 8.33333333%; + } + .col-lg-offset-2 { + margin-left: 16.66666667%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-4 { + margin-left: 33.33333333%; + } + .col-lg-offset-5 { + margin-left: 41.66666667%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-7 { + margin-left: 58.33333333%; + } + .col-lg-offset-8 { + margin-left: 66.66666667%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-10 { + margin-left: 83.33333333%; + } + .col-lg-offset-11 { + margin-left: 91.66666667%; + } + } +p { + margin: 0 0 10px; + } +.lead { + margin-bottom: 20px; + font-size: 14px; + line-height: 1.4; + } +@media (min-width: 768px) { + .lead { + font-size: 19.5px; + } + } +small, +.small { + font-size: 85%; + } +cite { + font-style: normal; + } +.text-gray, +.text-muted { + color: #808080; + } +.text-gray a, +.text-muted a { + color: #737373; + } +.text-gray a:hover, +.text-muted a:hover, +.text-gray a:active, +.text-muted a:active { + color: #145ccd; + } +.text-primary { + color: #3280fc; + } +.text-yellow, +.text-warning { + color: #f1a325; + } +.text-red, +.text-danger { + color: #ea644a; + } +.text-green, +.text-success { + color: #38b03f; + } +.text-blue, +.text-info { + color: #03b8cf; + } +.text-brown, +.text-important { + color: #bd7b46; + } +.text-purple, +.text-special { + color: #8666b8; + } +.text-link { + color: #353535; + } +.text-link:hover, +.text-link:active { + color: #145ccd; + } +.text-left { + text-align: left; + } +.text-right { + text-align: right; + } +.text-center { + text-align: center; + } +.text-nowrap, +.nobr { + overflow: hidden; + white-space: nowrap; + } +.text-ellipsis { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } +ul, +ol { + margin-top: 0; + margin-bottom: 10px; + } +ul ul, +ol ul, +ul ol, +ol ol { + margin-bottom: 0; + } +.list-unstyled { + padding-left: 0; + list-style: none; + } +dl { + margin-bottom: 20px; + } +dt, +dd { + line-height: 1.53846154; + } +dt { + font-weight: bold; + } +dd { + margin-left: 0; + } +.dl-inline:before, +.dl-inline:after { + /* 1 */ + display: table; + content: " "; + /* 2 */ + } +.dl-inline:after { + clear: both; + } +.dl-inline:before, +.dl-inline:after { + /* 1 */ + display: table; + content: " "; + /* 2 */ + } +.dl-inline:after { + clear: both; + } +.dl-inline dt { + display: inline-block; + } +.dl-inline dd { + display: inline-block; + padding-right: 1em; + } +.dl-inline dd:last-child { + padding-right: 0; + } +@media (min-width: 768px) { + .dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; + } + .dl-horizontal dd { + margin-left: 180px; + } + } +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 16.25px; + border-left: 5px solid #e5e5e5; + } +blockquote p, +blockquote ul, +blockquote ol { + font-weight: 300; + } +blockquote p:last-child, +blockquote ul:last-child, +blockquote ol:last-child { + margin-bottom: 0; + } +blockquote small { + display: block; + line-height: 1.53846154; + color: #808080; + } +blockquote small:before { + content: '\2014 \00A0'; + } +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #e5e5e5; + border-left: 0; + } +blockquote.pull-right p, +blockquote.pull-right small { + text-align: right; + } +blockquote.pull-right small:before { + content: ''; + } +blockquote.pull-right small:after { + content: '\00A0 \2014'; + } +.ol-pd-2 { + padding-left: 40px; + } +.ol-pd-3 { + padding-left: 60px; + } +.ol-pd-4 { + padding-left: 80px; + } +.page-header, +.header-dividing { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #e5e5e5; + } +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: "Helvetica Neue", Helvetica, Tahoma, Arial, 'Microsoft Yahei', 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; + font-weight: bold; + line-height: 1.1; + color: inherit; + } +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { + font-weight: normal; + line-height: 1; + color: #808080; + } +h1, +h2, +h3 { + margin-top: 20px; + margin-bottom: 10px; + } +h1 small, +h2 small, +h3 small { + font-size: 65%; + } +h4, +h5, +h6 { + margin-top: 10px; + margin-bottom: 10px; + } +h4 small, +h5 small, +h6 small { + font-size: 75%; + } +h1 { + font-size: 26px; + } +h2 { + font-size: 20px; + } +h3 { + font-size: 16px; + } +h4 { + font-size: 14px; + } +h5 { + font-size: 13px; + } +h6 { + font-size: 12px; + } +.btn { + display: inline-block; + padding: 5px 12px; + margin-bottom: 0; + font-size: 13px; + font-weight: normal; + line-height: 1.53846154; + text-align: center; + white-space: nowrap; + vertical-align: middle; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border: 1px solid transparent; + border-radius: 4px; + -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: all .4s cubic-bezier(.175, .885, .32, 1); + transition: all .4s cubic-bezier(.175, .885, .32, 1); + } +.btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; + } +.btn:hover, +.btn:focus { + color: #353535; + text-decoration: none; + } +.btn:active, +.btn.active { + background-image: none; + outline: none; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + } +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + pointer-events: none; + cursor: not-allowed; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; + opacity: .65; + } +.btn { + color: #353535; + text-shadow: 0 1px 0 #fff; + background-color: #f2f2f2; + border-color: #bfbfbf; + } +.btn:hover, +.btn:focus, +.btn:active, +.btn.active, +.open .dropdown-toggle.btn { + color: #353535; + background-color: #dedede; + border-color: #a1a1a1; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn:active, +.btn.active, +.open .dropdown-toggle.btn { + background-color: #ccc; + background-image: none; + border-color: #a6a6a6; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn, +.btn.disabled:hover, +.btn[disabled]:hover, +fieldset[disabled] .btn:hover, +.btn.disabled:focus, +.btn[disabled]:focus, +fieldset[disabled] .btn:focus, +.btn.disabled:active, +.btn[disabled]:active, +fieldset[disabled] .btn:active, +.btn.disabled.active, +.btn[disabled].active, +fieldset[disabled] .btn.active { + background-color: #f2f2f2; + border-color: #bfbfbf; + } +.btn-primary { + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); + background-color: #3280fc; + border-color: #1970fc; + } +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + color: #fff; + background-color: #0a67fb; + border-color: #0354d4; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + background-color: #0358de; + background-image: none; + border-color: #0358de; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #3280fc; + border-color: #1970fc; + } +.btn-warning { + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); + background-color: #f1a325; + border-color: #ed980f; + } +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + color: #fff; + background-color: #df8f0e; + border-color: #b4730c; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + background-color: #bd7a0c; + background-image: none; + border-color: #bd7a0c; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #f1a325; + border-color: #ed980f; + } +.btn-danger { + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); + background-color: #ea644a; + border-color: #e75033; + } +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + color: #fff; + background-color: #e64525; + border-color: #c63317; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + background-color: #cf3618; + background-image: none; + border-color: #cf3618; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #ea644a; + border-color: #e75033; + } +.btn-success { + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); + background-color: #38b03f; + border-color: #329d38; + } +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + color: #fff; + background-color: #2e9134; + border-color: #236e27; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + background-color: #26762a; + background-image: none; + border-color: #26762a; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #38b03f; + border-color: #329d38; + } +.btn-info { + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); + background-color: #03b8cf; + border-color: #03a2b6; + } +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + color: #fff; + background-color: #0294a7; + border-color: #026c7a; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + background-color: #027584; + background-image: none; + border-color: #027584; + -webkit-box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + box-shadow: inset 0 4px 6px rgba(0, 0, 0, .15); + } +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #03b8cf; + border-color: #03a2b6; + } +.btn-link { + font-weight: normal; + color: #145ccd; + text-shadow: none; + cursor: pointer; + background: none; + -webkit-box-shadow: none; + box-shadow: none; + } +.btn-link, +.btn-link:active, +.btn-link[disabled], +fieldset[disabled] .btn-link, +.btn-link:hover, +.btn-link:focus { + border-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; + } +.btn-link:hover, +.btn-link:focus { + color: #0d3d88; + } +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #ddd; + text-decoration: none; + } +.btn-lg { + padding: 10px 16px; + font-size: 17px; + line-height: 1.25; + border-radius: 4px; + } +.btn-sm, +.btn-xs, +.btn-mini { + padding: 2px 8px; + font-size: 12px; + line-height: 1.5; + border-radius: 4px; + } +.btn-xs, +.btn-mini { + padding: 1px 5px; + } +.btn-block { + display: block; + width: 100%; + } +.btn-block + .btn-block { + margin-top: 5px; + } +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; + } +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #e5e5e5; + } +hr.divider-sm { + margin-top: 10px; + margin-bottom: 10px; + } +hr.divider { + margin: 0; + } +.label { + display: inline; + padding: .2em .6em .2em; + font-size: 75%; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: middle; + background-color: #808080; + border-radius: .25em; + } +.label[href]:hover, +.label[href]:focus { + color: #fff; + background-color: #666; + } +.label.label-circle { + color: #808080; + background: none; + border: 1px solid #808080; + } +a.label:hover, +a.label:focus { + color: #fff; + text-decoration: none; + cursor: pointer; + } +.label:empty { + display: none; + } +.label-badge { + display: inline-block; + min-width: 18px; + padding: 3px 7px; + font-size: 12px; + line-height: 1; + border-radius: 9px; + } +.label-dot { + display: inline-block; + width: 10px; + height: 10px; + padding: 0; + line-height: 13px; + text-indent: -9999em; + border-radius: 5px; + } +.label-dot:empty { + display: inline-block; + } +.label-primary { + background-color: #3280fc; + } +.label-primary[href]:hover, +.label-primary[href]:focus { + color: #fff; + background-color: #0462f7; + } +.label-primary.label-circle { + color: #3280fc; + background: none; + border: 1px solid #3280fc; + } +.label-success { + background-color: #38b03f; + } +.label-success[href]:hover, +.label-success[href]:focus { + color: #fff; + background-color: #2c8931; + } +.label-success.label-circle { + color: #38b03f; + background: none; + border: 1px solid #38b03f; + } +.label-info { + background-color: #03b8cf; + } +.label-info[href]:hover, +.label-info[href]:focus { + color: #fff; + background-color: #028b9d; + } +.label-info.label-circle { + color: #03b8cf; + background: none; + border: 1px solid #03b8cf; + } +.label-warning { + background-color: #f1a325; + } +.label-warning[href]:hover, +.label-warning[href]:focus { + color: #fff; + background-color: #d5890e; + } +.label-warning.label-circle { + color: #f1a325; + background: none; + border: 1px solid #f1a325; + } +.label-danger { + background-color: #ea644a; + } +.label-danger[href]:hover, +.label-danger[href]:focus { + color: #fff; + background-color: #e53d1c; + } +.label-danger.label-circle { + color: #ea644a; + background: none; + border: 1px solid #ea644a; + } +.breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + border-radius: 4px; + } +.breadcrumb > li { + display: inline-block; + } +.breadcrumb > li + li:before { + padding: 0 5px; + color: #ccc; + content: "/\00a0"; + } +.breadcrumb > .active { + color: #808080; + } +@font-face { + font-family: ZenIcon; + font-style: normal; + font-weight: normal; + + src: url('../fonts/zenicon.eot?v=2.2.0'); + src: url('../fonts/zenicon.eot?#iefix&v=2.2.0') format('embedded-opentype'), url('../fonts/zenicon.woff?v=2.2.0') format('woff'), url('../fonts/zenicon.ttf?v=2.2.0') format('truetype'), url('../fonts/zenicon.svg#regular?v=2.2.0') format('svg'); + } +.icon, +[class^="icon-"], +[class*=" icon-"] { + font-family: ZenIcon; + font-size: 14px; + font-style: normal; + font-weight: normal; + font-variant: normal; + line-height: 1; + text-transform: none; + + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } +.icon:before { + display: inline-block; + min-width: 14px; + text-align: center; + } +a .icon, +a [class^="icon-"], +a [class*=" icon-"] { + display: inline; + } +.icon-lg:before { + font-size: 1.33333333em; + vertical-align: -10%; + } +.icon-2x { + font-size: 28px; + } +.icon-3x { + font-size: 42px; + } +.icon-4x { + font-size: 56px; + } +.icon-5x { + font-size: 70px; + } +.icon-spin { + display: inline-block; + -webkit-animation: spin 2s infinite linear; + -o-animation: spin 2s infinite linear; + animation: spin 2s infinite linear; + } +a .icon-spin { + display: inline-block; + text-decoration: none; + } +@-webkit-keyframes spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } + } +@-o-keyframes spin { + 0% { + -o-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -o-transform: rotate(359deg); + transform: rotate(359deg); + } + } +@keyframes spin { + 0% { + -webkit-transform: rotate(0deg); + -o-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + -o-transform: rotate(359deg); + transform: rotate(359deg); + } + } +.icon-rotate-90 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); + } +.icon-rotate-180 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + -o-transform: rotate(180deg); + transform: rotate(180deg); + } +.icon-rotate-270 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + -o-transform: rotate(270deg); + transform: rotate(270deg); + } +.icon-flip-horizontal { + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + -o-transform: scale(-1, 1); + transform: scale(-1, 1); + } +.icon-flip-vertical { + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + -o-transform: scale(1, -1); + transform: scale(1, -1); + } +.icon.icon-rotate-90, +.icon.icon-rotate-180, +.icon.icon-rotate-270, +.icon.icon-flip-horizontal, +.icon.icon-flip-vertical { + display: inline-block; + } +.icon-resize:before { + content: '\e667'; + } +.icon-expand-full:before { + content: '\e6a3'; + } +.icon-arrows-alt:before { + content: '\e6a3'; + } +.icon-fullscreen:before { + content: '\e6a3'; + } +.icon-collapse-full:before { + content: '\e682'; + } +.icon-yinyang:before { + content: '\e687'; + } +.icon-taiji:before { + content: '\e687'; + } +.icon-window:before { + content: '\e68e'; + } +.icon-window-alt:before { + content: '\e68f'; + } +.icon-carousel:before { + content: '\e6b0'; + } +.icon-spinner-snake:before { + content: '\e97b'; + } +.icon-spinner-indicator:before { + content: '\e97c'; + } +.icon-check-board:before { + content: '\e9b8'; + } +.icon-bar-chart:before { + content: '\f080'; + } +.icon-bar-chart-o:before { + content: '\f080'; + } +.icon-github:before { + content: '\f09b'; + } +.icon-dot-circle:before { + content: '\f192'; + } +.icon-dot-circle-o:before { + content: '\f192'; + } +.icon-cube-alt:before { + content: '\f1b2'; + } +.icon-cubes:before { + content: '\f1b3'; + } +.icon-file-pdf:before { + content: '\f1c1'; + } +.icon-file-word:before { + content: '\f1c2'; + } +.icon-file-excel:before { + content: '\f1c3'; + } +.icon-file-powerpoint:before { + content: '\f1c4'; + } +.icon-file-image:before { + content: '\f1c5'; + } +.icon-file-photo:before { + content: '\f1c5'; + } +.icon-file-picture:before { + content: '\f1c5'; + } +.icon-file-archive:before { + content: '\f1c6'; + } +.icon-file-zip:before { + content: '\f1c6'; + } +.icon-file-audio:before { + content: '\f1c7'; + } +.icon-file-sound:before { + content: '\f1c7'; + } +.icon-file-movie:before { + content: '\f1c8'; + } +.icon-file-video:before { + content: '\f1c8'; + } +.icon-file-code:before { + content: '\f1c9'; + } +.icon-circle-o-notch:before { + content: '\f1ce'; + } +.icon-chanzhi:before { + content: '\e906'; + } +.icon-chanzhi-pro:before { + content: '\e905'; + } +.icon-zsite:before { + content: '\e904'; + } +.icon-zsite-pro:before { + content: '\e903'; + } +.icon-qq:before { + content: '\f600'; + } +.icon-wechat:before { + content: '\f1d7'; + } +.icon-weixin:before { + content: '\f1d7'; + } +.icon-history:before { + content: '\f1da'; + } +.icon-circle-thin:before { + content: '\f1db'; + } +.icon-sliders:before { + content: '\f1de'; + } +.icon-newspaper-o:before { + content: '\f1ea'; + } +.icon-calculator:before { + content: '\f1ec'; + } +.icon-paint-brush:before { + content: '\f1fc'; + } +.icon-area-chart:before { + content: '\f1fe'; + } +.icon-pie-chart:before { + content: '\f200'; + } +.icon-line-chart:before { + content: '\f201'; + } +.icon-toggle-off:before { + content: '\f204'; + } +.icon-toggle-on:before { + content: '\f205'; + } +.icon-diamond:before { + content: '\f219'; + } +.icon-venus:before { + content: '\f221'; + } +.icon-mars:before { + content: '\f222'; + } +.icon-server:before { + content: '\f233'; + } +.icon-music:before { + content: '\e602'; + } +.icon-search:before { + content: '\e603'; + } +.icon-envelope:before { + content: '\e604'; + } +.icon-heart:before { + content: '\e605'; + } +.icon-star:before { + content: '\e606'; + } +.icon-star-empty:before { + content: '\e607'; + } +.icon-user:before { + content: '\e608'; + } +.icon-film:before { + content: '\e609'; + } +.icon-th-large:before { + content: '\e60a'; + } +.icon-th:before { + content: '\e60b'; + } +.icon-th-list:before { + content: '\e60c'; + } +.icon-ok:before { + content: '\e60d'; + } +.icon-check:before { + content: '\e60d'; + } +.icon-remove:before { + content: '\d7'; + } +.icon-times:before { + content: '\d7'; + } +.icon-zoom-in:before { + content: '\e60f'; + } +.icon-zoom-out:before { + content: '\e610'; + } +.icon-off:before { + content: '\e611'; + } +.icon-cog:before { + content: '\e613'; + } +.icon-trash:before { + content: '\e614'; + } +.icon-home:before { + content: '\e615'; + } +.icon-file-o:before { + content: '\e616'; + } +.icon-file-alt:before { + content: '\e616'; + } +.icon-time:before { + content: '\e617'; + } +.icon-download-alt:before { + content: '\e618'; + } +.icon-download:before { + content: '\e619'; + } +.icon-upload:before { + content: '\e61a'; + } +.icon-inbox:before { + content: '\e61b'; + } +.icon-play-circle:before { + content: '\e61c'; + } +.icon-repeat:before { + content: '\e61d'; + } +.icon-refresh:before { + content: '\e61e'; + } +.icon-list-alt:before { + content: '\e61f'; + } +.icon-lock:before { + content: '\e620'; + } +.icon-flag:before { + content: '\e621'; + } +.icon-headphones:before { + content: '\e622'; + } +.icon-volume-off:before { + content: '\e623'; + } +.icon-volume-up:before { + content: '\e625'; + } +.icon-qrcode:before { + content: '\e626'; + } +.icon-barcode:before { + content: '\e627'; + } +.icon-tag:before { + content: '\e628'; + } +.icon-tags:before { + content: '\e629'; + } +.icon-book:before { + content: '\e62a'; + } +.icon-bookmark:before { + content: '\e62b'; + } +.icon-print:before { + content: '\e62c'; + } +.icon-camera:before { + content: '\e62d'; + } +.icon-font:before { + content: '\e62e'; + } +.icon-bold:before { + content: '\e62f'; + } +.icon-italic:before { + content: '\f033'; + } +.icon-header:before { + content: '\f1dc'; + } +.icon-underline:before { + content: '\f0cd'; + } +.icon-strikethrough:before { + content: '\f0cc'; + } +.icon-eraser:before { + content: '\f12d'; + } +.icon-align-justify:before { + content: '\e636'; + } +.icon-list:before { + content: '\e637'; + } +.icon-picture:before { + content: '\e63b'; + } +.icon-pencil:before { + content: '\e63c'; + } +.icon-map-marker:before { + content: '\e63d'; + } +.icon-adjust:before { + content: '\e63e'; + } +.icon-tint:before { + content: '\e63f'; + } +.icon-edit:before { + content: '\e640'; + } +.icon-share:before { + content: '\e641'; + } +.icon-checked:before { + content: '\e642'; + } +.icon-move:before { + content: '\e643'; + } +.icon-arrows:before { + content: '\e643'; + } +.icon-step-backward:before { + content: '\e644'; + } +.icon-fast-backward:before { + content: '\e645'; + } +.icon-backward:before { + content: '\e646'; + } +.icon-play:before { + content: '\e647'; + } +.icon-pause:before { + content: '\e648'; + } +.icon-stop:before { + content: '\e649'; + } +.icon-forward:before { + content: '\e64a'; + } +.icon-fast-forward:before { + content: '\e64b'; + } +.icon-step-forward:before { + content: '\e64c'; + } +.icon-eject:before { + content: '\e64d'; + } +.icon-chevron-left:before { + content: '\e64e'; + } +.icon-chevron-right:before { + content: '\e64f'; + } +.icon-plus-sign:before { + content: '\e650'; + } +.icon-minus-sign:before { + content: '\e651'; + } +.icon-remove-sign:before { + content: '\e652'; + } +.icon-ok-sign:before { + content: '\e653'; + } +.icon-check-circle:before { + content: '\e653'; + } +.icon-question-sign:before { + content: '\e654'; + } +.icon-info-sign:before { + content: '\e655'; + } +.icon-remove-circle:before { + content: '\e657'; + } +.icon-ok-circle:before { + content: '\e658'; + } +.icon-check-circle-o:before { + content: '\e658'; + } +.icon-ban-circle:before { + content: '\e659'; + } +.icon-arrow-left:before { + content: '\e65a'; + } +.icon-arrow-right:before { + content: '\e65b'; + } +.icon-arrow-up:before { + content: '\e65c'; + } +.icon-arrow-down:before { + content: '\e65d'; + } +.icon-share-alt:before { + content: '\e65e'; + } +.icon-resize-full:before { + content: '\e65f'; + } +.icon-resize-small:before { + content: '\e660'; + } +.icon-plus:before { + content: '\e661'; + } +.icon-minus:before { + content: '\e662'; + } +.icon-asterisk:before { + content: '\e663'; + } +.icon-exclamation-sign:before { + content: '\e664'; + } +.icon-gift:before { + content: '\e665'; + } +.icon-leaf:before { + content: '\e666'; + } +.icon-eye-open:before { + content: '\e668'; + } +.icon-eye-close:before { + content: '\e669'; + } +.icon-warning-sign:before { + content: '\e66a'; + } +.icon-plane:before { + content: '\e66b'; + } +.icon-calendar:before { + content: '\e66c'; + } +.icon-random:before { + content: '\e66d'; + } +.icon-comment:before { + content: '\e66e'; + } +.icon-chevron-up:before { + content: '\e670'; + } +.icon-chevron-down:before { + content: '\e671'; + } +.icon-shopping-cart:before { + content: '\e673'; + } +.icon-folder-close:before { + content: '\e674'; + } +.icon-folder-open:before { + content: '\e675'; + } +.icon-resize-v:before { + content: '\e676'; + } +.icon-resize-h:before { + content: '\e677'; + } +.icon-bar-chart-alt:before { + content: '\e678'; + } +.icon-camera-retro:before { + content: '\e679'; + } +.icon-key:before { + content: '\e67a'; + } +.icon-cogs:before { + content: '\e67b'; + } +.icon-comments:before { + content: '\e67c'; + } +.icon-thumbs-o-up:before { + content: '\e67d'; + } +.icon-thumbs-o-down:before { + content: '\e67e'; + } +.icon-star-half:before { + content: '\e67f'; + } +.icon-heart-empty:before { + content: '\e680'; + } +.icon-signout:before { + content: '\e681'; + } +.icon-pushpin:before { + content: '\e683'; + } +.icon-external-link:before { + content: '\e684'; + } +.icon-signin:before { + content: '\e685'; + } +.icon-trophy:before { + content: '\e686'; + } +.icon-upload-alt:before { + content: '\e688'; + } +.icon-lemon:before { + content: '\e689'; + } +.icon-phone:before { + content: '\e68a'; + } +.icon-check-empty:before { + content: '\e68b'; + } +.icon-bookmark-empty:before { + content: '\e68c'; + } +.icon-phone-sign:before { + content: '\e68d'; + } +.icon-credit:before { + content: '\e690'; + } +.icon-rss:before { + content: '\e691'; + } +.icon-hdd:before { + content: '\e692'; + } +.icon-bullhorn:before { + content: '\e693'; + } +.icon-bell:before { + content: '\e694'; + } +.icon-certificate:before { + content: '\e695'; + } +.icon-hand-right:before { + content: '\e696'; + } +.icon-hand-left:before { + content: '\e697'; + } +.icon-hand-up:before { + content: '\e698'; + } +.icon-hand-down:before { + content: '\e699'; + } +.icon-circle-arrow-left:before { + content: '\e69a'; + } +.icon-circle-arrow-right:before { + content: '\e69b'; + } +.icon-circle-arrow-up:before { + content: '\e69c'; + } +.icon-circle-arrow-down:before { + content: '\e69d'; + } +.icon-globe:before { + content: '\e69e'; + } +.icon-wrench:before { + content: '\e69f'; + } +.icon-tasks:before { + content: '\e6a0'; + } +.icon-filter:before { + content: '\e6a1'; + } +.icon-group:before { + content: '\e6a4'; + } +.icon-link:before { + content: '\e6a5'; + } +.icon-cloud:before { + content: '\e6a6'; + } +.icon-beaker:before { + content: '\e6a7'; + } +.icon-cut:before { + content: '\e6a8'; + } +.icon-copy:before { + content: '\e6a9'; + } +.icon-paper-clip:before { + content: '\e6aa'; + } +.icon-save:before { + content: '\e6ab'; + } +.icon-sign-blank:before { + content: '\e6ac'; + } +.icon-bars:before { + content: '\e6ad'; + } +.icon-reorder:before { + content: '\e6ad'; + } +.icon-list-ul:before { + content: '\e6ae'; + } +.icon-list-ol:before { + content: '\e6af'; + } +.icon-table:before { + content: '\e6b2'; + } +.icon-magic:before { + content: '\e6b3'; + } +.icon-caret-down:before { + content: '\e6b8'; + } +.icon-caret-up:before { + content: '\e6b9'; + } +.icon-caret-left:before { + content: '\e6ba'; + } +.icon-caret-right:before { + content: '\e6bb'; + } +.icon-columns:before { + content: '\e6bc'; + } +.icon-sort:before { + content: '\e6bd'; + } +.icon-sort-down:before { + content: '\e6be'; + } +.icon-sort-up:before { + content: '\e6bf'; + } +.icon-envelope-alt:before { + content: '\e6c0'; + } +.icon-undo:before { + content: '\e6c1'; + } +.icon-dashboard:before { + content: '\e6c3'; + } +.icon-comment-alt:before { + content: '\e6c4'; + } +.icon-comments-alt:before { + content: '\e6c5'; + } +.icon-bolt:before { + content: '\e6c6'; + } +.icon-sitemap:before { + content: '\e6c7'; + } +.icon-umbrella:before { + content: '\e6c8'; + } +.icon-paste:before { + content: '\e6c9'; + } +.icon-lightbulb:before { + content: '\e6ca'; + } +.icon-exchange:before { + content: '\e6cb'; + } +.icon-cloud-download:before { + content: '\e6cc'; + } +.icon-cloud-upload:before { + content: '\e6cd'; + } +.icon-bell-alt:before { + content: '\e6d1'; + } +.icon-coffee:before { + content: '\e6d2'; + } +.icon-file-text-o:before { + content: '\e6d4'; + } +.icon-file-text-alt:before { + content: '\e6d4'; + } +.icon-building:before { + content: '\e6d5'; + } +.icon-double-angle-left:before { + content: '\e6dc'; + } +.icon-double-angle-right:before { + content: '\e6dd'; + } +.icon-double-angle-up:before { + content: '\e6de'; + } +.icon-double-angle-down:before { + content: '\e6df'; + } +.icon-angle-left:before { + content: '\e6e0'; + } +.icon-angle-right:before { + content: '\e6e1'; + } +.icon-angle-up:before { + content: '\e6e2'; + } +.icon-angle-down:before { + content: '\e6e3'; + } +.icon-desktop:before { + content: '\e6e4'; + } +.icon-laptop:before { + content: '\e6e5'; + } +.icon-tablet:before { + content: '\e6e6'; + } +.icon-mobile:before { + content: '\e6e7'; + } +.icon-circle-blank:before { + content: '\e6e8'; + } +.icon-quote-left:before { + content: '\e6e9'; + } +.icon-quote-right:before { + content: '\e6ea'; + } +.icon-spinner:before { + content: '\e6eb'; + } +.icon-circle:before { + content: '\e6ec'; + } +.icon-reply:before { + content: '\e6ed'; + } +.icon-folder-close-alt:before { + content: '\e6ef'; + } +.icon-folder-open-alt:before { + content: '\e6f0'; + } +.icon-expand-alt:before { + content: '\e6f1'; + } +.icon-collapse-alt:before { + content: '\e6f2'; + } +.icon-smile:before { + content: '\e6f3'; + } +.icon-frown:before { + content: '\e6f4'; + } +.icon-meh:before { + content: '\e6f5'; + } +.icon-gamepad:before { + content: '\e6f6'; + } +.icon-keyboard:before { + content: '\e6f7'; + } +.icon-flag-alt:before { + content: '\e6f8'; + } +.icon-flag-checkered:before { + content: '\e6f9'; + } +.icon-terminal:before { + content: '\e6fa'; + } +.icon-code:before { + content: '\e6fb'; + } +.icon-reply-all:before { + content: '\e6fc'; + } +.icon-star-half-full:before { + content: '\e6fd'; + } +.icon-location-arrow:before { + content: '\e6fe'; + } +.icon-crop:before { + content: '\e6ff'; + } +.icon-code-fork:before { + content: '\e700'; + } +.icon-unlink:before { + content: '\e701'; + } +.icon-question:before { + content: '\e702'; + } +.icon-info:before { + content: '\e703'; + } +.icon-shield:before { + content: '\e70b'; + } +.icon-calendar-empty:before { + content: '\e70c'; + } +.icon-rocket:before { + content: '\e70e'; + } +.icon-chevron-sign-left:before { + content: '\e70f'; + } +.icon-chevron-sign-right:before { + content: '\e710'; + } +.icon-chevron-sign-up:before { + content: '\e711'; + } +.icon-chevron-sign-down:before { + content: '\e712'; + } +.icon-html5:before { + content: '\e713'; + } +.icon-anchor:before { + content: '\e714'; + } +.icon-unlock-alt:before { + content: '\e715'; + } +.icon-bullseye:before { + content: '\e716'; + } +.icon-ellipsis-h:before { + content: '\e717'; + } +.icon-ellipsis-v:before { + content: '\e718'; + } +.icon-rss-sign:before { + content: '\e719'; + } +.icon-play-sign:before { + content: '\e71a'; + } +.icon-minus-sign-alt:before { + content: '\e71c'; + } +.icon-plus-sign-alt:before { + content: '\f0fe'; + } +.icon-check-minus:before { + content: '\e71d'; + } +.icon-check-plus:before { + content: '\f196'; + } +.icon-level-up:before { + content: '\e71e'; + } +.icon-level-down:before { + content: '\e71f'; + } +.icon-check-sign:before { + content: '\e720'; + } +.icon-edit-sign:before { + content: '\e721'; + } +.icon-external-link-sign:before { + content: '\e722'; + } +.icon-share-sign:before { + content: '\e723'; + } +.icon-compass:before { + content: '\e724'; + } +.icon-collapse:before { + content: '\e725'; + } +.icon-collapse-top:before { + content: '\e726'; + } +.icon-expand:before { + content: '\e727'; + } +.icon-dollar:before { + content: '\e728'; + } +.icon-yen:before { + content: '\e729'; + } +.icon-file:before { + content: '\e72b'; + } +.icon-file-text:before { + content: '\e72c'; + } +.icon-sort-by-alphabet:before { + content: '\e72d'; + } +.icon-sort-by-alphabet-alt:before { + content: '\e72e'; + } +.icon-sort-by-attributes:before { + content: '\e72f'; + } +.icon-sort-by-attributes-alt:before { + content: '\e730'; + } +.icon-sort-by-order:before { + content: '\e731'; + } +.icon-sort-by-order-alt:before { + content: '\e732'; + } +.icon-thumbs-up:before { + content: '\e733'; + } +.icon-thumbs-down:before { + content: '\e734'; + } +.icon-long-arrow-down:before { + content: '\e736'; + } +.icon-long-arrow-up:before { + content: '\e737'; + } +.icon-long-arrow-left:before { + content: '\e738'; + } +.icon-long-arrow-right:before { + content: '\e739'; + } +.icon-apple:before { + content: '\e73a'; + } +.icon-windows:before { + content: '\e73b'; + } +.icon-android:before { + content: '\e73c'; + } +.icon-linux:before { + content: '\e73d'; + } +.icon-sun:before { + content: '\e742'; + } +.icon-moon:before { + content: '\e743'; + } +.icon-archive:before { + content: '\e744'; + } +.icon-bug:before { + content: '\e745'; + } +.icon-zhifubao:before, +.icon-alipay:before { + content: '\e901'; + } +.icon-zhifubao-square:before, +.icon-alipay-square:before { + content: '\e900'; + } +.icon-taobao:before { + content: '\e902'; + } +.icon-weibo:before { + content: '\e746'; + } +.icon-renren:before { + content: '\e747'; + } +.icon-chrome:before { + content: '\e76c'; + } +.icon-firefox:before { + content: '\e76d'; + } +.icon-ie:before { + content: '\e76e'; + } +.icon-opera:before { + content: '\e76f'; + } +.icon-safari:before { + content: '\e770'; + } +.icon-node:before { + content: '\e76a'; + } +.icon-layout:before { + content: '\e768'; + } +.icon-usecase:before { + content: '\e74a'; + } +.icon-stack:before { + content: '\e769'; + } +.icon-branch:before { + content: '\e74b'; + } +.icon-chat:before { + content: '\e74c'; + } +.icon-chat-line:before { + content: '\e74f'; + } +.icon-comment-line:before { + content: '\e74f'; + } +.icon-chat-dot:before { + content: '\e750'; + } +.icon-cube:before { + content: '\e751'; + } +.icon-database:before { + content: '\f1c0'; + } +.icon-align-left:before { + content: '\e633'; + } +fieldset { + padding: 0; + margin: 0; + border: 0; + } +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 19.5px; + line-height: inherit; + color: #333; + border: 0; + border-bottom: 1px solid #e5e5e5; + } +label { + display: inline-block; + margin-bottom: 5px; + font-weight: bold; + } +input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } +input[type="radio"], +input[type="checkbox"] { + margin: 5px 0 0; + margin-top: 0 \9; + /* IE8-9 */ + line-height: normal; + } +input[type="file"] { + display: block; + } +select[multiple], +select[size] { + height: auto; + } +select:-moz-focusring { + color: transparent; + text-shadow: 0 0 0 #000; + } +select optgroup { + font-family: inherit; + font-size: inherit; + font-style: inherit; + } +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; + } +input[type="number"]::-webkit-outer-spin-button, +input[type="number"]::-webkit-inner-spin-button { + height: auto; + } +.form-control::-webkit-input-placeholder { + color: #808080; + } +.form-control::-moz-placeholder { + color: #808080; + } +.form-control:-ms-input-placeholder { + color: #808080; + } +.form-control::placeholder { + color: #808080; + } +.form-control { + display: block; + width: 100%; + height: 32px; + padding: 5px 8px; + font-size: 13px; + line-height: 1.53846154; + color: #222; + vertical-align: middle; + background-color: #fff; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + } +.form-control:focus, +.form-control.focus { + border-color: #145ccd; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(20, 92, 205, .6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(20, 92, 205, .6); + } +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + cursor: not-allowed; + background-color: #e5e5e5; + } +.form-control[readonly] { + cursor: default; + } +textarea.form-control { + height: auto; + } +.form-group { + margin-bottom: 15px; + } +.radio, +.checkbox { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; + } +.radio label, +.checkbox label { + min-height: 20px; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; + } +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + position: absolute; + margin-top: 3px; + margin-top: 4px \9; + margin-left: -20px; + } +.os-android .radio input[type="radio"], +.os-android .radio-inline input[type="radio"], +.os-android .checkbox input[type="checkbox"], +.os-android .checkbox-inline input[type="checkbox"] { + margin-top: 0; + } +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; + } +.radio-inline, +.checkbox-inline { + position: relative; + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + vertical-align: middle; + cursor: pointer; + } +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; + } +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"].disabled, +input[type="checkbox"].disabled, +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"] { + cursor: not-allowed; + } +.radio-inline.disabled, +.checkbox-inline.disabled, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; + } +.radio.disabled label, +.checkbox.disabled label, +fieldset[disabled] .radio label, +fieldset[disabled] .checkbox label { + cursor: not-allowed; + } +.input-sm { + height: 24px; + padding: 2px 8px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; + } +select.input-sm { + height: 24px; + line-height: 24px; + } +textarea.input-sm { + height: auto; + } +.input-lg { + height: 43px; + padding: 10px 16px; + font-size: 17px; + line-height: 1.25; + border-radius: 6px; + } +select.input-lg { + height: 43px; + line-height: 43px; + } +textarea.input-lg { + height: auto; + } +.has-warning .help-block, +.has-warning > label { + color: #f1a325; + } +.has-warning .form-control { + border-color: #f1a325; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + } +.has-warning .form-control:focus { + border-color: #d5890e; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #f7cb85; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #f7cb85; + } +.has-warning .input-group-addon { + color: #f1a325; + background-color: #fff0d5; + border-color: #f1a325; + } +.has-error .help-block, +.has-error > label { + color: #ea644a; + } +.has-error .form-control { + border-color: #ea644a; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + } +.has-error .form-control:focus { + border-color: #e53d1c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #f5b2a5; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #f5b2a5; + } +.has-error .input-group-addon { + color: #ea644a; + background-color: #ffe5e0; + border-color: #ea644a; + } +.has-success .help-block, +.has-success > label { + color: #38b03f; + } +.has-success .form-control { + border-color: #38b03f; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + } +.has-success .form-control:focus { + border-color: #2c8931; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #79d57f; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #79d57f; + } +.has-success .input-group-addon { + color: #38b03f; + background-color: #ddf4df; + border-color: #38b03f; + } +.form-control-static { + min-height: 33px; + padding-top: 6px; + padding-bottom: 6px; + margin-bottom: 0; + } +.help-block { + display: block; + margin: 5px 0; + color: #757575; + } +@media (min-width: 768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + padding-left: 0; + margin-top: 0; + margin-bottom: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + float: none; + margin-left: 0; + } + } +.form-horizontal .form-group > label, +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + padding-top: 6px; + margin-top: 0; + margin-bottom: 0; + } +.form-horizontal .form-group { + margin-right: -10px; + margin-left: -10px; + } +@media (min-width: 768px) { + .form-horizontal .form-group > label { + text-align: right; + } + } +.required { + position: relative; + } +.required:after { + position: absolute; + top: 0; + right: -10px; + display: inline-block; + font-size: 17px; + color: #ea644a; + content: '*'; + } +.form-horizontal .required:after { + top: 5px; + right: -1px; + } +.close { + float: right; + font-size: 19.5px; + font-weight: bold; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + filter: alpha(opacity=20); + opacity: .2; + } +.close:hover, +.close:focus { + color: #000; + text-decoration: none; + cursor: pointer; + filter: alpha(opacity=50); + opacity: .5; + } +button.close { + -webkit-appearance: none; + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + } +table { + max-width: 100%; + background-color: transparent; + } +caption { + padding-top: 8px; + padding-bottom: 8px; + color: #808080; + text-align: left; + } +th { + text-align: left; + } +.table { + width: 100%; + margin-bottom: 20px; + } +.table th, +.table td { + padding: 8px; + line-height: 1.53846154; + vertical-align: top; + border-bottom: 1px solid #ddd; + -webkit-transition: background .2s cubic-bezier(.175, .885, .32, 1); + -o-transition: background .2s cubic-bezier(.175, .885, .32, 1); + transition: background .2s cubic-bezier(.175, .885, .32, 1); + } +.table > thead > tr > th { + vertical-align: bottom; + background-color: #f1f1f1; + border-bottom: 1px solid #ddd; + } +.table > tbody + tbody { + border-top: 2px solid #ddd; + } +.table-fixed { + table-layout: fixed; + } +.table-fixed th, +.table-fixed td { + overflow: hidden; + white-space: nowrap; + } +.table-fixed tfoot > tr > th, +.table-fixed tfoot > tr > td, +.table-fixed .nofixed, +.table-fixed .nofixed { + overflow: visible; + } +.table-borderless thead > tr > th, +.table-borderless th, +.table-borderless td { + border: none; + } +.table-auto { + width: auto; + max-width: 100%; + } +.table-condensed th, +.table-condensed td { + padding: 5px; + } +.table-bordered { + border: 1px solid #ddd; + } +.table-bordered th, +.table-bordered td { + border: 1px solid #ddd; + } +.table-striped > tbody > tr:nth-child(odd) > td, +.table-striped > tbody > tr:nth-child(odd) > th { + background-color: #f9f9f9; + } +.table-hover > tbody > tr:hover > td, +.table-hover > tbody > tr:hover > th { + background-color: #ebf2f9; + } +table col[class*="col-"] { + display: table-column; + float: none; + } +table td[class*="col-"], +table th[class*="col-"] { + display: table-cell; + float: none; + } +.table tr > td.active, +.table tr > th.active, +.table tr.active > td, +.table tr.active > th { + background-color: #ffe7bc; + } +.table > thead > tr > td.success, +.table > tbody > tr > td.success, +.table > tfoot > tr > td.success, +.table > thead > tr > th.success, +.table > tbody > tr > th.success, +.table > tfoot > tr > th.success, +.table > thead > tr.success > td, +.table > tbody > tr.success > td, +.table > tfoot > tr.success > td, +.table > thead > tr.success > th, +.table > tbody > tr.success > th, +.table > tfoot > tr.success > th { + background-color: #ddf4df; + border-color: #bae8b6; + } +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, +.table-hover > tbody > tr.success:hover > td, +.table-hover > tbody > tr.success:hover > th { + background-color: #caeecd; + border-color: #a8e1a3; + } +.table > thead > tr > td.danger, +.table > tbody > tr > td.danger, +.table > tfoot > tr > td.danger, +.table > thead > tr > th.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > tbody > tr.danger > td, +.table > tfoot > tr.danger > td, +.table > thead > tr.danger > th, +.table > tbody > tr.danger > th, +.table > tfoot > tr.danger > th { + background-color: #ffe5e0; + border-color: #ffc6c7; + } +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, +.table-hover > tbody > tr.danger:hover > td, +.table-hover > tbody > tr.danger:hover > th { + background-color: #ffd0c6; + border-color: #ffadad; + } +.table > thead > tr > td.warning, +.table > tbody > tr > td.warning, +.table > tfoot > tr > td.warning, +.table > thead > tr > th.warning, +.table > tbody > tr > th.warning, +.table > tfoot > tr > th.warning, +.table > thead > tr.warning > td, +.table > tbody > tr.warning > td, +.table > tfoot > tr.warning > td, +.table > thead > tr.warning > th, +.table > tbody > tr.warning > th, +.table > tfoot > tr.warning > th { + background-color: #fff0d5; + border-color: #ffdcbc; + } +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, +.table-hover > tbody > tr.warning:hover > td, +.table-hover > tbody > tr.warning:hover > th { + background-color: #ffe7bc; + border-color: #ffcea2; + } +.list-group { + padding-left: 0; + margin-bottom: 20px; + } +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid #ddd; + } +.list-group-item:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; + } +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; + } +.list-group-item > .label-badge { + float: right; + } +.list-group-item > .label-badge + .label-badge { + margin-right: 5px; + } +a.list-group-item { + color: #555; + } +a.list-group-item .list-group-item-heading { + color: #333; + } +a.list-group-item:hover, +a.list-group-item:focus { + color: #353535; + text-decoration: none; + background-color: #ebf2f9; + } +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + z-index: 2; + color: #fff; + background-color: #3280fc; + border-color: #3280fc; + } +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading { + color: inherit; + } +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .list-group-item-text { + color: #e6e6e6; + } +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; + color: #333; + } +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; + } +.panel { + margin-bottom: 20px; + background-color: #fff; + border: 1px solid transparent; + border-color: #ddd; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: 0 1px 1px rgba(0, 0, 0, .05); + } +.panel > .panel-heading { + color: #333; + background-color: #f5f5f5; + border-color: #ddd; + } +.panel > .panel-heading + .panel-collapse .panel-body { + border-top-color: #ddd; + } +.panel > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #ddd; + } +.panel-body { + padding: 15px; + } +.panel > .table { + margin-bottom: 0; + } +.panel > .panel-body + .table { + border-top: 1px solid #ddd; + } +.panel-heading { + padding: 8px 15px; + border-bottom: 1px solid transparent; + border-top-left-radius: 3px; + border-top-right-radius: 3px; + } +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 15px; + } +.panel-title > a { + color: inherit; + } +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; + } +.alert { + padding: 15px; + margin-bottom: 20px; + color: #282828; + background-color: #f1f1f1; + border-radius: 3px; + -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: all .4s cubic-bezier(.175, .885, .32, 1); + transition: all .4s cubic-bezier(.175, .885, .32, 1); + } +.alert hr { + border-top-color: #e4e4e4; + } +.alert .alert-link { + color: #161616; + } +.alert h4 { + margin-top: 0; + color: inherit; + } +.alert hr { + margin: 10px 0; + } +.alert p, +.alert ul { + margin-bottom: 0; + } +.alert p + p { + margin-top: 5px; + } +.alert-link { + font-weight: bold; + } +.alert > [class*="icon-"] { + float: left; + margin-top: -5px; + font-size: 42px; + opacity: .6; + -webkit-transition: opacity .2s cubic-bezier(.175, .885, .32, 1); + -o-transition: opacity .2s cubic-bezier(.175, .885, .32, 1); + transition: opacity .2s cubic-bezier(.175, .885, .32, 1); + } +.alert > [class*="icon-"] + .content { + min-height: 30px; + margin-left: 64px; + } +.alert.with-icon { + display: table; + width: 100%; + } +.alert.with-icon > [class*="icon-"], +.alert.with-icon > [class*="icon-"] + .content { + display: table-cell; + float: none; + min-height: 0; + margin: 0; + vertical-align: middle; + } +.alert.with-icon > [class*="icon-"] { + width: 48px; + text-align: center; + } +.alert.with-icon > [class*="icon-"] + .content { + padding-left: 1em; + } +.alert-block { + margin: 0; + border-radius: 0; + } +.alert-dismissable { + padding-right: 35px; + } +.alert-dismissable .close { + position: relative; + top: -6px; + right: -21px; + color: inherit; + } +.alert-primary { + color: #282828; + background-color: #ebf2f9; + } +.alert-primary hr { + border-top-color: #d0e0f1; + } +.alert-primary .alert-link { + color: #161616; + } +.alert-success { + color: #329d38; + background-color: #ddf4df; + } +.alert-success hr { + border-top-color: #bae8b6; + } +.alert-success .alert-link { + color: #29822e; + } +.alert-info { + color: #03a2b6; + background-color: #ddf3f5; + } +.alert-info hr { + border-top-color: #a2e4de; + } +.alert-info .alert-link { + color: #028293; + } +.alert-warning { + color: #ed980f; + background-color: #fff0d5; + } +.alert-warning hr { + border-top-color: #ffdcbc; + } +.alert-warning .alert-link { + color: #cc830d; + } +.alert-danger { + color: #e75033; + background-color: #ffe5e0; + } +.alert-danger hr { + border-top-color: #ffc6c7; + } +.alert-danger .alert-link { + color: #dd391a; + } +.input-group { + position: relative; + display: table; + border-collapse: separate; + } +.input-group[class*="col-"] { + float: none; + padding-right: 0; + padding-left: 0; + } +.input-group .form-control { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; + } +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; + } +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; + } +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; + } +.input-group-addon { + padding: 5px 12px; + font-size: 13px; + font-weight: normal; + line-height: 1; + color: #222; + text-align: center; + background-color: #e5e5e5; + border: 1px solid #ccc; + border-radius: 4px; + } +.input-group-addon input[type="radio"], +.input-group-addon input[type="checkbox"] { + margin-top: 0; + } +.input-group-addon.fix-border { + border-right: 0; + border-left: 0; + } +.input-group-addon:empty { + width: 1px; + padding: 0; + } +.input-group-addon.fix-padding { + width: 1px; + padding: 0; + } +.input-group-btn.fix-border > .btn { + border-right: 0; + border-left: 0; + border-radius: 0; + } +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } +.input-group-addon:first-child { + border-right: 0; + } +.input-group-addon:last-child { + border-left: 0; + } +.input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; + } +.input-group-btn > .btn { + position: relative; + } +.input-group-btn > .btn + .btn { + margin-left: -1px; + } +.input-group-btn > .btn:hover, +.input-group-btn > .btn:focus, +.input-group-btn > .btn:active { + z-index: 2; + } +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group { + margin-right: -1px; + } +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group { + margin-left: -1px; + } +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + height: 43px; + padding: 10px 16px; + font-size: 17px; + line-height: 1.25; + border-radius: 6px; + } +select.input-group-lg > .form-control, +select.input-group-lg > .input-group-addon, +select.input-group-lg > .input-group-btn > .btn { + height: 43px; + line-height: 43px; + } +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn { + height: auto; + } +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + height: 24px; + padding: 2px 8px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; + } +select.input-group-sm > .form-control, +select.input-group-sm > .input-group-addon, +select.input-group-sm > .input-group-btn > .btn { + height: 24px; + line-height: 24px; + } +textarea.input-group-sm > .form-control, +textarea.input-group-sm > .input-group-addon, +textarea.input-group-sm > .input-group-btn > .btn { + height: auto; + } +.input-group-addon.input-sm { + padding: 2px 8px; + font-size: 12px; + border-radius: 3px; + } +.input-group-addon.input-lg { + padding: 10px 16px; + font-size: 17px; + border-radius: 6px; + } +.code, +code, +kbd, +pre, +samp { + font-family: Monaco, Menlo, Consolas, "Courier New", monospace; + } +kbd, +code { + padding: 2px 4px; + font-size: 90%; + color: #37474f; + background-color: #f3f5f7; + border-radius: 4px; + } +kbd { + padding: 1px 4px; + font-weight: bold; + color: #666; + background-color: #f1f1f1; + border: 1px solid #d7d7d7; + border-bottom-width: 2px; + } +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 12px; + line-height: 1.38461538; + color: #333; + word-break: break-all; + word-wrap: break-word; + background-color: #f5f5f5; + border: 1px solid #ccc; + border-radius: 4px; + } +pre code { + padding: 0; + margin: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border: 0; + } +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; + } +.com { + color: #93a1a1; + } +.lit { + color: #195f91; + } +.pun, +.opn, +.clo { + color: #93a1a1; + } +.fun { + color: #dc322f; + } +.str, +.atv { + color: #d14; + } +.kwd, +.prettyprint .tag { + color: #1e347b; + } +.typ, +.atn, +.dec, +.var { + color: teal; + } +.pln { + color: #48484c; + } +.prettyprint.linenums { + -webkit-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; + box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; + } +.prettyprint ol.linenums { + padding-left: 35px; + margin-bottom: 0; + line-height: 20px; + color: #bebec5; + text-shadow: 0 1px 0 #fff; + } +.pager { + display: inline-block; + padding-left: 0; + margin: 20px 0; + list-style: none; + } +.pager > li { + display: inline; + } +.pager > li > a, +.pager > li > span { + position: relative; + float: left; + padding: 5px 12px; + margin-left: -1px; + line-height: 1.53846154; + text-decoration: none; + background-color: #fff; + border: 1px solid #ddd; + } +.pager > li:first-child > a, +.pager > li:first-child > span { + margin-left: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + } +.pager > li:last-child > a, +.pager > li:last-child > span { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + } +.pager > li > a:hover, +.pager > li > span:hover, +.pager > li > a:focus, +.pager > li > span:focus { + z-index: 2; + background-color: #e5e5e5; + } +.pager > li.active > a, +.pager > li.active > span, +.pager > li.active > a:hover, +.pager > li.active > span:hover { + z-index: 3; + color: #fff; + cursor: default; + background-color: #3280fc; + border-color: #3280fc; + } +.pager > li.disabled > span, +.pager > li.disabled > span:hover, +.pager > li.disabled > span:focus, +.pager > li.disabled > a, +.pager > li.disabled > a:hover, +.pager > li.disabled > a:focus { + color: #ddd; + pointer-events: none; + cursor: not-allowed; + background-color: #fff; + border-color: #ddd; + } +.pager-justify { + display: block; + } +.pager-justify .next > a, +.pager-justify .next > span { + float: right; + border-radius: 4px; + } +.pager-justify .previous > a, +.pager-justify .previous > span { + float: left; + border-radius: 4px; + } +.pager-goto { + width: 100px; + text-align: center; + } +.pager > li > div { + float: left; + } +.pager > li .pager-goto, +.pager > li .pager-size-menu, +.pager > li.space { + margin: 0 5px; + } +.pager-label { + position: relative; + float: left; + padding: 5px 4px; + margin-left: -1px; + line-height: 1.53846154; + text-decoration: none; + border: 1px solid transparent; + } +.pager-item-left > a { + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + } +.pager-item-right > a { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + } +.nav { + padding-left: 0; + margin-bottom: 0; + list-style: none; + } +.nav > .nav-heading { + padding: 8px 15px; + font-weight: bold; + color: #808080; + } +.nav > li { + position: relative; + display: block; + } +.nav > li > a { + position: relative; + display: block; + padding: 8px 15px; + color: #353535; + } +.nav > li > a:hover, +.nav > li > a:focus { + color: #0d3d88; + text-decoration: none; + background-color: #f1f1f1; + } +.nav > li.disabled > a { + color: #ddd; + } +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #ddd; + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + } +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + background-color: #f1f1f1; + border-color: #145ccd; + } +.nav > li > a > img { + max-width: none; + } +.nav-pills > li { + float: left; + } +.nav-pills > li > a { + border-radius: 20px; + } +.nav-pills > li + li { + margin-left: 2px; + } +.nav-pills > li.active > a, +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { + color: #fff; + background-color: #3280fc; + } +.nav-primary > li { + float: left; + margin-left: -1px; + } +.nav-primary > li:first-child > a { + margin-left: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + } +.nav-primary > li:last-child > a { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + } +.nav-primary > li > a { + border: 1px solid #ddd; + } +.nav-primary > li.active > a, +.nav-primary > li.active > a:hover, +.nav-primary > li.active > a:focus { + color: #fff; + background-color: #3280fc; + border-color: #3280fc; + } +.nav-secondary > li { + float: left; + } +.nav-secondary > li > a { + border-bottom: 2px solid #e5e5e5; + } +.nav-secondary > li.active > a, +.nav-secondary > li.active > a:hover, +.nav-secondary > li.active > a:focus { + color: #3280fc; + border-bottom-color: #3280fc; + } +.nav-secondary > li.nav-heading { + border-bottom: 2px solid #e5e5e5; + } +.nav-stacked > li { + float: none; + } +.nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; + } +.nav-stacked.nav-primary > li, +.nav-stacked.nav-primary > li > a { + margin-left: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } +.nav-stacked.nav-primary > li + li { + margin-top: -1px; + } +.nav-stacked.nav-primary > li:first-child { + margin-top: 0; + } +.nav-stacked.nav-primary > li:first-child > a, +.nav-stacked.nav-primary > li:first-child.nav-heading { + margin-left: 0; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + } +.nav-stacked.nav-primary > li:last-child > a { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; + } +.nav-stacked.nav-primary > li.nav-heading { + background-color: #f1f1f1; + border: 1px solid #ddd; + } +.nav-stacked.nav-secondary > li > a { + border: none; + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + -webkit-box-shadow: inset 2px 0 0 #f5f5f5; + box-shadow: inset 2px 0 0 #f5f5f5; + } +.nav-stacked.nav-secondary > li > a:hover { + -webkit-box-shadow: inset 2px 0 0 #e5e5e5; + box-shadow: inset 2px 0 0 #e5e5e5; + } +.nav-stacked.nav-secondary > li + li { + margin-top: -1px; + } +.nav-stacked.nav-secondary > li:first-child { + margin-top: 0; + } +.nav-stacked.nav-secondary > li.active > a, +.nav-stacked.nav-secondary > li.active > a:hover, +.nav-stacked.nav-secondary > li.active > a:focus { + background-color: #f5f5f5; + -webkit-box-shadow: inset 2px 0 0 #3280fc; + box-shadow: inset 2px 0 0 #3280fc; + } +.nav-stacked.nav-secondary > li.nav-heading { + border-bottom: 1px solid #ddd; + } +.nav-justified { + width: 100%; + } +.nav-justified > li { + float: none; + } +.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; + } +@media (min-width: 768px) { + .nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-justified > li > a { + margin-bottom: 0; + } + .nav-justified.nav-primary > li + li > a { + border-left: 0; + } + } +.navbar { + position: relative; + min-height: 40px; + margin-bottom: 20px; + border: 1px solid transparent; + } +@media (min-width: 768px) { + .navbar { + border-radius: 4px; + } + } +@media (min-width: 768px) { + .navbar-header { + float: left; + } + } +.navbar-collapse { + padding-right: 10px; + padding-left: 10px; + overflow-x: visible; + -webkit-overflow-scrolling: touch; + border-top: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); + } +.navbar-collapse.in { + overflow-y: auto; + } +@media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + } + .navbar-collapse.in { + overflow-y: visible; + } + .navbar-fixed-top .navbar-collapse, + .navbar-static-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + padding-right: 0; + padding-left: 0; + } + } +.navbar-fixed-top .navbar-collapse, +.navbar-fixed-bottom .navbar-collapse { + max-height: 340px; + } +@media (max-device-width: 480px) and (orientation: landscape) { + .navbar-fixed-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + max-height: 200px; + } + } +.container > .navbar-header, +.container-fluid > .navbar-header, +.container > .navbar-collapse, +.container-fluid > .navbar-collapse { + margin-right: -10px; + margin-left: -10px; + } +@media (min-width: 768px) { + .container > .navbar-header, + .container-fluid > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } + } +.navbar-static-top { + z-index: 1000; + border-width: 0 0 1px; + } +@media (min-width: 768px) { + .navbar-static-top { + border-radius: 0; + } + } +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; + } +@media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; + } + } +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px; + } +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; + } +.navbar-brand { + float: left; + height: 40px; + padding: 10px 15px; + font-size: 17px; + line-height: 20px; + } +.navbar-brand:hover, +.navbar-brand:focus { + text-decoration: none; + } +.navbar-brand > img { + display: block; + } +@media (min-width: 768px) { + .navbar > .container .navbar-brand, + .navbar > .container-fluid .navbar-brand { + margin-left: -10px; + } + } +.navbar-toggle { + position: relative; + float: right; + padding: 9px 10px; + margin-top: 3px; + margin-right: 3px; + margin-bottom: 3px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; + } +.navbar-toggle:focus { + outline: 0; + } +.navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; + } +.navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; + } +@media (min-width: 768px) { + .navbar-toggle { + display: none; + } + } +.navbar-nav { + margin: 5px -10px; + } +.navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px; + } +@media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; + } + } +@media (min-width: 768px) { + .navbar-nav { + float: left; + margin: 0; + } + .navbar-nav > li { + float: left; + } + .navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + } + .navbar-nav.nav-justified > li { + float: none; + } + } +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-left-radius: 0; + border-top-right-radius: 0; + } +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } +.navbar-nav.pull-right > li > .dropdown-menu, +.navbar-nav > li > .dropdown-menu.pull-right { + right: 0; + left: auto; + } +.navbar-btn { + margin-top: 4px; + margin-bottom: 4px; + } +.navbar-text { + float: left; + margin-top: 10px; + margin-bottom: 10px; + } +@media (min-width: 768px) { + .navbar-text { + margin-right: 10px; + margin-left: 10px; + } + } +@media (min-width: 768px) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + margin-right: -10px; + } + .navbar-right ~ .navbar-right { + margin-right: 0; + } + } +.navbar-default { + background-color: #f7f7f7; + border-color: #dedede; + } +.navbar-default .navbar-brand { + color: #333; + } +.navbar-default .navbar-brand:hover, +.navbar-default .navbar-brand:focus { + color: #1a1a1a; + background-color: transparent; + } +.navbar-default .navbar-text { + color: #333; + } +.navbar-default .navbar-nav > li > a { + color: #333; + } +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #222; + background-color: #e5e5e5; + } +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #555; + background-color: #e7e7e7; + } +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #ccc; + background-color: transparent; + } +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: #ddd; + } +.navbar-default .navbar-toggle .icon-bar { + background-color: #808080; + } +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #dedede; + } +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .open > a:hover, +.navbar-default .navbar-nav > .open > a:focus { + color: #555; + background-color: #e7e7e7; + } +@media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #333; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #222; + background-color: #e5e5e5; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #555; + background-color: #e7e7e7; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #ccc; + background-color: transparent; + } + } +.navbar-default .navbar-link { + color: #333; + } +.navbar-default .navbar-link:hover { + color: #222; + } +.navbar-default .btn-link { + color: #333; + } +.navbar-default .btn-link:hover, +.navbar-default .btn-link:focus { + color: #222; + } +.navbar-default .btn-link[disabled]:hover, +fieldset[disabled] .navbar-default .btn-link:hover, +.navbar-default .btn-link[disabled]:focus, +fieldset[disabled] .navbar-default .btn-link:focus { + color: #ccc; + } +.navbar-inverse { + background-color: #145ccd; + border-color: #10479f; + } +.navbar-inverse .navbar-brand { + color: #ddd; + } +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + color: #fff; + background-color: transparent; + } +.navbar-inverse .navbar-text { + color: #ddd; + } +.navbar-inverse .navbar-nav > li > a { + color: #ddd; + } +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #fff; + background-color: #1868e8; + } +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #fff; + background-color: #2a74ea; + } +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444; + background-color: transparent; + } +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #1251b6; + } +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #fff; + } +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #114dad; + } +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + color: #fff; + background-color: #2a74ea; + } +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #10479f; + } + .navbar-inverse .navbar-nav .open .dropdown-menu .divider { + background-color: #10479f; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #ddd; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #fff; + background-color: #1868e8; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #fff; + background-color: #2a74ea; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #444; + background-color: transparent; + } + } +.navbar-inverse .navbar-link { + color: #ddd; + } +.navbar-inverse .navbar-link:hover { + color: #fff; + } +.fade { + opacity: 0; + -webkit-transition: opacity .15s linear; + -o-transition: opacity .15s linear; + transition: opacity .15s linear; + } +.fade.in { + opacity: 1; + } +.scale { + -webkit-transition: all .15s ease; + -o-transition: all .15s ease; + transition: all .15s ease; + -webkit-transform: scale(.8); + -ms-transform: scale(.8); + -o-transform: scale(.8); + transform: scale(.8); + } +.scale.in { + -webkit-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); + } +.collapse { + display: none; + } +.collapse.in { + display: block; + } +tr.collapse.in { + display: table-row; + } +tbody.collapse.in { + display: table-row-group; + } +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height .35s ease; + -o-transition: height .35s ease; + transition: height .35s ease; + } +.modal-open { + overflow: hidden; + } +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + display: none; + overflow: hidden; + -webkit-overflow-scrolling: touch; + outline: 0; + } +.modal.fade .modal-dialog { + -webkit-transition: -webkit-transform .3s ease-out; + -o-transition: -o-transform .3s ease-out; + transition: -webkit-transform .3s ease-out; + transition: transform .3s ease-out; + transition: transform .3s ease-out, -webkit-transform .3s ease-out, -o-transform .3s ease-out; + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + -o-transform: translate(0, -25%); + transform: translate(0, -25%); + } +.modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); + } +.modal > .loader { + display: none; + } +.modal.modal-loading .modal-dialog { + opacity: 0; + } +.modal.modal-loading .loader { + position: absolute; + top: 35%; + left: 50%; + display: block; + width: 80px; + margin-left: -40px; + font-size: 56px; + color: #fff; + text-align: center; + } +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; + } +.modal-iframe .modal-body > iframe { + border-radius: 0 0 6px 6px; + } +.modal-dialog { + position: relative; + width: auto; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + outline: 0; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); + box-shadow: 0 3px 9px rgba(0, 0, 0, .5); + } +.modal-dialog.modal-moveable { + position: absolute; + margin: 0; + } +.modal-dialog.modal-moveable .modal-header { + cursor: move; + } +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000; + } +.modal-backdrop.fade { + filter: alpha(opacity=0); + opacity: 0; + } +.modal-backdrop.in { + filter: alpha(opacity=50); + opacity: .5; + } +.modal-header { + min-height: 16.53846154px; + padding: 15px; + border-bottom: 1px solid #e5e5e5; + } +.modal-header .close { + margin-top: -2px; + } +.modal-title { + margin: 0; + line-height: 1.53846154; + } +.modal-body { + position: relative; + padding: 15px; + } +.modal-footer { + padding: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; + } +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; + } +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; + } +.modal-footer .btn-block + .btn-block { + margin-left: 0; + } +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; + } +@media (min-width: 768px) { + .modal-dialog { + width: 600px; + margin: 30px auto; + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + } + .modal-sm { + width: 300px; + } + } +@media (min-width: 992px) { + .modal-lg { + width: 900px; + } + } +/* full screen modal */ +.modal-fullscreen { + position: relative; + width: 100%!important; + height: 100%!important; + margin: 0; + border-radius: 0; + } +.modal-fullscreen .modal-body { + position: absolute; + top: 52px; + right: 0; + bottom: 0; + left: 0; + overflow-y: auto; + } +.tooltip { + position: absolute; + z-index: 1030; + display: block; + font-size: 12px; + line-height: 1.4; + visibility: visible; + filter: alpha(opacity=0); + opacity: 0; + } +.tooltip.in { + filter: alpha(opacity=100); + opacity: 1; + } +.tooltip.top { + padding: 5px 0; + margin-top: -3px; + } +.tooltip.right { + padding: 0 5px; + margin-left: 3px; + } +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; + } +.tooltip.left { + padding: 0 5px; + margin-left: -3px; + } +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #fff; + text-align: center; + text-decoration: none; + background-color: #353535; + border-radius: 4px; + } +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + } +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #353535; + } +.tooltip.top-left .tooltip-arrow { + bottom: 0; + left: 5px; + border-width: 5px 5px 0; + border-top-color: #353535; + } +.tooltip.top-right .tooltip-arrow { + right: 5px; + bottom: 0; + border-width: 5px 5px 0; + border-top-color: #353535; + } +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #353535; + } +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #353535; + } +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #353535; + } +.tooltip.bottom-left .tooltip-arrow { + top: 0; + left: 5px; + border-width: 0 5px 5px; + border-bottom-color: #353535; + } +.tooltip.bottom-right .tooltip-arrow { + top: 0; + right: 5px; + border-width: 0 5px 5px; + border-bottom-color: #353535; + } +.tooltip-primary .tooltip-inner { + background-color: #3280fc; + } +.tooltip-primary.tooltip.top .tooltip-arrow { + border-top-color: #3280fc; + } +.tooltip-primary.tooltip.top-left .tooltip-arrow { + border-top-color: #3280fc; + } +.tooltip-primary.tooltip.top-right .tooltip-arrow { + border-top-color: #3280fc; + } +.tooltip-primary.tooltip.right .tooltip-arrow { + border-right-color: #3280fc; + } +.tooltip-primary.tooltip.left .tooltip-arrow { + border-left-color: #3280fc; + } +.tooltip-primary.tooltip.bottom .tooltip-arrow { + border-bottom-color: #3280fc; + } +.tooltip-primary.tooltip.bottom-left .tooltip-arrow { + border-bottom-color: #3280fc; + } +.tooltip-primary.tooltip.bottom-right .tooltip-arrow { + border-bottom-color: #3280fc; + } +.tooltip-success .tooltip-inner { + background-color: #38b03f; + } +.tooltip-success.tooltip.top .tooltip-arrow { + border-top-color: #38b03f; + } +.tooltip-success.tooltip.top-left .tooltip-arrow { + border-top-color: #38b03f; + } +.tooltip-success.tooltip.top-right .tooltip-arrow { + border-top-color: #38b03f; + } +.tooltip-success.tooltip.right .tooltip-arrow { + border-right-color: #38b03f; + } +.tooltip-success.tooltip.left .tooltip-arrow { + border-left-color: #38b03f; + } +.tooltip-success.tooltip.bottom .tooltip-arrow { + border-bottom-color: #38b03f; + } +.tooltip-success.tooltip.bottom-left .tooltip-arrow { + border-bottom-color: #38b03f; + } +.tooltip-success.tooltip.bottom-right .tooltip-arrow { + border-bottom-color: #38b03f; + } +.tooltip-info .tooltip-inner { + background-color: #03b8cf; + } +.tooltip-info.tooltip.top .tooltip-arrow { + border-top-color: #03b8cf; + } +.tooltip-info.tooltip.top-left .tooltip-arrow { + border-top-color: #03b8cf; + } +.tooltip-info.tooltip.top-right .tooltip-arrow { + border-top-color: #03b8cf; + } +.tooltip-info.tooltip.right .tooltip-arrow { + border-right-color: #03b8cf; + } +.tooltip-info.tooltip.left .tooltip-arrow { + border-left-color: #03b8cf; + } +.tooltip-info.tooltip.bottom .tooltip-arrow { + border-bottom-color: #03b8cf; + } +.tooltip-info.tooltip.bottom-left .tooltip-arrow { + border-bottom-color: #03b8cf; + } +.tooltip-info.tooltip.bottom-right .tooltip-arrow { + border-bottom-color: #03b8cf; + } +.tooltip-warning .tooltip-inner { + background-color: #f1a325; + } +.tooltip-warning.tooltip.top .tooltip-arrow { + border-top-color: #f1a325; + } +.tooltip-warning.tooltip.top-left .tooltip-arrow { + border-top-color: #f1a325; + } +.tooltip-warning.tooltip.top-right .tooltip-arrow { + border-top-color: #f1a325; + } +.tooltip-warning.tooltip.right .tooltip-arrow { + border-right-color: #f1a325; + } +.tooltip-warning.tooltip.left .tooltip-arrow { + border-left-color: #f1a325; + } +.tooltip-warning.tooltip.bottom .tooltip-arrow { + border-bottom-color: #f1a325; + } +.tooltip-warning.tooltip.bottom-left .tooltip-arrow { + border-bottom-color: #f1a325; + } +.tooltip-warning.tooltip.bottom-right .tooltip-arrow { + border-bottom-color: #f1a325; + } +.tooltip-danger .tooltip-inner { + background-color: #ea644a; + } +.tooltip-danger.tooltip.top .tooltip-arrow { + border-top-color: #ea644a; + } +.tooltip-danger.tooltip.top-left .tooltip-arrow { + border-top-color: #ea644a; + } +.tooltip-danger.tooltip.top-right .tooltip-arrow { + border-top-color: #ea644a; + } +.tooltip-danger.tooltip.right .tooltip-arrow { + border-right-color: #ea644a; + } +.tooltip-danger.tooltip.left .tooltip-arrow { + border-left-color: #ea644a; + } +.tooltip-danger.tooltip.bottom .tooltip-arrow { + border-bottom-color: #ea644a; + } +.tooltip-danger.tooltip.bottom-left .tooltip-arrow { + border-bottom-color: #ea644a; + } +.tooltip-danger.tooltip.bottom-right .tooltip-arrow { + border-bottom-color: #ea644a; + } +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + max-width: 300px; + text-align: left; + white-space: normal; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 4px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2); + box-shadow: 0 5px 10px rgba(0, 0, 0, .2); + } +.popover.top { + margin-top: -10px; + } +.popover.right { + margin-left: 10px; + } +.popover.bottom { + margin-top: 10px; + } +.popover.left { + margin-left: -10px; + } +.popover.no-arrow.top { + margin-top: 0; + } +.popover.no-arrow.right { + margin-left: 0; + } +.popover.no-arrow.bottom { + margin-top: 0; + } +.popover.no-arrow.left { + margin-left: 0; + } +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 13px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: 4px 4px 0 0; + } +.popover-content { + padding: 9px 14px; + } +.popover .arrow, +.popover .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + } +.popover .arrow { + border-width: 11px; + } +.popover .arrow:after { + content: ""; + border-width: 10px; + } +.popover.top .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, .25); + border-bottom-width: 0; + } +.popover.top .arrow:after { + bottom: 1px; + margin-left: -10px; + content: " "; + border-top-color: #fff; + border-bottom-width: 0; + } +.popover.right .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, .25); + border-left-width: 0; + } +.popover.right .arrow:after { + bottom: -10px; + left: 1px; + content: " "; + border-right-color: #fff; + border-left-width: 0; + } +.popover.bottom .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, .25); + } +.popover.bottom .arrow:after { + top: 1px; + margin-left: -10px; + content: " "; + border-top-width: 0; + border-bottom-color: #fff; + } +.popover.left .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, .25); + } +.popover.left .arrow:after { + right: 1px; + bottom: -10px; + content: " "; + border-right-width: 0; + border-left-color: #fff; + } +.popover-primary { + border-color: #3280fc; + } +.popover-primary .popover-title { + color: #fff; + background-color: #3280fc; + } +.popover-primary.popover.top .arrow { + border-top-color: #3280fc; + } +.popover-primary.popover.right .arrow { + border-right-color: #3280fc; + } +.popover-primary.popover.left .arrow { + border-left-color: #3280fc; + } +.popover-primary.popover.bottom .arrow, +.popover-primary.popover.bottom .arrow:after { + border-bottom-color: #3280fc; + } +.popover-success { + border-color: #38b03f; + } +.popover-success .popover-title { + color: #fff; + background-color: #38b03f; + } +.popover-success.popover.top .arrow { + border-top-color: #38b03f; + } +.popover-success.popover.right .arrow { + border-right-color: #38b03f; + } +.popover-success.popover.left .arrow { + border-left-color: #38b03f; + } +.popover-success.popover.bottom .arrow, +.popover-success.popover.bottom .arrow:after { + border-bottom-color: #38b03f; + } +.popover-info { + border-color: #03b8cf; + } +.popover-info .popover-title { + color: #fff; + background-color: #03b8cf; + } +.popover-info.popover.top .arrow { + border-top-color: #03b8cf; + } +.popover-info.popover.right .arrow { + border-right-color: #03b8cf; + } +.popover-info.popover.left .arrow { + border-left-color: #03b8cf; + } +.popover-info.popover.bottom .arrow, +.popover-info.popover.bottom .arrow:after { + border-bottom-color: #03b8cf; + } +.popover-warning { + border-color: #f1a325; + } +.popover-warning .popover-title { + color: #fff; + background-color: #f1a325; + } +.popover-warning.popover.top .arrow { + border-top-color: #f1a325; + } +.popover-warning.popover.right .arrow { + border-right-color: #f1a325; + } +.popover-warning.popover.left .arrow { + border-left-color: #f1a325; + } +.popover-warning.popover.bottom .arrow, +.popover-warning.popover.bottom .arrow:after { + border-bottom-color: #f1a325; + } +.popover-danger { + border-color: #ea644a; + } +.popover-danger .popover-title { + color: #fff; + background-color: #ea644a; + } +.popover-danger.popover.top .arrow { + border-top-color: #ea644a; + } +.popover-danger.popover.right .arrow { + border-right-color: #ea644a; + } +.popover-danger.popover.left .arrow { + border-left-color: #ea644a; + } +.popover-danger.popover.bottom .arrow, +.popover-danger.popover.bottom .arrow:after { + border-bottom-color: #ea644a; + } +.caret { + display: inline-block; + width: 0; + height: 0; + margin-bottom: 2px; + margin-left: 2px; + vertical-align: middle; + border-top: 4px dashed; + border-top: 4px solid \9; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + } +.dropup, +.dropdown { + position: relative; + } +.dropdown-toggle:focus { + outline: 0; + } +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + font-size: 13px; + list-style: none; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #cbcbcb; + border: 1px solid rgba(0, 0, 0, .15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + } +.dropdown-menu.pull-right { + right: 0; + left: auto; + } +.dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; + } +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.53846154; + color: #353535; + white-space: nowrap; + } +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + color: #fff; + text-decoration: none; + background-color: #3280fc; + } +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #fff; + text-decoration: none; + background-color: #3280fc; + outline: 0; + } +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #ddd; + } +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + } +.dropdown-hover .dropdown-menu { + margin: -1px 0; + } +.dropdown-hover:hover > .dropdown-menu, +.open > .dropdown-menu { + display: block; + } +.dropdown-hover:hover > a, +.open > a { + outline: 0; + } +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + font-weight: bold; + line-height: 1.53846154; + color: #808080; + } +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; + } +.pull-right > .dropdown-menu { + right: 0; + left: auto; + } +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + content: ""; + border-top: 0 dotted; + border-bottom: 4px solid; + } +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; + } +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + right: 0; + left: auto; + } + } +.dropdown-submenu { + position: relative; + } +.dropdown-submenu > .dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + border-radius: 4px; + } +.dropdown-submenu.open > .dropdown-menu, +.dropdown-submenu:hover > .dropdown-menu { + display: block; + } +.dropup .dropdown-submenu > .dropdown-menu { + top: auto; + bottom: 0; + margin-top: 0; + margin-bottom: -2px; + border-radius: 4px; + } +.dropdown-submenu > a:after { + display: block; + float: right; + width: 0; + height: 0; + margin-top: 5px; + margin-right: -10px; + content: " "; + border-color: transparent; + border-style: solid; + border-width: 5px 0 5px 5px; + border-left-color: #ccc; + } +.dropdown-submenu:hover > a:after { + border-left-color: #fff; + } +.dropdown-submenu > a { + min-width: 160px; + } +.dropdown-submenu > .dropdown-menu.pull-left { + left: -100%; + } +.dropdown-submenu:hover > a, +.dropdown-submenu:focus > a { + color: #fff; + text-decoration: none; + background-color: #3280fc; + } +.carousel { + position: relative; + } +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; + } +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: .6s ease-in-out left; + -o-transition: .6s ease-in-out left; + transition: .6s ease-in-out left; + } +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + line-height: 1; + } +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; + } +.carousel-inner > .active { + left: 0; + } +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; + } +.carousel-inner > .next { + left: 100%; + } +.carousel-inner > .prev { + left: -100%; + } +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; + } +.carousel-inner > .active.left { + left: -100%; + } +.carousel-inner > .active.right { + left: 100%; + } +.carousel-control { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 10%; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); + filter: alpha(opacity=40); + outline: none; + opacity: .4; + } +.carousel-control > .icon { + font-size: 20px; + } +.carousel-control.left { + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .3)), to(rgba(0, 0, 0, .0001))); + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .3) 0%, rgba(0, 0, 0, .0001) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, .3) 0%, rgba(0, 0, 0, .0001) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, .3) 0%, rgba(0, 0, 0, .0001) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#4d000000', endColorstr='#00000000', GradientType=1); + background-repeat: repeat-x; + } +.carousel-control.right { + right: 0; + left: auto; + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .3))); + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .3) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .3) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .3) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#4d000000', GradientType=1); + background-repeat: repeat-x; + } +.carousel-control:hover, +.carousel-control:focus { + color: #fff; + text-decoration: none; + filter: alpha(opacity=100); + outline: none; + opacity: 1; + } +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .icon-chevron-left, +.carousel-control .icon-chevron-right { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; + } +.carousel-control .icon-prev, +.carousel-control .icon-chevron-left { + left: 50%; + } +.carousel-control .icon-next, +.carousel-control .icon-chevron-right { + right: 50%; + } +.carousel-control .icon-prev, +.carousel-control .icon-next { + width: 20px; + height: 20px; + margin-top: -10px; + margin-left: -10px; + font-family: serif; + } +.carousel-control .icon-prev:before { + content: '\2039'; + } +.carousel-control .icon-next:before { + content: '\203a'; + } +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); + } +.carousel-caption .btn { + text-shadow: none; + } +@media screen and (min-width: 768px) { + .carousel-control .icon-prev, + .carousel-control .icon-next { + top: 40%; + width: 30px; + height: 30px; + margin-top: -15px; + margin-left: -15px; + font-size: 80px; + } + .carousel-control .icon-prev { + left: 30%; + } + .carousel-control .icon-next { + right: 25%; + } + .carousel-caption { + right: 20%; + left: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } + } +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + padding-left: 0; + margin-left: -30%; + text-align: center; + list-style: none; + } +.carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + cursor: pointer; + border: 1px solid #fff; + border-radius: 10px; + } +.carousel-indicators .active { + width: 12px; + height: 12px; + margin: 0; + background-color: #fff; + } +.bg-black, +.bg-default { + color: #fff; + background-color: #353535; + } +.bg-primary { + color: #fff; + background-color: #3280fc; + } +.bg-green, +.bg-success { + color: #fff; + background-color: #38b03f; + } +.bg-blue, +.bg-info { + color: #fff; + background-color: #03b8cf; + } +.bg-yellow, +.bg-warning { + color: #fff; + background-color: #f1a325; + } +.bg-red, +.bg-danger { + color: #fff; + background-color: #ea644a; + } +.bg-brown, +.bg-important { + color: #fff; + background-color: #bd7b46; + } +.bg-purple, +.bg-special { + color: #fff; + background-color: #8666b8; + } +.hl-gray, +.hl-default { + background-color: #f1f1f1; + } +.hl-primary { + background-color: #ebf2f9; + } +.hl-green, +.hl-success { + background-color: #ddf4df; + } +.hl-blue, +.hl-info { + background-color: #ddf3f5; + } +.hl-yellow, +.hl-warning { + background-color: #fff0d5; + } +.hl-red, +.hl-danger { + background-color: #ffe5e0; + } +.hl-brown, +.hl-important { + background-color: #f7ebe1; + } +.hl-purple, +.hl-special { + background-color: #f5eeff; + } +.article { + padding: 20px; + } +.article > header h1, +.article > header h2, +.article > header h3 { + margin-bottom: 20px; + line-height: 1.5; + } +.article > header > .abstract, +.article > header > dl { + padding: 10px 15px; + font-size: 12px; + color: #686868; + background-color: #f1f1f1; + } +.article > header > .abstract > p:last-child, +.article > header > dl > p:last-child { + margin-bottom: 0; + } +.article > header > dl { + margin: 0; + border-bottom: 1px solid #e9e9e9; + } +.article > header > dl.pull-right { + background-color: transparent; + border: none; + } +.article > footer { + border-top: 1px dashed #d7d7d7; + } +.article > footer > p { + padding: 10px 15px; + } +.article > .content, +.article-content { + padding: 20px 0; + font-size: 14px; + line-height: 1.78571429; + } +.article > .content h1, +.article-content h1 { + font-size: 20px; + } +.article > .content h2, +.article-content h2 { + font-size: 18px; + } +.article > .content h3, +.article-content h3 { + font-size: 16px; + } +.article > .content h4, +.article-content h4 { + margin-top: 15px; + font-size: 14px; + } +.article > .content h5, +.article-content h5 { + margin-top: 15px; + font-size: 13px; + } +.article > .content h6, +.article-content h6 { + margin-top: 15px; + font-size: 11px; + } +.article > .content img, +.article-content img { + margin: 10px 0; + } +.article > .content p > img, +.article-content p > img { + margin-right: 10px; + } +.article > .content p > img[align='right'], +.article-content p > img[align='right'] { + margin-left: 10px; + } +.article > .content dl, +.article-content dl { + padding-right: 2em; + padding-left: 2em; + } +.article > .content table, +.article-content table { + margin-bottom: 20px; + } +.article > .content table th, +.article-content table th, +.article > .content table td, +.article-content table td { + padding: 8px; + line-height: 1.53846154; + vertical-align: top; + border-bottom: 1px solid #ddd; + } +.article > .content table > thead > tr > th, +.article-content table > thead > tr > th { + vertical-align: bottom; + background-color: #f1f1f1; + border-bottom: 1px solid #ddd; + } +.article-content p { + margin-bottom: 0; + } +.article-content table { + width: 100%; + } +.article > .content table th, +.article > .content table td, +.article > .content table > thead > tr > th { + border: 1px solid #ddd; + } +body.article-content { + padding: 8px; + } +.article-condensed { + padding: 20px 0; + } +.article-condensed > header { + padding: 0 20px; + } +.article-condensed > header > .abstract, +.article-condensed > header > dl { + padding: 10px 15px; + margin: 0 -20px; + } +.article-condensed > .content, +.article-condensed > .article-content { + padding: 20px; + } +.article-condensed > .content > img, +.article-condensed > .article-content > img, +.article-condensed > .content > pre, +.article-condensed > .article-content > pre { + margin-right: -20px; + margin-left: -20px; + border-radius: 0; + } +.article-condensed > .content > pre, +.article-condensed > .article-content > pre { + border-right: none; + border-left: none; + } +.article-condensed > footer { + border-top: 1px dashed #d7d7d7; + } +.article-condensed > footer > p { + padding: 10px 15px; + } +.article-condensed > footer > .pager-justify > .previous > a { + border-left: none; + border-radius: 0; + } +.article-condensed > footer > .pager-justify > .next > a { + border-right: none; + border-radius: 0; + } +.comments > header { + border-bottom: 1px solid #e5e5e5; + } +.comments > header > .alert { + padding: 7.5px 15px; + margin-bottom: -10px; + } +.comments > header h1, +.comments > header h2, +.comments > header h3 { + padding: 10px 0; + margin: 10px 0; + } +.comments > footer { + padding-top: 10px; + } +.comments > footer > .reply-form > .avatar { + display: block; + float: left; + width: 40px; + height: 40px; + margin-top: 10px; + } +.comments > footer > .reply-form > .avatar + .form { + padding-left: 50px; + } +.comment { + padding: 10px 0; + border-bottom: 1px solid #e5e5e5; + } +.comment:before, +.comment:after { + /* 1 */ + display: table; + content: " "; + /* 2 */ + } +.comment:after { + clear: both; + } +.comment:before, +.comment:after { + /* 1 */ + display: table; + content: " "; + /* 2 */ + } +.comment:after { + clear: both; + } +.comment > .avatar, +.comment > .content { + display: block; + } +.comment > .avatar { + float: left; + width: 40px; + height: 40px; + margin-top: 10px; + } +.comment > .avatar + .content { + padding-left: 50px; + } +.comment > .content > .text { + margin-top: 5px; + } +.comment > .content > .actions { + margin-top: 4px; + } +.comment > .content > .actions > a { + display: inline-block; + color: #808080; + } +.comment > .content > .actions > a + a { + margin-left: 5px; + } +.comment:hover > .content > .actions > a { + color: #145ccd; + } +.comment > .comments-list { + padding-top: 10px; + padding-bottom: 0; + padding-left: 30px; + margin-left: 20px; + border-left: 1px dashed #e5e5e5; + } +.comment > .comments-list > .comment { + border: none; + border-top: 1px solid #e5e5e5; + } +.comment > .comments-list > .comment:last-child { + padding-bottom: 0; + } +.list { + padding: 0 15px; + } +.list > header { + padding-bottom: 10px; + border-bottom: 1px solid #e5e5e5; + } +.items .item { + padding: 10px 0; + border-bottom: 1px solid #e5e5e5; + -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: all .4s cubic-bezier(.175, .885, .32, 1); + transition: all .4s cubic-bezier(.175, .885, .32, 1); + } +.items .item-heading > h6, +.items .item-heading h5, +.items .item-heading h4, +.items .item-heading h3, +.items .item-heading h2, +.items .item-heading h1 { + margin-top: 5px; + } +.items .item-content:before, +.items .item-content:after { + /* 1 */ + display: table; + content: " "; + /* 2 */ + } +.items .item-content:after { + clear: both; + } +.items .item-content:before, +.items .item-content:after { + /* 1 */ + display: table; + content: " "; + /* 2 */ + } +.items .item-content:after { + clear: both; + } +.items .item-content > .media { + max-width: 100%; + margin: 5px 0; + } +.items .item-content > .media.pull-left { + max-width: 150px; + margin: 0; + margin-right: 8px; + } +.items .item-content > .media.pull-right { + max-width: 150px; + margin: 0; + margin-left: 8px; + } +.items .item-footer { + padding-top: 5px; + } +.items .item-footer > a { + color: #808080; + } +.items-hover .item:hover { + background-color: #f5f5f5; + } +.list-condensed { + padding: 0; + } +.list-condensed > header, +.list-condensed > footer, +.list-condensed > .items > .item { + padding-right: 15px; + padding-left: 15px; + } diff --git a/root/res/zui/css/zui.lite.min.css b/root/res/zui/css/zui.lite.min.css new file mode 100644 index 0000000..67b7bf3 --- /dev/null +++ b/root/res/zui/css/zui.lite.min.css @@ -0,0 +1,6 @@ +/*! + * ZUI: Lite edition - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + *//*! Some code copy from Bootstrap v3.0.0 by @fat and @mdo. (Copyright 2013 Twitter, Inc. Licensed under http://www.apache.org/licenses/)*//*! normalize.css v2.1.3 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden],template{display:none}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}a{background:0 0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{margin:.67em 0;font-size:2em}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}mark{color:#000;background:#ff0}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}button,input,select,textarea{margin:0;font-family:inherit;font-size:100%}button,input{line-height:normal}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}textarea{overflow:auto;vertical-align:top}table{border-spacing:0;border-collapse:collapse}.clearfix:after,.clearfix:before,.container-fixed-md:after,.container-fixed-md:before,.container-fixed-sm:after,.container-fixed-sm:before,.container-fixed-xs:after,.container-fixed-xs:before,.container-fixed:after,.container-fixed:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager-justify:after,.pager-justify:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.clearfix:after,.container-fixed-md:after,.container-fixed-sm:after,.container-fixed-xs:after,.container-fixed:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager-justify:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none}.showing{display:block}.hidden{display:none!important;visibility:hidden!important}.show{display:block!important;visibility:visible!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.affix{position:fixed}.with-padding{padding:5px 12px}.no-padding{padding:0!important}.inline-block.visible-xs,.inline.visible-xs,.visible-xs,td.visible-xs,th.visible-xs,tr.visible-xs{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}.inline.visible-xs{display:inline!important}.inline-block.visible-xs{display:inline-block!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-xs.visible-sm{display:block!important}.inline.visible-xs.visible-sm{display:inline!important}.inline-block.visible-xs.visible-sm{display:inline-block!important}tr.visible-xs.visible-sm{display:table-row!important}td.visible-xs.visible-sm,th.visible-xs.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-xs.visible-md{display:block!important}.inline.visible-xs.visible-md{display:inline!important}.inline-block.visible-xs.visible-md{display:inline-block!important}tr.visible-xs.visible-md{display:table-row!important}td.visible-xs.visible-md,th.visible-xs.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-xs.visible-lg{display:block!important}.inline.visible-xs.visible-lg{display:inline!important}.inline-block.visible-xs.visible-lg{display:inline-block!important}tr.visible-xs.visible-lg{display:table-row!important}td.visible-xs.visible-lg,th.visible-xs.visible-lg{display:table-cell!important}}.inline-block.visible-sm,.inline.visible-sm,.visible-sm,td.visible-sm,th.visible-sm,tr.visible-sm{display:none!important}@media (max-width:767px){.visible-sm.visible-xs{display:block!important}.inline.visible-sm.visible-xs{display:inline!important}.inline-block.visible-sm.visible-xs{display:inline-block!important}tr.visible-sm.visible-xs{display:table-row!important}td.visible-sm.visible-xs,th.visible-sm.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}.inline.visible-sm{display:inline!important}.inline-block.visible-sm{display:inline-block!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-sm.visible-md{display:block!important}.inline.visible-sm.visible-md{display:inline!important}.inline-block.visible-sm.visible-md{display:inline-block!important}tr.visible-sm.visible-md{display:table-row!important}td.visible-sm.visible-md,th.visible-sm.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-sm.visible-lg{display:block!important}.inline.visible-sm.visible-lg{display:inline!important}.inline-block.visible-sm.visible-lg{display:inline-block!important}tr.visible-sm.visible-lg{display:table-row!important}td.visible-sm.visible-lg,th.visible-sm.visible-lg{display:table-cell!important}}.inline-block.visible-md,.inline.visible-md,.visible-md,td.visible-md,th.visible-md,tr.visible-md{display:none!important}@media (max-width:767px){.visible-md.visible-xs{display:block!important}.inline.visible-md.visible-xs{display:inline!important}.inline-block.visible-md.visible-xs{display:inline-block!important}tr.visible-md.visible-xs{display:table-row!important}td.visible-md.visible-xs,th.visible-md.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-md.visible-sm{display:block!important}.inline.visible-md.visible-sm{display:inline!important}.inline-block.visible-md.visible-sm{display:inline-block!important}tr.visible-md.visible-sm{display:table-row!important}td.visible-md.visible-sm,th.visible-md.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}.inline.visible-md{display:inline!important}.inline-block.visible-md{display:inline-block!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-md.visible-lg{display:block!important}.inline.visible-md.visible-lg{display:inline!important}.inline-block.visible-md.visible-lg{display:inline-block!important}tr.visible-md.visible-lg{display:table-row!important}td.visible-md.visible-lg,th.visible-md.visible-lg{display:table-cell!important}}.inline-block.visible-lg,.inline.visible-lg,.visible-lg,td.visible-lg,th.visible-lg,tr.visible-lg{display:none!important}@media (max-width:767px){.visible-lg.visible-xs{display:block!important}.inline.visible-lg.visible-xs{display:inline!important}.inline-block.visible-lg.visible-xs{display:inline-block!important}tr.visible-lg.visible-xs{display:table-row!important}td.visible-lg.visible-xs,th.visible-lg.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-lg.visible-sm{display:block!important}.inline.visible-lg.visible-sm{display:inline!important}.inline-block.visible-lg.visible-sm{display:inline-block!important}tr.visible-lg.visible-sm{display:table-row!important}td.visible-lg.visible-sm,th.visible-lg.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-lg.visible-md{display:block!important}.inline.visible-lg.visible-md{display:inline!important}.inline-block.visible-lg.visible-md{display:inline-block!important}tr.visible-lg.visible-md{display:table-row!important}td.visible-lg.visible-md,th.visible-lg.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-lg{display:block!important}.inline.visible-lg{display:inline!important}.inline-block.visible-lg{display:inline-block!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}.hidden-xs{display:block!important}.inline.hidden-xs{display:inline!important}.inline-block.hidden-xs{display:inline-block!important}tr.hidden-xs{display:table-row!important}td.hidden-xs,th.hidden-xs{display:table-cell!important}@media (max-width:767px){.hidden-xs,.inline-block.hidden-xs,.inline.hidden-xs,td.hidden-xs,th.hidden-xs,tr.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-xs.hidden-sm,.inline-block.hidden-xs.hidden-sm,.inline.hidden-xs.hidden-sm,td.hidden-xs.hidden-sm,th.hidden-xs.hidden-sm,tr.hidden-xs.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-xs.hidden-md,.inline-block.hidden-xs.hidden-md,.inline.hidden-xs.hidden-md,td.hidden-xs.hidden-md,th.hidden-xs.hidden-md,tr.hidden-xs.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-xs.hidden-lg,.inline-block.hidden-xs.hidden-lg,.inline.hidden-xs.hidden-lg,td.hidden-xs.hidden-lg,th.hidden-xs.hidden-lg,tr.hidden-xs.hidden-lg{display:none!important}}.hidden-sm{display:block!important}.inline.hidden-sm{display:inline!important}.inline-block.hidden-sm{display:inline-block!important}tr.hidden-sm{display:table-row!important}td.hidden-sm,th.hidden-sm{display:table-cell!important}@media (max-width:767px){.hidden-sm.hidden-xs,.inline-block.hidden-sm.hidden-xs,.inline.hidden-sm.hidden-xs,td.hidden-sm.hidden-xs,th.hidden-sm.hidden-xs,tr.hidden-sm.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm,.inline-block.hidden-sm,.inline.hidden-sm,td.hidden-sm,th.hidden-sm,tr.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-sm.hidden-md,.inline-block.hidden-sm.hidden-md,.inline.hidden-sm.hidden-md,td.hidden-sm.hidden-md,th.hidden-sm.hidden-md,tr.hidden-sm.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-sm.hidden-lg,.inline-block.hidden-sm.hidden-lg,.inline.hidden-sm.hidden-lg,td.hidden-sm.hidden-lg,th.hidden-sm.hidden-lg,tr.hidden-sm.hidden-lg{display:none!important}}.hidden-md{display:block!important}.inline.hidden-md{display:inline!important}.inline-block.hidden-md{display:inline-block!important}tr.hidden-md{display:table-row!important}td.hidden-md,th.hidden-md{display:table-cell!important}@media (max-width:767px){.hidden-md.hidden-xs,.inline-block.hidden-md.hidden-xs,.inline.hidden-md.hidden-xs,td.hidden-md.hidden-xs,th.hidden-md.hidden-xs,tr.hidden-md.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-md.hidden-sm,.inline-block.hidden-md.hidden-sm,.inline.hidden-md.hidden-sm,td.hidden-md.hidden-sm,th.hidden-md.hidden-sm,tr.hidden-md.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md,.inline-block.hidden-md,.inline.hidden-md,td.hidden-md,th.hidden-md,tr.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-md.hidden-lg,.inline-block.hidden-md.hidden-lg,.inline.hidden-md.hidden-lg,td.hidden-md.hidden-lg,th.hidden-md.hidden-lg,tr.hidden-md.hidden-lg{display:none!important}}.hidden-lg{display:block!important}.inline.hidden-lg{display:inline!important}.inline-block.hidden-lg{display:inline-block!important}tr.hidden-lg{display:table-row!important}td.hidden-lg,th.hidden-lg{display:table-cell!important}@media (max-width:767px){.hidden-lg.hidden-xs,.inline-block.hidden-lg.hidden-xs,.inline.hidden-lg.hidden-xs,td.hidden-lg.hidden-xs,th.hidden-lg.hidden-xs,tr.hidden-lg.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-lg.hidden-sm,.inline-block.hidden-lg.hidden-sm,.inline.hidden-lg.hidden-sm,td.hidden-lg.hidden-sm,th.hidden-lg.hidden-sm,tr.hidden-lg.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-lg.hidden-md,.inline-block.hidden-lg.hidden-md,.inline.hidden-lg.hidden-md,td.hidden-lg.hidden-md,th.hidden-lg.hidden-md,tr.hidden-lg.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg,.inline-block.hidden-lg,.inline.hidden-lg,td.hidden-lg,th.hidden-lg,tr.hidden-lg{display:none!important}}.inline-block.visible-print,.inline.visible-print,.visible-print,td.visible-print,th.visible-print,tr.visible-print{display:none!important}@media print{.visible-print{display:block!important}.inline.visible-print{display:inline!important}.inline-block.visible-print{display:inline-block!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}.hidden-print,.inline-block.hidden-print,.inline.hidden-print,td.hidden-print,th.hidden-print,tr.hidden-print{display:none!important}}*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Tahoma,Arial,'Microsoft Yahei','PingFang SC','Hiragino Sans GB','WenQuanYi Micro Hei',sans-serif;font-size:13px;line-height:1.53846154;color:#353535;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#145ccd;text-decoration:none;-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}a:focus,a:hover{color:#0d3d88;text-decoration:underline}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a.disabled,a.disabled:focus,a.disabled:hover,a[disabled],a[disabled]:focus,a[disabled]:hover{color:#aaa;text-decoration:none;cursor:default}audio,canvas,img,video{max-width:100%;vertical-align:middle}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}::-moz-selection{text-shadow:none;background:#b3d4fc}::selection{text-shadow:none;background:#b3d4fc}fieldset{padding:0;margin:0;border:0}textarea{resize:vertical}ol,ul{padding-left:20px}.container,.container-fixed,.container-fixed-md,.container-fixed-sm,.container-fixed-xs,.container-fluid{padding-right:10px;padding-left:10px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{max-width:740px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1160px}}.container-fixed{width:1160px}.container-fixed-md{width:960px}.container-fixed-sm{width:740px}.container-fixed-xs{width:440px}.row{margin-right:-10px;margin-left:-10px}.col,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:10px;padding-left:10px}.col,.col-xs,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-1{width:8.33333333%}.col-xs-2{width:16.66666667%}.col-xs-3{width:25%}.col-xs-4{width:33.33333333%}.col-xs-5{width:41.66666667%}.col-xs-6{width:50%}.col-xs-7{width:58.33333333%}.col-xs-8{width:66.66666667%}.col-xs-9{width:75%}.col-xs-10{width:83.33333333%}.col-xs-11{width:91.66666667%}.col-xs-12{width:100%}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-1{width:8.33333333%}.col-sm-2{width:16.66666667%}.col-sm-3{width:25%}.col-sm-4{width:33.33333333%}.col-sm-5{width:41.66666667%}.col-sm-6{width:50%}.col-sm-7{width:58.33333333%}.col-sm-8{width:66.66666667%}.col-sm-9{width:75%}.col-sm-10{width:83.33333333%}.col-sm-11{width:91.66666667%}.col-sm-12{width:100%}.col-sm-push-1{left:8.33333333%}.col-sm-push-2{left:16.66666667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333333%}.col-sm-push-5{left:41.66666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.33333333%}.col-sm-push-8{left:66.66666667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333333%}.col-sm-push-11{left:91.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-11{right:91.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-11{margin-left:91.66666667%}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-1{width:8.33333333%}.col-md-2{width:16.66666667%}.col-md-3{width:25%}.col-md-4{width:33.33333333%}.col-md-5{width:41.66666667%}.col-md-6{width:50%}.col-md-7{width:58.33333333%}.col-md-8{width:66.66666667%}.col-md-9{width:75%}.col-md-10{width:83.33333333%}.col-md-11{width:91.66666667%}.col-md-12{width:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.33333333%}.col-md-push-2{left:16.66666667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333333%}.col-md-push-5{left:41.66666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.33333333%}.col-md-push-8{left:66.66666667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333333%}.col-md-push-11{left:91.66666667%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.33333333%}.col-md-pull-2{right:16.66666667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333333%}.col-md-pull-5{right:41.66666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.33333333%}.col-md-pull-8{right:66.66666667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333333%}.col-md-pull-11{right:91.66666667%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-11{margin-left:91.66666667%}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-1{width:8.33333333%}.col-lg-2{width:16.66666667%}.col-lg-3{width:25%}.col-lg-4{width:33.33333333%}.col-lg-5{width:41.66666667%}.col-lg-6{width:50%}.col-lg-7{width:58.33333333%}.col-lg-8{width:66.66666667%}.col-lg-9{width:75%}.col-lg-10{width:83.33333333%}.col-lg-11{width:91.66666667%}.col-lg-12{width:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.33333333%}.col-lg-push-2{left:16.66666667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333333%}.col-lg-push-5{left:41.66666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.33333333%}.col-lg-push-8{left:66.66666667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333333%}.col-lg-push-11{left:91.66666667%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-11{right:91.66666667%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-11{margin-left:91.66666667%}}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:14px;line-height:1.4}@media (min-width:768px){.lead{font-size:19.5px}}.small,small{font-size:85%}cite{font-style:normal}.text-gray,.text-muted{color:grey}.text-gray a,.text-muted a{color:#737373}.text-gray a:active,.text-gray a:hover,.text-muted a:active,.text-muted a:hover{color:#145ccd}.text-primary{color:#3280fc}.text-warning,.text-yellow{color:#f1a325}.text-danger,.text-red{color:#ea644a}.text-green,.text-success{color:#38b03f}.text-blue,.text-info{color:#03b8cf}.text-brown,.text-important{color:#bd7b46}.text-purple,.text-special{color:#8666b8}.text-link{color:#353535}.text-link:active,.text-link:hover{color:#145ccd}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.nobr,.text-nowrap{overflow:hidden;white-space:nowrap}.text-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}dl{margin-bottom:20px}dd,dt{line-height:1.53846154}dt{font-weight:700}dd{margin-left:0}.dl-inline:after,.dl-inline:before{display:table;content:" "}.dl-inline:after{clear:both}.dl-inline:after,.dl-inline:before{display:table;content:" "}.dl-inline:after{clear:both}.dl-inline dt{display:inline-block}.dl-inline dd{display:inline-block;padding-right:1em}.dl-inline dd:last-child{padding-right:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}blockquote{padding:10px 20px;margin:0 0 20px;font-size:16.25px;border-left:5px solid #e5e5e5}blockquote ol,blockquote p,blockquote ul{font-weight:300}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote small{display:block;line-height:1.53846154;color:grey}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #e5e5e5;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}.ol-pd-2{padding-left:40px}.ol-pd-3{padding-left:60px}.ol-pd-4{padding-left:80px}.header-dividing,.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #e5e5e5}h1,h2,h3,h4,h5,h6{font-family:"Helvetica Neue",Helvetica,Tahoma,Arial,'Microsoft Yahei','PingFang SC','Hiragino Sans GB','WenQuanYi Micro Hei',sans-serif;font-weight:700;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:400;line-height:1;color:grey}h1,h2,h3{margin-top:20px;margin-bottom:10px}h1 small,h2 small,h3 small{font-size:65%}h4,h5,h6{margin-top:10px;margin-bottom:10px}h4 small,h5 small,h6 small{font-size:75%}h1{font-size:26px}h2{font-size:20px}h3{font-size:16px}h4{font-size:14px}h5{font-size:13px}h6{font-size:12px}.btn{display:inline-block;padding:5px 12px;margin-bottom:0;font-size:13px;font-weight:400;line-height:1.53846154;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;border-radius:4px;-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:focus,.btn:hover{color:#353535;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn{color:#353535;text-shadow:0 1px 0 #fff;background-color:#f2f2f2;border-color:#bfbfbf}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#353535;background-color:#dedede;border-color:#a1a1a1;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#ccc;background-image:none;border-color:#a6a6a6;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#f2f2f2;border-color:#bfbfbf}.btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.2);background-color:#3280fc;border-color:#1970fc}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#0a67fb;border-color:#0354d4;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#0358de;background-image:none;border-color:#0358de;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#3280fc;border-color:#1970fc}.btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.2);background-color:#f1a325;border-color:#ed980f}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#df8f0e;border-color:#b4730c;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#bd7a0c;background-image:none;border-color:#bd7a0c;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f1a325;border-color:#ed980f}.btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.2);background-color:#ea644a;border-color:#e75033}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#e64525;border-color:#c63317;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#cf3618;background-image:none;border-color:#cf3618;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#ea644a;border-color:#e75033}.btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.2);background-color:#38b03f;border-color:#329d38}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#2e9134;border-color:#236e27;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#26762a;background-image:none;border-color:#26762a;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#38b03f;border-color:#329d38}.btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.2);background-color:#03b8cf;border-color:#03a2b6}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#fff;background-color:#0294a7;border-color:#026c7a;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#027584;background-image:none;border-color:#027584;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#03b8cf;border-color:#03a2b6}.btn-link{font-weight:400;color:#145ccd;text-shadow:none;cursor:pointer;background:0 0;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover,.btn-link[disabled],fieldset[disabled] .btn-link{border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link:focus,.btn-link:hover{color:#0d3d88}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#ddd;text-decoration:none}.btn-lg{padding:10px 16px;font-size:17px;line-height:1.25;border-radius:4px}.btn-mini,.btn-sm,.btn-xs{padding:2px 8px;font-size:12px;line-height:1.5;border-radius:4px}.btn-mini,.btn-xs{padding:1px 5px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #e5e5e5}hr.divider-sm{margin-top:10px;margin-bottom:10px}hr.divider{margin:0}.label{display:inline;padding:.2em .6em .2em;font-size:75%;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:grey;border-radius:.25em}.label[href]:focus,.label[href]:hover{color:#fff;background-color:#666}.label.label-circle{color:grey;background:0 0;border:1px solid grey}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.label-badge{display:inline-block;min-width:18px;padding:3px 7px;font-size:12px;line-height:1;border-radius:9px}.label-dot{display:inline-block;width:10px;height:10px;padding:0;line-height:13px;text-indent:-9999em;border-radius:5px}.label-dot:empty{display:inline-block}.label-primary{background-color:#3280fc}.label-primary[href]:focus,.label-primary[href]:hover{color:#fff;background-color:#0462f7}.label-primary.label-circle{color:#3280fc;background:0 0;border:1px solid #3280fc}.label-success{background-color:#38b03f}.label-success[href]:focus,.label-success[href]:hover{color:#fff;background-color:#2c8931}.label-success.label-circle{color:#38b03f;background:0 0;border:1px solid #38b03f}.label-info{background-color:#03b8cf}.label-info[href]:focus,.label-info[href]:hover{color:#fff;background-color:#028b9d}.label-info.label-circle{color:#03b8cf;background:0 0;border:1px solid #03b8cf}.label-warning{background-color:#f1a325}.label-warning[href]:focus,.label-warning[href]:hover{color:#fff;background-color:#d5890e}.label-warning.label-circle{color:#f1a325;background:0 0;border:1px solid #f1a325}.label-danger{background-color:#ea644a}.label-danger[href]:focus,.label-danger[href]:hover{color:#fff;background-color:#e53d1c}.label-danger.label-circle{color:#ea644a;background:0 0;border:1px solid #ea644a}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:grey}@font-face{font-family:ZenIcon;font-style:normal;font-weight:400;src:url(../fonts/zenicon.eot?v=2.2.0);src:url(../fonts/zenicon.eot?#iefix&v=2.2.0) format('embedded-opentype'),url(../fonts/zenicon.woff?v=2.2.0) format('woff'),url(../fonts/zenicon.ttf?v=2.2.0) format('truetype'),url(../fonts/zenicon.svg#regular?v=2.2.0) format('svg')}.icon,[class*=" icon-"],[class^=icon-]{font-family:ZenIcon;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-transform:none;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon:before{display:inline-block;min-width:14px;text-align:center}a .icon,a [class*=" icon-"],a [class^=icon-]{display:inline}.icon-lg:before{font-size:1.33333333em;vertical-align:-10%}.icon-2x{font-size:28px}.icon-3x{font-size:42px}.icon-4x{font-size:56px}.icon-5x{font-size:70px}.icon-spin{display:inline-block;-webkit-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear}a .icon-spin{display:inline-block;text-decoration:none}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0);transform:rotate(0)}100%{-o-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spin{0%{-webkit-transform:rotate(0);-o-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);-o-transform:rotate(359deg);transform:rotate(359deg)}}.icon-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.icon-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.icon-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.icon-flip-horizontal{-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);-o-transform:scale(-1,1);transform:scale(-1,1)}.icon-flip-vertical{-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);-o-transform:scale(1,-1);transform:scale(1,-1)}.icon.icon-flip-horizontal,.icon.icon-flip-vertical,.icon.icon-rotate-180,.icon.icon-rotate-270,.icon.icon-rotate-90{display:inline-block}.icon-resize:before{content:'\e667'}.icon-expand-full:before{content:'\e6a3'}.icon-arrows-alt:before{content:'\e6a3'}.icon-fullscreen:before{content:'\e6a3'}.icon-collapse-full:before{content:'\e682'}.icon-yinyang:before{content:'\e687'}.icon-taiji:before{content:'\e687'}.icon-window:before{content:'\e68e'}.icon-window-alt:before{content:'\e68f'}.icon-carousel:before{content:'\e6b0'}.icon-spinner-snake:before{content:'\e97b'}.icon-spinner-indicator:before{content:'\e97c'}.icon-check-board:before{content:'\e9b8'}.icon-bar-chart:before{content:'\f080'}.icon-bar-chart-o:before{content:'\f080'}.icon-github:before{content:'\f09b'}.icon-dot-circle:before{content:'\f192'}.icon-dot-circle-o:before{content:'\f192'}.icon-cube-alt:before{content:'\f1b2'}.icon-cubes:before{content:'\f1b3'}.icon-file-pdf:before{content:'\f1c1'}.icon-file-word:before{content:'\f1c2'}.icon-file-excel:before{content:'\f1c3'}.icon-file-powerpoint:before{content:'\f1c4'}.icon-file-image:before{content:'\f1c5'}.icon-file-photo:before{content:'\f1c5'}.icon-file-picture:before{content:'\f1c5'}.icon-file-archive:before{content:'\f1c6'}.icon-file-zip:before{content:'\f1c6'}.icon-file-audio:before{content:'\f1c7'}.icon-file-sound:before{content:'\f1c7'}.icon-file-movie:before{content:'\f1c8'}.icon-file-video:before{content:'\f1c8'}.icon-file-code:before{content:'\f1c9'}.icon-circle-o-notch:before{content:'\f1ce'}.icon-chanzhi:before{content:'\e906'}.icon-chanzhi-pro:before{content:'\e905'}.icon-zsite:before{content:'\e904'}.icon-zsite-pro:before{content:'\e903'}.icon-qq:before{content:'\f600'}.icon-wechat:before{content:'\f1d7'}.icon-weixin:before{content:'\f1d7'}.icon-history:before{content:'\f1da'}.icon-circle-thin:before{content:'\f1db'}.icon-sliders:before{content:'\f1de'}.icon-newspaper-o:before{content:'\f1ea'}.icon-calculator:before{content:'\f1ec'}.icon-paint-brush:before{content:'\f1fc'}.icon-area-chart:before{content:'\f1fe'}.icon-pie-chart:before{content:'\f200'}.icon-line-chart:before{content:'\f201'}.icon-toggle-off:before{content:'\f204'}.icon-toggle-on:before{content:'\f205'}.icon-diamond:before{content:'\f219'}.icon-venus:before{content:'\f221'}.icon-mars:before{content:'\f222'}.icon-server:before{content:'\f233'}.icon-music:before{content:'\e602'}.icon-search:before{content:'\e603'}.icon-envelope:before{content:'\e604'}.icon-heart:before{content:'\e605'}.icon-star:before{content:'\e606'}.icon-star-empty:before{content:'\e607'}.icon-user:before{content:'\e608'}.icon-film:before{content:'\e609'}.icon-th-large:before{content:'\e60a'}.icon-th:before{content:'\e60b'}.icon-th-list:before{content:'\e60c'}.icon-ok:before{content:'\e60d'}.icon-check:before{content:'\e60d'}.icon-remove:before{content:'\d7'}.icon-times:before{content:'\d7'}.icon-zoom-in:before{content:'\e60f'}.icon-zoom-out:before{content:'\e610'}.icon-off:before{content:'\e611'}.icon-cog:before{content:'\e613'}.icon-trash:before{content:'\e614'}.icon-home:before{content:'\e615'}.icon-file-o:before{content:'\e616'}.icon-file-alt:before{content:'\e616'}.icon-time:before{content:'\e617'}.icon-download-alt:before{content:'\e618'}.icon-download:before{content:'\e619'}.icon-upload:before{content:'\e61a'}.icon-inbox:before{content:'\e61b'}.icon-play-circle:before{content:'\e61c'}.icon-repeat:before{content:'\e61d'}.icon-refresh:before{content:'\e61e'}.icon-list-alt:before{content:'\e61f'}.icon-lock:before{content:'\e620'}.icon-flag:before{content:'\e621'}.icon-headphones:before{content:'\e622'}.icon-volume-off:before{content:'\e623'}.icon-volume-up:before{content:'\e625'}.icon-qrcode:before{content:'\e626'}.icon-barcode:before{content:'\e627'}.icon-tag:before{content:'\e628'}.icon-tags:before{content:'\e629'}.icon-book:before{content:'\e62a'}.icon-bookmark:before{content:'\e62b'}.icon-print:before{content:'\e62c'}.icon-camera:before{content:'\e62d'}.icon-font:before{content:'\e62e'}.icon-bold:before{content:'\e62f'}.icon-italic:before{content:'\f033'}.icon-header:before{content:'\f1dc'}.icon-underline:before{content:'\f0cd'}.icon-strikethrough:before{content:'\f0cc'}.icon-eraser:before{content:'\f12d'}.icon-align-justify:before{content:'\e636'}.icon-list:before{content:'\e637'}.icon-picture:before{content:'\e63b'}.icon-pencil:before{content:'\e63c'}.icon-map-marker:before{content:'\e63d'}.icon-adjust:before{content:'\e63e'}.icon-tint:before{content:'\e63f'}.icon-edit:before{content:'\e640'}.icon-share:before{content:'\e641'}.icon-checked:before{content:'\e642'}.icon-move:before{content:'\e643'}.icon-arrows:before{content:'\e643'}.icon-step-backward:before{content:'\e644'}.icon-fast-backward:before{content:'\e645'}.icon-backward:before{content:'\e646'}.icon-play:before{content:'\e647'}.icon-pause:before{content:'\e648'}.icon-stop:before{content:'\e649'}.icon-forward:before{content:'\e64a'}.icon-fast-forward:before{content:'\e64b'}.icon-step-forward:before{content:'\e64c'}.icon-eject:before{content:'\e64d'}.icon-chevron-left:before{content:'\e64e'}.icon-chevron-right:before{content:'\e64f'}.icon-plus-sign:before{content:'\e650'}.icon-minus-sign:before{content:'\e651'}.icon-remove-sign:before{content:'\e652'}.icon-ok-sign:before{content:'\e653'}.icon-check-circle:before{content:'\e653'}.icon-question-sign:before{content:'\e654'}.icon-info-sign:before{content:'\e655'}.icon-remove-circle:before{content:'\e657'}.icon-ok-circle:before{content:'\e658'}.icon-check-circle-o:before{content:'\e658'}.icon-ban-circle:before{content:'\e659'}.icon-arrow-left:before{content:'\e65a'}.icon-arrow-right:before{content:'\e65b'}.icon-arrow-up:before{content:'\e65c'}.icon-arrow-down:before{content:'\e65d'}.icon-share-alt:before{content:'\e65e'}.icon-resize-full:before{content:'\e65f'}.icon-resize-small:before{content:'\e660'}.icon-plus:before{content:'\e661'}.icon-minus:before{content:'\e662'}.icon-asterisk:before{content:'\e663'}.icon-exclamation-sign:before{content:'\e664'}.icon-gift:before{content:'\e665'}.icon-leaf:before{content:'\e666'}.icon-eye-open:before{content:'\e668'}.icon-eye-close:before{content:'\e669'}.icon-warning-sign:before{content:'\e66a'}.icon-plane:before{content:'\e66b'}.icon-calendar:before{content:'\e66c'}.icon-random:before{content:'\e66d'}.icon-comment:before{content:'\e66e'}.icon-chevron-up:before{content:'\e670'}.icon-chevron-down:before{content:'\e671'}.icon-shopping-cart:before{content:'\e673'}.icon-folder-close:before{content:'\e674'}.icon-folder-open:before{content:'\e675'}.icon-resize-v:before{content:'\e676'}.icon-resize-h:before{content:'\e677'}.icon-bar-chart-alt:before{content:'\e678'}.icon-camera-retro:before{content:'\e679'}.icon-key:before{content:'\e67a'}.icon-cogs:before{content:'\e67b'}.icon-comments:before{content:'\e67c'}.icon-thumbs-o-up:before{content:'\e67d'}.icon-thumbs-o-down:before{content:'\e67e'}.icon-star-half:before{content:'\e67f'}.icon-heart-empty:before{content:'\e680'}.icon-signout:before{content:'\e681'}.icon-pushpin:before{content:'\e683'}.icon-external-link:before{content:'\e684'}.icon-signin:before{content:'\e685'}.icon-trophy:before{content:'\e686'}.icon-upload-alt:before{content:'\e688'}.icon-lemon:before{content:'\e689'}.icon-phone:before{content:'\e68a'}.icon-check-empty:before{content:'\e68b'}.icon-bookmark-empty:before{content:'\e68c'}.icon-phone-sign:before{content:'\e68d'}.icon-credit:before{content:'\e690'}.icon-rss:before{content:'\e691'}.icon-hdd:before{content:'\e692'}.icon-bullhorn:before{content:'\e693'}.icon-bell:before{content:'\e694'}.icon-certificate:before{content:'\e695'}.icon-hand-right:before{content:'\e696'}.icon-hand-left:before{content:'\e697'}.icon-hand-up:before{content:'\e698'}.icon-hand-down:before{content:'\e699'}.icon-circle-arrow-left:before{content:'\e69a'}.icon-circle-arrow-right:before{content:'\e69b'}.icon-circle-arrow-up:before{content:'\e69c'}.icon-circle-arrow-down:before{content:'\e69d'}.icon-globe:before{content:'\e69e'}.icon-wrench:before{content:'\e69f'}.icon-tasks:before{content:'\e6a0'}.icon-filter:before{content:'\e6a1'}.icon-group:before{content:'\e6a4'}.icon-link:before{content:'\e6a5'}.icon-cloud:before{content:'\e6a6'}.icon-beaker:before{content:'\e6a7'}.icon-cut:before{content:'\e6a8'}.icon-copy:before{content:'\e6a9'}.icon-paper-clip:before{content:'\e6aa'}.icon-save:before{content:'\e6ab'}.icon-sign-blank:before{content:'\e6ac'}.icon-bars:before{content:'\e6ad'}.icon-reorder:before{content:'\e6ad'}.icon-list-ul:before{content:'\e6ae'}.icon-list-ol:before{content:'\e6af'}.icon-table:before{content:'\e6b2'}.icon-magic:before{content:'\e6b3'}.icon-caret-down:before{content:'\e6b8'}.icon-caret-up:before{content:'\e6b9'}.icon-caret-left:before{content:'\e6ba'}.icon-caret-right:before{content:'\e6bb'}.icon-columns:before{content:'\e6bc'}.icon-sort:before{content:'\e6bd'}.icon-sort-down:before{content:'\e6be'}.icon-sort-up:before{content:'\e6bf'}.icon-envelope-alt:before{content:'\e6c0'}.icon-undo:before{content:'\e6c1'}.icon-dashboard:before{content:'\e6c3'}.icon-comment-alt:before{content:'\e6c4'}.icon-comments-alt:before{content:'\e6c5'}.icon-bolt:before{content:'\e6c6'}.icon-sitemap:before{content:'\e6c7'}.icon-umbrella:before{content:'\e6c8'}.icon-paste:before{content:'\e6c9'}.icon-lightbulb:before{content:'\e6ca'}.icon-exchange:before{content:'\e6cb'}.icon-cloud-download:before{content:'\e6cc'}.icon-cloud-upload:before{content:'\e6cd'}.icon-bell-alt:before{content:'\e6d1'}.icon-coffee:before{content:'\e6d2'}.icon-file-text-o:before{content:'\e6d4'}.icon-file-text-alt:before{content:'\e6d4'}.icon-building:before{content:'\e6d5'}.icon-double-angle-left:before{content:'\e6dc'}.icon-double-angle-right:before{content:'\e6dd'}.icon-double-angle-up:before{content:'\e6de'}.icon-double-angle-down:before{content:'\e6df'}.icon-angle-left:before{content:'\e6e0'}.icon-angle-right:before{content:'\e6e1'}.icon-angle-up:before{content:'\e6e2'}.icon-angle-down:before{content:'\e6e3'}.icon-desktop:before{content:'\e6e4'}.icon-laptop:before{content:'\e6e5'}.icon-tablet:before{content:'\e6e6'}.icon-mobile:before{content:'\e6e7'}.icon-circle-blank:before{content:'\e6e8'}.icon-quote-left:before{content:'\e6e9'}.icon-quote-right:before{content:'\e6ea'}.icon-spinner:before{content:'\e6eb'}.icon-circle:before{content:'\e6ec'}.icon-reply:before{content:'\e6ed'}.icon-folder-close-alt:before{content:'\e6ef'}.icon-folder-open-alt:before{content:'\e6f0'}.icon-expand-alt:before{content:'\e6f1'}.icon-collapse-alt:before{content:'\e6f2'}.icon-smile:before{content:'\e6f3'}.icon-frown:before{content:'\e6f4'}.icon-meh:before{content:'\e6f5'}.icon-gamepad:before{content:'\e6f6'}.icon-keyboard:before{content:'\e6f7'}.icon-flag-alt:before{content:'\e6f8'}.icon-flag-checkered:before{content:'\e6f9'}.icon-terminal:before{content:'\e6fa'}.icon-code:before{content:'\e6fb'}.icon-reply-all:before{content:'\e6fc'}.icon-star-half-full:before{content:'\e6fd'}.icon-location-arrow:before{content:'\e6fe'}.icon-crop:before{content:'\e6ff'}.icon-code-fork:before{content:'\e700'}.icon-unlink:before{content:'\e701'}.icon-question:before{content:'\e702'}.icon-info:before{content:'\e703'}.icon-shield:before{content:'\e70b'}.icon-calendar-empty:before{content:'\e70c'}.icon-rocket:before{content:'\e70e'}.icon-chevron-sign-left:before{content:'\e70f'}.icon-chevron-sign-right:before{content:'\e710'}.icon-chevron-sign-up:before{content:'\e711'}.icon-chevron-sign-down:before{content:'\e712'}.icon-html5:before{content:'\e713'}.icon-anchor:before{content:'\e714'}.icon-unlock-alt:before{content:'\e715'}.icon-bullseye:before{content:'\e716'}.icon-ellipsis-h:before{content:'\e717'}.icon-ellipsis-v:before{content:'\e718'}.icon-rss-sign:before{content:'\e719'}.icon-play-sign:before{content:'\e71a'}.icon-minus-sign-alt:before{content:'\e71c'}.icon-plus-sign-alt:before{content:'\f0fe'}.icon-check-minus:before{content:'\e71d'}.icon-check-plus:before{content:'\f196'}.icon-level-up:before{content:'\e71e'}.icon-level-down:before{content:'\e71f'}.icon-check-sign:before{content:'\e720'}.icon-edit-sign:before{content:'\e721'}.icon-external-link-sign:before{content:'\e722'}.icon-share-sign:before{content:'\e723'}.icon-compass:before{content:'\e724'}.icon-collapse:before{content:'\e725'}.icon-collapse-top:before{content:'\e726'}.icon-expand:before{content:'\e727'}.icon-dollar:before{content:'\e728'}.icon-yen:before{content:'\e729'}.icon-file:before{content:'\e72b'}.icon-file-text:before{content:'\e72c'}.icon-sort-by-alphabet:before{content:'\e72d'}.icon-sort-by-alphabet-alt:before{content:'\e72e'}.icon-sort-by-attributes:before{content:'\e72f'}.icon-sort-by-attributes-alt:before{content:'\e730'}.icon-sort-by-order:before{content:'\e731'}.icon-sort-by-order-alt:before{content:'\e732'}.icon-thumbs-up:before{content:'\e733'}.icon-thumbs-down:before{content:'\e734'}.icon-long-arrow-down:before{content:'\e736'}.icon-long-arrow-up:before{content:'\e737'}.icon-long-arrow-left:before{content:'\e738'}.icon-long-arrow-right:before{content:'\e739'}.icon-apple:before{content:'\e73a'}.icon-windows:before{content:'\e73b'}.icon-android:before{content:'\e73c'}.icon-linux:before{content:'\e73d'}.icon-sun:before{content:'\e742'}.icon-moon:before{content:'\e743'}.icon-archive:before{content:'\e744'}.icon-bug:before{content:'\e745'}.icon-alipay:before,.icon-zhifubao:before{content:'\e901'}.icon-alipay-square:before,.icon-zhifubao-square:before{content:'\e900'}.icon-taobao:before{content:'\e902'}.icon-weibo:before{content:'\e746'}.icon-renren:before{content:'\e747'}.icon-chrome:before{content:'\e76c'}.icon-firefox:before{content:'\e76d'}.icon-ie:before{content:'\e76e'}.icon-opera:before{content:'\e76f'}.icon-safari:before{content:'\e770'}.icon-node:before{content:'\e76a'}.icon-layout:before{content:'\e768'}.icon-usecase:before{content:'\e74a'}.icon-stack:before{content:'\e769'}.icon-branch:before{content:'\e74b'}.icon-chat:before{content:'\e74c'}.icon-chat-line:before{content:'\e74f'}.icon-comment-line:before{content:'\e74f'}.icon-chat-dot:before{content:'\e750'}.icon-cube:before{content:'\e751'}.icon-database:before{content:'\f1c0'}.icon-align-left:before{content:'\e633'}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:19.5px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:5px 0 0;margin-top:0\9;line-height:normal}input[type=file]{display:block}select[multiple],select[size]{height:auto}select:-moz-focusring{color:transparent;text-shadow:0 0 0 #000}select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}.form-control::-webkit-input-placeholder{color:grey}.form-control::-moz-placeholder{color:grey}.form-control:-ms-input-placeholder{color:grey}.form-control::placeholder{color:grey}.form-control{display:block;width:100%;height:32px;padding:5px 8px;font-size:13px;line-height:1.53846154;color:#222;vertical-align:middle;background-color:#fff;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s,-webkit-box-shadow ease-in-out .15s}.form-control.focus,.form-control:focus{border-color:#145ccd;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(20,92,205,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(20,92,205,.6)}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#e5e5e5}.form-control[readonly]{cursor:default}textarea.form-control{height:auto}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:3px;margin-top:4px\9;margin-left:-20px}.os-android .checkbox input[type=checkbox],.os-android .checkbox-inline input[type=checkbox],.os-android .radio input[type=radio],.os-android .radio-inline input[type=radio]{margin-top:0}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.input-sm{height:24px;padding:2px 8px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:24px;line-height:24px}textarea.input-sm{height:auto}.input-lg{height:43px;padding:10px 16px;font-size:17px;line-height:1.25;border-radius:6px}select.input-lg{height:43px;line-height:43px}textarea.input-lg{height:auto}.has-warning .help-block,.has-warning>label{color:#f1a325}.has-warning .form-control{border-color:#f1a325;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#d5890e;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #f7cb85;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #f7cb85}.has-warning .input-group-addon{color:#f1a325;background-color:#fff0d5;border-color:#f1a325}.has-error .help-block,.has-error>label{color:#ea644a}.has-error .form-control{border-color:#ea644a;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#e53d1c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #f5b2a5;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #f5b2a5}.has-error .input-group-addon{color:#ea644a;background-color:#ffe5e0;border-color:#ea644a}.has-success .help-block,.has-success>label{color:#38b03f}.has-success .form-control{border-color:#38b03f;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2c8931;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #79d57f;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #79d57f}.has-success .input-group-addon{color:#38b03f;background-color:#ddf4df;border-color:#38b03f}.form-control-static{min-height:33px;padding-top:6px;padding-bottom:6px;margin-bottom:0}.help-block{display:block;margin:5px 0;color:#757575}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{float:none;margin-left:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .form-group>label,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:6px;margin-top:0;margin-bottom:0}.form-horizontal .form-group{margin-right:-10px;margin-left:-10px}@media (min-width:768px){.form-horizontal .form-group>label{text-align:right}}.required{position:relative}.required:after{position:absolute;top:0;right:-10px;display:inline-block;font-size:17px;color:#ea644a;content:'*'}.form-horizontal .required:after{top:5px;right:-1px}.close{float:right;font-size:19.5px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}table{max-width:100%;background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:grey;text-align:left}th{text-align:left}.table{width:100%;margin-bottom:20px}.table td,.table th{padding:8px;line-height:1.53846154;vertical-align:top;border-bottom:1px solid #ddd;-webkit-transition:background .2s cubic-bezier(.175,.885,.32,1);-o-transition:background .2s cubic-bezier(.175,.885,.32,1);transition:background .2s cubic-bezier(.175,.885,.32,1)}.table>thead>tr>th{vertical-align:bottom;background-color:#f1f1f1;border-bottom:1px solid #ddd}.table>tbody+tbody{border-top:2px solid #ddd}.table-fixed{table-layout:fixed}.table-fixed td,.table-fixed th{overflow:hidden;white-space:nowrap}.table-fixed .nofixed,.table-fixed tfoot>tr>td,.table-fixed tfoot>tr>th{overflow:visible}.table-borderless td,.table-borderless th,.table-borderless thead>tr>th{border:none}.table-auto{width:auto;max-width:100%}.table-condensed td,.table-condensed th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered td,.table-bordered th{border:1px solid #ddd}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#ebf2f9}table col[class*=col-]{display:table-column;float:none}table td[class*=col-],table th[class*=col-]{display:table-cell;float:none}.table tr.active>td,.table tr.active>th,.table tr>td.active,.table tr>th.active{background-color:#ffe7bc}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#ddf4df;border-color:#bae8b6}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#caeecd;border-color:#a8e1a3}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#ffe5e0;border-color:#ffc6c7}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ffd0c6;border-color:#ffadad}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fff0d5;border-color:#ffdcbc}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#ffe7bc;border-color:#ffcea2}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.label-badge{float:right}.list-group-item>.label-badge+.label-badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{color:#353535;text-decoration:none;background-color:#ebf2f9}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#3280fc;border-color:#3280fc}.list-group-item.active .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#e6e6e6}.list-group-item-heading{margin-top:0;margin-bottom:5px;color:#333}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-color:#ddd;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-body{padding:15px}.panel>.table{margin-bottom:0}.panel>.panel-body+.table{border-top:1px solid #ddd}.panel-heading{padding:8px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-title{margin-top:0;margin-bottom:0;font-size:15px}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.alert{padding:15px;margin-bottom:20px;color:#282828;background-color:#f1f1f1;border-radius:3px;-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.alert hr{border-top-color:#e4e4e4}.alert .alert-link{color:#161616}.alert h4{margin-top:0;color:inherit}.alert hr{margin:10px 0}.alert p,.alert ul{margin-bottom:0}.alert p+p{margin-top:5px}.alert-link{font-weight:700}.alert>[class*=icon-]{float:left;margin-top:-5px;font-size:42px;opacity:.6;-webkit-transition:opacity .2s cubic-bezier(.175,.885,.32,1);-o-transition:opacity .2s cubic-bezier(.175,.885,.32,1);transition:opacity .2s cubic-bezier(.175,.885,.32,1)}.alert>[class*=icon-]+.content{min-height:30px;margin-left:64px}.alert.with-icon{display:table;width:100%}.alert.with-icon>[class*=icon-],.alert.with-icon>[class*=icon-]+.content{display:table-cell;float:none;min-height:0;margin:0;vertical-align:middle}.alert.with-icon>[class*=icon-]{width:48px;text-align:center}.alert.with-icon>[class*=icon-]+.content{padding-left:1em}.alert-block{margin:0;border-radius:0}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-6px;right:-21px;color:inherit}.alert-primary{color:#282828;background-color:#ebf2f9}.alert-primary hr{border-top-color:#d0e0f1}.alert-primary .alert-link{color:#161616}.alert-success{color:#329d38;background-color:#ddf4df}.alert-success hr{border-top-color:#bae8b6}.alert-success .alert-link{color:#29822e}.alert-info{color:#03a2b6;background-color:#ddf3f5}.alert-info hr{border-top-color:#a2e4de}.alert-info .alert-link{color:#028293}.alert-warning{color:#ed980f;background-color:#fff0d5}.alert-warning hr{border-top-color:#ffdcbc}.alert-warning .alert-link{color:#cc830d}.alert-danger{color:#e75033;background-color:#ffe5e0}.alert-danger hr{border-top-color:#ffc6c7}.alert-danger .alert-link{color:#dd391a}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:5px 12px;font-size:13px;font-weight:400;line-height:1;color:#222;text-align:center;background-color:#e5e5e5;border:1px solid #ccc;border-radius:4px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group-addon.fix-border{border-right:0;border-left:0}.input-group-addon:empty{width:1px;padding:0}.input-group-addon.fix-padding{width:1px;padding:0}.input-group-btn.fix-border>.btn{border-right:0;border-left:0;border-radius:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:first-child{border-right:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:43px;padding:10px 16px;font-size:17px;line-height:1.25;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:43px;line-height:43px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:24px;padding:2px 8px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:24px;line-height:24px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon.input-sm{padding:2px 8px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:17px;border-radius:6px}.code,code,kbd,pre,samp{font-family:Monaco,Menlo,Consolas,"Courier New",monospace}code,kbd{padding:2px 4px;font-size:90%;color:#37474f;background-color:#f3f5f7;border-radius:4px}kbd{padding:1px 4px;font-weight:700;color:#666;background-color:#f1f1f1;border:1px solid #d7d7d7;border-bottom-width:2px}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:12px;line-height:1.38461538;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;margin:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.com{color:#93a1a1}.lit{color:#195f91}.clo,.opn,.pun{color:#93a1a1}.fun{color:#dc322f}.atv,.str{color:#d14}.kwd,.prettyprint .tag{color:#1e347b}.atn,.dec,.typ,.var{color:teal}.pln{color:#48484c}.prettyprint.linenums{-webkit-box-shadow:inset 40px 0 0 #fbfbfc,inset 41px 0 0 #ececf0;box-shadow:inset 40px 0 0 #fbfbfc,inset 41px 0 0 #ececf0}.prettyprint ol.linenums{padding-left:35px;margin-bottom:0;line-height:20px;color:#bebec5;text-shadow:0 1px 0 #fff}.pager{display:inline-block;padding-left:0;margin:20px 0;list-style:none}.pager>li{display:inline}.pager>li>a,.pager>li>span{position:relative;float:left;padding:5px 12px;margin-left:-1px;line-height:1.53846154;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pager>li:first-child>a,.pager>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pager>li:last-child>a,.pager>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pager>li>a:focus,.pager>li>a:hover,.pager>li>span:focus,.pager>li>span:hover{z-index:2;background-color:#e5e5e5}.pager>li.active>a,.pager>li.active>a:hover,.pager>li.active>span,.pager>li.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#3280fc;border-color:#3280fc}.pager>li.disabled>a,.pager>li.disabled>a:focus,.pager>li.disabled>a:hover,.pager>li.disabled>span,.pager>li.disabled>span:focus,.pager>li.disabled>span:hover{color:#ddd;pointer-events:none;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pager-justify{display:block}.pager-justify .next>a,.pager-justify .next>span{float:right;border-radius:4px}.pager-justify .previous>a,.pager-justify .previous>span{float:left;border-radius:4px}.pager-goto{width:100px;text-align:center}.pager>li>div{float:left}.pager>li .pager-goto,.pager>li .pager-size-menu,.pager>li.space{margin:0 5px}.pager-label{position:relative;float:left;padding:5px 4px;margin-left:-1px;line-height:1.53846154;text-decoration:none;border:1px solid transparent}.pager-item-left>a{border-top-left-radius:4px;border-bottom-left-radius:4px}.pager-item-right>a{border-top-right-radius:4px;border-bottom-right-radius:4px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>.nav-heading{padding:8px 15px;font-weight:700;color:grey}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:8px 15px;color:#353535}.nav>li>a:focus,.nav>li>a:hover{color:#0d3d88;text-decoration:none;background-color:#f1f1f1}.nav>li.disabled>a{color:#ddd}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#ddd;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#f1f1f1;border-color:#145ccd}.nav>li>a>img{max-width:none}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:20px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#3280fc}.nav-primary>li{float:left;margin-left:-1px}.nav-primary>li:first-child>a{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.nav-primary>li:last-child>a{border-top-right-radius:4px;border-bottom-right-radius:4px}.nav-primary>li>a{border:1px solid #ddd}.nav-primary>li.active>a,.nav-primary>li.active>a:focus,.nav-primary>li.active>a:hover{color:#fff;background-color:#3280fc;border-color:#3280fc}.nav-secondary>li{float:left}.nav-secondary>li>a{border-bottom:2px solid #e5e5e5}.nav-secondary>li.active>a,.nav-secondary>li.active>a:focus,.nav-secondary>li.active>a:hover{color:#3280fc;border-bottom-color:#3280fc}.nav-secondary>li.nav-heading{border-bottom:2px solid #e5e5e5}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-stacked.nav-primary>li,.nav-stacked.nav-primary>li>a{margin-left:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.nav-stacked.nav-primary>li+li{margin-top:-1px}.nav-stacked.nav-primary>li:first-child{margin-top:0}.nav-stacked.nav-primary>li:first-child.nav-heading,.nav-stacked.nav-primary>li:first-child>a{margin-left:0;border-top-left-radius:4px;border-top-right-radius:4px}.nav-stacked.nav-primary>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.nav-stacked.nav-primary>li.nav-heading{background-color:#f1f1f1;border:1px solid #ddd}.nav-stacked.nav-secondary>li>a{border:none;border-top-right-radius:4px;border-bottom-right-radius:4px;-webkit-box-shadow:inset 2px 0 0 #f5f5f5;box-shadow:inset 2px 0 0 #f5f5f5}.nav-stacked.nav-secondary>li>a:hover{-webkit-box-shadow:inset 2px 0 0 #e5e5e5;box-shadow:inset 2px 0 0 #e5e5e5}.nav-stacked.nav-secondary>li+li{margin-top:-1px}.nav-stacked.nav-secondary>li:first-child{margin-top:0}.nav-stacked.nav-secondary>li.active>a,.nav-stacked.nav-secondary>li.active>a:focus,.nav-stacked.nav-secondary>li.active>a:hover{background-color:#f5f5f5;-webkit-box-shadow:inset 2px 0 0 #3280fc;box-shadow:inset 2px 0 0 #3280fc}.nav-stacked.nav-secondary>li.nav-heading{border-bottom:1px solid #ddd}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}.nav-justified.nav-primary>li+li>a{border-left:0}}.navbar{position:relative;min-height:40px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:10px;padding-left:10px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-10px;margin-left:-10px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:40px;padding:10px 15px;font-size:17px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-10px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:3px;margin-right:3px;margin-bottom:3px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:5px -10px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px}.navbar-nav.nav-justified>li{float:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-nav.pull-right>li>.dropdown-menu,.navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar-btn{margin-top:4px;margin-bottom:4px}.navbar-text{float:left;margin-top:10px;margin-bottom:10px}@media (min-width:768px){.navbar-text{margin-right:10px;margin-left:10px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-10px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f7f7f7;border-color:#dedede}.navbar-default .navbar-brand{color:#333}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#1a1a1a;background-color:transparent}.navbar-default .navbar-text{color:#333}.navbar-default .navbar-nav>li>a{color:#333}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#222;background-color:#e5e5e5}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:grey}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#dedede}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#333}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#222;background-color:#e5e5e5}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#333}.navbar-default .navbar-link:hover{color:#222}.navbar-default .btn-link{color:#333}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#222}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#145ccd;border-color:#10479f}.navbar-inverse .navbar-brand{color:#ddd}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#ddd}.navbar-inverse .navbar-nav>li>a{color:#ddd}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:#1868e8}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#2a74ea}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#1251b6}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#114dad}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#2a74ea}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#10479f}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#10479f}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#ddd}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:#1868e8}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#2a74ea}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#ddd}.navbar-inverse .navbar-link:hover{color:#fff}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.scale{-webkit-transition:all .15s ease;-o-transition:all .15s ease;transition:all .15s ease;-webkit-transform:scale(.8);-ms-transform:scale(.8);-o-transform:scale(.8);transform:scale(.8)}.scale.in{-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out,-o-transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal>.loader{display:none}.modal.modal-loading .modal-dialog{opacity:0}.modal.modal-loading .loader{position:absolute;top:35%;left:50%;display:block;width:80px;margin-left:-40px;font-size:56px;color:#fff;text-align:center}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-iframe .modal-body>iframe{border-radius:0 0 6px 6px}.modal-dialog{position:relative;width:auto;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-dialog.modal-moveable{position:absolute;margin:0}.modal-dialog.modal-moveable .modal-header{cursor:move}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.54px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.53846154}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto;-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.modal-fullscreen{position:relative;width:100%!important;height:100%!important;margin:0;border-radius:0}.modal-fullscreen .modal-body{position:absolute;top:52px;right:0;bottom:0;left:0;overflow-y:auto}.tooltip{position:absolute;z-index:1030;display:block;font-size:12px;line-height:1.4;visibility:visible;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=100);opacity:1}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#353535;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#353535}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#353535}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-width:5px 5px 0;border-top-color:#353535}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#353535}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#353535}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#353535}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#353535}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#353535}.tooltip-primary .tooltip-inner{background-color:#3280fc}.tooltip-primary.tooltip.top .tooltip-arrow{border-top-color:#3280fc}.tooltip-primary.tooltip.top-left .tooltip-arrow{border-top-color:#3280fc}.tooltip-primary.tooltip.top-right .tooltip-arrow{border-top-color:#3280fc}.tooltip-primary.tooltip.right .tooltip-arrow{border-right-color:#3280fc}.tooltip-primary.tooltip.left .tooltip-arrow{border-left-color:#3280fc}.tooltip-primary.tooltip.bottom .tooltip-arrow{border-bottom-color:#3280fc}.tooltip-primary.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#3280fc}.tooltip-primary.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#3280fc}.tooltip-success .tooltip-inner{background-color:#38b03f}.tooltip-success.tooltip.top .tooltip-arrow{border-top-color:#38b03f}.tooltip-success.tooltip.top-left .tooltip-arrow{border-top-color:#38b03f}.tooltip-success.tooltip.top-right .tooltip-arrow{border-top-color:#38b03f}.tooltip-success.tooltip.right .tooltip-arrow{border-right-color:#38b03f}.tooltip-success.tooltip.left .tooltip-arrow{border-left-color:#38b03f}.tooltip-success.tooltip.bottom .tooltip-arrow{border-bottom-color:#38b03f}.tooltip-success.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#38b03f}.tooltip-success.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#38b03f}.tooltip-info .tooltip-inner{background-color:#03b8cf}.tooltip-info.tooltip.top .tooltip-arrow{border-top-color:#03b8cf}.tooltip-info.tooltip.top-left .tooltip-arrow{border-top-color:#03b8cf}.tooltip-info.tooltip.top-right .tooltip-arrow{border-top-color:#03b8cf}.tooltip-info.tooltip.right .tooltip-arrow{border-right-color:#03b8cf}.tooltip-info.tooltip.left .tooltip-arrow{border-left-color:#03b8cf}.tooltip-info.tooltip.bottom .tooltip-arrow{border-bottom-color:#03b8cf}.tooltip-info.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#03b8cf}.tooltip-info.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#03b8cf}.tooltip-warning .tooltip-inner{background-color:#f1a325}.tooltip-warning.tooltip.top .tooltip-arrow{border-top-color:#f1a325}.tooltip-warning.tooltip.top-left .tooltip-arrow{border-top-color:#f1a325}.tooltip-warning.tooltip.top-right .tooltip-arrow{border-top-color:#f1a325}.tooltip-warning.tooltip.right .tooltip-arrow{border-right-color:#f1a325}.tooltip-warning.tooltip.left .tooltip-arrow{border-left-color:#f1a325}.tooltip-warning.tooltip.bottom .tooltip-arrow{border-bottom-color:#f1a325}.tooltip-warning.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#f1a325}.tooltip-warning.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#f1a325}.tooltip-danger .tooltip-inner{background-color:#ea644a}.tooltip-danger.tooltip.top .tooltip-arrow{border-top-color:#ea644a}.tooltip-danger.tooltip.top-left .tooltip-arrow{border-top-color:#ea644a}.tooltip-danger.tooltip.top-right .tooltip-arrow{border-top-color:#ea644a}.tooltip-danger.tooltip.right .tooltip-arrow{border-right-color:#ea644a}.tooltip-danger.tooltip.left .tooltip-arrow{border-left-color:#ea644a}.tooltip-danger.tooltip.bottom .tooltip-arrow{border-bottom-color:#ea644a}.tooltip-danger.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#ea644a}.tooltip-danger.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#ea644a}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:300px;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:4px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover.no-arrow.top{margin-top:0}.popover.no-arrow.right{margin-left:0}.popover.no-arrow.bottom{margin-top:0}.popover.no-arrow.left{margin-left:0}.popover-title{padding:8px 14px;margin:0;font-size:13px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:4px 4px 0 0}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{content:"";border-width:10px}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom .arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left .arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.popover-primary{border-color:#3280fc}.popover-primary .popover-title{color:#fff;background-color:#3280fc}.popover-primary.popover.top .arrow{border-top-color:#3280fc}.popover-primary.popover.right .arrow{border-right-color:#3280fc}.popover-primary.popover.left .arrow{border-left-color:#3280fc}.popover-primary.popover.bottom .arrow,.popover-primary.popover.bottom .arrow:after{border-bottom-color:#3280fc}.popover-success{border-color:#38b03f}.popover-success .popover-title{color:#fff;background-color:#38b03f}.popover-success.popover.top .arrow{border-top-color:#38b03f}.popover-success.popover.right .arrow{border-right-color:#38b03f}.popover-success.popover.left .arrow{border-left-color:#38b03f}.popover-success.popover.bottom .arrow,.popover-success.popover.bottom .arrow:after{border-bottom-color:#38b03f}.popover-info{border-color:#03b8cf}.popover-info .popover-title{color:#fff;background-color:#03b8cf}.popover-info.popover.top .arrow{border-top-color:#03b8cf}.popover-info.popover.right .arrow{border-right-color:#03b8cf}.popover-info.popover.left .arrow{border-left-color:#03b8cf}.popover-info.popover.bottom .arrow,.popover-info.popover.bottom .arrow:after{border-bottom-color:#03b8cf}.popover-warning{border-color:#f1a325}.popover-warning .popover-title{color:#fff;background-color:#f1a325}.popover-warning.popover.top .arrow{border-top-color:#f1a325}.popover-warning.popover.right .arrow{border-right-color:#f1a325}.popover-warning.popover.left .arrow{border-left-color:#f1a325}.popover-warning.popover.bottom .arrow,.popover-warning.popover.bottom .arrow:after{border-bottom-color:#f1a325}.popover-danger{border-color:#ea644a}.popover-danger .popover-title{color:#fff;background-color:#ea644a}.popover-danger.popover.top .arrow{border-top-color:#ea644a}.popover-danger.popover.right .arrow{border-right-color:#ea644a}.popover-danger.popover.left .arrow{border-left-color:#ea644a}.popover-danger.popover.bottom .arrow,.popover-danger.popover.bottom .arrow:after{border-bottom-color:#ea644a}.caret{display:inline-block;width:0;height:0;margin-bottom:2px;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:13px;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #cbcbcb;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.53846154;color:#353535;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#fff;text-decoration:none;background-color:#3280fc}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#3280fc;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#ddd}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dropdown-hover .dropdown-menu{margin:-1px 0}.dropdown-hover:hover>.dropdown-menu,.open>.dropdown-menu{display:block}.dropdown-hover:hover>a,.open>a{outline:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;font-weight:700;line-height:1.53846154;color:grey}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0 dotted;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;border-radius:4px}.dropdown-submenu.open>.dropdown-menu,.dropdown-submenu:hover>.dropdown-menu{display:block}.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;border-radius:4px}.dropdown-submenu>a:after{display:block;float:right;width:0;height:0;margin-top:5px;margin-right:-10px;content:" ";border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#ccc}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu>a{min-width:160px}.dropdown-submenu>.dropdown-menu.pull-left{left:-100%}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{color:#fff;text-decoration:none;background-color:#3280fc}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:10%;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=40);outline:0;opacity:.4}.carousel-control>.icon{font-size:20px}.carousel-control.left{background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.3)),to(rgba(0,0,0,.0001)));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.3) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.3) 0,rgba(0,0,0,.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.3) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4d000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.3)));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.3) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.3) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.3) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#4d000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=100);outline:0;opacity:1}.carousel-control .icon-chevron-left,.carousel-control .icon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-chevron-left,.carousel-control .icon-prev{left:50%}.carousel-control .icon-chevron-right,.carousel-control .icon-next{right:50%}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .icon-next,.carousel-control .icon-prev{top:40%;width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:80px}.carousel-control .icon-prev{left:30%}.carousel-control .icon-next{right:25%}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.bg-black,.bg-default{color:#fff;background-color:#353535}.bg-primary{color:#fff;background-color:#3280fc}.bg-green,.bg-success{color:#fff;background-color:#38b03f}.bg-blue,.bg-info{color:#fff;background-color:#03b8cf}.bg-warning,.bg-yellow{color:#fff;background-color:#f1a325}.bg-danger,.bg-red{color:#fff;background-color:#ea644a}.bg-brown,.bg-important{color:#fff;background-color:#bd7b46}.bg-purple,.bg-special{color:#fff;background-color:#8666b8}.hl-default,.hl-gray{background-color:#f1f1f1}.hl-primary{background-color:#ebf2f9}.hl-green,.hl-success{background-color:#ddf4df}.hl-blue,.hl-info{background-color:#ddf3f5}.hl-warning,.hl-yellow{background-color:#fff0d5}.hl-danger,.hl-red{background-color:#ffe5e0}.hl-brown,.hl-important{background-color:#f7ebe1}.hl-purple,.hl-special{background-color:#f5eeff}.article{padding:20px}.article>header h1,.article>header h2,.article>header h3{margin-bottom:20px;line-height:1.5}.article>header>.abstract,.article>header>dl{padding:10px 15px;font-size:12px;color:#686868;background-color:#f1f1f1}.article>header>.abstract>p:last-child,.article>header>dl>p:last-child{margin-bottom:0}.article>header>dl{margin:0;border-bottom:1px solid #e9e9e9}.article>header>dl.pull-right{background-color:transparent;border:none}.article>footer{border-top:1px dashed #d7d7d7}.article>footer>p{padding:10px 15px}.article-content,.article>.content{padding:20px 0;font-size:14px;line-height:1.78571429}.article-content h1,.article>.content h1{font-size:20px}.article-content h2,.article>.content h2{font-size:18px}.article-content h3,.article>.content h3{font-size:16px}.article-content h4,.article>.content h4{margin-top:15px;font-size:14px}.article-content h5,.article>.content h5{margin-top:15px;font-size:13px}.article-content h6,.article>.content h6{margin-top:15px;font-size:11px}.article-content img,.article>.content img{margin:10px 0}.article-content p>img,.article>.content p>img{margin-right:10px}.article-content p>img[align=right],.article>.content p>img[align=right]{margin-left:10px}.article-content dl,.article>.content dl{padding-right:2em;padding-left:2em}.article-content table,.article>.content table{margin-bottom:20px}.article-content table td,.article-content table th,.article>.content table td,.article>.content table th{padding:8px;line-height:1.53846154;vertical-align:top;border-bottom:1px solid #ddd}.article-content table>thead>tr>th,.article>.content table>thead>tr>th{vertical-align:bottom;background-color:#f1f1f1;border-bottom:1px solid #ddd}.article-content p{margin-bottom:0}.article-content table{width:100%}.article>.content table td,.article>.content table th,.article>.content table>thead>tr>th{border:1px solid #ddd}body.article-content{padding:8px}.article-condensed{padding:20px 0}.article-condensed>header{padding:0 20px}.article-condensed>header>.abstract,.article-condensed>header>dl{padding:10px 15px;margin:0 -20px}.article-condensed>.article-content,.article-condensed>.content{padding:20px}.article-condensed>.article-content>img,.article-condensed>.article-content>pre,.article-condensed>.content>img,.article-condensed>.content>pre{margin-right:-20px;margin-left:-20px;border-radius:0}.article-condensed>.article-content>pre,.article-condensed>.content>pre{border-right:none;border-left:none}.article-condensed>footer{border-top:1px dashed #d7d7d7}.article-condensed>footer>p{padding:10px 15px}.article-condensed>footer>.pager-justify>.previous>a{border-left:none;border-radius:0}.article-condensed>footer>.pager-justify>.next>a{border-right:none;border-radius:0}.comments>header{border-bottom:1px solid #e5e5e5}.comments>header>.alert{padding:7.5px 15px;margin-bottom:-10px}.comments>header h1,.comments>header h2,.comments>header h3{padding:10px 0;margin:10px 0}.comments>footer{padding-top:10px}.comments>footer>.reply-form>.avatar{display:block;float:left;width:40px;height:40px;margin-top:10px}.comments>footer>.reply-form>.avatar+.form{padding-left:50px}.comment{padding:10px 0;border-bottom:1px solid #e5e5e5}.comment:after,.comment:before{display:table;content:" "}.comment:after{clear:both}.comment:after,.comment:before{display:table;content:" "}.comment:after{clear:both}.comment>.avatar,.comment>.content{display:block}.comment>.avatar{float:left;width:40px;height:40px;margin-top:10px}.comment>.avatar+.content{padding-left:50px}.comment>.content>.text{margin-top:5px}.comment>.content>.actions{margin-top:4px}.comment>.content>.actions>a{display:inline-block;color:grey}.comment>.content>.actions>a+a{margin-left:5px}.comment:hover>.content>.actions>a{color:#145ccd}.comment>.comments-list{padding-top:10px;padding-bottom:0;padding-left:30px;margin-left:20px;border-left:1px dashed #e5e5e5}.comment>.comments-list>.comment{border:none;border-top:1px solid #e5e5e5}.comment>.comments-list>.comment:last-child{padding-bottom:0}.list{padding:0 15px}.list>header{padding-bottom:10px;border-bottom:1px solid #e5e5e5}.items .item{padding:10px 0;border-bottom:1px solid #e5e5e5;-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.items .item-heading h1,.items .item-heading h2,.items .item-heading h3,.items .item-heading h4,.items .item-heading h5,.items .item-heading>h6{margin-top:5px}.items .item-content:after,.items .item-content:before{display:table;content:" "}.items .item-content:after{clear:both}.items .item-content:after,.items .item-content:before{display:table;content:" "}.items .item-content:after{clear:both}.items .item-content>.media{max-width:100%;margin:5px 0}.items .item-content>.media.pull-left{max-width:150px;margin:0;margin-right:8px}.items .item-content>.media.pull-right{max-width:150px;margin:0;margin-left:8px}.items .item-footer{padding-top:5px}.items .item-footer>a{color:grey}.items-hover .item:hover{background-color:#f5f5f5}.list-condensed{padding:0}.list-condensed>.items>.item,.list-condensed>footer,.list-condensed>header{padding-right:15px;padding-left:15px} \ No newline at end of file diff --git a/root/res/zui/css/zui.min.css b/root/res/zui/css/zui.min.css new file mode 100644 index 0000000..28efd03 --- /dev/null +++ b/root/res/zui/css/zui.min.css @@ -0,0 +1,6 @@ +/*! + * ZUI: Standard edition - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + *//*! Some code copy from Bootstrap v3.0.0 by @fat and @mdo. (Copyright 2013 Twitter, Inc. Licensed under http://www.apache.org/licenses/)*//*! normalize.css v2.1.3 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden],template{display:none}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}a{background:0 0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{margin:.67em 0;font-size:2em}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}mark{color:#000;background:#ff0}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}button,input,select,textarea{margin:0;font-family:inherit;font-size:100%}button,input{line-height:normal}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}textarea{overflow:auto;vertical-align:top}table{border-spacing:0;border-collapse:collapse}.btn-group-vertical>.btn-group-vertical:after,.btn-group-vertical>.btn-group-vertical:before,.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.cards:after,.cards:before,.clearfix:after,.clearfix:before,.container-fixed-md:after,.container-fixed-md:before,.container-fixed-sm:after,.container-fixed-sm:before,.container-fixed-xs:after,.container-fixed-xs:before,.container-fixed:after,.container-fixed:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager-justify:after,.pager-justify:before,.pager-loose:after,.pager-loose:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group-vertical:after,.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.cards:after,.clearfix:after,.container-fixed-md:after,.container-fixed-sm:after,.container-fixed-xs:after,.container-fixed:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager-justify:after,.pager-loose:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none}.showing{display:block}.hidden{display:none!important;visibility:hidden!important}.show{display:block!important;visibility:visible!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.affix{position:fixed}.with-padding{padding:5px 12px}.no-padding{padding:0!important}.inline-block.visible-xs,.inline.visible-xs,.visible-xs,td.visible-xs,th.visible-xs,tr.visible-xs{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}.inline.visible-xs{display:inline!important}.inline-block.visible-xs{display:inline-block!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-xs.visible-sm{display:block!important}.inline.visible-xs.visible-sm{display:inline!important}.inline-block.visible-xs.visible-sm{display:inline-block!important}tr.visible-xs.visible-sm{display:table-row!important}td.visible-xs.visible-sm,th.visible-xs.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-xs.visible-md{display:block!important}.inline.visible-xs.visible-md{display:inline!important}.inline-block.visible-xs.visible-md{display:inline-block!important}tr.visible-xs.visible-md{display:table-row!important}td.visible-xs.visible-md,th.visible-xs.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-xs.visible-lg{display:block!important}.inline.visible-xs.visible-lg{display:inline!important}.inline-block.visible-xs.visible-lg{display:inline-block!important}tr.visible-xs.visible-lg{display:table-row!important}td.visible-xs.visible-lg,th.visible-xs.visible-lg{display:table-cell!important}}.inline-block.visible-sm,.inline.visible-sm,.visible-sm,td.visible-sm,th.visible-sm,tr.visible-sm{display:none!important}@media (max-width:767px){.visible-sm.visible-xs{display:block!important}.inline.visible-sm.visible-xs{display:inline!important}.inline-block.visible-sm.visible-xs{display:inline-block!important}tr.visible-sm.visible-xs{display:table-row!important}td.visible-sm.visible-xs,th.visible-sm.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}.inline.visible-sm{display:inline!important}.inline-block.visible-sm{display:inline-block!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-sm.visible-md{display:block!important}.inline.visible-sm.visible-md{display:inline!important}.inline-block.visible-sm.visible-md{display:inline-block!important}tr.visible-sm.visible-md{display:table-row!important}td.visible-sm.visible-md,th.visible-sm.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-sm.visible-lg{display:block!important}.inline.visible-sm.visible-lg{display:inline!important}.inline-block.visible-sm.visible-lg{display:inline-block!important}tr.visible-sm.visible-lg{display:table-row!important}td.visible-sm.visible-lg,th.visible-sm.visible-lg{display:table-cell!important}}.inline-block.visible-md,.inline.visible-md,.visible-md,td.visible-md,th.visible-md,tr.visible-md{display:none!important}@media (max-width:767px){.visible-md.visible-xs{display:block!important}.inline.visible-md.visible-xs{display:inline!important}.inline-block.visible-md.visible-xs{display:inline-block!important}tr.visible-md.visible-xs{display:table-row!important}td.visible-md.visible-xs,th.visible-md.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-md.visible-sm{display:block!important}.inline.visible-md.visible-sm{display:inline!important}.inline-block.visible-md.visible-sm{display:inline-block!important}tr.visible-md.visible-sm{display:table-row!important}td.visible-md.visible-sm,th.visible-md.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}.inline.visible-md{display:inline!important}.inline-block.visible-md{display:inline-block!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-md.visible-lg{display:block!important}.inline.visible-md.visible-lg{display:inline!important}.inline-block.visible-md.visible-lg{display:inline-block!important}tr.visible-md.visible-lg{display:table-row!important}td.visible-md.visible-lg,th.visible-md.visible-lg{display:table-cell!important}}.inline-block.visible-lg,.inline.visible-lg,.visible-lg,td.visible-lg,th.visible-lg,tr.visible-lg{display:none!important}@media (max-width:767px){.visible-lg.visible-xs{display:block!important}.inline.visible-lg.visible-xs{display:inline!important}.inline-block.visible-lg.visible-xs{display:inline-block!important}tr.visible-lg.visible-xs{display:table-row!important}td.visible-lg.visible-xs,th.visible-lg.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-lg.visible-sm{display:block!important}.inline.visible-lg.visible-sm{display:inline!important}.inline-block.visible-lg.visible-sm{display:inline-block!important}tr.visible-lg.visible-sm{display:table-row!important}td.visible-lg.visible-sm,th.visible-lg.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-lg.visible-md{display:block!important}.inline.visible-lg.visible-md{display:inline!important}.inline-block.visible-lg.visible-md{display:inline-block!important}tr.visible-lg.visible-md{display:table-row!important}td.visible-lg.visible-md,th.visible-lg.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-lg{display:block!important}.inline.visible-lg{display:inline!important}.inline-block.visible-lg{display:inline-block!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}.hidden-xs{display:block!important}.inline.hidden-xs{display:inline!important}.inline-block.hidden-xs{display:inline-block!important}tr.hidden-xs{display:table-row!important}td.hidden-xs,th.hidden-xs{display:table-cell!important}@media (max-width:767px){.hidden-xs,.inline-block.hidden-xs,.inline.hidden-xs,td.hidden-xs,th.hidden-xs,tr.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-xs.hidden-sm,.inline-block.hidden-xs.hidden-sm,.inline.hidden-xs.hidden-sm,td.hidden-xs.hidden-sm,th.hidden-xs.hidden-sm,tr.hidden-xs.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-xs.hidden-md,.inline-block.hidden-xs.hidden-md,.inline.hidden-xs.hidden-md,td.hidden-xs.hidden-md,th.hidden-xs.hidden-md,tr.hidden-xs.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-xs.hidden-lg,.inline-block.hidden-xs.hidden-lg,.inline.hidden-xs.hidden-lg,td.hidden-xs.hidden-lg,th.hidden-xs.hidden-lg,tr.hidden-xs.hidden-lg{display:none!important}}.hidden-sm{display:block!important}.inline.hidden-sm{display:inline!important}.inline-block.hidden-sm{display:inline-block!important}tr.hidden-sm{display:table-row!important}td.hidden-sm,th.hidden-sm{display:table-cell!important}@media (max-width:767px){.hidden-sm.hidden-xs,.inline-block.hidden-sm.hidden-xs,.inline.hidden-sm.hidden-xs,td.hidden-sm.hidden-xs,th.hidden-sm.hidden-xs,tr.hidden-sm.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm,.inline-block.hidden-sm,.inline.hidden-sm,td.hidden-sm,th.hidden-sm,tr.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-sm.hidden-md,.inline-block.hidden-sm.hidden-md,.inline.hidden-sm.hidden-md,td.hidden-sm.hidden-md,th.hidden-sm.hidden-md,tr.hidden-sm.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-sm.hidden-lg,.inline-block.hidden-sm.hidden-lg,.inline.hidden-sm.hidden-lg,td.hidden-sm.hidden-lg,th.hidden-sm.hidden-lg,tr.hidden-sm.hidden-lg{display:none!important}}.hidden-md{display:block!important}.inline.hidden-md{display:inline!important}.inline-block.hidden-md{display:inline-block!important}tr.hidden-md{display:table-row!important}td.hidden-md,th.hidden-md{display:table-cell!important}@media (max-width:767px){.hidden-md.hidden-xs,.inline-block.hidden-md.hidden-xs,.inline.hidden-md.hidden-xs,td.hidden-md.hidden-xs,th.hidden-md.hidden-xs,tr.hidden-md.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-md.hidden-sm,.inline-block.hidden-md.hidden-sm,.inline.hidden-md.hidden-sm,td.hidden-md.hidden-sm,th.hidden-md.hidden-sm,tr.hidden-md.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md,.inline-block.hidden-md,.inline.hidden-md,td.hidden-md,th.hidden-md,tr.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-md.hidden-lg,.inline-block.hidden-md.hidden-lg,.inline.hidden-md.hidden-lg,td.hidden-md.hidden-lg,th.hidden-md.hidden-lg,tr.hidden-md.hidden-lg{display:none!important}}.hidden-lg{display:block!important}.inline.hidden-lg{display:inline!important}.inline-block.hidden-lg{display:inline-block!important}tr.hidden-lg{display:table-row!important}td.hidden-lg,th.hidden-lg{display:table-cell!important}@media (max-width:767px){.hidden-lg.hidden-xs,.inline-block.hidden-lg.hidden-xs,.inline.hidden-lg.hidden-xs,td.hidden-lg.hidden-xs,th.hidden-lg.hidden-xs,tr.hidden-lg.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-lg.hidden-sm,.inline-block.hidden-lg.hidden-sm,.inline.hidden-lg.hidden-sm,td.hidden-lg.hidden-sm,th.hidden-lg.hidden-sm,tr.hidden-lg.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-lg.hidden-md,.inline-block.hidden-lg.hidden-md,.inline.hidden-lg.hidden-md,td.hidden-lg.hidden-md,th.hidden-lg.hidden-md,tr.hidden-lg.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg,.inline-block.hidden-lg,.inline.hidden-lg,td.hidden-lg,th.hidden-lg,tr.hidden-lg{display:none!important}}.inline-block.visible-print,.inline.visible-print,.visible-print,td.visible-print,th.visible-print,tr.visible-print{display:none!important}@media print{.visible-print{display:block!important}.inline.visible-print{display:inline!important}.inline-block.visible-print{display:inline-block!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}.hidden-print,.inline-block.hidden-print,.inline.hidden-print,td.hidden-print,th.hidden-print,tr.hidden-print{display:none!important}}*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Tahoma,Arial,'Microsoft Yahei','PingFang SC','Hiragino Sans GB','WenQuanYi Micro Hei',sans-serif;font-size:13px;line-height:1.53846154;color:#353535;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#145ccd;text-decoration:none;-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}a:focus,a:hover{color:#0d3d88;text-decoration:underline}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a.disabled,a.disabled:focus,a.disabled:hover,a[disabled],a[disabled]:focus,a[disabled]:hover{color:#aaa;text-decoration:none;cursor:default}audio,canvas,img,video{max-width:100%;vertical-align:middle}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}::-moz-selection{text-shadow:none;background:#b3d4fc}::selection{text-shadow:none;background:#b3d4fc}fieldset{padding:0;margin:0;border:0}textarea{resize:vertical}ol,ul{padding-left:20px}.container,.container-fixed,.container-fixed-md,.container-fixed-sm,.container-fixed-xs,.container-fluid{padding-right:10px;padding-left:10px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{max-width:740px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1160px}}.container-fixed{width:1160px}.container-fixed-md{width:960px}.container-fixed-sm{width:740px}.container-fixed-xs{width:440px}.row{margin-right:-10px;margin-left:-10px}.col,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:10px;padding-left:10px}.col,.col-xs,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-1{width:8.33333333%}.col-xs-2{width:16.66666667%}.col-xs-3{width:25%}.col-xs-4{width:33.33333333%}.col-xs-5{width:41.66666667%}.col-xs-6{width:50%}.col-xs-7{width:58.33333333%}.col-xs-8{width:66.66666667%}.col-xs-9{width:75%}.col-xs-10{width:83.33333333%}.col-xs-11{width:91.66666667%}.col-xs-12{width:100%}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-1{width:8.33333333%}.col-sm-2{width:16.66666667%}.col-sm-3{width:25%}.col-sm-4{width:33.33333333%}.col-sm-5{width:41.66666667%}.col-sm-6{width:50%}.col-sm-7{width:58.33333333%}.col-sm-8{width:66.66666667%}.col-sm-9{width:75%}.col-sm-10{width:83.33333333%}.col-sm-11{width:91.66666667%}.col-sm-12{width:100%}.col-sm-push-1{left:8.33333333%}.col-sm-push-2{left:16.66666667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333333%}.col-sm-push-5{left:41.66666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.33333333%}.col-sm-push-8{left:66.66666667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333333%}.col-sm-push-11{left:91.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-11{right:91.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-11{margin-left:91.66666667%}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-1{width:8.33333333%}.col-md-2{width:16.66666667%}.col-md-3{width:25%}.col-md-4{width:33.33333333%}.col-md-5{width:41.66666667%}.col-md-6{width:50%}.col-md-7{width:58.33333333%}.col-md-8{width:66.66666667%}.col-md-9{width:75%}.col-md-10{width:83.33333333%}.col-md-11{width:91.66666667%}.col-md-12{width:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.33333333%}.col-md-push-2{left:16.66666667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333333%}.col-md-push-5{left:41.66666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.33333333%}.col-md-push-8{left:66.66666667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333333%}.col-md-push-11{left:91.66666667%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.33333333%}.col-md-pull-2{right:16.66666667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333333%}.col-md-pull-5{right:41.66666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.33333333%}.col-md-pull-8{right:66.66666667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333333%}.col-md-pull-11{right:91.66666667%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-11{margin-left:91.66666667%}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-1{width:8.33333333%}.col-lg-2{width:16.66666667%}.col-lg-3{width:25%}.col-lg-4{width:33.33333333%}.col-lg-5{width:41.66666667%}.col-lg-6{width:50%}.col-lg-7{width:58.33333333%}.col-lg-8{width:66.66666667%}.col-lg-9{width:75%}.col-lg-10{width:83.33333333%}.col-lg-11{width:91.66666667%}.col-lg-12{width:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.33333333%}.col-lg-push-2{left:16.66666667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333333%}.col-lg-push-5{left:41.66666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.33333333%}.col-lg-push-8{left:66.66666667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333333%}.col-lg-push-11{left:91.66666667%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-11{right:91.66666667%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-11{margin-left:91.66666667%}}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:14px;line-height:1.4}@media (min-width:768px){.lead{font-size:19.5px}}.small,small{font-size:85%}cite{font-style:normal}.text-gray,.text-muted{color:grey}.text-gray a,.text-muted a{color:#737373}.text-gray a:active,.text-gray a:hover,.text-muted a:active,.text-muted a:hover{color:#145ccd}.text-primary{color:#3280fc}.text-warning,.text-yellow{color:#f1a325}.text-danger,.text-red{color:#ea644a}.text-green,.text-success{color:#38b03f}.text-blue,.text-info{color:#03b8cf}.text-brown,.text-important{color:#bd7b46}.text-purple,.text-special{color:#8666b8}.text-link{color:#353535}.text-link:active,.text-link:hover{color:#145ccd}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.nobr,.text-nowrap{overflow:hidden;white-space:nowrap}.text-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}dl{margin-bottom:20px}dd,dt{line-height:1.53846154}dt{font-weight:700}dd{margin-left:0}.dl-inline:after,.dl-inline:before{display:table;content:" "}.dl-inline:after{clear:both}.dl-inline:after,.dl-inline:before{display:table;content:" "}.dl-inline:after{clear:both}.dl-inline dt{display:inline-block}.dl-inline dd{display:inline-block;padding-right:1em}.dl-inline dd:last-child{padding-right:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}blockquote{padding:10px 20px;margin:0 0 20px;font-size:16.25px;border-left:5px solid #e5e5e5}blockquote ol,blockquote p,blockquote ul{font-weight:300}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote small{display:block;line-height:1.53846154;color:grey}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #e5e5e5;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}.ol-pd-2{padding-left:40px}.ol-pd-3{padding-left:60px}.ol-pd-4{padding-left:80px}.bg-black,.bg-default{color:#fff;background-color:#353535}.bg-primary{color:#fff;background-color:#3280fc}.bg-green,.bg-success{color:#fff;background-color:#38b03f}.bg-blue,.bg-info{color:#fff;background-color:#03b8cf}.bg-warning,.bg-yellow{color:#fff;background-color:#f1a325}.bg-danger,.bg-red{color:#fff;background-color:#ea644a}.bg-brown,.bg-important{color:#fff;background-color:#bd7b46}.bg-purple,.bg-special{color:#fff;background-color:#8666b8}.hl-default,.hl-gray{background-color:#f1f1f1}.hl-primary{background-color:#ebf2f9}.hl-green,.hl-success{background-color:#ddf4df}.hl-blue,.hl-info{background-color:#ddf3f5}.hl-warning,.hl-yellow{background-color:#fff0d5}.hl-danger,.hl-red{background-color:#ffe5e0}.hl-brown,.hl-important{background-color:#f7ebe1}.hl-purple,.hl-special{background-color:#f5eeff}.header-dividing,.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #e5e5e5}h1,h2,h3,h4,h5,h6{font-family:"Helvetica Neue",Helvetica,Tahoma,Arial,'Microsoft Yahei','PingFang SC','Hiragino Sans GB','WenQuanYi Micro Hei',sans-serif;font-weight:700;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:400;line-height:1;color:grey}h1,h2,h3{margin-top:20px;margin-bottom:10px}h1 small,h2 small,h3 small{font-size:65%}h4,h5,h6{margin-top:10px;margin-bottom:10px}h4 small,h5 small,h6 small{font-size:75%}h1{font-size:26px}h2{font-size:20px}h3{font-size:16px}h4{font-size:14px}h5{font-size:13px}h6{font-size:12px}.btn{display:inline-block;padding:5px 12px;margin-bottom:0;font-size:13px;font-weight:400;line-height:1.53846154;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;border-radius:4px;-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:focus,.btn:hover{color:#353535;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn{color:#353535;text-shadow:0 1px 0 #fff;background-color:#f2f2f2;border-color:#bfbfbf}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#353535;background-color:#dedede;border-color:#a1a1a1;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#ccc;background-image:none;border-color:#a6a6a6;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#f2f2f2;border-color:#bfbfbf}.btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.2);background-color:#3280fc;border-color:#1970fc}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#0a67fb;border-color:#0354d4;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#0358de;background-image:none;border-color:#0358de;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#3280fc;border-color:#1970fc}.btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.2);background-color:#f1a325;border-color:#ed980f}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#df8f0e;border-color:#b4730c;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#bd7a0c;background-image:none;border-color:#bd7a0c;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f1a325;border-color:#ed980f}.btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.2);background-color:#ea644a;border-color:#e75033}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#e64525;border-color:#c63317;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#cf3618;background-image:none;border-color:#cf3618;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#ea644a;border-color:#e75033}.btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.2);background-color:#38b03f;border-color:#329d38}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#2e9134;border-color:#236e27;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#26762a;background-image:none;border-color:#26762a;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#38b03f;border-color:#329d38}.btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.2);background-color:#03b8cf;border-color:#03a2b6}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#fff;background-color:#0294a7;border-color:#026c7a;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#027584;background-image:none;border-color:#027584;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#03b8cf;border-color:#03a2b6}.btn-link{font-weight:400;color:#145ccd;text-shadow:none;cursor:pointer;background:0 0;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover,.btn-link[disabled],fieldset[disabled] .btn-link{border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link:focus,.btn-link:hover{color:#0d3d88}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#ddd;text-decoration:none}.btn-lg{padding:10px 16px;font-size:17px;line-height:1.25;border-radius:4px}.btn-mini,.btn-sm,.btn-xs{padding:2px 8px;font-size:12px;line-height:1.5;border-radius:4px}.btn-mini,.btn-xs{padding:1px 5px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group-vertical>.btn:focus,.btn-group>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.btn-group-vertical .btn+.btn,.btn-group-vertical .btn+.btn-group-vertical,.btn-group-vertical .btn-group-vertical+.btn,.btn-group-vertical .btn-group-vertical+.btn-group-vertical{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .btn-group-vertical,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.btn-group-vertical,.btn-toolbar>.input-group{margin-left:5px}.btn-group-vertical>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle),.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group-vertical>.btn:first-child,.btn-group>.btn:first-child{margin-left:0}.btn-group-vertical>.btn:first-child:not(:last-child):not(.dropdown-toggle),.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child),.btn-group-vertical>.dropdown-toggle:not(:first-child),.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group-vertical,.btn-group>.btn-group{float:left}.btn-group-vertical>.btn-group-vertical:not(:first-child):not(:last-child)>.btn,.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group-vertical:first-child>.btn:last-child,.btn-group-vertical>.btn-group-vertical:first-child>.dropdown-toggle,.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group-vertical>.btn-group-vertical:last-child>.btn:first-child,.btn-group>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group-vertical .dropdown-toggle:active,.btn-group-vertical.open .dropdown-toggle,.btn-group.open .dropdown-toggle{outline:0}.btn-group-xs>.btn{padding:2px 8px;padding:1px 5px;font-size:12px;line-height:1.5;border-radius:4px}.btn-group-sm>.btn{padding:2px 8px;font-size:12px;line-height:1.5;border-radius:4px}.btn-group-lg>.btn{padding:10px 16px;font-size:17px;line-height:1.25;border-radius:4px}.btn-group-vertical>.btn+.dropdown-toggle,.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group-vertical>.btn-lg+.dropdown-toggle,.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group-vertical.open .dropdown-toggle,.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group-vertical.open .dropdown-toggle.btn-link,.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group,.btn-group-justified>.btn-group-vertical{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn,.btn-group-justified>.btn-group-vertical .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu,.btn-group-justified>.btn-group-vertical .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group-vertical>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group-vertical>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group-vertical,.btn-group-vertical>.btn-group-vertical>.btn,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group-vertical>.btn,.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn+.btn-group-vertical,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group,.btn-group-vertical>.btn-group-vertical+.btn,.btn-group-vertical>.btn-group-vertical+.btn-group-vertical{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child),.btn-group-vertical>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group-vertical:not(:first-child):not(:last-child)>.btn,.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group-vertical:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group-vertical:first-child:not(:last-child)>.dropdown-toggle,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group-vertical:last-child:not(:first-child)>.btn:first-child,.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#e5e5e5;border-radius:4px}.progress-bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;background-color:#3280fc;-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#38b03f}.progress-bar-info{background-color:#03b8cf}.progress-bar-warning{background-color:#f1a325}.progress-bar-danger{background-color:#ea644a}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.53846154;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #e5e5e5}hr.divider-sm{margin-top:10px;margin-bottom:10px}hr.divider{margin:0}.label{display:inline;padding:.2em .6em .2em;font-size:75%;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:grey;border-radius:.25em}.label[href]:focus,.label[href]:hover{color:#fff;background-color:#666}.label.label-circle{color:grey;background:0 0;border:1px solid grey}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.label-badge{display:inline-block;min-width:18px;padding:3px 7px;font-size:12px;line-height:1;border-radius:9px}.label-dot{display:inline-block;width:10px;height:10px;padding:0;line-height:13px;text-indent:-9999em;border-radius:5px}.label-dot:empty{display:inline-block}.label-primary{background-color:#3280fc}.label-primary[href]:focus,.label-primary[href]:hover{color:#fff;background-color:#0462f7}.label-primary.label-circle{color:#3280fc;background:0 0;border:1px solid #3280fc}.label-success{background-color:#38b03f}.label-success[href]:focus,.label-success[href]:hover{color:#fff;background-color:#2c8931}.label-success.label-circle{color:#38b03f;background:0 0;border:1px solid #38b03f}.label-info{background-color:#03b8cf}.label-info[href]:focus,.label-info[href]:hover{color:#fff;background-color:#028b9d}.label-info.label-circle{color:#03b8cf;background:0 0;border:1px solid #03b8cf}.label-warning{background-color:#f1a325}.label-warning[href]:focus,.label-warning[href]:hover{color:#fff;background-color:#d5890e}.label-warning.label-circle{color:#f1a325;background:0 0;border:1px solid #f1a325}.label-danger{background-color:#ea644a}.label-danger[href]:focus,.label-danger[href]:hover{color:#fff;background-color:#e53d1c}.label-danger.label-circle{color:#ea644a;background:0 0;border:1px solid #ea644a}.btn .label,.nav-primary>li>a>.label{position:relative;top:-1px}.btn-danger .label,.btn-info .label,.btn-primary .label,.btn-success .label,.btn-warning .label{background-color:rgba(0,0,0,.2)}.list-group-item.active>.label,.nav-pills>.active>a>.label,.nav-primary>.active>a>.label{color:#145ccd;background-color:#fff}.nav>li>a>.label{margin-left:3px}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:grey}@font-face{font-family:ZenIcon;font-style:normal;font-weight:400;src:url(../fonts/zenicon.eot?v=2.2.0);src:url(../fonts/zenicon.eot?#iefix&v=2.2.0) format('embedded-opentype'),url(../fonts/zenicon.woff?v=2.2.0) format('woff'),url(../fonts/zenicon.ttf?v=2.2.0) format('truetype'),url(../fonts/zenicon.svg#regular?v=2.2.0) format('svg')}.icon,[class*=" icon-"],[class^=icon-]{font-family:ZenIcon;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-transform:none;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon:before{display:inline-block;min-width:14px;text-align:center}a .icon,a [class*=" icon-"],a [class^=icon-]{display:inline}.icon-lg:before{font-size:1.33333333em;vertical-align:-10%}.icon-2x{font-size:28px}.icon-3x{font-size:42px}.icon-4x{font-size:56px}.icon-5x{font-size:70px}.icon-spin{display:inline-block;-webkit-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear}a .icon-spin{display:inline-block;text-decoration:none}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0);transform:rotate(0)}100%{-o-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spin{0%{-webkit-transform:rotate(0);-o-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);-o-transform:rotate(359deg);transform:rotate(359deg)}}.icon-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.icon-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.icon-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.icon-flip-horizontal{-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);-o-transform:scale(-1,1);transform:scale(-1,1)}.icon-flip-vertical{-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);-o-transform:scale(1,-1);transform:scale(1,-1)}.icon.icon-flip-horizontal,.icon.icon-flip-vertical,.icon.icon-rotate-180,.icon.icon-rotate-270,.icon.icon-rotate-90{display:inline-block}.icon-resize:before{content:'\e667'}.icon-expand-full:before{content:'\e6a3'}.icon-arrows-alt:before{content:'\e6a3'}.icon-fullscreen:before{content:'\e6a3'}.icon-collapse-full:before{content:'\e682'}.icon-yinyang:before{content:'\e687'}.icon-taiji:before{content:'\e687'}.icon-window:before{content:'\e68e'}.icon-window-alt:before{content:'\e68f'}.icon-carousel:before{content:'\e6b0'}.icon-spinner-snake:before{content:'\e97b'}.icon-spinner-indicator:before{content:'\e97c'}.icon-check-board:before{content:'\e9b8'}.icon-bar-chart:before{content:'\f080'}.icon-bar-chart-o:before{content:'\f080'}.icon-github:before{content:'\f09b'}.icon-dot-circle:before{content:'\f192'}.icon-dot-circle-o:before{content:'\f192'}.icon-cube-alt:before{content:'\f1b2'}.icon-cubes:before{content:'\f1b3'}.icon-file-pdf:before{content:'\f1c1'}.icon-file-word:before{content:'\f1c2'}.icon-file-excel:before{content:'\f1c3'}.icon-file-powerpoint:before{content:'\f1c4'}.icon-file-image:before{content:'\f1c5'}.icon-file-photo:before{content:'\f1c5'}.icon-file-picture:before{content:'\f1c5'}.icon-file-archive:before{content:'\f1c6'}.icon-file-zip:before{content:'\f1c6'}.icon-file-audio:before{content:'\f1c7'}.icon-file-sound:before{content:'\f1c7'}.icon-file-movie:before{content:'\f1c8'}.icon-file-video:before{content:'\f1c8'}.icon-file-code:before{content:'\f1c9'}.icon-circle-o-notch:before{content:'\f1ce'}.icon-chanzhi:before{content:'\e906'}.icon-chanzhi-pro:before{content:'\e905'}.icon-zsite:before{content:'\e904'}.icon-zsite-pro:before{content:'\e903'}.icon-qq:before{content:'\f600'}.icon-wechat:before{content:'\f1d7'}.icon-weixin:before{content:'\f1d7'}.icon-history:before{content:'\f1da'}.icon-circle-thin:before{content:'\f1db'}.icon-sliders:before{content:'\f1de'}.icon-newspaper-o:before{content:'\f1ea'}.icon-calculator:before{content:'\f1ec'}.icon-paint-brush:before{content:'\f1fc'}.icon-area-chart:before{content:'\f1fe'}.icon-pie-chart:before{content:'\f200'}.icon-line-chart:before{content:'\f201'}.icon-toggle-off:before{content:'\f204'}.icon-toggle-on:before{content:'\f205'}.icon-diamond:before{content:'\f219'}.icon-venus:before{content:'\f221'}.icon-mars:before{content:'\f222'}.icon-server:before{content:'\f233'}.icon-music:before{content:'\e602'}.icon-search:before{content:'\e603'}.icon-envelope:before{content:'\e604'}.icon-heart:before{content:'\e605'}.icon-star:before{content:'\e606'}.icon-star-empty:before{content:'\e607'}.icon-user:before{content:'\e608'}.icon-film:before{content:'\e609'}.icon-th-large:before{content:'\e60a'}.icon-th:before{content:'\e60b'}.icon-th-list:before{content:'\e60c'}.icon-ok:before{content:'\e60d'}.icon-check:before{content:'\e60d'}.icon-remove:before{content:'\d7'}.icon-times:before{content:'\d7'}.icon-zoom-in:before{content:'\e60f'}.icon-zoom-out:before{content:'\e610'}.icon-off:before{content:'\e611'}.icon-cog:before{content:'\e613'}.icon-trash:before{content:'\e614'}.icon-home:before{content:'\e615'}.icon-file-o:before{content:'\e616'}.icon-file-alt:before{content:'\e616'}.icon-time:before{content:'\e617'}.icon-download-alt:before{content:'\e618'}.icon-download:before{content:'\e619'}.icon-upload:before{content:'\e61a'}.icon-inbox:before{content:'\e61b'}.icon-play-circle:before{content:'\e61c'}.icon-repeat:before{content:'\e61d'}.icon-refresh:before{content:'\e61e'}.icon-list-alt:before{content:'\e61f'}.icon-lock:before{content:'\e620'}.icon-flag:before{content:'\e621'}.icon-headphones:before{content:'\e622'}.icon-volume-off:before{content:'\e623'}.icon-volume-up:before{content:'\e625'}.icon-qrcode:before{content:'\e626'}.icon-barcode:before{content:'\e627'}.icon-tag:before{content:'\e628'}.icon-tags:before{content:'\e629'}.icon-book:before{content:'\e62a'}.icon-bookmark:before{content:'\e62b'}.icon-print:before{content:'\e62c'}.icon-camera:before{content:'\e62d'}.icon-font:before{content:'\e62e'}.icon-bold:before{content:'\e62f'}.icon-italic:before{content:'\f033'}.icon-header:before{content:'\f1dc'}.icon-underline:before{content:'\f0cd'}.icon-strikethrough:before{content:'\f0cc'}.icon-eraser:before{content:'\f12d'}.icon-align-justify:before{content:'\e636'}.icon-list:before{content:'\e637'}.icon-picture:before{content:'\e63b'}.icon-pencil:before{content:'\e63c'}.icon-map-marker:before{content:'\e63d'}.icon-adjust:before{content:'\e63e'}.icon-tint:before{content:'\e63f'}.icon-edit:before{content:'\e640'}.icon-share:before{content:'\e641'}.icon-checked:before{content:'\e642'}.icon-move:before{content:'\e643'}.icon-arrows:before{content:'\e643'}.icon-step-backward:before{content:'\e644'}.icon-fast-backward:before{content:'\e645'}.icon-backward:before{content:'\e646'}.icon-play:before{content:'\e647'}.icon-pause:before{content:'\e648'}.icon-stop:before{content:'\e649'}.icon-forward:before{content:'\e64a'}.icon-fast-forward:before{content:'\e64b'}.icon-step-forward:before{content:'\e64c'}.icon-eject:before{content:'\e64d'}.icon-chevron-left:before{content:'\e64e'}.icon-chevron-right:before{content:'\e64f'}.icon-plus-sign:before{content:'\e650'}.icon-minus-sign:before{content:'\e651'}.icon-remove-sign:before{content:'\e652'}.icon-ok-sign:before{content:'\e653'}.icon-check-circle:before{content:'\e653'}.icon-question-sign:before{content:'\e654'}.icon-info-sign:before{content:'\e655'}.icon-remove-circle:before{content:'\e657'}.icon-ok-circle:before{content:'\e658'}.icon-check-circle-o:before{content:'\e658'}.icon-ban-circle:before{content:'\e659'}.icon-arrow-left:before{content:'\e65a'}.icon-arrow-right:before{content:'\e65b'}.icon-arrow-up:before{content:'\e65c'}.icon-arrow-down:before{content:'\e65d'}.icon-share-alt:before{content:'\e65e'}.icon-resize-full:before{content:'\e65f'}.icon-resize-small:before{content:'\e660'}.icon-plus:before{content:'\e661'}.icon-minus:before{content:'\e662'}.icon-asterisk:before{content:'\e663'}.icon-exclamation-sign:before{content:'\e664'}.icon-gift:before{content:'\e665'}.icon-leaf:before{content:'\e666'}.icon-eye-open:before{content:'\e668'}.icon-eye-close:before{content:'\e669'}.icon-warning-sign:before{content:'\e66a'}.icon-plane:before{content:'\e66b'}.icon-calendar:before{content:'\e66c'}.icon-random:before{content:'\e66d'}.icon-comment:before{content:'\e66e'}.icon-chevron-up:before{content:'\e670'}.icon-chevron-down:before{content:'\e671'}.icon-shopping-cart:before{content:'\e673'}.icon-folder-close:before{content:'\e674'}.icon-folder-open:before{content:'\e675'}.icon-resize-v:before{content:'\e676'}.icon-resize-h:before{content:'\e677'}.icon-bar-chart-alt:before{content:'\e678'}.icon-camera-retro:before{content:'\e679'}.icon-key:before{content:'\e67a'}.icon-cogs:before{content:'\e67b'}.icon-comments:before{content:'\e67c'}.icon-thumbs-o-up:before{content:'\e67d'}.icon-thumbs-o-down:before{content:'\e67e'}.icon-star-half:before{content:'\e67f'}.icon-heart-empty:before{content:'\e680'}.icon-signout:before{content:'\e681'}.icon-pushpin:before{content:'\e683'}.icon-external-link:before{content:'\e684'}.icon-signin:before{content:'\e685'}.icon-trophy:before{content:'\e686'}.icon-upload-alt:before{content:'\e688'}.icon-lemon:before{content:'\e689'}.icon-phone:before{content:'\e68a'}.icon-check-empty:before{content:'\e68b'}.icon-bookmark-empty:before{content:'\e68c'}.icon-phone-sign:before{content:'\e68d'}.icon-credit:before{content:'\e690'}.icon-rss:before{content:'\e691'}.icon-hdd:before{content:'\e692'}.icon-bullhorn:before{content:'\e693'}.icon-bell:before{content:'\e694'}.icon-certificate:before{content:'\e695'}.icon-hand-right:before{content:'\e696'}.icon-hand-left:before{content:'\e697'}.icon-hand-up:before{content:'\e698'}.icon-hand-down:before{content:'\e699'}.icon-circle-arrow-left:before{content:'\e69a'}.icon-circle-arrow-right:before{content:'\e69b'}.icon-circle-arrow-up:before{content:'\e69c'}.icon-circle-arrow-down:before{content:'\e69d'}.icon-globe:before{content:'\e69e'}.icon-wrench:before{content:'\e69f'}.icon-tasks:before{content:'\e6a0'}.icon-filter:before{content:'\e6a1'}.icon-group:before{content:'\e6a4'}.icon-link:before{content:'\e6a5'}.icon-cloud:before{content:'\e6a6'}.icon-beaker:before{content:'\e6a7'}.icon-cut:before{content:'\e6a8'}.icon-copy:before{content:'\e6a9'}.icon-paper-clip:before{content:'\e6aa'}.icon-save:before{content:'\e6ab'}.icon-sign-blank:before{content:'\e6ac'}.icon-bars:before{content:'\e6ad'}.icon-reorder:before{content:'\e6ad'}.icon-list-ul:before{content:'\e6ae'}.icon-list-ol:before{content:'\e6af'}.icon-table:before{content:'\e6b2'}.icon-magic:before{content:'\e6b3'}.icon-caret-down:before{content:'\e6b8'}.icon-caret-up:before{content:'\e6b9'}.icon-caret-left:before{content:'\e6ba'}.icon-caret-right:before{content:'\e6bb'}.icon-columns:before{content:'\e6bc'}.icon-sort:before{content:'\e6bd'}.icon-sort-down:before{content:'\e6be'}.icon-sort-up:before{content:'\e6bf'}.icon-envelope-alt:before{content:'\e6c0'}.icon-undo:before{content:'\e6c1'}.icon-dashboard:before{content:'\e6c3'}.icon-comment-alt:before{content:'\e6c4'}.icon-comments-alt:before{content:'\e6c5'}.icon-bolt:before{content:'\e6c6'}.icon-sitemap:before{content:'\e6c7'}.icon-umbrella:before{content:'\e6c8'}.icon-paste:before{content:'\e6c9'}.icon-lightbulb:before{content:'\e6ca'}.icon-exchange:before{content:'\e6cb'}.icon-cloud-download:before{content:'\e6cc'}.icon-cloud-upload:before{content:'\e6cd'}.icon-bell-alt:before{content:'\e6d1'}.icon-coffee:before{content:'\e6d2'}.icon-file-text-o:before{content:'\e6d4'}.icon-file-text-alt:before{content:'\e6d4'}.icon-building:before{content:'\e6d5'}.icon-double-angle-left:before{content:'\e6dc'}.icon-double-angle-right:before{content:'\e6dd'}.icon-double-angle-up:before{content:'\e6de'}.icon-double-angle-down:before{content:'\e6df'}.icon-angle-left:before{content:'\e6e0'}.icon-angle-right:before{content:'\e6e1'}.icon-angle-up:before{content:'\e6e2'}.icon-angle-down:before{content:'\e6e3'}.icon-desktop:before{content:'\e6e4'}.icon-laptop:before{content:'\e6e5'}.icon-tablet:before{content:'\e6e6'}.icon-mobile:before{content:'\e6e7'}.icon-circle-blank:before{content:'\e6e8'}.icon-quote-left:before{content:'\e6e9'}.icon-quote-right:before{content:'\e6ea'}.icon-spinner:before{content:'\e6eb'}.icon-circle:before{content:'\e6ec'}.icon-reply:before{content:'\e6ed'}.icon-folder-close-alt:before{content:'\e6ef'}.icon-folder-open-alt:before{content:'\e6f0'}.icon-expand-alt:before{content:'\e6f1'}.icon-collapse-alt:before{content:'\e6f2'}.icon-smile:before{content:'\e6f3'}.icon-frown:before{content:'\e6f4'}.icon-meh:before{content:'\e6f5'}.icon-gamepad:before{content:'\e6f6'}.icon-keyboard:before{content:'\e6f7'}.icon-flag-alt:before{content:'\e6f8'}.icon-flag-checkered:before{content:'\e6f9'}.icon-terminal:before{content:'\e6fa'}.icon-code:before{content:'\e6fb'}.icon-reply-all:before{content:'\e6fc'}.icon-star-half-full:before{content:'\e6fd'}.icon-location-arrow:before{content:'\e6fe'}.icon-crop:before{content:'\e6ff'}.icon-code-fork:before{content:'\e700'}.icon-unlink:before{content:'\e701'}.icon-question:before{content:'\e702'}.icon-info:before{content:'\e703'}.icon-shield:before{content:'\e70b'}.icon-calendar-empty:before{content:'\e70c'}.icon-rocket:before{content:'\e70e'}.icon-chevron-sign-left:before{content:'\e70f'}.icon-chevron-sign-right:before{content:'\e710'}.icon-chevron-sign-up:before{content:'\e711'}.icon-chevron-sign-down:before{content:'\e712'}.icon-html5:before{content:'\e713'}.icon-anchor:before{content:'\e714'}.icon-unlock-alt:before{content:'\e715'}.icon-bullseye:before{content:'\e716'}.icon-ellipsis-h:before{content:'\e717'}.icon-ellipsis-v:before{content:'\e718'}.icon-rss-sign:before{content:'\e719'}.icon-play-sign:before{content:'\e71a'}.icon-minus-sign-alt:before{content:'\e71c'}.icon-plus-sign-alt:before{content:'\f0fe'}.icon-check-minus:before{content:'\e71d'}.icon-check-plus:before{content:'\f196'}.icon-level-up:before{content:'\e71e'}.icon-level-down:before{content:'\e71f'}.icon-check-sign:before{content:'\e720'}.icon-edit-sign:before{content:'\e721'}.icon-external-link-sign:before{content:'\e722'}.icon-share-sign:before{content:'\e723'}.icon-compass:before{content:'\e724'}.icon-collapse:before{content:'\e725'}.icon-collapse-top:before{content:'\e726'}.icon-expand:before{content:'\e727'}.icon-dollar:before{content:'\e728'}.icon-yen:before{content:'\e729'}.icon-file:before{content:'\e72b'}.icon-file-text:before{content:'\e72c'}.icon-sort-by-alphabet:before{content:'\e72d'}.icon-sort-by-alphabet-alt:before{content:'\e72e'}.icon-sort-by-attributes:before{content:'\e72f'}.icon-sort-by-attributes-alt:before{content:'\e730'}.icon-sort-by-order:before{content:'\e731'}.icon-sort-by-order-alt:before{content:'\e732'}.icon-thumbs-up:before{content:'\e733'}.icon-thumbs-down:before{content:'\e734'}.icon-long-arrow-down:before{content:'\e736'}.icon-long-arrow-up:before{content:'\e737'}.icon-long-arrow-left:before{content:'\e738'}.icon-long-arrow-right:before{content:'\e739'}.icon-apple:before{content:'\e73a'}.icon-windows:before{content:'\e73b'}.icon-android:before{content:'\e73c'}.icon-linux:before{content:'\e73d'}.icon-sun:before{content:'\e742'}.icon-moon:before{content:'\e743'}.icon-archive:before{content:'\e744'}.icon-bug:before{content:'\e745'}.icon-alipay:before,.icon-zhifubao:before{content:'\e901'}.icon-alipay-square:before,.icon-zhifubao-square:before{content:'\e900'}.icon-taobao:before{content:'\e902'}.icon-weibo:before{content:'\e746'}.icon-renren:before{content:'\e747'}.icon-chrome:before{content:'\e76c'}.icon-firefox:before{content:'\e76d'}.icon-ie:before{content:'\e76e'}.icon-opera:before{content:'\e76f'}.icon-safari:before{content:'\e770'}.icon-node:before{content:'\e76a'}.icon-layout:before{content:'\e768'}.icon-usecase:before{content:'\e74a'}.icon-stack:before{content:'\e769'}.icon-branch:before{content:'\e74b'}.icon-chat:before{content:'\e74c'}.icon-chat-line:before{content:'\e74f'}.icon-comment-line:before{content:'\e74f'}.icon-chat-dot:before{content:'\e750'}.icon-cube:before{content:'\e751'}.icon-database:before{content:'\f1c0'}.icon-align-left:before{content:'\e633'}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:19.5px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:5px 0 0;margin-top:0\9;line-height:normal}input[type=file]{display:block}select[multiple],select[size]{height:auto}select:-moz-focusring{color:transparent;text-shadow:0 0 0 #000}select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}.form-control::-webkit-input-placeholder{color:grey}.form-control::-moz-placeholder{color:grey}.form-control:-ms-input-placeholder{color:grey}.form-control::placeholder{color:grey}.form-control{display:block;width:100%;height:32px;padding:5px 8px;font-size:13px;line-height:1.53846154;color:#222;vertical-align:middle;background-color:#fff;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s,-webkit-box-shadow ease-in-out .15s}.form-control.focus,.form-control:focus{border-color:#145ccd;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(20,92,205,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(20,92,205,.6)}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#e5e5e5}.form-control[readonly]{cursor:default}textarea.form-control{height:auto}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:3px;margin-top:4px\9;margin-left:-20px}.os-android .checkbox input[type=checkbox],.os-android .checkbox-inline input[type=checkbox],.os-android .radio input[type=radio],.os-android .radio-inline input[type=radio]{margin-top:0}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.input-sm{height:24px;padding:2px 8px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:24px;line-height:24px}textarea.input-sm{height:auto}.input-lg{height:43px;padding:10px 16px;font-size:17px;line-height:1.25;border-radius:6px}select.input-lg{height:43px;line-height:43px}textarea.input-lg{height:auto}.has-warning .help-block,.has-warning>label{color:#f1a325}.has-warning .form-control{border-color:#f1a325;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#d5890e;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #f7cb85;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #f7cb85}.has-warning .input-group-addon{color:#f1a325;background-color:#fff0d5;border-color:#f1a325}.has-error .help-block,.has-error>label{color:#ea644a}.has-error .form-control{border-color:#ea644a;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#e53d1c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #f5b2a5;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #f5b2a5}.has-error .input-group-addon{color:#ea644a;background-color:#ffe5e0;border-color:#ea644a}.has-success .help-block,.has-success>label{color:#38b03f}.has-success .form-control{border-color:#38b03f;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2c8931;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #79d57f;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #79d57f}.has-success .input-group-addon{color:#38b03f;background-color:#ddf4df;border-color:#38b03f}.form-control-static{min-height:33px;padding-top:6px;padding-bottom:6px;margin-bottom:0}.help-block{display:block;margin:5px 0;color:#757575}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{float:none;margin-left:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .form-group>label,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:6px;margin-top:0;margin-bottom:0}.form-horizontal .form-group{margin-right:-10px;margin-left:-10px}@media (min-width:768px){.form-horizontal .form-group>label{text-align:right}}.required{position:relative}.required:after{position:absolute;top:0;right:-10px;display:inline-block;font-size:17px;color:#ea644a;content:'*'}.form-horizontal .required:after{top:5px;right:-1px}.form-condensed .form-group{margin-bottom:10px}.form-condensed .form-control{height:24px;padding:2px 8px;font-size:12px;line-height:1.5;border-radius:3px}select.form-condensed .form-control{height:24px;line-height:24px}textarea.form-condensed .form-control{height:auto}.form-condensed textarea.form-control{height:auto}.form-condensed .btn{padding:2px 8px;font-size:12px;line-height:1.5;border-radius:4px}.form-condensed .input-group>.form-control,.form-condensed .input-group>.input-group-addon,.form-condensed .input-group>.input-group-btn>.btn{padding:2px 8px;font-size:12px;border-radius:3px}.form-condensed .input-group .form-control:first-child,.form-condensed .input-group-addon:first-child,.form-condensed .input-group-btn:first-child>.btn,.form-condensed .input-group-btn:first-child>.btn-group-vertical>.btn,.form-condensed .input-group-btn:first-child>.btn-group>.btn,.form-condensed .input-group-btn:first-child>.dropdown-toggle,.form-condensed .input-group-btn:last-child>.btn-group-vertical:not(:last-child)>.btn,.form-condensed .input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.form-condensed .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.form-condensed .input-group .form-control:last-child,.form-condensed .input-group-addon:last-child,.form-condensed .input-group-btn:first-child>.btn-group-vertical:not(:first-child)>.btn,.form-condensed .input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.form-condensed .input-group-btn:first-child>.btn:not(:first-child),.form-condensed .input-group-btn:last-child>.btn,.form-condensed .input-group-btn:last-child>.btn-group-vertical>.btn,.form-condensed .input-group-btn:last-child>.btn-group>.btn,.form-condensed .input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.form-condensed .input-group-addon:first-child{border-right:0}.form-condensed .input-group-addon:last-child{border-left:0}.form-condensed .input-group-addon.fix-border,.form-condensed .input-group-btn.fix-border>.btn{border-right:0;border-left:0;border-radius:0}.form-condensed.form-horizontal .checkbox,.form-condensed.form-horizontal .checkbox-inline,.form-condensed.form-horizontal .form-group>label,.form-condensed.form-horizontal .radio,.form-condensed.form-horizontal .radio-inline{padding-top:1px}.switch{position:relative}.switch>input{position:absolute;top:0;left:0;display:block;width:100%;height:100%;margin:0;opacity:0}.switch>label{display:block;padding:5px 0 5px 35px;margin:0;font-weight:400;line-height:20px}.switch>label:after,.switch>label:before{position:absolute;top:5px;left:0;display:block;width:30px;height:20px;pointer-events:none;content:' ';border:1px solid #ddd;border-radius:10px;-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.switch>label:after{top:6px;width:18px;height:18px;background-color:#fff;border-color:#ccc;border-radius:9px;-webkit-box-shadow:rgba(0,0,0,.05) 0 1px 4px,rgba(0,0,0,.12) 0 1px 2px;box-shadow:rgba(0,0,0,.05) 0 1px 4px,rgba(0,0,0,.12) 0 1px 2px}.switch>input:checked+label:before{background-color:#3280fc;border-color:#3280fc}.switch>input:checked+label:after{left:11px;border-color:#fff}.switch.text-left>label{padding:5px 35px 5px 0}.switch.text-left>label:after,.switch.text-left>label:before{right:0;left:auto}.switch.text-left>label:after{right:12px}.switch.text-left>input:checked+label:after{right:1px;left:auto}.switch.disabled{pointer-events:none}.switch.disabled>label,.switch>input[disabled]+label{color:#ddd;pointer-events:none}.switch.disabled>label:before,.switch>input[disabled]+label:before{background-color:#fafafa}.switch.disabled>label:after,.switch>input[disabled]+label:after{opacity:.7}.switch.disabled>input:checked+label:before,.switch>input[disabled]:checked+label:before{background-color:#ccc;border-color:#ccc}.switch input:focus+label{color:#3280fc}.switch input:focus+label:before{border-color:#3280fc}.switch-inline{display:inline-block}.checkbox-primary{position:relative;display:inline-block}.checkbox-primary>label{padding-left:25px;cursor:pointer}.checkbox-primary>label:after,.checkbox-primary>label:before{position:absolute;top:2px;right:0;left:0;display:block;width:16px;height:16px;line-height:16px;text-align:center;content:' ';border-radius:2px}.checkbox-primary>label:after{z-index:1;border:1px solid grey;-webkit-transition:.4s cubic-bezier(.175,.885,.32,1);-o-transition:.4s cubic-bezier(.175,.885,.32,1);transition:.4s cubic-bezier(.175,.885,.32,1);-webkit-transition-property:border,background-color;-o-transition-property:border,background-color;transition-property:border,background-color}.checkbox-primary>label:before{top:3px;z-index:2;font-family:ZenIcon;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-transform:none;content:'\e60d';opacity:0;-webkit-transition:.2s cubic-bezier(.175,.885,.32,1);-o-transition:.2s cubic-bezier(.175,.885,.32,1);transition:.2s cubic-bezier(.175,.885,.32,1);-webkit-transition-property:opacity,-webkit-transform;-o-transition-property:opacity,-o-transform;transition-property:opacity,-webkit-transform;transition-property:opacity,transform;transition-property:opacity,transform,-webkit-transform,-o-transform;-webkit-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0);speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.checkbox-primary.checked>label:after{background-color:#3280fc;border-color:#3280fc;border-width:4px}.checkbox-primary.checked>label:before{color:#fff;opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}.close{float:right;font-size:19.5px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}@media (min-width:768px){::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-button{width:0;height:0}::-webkit-scrollbar-button:end:increment,::-webkit-scrollbar-button:start:decrement{display:block}::-webkit-scrollbar-button:vertical:end:decrement,::-webkit-scrollbar-button:vertical:start:increment{display:none}::-webkit-scrollbar-thumb:horizontal,::-webkit-scrollbar-thumb:vertical,::-webkit-scrollbar-track:horizontal,::-webkit-scrollbar-track:vertical{border-color:transparent;border-style:solid}::-webkit-scrollbar-track:vertical::-webkit-scrollbar-track:horizontal{background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box}::-webkit-scrollbar-thumb{min-height:28px;padding-top:100;background-color:rgba(0,0,0,.2);-webkit-background-clip:padding-box;background-clip:padding-box;border-radius:5px;-webkit-box-shadow:inset 1px 1px 0 rgba(0,0,0,.1),inset 0 -1px 0 rgba(0,0,0,.07)}::-webkit-scrollbar-thumb:hover{background-color:rgba(0,0,0,.4);-webkit-box-shadow:inset 1px 1px 1px rgba(0,0,0,.25)}::-webkit-scrollbar-thumb:active{background-color:rgba(0,0,0,.5);-webkit-box-shadow:inset 1px 1px 3px rgba(0,0,0,.35)}::-webkit-scrollbar-thumb:horizontal,::-webkit-scrollbar-thumb:vertical,::-webkit-scrollbar-track:horizontal,::-webkit-scrollbar-track:vertical{border-width:0}::-webkit-scrollbar-track:hover{background-color:rgba(0,0,0,.05);-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,.1)}::-webkit-scrollbar-track:active{background-color:rgba(0,0,0,.05);-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,.14),inset -1px -1px 0 rgba(0,0,0,.07)}.scrollbar-hover::-webkit-scrollbar,.scrollbar-hover::-webkit-scrollbar-button,.scrollbar-hover::-webkit-scrollbar-thumb,.scrollbar-hover::-webkit-scrollbar-track{visibility:hidden}.scrollbar-hover:hover::-webkit-scrollbar,.scrollbar-hover:hover::-webkit-scrollbar-button,.scrollbar-hover:hover::-webkit-scrollbar-thumb,.scrollbar-hover:hover::-webkit-scrollbar-track{visibility:visible}}table{max-width:100%;background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:grey;text-align:left}th{text-align:left}.table{width:100%;margin-bottom:20px}.table td,.table th{padding:8px;line-height:1.53846154;vertical-align:top;border-bottom:1px solid #ddd;-webkit-transition:background .2s cubic-bezier(.175,.885,.32,1);-o-transition:background .2s cubic-bezier(.175,.885,.32,1);transition:background .2s cubic-bezier(.175,.885,.32,1)}.table>thead>tr>th{vertical-align:bottom;background-color:#f1f1f1;border-bottom:1px solid #ddd}.table>tbody+tbody{border-top:2px solid #ddd}.table-fixed{table-layout:fixed}.table-fixed td,.table-fixed th{overflow:hidden;white-space:nowrap}.table-fixed .nofixed,.table-fixed tfoot>tr>td,.table-fixed tfoot>tr>th{overflow:visible}.table-borderless td,.table-borderless th,.table-borderless thead>tr>th{border:none}.table-auto{width:auto;max-width:100%}.table-condensed td,.table-condensed th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered td,.table-bordered th{border:1px solid #ddd}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#ebf2f9}table col[class*=col-]{display:table-column;float:none}table td[class*=col-],table th[class*=col-]{display:table-cell;float:none}.table tr.active>td,.table tr.active>th,.table tr>td.active,.table tr>th.active{background-color:#ffe7bc}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#ddf4df;border-color:#bae8b6}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#caeecd;border-color:#a8e1a3}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#ffe5e0;border-color:#ffc6c7}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ffd0c6;border-color:#ffadad}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fff0d5;border-color:#ffdcbc}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#ffe7bc;border-color:#ffcea2}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered th{border-top:none}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.label-badge{float:right}.list-group-item>.label-badge+.label-badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{color:#353535;text-decoration:none;background-color:#ebf2f9}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#3280fc;border-color:#3280fc}.list-group-item.active .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#e6e6e6}.list-group-item-heading{margin-top:0;margin-bottom:5px;color:#333}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-color:#ddd;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-body{padding:15px}.panel>.table{margin-bottom:0}.panel>.panel-body+.table{border-top:1px solid #ddd}.panel-heading{padding:8px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-title{margin-top:0;margin-bottom:0;font-size:15px}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-primary{border-color:#3280fc}.panel-primary>.panel-heading{color:#fff;background-color:#3280fc;border-color:#3280fc}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#3280fc}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#3280fc}.panel-success{border-color:#bae8b6}.panel-success>.panel-heading{color:#38b03f;background-color:#ddf4df;border-color:#bae8b6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#bae8b6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bae8b6}.panel-warning{border-color:#ffdcbc}.panel-warning>.panel-heading{color:#f1a325;background-color:#fff0d5;border-color:#ffdcbc}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#ffdcbc}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ffdcbc}.panel-danger{border-color:#ffc6c7}.panel-danger>.panel-heading{color:#ea644a;background-color:#ffe5e0;border-color:#ffc6c7}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ffc6c7}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ffc6c7}.panel-info{border-color:#a2e4de}.panel-info>.panel-heading{color:#03b8cf;background-color:#ddf3f5;border-color:#a2e4de}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#a2e4de}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#a2e4de}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.alert{padding:15px;margin-bottom:20px;color:#282828;background-color:#f1f1f1;border-radius:3px;-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.alert hr{border-top-color:#e4e4e4}.alert .alert-link{color:#161616}.alert h4{margin-top:0;color:inherit}.alert hr{margin:10px 0}.alert p,.alert ul{margin-bottom:0}.alert p+p{margin-top:5px}.alert-link{font-weight:700}.alert>[class*=icon-]{float:left;margin-top:-5px;font-size:42px;opacity:.6;-webkit-transition:opacity .2s cubic-bezier(.175,.885,.32,1);-o-transition:opacity .2s cubic-bezier(.175,.885,.32,1);transition:opacity .2s cubic-bezier(.175,.885,.32,1)}.alert>[class*=icon-]+.content{min-height:30px;margin-left:64px}.alert.with-icon{display:table;width:100%}.alert.with-icon>[class*=icon-],.alert.with-icon>[class*=icon-]+.content{display:table-cell;float:none;min-height:0;margin:0;vertical-align:middle}.alert.with-icon>[class*=icon-]{width:48px;text-align:center}.alert.with-icon>[class*=icon-]+.content{padding-left:1em}.alert-block{margin:0;border-radius:0}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-6px;right:-21px;color:inherit}.alert-primary{color:#282828;background-color:#ebf2f9}.alert-primary hr{border-top-color:#d0e0f1}.alert-primary .alert-link{color:#161616}.alert-success{color:#329d38;background-color:#ddf4df}.alert-success hr{border-top-color:#bae8b6}.alert-success .alert-link{color:#29822e}.alert-info{color:#03a2b6;background-color:#ddf3f5}.alert-info hr{border-top-color:#a2e4de}.alert-info .alert-link{color:#028293}.alert-warning{color:#ed980f;background-color:#fff0d5}.alert-warning hr{border-top-color:#ffdcbc}.alert-warning .alert-link{color:#cc830d}.alert-danger{color:#e75033;background-color:#ffe5e0}.alert-danger hr{border-top-color:#ffc6c7}.alert-danger .alert-link{color:#dd391a}.alert-inverse{color:#fff;background-color:#353535;border-color:#353535}.alert-inverse hr{border-top-color:#ddd;border-top-color:rgba(221,221,221,.25)}.alert-inverse .alert-link{color:rgba(255,255,255,.8)}.alert-primary-inverse{color:#fff;background-color:#3280fc;border-color:#3280fc}.alert-primary-inverse hr{border-top-color:#ddd;border-top-color:rgba(221,221,221,.25)}.alert-primary-inverse .alert-link{color:rgba(255,255,255,.8)}.alert-success-inverse{color:#fff;background-color:#38b03f;border-color:#38b03f}.alert-success-inverse hr{border-top-color:#ddd;border-top-color:rgba(221,221,221,.25)}.alert-success-inverse .alert-link{color:rgba(255,255,255,.8)}.alert-info-inverse{color:#fff;background-color:#03b8cf;border-color:#03b8cf}.alert-info-inverse hr{border-top-color:#ddd;border-top-color:rgba(221,221,221,.25)}.alert-info-inverse .alert-link{color:rgba(255,255,255,.8)}.alert-warning-inverse{color:#fff;background-color:#f1a325;border-color:#f1a325}.alert-warning-inverse hr{border-top-color:#ddd;border-top-color:rgba(221,221,221,.25)}.alert-warning-inverse .alert-link{color:rgba(255,255,255,.8)}.alert-danger-inverse{color:#fff;background-color:#ea644a;border-color:#ea644a}.alert-danger-inverse hr{border-top-color:#ddd;border-top-color:rgba(221,221,221,.25)}.alert-danger-inverse .alert-link{color:rgba(255,255,255,.8)}.input-control-icon-left,.input-control-icon-right,.input-control-label-left,.input-control-label-right{position:absolute;top:1px;z-index:5;height:30px;line-height:30px;opacity:.5}.input-control-icon-left,.input-control-icon-right{width:30px;text-align:center}.input-control-icon-left,.input-control-label-left{left:1px}.input-control-icon-right,.input-control-label-right{right:1px}.input-control-label-left,.input-control-label-right{width:70px;padding:0 8px;overflow:hidden;text-overflow:ellipsis}.has-label-left-sm>.input-control-label-left,.has-label-left-sm>.input-control-label-right{width:55px}.has-label-left-lg>.input-control-label-left,.has-label-left-lg>.input-control-label-right{width:95px}.input-control{position:relative}.input-control.has-icon-left>.form-control{padding-left:30px}.input-control.has-icon-right>.form-control{padding-right:30px}.input-control.has-label-left>.form-control{padding-left:70px}.input-control.has-label-right>.form-control{padding-right:70px}.input-control.has-label-left-sm>.form-control{padding-left:55px}.input-control.has-label-right-sm>.form-control{padding-right:55px}.input-control.has-label-left-lg>.form-control{padding-left:95px}.input-control.has-label-right-lg>.form-control{padding-right:95px}.input-control>a:hover{background-color:#f1f1f1;opacity:1}.form-control:focus+[class^=input-control-],.form-control:focus+[class^=input-control-]+[class^=input-control-]{opacity:1}.form-control:focus+.input-control-label-left{color:#145ccd}.empty+.search-clear-btn,.empty+.search-icon+.search-clear-btn{opacity:0!important}input:placeholder-shown+.search-clear-btn,input:placeholder-shown+.search-icon+.search-clear-btn{opacity:0!important}.search-box-circle .input-control-icon-left,.search-box-circle .input-control-icon-right,.search-box-circle>.form-control{border-radius:16px}.search-box-circle+.input-group-btn>.btn{border-radius:0 16px 16px 0}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:5px 12px;font-size:13px;font-weight:400;line-height:1;color:#222;text-align:center;background-color:#e5e5e5;border:1px solid #ccc;border-radius:4px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group-addon.fix-border{border-right:0;border-left:0}.input-group-addon:empty{width:1px;padding:0}.input-group-addon.fix-padding{width:1px;padding:0}.input-group-btn.fix-border>.btn{border-right:0;border-left:0;border-radius:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group-vertical>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group-vertical:not(:last-child)>.btn,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group-vertical:not(:first-child)>.btn,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group-vertical>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:first-child{border-right:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group,.input-group-btn:first-child>.btn-group-vertical{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group,.input-group-btn:last-child>.btn-group-vertical{margin-left:-1px}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:43px;padding:10px 16px;font-size:17px;line-height:1.25;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:43px;line-height:43px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:24px;padding:2px 8px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:24px;line-height:24px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon.input-sm{padding:2px 8px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:17px;border-radius:6px}.code,code,kbd,pre,samp{font-family:Monaco,Menlo,Consolas,"Courier New",monospace}code,kbd{padding:2px 4px;font-size:90%;color:#37474f;background-color:#f3f5f7;border-radius:4px}kbd{padding:1px 4px;font-weight:700;color:#666;background-color:#f1f1f1;border:1px solid #d7d7d7;border-bottom-width:2px}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:12px;line-height:1.38461538;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;margin:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.com{color:#93a1a1}.lit{color:#195f91}.clo,.opn,.pun{color:#93a1a1}.fun{color:#dc322f}.atv,.str{color:#d14}.kwd,.prettyprint .tag{color:#1e347b}.atn,.dec,.typ,.var{color:teal}.pln{color:#48484c}.prettyprint.linenums{-webkit-box-shadow:inset 40px 0 0 #fbfbfc,inset 41px 0 0 #ececf0;box-shadow:inset 40px 0 0 #fbfbfc,inset 41px 0 0 #ececf0}.prettyprint ol.linenums{padding-left:35px;margin-bottom:0;line-height:20px;color:#bebec5;text-shadow:0 1px 0 #fff}.pager{display:inline-block;padding-left:0;margin:20px 0;list-style:none}.pager>li{display:inline}.pager>li>a,.pager>li>span{position:relative;float:left;padding:5px 12px;margin-left:-1px;line-height:1.53846154;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pager>li:first-child>a,.pager>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pager>li:last-child>a,.pager>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pager>li>a:focus,.pager>li>a:hover,.pager>li>span:focus,.pager>li>span:hover{z-index:2;background-color:#e5e5e5}.pager>li.active>a,.pager>li.active>a:hover,.pager>li.active>span,.pager>li.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#3280fc;border-color:#3280fc}.pager>li.disabled>a,.pager>li.disabled>a:focus,.pager>li.disabled>a:hover,.pager>li.disabled>span,.pager>li.disabled>span:focus,.pager>li.disabled>span:hover{color:#ddd;pointer-events:none;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pager-justify{display:block}.pager-justify .next>a,.pager-justify .next>span{float:right;border-radius:4px}.pager-justify .previous>a,.pager-justify .previous>span{float:left;border-radius:4px}.pager-goto{width:100px;text-align:center}.pager>li>div{float:left}.pager>li .pager-goto,.pager>li .pager-size-menu,.pager>li.space{margin:0 5px}.pager-label{position:relative;float:left;padding:5px 4px;margin-left:-1px;line-height:1.53846154;text-decoration:none;border:1px solid transparent}.pager-item-left>a{border-top-left-radius:4px;border-bottom-left-radius:4px}.pager-item-right>a{border-top-right-radius:4px;border-bottom-right-radius:4px}.pager-lg>li>a,.pager-lg>li>span{padding:10px 16px;font-size:17px}.pager-lg>li:first-child>a,.pager-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pager-lg>li:last-child>a,.pager-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pager-sm>li>a,.pager-sm>li>span{padding:2px 8px;font-size:12px}.pager-sm>li:first-child>a,.pager-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pager-sm>li:last-child>a,.pager-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager-pills>li:first-child>a,.pager-pills>li:first-child>span{border-radius:16px 0 0 16px}.pager-pills>li:last-child>a,.pager-pills>li:last-child>span{border-radius:0 16px 16px 0}.pager-pills.pager-justify>li>a,.pager-pills.pager-justify>li>span{border-radius:16px}.pager-loose{display:block;margin:20px 0}.pager-loose.pager-pills>li>a,.pager-loose.pager-pills>li>span{border-radius:16px}.pager-loose>li>a,.pager-loose>li>span{margin-left:5px;border-radius:4px}.pager-loose>li:first-child>a,.pager-loose>li:first-child>span{margin-left:0}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>.nav-heading{padding:8px 15px;font-weight:700;color:grey}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:8px 15px;color:#353535}.nav>li>a:focus,.nav>li>a:hover{color:#0d3d88;text-decoration:none;background-color:#f1f1f1}.nav>li.disabled>a{color:#ddd}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#ddd;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#f1f1f1;border-color:#145ccd}.nav>li>a>img{max-width:none}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:20px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#3280fc}.nav-primary>li{float:left;margin-left:-1px}.nav-primary>li:first-child>a{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.nav-primary>li:last-child>a{border-top-right-radius:4px;border-bottom-right-radius:4px}.nav-primary>li>a{border:1px solid #ddd}.nav-primary>li.active>a,.nav-primary>li.active>a:focus,.nav-primary>li.active>a:hover{color:#fff;background-color:#3280fc;border-color:#3280fc}.nav-secondary>li{float:left}.nav-secondary>li>a{border-bottom:2px solid #e5e5e5}.nav-secondary>li.active>a,.nav-secondary>li.active>a:focus,.nav-secondary>li.active>a:hover{color:#3280fc;border-bottom-color:#3280fc}.nav-secondary>li.nav-heading{border-bottom:2px solid #e5e5e5}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-stacked.nav-primary>li,.nav-stacked.nav-primary>li>a{margin-left:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.nav-stacked.nav-primary>li+li{margin-top:-1px}.nav-stacked.nav-primary>li:first-child{margin-top:0}.nav-stacked.nav-primary>li:first-child.nav-heading,.nav-stacked.nav-primary>li:first-child>a{margin-left:0;border-top-left-radius:4px;border-top-right-radius:4px}.nav-stacked.nav-primary>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.nav-stacked.nav-primary>li.nav-heading{background-color:#f1f1f1;border:1px solid #ddd}.nav-stacked.nav-secondary>li>a{border:none;border-top-right-radius:4px;border-bottom-right-radius:4px;-webkit-box-shadow:inset 2px 0 0 #f5f5f5;box-shadow:inset 2px 0 0 #f5f5f5}.nav-stacked.nav-secondary>li>a:hover{-webkit-box-shadow:inset 2px 0 0 #e5e5e5;box-shadow:inset 2px 0 0 #e5e5e5}.nav-stacked.nav-secondary>li+li{margin-top:-1px}.nav-stacked.nav-secondary>li:first-child{margin-top:0}.nav-stacked.nav-secondary>li.active>a,.nav-stacked.nav-secondary>li.active>a:focus,.nav-stacked.nav-secondary>li.active>a:hover{background-color:#f5f5f5;-webkit-box-shadow:inset 2px 0 0 #3280fc;box-shadow:inset 2px 0 0 #3280fc}.nav-stacked.nav-secondary>li.nav-heading{border-bottom:1px solid #ddd}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}.nav-justified.nav-primary>li+li>a{border-left:0}}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.53846154;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#e5e5e5 #e5e5e5 #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:grey;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}.nav-tabs.nav-justified.nav-primary>li+li>a{border-left:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}@-moz-document url-prefix(){.nav-tabs>li.active>a:focus .nav-tabs>li>a:focus{outline:0}}.nav-tabs.nav-stacked{border-right:1px solid #ddd;border-bottom:none}.nav-tabs.nav-stacked>li{float:none;margin-right:-1px;margin-bottom:0}.nav-tabs.nav-stacked>li>a{margin-right:0;border-radius:4px 0 0 4px}.nav-tabs.nav-stacked>li.active>a,.nav-tabs.nav-stacked>li.active>a:focus,.nav-tabs.nav-stacked>li.active>a:hover{border:1px solid #ddd;border-right-color:transparent}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:40px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:10px;padding-left:10px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-10px;margin-left:-10px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:40px;padding:10px 15px;font-size:17px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-10px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:3px;margin-right:3px;margin-bottom:3px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:5px -10px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px}.navbar-nav.nav-justified>li{float:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-nav.pull-right>li>.dropdown-menu,.navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar-btn{margin-top:4px;margin-bottom:4px}.navbar-text{float:left;margin-top:10px;margin-bottom:10px}@media (min-width:768px){.navbar-text{margin-right:10px;margin-left:10px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-10px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f7f7f7;border-color:#dedede}.navbar-default .navbar-brand{color:#333}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#1a1a1a;background-color:transparent}.navbar-default .navbar-text{color:#333}.navbar-default .navbar-nav>li>a{color:#333}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#222;background-color:#e5e5e5}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:grey}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#dedede}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#333}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#222;background-color:#e5e5e5}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#333}.navbar-default .navbar-link:hover{color:#222}.navbar-default .btn-link{color:#333}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#222}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#145ccd;border-color:#10479f}.navbar-inverse .navbar-brand{color:#ddd}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#ddd}.navbar-inverse .navbar-nav>li>a{color:#ddd}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:#1868e8}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#2a74ea}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#1251b6}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#114dad}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#2a74ea}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#10479f}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#10479f}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#ddd}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:#1868e8}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#2a74ea}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#ddd}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-form{padding:10px 10px;margin-top:4px;margin-right:-10px;margin-bottom:4px;margin-left:-10px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{float:none;margin-left:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.scale{-webkit-transition:all .15s ease;-o-transition:all .15s ease;transition:all .15s ease;-webkit-transform:scale(.8);-ms-transform:scale(.8);-o-transform:scale(.8);transform:scale(.8)}.scale.in{-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out,-o-transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal>.loader{display:none}.modal.modal-loading .modal-dialog{opacity:0}.modal.modal-loading .loader{position:absolute;top:35%;left:50%;display:block;width:80px;margin-left:-40px;font-size:56px;color:#fff;text-align:center}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-iframe .modal-body>iframe{border-radius:0 0 6px 6px}.modal-dialog{position:relative;width:auto;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-dialog.modal-moveable{position:absolute;margin:0}.modal-dialog.modal-moveable .modal-header{cursor:move}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.54px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.53846154}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn,.modal-footer .btn-group-vertical .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto;-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.modal-fullscreen{position:relative;width:100%!important;height:100%!important;margin:0;border-radius:0}.modal-fullscreen .modal-body{position:absolute;top:52px;right:0;bottom:0;left:0;overflow-y:auto}.tooltip{position:absolute;z-index:1030;display:block;font-size:12px;line-height:1.4;visibility:visible;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=100);opacity:1}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#353535;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#353535}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#353535}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-width:5px 5px 0;border-top-color:#353535}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#353535}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#353535}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#353535}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#353535}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#353535}.tooltip-primary .tooltip-inner{background-color:#3280fc}.tooltip-primary.tooltip.top .tooltip-arrow{border-top-color:#3280fc}.tooltip-primary.tooltip.top-left .tooltip-arrow{border-top-color:#3280fc}.tooltip-primary.tooltip.top-right .tooltip-arrow{border-top-color:#3280fc}.tooltip-primary.tooltip.right .tooltip-arrow{border-right-color:#3280fc}.tooltip-primary.tooltip.left .tooltip-arrow{border-left-color:#3280fc}.tooltip-primary.tooltip.bottom .tooltip-arrow{border-bottom-color:#3280fc}.tooltip-primary.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#3280fc}.tooltip-primary.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#3280fc}.tooltip-success .tooltip-inner{background-color:#38b03f}.tooltip-success.tooltip.top .tooltip-arrow{border-top-color:#38b03f}.tooltip-success.tooltip.top-left .tooltip-arrow{border-top-color:#38b03f}.tooltip-success.tooltip.top-right .tooltip-arrow{border-top-color:#38b03f}.tooltip-success.tooltip.right .tooltip-arrow{border-right-color:#38b03f}.tooltip-success.tooltip.left .tooltip-arrow{border-left-color:#38b03f}.tooltip-success.tooltip.bottom .tooltip-arrow{border-bottom-color:#38b03f}.tooltip-success.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#38b03f}.tooltip-success.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#38b03f}.tooltip-info .tooltip-inner{background-color:#03b8cf}.tooltip-info.tooltip.top .tooltip-arrow{border-top-color:#03b8cf}.tooltip-info.tooltip.top-left .tooltip-arrow{border-top-color:#03b8cf}.tooltip-info.tooltip.top-right .tooltip-arrow{border-top-color:#03b8cf}.tooltip-info.tooltip.right .tooltip-arrow{border-right-color:#03b8cf}.tooltip-info.tooltip.left .tooltip-arrow{border-left-color:#03b8cf}.tooltip-info.tooltip.bottom .tooltip-arrow{border-bottom-color:#03b8cf}.tooltip-info.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#03b8cf}.tooltip-info.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#03b8cf}.tooltip-warning .tooltip-inner{background-color:#f1a325}.tooltip-warning.tooltip.top .tooltip-arrow{border-top-color:#f1a325}.tooltip-warning.tooltip.top-left .tooltip-arrow{border-top-color:#f1a325}.tooltip-warning.tooltip.top-right .tooltip-arrow{border-top-color:#f1a325}.tooltip-warning.tooltip.right .tooltip-arrow{border-right-color:#f1a325}.tooltip-warning.tooltip.left .tooltip-arrow{border-left-color:#f1a325}.tooltip-warning.tooltip.bottom .tooltip-arrow{border-bottom-color:#f1a325}.tooltip-warning.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#f1a325}.tooltip-warning.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#f1a325}.tooltip-danger .tooltip-inner{background-color:#ea644a}.tooltip-danger.tooltip.top .tooltip-arrow{border-top-color:#ea644a}.tooltip-danger.tooltip.top-left .tooltip-arrow{border-top-color:#ea644a}.tooltip-danger.tooltip.top-right .tooltip-arrow{border-top-color:#ea644a}.tooltip-danger.tooltip.right .tooltip-arrow{border-right-color:#ea644a}.tooltip-danger.tooltip.left .tooltip-arrow{border-left-color:#ea644a}.tooltip-danger.tooltip.bottom .tooltip-arrow{border-bottom-color:#ea644a}.tooltip-danger.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#ea644a}.tooltip-danger.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#ea644a}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:300px;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:4px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover.no-arrow.top{margin-top:0}.popover.no-arrow.right{margin-left:0}.popover.no-arrow.bottom{margin-top:0}.popover.no-arrow.left{margin-left:0}.popover-title{padding:8px 14px;margin:0;font-size:13px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:4px 4px 0 0}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{content:"";border-width:10px}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom .arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left .arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.popover-primary{border-color:#3280fc}.popover-primary .popover-title{color:#fff;background-color:#3280fc}.popover-primary.popover.top .arrow{border-top-color:#3280fc}.popover-primary.popover.right .arrow{border-right-color:#3280fc}.popover-primary.popover.left .arrow{border-left-color:#3280fc}.popover-primary.popover.bottom .arrow,.popover-primary.popover.bottom .arrow:after{border-bottom-color:#3280fc}.popover-success{border-color:#38b03f}.popover-success .popover-title{color:#fff;background-color:#38b03f}.popover-success.popover.top .arrow{border-top-color:#38b03f}.popover-success.popover.right .arrow{border-right-color:#38b03f}.popover-success.popover.left .arrow{border-left-color:#38b03f}.popover-success.popover.bottom .arrow,.popover-success.popover.bottom .arrow:after{border-bottom-color:#38b03f}.popover-info{border-color:#03b8cf}.popover-info .popover-title{color:#fff;background-color:#03b8cf}.popover-info.popover.top .arrow{border-top-color:#03b8cf}.popover-info.popover.right .arrow{border-right-color:#03b8cf}.popover-info.popover.left .arrow{border-left-color:#03b8cf}.popover-info.popover.bottom .arrow,.popover-info.popover.bottom .arrow:after{border-bottom-color:#03b8cf}.popover-warning{border-color:#f1a325}.popover-warning .popover-title{color:#fff;background-color:#f1a325}.popover-warning.popover.top .arrow{border-top-color:#f1a325}.popover-warning.popover.right .arrow{border-right-color:#f1a325}.popover-warning.popover.left .arrow{border-left-color:#f1a325}.popover-warning.popover.bottom .arrow,.popover-warning.popover.bottom .arrow:after{border-bottom-color:#f1a325}.popover-danger{border-color:#ea644a}.popover-danger .popover-title{color:#fff;background-color:#ea644a}.popover-danger.popover.top .arrow{border-top-color:#ea644a}.popover-danger.popover.right .arrow{border-right-color:#ea644a}.popover-danger.popover.left .arrow{border-left-color:#ea644a}.popover-danger.popover.bottom .arrow,.popover-danger.popover.bottom .arrow:after{border-bottom-color:#ea644a}.caret{display:inline-block;width:0;height:0;margin-bottom:2px;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:13px;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #cbcbcb;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.53846154;color:#353535;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#fff;text-decoration:none;background-color:#3280fc}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#3280fc;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#ddd}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dropdown-hover .dropdown-menu{margin:-1px 0}.dropdown-hover:hover>.dropdown-menu,.open>.dropdown-menu{display:block}.dropdown-hover:hover>a,.open>a{outline:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;font-weight:700;line-height:1.53846154;color:grey}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0 dotted;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;border-radius:4px}.dropdown-submenu.open>.dropdown-menu,.dropdown-submenu:hover>.dropdown-menu{display:block}.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;border-radius:4px}.dropdown-submenu>a:after{display:block;float:right;width:0;height:0;margin-top:5px;margin-right:-10px;content:" ";border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#ccc}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu>a{min-width:160px}.dropdown-submenu>.dropdown-menu.pull-left{left:-100%}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{color:#fff;text-decoration:none;background-color:#3280fc}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:10%;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=40);outline:0;opacity:.4}.carousel-control>.icon{font-size:20px}.carousel-control.left{background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.3)),to(rgba(0,0,0,.0001)));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.3) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.3) 0,rgba(0,0,0,.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.3) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4d000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.3)));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.3) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.3) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.3) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#4d000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=100);outline:0;opacity:1}.carousel-control .icon-chevron-left,.carousel-control .icon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-chevron-left,.carousel-control .icon-prev{left:50%}.carousel-control .icon-chevron-right,.carousel-control .icon-next{right:50%}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .icon-next,.carousel-control .icon-prev{top:40%;width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:80px}.carousel-control .icon-prev{left:30%}.carousel-control .icon-next{right:25%}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}[data-toggle=lightbox]{cursor:pointer}.modal-lightbox .close{position:absolute;top:0;right:0;z-index:10;display:block;width:40px;height:40px;font-size:14px;color:#fff;text-align:center;background-color:#353535;background-color:rgba(53,53,53,.2);filter:alpha(opacity=80);opacity:.8;-webkit-transition:opacity .2s cubic-bezier(.175,.885,.32,1),background-color .2s cubic-bezier(.175,.885,.32,1);-o-transition:opacity .2s cubic-bezier(.175,.885,.32,1),background-color .2s cubic-bezier(.175,.885,.32,1);transition:opacity .2s cubic-bezier(.175,.885,.32,1),background-color .2s cubic-bezier(.175,.885,.32,1)}.modal-lightbox .controller{position:absolute;top:0;display:none;height:100%;padding:0;line-height:100%;color:#fff;cursor:pointer;background-color:transparent;border:none;outline:0;-webkit-transition:background .2s cubic-bezier(.175,.885,.32,1);-o-transition:background .2s cubic-bezier(.175,.885,.32,1);transition:background .2s cubic-bezier(.175,.885,.32,1)}.modal-lightbox .controller.show{display:block}.modal-lightbox .controller>.icon{display:inline-block;width:60px;height:50px;line-height:50px;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:transparent;-webkit-transition:background .2s cubic-bezier(.175,.885,.32,1);-o-transition:background .2s cubic-bezier(.175,.885,.32,1);transition:background .2s cubic-bezier(.175,.885,.32,1)}.modal-lightbox .controller>.icon:before{font-size:20px}.modal-lightbox .controller.prev{left:0}.modal-lightbox .controller.next{right:0}.modal-lightbox .modal-dialog{position:relative;max-width:100%;max-height:100%;margin-bottom:0;background:0 0;border:none;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.modal-lightbox .modal-dialog:focus .close,.modal-lightbox .modal-dialog:hover .close{background-color:rgba(53,53,53,.5);filter:alpha(opacity=100);opacity:1}.modal-lightbox .modal-dialog:focus .close:hover,.modal-lightbox .modal-dialog:hover .close:hover{background-color:rgba(53,53,53,.9)}.modal-lightbox .modal-dialog:focus .controller>.icon,.modal-lightbox .modal-dialog:hover .controller>.icon{text-shadow:none;background-color:#353535;background-color:rgba(53,53,53,.5)}.modal-lightbox .modal-dialog:focus .controller:hover>.icon,.modal-lightbox .modal-dialog:hover .controller:hover>.icon{background-color:#353535;background-color:rgba(53,53,53,.9)}.modal-lightbox .caption{display:none}.modal-lightbox.lightbox-with-caption .caption{position:absolute;bottom:0;display:block;width:100%;padding:10px 15px;color:#fff;text-align:center;text-shadow:1px 1px 0 rgba(0,0,0,.3);background:rgba(0,0,0,.15);opacity:.5;-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.modal-lightbox.lightbox-with-caption .modal-dialog:hover .caption{background:rgba(0,0,0,.6);opacity:1}.lightbox-img{display:block;width:inherit;max-width:100%;height:auto;padding:0;margin:0 auto;cursor:pointer;-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5);-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.messager{display:table;margin:10px;overflow:hidden;color:#fff;pointer-events:auto;background-color:#353535;background-color:rgba(0,0,0,.8);border-radius:20px}.messager-content{display:table-cell;padding:10px 15px;vertical-align:top}.messager-content>[class^=icon-]{display:inline-block;margin-right:8px}.messager-actions{display:table-cell;vertical-align:top}.messager-actions>.action{min-width:40px;height:40px;padding:0 12px;color:#fafafa;color:rgba(255,255,255,.6);text-align:center;text-shadow:none;background:0 0;border:none}.messager-actions>.action.close{padding-bottom:5px;font-size:20px;font-weight:400;opacity:1}.messager-actions>.action:hover{color:#fff;background:rgba(0,0,0,.1)}.messager-actions .action-icon+.action-text{margin-left:8px}.messagers-holder{position:fixed;z-index:99999;padding:10px;pointer-events:none;-webkit-transition:top .2s cubic-bezier(.175,.885,.32,1);-o-transition:top .2s cubic-bezier(.175,.885,.32,1);transition:top .2s cubic-bezier(.175,.885,.32,1)}.messagers-holder.top{top:0}.messagers-holder.top-left{top:0;left:0}.messagers-holder.top-right{top:0;right:0}.messagers-holder.bottom{bottom:0}.messagers-holder.bottom-left{bottom:0;left:0}.messagers-holder.bottom-right{right:0;bottom:0}.messagers-holder.bottom-right .messager,.messagers-holder.top-right .messager{margin-left:auto}.messagers-holder.center{top:0}.messagers-holder.bottom,.messagers-holder.center,.messagers-holder.top{right:0;left:0}.messagers-holder.bottom .messager,.messagers-holder.center .messager,.messagers-holder.top .messager{margin:10px auto}.messager-primary{background-color:#3280fc}.messager-success{background-color:#38b03f}.messager-info{background-color:#03b8cf}.messager-warning{background-color:#f1a325}.messager-danger{background-color:#ea644a}.messager-important{background-color:#bd7b46}.messager-special{background-color:#8666b8}.article{padding:20px}.article>header h1,.article>header h2,.article>header h3{margin-bottom:20px;line-height:1.5}.article>header>.abstract,.article>header>dl{padding:10px 15px;font-size:12px;color:#686868;background-color:#f1f1f1}.article>header>.abstract>p:last-child,.article>header>dl>p:last-child{margin-bottom:0}.article>header>dl{margin:0;border-bottom:1px solid #e9e9e9}.article>header>dl.pull-right{background-color:transparent;border:none}.article>footer{border-top:1px dashed #d7d7d7}.article>footer>p{padding:10px 15px}.article-content,.article>.content{padding:20px 0;font-size:14px;line-height:1.78571429}.article-content h1,.article>.content h1{font-size:20px}.article-content h2,.article>.content h2{font-size:18px}.article-content h3,.article>.content h3{font-size:16px}.article-content h4,.article>.content h4{margin-top:15px;font-size:14px}.article-content h5,.article>.content h5{margin-top:15px;font-size:13px}.article-content h6,.article>.content h6{margin-top:15px;font-size:11px}.article-content img,.article>.content img{margin:10px 0}.article-content p>img,.article>.content p>img{margin-right:10px}.article-content p>img[align=right],.article>.content p>img[align=right]{margin-left:10px}.article-content dl,.article>.content dl{padding-right:2em;padding-left:2em}.article-content table,.article>.content table{margin-bottom:20px}.article-content table td,.article-content table th,.article>.content table td,.article>.content table th{padding:8px;line-height:1.53846154;vertical-align:top;border-bottom:1px solid #ddd}.article-content table>thead>tr>th,.article>.content table>thead>tr>th{vertical-align:bottom;background-color:#f1f1f1;border-bottom:1px solid #ddd}.article-content p{margin-bottom:0}.article-content table{width:100%}.article>.content table td,.article>.content table th,.article>.content table>thead>tr>th{border:1px solid #ddd}body.article-content{padding:8px}.article-condensed{padding:20px 0}.article-condensed>header{padding:0 20px}.article-condensed>header>.abstract,.article-condensed>header>dl{padding:10px 15px;margin:0 -20px}.article-condensed>.article-content,.article-condensed>.content{padding:20px}.article-condensed>.article-content>img,.article-condensed>.article-content>pre,.article-condensed>.content>img,.article-condensed>.content>pre{margin-right:-20px;margin-left:-20px;border-radius:0}.article-condensed>.article-content>pre,.article-condensed>.content>pre{border-right:none;border-left:none}.article-condensed>footer{border-top:1px dashed #d7d7d7}.article-condensed>footer>p{padding:10px 15px}.article-condensed>footer>.pager-justify>.previous>a{border-left:none;border-radius:0}.article-condensed>footer>.pager-justify>.next>a{border-right:none;border-radius:0}.comments>header{border-bottom:1px solid #e5e5e5}.comments>header>.alert{padding:7.5px 15px;margin-bottom:-10px}.comments>header h1,.comments>header h2,.comments>header h3{padding:10px 0;margin:10px 0}.comments>footer{padding-top:10px}.comments>footer>.reply-form>.avatar{display:block;float:left;width:40px;height:40px;margin-top:10px}.comments>footer>.reply-form>.avatar+.form{padding-left:50px}.comment{padding:10px 0;border-bottom:1px solid #e5e5e5}.comment:after,.comment:before{display:table;content:" "}.comment:after{clear:both}.comment:after,.comment:before{display:table;content:" "}.comment:after{clear:both}.comment>.avatar,.comment>.content{display:block}.comment>.avatar{float:left;width:40px;height:40px;margin-top:10px}.comment>.avatar+.content{padding-left:50px}.comment>.content>.text{margin-top:5px}.comment>.content>.actions{margin-top:4px}.comment>.content>.actions>a{display:inline-block;color:grey}.comment>.content>.actions>a+a{margin-left:5px}.comment:hover>.content>.actions>a{color:#145ccd}.comment>.comments-list{padding-top:10px;padding-bottom:0;padding-left:30px;margin-left:20px;border-left:1px dashed #e5e5e5}.comment>.comments-list>.comment{border:none;border-top:1px solid #e5e5e5}.comment>.comments-list>.comment:last-child{padding-bottom:0}.list{padding:0 15px}.list>header{padding-bottom:10px;border-bottom:1px solid #e5e5e5}.items .item{padding:10px 0;border-bottom:1px solid #e5e5e5;-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.items .item-heading h1,.items .item-heading h2,.items .item-heading h3,.items .item-heading h4,.items .item-heading h5,.items .item-heading>h6{margin-top:5px}.items .item-content:after,.items .item-content:before{display:table;content:" "}.items .item-content:after{clear:both}.items .item-content:after,.items .item-content:before{display:table;content:" "}.items .item-content:after{clear:both}.items .item-content>.media{max-width:100%;margin:5px 0}.items .item-content>.media.pull-left{max-width:150px;margin:0;margin-right:8px}.items .item-content>.media.pull-right{max-width:150px;margin:0;margin-left:8px}.items .item-footer{padding-top:5px}.items .item-footer>a{color:grey}.items-hover .item:hover{background-color:#f5f5f5}.list-condensed{padding:0}.list-condensed>.items>.item,.list-condensed>footer,.list-condensed>header{padding-right:15px;padding-left:15px}.cards{padding-top:10px;padding-bottom:10px;margin-right:-10px;margin-left:-10px}.card{position:relative;display:block;padding:0;margin-bottom:20px;overflow:hidden;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075);-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.card>img{display:block;max-width:100%;height:auto;filter:alpha(opacity=100);opacity:1}.card>.media-wrapper{display:block;width:100%;overflow:hidden;text-align:center;background-color:#f1f1f1;filter:alpha(opacity=100);opacity:1;-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.card>.media-wrapper>img{max-width:100%;vertical-align:middle}.card .card-heading{display:block;padding:10px;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card .card-actions,.card .card-content{padding:0 10px 10px 10px;overflow:hidden;text-overflow:ellipsis}.card .card-actions .btn+.pull-right{padding:6px 0;line-height:20px}.card:hover{text-decoration:none;-webkit-box-shadow:0 1px 5px rgba(0,0,0,.175);box-shadow:0 1px 5px rgba(0,0,0,.175)}.card:hover>.media-wrapper,.card:hover>img{background-color:#e5e5e5;filter:alpha(opacity=90);opacity:.9}.card:hover>.card-reveal{top:0}.cards-borderless .card{border:none;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.cards-borderless .card>.media-wrapper,.cards-borderless .card>img{overflow:hidden;border-radius:4px}.cards-borderless .card>.card-actions,.cards-borderless .card>.card-content,.cards-borderless .card>.card-heading{padding-right:0;padding-left:0}.card>.caption{position:absolute;top:-100%;left:0;display:block;width:100%;padding:5px 10px;overflow:hidden;color:#fff;text-align:center;background-color:#666;background-color:rgba(0,0,0,.7);filter:alpha(opacity=0);opacity:0;-webkit-transition:all .8s cubic-bezier(.175,.885,.32,1);-o-transition:all .8s cubic-bezier(.175,.885,.32,1);transition:all .8s cubic-bezier(.175,.885,.32,1)}.card:hover>.caption{top:0;filter:alpha(opacity=100);opacity:1}.cards-condensed{padding:0;border:1px solid #ddd;border-top:0;border-left:0}.cards-condensed>[class*=" col-"],.cards-condensed>[class^=col-]{padding:0}.cards-condensed .card{padding:10px;margin:0;border-right:0;border-bottom:0;border-radius:0;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.015);box-shadow:0 1px 2px rgba(0,0,0,.015)}.card>.card-reveal{position:absolute;top:100%;left:0;width:100%;height:100%;background-color:#f1f1f1;-webkit-transition:all .8s cubic-bezier(.175,.885,.32,1);-o-transition:all .8s cubic-bezier(.175,.885,.32,1);transition:all .8s cubic-bezier(.175,.885,.32,1)}.card>.card-reveal>.card-heading{padding:20px 10px}.card:hover>.card-reveal{top:0}.tree{padding-left:0}.tree ul{position:relative;display:none;padding-left:0}.tree li{position:relative;padding:2px 0 2px 20px;list-style:none}.tree li:before{position:absolute;top:10px;left:8px;display:block;width:3px;height:3px;content:' ';background-color:#999}.tree li.has-list:before{display:none}.tree li>.list-toggle{position:absolute;top:-1px;left:0;z-index:10;width:20px;line-height:24px;color:grey;text-align:center;cursor:pointer}.tree li>.list-toggle:before{content:'\f196'}.tree li>.list-toggle:active,.tree li>.list-toggle:hover{color:#0d3d88}.tree li.open>ul{display:block}.tree li.open>.list-toggle:before{content:'\e71d'}.tree-actions{display:inline-block;margin-left:5px;opacity:0;-webkit-transition:opacity .1s;-o-transition:opacity .1s;transition:opacity .1s}.tree-action{display:inline-block;margin-left:5px;color:grey}.tree-action:active,.tree-action:hover{text-decoration:none}.tree li:hover>.tree-actions,.tree-item-wrapper:hover>.tree-actions{opacity:1}.tree-drag-holder{background-color:#ebf2f9;opacity:.4}.tree .sort-handler{cursor:move}.tree-animate ul{opacity:0;-webkit-transition:opacity .2s cubic-bezier(.175,.885,.32,1),-webkit-transform .2s cubic-bezier(.175,.885,.32,1);-o-transition:opacity .2s cubic-bezier(.175,.885,.32,1),-o-transform .2s cubic-bezier(.175,.885,.32,1);transition:opacity .2s cubic-bezier(.175,.885,.32,1),-webkit-transform .2s cubic-bezier(.175,.885,.32,1);transition:opacity .2s cubic-bezier(.175,.885,.32,1),transform .2s cubic-bezier(.175,.885,.32,1);transition:opacity .2s cubic-bezier(.175,.885,.32,1),transform .2s cubic-bezier(.175,.885,.32,1),-webkit-transform .2s cubic-bezier(.175,.885,.32,1),-o-transform .2s cubic-bezier(.175,.885,.32,1);-webkit-transform:scale(1,.5);-ms-transform:scale(1,.5);-o-transform:scale(1,.5);transform:scale(1,.5)}.tree-animate li.open.in>ul{opacity:1;-webkit-transform:scale(1,1);-ms-transform:scale(1,1);-o-transform:scale(1,1);transform:scale(1,1)}.tree-animate.tree-lines li.has-list.open>ul:after{top:-5px;bottom:12px;left:-11px}.tree-lines ul>li:after{position:absolute;top:11px;left:-10px;z-index:1;display:block;width:22px;content:' ';border-top:1px dotted #999}.tree-lines ul>li.has-list:before,.tree-lines ul>li:before{position:absolute;top:-12px;bottom:12px;left:-11px;display:block;width:auto;height:auto;content:' ';background:0 0;border:none;border-left:1px dotted #999}.tree-lines ul>li:last-child:before{bottom:auto;height:23px}.tree-lines ul>li:first-child:before{top:-5px}.tree-lines ul>li.tree-single-item:before{height:19px}.tree-lines ul>li.has-list:after{width:14px}.tree-lines ul>li.drag-shadow:after{display:none}.tree-folders li>.list-toggle:before{content:'\e6ef'}.tree-folders li.open>.list-toggle:before{content:'\e6f0'}.tree-folders.tree-lines ul>li:first-child:before{top:-6px}.tree-folders.tree-lines li.has-list.open>ul:after{top:16px}.tree-folders ul>li.has-list:after{width:13px}.tree-folders ul>li.has-list.open:after{width:15px}.tree-chevrons li>.list-toggle:before{content:'\e710'}.tree-chevrons li.open>.list-toggle:before{content:'\e712'}.tree-chevrons li:before{top:6px;left:4px;width:10px;height:10px;background-color:#ddd;border-radius:5px}.tree-chevrons ul>li:after{width:13px}.tree-angles li>.list-toggle:before{content:'\e6e1'}.tree-angles li.open>.list-toggle:before{content:'\e6e3'}.tree-angles ul>li.has-list:after{width:15px}.tree-menu{overflow:hidden;border:1px solid #ddd;border-radius:4px}.tree-menu li{padding:0}.tree-menu li:before{display:none}.tree-menu li>a{display:block;padding:8px;margin-bottom:-1px;color:#353535}.tree-menu li>a>.icon{display:inline-block;width:20px;color:inherit;text-align:left;opacity:.6}.tree-menu li>a:active,.tree-menu li>a:focus,.tree-menu li>a:hover{color:#0d3d88;text-decoration:none;background-color:rgba(0,0,0,.04)}.tree-menu li>a:active>.icon,.tree-menu li>a:focus>.icon,.tree-menu li>a:hover>.icon{opacity:.9}.tree-menu li .list-toggle{top:6px;right:4px;left:auto;width:24px;height:24px;filter:alpha(opacity=45);opacity:.45;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s}.tree-menu li .list-toggle:before{content:'\e64f'}.tree-menu li.open>.list-toggle{filter:alpha(opacity=75);opacity:.75;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.tree-menu li.open>.list-toggle:before{content:'\e64f'}.tree-menu li>ul{background-color:rgba(0,0,0,.04)}.tree-menu li li a{padding-left:28px;border-top-color:transparent;border-bottom-color:transparent}.tree-menu li li li a{padding-left:48px}.tree-menu li li li li a{padding-left:68px}.tree-menu li.active>a{color:#fff;background-color:#3280fc;border-color:#3280fc}.tree-menu li.active>.list-toggle{color:#fff}.tree-menu>li>a{border:1px solid transparent;border-bottom-color:#ddd}.tree-menu>li.open+li>a{border-top-color:#ddd} \ No newline at end of file diff --git a/root/res/zui/fonts/zenicon.eot b/root/res/zui/fonts/zenicon.eot new file mode 100644 index 0000000000000000000000000000000000000000..4b8840927a74123ad6fb0796fee77349407dd988 GIT binary patch literal 85080 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 + + + + + +{ + "fontFamily": "ZenIcon", + "majorVersion": 2, + "minorVersion": 5, + "designerURL": "", + "fontURL": "https://zui.sexy/#control-icons", + "designer": "", + "license": "", + "licenseURL": "", + "description": "base on fontawesome\nFont generated by IcoMoon.", + "version": "Version 2.5", + "fontId": "ZenIcon", + "psName": "ZenIcon", + "subFamily": "Regular", + "fullName": "ZenIcon" +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/root/res/zui/fonts/zenicon.ttf b/root/res/zui/fonts/zenicon.ttf new file mode 100644 index 0000000000000000000000000000000000000000..0d3d5e009272302b8d2aaa448640e30da508122a GIT binary patch literal 84916 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 0) { + model = $this.data(name.substring(dotIndex + 1)); + } + + if(model && model.options) { + var func = model.options[shortName]; + if($.isFunction(func)) { + e.result = $.zui.callEvent(func, e, model); + } + } + $this.trigger(e); + return e; + }; + + $.fn.callComEvent = function(component, eventName, params) { + if (params !== undefined && !$.isArray(params)) { + params = [params]; + } + var $this = this; + var result = $this.triggerHandler(eventName, params); + + var eventCallback = component.options[eventName]; + if (eventCallback) { + result = eventCallback.apply(component, params); + } + return result; + }; +}(jQuery, window, undefined)); + + +/* ======================================================================== + * ZUI: typography.js + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + +(function($) { + 'use strict'; + + $.fn.fixOlPd = function(pd) { + pd = pd || 10; + return this.each(function() { + var $ol = $(this); + $ol.css('paddingLeft', Math.ceil(Math.log10($ol.children().length)) * pd + 10); + }); + }; + + $(function() { + $('.ol-pd-fix,.article ol').fixOlPd(); + }); +}(jQuery)); + + +/* ======================================================================== + * Bootstrap: button.js v3.0.3 + * http://getbootstrap.com/javascript/#buttons + * + * ZUI: The file has been changed in ZUI. It will not keep update with the + * Bootsrap version in the future. + * http://zui.sexy + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++ function($) { + 'use strict'; + + // BUTTON PUBLIC CLASS DEFINITION + // ============================== + + var Button = function(element, options) { + this.$element = $(element) + this.options = $.extend({}, Button.DEFAULTS, options) + this.isLoading = false + } + + Button.DEFAULTS = { + loadingText: 'loading...' + } + + Button.prototype.setState = function(state) { + var d = 'disabled' + var $el = this.$element + var val = $el.is('input') ? 'val' : 'html' + var data = $el.data() + + state = state + 'Text' + + if(!data.resetText) $el.data('resetText', $el[val]()) + + $el[val](data[state] || this.options[state]) + + // push to event loop to allow forms to submit + setTimeout($.proxy(function() { + if(state == 'loadingText') { + this.isLoading = true + $el.addClass(d).attr(d, d) + } else if(this.isLoading) { + this.isLoading = false + $el.removeClass(d).removeAttr(d) + } + }, this), 0) + } + + Button.prototype.toggle = function() { + var changed = true + var $parent = this.$element.closest('[data-toggle="buttons"]') + + if($parent.length) { + var $input = this.$element.find('input') + if($input.prop('type') == 'radio') { + if($input.prop('checked') && this.$element.hasClass('active')) changed = false + else $parent.find('.active').removeClass('active') + } + if(changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change') + } + + if(changed) this.$element.toggleClass('active') + } + + + // BUTTON PLUGIN DEFINITION + // ======================== + + var old = $.fn.button + + $.fn.button = function(option) { + return this.each(function() { + var $this = $(this) + var data = $this.data('zui.button') + var options = typeof option == 'object' && option + + if(!data) $this.data('zui.button', (data = new Button(this, options))) + + if(option == 'toggle') data.toggle() + else if(option) data.setState(option) + }) + } + + $.fn.button.Constructor = Button + + + // BUTTON NO CONFLICT + // ================== + + $.fn.button.noConflict = function() { + $.fn.button = old + return this + } + + + // BUTTON DATA-API + // =============== + + $(document).on('click.zui.button.data-api', '[data-toggle^=button]', function(e) { + var $btn = $(e.target) + if(!$btn.hasClass('btn')) $btn = $btn.closest('.btn') + $btn.button('toggle') + e.preventDefault() + }) + +}(jQuery); + + +/* ======================================================================== + * Bootstrap: alert.js v3.0.0 + * http://twbs.github.com/bootstrap/javascript.html#alerts + * ======================================================================== + * Copyright 2013 Twitter, Inc. + * + * 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. + * + * ZUI: The file has been changed in ZUI. It will not keep update with the + * Bootsrap version in the future. + * http://zui.sexy + * ======================================================================== */ + + ++ function($) { + 'use strict'; + + // ALERT CLASS DEFINITION + // ====================== + + var dismiss = '[data-dismiss="alert"]' + var zuiname = 'zui.alert'; + + var Alert = function(el) { + $(el).on('click', dismiss, this.close) + } + + Alert.prototype.close = function(e) { + var $this = $(this) + var selector = $this.attr('data-target') + + if(!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = $(selector) + + if(e) e.preventDefault() + + if(!$parent.length) { + $parent = $this.hasClass('alert') ? $this : $this.parent() + } + + $parent.trigger(e = $.Event('close.' + zuiname)) + + if(e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + $parent.trigger('closed.' + zuiname).remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent + .one($.support.transition.end, removeElement) + .emulateTransitionEnd(150) : + removeElement() + } + + + // ALERT PLUGIN DEFINITION + // ======================= + + var old = $.fn.alert + + $.fn.alert = function(option) { + return this.each(function() { + var $this = $(this) + var data = $this.data(zuiname) + + if(!data) $this.data(zuiname, (data = new Alert(this))) + if(typeof option == 'string') data[option].call($this) + }) + } + + $.fn.alert.Constructor = Alert + + + // ALERT NO CONFLICT + // ================= + + $.fn.alert.noConflict = function() { + $.fn.alert = old + return this + } + + + // ALERT DATA-API + // ============== + + $(document).on('click.' + zuiname + '.data-api', dismiss, Alert.prototype.close) + +}(window.jQuery); + +/* ======================================================================== + * ZUI: pager.js + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2017-2018 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + +(function($) { + 'use strict'; + + var NAME = 'zui.pager'; // model name + + var DEFAULT_PAGER = { + page: 0, // current page index + recTotal: 0, // records total count + recPerPage: 10, // records count per page + }; + + var LANG = { + zh_cn: { + prev: '上一页', + next: '下一页', + first: '第一页', + last: '最后一页', + goto: '跳转', + pageOf: '第 {page} 页', + totalPage: '共 {totalPage} 页', + totalCount: '共 {recTotal} 项', + pageSize: '每页 {recPerPage} 项', + itemsRange: '第 {start} ~ {end} 项', + pageOfTotal: '第 {page}/{totalPage} 页' + }, + zh_tw: { + prev: '上一頁', + next: '下一頁', + first: '第一頁', + last: '最後一頁', + goto: '跳轉', + pageOf: '第 {page} 頁', + totalPage: '共 {totalPage} 頁', + totalCount: '共 {recTotal} 項', + pageSize: '每頁 {recPerPage} 項', + itemsRange: '第 {start} ~ {end} 項', + pageOfTotal: '第 {page}/{totalPage} 頁' + }, + en: { + prev: 'Prev', + next: 'Next', + first: 'First', + last: 'Last', + goto: 'Goto', + pageOf: 'Page {page}', + totalPage: '{totalPage} pages', + totalCount: '{recTotal} items', + pageSize: '{recPerPage} items per page', + itemsRange: 'From {start} to {end}', + pageOfTotal: 'Page {page} of {totalPage}' + } + }; + + // The pager model class + var Pager = function(element, options) { + var that = this; + that.name = NAME; + that.$ = $(element); + + options = that.options = $.extend({}, Pager.DEFAULTS, this.$.data(), options); + + var lang = options.lang || 'zh_cn'; + that.lang = $.isPlainObject(lang) ? ($.extend(true, {}, LANG[lang.lang || $.zui.clientLang()], lang)) : LANG[lang]; + + that.state = {}; + + that.set(options.page, options.recTotal, options.recPerPage); + + that.$.on('click', '.pager-goto-btn', function() { + var $goto = $(this).closest('.pager-goto'); + var page = parseInt($goto.find('.pager-goto-input').val()); + if (page !== NaN) { + that.set(page); + } + }).on('click', '.pager-item', function() { + var page = $(this).data('page'); + if (typeof page === 'number' && page > 0) { + that.set(page); + } + }).on('click', '.pager-size-menu [data-size]', function() { + var size = $(this).data('size'); + if (typeof size === 'number' && size > 0) { + that.set(-1, -1, size); + } + }); + }; + + Pager.prototype.set = function(page, recTotal, recPerPage) { + var that = this; + if (typeof page === 'object' && page !== null) { + recPerPage = page.recPerPage; + recTotal = page.recTotal; + page = page.page; + } + var state = that.state; + if (!state) { + state = $.extend({}, DEFAULT_PAGER); + } + var oldState = $.extend({}, state); + if (typeof recPerPage === 'number' && recPerPage > 0) { + state.recPerPage = recPerPage; + } + if (typeof recTotal === 'number' && recTotal >= 0) { + state.recTotal = recTotal; + } + if (typeof page === 'number' && page >= 0) { + state.page = page; + } + state.totalPage = (state.recTotal && state.recPerPage) ? (Math.ceil(state.recTotal / state.recPerPage)) : 1; + state.page = Math.max(0, Math.min(state.page, state.totalPage)); + // stateRecCount is items count in current page + state.pageRecCount = state.recTotal; + if (state.page && state.recTotal) { + if (state.page < state.totalPage) { + state.pageRecCount = state.recPerPage; + } else if (state.page > 1) { + state.pageRecCount = state.recTotal - (state.recPerPage * (state.page - 1)); + } + } + state.skip = state.page > 1 ? ((state.page - 1) * state.recPerPage) : 0; + state.start = state.skip + 1; + state.end = state.skip + state.pageRecCount; + state.prev = state.page > 1 ? (state.page - 1) : 0; + state.next = state.page < state.totalPage ? (state.page + 1) : 0; + that.state = state; + if (oldState.page !== state.page || oldState.recTotal !== state.recTotal || oldState.recPerPage !== state.recPerPage) { + that.$.callComEvent(that, 'onPageChange', [state, oldState]); + } + return that.render(); + }; + + Pager.prototype.createLinkItem = function(page, text, asAElement) { + var that = this; + if (text === undefined) { + text = page; + } + var $ele = $('').attr('href', page ? that.createLink(page, that.state) : '###').html(text); + if (!asAElement) { + $ele = $('

  • ').append($ele).toggleClass('active', page === that.state.page).toggleClass('disabled', !page); + } + return $ele; + }; + + Pager.prototype.createNavItems = function(maxCount) { + var that = this; + var $nav = that.$; + var pager = that.state; + var totalPage = pager.totalPage; + var page = pager.page; + var appendItem = function(p, to) { + if(p === false) { + $nav.append(that.createLinkItem(0, to || '')); + return; + } + if(to === undefined) to = p; + for(var i = p; i <= to; ++i) { + $nav.append(that.createLinkItem(i)); + } + }; + if (maxCount === undefined) { + maxCount = that.options.maxNavCount || 10; + } + appendItem(1); + if(totalPage > 1) { + if(totalPage <= maxCount) { + appendItem(2, totalPage); + } + else if(page < (maxCount - 2)) { + appendItem(2, maxCount - 2); + appendItem(false); + appendItem(totalPage); + } + else if(page > (totalPage - maxCount + 2)) { + appendItem(false); + appendItem((totalPage - maxCount + 2), totalPage); + } + else { + appendItem(false); + appendItem(page - Math.ceil((maxCount-4)/2), page + Math.floor((maxCount-4)/2)); + appendItem(false); + appendItem(totalPage); + } + } + }; + + Pager.prototype.createGoto = function() { + var that = this; + var pager = this.state; + var $goto = $('
    '); + return $goto; + }; + + Pager.prototype.createSizeMenu = function() { + var that = this; + var pager = this.state; + var $menu = $(''); + var options = that.options.pageSizeOptions; + if (typeof options === 'string') { + options = options.split(','); + } + for (var i = 0; i < options.length; ++i) { + var size = options[i]; + if (typeof size === 'string') { + size = parseInt(size); + } + var $li = $('
  • ' + size + '
  • ').toggleClass('active', size === pager.recPerPage); + $menu.append($li); + } + return $('
    ').addClass(that.options.menuDirection).append($menu); + }; + + Pager.prototype.createElement = function(element, $pager, pager) { + var that = this; + var createLinkItem= $.proxy(that.createLinkItem, that); + var lang = that.lang; + switch (element) { + case 'prev': + return createLinkItem(pager.prev, lang.prev); + case 'prev_icon': + return createLinkItem(pager.prev, ''); + case 'next': + return createLinkItem(pager.next, lang.next); + case 'next_icon': + return createLinkItem(pager.next, ''); + case 'first': + return createLinkItem(1, lang.first, true); + case 'first_icon': + return createLinkItem(1, '', true); + case 'last': + return createLinkItem(pager.totalPage, lang.last, true); + case 'last_icon': + return createLinkItem(pager.totalPage, '', true); + case 'space': + case '|': + return $('
  • '); + case 'nav': + case 'pages': + that.createNavItems(); + return; + case 'total_text': + return $(('
    ' + lang.totalCount + '
    ').format(pager)); + case 'page_text': + return $(('
    ' + lang.pageOf + '
    ').format(pager)); + case 'total_page_text': + return $(('
    ' + lang.totalPage + '
    ').format(pager)); + case 'page_of_total_text': + return $(('
    ' + lang.pageOfTotal + '
    ').format(pager)); + case 'page_size_text': + return $(('
    ' + lang.pageSize + '
    ').format(pager)); + case 'items_range_text': + return $(('
    ' + lang.itemsRange + '
    ').format(pager)); + case 'goto': + return that.createGoto(); + case 'size_menu': + return that.createSizeMenu(); + default: + return $('
  • ').html(element); + } + }; + + Pager.prototype.createLink = function(page, pager) { + var linkCreator = this.options.linkCreator; + if (typeof linkCreator === 'string') { + return linkCreator.format($.extend({}, pager, {page: page})); + } else if ($.isFunction(linkCreator)) { + return linkCreator(page, pager); + } + return '#page=' + page; + }; + + Pager.prototype.render = function(elements) { + var that = this; + var state = that.state; + var createElement = that.options.elementCreator || that.createElement; + var isMapperCreator = $.isPlainObject(createElement); + + elements = elements || that.elements || that.options.elements; + if (typeof elements == 'string') { + elements = elements.split(','); + } + that.elements = elements; + + that.$.empty(); + + for(var i = 0; i < elements.length; ++i) { + var element = $.trim(elements[i]); + var creator = isMapperCreator ? (createElement[element] || createElement) : createElement; + var $element = creator.call(that, element, that.$, state); + if ($element === false) { + $element = that.createElement(element, that.$, state); + } + if ($element instanceof $) { + if ($element[0].tagName !== 'LI') { + $element = $('
  • ').append($element); + } + that.$.append($element); + } + } + + // Fix page item border + var $lastItem = null; + that.$.children('li').each(function() { + var $li = $(this); + var isItem = !!$li.children('.pager-item').length; + if ($lastItem) { + $lastItem.toggleClass('pager-item-right', !isItem); + } else { + if (isItem) { + $li.addClass('pager-item-left'); + } + } + $lastItem = isItem ? $li : null; + }); + + that.$.callComEvent(that, 'onRender', [state]); + return that; + }; + + // default options + Pager.DEFAULTS = $.extend({ + elements: ['first_icon', 'prev_icon', 'pages', 'next_icon', 'last_icon', 'page_of_total_text', 'items_range_text', 'total_text'], + prevIcon: 'icon-double-angle-left', + nextIcon: 'icon-double-angle-right', + firstIcon: 'icon-step-backward', + lastIcon: 'icon-step-forward', + maxNavCount: 10, + menuDirection: 'dropdown', // or dropup + pageSizeOptions: [10, 20, 30, 50, 100], + // onPageChange: null + }, DEFAULT_PAGER); + + // Extense jquery element + $.fn.pager = function(option) { + return this.each(function() { + var $this = $(this); + var data = $this.data(NAME); + var options = typeof option == 'object' && option; + + if(!data) $this.data(NAME, (data = new Pager(this, options))); + + if(typeof option == 'string') data[option](); + }); + }; + + Pager.NAME = NAME; + + $.fn.pager.Constructor = Pager; + + // Auto call pager after document load complete + $(function() { + $('[data-ride="pager"]').pager(); + }); +}(jQuery)); + + +/* ======================================================================== + * Bootstrap: tab.js v3.0.0 + * http://twbs.github.com/bootstrap/javascript.html#tabs + * + * ZUI: The file has been changed in ZUI. It will not keep update with the + * Bootsrap version in the future. + * http://zui.sexy + * ======================================================================== + * Copyright 2012 Twitter, Inc. + * + * 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. + * ======================================================================== */ + + ++ function($) { + 'use strict'; + + // TAB CLASS DEFINITION + // ==================== + + var zuiname = 'zui.tab' + var Tab = function(element) { + this.element = $(element) + } + + Tab.prototype.show = function() { + var $this = this.element + var $ul = $this.closest('ul:not(.dropdown-menu)') + var selector = $this.attr('data-target') || $this.attr('data-tab') + + if(!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 + } + + if($this.parent('li').hasClass('active')) return + + var previous = $ul.find('.active:last a')[0] + var e = $.Event('show.' + zuiname, { + relatedTarget: previous + }) + + $this.trigger(e) + + if(e.isDefaultPrevented()) return + + var $target = $(selector) + + this.activate($this.parent('li'), $ul) + this.activate($target, $target.parent(), function() { + $this.trigger({ + type: 'shown.' + zuiname, + relatedTarget: previous + }) + }) + } + + Tab.prototype.activate = function(element, container, callback) { + var $active = container.find('> .active') + var transition = callback && $.support.transition && $active.hasClass('fade') + + function next() { + $active + .removeClass('active') + .find('> .dropdown-menu > .active') + .removeClass('active') + + element.addClass('active') + + if(transition) { + element[0].offsetWidth // reflow for transition + element.addClass('in') + } else { + element.removeClass('fade') + } + + if(element.parent('.dropdown-menu')) { + element.closest('li.dropdown').addClass('active') + } + + callback && callback() + } + + transition ? + $active + .one($.support.transition.end, next) + .emulateTransitionEnd(150) : + next() + + $active.removeClass('in') + } + + + // TAB PLUGIN DEFINITION + // ===================== + + var old = $.fn.tab + + $.fn.tab = function(option) { + return this.each(function() { + var $this = $(this) + var data = $this.data(zuiname) + + if(!data) $this.data(zuiname, (data = new Tab(this))) + if(typeof option == 'string') data[option]() + }) + } + + $.fn.tab.Constructor = Tab + + + // TAB NO CONFLICT + // =============== + + $.fn.tab.noConflict = function() { + $.fn.tab = old + return this + } + + + // TAB DATA-API + // ============ + + $(document).on('click.zui.tab.data-api', '[data-toggle="tab"], [data-tab]', function(e) { + e.preventDefault() + $(this).tab('show') + }) + +}(window.jQuery); + + +/* ======================================================================== + * Bootstrap: transition.js v3.2.0 + * http://getbootstrap.com/javascript/#transitions + * + * ZUI: The file has been changed in ZUI. It will not keep update with the + * Bootsrap version in the future. + * http://zui.sexy + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++ function($) { + 'use strict'; + + // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) + // ============================================================ + + function transitionEnd() { + var el = document.createElement('bootstrap') + + var transEndEventNames = { + WebkitTransition: 'webkitTransitionEnd', + MozTransition: 'transitionend', + OTransition: 'oTransitionEnd otransitionend', + transition: 'transitionend' + } + + for(var name in transEndEventNames) { + if(el.style[name] !== undefined) { + return { + end: transEndEventNames[name] + } + } + } + + return false // explicit for ie8 ( ._.) + } + + // http://blog.alexmaccaw.com/css-transitions + $.fn.emulateTransitionEnd = function(duration) { + var called = false + var $el = this + $(this).one('bsTransitionEnd', function() { + called = true + }) + var callback = function() { + if(!called) $($el).trigger($.support.transition.end) + } + setTimeout(callback, duration) + return this + } + + $(function() { + $.support.transition = transitionEnd() + + if(!$.support.transition) return + + $.event.special.bsTransitionEnd = { + bindType: $.support.transition.end, + delegateType: $.support.transition.end, + handle: function(e) { + if($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) + } + } + }) + +}(jQuery); + + +/* ======================================================================== + * Bootstrap: collapse.js v3.0.0 + * http://twbs.github.com/bootstrap/javascript.html#collapse + * + * ZUI: The file has been changed in ZUI. It will not keep update with the + * Bootsrap version in the future. + * http://zui.sexy + * ======================================================================== + * Copyright 2012 Twitter, Inc. + * + * 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. + * ======================================================================== */ + + ++ function($) { + 'use strict'; + + var zuiname = 'zui.collapse' + + // COLLAPSE PUBLIC CLASS DEFINITION + // ================================ + + var Collapse = function(element, options) { + this.$element = $(element) + this.options = $.extend({}, Collapse.DEFAULTS, options) + this.transitioning = null + + if(this.options.parent) this.$parent = $(this.options.parent) + if(this.options.toggle) this.toggle() + } + + Collapse.DEFAULTS = { + toggle: true + } + + Collapse.prototype.dimension = function() { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + Collapse.prototype.show = function() { + if(this.transitioning || this.$element.hasClass('in')) return + + var startEvent = $.Event('show.' + zuiname) + this.$element.trigger(startEvent) + if(startEvent.isDefaultPrevented()) return + + var actives = this.$parent && this.$parent.find('.in') + + if(actives && actives.length) { + var hasData = actives.data(zuiname) + if(hasData && hasData.transitioning) return + actives.collapse('hide') + hasData || actives.data(zuiname, null) + } + + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + .addClass('collapsing')[dimension](0) + + this.transitioning = 1 + + var complete = function() { + this.$element + .removeClass('collapsing') + .addClass('in')[dimension]('auto') + this.transitioning = 0 + this.$element.trigger('shown.' + zuiname) + } + + if(!$.support.transition) return complete.call(this) + + var scrollSize = $.camelCase(['scroll', dimension].join('-')) + + this.$element + .one($.support.transition.end, $.proxy(complete, this)) + .emulateTransitionEnd(350)[dimension](this.$element[0][scrollSize]) + } + + Collapse.prototype.hide = function() { + if(this.transitioning || !this.$element.hasClass('in')) return + + var startEvent = $.Event('hide.' + zuiname) + this.$element.trigger(startEvent) + if(startEvent.isDefaultPrevented()) return + + var dimension = this.dimension() + + this.$element[dimension](this.$element[dimension]())[0].offsetHeight + + this.$element + .addClass('collapsing') + .removeClass('collapse') + .removeClass('in') + + this.transitioning = 1 + + var complete = function() { + this.transitioning = 0 + this.$element + .trigger('hidden.' + zuiname) + .removeClass('collapsing') + .addClass('collapse') + } + + if(!$.support.transition) return complete.call(this) + + this.$element[dimension](0) + .one($.support.transition.end, $.proxy(complete, this)) + .emulateTransitionEnd(350) + } + + Collapse.prototype.toggle = function() { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + + // COLLAPSE PLUGIN DEFINITION + // ========================== + + var old = $.fn.collapse + + $.fn.collapse = function(option) { + return this.each(function() { + var $this = $(this) + var data = $this.data(zuiname) + var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if(!data) $this.data(zuiname, (data = new Collapse(this, options))) + if(typeof option == 'string') data[option]() + }) + } + + $.fn.collapse.Constructor = Collapse + + + // COLLAPSE NO CONFLICT + // ==================== + + $.fn.collapse.noConflict = function() { + $.fn.collapse = old + return this + } + + + // COLLAPSE DATA-API + // ================= + + $(document).on('click.' + zuiname + '.data-api', '[data-toggle=collapse]', function(e) { + var $this = $(this), + href + var target = $this.attr('data-target') || e.preventDefault() || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 + var $target = $(target) + var data = $target.data(zuiname) + var option = data ? 'toggle' : $this.data() + var parent = $this.attr('data-parent') + var $parent = parent && $(parent) + + if(!data || !data.transitioning) { + if($parent) $parent.find('[data-toggle=collapse][data-parent="' + parent + '"]').not($this).addClass('collapsed') + $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed') + } + + $target.collapse(option) + }) + +}(window.jQuery); + + +/* ======================================================================== + * ZUI: device.js + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + +(function(window, $) { + 'use strict'; + var desktopLg = 1200, + desktop = 992, + tablet = 768; + + var $window = $(window); + + var resetCssClass = function() { + var width = $window.width(); + $('html').toggleClass('screen-desktop', width >= desktop && width < desktopLg) + .toggleClass('screen-desktop-wide', width >= desktopLg) + .toggleClass('screen-tablet', width >= tablet && width < desktop) + .toggleClass('screen-phone', width < tablet) + .toggleClass('device-mobile', width < desktop) + .toggleClass('device-desktop', width >= desktop); + }; + + var classNames = ''; + var userAgent = navigator.userAgent; + if (userAgent.match(/(iPad|iPhone|iPod)/i)) { + classNames += ' os-ios'; + } else if (userAgent.match(/android/i)) { + classNames += ' os-android'; + } else if (userAgent.match(/Win/i)) { + classNames += ' os-windows'; + } else if (userAgent.match(/Mac/i)) { + classNames += ' os-mac'; + } else if (userAgent.match(/Linux/i)) { + classNames += ' os-linux'; + } else if (userAgent.match(/X11/i)) { + classNames += ' os-unix'; + } + if ('ontouchstart' in document.documentElement) { + classNames += ' is-touchable'; + } + $('html').addClass(classNames); + + $window.resize(resetCssClass); + resetCssClass(); +}(window, jQuery)); + + +/* ======================================================================== + * ZUI: browser.js + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2014 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + +(function($) { + 'use strict'; + + var browseHappyTip = { + 'zh_cn': '您的浏览器版本过低,无法体验所有功能,建议升级或者更换浏览器。 了解更多...', + 'zh_tw': '您的瀏覽器版本過低,無法體驗所有功能,建議升級或者更换瀏覽器。了解更多...', + 'en': 'Your browser is too old, it has been unable to experience the colorful internet. We strongly recommend that you upgrade a better one. Learn more...' + }; + + // The browser modal class + var Browser = function() { + var ie = this.isIE() || this.isIE10() || false; + if(ie) { + for(var i = 10; i > 5; i--) { + if(this.isIE(i)) { + ie = i; + break; + } + } + } + + this.ie = ie; + + this.cssHelper(); + }; + + // Append CSS class to html tag + Browser.prototype.cssHelper = function() { + var ie = this.ie, + $html = $('html'); + $html.toggleClass('ie', ie) + .removeClass('ie-6 ie-7 ie-8 ie-9 ie-10'); + if(ie) { + $html.addClass('ie-' + ie) + .toggleClass('gt-ie-7 gte-ie-8 support-ie', ie >= 8) + .toggleClass('lte-ie-7 lt-ie-8 outdated-ie', ie < 8) + .toggleClass('gt-ie-8 gte-ie-9', ie >= 9) + .toggleClass('lte-ie-8 lt-ie-9', ie < 9) + .toggleClass('gt-ie-9 gte-ie-10', ie >= 10) + .toggleClass('lte-ie-9 lt-ie-10', ie < 10); + } + }; + + // Show browse happy tip + Browser.prototype.tip = function(showCoontent) { + var $browseHappy = $('#browseHappyTip'); + if(!$browseHappy.length) { + $browseHappy = $('
    '); + $browseHappy.prependTo('body'); + } + + $browseHappy.find('.content').html(showCoontent || this.browseHappyTip || browseHappyTip[$.zui.clientLang() || 'zh_cn']); + }; + + // Detect it is IE, can given a version + Browser.prototype.isIE = function(version) { + if(version === 10) return this.isIE10(); + var b = document.createElement('b'); + b.innerHTML = ''; + return b.getElementsByTagName('i').length === 1; + }; + + // Detect ie 10 with hack + Browser.prototype.isIE10 = function() { + return (/*@cc_on!@*/false); + }; + + $.zui({ + browser: new Browser() + }); + + $(function() { + if(!$('body').hasClass('disabled-browser-tip')) { + if($.zui.browser.ie && $.zui.browser.ie < 8) { + $.zui.browser.tip(); + } + } + }); +}(jQuery)); + + +/* ======================================================================== + * ZUI: date.js + * Date polyfills + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2014 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + +(function() { + 'use strict'; + + /** + * Ticks of a whole day + * @type {number} + */ + Date.ONEDAY_TICKS = 24 * 3600 * 1000; + + /** + * Format date to a string + * + * @param string format + * @return string + */ + if(!Date.prototype.format) { + Date.prototype.format = function(format) { + var date = { + 'M+': this.getMonth() + 1, + 'd+': this.getDate(), + 'h+': this.getHours(), + 'm+': this.getMinutes(), + 's+': this.getSeconds(), + 'q+': Math.floor((this.getMonth() + 3) / 3), + 'S+': this.getMilliseconds() + }; + if(/(y+)/i.test(format)) { + format = format.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length)); + } + for(var k in date) { + if(new RegExp('(' + k + ')').test(format)) { + format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? date[k] : ('00' + date[k]).substr(('' + date[k]).length)); + } + } + return format; + }; + } + + /** + * Add milliseconds to the date + * @param {number} value + */ + if(!Date.prototype.addMilliseconds) { + Date.prototype.addMilliseconds = function(value) { + this.setTime(this.getTime() + value); + return this; + }; + } + + + /** + * Add days to the date + * @param {number} days + */ + if(!Date.prototype.addDays) { + Date.prototype.addDays = function(days) { + this.addMilliseconds(days * Date.ONEDAY_TICKS); + return this; + }; + } + + + /** + * Clone a new date instane from the date + * @return {Date} + */ + if(!Date.prototype.clone) { + Date.prototype.clone = function() { + var date = new Date(); + date.setTime(this.getTime()); + return date; + }; + } + + + /** + * Judge the year is in a leap year + * @param {integer} year + * @return {Boolean} + */ + if(!Date.isLeapYear) { + Date.isLeapYear = function(year) { + return(((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0)); + }; + } + + if(!Date.getDaysInMonth) { + /** + * Get days number of the date + * @param {integer} year + * @param {integer} month + * @return {integer} + */ + Date.getDaysInMonth = function(year, month) { + return [31, (Date.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month]; + }; + } + + + /** + * Judge the date is in a leap year + * @return {Boolean} + */ + if(!Date.prototype.isLeapYear) { + Date.prototype.isLeapYear = function() { + return Date.isLeapYear(this.getFullYear()); + }; + } + + + /** + * Clear time part of the date + * @return {date} + */ + if(!Date.prototype.clearTime) { + Date.prototype.clearTime = function() { + this.setHours(0); + this.setMinutes(0); + this.setSeconds(0); + this.setMilliseconds(0); + return this; + }; + } + + + /** + * Get days of this month of the date + * @return {integer} + */ + if(!Date.prototype.getDaysInMonth) { + Date.prototype.getDaysInMonth = function() { + return Date.getDaysInMonth(this.getFullYear(), this.getMonth()); + }; + } + + + /** + * Add months to the date + * @param {date} value + */ + if(!Date.prototype.addMonths) { + Date.prototype.addMonths = function(value) { + var n = this.getDate(); + this.setDate(1); + this.setMonth(this.getMonth() + value); + this.setDate(Math.min(n, this.getDaysInMonth())); + return this; + }; + } + + + /** + * Get last week day of the date + * @param {integer} day + * @return {date} + */ + if(!Date.prototype.getLastWeekday) { + Date.prototype.getLastWeekday = function(day) { + day = day || 1; + + var d = this.clone(); + while(d.getDay() != day) { + d.addDays(-1); + } + d.clearTime(); + return d; + }; + } + + + /** + * Judge the date is same day as another date + * @param {date} date + * @return {Boolean} + */ + if(!Date.prototype.isSameDay) { + Date.prototype.isSameDay = function(date) { + return date.toDateString() === this.toDateString(); + }; + } + + + /** + * Judge the date is in same week as another date + * @param {date} date + * @return {Boolean} + */ + if(!Date.prototype.isSameWeek) { + Date.prototype.isSameWeek = function(date) { + var weekStart = this.getLastWeekday(); + var weekEnd = weekStart.clone().addDays(7); + return date >= weekStart && date < weekEnd; + }; + } + + + /** + * Judge the date is in same year as another date + * @param {date} date + * @return {Boolean} + */ + if(!Date.prototype.isSameYear) { + Date.prototype.isSameYear = function(date) { + return this.getFullYear() === date.getFullYear(); + }; + } + + /** + * Create an date instance with string, timestamp or date instance + * @param {Date|String|Number} date + * @return {Date} + */ + if (!Date.create) { + Date.create = function(date) { + if (!(date instanceof Date)) { + if (typeof date === 'number' && date < 10000000000) { + date *= 1000; + } + date = new Date(date); + } + return date; + }; + } + + if (!Date.timestamp) { + Date.timestamp = function(date) { + if (typeof date === 'number') { + if (date < 10000000000) { + date *= 1000; + } + } else { + date = Date.create(date).getTime(); + } + return date; + }; + } +}()); + + +/* ======================================================================== + * ZUI: string.js + * String Polyfill. + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + +(function() { + 'use strict'; + + /** + * Format string with argument list or object + * @param {object | arguments} args + * @return {String} + */ + if(!String.prototype.format) { + String.prototype.format = function(args) { + var result = this; + if(arguments.length > 0) { + var reg; + if(arguments.length <= 2 && typeof(args) == 'object') { + for(var key in args) { + if(args[key] !== undefined) { + reg = new RegExp('(' + (arguments[1] ? arguments[1].replace('0', key) : '{' + key + '}') + ')', 'g'); + result = result.replace(reg, args[key]); + } + } + } else { + for(var i = 0; i < arguments.length; i++) { + if(arguments[i] !== undefined) { + reg = new RegExp('({[' + i + ']})', 'g'); + result = result.replace(reg, arguments[i]); + } + } + } + } + return result; + }; + } + + /** + * Judge the string is a integer number + * + * @access public + * @return bool + */ + if(!String.prototype.isNum) { + String.prototype.isNum = function(s) { + if(s !== null) { + var r, re; + re = /\d*/i; + r = s.match(re); + return(r == s) ? true : false; + } + return false; + }; + } + + if(!String.prototype.endsWith) { + String.prototype.endsWith = function(searchString, position) { + var subjectString = this.toString(); + if(position === undefined || position > subjectString.length) { + position = subjectString.length; + } + position -= searchString.length; + var lastIndex = subjectString.indexOf(searchString, position); + return lastIndex !== -1 && lastIndex === position; + }; + } + + if(!String.prototype.startsWith) { + String.prototype.startsWith = function(searchString, position) { + position = position || 0; + return this.lastIndexOf(searchString, position) === position; + }; + } + + if(!String.prototype.includes) { + String.prototype.includes = function() { + return String.prototype.indexOf.apply(this, arguments) !== -1; + }; + } + +})(); + + +/* ======================================================================== + * Resize: resize.js [Version: 1.1] + * http://benalman.com/projects/jquery-resize-plugin/ + * + * ZUI: The file has been changed in ZUI. It will not keep update with the + * official version in the future. + * http://zui.sexy + * ======================================================================== + * opyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + * ======================================================================== */ + + +/*! + * jQuery resize event - v1.1 + * http://benalman.com/projects/jquery-resize-plugin/ + * Copyright (c) 2010 "Cowboy" Ben Alman + * MIT & GPL http://benalman.com/about/license/ + */ + +// Script: jQuery resize event +// +// *Version: 1.1, Last updated: 3/14/2010* +// +// Project Home - http://benalman.com/projects/jquery-resize-plugin/ +// GitHub - http://github.com/cowboy/jquery-resize/ +// Source - http://github.com/cowboy/jquery-resize/raw/master/jquery.ba-resize.js +// (Minified) - http://github.com/cowboy/jquery-resize/raw/master/jquery.ba-resize.min.js (1.0kb) +// +// About: License +// +// Copyright (c) 2010 "Cowboy" Ben Alman, +// Dual licensed under the MIT and GPL licenses. +// http://benalman.com/about/license/ +// +// About: Examples +// +// This working example, complete with fully commented code, illustrates a few +// ways in which this plugin can be used. +// +// resize event - http://benalman.com/code/projects/jquery-resize/examples/resize/ +// +// About: Support and Testing +// +// Information about what version or versions of jQuery this plugin has been +// tested with, what browsers it has been tested in, and where the unit tests +// reside (so you can test it yourself). +// +// jQuery Versions - 1.3.2, 1.4.1, 1.4.2 +// Browsers Tested - Internet Explorer 6-8, Firefox 2-3.6, Safari 3-4, Chrome, Opera 9.6-10.1. +// Unit Tests - http://benalman.com/code/projects/jquery-resize/unit/ +// +// About: Release History +// +// 1.1 - (3/14/2010) Fixed a minor bug that was causing the event to trigger +// immediately after bind in some circumstances. Also changed $.fn.data +// to $.data to improve performance. +// 1.0 - (2/10/2010) Initial release + +(function($, window, undefined) { + '$:nomunge'; // Used by YUI compressor. + + // A jQuery object containing all non-window elements to which the resize + // event is bound. + var elems = $([]), + + // Extend $.resize if it already exists, otherwise create it. + jq_resize = $.resize = $.extend($.resize, {}), + + timeout_id, + + // Reused strings. + str_setTimeout = 'setTimeout', + str_resize = 'resize', + str_data = str_resize + '-special-event', + str_delay = 'delay', + str_throttle = 'throttleWindow'; + + // Property: jQuery.resize.delay + // + // The numeric interval (in milliseconds) at which the resize event polling + // loop executes. Defaults to 250. + + jq_resize[str_delay] = 250; + + // Property: jQuery.resize.throttleWindow + // + // Throttle the native window object resize event to fire no more than once + // every milliseconds. Defaults to true. + // + // Because the window object has its own resize event, it doesn't need to be + // provided by this plugin, and its execution can be left entirely up to the + // browser. However, since certain browsers fire the resize event continuously + // while others do not, enabling this will throttle the window resize event, + // making event behavior consistent across all elements in all browsers. + // + // While setting this property to false will disable window object resize + // event throttling, please note that this property must be changed before any + // window object resize event callbacks are bound. + + jq_resize[str_throttle] = true; + + // Event: resize event + // + // Fired when an element's width or height changes. Because browsers only + // provide this event for the window element, for other elements a polling + // loop is initialized, running every milliseconds + // to see if elements' dimensions have changed. You may bind with either + // .resize( fn ) or .bind( "resize", fn ), and unbind with .unbind( "resize" ). + // + // Usage: + // + // > jQuery('selector').bind( 'resize', function(e) { + // > // element's width or height has changed! + // > ... + // > }); + // + // Additional Notes: + // + // * The polling loop is not created until at least one callback is actually + // bound to the 'resize' event, and this single polling loop is shared + // across all elements. + // + // Double firing issue in jQuery 1.3.2: + // + // While this plugin works in jQuery 1.3.2, if an element's event callbacks + // are manually triggered via .trigger( 'resize' ) or .resize() those + // callbacks may double-fire, due to limitations in the jQuery 1.3.2 special + // events system. This is not an issue when using jQuery 1.4+. + // + // > // While this works in jQuery 1.4+ + // > $(elem).css({ width: new_w, height: new_h }).resize(); + // > + // > // In jQuery 1.3.2, you need to do this: + // > var elem = $(elem); + // > elem.css({ width: new_w, height: new_h }); + // > elem.data( 'resize-special-event', { width: elem.width(), height: elem.height() } ); + // > elem.resize(); + + $.event.special[str_resize] = { + + // Called only when the first 'resize' event callback is bound per element. + setup: function() { + // Since window has its own native 'resize' event, return false so that + // jQuery will bind the event using DOM methods. Since only 'window' + // objects have a .setTimeout method, this should be a sufficient test. + // Unless, of course, we're throttling the 'resize' event for window. + if(!jq_resize[str_throttle] && this[str_setTimeout]) { + return false; + } + + var elem = $(this); + + // Add this element to the list of internal elements to monitor. + elems = elems.add(elem); + + // Initialize data store on the element. + $.data(this, str_data, { + w: elem.width(), + h: elem.height() + }); + + // If this is the first element added, start the polling loop. + if(elems.length === 1) { + loopy(); + } + }, + + // Called only when the last 'resize' event callback is unbound per element. + teardown: function() { + // Since window has its own native 'resize' event, return false so that + // jQuery will unbind the event using DOM methods. Since only 'window' + // objects have a .setTimeout method, this should be a sufficient test. + // Unless, of course, we're throttling the 'resize' event for window. + if(!jq_resize[str_throttle] && this[str_setTimeout]) { + return false; + } + + var elem = $(this); + + // Remove this element from the list of internal elements to monitor. + elems = elems.not(elem); + + // Remove any data stored on the element. + elem.removeData(str_data); + + // If this is the last element removed, stop the polling loop. + if(!elems.length) { + clearTimeout(timeout_id); + } + }, + + // Called every time a 'resize' event callback is bound per element (new in + // jQuery 1.4). + add: function(handleObj) { + // Since window has its own native 'resize' event, return false so that + // jQuery doesn't modify the event object. Unless, of course, we're + // throttling the 'resize' event for window. + if(!jq_resize[str_throttle] && this[str_setTimeout]) { + return false; + } + + var old_handler; + + // The new_handler function is executed every time the event is triggered. + // This is used to update the internal element data store with the width + // and height when the event is triggered manually, to avoid double-firing + // of the event callback. See the "Double firing issue in jQuery 1.3.2" + // comments above for more information. + + function new_handler(e, w, h) { + var elem = $(this), + data = $.data(this, str_data) || {}; + + // If called from the polling loop, w and h will be passed in as + // arguments. If called manually, via .trigger( 'resize' ) or .resize(), + // those values will need to be computed. + data.w = w !== undefined ? w : elem.width(); + data.h = h !== undefined ? h : elem.height(); + + old_handler.apply(this, arguments); + }; + + // This may seem a little complicated, but it normalizes the special event + // .add method between jQuery 1.4/1.4.1 and 1.4.2+ + if($.isFunction(handleObj)) { + // 1.4, 1.4.1 + old_handler = handleObj; + return new_handler; + } else { + // 1.4.2+ + old_handler = handleObj.handler; + handleObj.handler = new_handler; + } + } + + }; + + function loopy() { + + // Start the polling loop, asynchronously. + timeout_id = window[str_setTimeout](function() { + + // Iterate over all elements to which the 'resize' event is bound. + elems.each(function() { + var elem = $(this), + width = elem.width(), + height = elem.height(), + data = $.data(this, str_data); + + // If element size has changed since the last time, update the element + // data store and trigger the 'resize' event. + if(width !== data.w || height !== data.h) { + elem.trigger(str_resize, [data.w = width, data.h = height]); + } + + }); + + // Loop. + loopy(); + + }, jq_resize[str_delay]); + + }; + +})(jQuery, this); + + +/* ======================================================================== + * Bootstrap: scrollspy.js v3.0.3 + * http://getbootstrap.com/javascript/#scrollspy + * + * ZUI: The file has been changed in ZUI. It will not keep update with the + * Bootsrap version in the future. + * http://zui.sexy + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++ function($) { + 'use strict'; + + // SCROLLSPY CLASS DEFINITION + // ========================== + + var zuiname = 'zui.scrollspy' + + function ScrollSpy(element, options) { + var href + var process = $.proxy(this.process, this) + + this.$element = $(element).is('body') ? $(window) : $(element) + this.$body = $('body') + this.$scrollElement = this.$element.on('scroll.' + zuiname + '.data-api', process) + this.options = $.extend({}, ScrollSpy.DEFAULTS, options) + if(!this.selector) this.selector = (this.options.target || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 + || '') + ' .nav li > a' + this.offsets = $([]) + this.targets = $([]) + this.activeTarget = null + + this.refresh() + this.process() + } + + ScrollSpy.DEFAULTS = { + offset: 10 + } + + ScrollSpy.prototype.refresh = function() { + var offsetMethod = this.$element[0] == window ? 'offset' : 'position' + + this.offsets = $([]) + this.targets = $([]) + + var self = this + var $targets = this.$body + .find(this.selector) + .map(function() { + var $el = $(this) + var href = $el.data('target') || $el.attr('href') + var $href = /^#./.test(href) && $(href) + + return($href && $href.length && $href.is(':visible') && [ + [$href[offsetMethod]().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href] + ]) || null + }) + .sort(function(a, b) { + return a[0] - b[0] + }) + .each(function() { + self.offsets.push(this[0]) + self.targets.push(this[1]) + }) + } + + ScrollSpy.prototype.process = function() { + var scrollTop = this.$scrollElement.scrollTop() + this.options.offset + var scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight + var maxScroll = scrollHeight - this.$scrollElement.height() + var offsets = this.offsets + var targets = this.targets + var activeTarget = this.activeTarget + var i + + if(scrollTop >= maxScroll) { + return activeTarget != (i = targets.last()[0]) && this.activate(i) + } + + if(activeTarget && scrollTop <= offsets[0]) { + return activeTarget != (i = targets[0]) && this.activate(i) + } + + for(i = offsets.length; i--;) { + activeTarget != targets[i] && scrollTop >= offsets[i] && (!offsets[i + 1] || scrollTop <= offsets[i + 1]) && this.activate(targets[i]) + } + } + + ScrollSpy.prototype.activate = function(target) { + this.activeTarget = target + + $(this.selector) + .parentsUntil(this.options.target, '.active') + .removeClass('active') + + var selector = this.selector + + '[data-target="' + target + '"],' + + this.selector + '[href="' + target + '"]' + + var active = $(selector) + .parents('li') + .addClass('active') + + if(active.parent('.dropdown-menu').length) { + active = active + .closest('li.dropdown') + .addClass('active') + } + + active.trigger('activate.' + zuiname) + } + + + // SCROLLSPY PLUGIN DEFINITION + // =========================== + + var old = $.fn.scrollspy + + $.fn.scrollspy = function(option) { + return this.each(function() { + var $this = $(this) + var data = $this.data(zuiname) + var options = typeof option == 'object' && option + + if(!data) $this.data(zuiname, (data = new ScrollSpy(this, options))) + if(typeof option == 'string') data[option]() + }) + } + + $.fn.scrollspy.Constructor = ScrollSpy + + + // SCROLLSPY NO CONFLICT + // ===================== + + $.fn.scrollspy.noConflict = function() { + $.fn.scrollspy = old + return this + } + + + // SCROLLSPY DATA-API + // ================== + + $(window).on('load', function() { + $('[data-spy="scroll"]').each(function() { + var $spy = $(this) + $spy.scrollspy($spy.data()) + }) + }) + +}(jQuery); + + +/* ======================================================================== + * ZUI: storeb.js + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + +(function(window, $) { + 'use strict'; + + var lsName = 'localStorage'; + var storage, + dataset, + pageName = 'page_' + window.location.pathname + window.location.search; + + /* The Store object */ + var Store = function() { + this.slience = true; + try { + if((lsName in window) && window[lsName] && window[lsName].setItem) { + this.enable = true; + storage = window[lsName]; + } + } catch(e){} + if(!this.enable) { + dataset = {}; + storage = { + getLength: function() { + var length = 0; + $.each(dataset, function() { + length++; + }); + return length; + }, + key: function(index) { + var key, i = 0; + $.each(dataset, function(k) { + if(i === index) { + key = k; + return false; + } + i++; + }); + return key; + }, + removeItem: function(key) { + delete dataset[key]; + }, + getItem: function(key) { + return dataset[key]; + }, + setItem: function(key, val) { + dataset[key] = val; + }, + clear: function() { + dataset = {}; + } + }; + } + this.storage = storage; + this.page = this.get(pageName, {}); + }; + + /* Save page data */ + Store.prototype.pageSave = function() { + if($.isEmptyObject(this.page)) { + this.remove(pageName); + } else { + var forDeletes = [], + i; + for(i in this.page) { + var val = this.page[i]; + if(val === null) + forDeletes.push(i); + } + for(i = forDeletes.length - 1; i >= 0; i--) { + delete this.page[forDeletes[i]]; + } + this.set(pageName, this.page); + } + }; + + /* Remove page data item */ + Store.prototype.pageRemove = function(key) { + if(typeof this.page[key] != 'undefined') { + this.page[key] = null; + this.pageSave(); + } + }; + + /* Clear page data */ + Store.prototype.pageClear = function() { + this.page = {}; + this.pageSave(); + }; + + /* Get page data */ + Store.prototype.pageGet = function(key, defaultValue) { + var val = this.page[key]; + return(defaultValue !== undefined && (val === null || val === undefined)) ? defaultValue : val; + }; + + /* Set page data */ + Store.prototype.pageSet = function(objOrKey, val) { + if($.isPlainObject(objOrKey)) { + $.extend(true, this.page, objOrKey); + } else { + this.page[this.serialize(objOrKey)] = val; + } + this.pageSave(); + }; + + /* Check enable status */ + Store.prototype.check = function() { + if(!this.enable) { + if(!this.slience) throw new Error('Browser not support localStorage or enable status been set true.'); + } + return this.enable; + }; + + /* Get length */ + Store.prototype.length = function() { + if(this.check()) { + return storage.getLength ? storage.getLength() : storage.length; + } + return 0; + }; + + /* Remove item with browser localstorage native method */ + Store.prototype.removeItem = function(key) { + storage.removeItem(key); + return this; + }; + + /* Remove item with browser localstorage native method, same as removeItem */ + Store.prototype.remove = function(key) { + return this.removeItem(key); + }; + + /* Get item value with browser localstorage native method, and without deserialize */ + Store.prototype.getItem = function(key) { + return storage.getItem(key); + }; + + /* Get item value and deserialize it, if value is null and defaultValue been given then return defaultValue */ + Store.prototype.get = function(key, defaultValue) { + var val = this.deserialize(this.getItem(key)); + if(typeof val === 'undefined' || val === null) { + if(typeof defaultValue !== 'undefined') { + return defaultValue; + } + } + return val; + }; + + /* Get item key by index and deserialize it */ + Store.prototype.key = function(index) { + return storage.key(index); + }; + + /* Set item value with browser localstorage native method, and without serialize filter */ + Store.prototype.setItem = function(key, val) { + storage.setItem(key, val); + return this; + }; + + /* Set item value, serialize it if the given value is not an string */ + Store.prototype.set = function(key, val) { + if(val === undefined) return this.remove(key); + this.setItem(key, this.serialize(val)); + return this; + }; + + /* Clear all items with browser localstorage native method */ + Store.prototype.clear = function() { + storage.clear(); + return this; + }; + + /* Iterate all items with callback */ + Store.prototype.forEach = function(callback) { + var length = this.length(); + for(var i = length - 1; i >= 0; i--) { + var key = storage.key(i); + callback(key, this.get(key)); + } + return this; + }; + + /* Get all items and set value in an object. */ + Store.prototype.getAll = function() { + var all = {}; + this.forEach(function(key, val) { + all[key] = val; + }); + + return all; + }; + + /* Serialize value with JSON.stringify */ + Store.prototype.serialize = function(value) { + if(typeof value === 'string') return value; + return JSON.stringify(value); + }; + + /* Deserialize value, with JSON.parse if the given value is not a string */ + Store.prototype.deserialize = function(value) { + if(typeof value !== 'string') return undefined; + try { + return JSON.parse(value); + } catch(e) { + return value || undefined; + } + }; + + $.zui({ + store: new Store() + }); +}(window, jQuery)); + + +/* ======================================================================== + * ZUI: searchbox.js + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + +(function($) { + 'use strict'; + + var NAME = 'zui.searchBox'; // modal name + + // The searchbox modal class + var SearchBox = function(element, options) { + var that = this; + that.name = name; + that.$ = $(element); + + that.options = options = $.extend({}, SearchBox.DEFAULTS, that.$.data(), options); + + // Initialize here + var $input = that.$.is(options.inputSelector) ? that.$ : that.$.find(options.inputSelector); + if ($input.length) { + var clearChangeTimer = function() { + if (that.changeTimer) { + clearTimeout(that.changeTimer); + that.changeTimer = null; + } + }; + + var handleChange = function() { + clearChangeTimer(); + var value = that.getSearch(); + if (value !== that.lastValue) { + var isEmpty = value === ''; + $input.toggleClass('empty', isEmpty); + that.$.callComEvent(that, 'onSearchChange', [value, isEmpty]); + that.lastValue = value; + } + }; + + that.$input = $input = $input.first(); + that.lastValue = that.getSearch(); + + $input.on(options.listenEvent, function(params) { + that.changeTimer = setTimeout(function() { + handleChange(); + }, options.changeDelay); + }).on('focus', function(e) { + $input.addClass('focus'); + that.$.callComEvent(that, 'onFocus', [e]); + }).on('blur', function(e) { + $input.removeClass('focus'); + that.$.callComEvent(that, 'onBlur', [e]); + }).on('keydown', function(e) { + var handled = 0; + var keyCode = e.witch; + if (keyCode === 27 && options.escToClear) { // esc + this.setSearch('', true); + handleChange(); + handled = 1; + } else if (keyCode === 13 && options.onPressEnter) { + handleChange(); + that.$.callComEvent(that, 'onPressEnter', [e]); + } + var onKeyDownResult = that.$.callComEvent(that, 'onKeyDown', [e]); + if (onKeyDownResult === false) { + handled = 1; + } + if (handled) { + e.preventDefault(); + } + }); + + that.$.on('click', '.search-clear-btn', function(e) { + that.setSearch('', true); + handleChange(); + e.preventDefault(); + }); + + handleChange(); + } else { + console.error('ZUI: search box init error, cannot find search box input element.'); + } + }; + + // default options + SearchBox.DEFAULTS = { + inputSelector: 'input[type="search"],input[type="text"]', + listenEvent: 'change input paste', + changeDelay: 500, + + // onKeyDown: null, + // onFocus: null, + // onBlur: null, + // onSearchChange: null, + // onPressEnter: null, + // escToClear: true + }; + + // Get current search string + SearchBox.prototype.getSearch = function() { + return this.$input && $.trim(this.$input.val()); + }; + + // Set current search string + SearchBox.prototype.setSearch = function(value, notTriggerChange) { + var $input = this.$input; + if ($input) { + $input.val(value); + if (!notTriggerChange) { + $input.trigger('change'); + } + } + }; + + // Focus input element + SearchBox.prototype.focus = function() { + this.$input && this.$input.focus(); + }; + + // Extense jquery element + $.fn.searchBox = function(option) { + return this.each(function() { + var $this = $(this); + var data = $this.data(NAME); + var options = typeof option == 'object' && option; + + if(!data) $this.data(NAME, (data = new SearchBox(this, options))); + + if(typeof option == 'string') data[option](); + }); + }; + + SearchBox.NAME = NAME; + + $.fn.searchBox.Constructor = SearchBox; +}(jQuery)); + + +/* ======================================================================== + * ZUI: draggable.js + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + +(function($, document) { + 'use strict'; + + var NAME = 'zui.draggable', + DEFAULTS = { + // selector: '', + container: 'body', + move: true + // mouseButton: -1 // 0, 1, 2, -1, all, left, right, middle + }; + var idIncrementer = 0; + + var Draggable = function(element, options) { + var that = this; + that.$ = $(element); + that.id = idIncrementer++; + that.options = $.extend({}, DEFAULTS, that.$.data(), options); + that.init(); + }; + + Draggable.DEFAULTS = DEFAULTS; + Draggable.NAME = NAME; + + Draggable.prototype.init = function() { + var that = this, + $root = that.$, + BEFORE = 'before', + DRAG = 'drag', + FINISH = 'finish', + eventSuffix = '.' + NAME + '.' + that.id, + mouseDownEvent = 'mousedown' + eventSuffix, + mouseUpEvent = 'mouseup' + eventSuffix, + mouseMoveEvent = 'mousemove' + eventSuffix, + setting = that.options, + selector = setting.selector, + handle = setting.handle, + $ele = $root, + isMoveFunc = $.isFunction(setting.move), + startPos, + cPos, + startOffset, + mousePos, + moved; + + var mouseMove = function(event) { + var mX = event.pageX, + mY = event.pageY; + moved = true; + var dragPos = { + left: mX - startOffset.x, + top: mY - startOffset.y + }; + + $ele.removeClass('drag-ready').addClass('dragging'); + if(setting.move) { + if (isMoveFunc) { + setting.move(dragPos, $ele); + } else { + $ele.css(dragPos); + } + } + + setting[DRAG] && setting[DRAG]({ + event: event, + element: $ele, + startOffset: startOffset, + pos: dragPos, + offset: { + x: mX - startPos.x, + y: mY - startPos.y + }, + smallOffset: { + x: mX - mousePos.x, + y: mY - mousePos.y + } + }); + mousePos.x = mX; + mousePos.y = mY; + + if(setting.stopPropagation) { + event.stopPropagation(); + } + }; + + var mouseUp = function(event) { + $(document).off(eventSuffix); + if(!moved) { + $ele.removeClass('drag-ready'); + return; + } + var endPos = { + left: event.pageX - startOffset.x, + top: event.pageY - startOffset.y + }; + $ele.removeClass('drag-ready dragging'); + if(setting.move) { + if (isMoveFunc) { + setting.move(endPos, $ele); + } else { + $ele.css(endPos); + } + } + + setting[FINISH] && setting[FINISH]({ + event: event, + element: $ele, + startOffset: startOffset, + pos: endPos, + offset: { + x: event.pageX - startPos.x, + y: event.pageY - startPos.y + }, + smallOffset: { + x: event.pageX - mousePos.x, + y: event.pageY - mousePos.y + } + }); + event.preventDefault(); + if(setting.stopPropagation) { + event.stopPropagation(); + } + }; + + var mouseDown = function(event) { + var mouseButton = $.zui.getMouseButtonCode(setting.mouseButton); + if(mouseButton > -1 && event.button !== mouseButton) { + return; + } + + var $mouseDownEle = $(this); + if(selector) { + $ele = handle ? $mouseDownEle.closest(selector) : $mouseDownEle; + } + + if(setting[BEFORE]) { + var isSure = setting[BEFORE]({ + event: event, + element: $ele + }); + if(isSure === false) return; + } + + var $container = $(setting.container), + pos = $ele.offset(); + cPos = $container.offset(); + startPos = { + x: event.pageX, + y: event.pageY + }; + startOffset = { + x: event.pageX - pos.left + cPos.left, + y: event.pageY - pos.top + cPos.top + }; + mousePos = $.extend({}, startPos); + moved = false; + + $ele.addClass('drag-ready'); + event.preventDefault(); + + if(setting.stopPropagation) { + event.stopPropagation(); + } + + $(document).on(mouseMoveEvent, mouseMove).on(mouseUpEvent, mouseUp); + }; + + if(handle) { + $root.on(mouseDownEvent, handle, mouseDown); + } else if(selector) { + $root.on(mouseDownEvent, selector, mouseDown); + } else { + $root.on(mouseDownEvent, mouseDown); + } + }; + + Draggable.prototype.destroy = function() { + var eventSuffix = '.' + NAME + '.' + this.id; + this.$.off(eventSuffix); + $(document).off(eventSuffix); + this.$.data(NAME, null); + }; + + $.fn.draggable = function(option) { + return this.each(function() { + var $this = $(this); + var data = $this.data(NAME); + var options = typeof option == 'object' && option; + + if(!data) $this.data(NAME, (data = new Draggable(this, options))); + if(typeof option == 'string') data[option](); + }); + }; + + $.fn.draggable.Constructor = Draggable; +}(jQuery, document)); + + +/* ======================================================================== + * ZUI: droppable.js + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + +(function($, document, Math) { + 'use strict'; + + var NAME = 'zui.droppable', + DEFAULTS = { + // container: '', + // selector: '', + // handle: '', + // flex: false, + // nested: false, + target: '.droppable-target', + deviation: 5, + sensorOffsetX: 0, + sensorOffsetY: 0, + // mouseButton: -1 // 0, 1, 2, -1, all, left, right, middle + }; + var idIncrementer = 0; + + var Droppable = function(element, options) { + var that = this; + that.id = idIncrementer++; + that.$ = $(element); + that.options = $.extend({}, DEFAULTS, that.$.data(), options); + that.init(); + }; + + Droppable.DEFAULTS = DEFAULTS; + Droppable.NAME = NAME; + + Droppable.prototype.trigger = function(name, params) { + return $.zui.callEvent(this.options[name], params, this); + }; + + Droppable.prototype.init = function() { + var that = this, + $root = that.$, + setting = that.options, + deviation = setting.deviation, + eventSuffix = '.' + NAME + '.' + that.id, + mouseDownEvent = 'mousedown' + eventSuffix, + mouseUpEvent = 'mouseup' + eventSuffix, + mouseMoveEvent = 'mousemove' + eventSuffix, + selector = setting.selector, + handle = setting.handle, + flex = setting.flex, + container = setting.container, + canMoveHere = setting.canMoveHere, + $ele = $root, + isMouseDown = false, + $container = container ? $(setting.container).first() : (selector ? $root : $('body')), + $targets, + $target, + $shadow, + isIn, + isSelf, + oldCssPosition, + startOffset, + startMouseOffset, + containerOffset, + clickOffset, + mouseOffset, + lastMouseOffset, + mouseDownBackEventCall; + + var mouseMove = function(event) { + if(!isMouseDown) return; + + mouseOffset = {left: event.pageX, top: event.pageY}; + + // ignore small move + if(Math.abs(mouseOffset.left - startMouseOffset.left) < deviation && Math.abs(mouseOffset.top - startMouseOffset.top) < deviation) return; + + if($shadow === null) // create shadow + { + var cssPosition = $container.css('position'); + if(cssPosition != 'absolute' && cssPosition != 'relative' && cssPosition != 'fixed') { + oldCssPosition = cssPosition; + $container.css('position', 'relative'); + } + + $shadow = $ele.clone().removeClass('drag-from').addClass('drag-shadow').css({ + position: 'absolute', + width: $ele.outerWidth(), + transition: 'none' + }).appendTo($container); + $ele.addClass('dragging'); + + that.trigger('start', { + event: event, + element: $ele + }); + } + + var offset = { + left: mouseOffset.left - clickOffset.left, + top: mouseOffset.top - clickOffset.top + }; + var position = { + left: offset.left - containerOffset.left, + top: offset.top - containerOffset.top + }; + $shadow.css(position); + $.extend(lastMouseOffset, mouseOffset); + + var isNew = false; + isIn = false; + + if(!flex) { + $targets.removeClass('drop-to'); + } + + var $newTarget = null; + $targets.each(function() { + var t = $(this), + tPos = t.offset(), + tW = t.outerWidth(), + tH = t.outerHeight(), + tX = tPos.left + setting.sensorOffsetX, + tY = tPos.top + setting.sensorOffsetY; + + if(mouseOffset.left > tX && mouseOffset.top > tY && mouseOffset.left < (tX + tW) && mouseOffset.top < (tY + tH)) { + if($newTarget) $newTarget.removeClass('drop-to'); + $newTarget = t; + if(!setting.nested) return false; + } + }); + + if($newTarget) { + isIn = true; + var id = $newTarget.data('id'); + if($ele.data('id') != id) isSelf = false; + if($target === null || ($target.data('id') !== id && (!isSelf))) isNew = true; + $target = $newTarget; + if(flex) { + $targets.removeClass('drop-to'); + } + $target.addClass('drop-to'); + } + + + if(!flex) { + $ele.toggleClass('drop-in', isIn); + $shadow.toggleClass('drop-in', isIn); + } else if($target !== null && $target.length) { + isIn = true; + } + + if(!canMoveHere || canMoveHere($ele, $target) !== false) { + that.trigger('drag', { + event: event, + isIn: isIn, + target: $target, + element: $ele, + isNew: isNew, + selfTarget: isSelf, + clickOffset: clickOffset, + offset: offset, + position: { + left: offset.left - containerOffset.left, + top: offset.top - containerOffset.top + }, + mouseOffset: mouseOffset + }); + } + + event.preventDefault(); + }; + + var mouseUp = function(event) { + $(document).off(eventSuffix); + clearTimeout(mouseDownBackEventCall); + if(!isMouseDown) return; + + isMouseDown = false; + + if(oldCssPosition) { + $container.css('position', oldCssPosition); + } + + if($shadow === null) { + $ele.removeClass('drag-from'); + that.trigger('always', { + event: event, + cancel: true + }); + return; + } + + if(!isIn) $target = null; + var isSure = true; + mouseOffset = event ? { + left: event.pageX, + top: event.pageY + } : lastMouseOffset; + var offset = { + left: mouseOffset.left - clickOffset.left, + top: mouseOffset.top - clickOffset.top + }; + var moveOffset = { + left: mouseOffset.left - lastMouseOffset.left, + top: mouseOffset.top - lastMouseOffset.top + }; + lastMouseOffset.left = mouseOffset.left; + lastMouseOffset.top = mouseOffset.top; + var eventOptions = { + event: event, + isIn: isIn, + target: $target, + element: $ele, + isNew: (!isSelf) && $target !== null, + selfTarget: isSelf, + offset: offset, + mouseOffset: mouseOffset, + position: { + left: offset.left - containerOffset.left, + top: offset.top - containerOffset.top + }, + lastMouseOffset: lastMouseOffset, + moveOffset: moveOffset + }; + + isSure = that.trigger('beforeDrop', eventOptions); + + if(isSure && isIn) { + that.trigger('drop', eventOptions); + } + + $targets.removeClass('drop-to'); + $ele.removeClass('dragging').removeClass('drag-from'); + $shadow.remove(); + $shadow = null; + + that.trigger('finish', eventOptions); + that.trigger('always', eventOptions); + + if(event) event.preventDefault(); + }; + + var mouseDown = function(event) { + var mouseButton = $.zui.getMouseButtonCode(setting.mouseButton); + if(mouseButton > -1 && event.button !== mouseButton) { + return; + } + + var $mouseDownEle = $(this); + if(selector) { + $ele = handle ? $mouseDownEle.closest(selector) : $mouseDownEle; + } + + if($ele.hasClass('drag-shadow')) { + return; + } + + if(setting['before']) { + if(setting['before']({ + event: event, + element: $ele + }) === false) return; + } + + isMouseDown = true; + $targets = $.isFunction(setting.target) ? setting.target($root) : $container.find(setting.target), + $target = null, + $shadow = null, + isIn = false, + isSelf = true, + oldCssPosition = null, + startOffset = $ele.offset(), + containerOffset = $container.offset(); + startMouseOffset = {left: event.pageX, top: event.pageY}; + lastMouseOffset = $.extend({}, startMouseOffset); + clickOffset = { + left: startMouseOffset.left - startOffset.left, + top: startMouseOffset.top - startOffset.top + }; + + $ele.addClass('drag-from'); + $(document).on(mouseMoveEvent, mouseMove).on(mouseUpEvent, mouseUp); + mouseDownBackEventCall = setTimeout(function() { + $(document).on(mouseDownEvent, mouseUp); + }, 10); + event.preventDefault(); + }; + + if(handle) { + $root.on(mouseDownEvent, handle, mouseDown); + } else if(selector) { + $root.on(mouseDownEvent, selector, mouseDown); + } else { + $root.on(mouseDownEvent, mouseDown); + } + }; + + Droppable.prototype.destroy = function() { + var eventSuffix = '.' + NAME + '.' + this.id; + this.$.off(eventSuffix); + $(document).off(eventSuffix); + this.$.data(NAME, null); + }; + + Droppable.prototype.reset = function() { + this.destroy(); + this.init(); + }; + + $.fn.droppable = function(option) { + return this.each(function() { + var $this = $(this); + var data = $this.data(NAME); + var options = typeof option == 'object' && option; + + if(!data) $this.data(NAME, (data = new Droppable(this, options))); + + if(typeof option == 'string') data[option](); + }); + }; + + $.fn.droppable.Constructor = Droppable; +}(jQuery, document, Math)); + +/* ======================================================================== + * Bootstrap: modal.js v3.2.0 + * http://getbootstrap.com/javascript/#modals + * + * ZUI: The file has been changed in ZUI. It will not keep update with the + * Bootsrap version in the future. + * http://zui.sexy + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== + * Updates in ZUI: + * 1. changed event namespace to *.zui.modal + * 2. added position option to ajust poisition of modal + * 3. added event 'escaping.zui.modal' with an param 'esc' to judge the esc + * key down + * 4. get moveable options value from '.modal-moveable' on '.modal-dialog' + * 5. add setMoveable method to make modal dialog moveable + * ======================================================================== */ + ++ function($) { + 'use strict'; + + // MODAL CLASS DEFINITION + // ====================== + + var zuiname = 'zui.modal' + var Modal = function(element, options) { + var that = this; + that.options = options + that.$body = $(document.body) + that.$element = $(element) + that.$backdrop = + that.isShown = null + that.scrollbarWidth = 0 + + if(options.moveable === undefined) { + that.options.moveable = that.$element.hasClass('modal-moveable'); + } + + if(options.remote) { + that.$element + .find('.modal-content') + .load(options.remote, function() { + that.$element.trigger('loaded.' + zuiname) + }) + } + } + + Modal.VERSION = '3.2.0' + + Modal.TRANSITION_DURATION = 300 + Modal.BACKDROP_TRANSITION_DURATION = 150 + + Modal.DEFAULTS = { + backdrop: true, + keyboard: true, + show: true, + // rememberPos: false, + // moveable: false, + position: 'fit' // 'center' or '40px' or '10%' + }; + + var setDialogPos = function($dialog, pos) { + var $window = $(window); + pos.left = Math.max(0, Math.min(pos.left, $window.width() - $dialog.outerWidth())); + pos.top = Math.max(0, Math.min(pos.top, $window.height() - $dialog.outerHeight())); + $dialog.css(pos); + }; + + Modal.prototype.toggle = function(_relatedTarget, position) { + return this.isShown ? this.hide() : this.show(_relatedTarget, position) + } + + Modal.prototype.ajustPosition = function(position) { + var that = this; + var options = that.options; + if(typeof position === 'undefined') position = options.position; + if(typeof position === 'undefined') return; + var $dialog = that.$element.find('.modal-dialog'); + // if($dialog.hasClass('modal-dragged')) return; + + var half = Math.max(0, ($(window).height() - $dialog.outerHeight()) / 2); + var topPos = position == 'fit' ? (half * 2 / 3) : (position == 'center' ? half : position); + if($dialog.hasClass('modal-moveable')) { + var pos = null; + var rememberPos = options.rememberPos; + if(rememberPos) { + if(rememberPos === true) { + pos = that.$element.data('modal-pos'); + } else if($.zui.store) { + pos = $.zui.store.pageGet(zuiname + '.rememberPos.' + rememberPos); + } + } + if(!pos) { + pos = { + left: Math.max(0, ($(window).width() - $dialog.outerWidth()) / 2), + top: topPos + }; + } + if (options.moveable === 'inside') { + setDialogPos($dialog, pos); + } else { + $dialog.css(pos); + } + } else { + $dialog.css('margin-top', topPos); + } + } + + Modal.prototype.setMoveale = function() { + if(!$.fn.draggable) console.error('Moveable modal requires draggable.js.'); + var that = this; + var options = that.options; + var $dialog = that.$element.find('.modal-dialog').removeClass('modal-dragged'); + $dialog.toggleClass('modal-moveable', !!options.moveable); + + if(!that.$element.data('modal-moveable-setup')) { + $dialog.draggable({ + container: that.$element, + handle: '.modal-header', + before: function() { + $dialog.css('margin-top', '').addClass('modal-dragged'); + }, + finish: function(e) { + var rememberPos = options.rememberPos; + if(rememberPos) { + that.$element.data('modal-pos', e.pos); + if($.zui.store && rememberPos !== true) { + $.zui.store.pageSet(zuiname + '.rememberPos.' + rememberPos, e.pos); + } + } + }, + move: options.moveable === 'inside' ? function (dragPos) { + setDialogPos($dialog, dragPos); + } : true + }); + } + } + + Modal.prototype.show = function(_relatedTarget, position) { + var that = this + var e = $.Event('show.' + zuiname, { + relatedTarget: _relatedTarget + }) + + that.$element.trigger(e) + + if(that.isShown || e.isDefaultPrevented()) return + + that.isShown = true + + if(that.options.moveable) that.setMoveale(); + + that.checkScrollbar() + that.$body.addClass('modal-open') + + that.setScrollbar() + that.escape() + + that.$element.on('click.dismiss.' + zuiname, '[data-dismiss="modal"]', $.proxy(that.hide, that)) + + that.backdrop(function() { + var transition = $.support.transition && that.$element.hasClass('fade') + + if(!that.$element.parent().length) { + that.$element.appendTo(that.$body) // don't move modals dom position + } + + that.$element + .show() + .scrollTop(0) + + if(transition) { + that.$element[0].offsetWidth // force reflow + } + + that.$element + .addClass('in') + .attr('aria-hidden', false) + + that.ajustPosition(position); + + that.enforceFocus() + + var e = $.Event('shown.' + zuiname, { + relatedTarget: _relatedTarget + }) + + transition ? + that.$element.find('.modal-dialog') // wait for modal to slide in + .one('bsTransitionEnd', function() { + that.$element.trigger('focus').trigger(e) + }) + .emulateTransitionEnd(Modal.TRANSITION_DURATION) : + that.$element.trigger('focus').trigger(e) + }) + } + + Modal.prototype.hide = function(e) { + if(e) e.preventDefault() + + e = $.Event('hide.' + zuiname) + + this.$element.trigger(e) + + if(!this.isShown || e.isDefaultPrevented()) return + + this.isShown = false + + this.$body.removeClass('modal-open') + + this.resetScrollbar() + this.escape() + + $(document).off('focusin.' + zuiname) + + this.$element + .removeClass('in') + .attr('aria-hidden', true) + .off('click.dismiss.' + zuiname) + + $.support.transition && this.$element.hasClass('fade') ? + this.$element + .one('bsTransitionEnd', $.proxy(this.hideModal, this)) + .emulateTransitionEnd(Modal.TRANSITION_DURATION) : + this.hideModal() + } + + Modal.prototype.enforceFocus = function() { + $(document) + .off('focusin.' + zuiname) // guard against infinite focus loop + .on('focusin.' + zuiname, $.proxy(function(e) { + if(this.$element[0] !== e.target && !this.$element.has(e.target).length) { + this.$element.trigger('focus') + } + }, this)) + } + + Modal.prototype.escape = function() { + if(this.isShown && this.options.keyboard) { + $(document).on('keydown.dismiss.' + zuiname, $.proxy(function(e) { + if(e.which == 27) { + var et = $.Event('escaping.' + zuiname) + var result = this.$element.triggerHandler(et, 'esc') + if(result != undefined && (!result)) return + this.hide() + } + }, this)) + } else if(!this.isShown) { + $(document).off('keydown.dismiss.' + zuiname) + } + } + + Modal.prototype.hideModal = function() { + var that = this + this.$element.hide() + this.backdrop(function() { + that.$element.trigger('hidden.' + zuiname) + }) + } + + Modal.prototype.removeBackdrop = function() { + this.$backdrop && this.$backdrop.remove() + this.$backdrop = null + } + + Modal.prototype.backdrop = function(callback) { + var that = this + var animate = this.$element.hasClass('fade') ? 'fade' : '' + + if(this.isShown && this.options.backdrop) { + var doAnimate = $.support.transition && animate + + this.$backdrop = $('
  • '); + } + var $a = $('').attr({ + href: item.url || '###', + 'class': item.className, + style: item.style + }).data('item', item); + if (item.html) { + $a.html(item.html === true ? (item.label || item.text) : item.html); + } else { + $a.text(item.label || item.text); + } + if (item.onClick) { + $a.on('click', item.onClick); + } + return $('
  • ').toggleClass('disabled', item.disabled === true).append($a); + }; + + var animationTimer = null; + var hideContextMenu = function(id, callback) { + if (typeof id === 'function') { + callback = id; + id = null; + } + + if (animationTimer) { + clearTimeout(animationTimer); + animationTimer = null; + } + + var $target = $('#' + targetId); + if ($target.length) { + var options = $target.data('options'); + if (!id || options.id === id) { + var afterHide = function() { + $target.hide(); + options.onHidden && options.onHidden(); + callback && callback(); + }; + options.onHide && options.onHide(); + var animation = options.animation; + $target.removeClass('in'); + if (animation) { + animationTimer = setTimeout(afterHide, options.duration); + } else { + afterHide(); + } + } + } + return ContextMenu; + }; + + var showContextMenu = function(items, options, callback) { + if ($.isPlainObject(items)) { + callback = options; + options = items; + items = options.items; + } + + isShowingMenu = true; + // hideContextMenu(); + + options = $.extend({}, DEFAULTS, options); + var x = options.x; + var y = options.y; + if (x === undefined) x = (options.event || options).clientX; + if (x === undefined) x = mouseX; + if (y === undefined) y = (options.event || options).clientY; + if (y === undefined) y = mouseY; + + var $target = $('#' + targetId); + if (!$target.length) { + $target = $('').appendTo('body'); + } + var $menu = $target.find('.contextmenu-menu').off('click.' + NAME).on('click.' + NAME, 'a', function(e) { + var $item = $(this); + var clickResult = options.onClickItem && options.onClickItem($item.data('item'), $item, e); + if (clickResult !== false) { + hideContextMenu(); + } + }).empty();; + $target.hide().attr('class', 'contextmenu'); + var itemCreator = options.itemCreator || createMenuItem; + var itemsType = typeof items; + if (itemsType === 'string') { + items = items.split(','); + } else if (itemsType === 'function') { + items = items(options); + } + $.each(items, function(index, item) { + $menu.append(itemCreator(item, index, options)); + }); + + // Show menu + var animation = options.animation; + var duration = options.duration; + if (animation === true) options.animation = animation = 'fade'; + if (animationTimer) { + clearTimeout(animationTimer); + animationTimer = null; + } + var afterShow = function() { + $target.addClass('in'); + options.onShown && options.onShown(); + callback && callback(); + }; + options.onShow && options.onShow(); + $target.data('options', { + animation: animation, + onHide: options.onHide, + onHidden: options.onHidden, + id: options.id, + duration: duration + }); + + var $w = $(window); + x = Math.max(0, Math.min(x, $w.width() - $menu.outerWidth())); + y = Math.max(0, Math.min(y, $w.height() - $menu.outerHeight())); + $target.css({ + left: x, + top: y + }); + + if (animation) { + $target.addClass('open').addClass(animation).show(); + animationTimer = setTimeout(function() { + afterShow(); + isShowingMenu = false; + }, options.duration); + } else { + $target.addClass('open').show(); + afterShow(); + animationTimer = setTimeout(function() { + isShowingMenu = false; + }, 200); + } + return ContextMenu; + }; + + $(document).on('click', function(e) { + if (!isShowingMenu && !$(e.target).closest('.contextmenu').length) { + hideContextMenu(); + } + }); + + $.extend(ContextMenu, { + NAME: NAME, + DEFAULTS: DEFAULTS, + show: showContextMenu, + hide: hideContextMenu, + listenMouse: listenMouseMove + }); + $.zui({ContextMenu: ContextMenu}); + + + // The contextmenu model class + var ContextListener = function(element, options) { + var that = this; + that.name = NAME; + that.$ = $(element); + + options = that.options = $.extend({trigger: 'contextmenu'}, ContextMenu.DEFAULTS, this.$.data(), options); + + var trigger = options.trigger; + + that.id = $.zui.uuid(); + var eventHandler = function(e) { + if (e.type === 'mousedown' && e.button !== 2) { + return; + } + var config = { + x: e.clientX, + y: e.clientY, + event: e + }; + if (options.itemsCreator) { + config.items = options.itemsCreator.call(this, e); + } + that.show(config); + e.preventDefault(); + e.returnValue = false; // 解决IE8右键弹出 + return false; + }; + var eventName = trigger + '.' + NAME; + if (options.selector) { + that.$.on(eventName, options.selector, eventHandler); + } else { + that.$.on(eventName, eventHandler); + } + }; + + ContextListener.prototype.destory = function () { + that.$.off('.' + NAME); + }; + + ContextListener.prototype.hide = function (callback) { + ContextMenu.hide(this.id, callback); + }; + + ContextListener.prototype.show = function (options, callback) { + options = $.extend({}, this.options, options); + ContextMenu.show(options, callback); + }; + + // Extense jquery element + $.fn.contextmenu = function(option) { + return this.each(function() { + var $this = $(this); + var data = $this.data(NAME); + var options = typeof option == 'object' && option; + + if(!data) $this.data(NAME, (data = new ContextListener(this, options))); + + if(typeof option == 'string') data[option](); + }); + }; + $.fn.contextmenu.Constructor = ContextListener; +}(jQuery, undefined)); + + +/* ======================================================================== + * Bootstrap: carousel.js v3.0.0 + * http://twzui.github.com/bootstrap/javascript.html#carousel + * + * ZUI: The file has been changed in ZUI. It will not keep update with the + * Bootsrap version in the future. + * http://zui.sexy + * ======================================================================== + * Copyright 2012 Twitter, Inc. + * + * 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. + * ======================================================================== + * Updates in ZUI: + * 1. support touch event for touchable devices + * ======================================================================== */ + + ++ function($) { + 'use strict'; + + // CAROUSEL CLASS DEFINITION + // ========================= + + var Carousel = function(element, options) { + this.$element = $(element) + this.$indicators = this.$element.find('.carousel-indicators') + this.options = options + this.paused = + this.sliding = + this.interval = + this.$active = + this.$items = null + + this.options.pause == 'hover' && this.$element + .on('mouseenter', $.proxy(this.pause, this)) + .on('mouseleave', $.proxy(this.cycle, this)) + } + + Carousel.DEFAULTS = { + interval: 5000, + pause: 'hover', + wrap: true, + touchable: true + } + + Carousel.prototype.touchable = function() { + if(!this.options.touchable) return; + + this.$element.on('touchstart touchmove touchend', touch); + var touchStartX, touchStartY; + var that = this; + + /* listen the touch event */ + function touch(event) { + var event = event || window.event; + if(event.originalEvent) event = event.originalEvent; + var carousel = $(this); + + switch(event.type) { + case "touchstart": + touchStartX = event.touches[0].pageX; + touchStartY = event.touches[0].pageY; + break; + case "touchend": + var distanceX = event.changedTouches[0].pageX - touchStartX; + var distanceY = event.changedTouches[0].pageY - touchStartY; + if(Math.abs(distanceX) > Math.abs(distanceY)) { + handleCarousel(carousel, distanceX); + if(Math.abs(distanceX) > 10) { + event.preventDefault(); + } + } else { + var $w = $(window); + $('body,html').animate({ + scrollTop: $w.scrollTop() - distanceY + }, 400) + } + break; + } + } + + function handleCarousel(carousel, distance) { + if(distance > 10) that.prev(); + else if(distance < -10) that.next(); + } + } + + Carousel.prototype.cycle = function(e) { + e || (this.paused = false) + + this.interval && clearInterval(this.interval) + + this.options.interval && !this.paused && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + + return this + } + + Carousel.prototype.getActiveIndex = function() { + this.$active = this.$element.find('.item.active') + this.$items = this.$active.parent().children() + + return this.$items.index(this.$active) + } + + Carousel.prototype.to = function(pos) { + var that = this + var activeIndex = this.getActiveIndex() + + if(pos > (this.$items.length - 1) || pos < 0) return + + if(this.sliding) return this.$element.one('slid', function() { + that.to(pos) + }) + if(activeIndex == pos) return this.pause().cycle() + + return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) + } + + Carousel.prototype.pause = function(e) { + e || (this.paused = true) + + if(this.$element.find('.next, .prev').length && $.support.transition.end) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + + this.interval = clearInterval(this.interval) + + return this + } + + Carousel.prototype.next = function() { + if(this.sliding) return + return this.slide('next') + } + + Carousel.prototype.prev = function() { + if(this.sliding) return + return this.slide('prev') + } + + Carousel.prototype.slide = function(type, next) { + var $active = this.$element.find('.item.active') + var $next = next || $active[type]() + var isCycling = this.interval + var direction = type == 'next' ? 'left' : 'right' + var fallback = type == 'next' ? 'first' : 'last' + var that = this + + if(!$next.length) { + if(!this.options.wrap) return + $next = this.$element.find('.item')[fallback]() + } + + this.sliding = true + + isCycling && this.pause() + + var e = $.Event('slide.zui.carousel', { + relatedTarget: $next[0], + direction: direction + }) + + if($next.hasClass('active')) return + + if(this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + this.$element.one('slid', function() { + var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()]) + $nextIndicator && $nextIndicator.addClass('active') + }) + } + + if($.support.transition && this.$element.hasClass('slide')) { + this.$element.trigger(e) + if(e.isDefaultPrevented()) return + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + $active + .one($.support.transition.end, function() { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function() { + that.$element.trigger('slid') + }, 0) + }) + .emulateTransitionEnd(600) + } else { + this.$element.trigger(e) + if(e.isDefaultPrevented()) return + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger('slid') + } + + isCycling && this.cycle() + + return this + } + + + // CAROUSEL PLUGIN DEFINITION + // ========================== + + var old = $.fn.carousel + + $.fn.carousel = function(option) { + return this.each(function() { + var $this = $(this) + var data = $this.data('zui.carousel') + var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) + var action = typeof option == 'string' ? option : options.slide + + if(!data) $this.data('zui.carousel', (data = new Carousel(this, options))) + if(typeof option == 'number') data.to(option) + else if(action) data[action]() + else if(options.interval) data.pause().cycle() + + if(options.touchable) data.touchable() + }) + } + + $.fn.carousel.Constructor = Carousel + + + // CAROUSEL NO CONFLICT + // ==================== + + $.fn.carousel.noConflict = function() { + $.fn.carousel = old + return this + } + + + // CAROUSEL DATA-API + // ================= + + $(document).on('click.zui.carousel.data-api', '[data-slide], [data-slide-to]', function(e) { + var $this = $(this), + href + var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 + var options = $.extend({}, $target.data(), $this.data()) + var slideIndex = $this.attr('data-slide-to') + if(slideIndex) options.interval = false + + $target.carousel(options) + + if(slideIndex = $this.attr('data-slide-to')) { + $target.data('zui.carousel').to(slideIndex) + } + + e.preventDefault() + }) + + $(window).on('load', function() { + $('[data-ride="carousel"]').each(function() { + var $carousel = $(this) + $carousel.carousel($carousel.data()) + }) + }) + +}(window.jQuery); + + +/* ======================================================================== + * TangBin: image.ready.js + * http://www.planeart.cn/?p=1121 + * + * ZUI: The file has been changed in ZUI. It will not keep update with the + * original version in the future. + * http://zui.sexy + * ======================================================================== + * @version 2011.05.27 + * @author TangBin + * ======================================================================== */ + + +/*! TangBin: image.ready.js http://www.planeart.cn/?p=1121 */ + +(function($) { + 'use strict'; + + /** + * Image ready + * @param {String} image url + * @param {Function} callback on image ready + * @param {Function} callback on image load + * @param {Function} callback on error + * @example imgReady('image.png', function () { + alert('size ready: width=' + this.width + '; height=' + this.height); + }); + */ + $.zui.imgReady = (function() { + var list = [], + intervalId = null, + + // 用来执行队列 + tick = function() { + var i = 0; + for(; i < list.length; i++) { + list[i].end ? list.splice(i--, 1) : list[i](); + }!list.length && stop(); + }, + + // 停止所有定时器队列 + stop = function() { + clearInterval(intervalId); + intervalId = null; + }; + + return function(url, ready, load, error) { + var onready, width, height, newWidth, newHeight, + img = new Image(); + + img.src = url; + + // 如果图片被缓存,则直接返回缓存数据 + if(img.complete) { + ready.call(img); + load && load.call(img); + return; + } + + width = img.width; + height = img.height; + + // 加载错误后的事件 + img.onerror = function() { + error && error.call(img); + onready.end = true; + img = img.onload = img.onerror = null; + }; + + // 图片尺寸就绪 + onready = function() { + newWidth = img.width; + newHeight = img.height; + if(newWidth !== width || newHeight !== height || + // 如果图片已经在其他地方加载可使用面积检测 + newWidth * newHeight > 1024 + ) { + ready.call(img); + onready.end = true; + } + }; + onready(); + + // 完全加载完毕的事件 + img.onload = function() { + // onload在定时器时间差范围内可能比onready快 + // 这里进行检查并保证onready优先执行 + !onready.end && onready(); + + load && load.call(img); + + // IE gif动画会循环执行onload,置空onload即可 + img = img.onload = img.onerror = null; + }; + + // 加入队列中定期执行 + if(!onready.end) { + list.push(onready); + // 无论何时只允许出现一个定时器,减少浏览器性能损耗 + if(intervalId === null) intervalId = setInterval(tick, 40); + } + }; + })(); +}(jQuery)); + + +/* ======================================================================== + * ZUI: lightbox.js + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + +(function($, window, Math) { + 'use strict'; + + if(!$.fn.modalTrigger) throw new Error('modal & modalTrigger requires for lightbox'); + if(!$.zui.imgReady) throw new Error('imgReady requires for lightbox'); + + var Lightbox = function(element, options) { + this.$ = $(element); + this.options = this.getOptions(options); + + this.init(); + }; + + Lightbox.DEFAULTS = { + modalTeamplate: '
  • ").append(a).toggleClass("active",e===o.state.page).toggleClass("disabled",!e)),a},o.prototype.createNavItems=function(t){var e=this,i=e.$,n=e.state,o=n.totalPage,a=n.page,s=function(t,n){if(t===!1)return void i.append(e.createLinkItem(0,n||''));void 0===n&&(n=t);for(var o=t;o<=n;++o)i.append(e.createLinkItem(o))};void 0===t&&(t=e.options.maxNavCount||10),s(1),o>1&&(o<=t?s(2,o):ao-t+2?(s(!1),s(o-t+2,o)):(s(!1),s(a-Math.ceil((t-4)/2),a+Math.floor((t-4)/2)),s(!1),s(o)))},o.prototype.createGoto=function(){var e=this,i=this.state,n=t('
    ");return n},o.prototype.createSizeMenu=function(){var e=this,i=this.state,n=t(''),o=e.options.pageSizeOptions;"string"==typeof o&&(o=o.split(","));for(var a=0;a'+s+"
  • ").toggleClass("active",s===i.recPerPage);n.append(r)}return t('
    ').addClass(e.options.menuDirection).append(n)},o.prototype.createElement=function(e,i,n){var o=this,a=t.proxy(o.createLinkItem,o),s=o.lang;switch(e){case"prev":return a(n.prev,s.prev);case"prev_icon":return a(n.prev,'');case"next":return a(n.next,s.next);case"next_icon":return a(n.next,'');case"first":return a(1,s.first,!0);case"first_icon":return a(1,'',!0);case"last":return a(n.totalPage,s.last,!0);case"last_icon":return a(n.totalPage,'',!0);case"space":case"|":return t('
  • ');case"nav":case"pages":return void o.createNavItems();case"total_text":return t(('
    '+s.totalCount+"
    ").format(n));case"page_text":return t(('
    '+s.pageOf+"
    ").format(n));case"total_page_text":return t(('
    '+s.totalPage+"
    ").format(n));case"page_of_total_text":return t(('
    '+s.pageOfTotal+"
    ").format(n));case"page_size_text":return t(('
    '+s.pageSize+"
    ").format(n));case"items_range_text":return t(('
    '+s.itemsRange+"
    ").format(n));case"goto":return o.createGoto();case"size_menu":return o.createSizeMenu();default:return t("
  • ").html(e)}},o.prototype.createLink=function(e,i){var n=this.options.linkCreator;return"string"==typeof n?n.format(t.extend({},i,{page:e})):t.isFunction(n)?n(e,i):"#page="+e},o.prototype.render=function(e){var i=this,n=i.state,o=i.options.elementCreator||i.createElement,a=t.isPlainObject(o);e=e||i.elements||i.options.elements,"string"==typeof e&&(e=e.split(",")),i.elements=e,i.$.empty();for(var s=0;s").append(c)),i.$.append(c))}var d=null;return i.$.children("li").each(function(){var e=t(this),i=!!e.children(".pager-item").length;d?d.toggleClass("pager-item-right",!i):i&&e.addClass("pager-item-left"),d=i?e:null}),i.$.callComEvent(i,"onRender",[n]),i},o.DEFAULTS=t.extend({elements:["first_icon","prev_icon","pages","next_icon","last_icon","page_of_total_text","items_range_text","total_text"],prevIcon:"icon-double-angle-left",nextIcon:"icon-double-angle-right",firstIcon:"icon-step-backward",lastIcon:"icon-step-forward",maxNavCount:10,menuDirection:"dropdown",pageSizeOptions:[10,20,30,50,100]},i),t.fn.pager=function(i){return this.each(function(){var n=t(this),a=n.data(e),s="object"==typeof i&&i;a||n.data(e,a=new o(this,s)),"string"==typeof i&&a[i]()})},o.NAME=e,t.fn.pager.Constructor=o,t(function(){t('[data-ride="pager"]').pager()})}(jQuery),+function(t){"use strict";var e="zui.tab",i=function(e){this.element=t(e)};i.prototype.show=function(){var i=this.element,n=i.closest("ul:not(.dropdown-menu)"),o=i.attr("data-target")||i.attr("data-tab");if(o||(o=i.attr("href"),o=o&&o.replace(/.*(?=#[^\s]*$)/,"")),!i.parent("li").hasClass("active")){var a=n.find(".active:last a")[0],s=t.Event("show."+e,{relatedTarget:a});if(i.trigger(s),!s.isDefaultPrevented()){var r=t(o);this.activate(i.parent("li"),n),this.activate(r,r.parent(),function(){i.trigger({type:"shown."+e,relatedTarget:a})})}}},i.prototype.activate=function(e,i,n){function o(){a.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),e.addClass("active"),s?(e[0].offsetWidth,e.addClass("in")):e.removeClass("fade"),e.parent(".dropdown-menu")&&e.closest("li.dropdown").addClass("active"),n&&n()}var a=i.find("> .active"),s=n&&t.support.transition&&a.hasClass("fade");s?a.one(t.support.transition.end,o).emulateTransitionEnd(150):o(),a.removeClass("in")};var n=t.fn.tab;t.fn.tab=function(n){return this.each(function(){var o=t(this),a=o.data(e);a||o.data(e,a=new i(this)),"string"==typeof n&&a[n]()})},t.fn.tab.Constructor=i,t.fn.tab.noConflict=function(){return t.fn.tab=n,this},t(document).on("click.zui.tab.data-api",'[data-toggle="tab"], [data-tab]',function(e){e.preventDefault(),t(this).tab("show")})}(window.jQuery),+function(t){"use strict";function e(){var t=document.createElement("bootstrap"),e={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var i in e)if(void 0!==t.style[i])return{end:e[i]};return!1}t.fn.emulateTransitionEnd=function(e){var i=!1,n=this;t(this).one("bsTransitionEnd",function(){i=!0});var o=function(){i||t(n).trigger(t.support.transition.end)};return setTimeout(o,e),this},t(function(){t.support.transition=e(),t.support.transition&&(t.event.special.bsTransitionEnd={bindType:t.support.transition.end,delegateType:t.support.transition.end,handle:function(e){if(t(e.target).is(this))return e.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(t){"use strict";var e="zui.collapse",i=function(e,n){this.$element=t(e),this.options=t.extend({},i.DEFAULTS,n),this.transitioning=null,this.options.parent&&(this.$parent=t(this.options.parent)),this.options.toggle&&this.toggle()};i.DEFAULTS={toggle:!0},i.prototype.dimension=function(){var t=this.$element.hasClass("width");return t?"width":"height"},i.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var i=t.Event("show."+e);if(this.$element.trigger(i),!i.isDefaultPrevented()){var n=this.$parent&&this.$parent.find(".in");if(n&&n.length){var o=n.data(e);if(o&&o.transitioning)return;n.collapse("hide"),o||n.data(e,null)}var a=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[a](0),this.transitioning=1;var s=function(){this.$element.removeClass("collapsing").addClass("in")[a]("auto"),this.transitioning=0,this.$element.trigger("shown."+e)};if(!t.support.transition)return s.call(this);var r=t.camelCase(["scroll",a].join("-"));this.$element.one(t.support.transition.end,t.proxy(s,this)).emulateTransitionEnd(350)[a](this.$element[0][r])}}},i.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var i=t.Event("hide."+e);if(this.$element.trigger(i),!i.isDefaultPrevented()){var n=this.dimension();this.$element[n](this.$element[n]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var o=function(){this.transitioning=0,this.$element.trigger("hidden."+e).removeClass("collapsing").addClass("collapse")};return t.support.transition?void this.$element[n](0).one(t.support.transition.end,t.proxy(o,this)).emulateTransitionEnd(350):o.call(this)}}},i.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var n=t.fn.collapse;t.fn.collapse=function(n){return this.each(function(){var o=t(this),a=o.data(e),s=t.extend({},i.DEFAULTS,o.data(),"object"==typeof n&&n);a||o.data(e,a=new i(this,s)),"string"==typeof n&&a[n]()})},t.fn.collapse.Constructor=i,t.fn.collapse.noConflict=function(){return t.fn.collapse=n,this},t(document).on("click."+e+".data-api","[data-toggle=collapse]",function(i){var n,o=t(this),a=o.attr("data-target")||i.preventDefault()||(n=o.attr("href"))&&n.replace(/.*(?=#[^\s]+$)/,""),s=t(a),r=s.data(e),l=r?"toggle":o.data(),c=o.attr("data-parent"),d=c&&t(c);r&&r.transitioning||(d&&d.find('[data-toggle=collapse][data-parent="'+c+'"]').not(o).addClass("collapsed"),o[s.hasClass("in")?"addClass":"removeClass"]("collapsed")),s.collapse(l)})}(window.jQuery),function(t,e){"use strict";var i=1200,n=992,o=768,a=e(t),s=function(){var t=a.width();e("html").toggleClass("screen-desktop",t>=n&&t=i).toggleClass("screen-tablet",t>=o&&t=n)},r="",l=navigator.userAgent;l.match(/(iPad|iPhone|iPod)/i)?r+=" os-ios":l.match(/android/i)?r+=" os-android":l.match(/Win/i)?r+=" os-windows":l.match(/Mac/i)?r+=" os-mac":l.match(/Linux/i)?r+=" os-linux":l.match(/X11/i)&&(r+=" os-unix"),"ontouchstart"in document.documentElement&&(r+=" is-touchable"),e("html").addClass(r),a.resize(s),s()}(window,jQuery),function(t){"use strict";var e={zh_cn:'您的浏览器版本过低,无法体验所有功能,建议升级或者更换浏览器。 了解更多...',zh_tw:'您的瀏覽器版本過低,無法體驗所有功能,建議升級或者更换瀏覽器。了解更多...',en:'Your browser is too old, it has been unable to experience the colorful internet. We strongly recommend that you upgrade a better one. Learn more...'},i=function(){var t=this.isIE()||this.isIE10()||!1;if(t)for(var e=10;e>5;e--)if(this.isIE(e)){t=e;break}this.ie=t,this.cssHelper()};i.prototype.cssHelper=function(){var e=this.ie,i=t("html");i.toggleClass("ie",e).removeClass("ie-6 ie-7 ie-8 ie-9 ie-10"),e&&i.addClass("ie-"+e).toggleClass("gt-ie-7 gte-ie-8 support-ie",e>=8).toggleClass("lte-ie-7 lt-ie-8 outdated-ie",e<8).toggleClass("gt-ie-8 gte-ie-9",e>=9).toggleClass("lte-ie-8 lt-ie-9",e<9).toggleClass("gt-ie-9 gte-ie-10",e>=10).toggleClass("lte-ie-9 lt-ie-10",e<10)},i.prototype.tip=function(i){var n=t("#browseHappyTip");n.length||(n=t('
    '),n.prependTo("body")),n.find(".content").html(i||this.browseHappyTip||e[t.zui.clientLang()||"zh_cn"])},i.prototype.isIE=function(t){if(10===t)return this.isIE10();var e=document.createElement("b");return e.innerHTML="",1===e.getElementsByTagName("i").length},i.prototype.isIE10=function(){return!1},t.zui({browser:new i}),t(function(){t("body").hasClass("disabled-browser-tip")||t.zui.browser.ie&&t.zui.browser.ie<8&&t.zui.browser.tip()})}(jQuery),function(){"use strict";Date.ONEDAY_TICKS=864e5,Date.prototype.format||(Date.prototype.format=function(t){var e={"M+":this.getMonth()+1,"d+":this.getDate(),"h+":this.getHours(),"m+":this.getMinutes(),"s+":this.getSeconds(),"q+":Math.floor((this.getMonth()+3)/3),"S+":this.getMilliseconds()};/(y+)/i.test(t)&&(t=t.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length)));for(var i in e)new RegExp("("+i+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[i]:("00"+e[i]).substr((""+e[i]).length)));return t}),Date.prototype.addMilliseconds||(Date.prototype.addMilliseconds=function(t){return this.setTime(this.getTime()+t),this}),Date.prototype.addDays||(Date.prototype.addDays=function(t){return this.addMilliseconds(t*Date.ONEDAY_TICKS),this}),Date.prototype.clone||(Date.prototype.clone=function(){var t=new Date;return t.setTime(this.getTime()),t}),Date.isLeapYear||(Date.isLeapYear=function(t){return t%4===0&&t%100!==0||t%400===0}),Date.getDaysInMonth||(Date.getDaysInMonth=function(t,e){return[31,Date.isLeapYear(t)?29:28,31,30,31,30,31,31,30,31,30,31][e]}),Date.prototype.isLeapYear||(Date.prototype.isLeapYear=function(){return Date.isLeapYear(this.getFullYear())}),Date.prototype.clearTime||(Date.prototype.clearTime=function(){return this.setHours(0),this.setMinutes(0),this.setSeconds(0),this.setMilliseconds(0),this}),Date.prototype.getDaysInMonth||(Date.prototype.getDaysInMonth=function(){return Date.getDaysInMonth(this.getFullYear(),this.getMonth())}),Date.prototype.addMonths||(Date.prototype.addMonths=function(t){var e=this.getDate();return this.setDate(1),this.setMonth(this.getMonth()+t),this.setDate(Math.min(e,this.getDaysInMonth())),this}),Date.prototype.getLastWeekday||(Date.prototype.getLastWeekday=function(t){t=t||1;for(var e=this.clone();e.getDay()!=t;)e.addDays(-1);return e.clearTime(),e}),Date.prototype.isSameDay||(Date.prototype.isSameDay=function(t){return t.toDateString()===this.toDateString()}),Date.prototype.isSameWeek||(Date.prototype.isSameWeek=function(t){var e=this.getLastWeekday(),i=e.clone().addDays(7);return t>=e&&t0){var i;if(arguments.length<=2&&"object"==typeof t)for(var n in t)void 0!==t[n]&&(i=new RegExp("("+(arguments[1]?arguments[1].replace("0",n):"{"+n+"}")+")","g"),e=e.replace(i,t[n]));else for(var o=0;oi.length)&&(e=i.length),e-=t.length;var n=i.indexOf(t,e);return n!==-1&&n===e}),String.prototype.startsWith||(String.prototype.startsWith=function(t,e){return e=e||0,this.lastIndexOf(t,e)===e}),String.prototype.includes||(String.prototype.includes=function(){return String.prototype.indexOf.apply(this,arguments)!==-1})}(),/*! + * jQuery resize event - v1.1 + * http://benalman.com/projects/jquery-resize-plugin/ + * Copyright (c) 2010 "Cowboy" Ben Alman + * MIT & GPL http://benalman.com/about/license/ + */ +function(t,e,i){"$:nomunge";function n(){o=e[r](function(){a.each(function(){var e=t(this),i=e.width(),n=e.height(),o=t.data(this,c);i===o.w&&n===o.h||e.trigger(l,[o.w=i,o.h=n])}),n()},s[d])}var o,a=t([]),s=t.resize=t.extend(t.resize,{}),r="setTimeout",l="resize",c=l+"-special-event",d="delay",p="throttleWindow";s[d]=250,s[p]=!0,t.event.special[l]={setup:function(){if(!s[p]&&this[r])return!1;var e=t(this);a=a.add(e),t.data(this,c,{w:e.width(),h:e.height()}),1===a.length&&n()},teardown:function(){if(!s[p]&&this[r])return!1;var e=t(this);a=a.not(e),e.removeData(c),a.length||clearTimeout(o)},add:function(e){function n(e,n,a){var s=t(this),r=t.data(this,c)||{};r.w=n!==i?n:s.width(),r.h=a!==i?a:s.height(),o.apply(this,arguments)}if(!s[p]&&this[r])return!1;var o;return t.isFunction(e)?(o=e,n):(o=e.handler,void(e.handler=n))}}}(jQuery,this),+function(t){"use strict";function e(n,o){var a,s=t.proxy(this.process,this);this.$element=t(t(n).is("body")?window:n),this.$body=t("body"),this.$scrollElement=this.$element.on("scroll."+i+".data-api",s),this.options=t.extend({},e.DEFAULTS,o),this.selector||(this.selector=(this.options.target||(a=t(n).attr("href"))&&a.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a"),this.offsets=t([]),this.targets=t([]),this.activeTarget=null,this.refresh(),this.process()}var i="zui.scrollspy";e.DEFAULTS={offset:10},e.prototype.refresh=function(){var e=this.$element[0]==window?"offset":"position";this.offsets=t([]),this.targets=t([]);var i=this;this.$body.find(this.selector).map(function(){var n=t(this),o=n.data("target")||n.attr("href"),a=/^#./.test(o)&&t(o);return a&&a.length&&a.is(":visible")&&[[a[e]().top+(!t.isWindow(i.$scrollElement.get(0))&&i.$scrollElement.scrollTop()),o]]||null}).sort(function(t,e){return t[0]-e[0]}).each(function(){i.offsets.push(this[0]),i.targets.push(this[1])})},e.prototype.process=function(){var t,e=this.$scrollElement.scrollTop()+this.options.offset,i=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,n=i-this.$scrollElement.height(),o=this.offsets,a=this.targets,s=this.activeTarget;if(e>=n)return s!=(t=a.last()[0])&&this.activate(t);if(s&&e<=o[0])return s!=(t=a[0])&&this.activate(t);for(t=o.length;t--;)s!=a[t]&&e>=o[t]&&(!o[t+1]||e<=o[t+1])&&this.activate(a[t])},e.prototype.activate=function(e){this.activeTarget=e,t(this.selector).parentsUntil(this.options.target,".active").removeClass("active");var n=this.selector+'[data-target="'+e+'"],'+this.selector+'[href="'+e+'"]',o=t(n).parents("li").addClass("active");o.parent(".dropdown-menu").length&&(o=o.closest("li.dropdown").addClass("active")),o.trigger("activate."+i)};var n=t.fn.scrollspy;t.fn.scrollspy=function(n){return this.each(function(){var o=t(this),a=o.data(i),s="object"==typeof n&&n;a||o.data(i,a=new e(this,s)),"string"==typeof n&&a[n]()})},t.fn.scrollspy.Constructor=e,t.fn.scrollspy.noConflict=function(){return t.fn.scrollspy=n,this},t(window).on("load",function(){t('[data-spy="scroll"]').each(function(){var e=t(this);e.scrollspy(e.data())})})}(jQuery),function(t,e){"use strict";var i,n,o="localStorage",a="page_"+t.location.pathname+t.location.search,s=function(){this.slience=!0;try{o in t&&t[o]&&t[o].setItem&&(this.enable=!0,i=t[o])}catch(s){}this.enable||(n={},i={getLength:function(){var t=0;return e.each(n,function(){t++}),t},key:function(t){var i,o=0;return e.each(n,function(e){return o===t?(i=e,!1):void o++}),i},removeItem:function(t){delete n[t]},getItem:function(t){return n[t]},setItem:function(t,e){n[t]=e},clear:function(){n={}}}),this.storage=i,this.page=this.get(a,{})};s.prototype.pageSave=function(){if(e.isEmptyObject(this.page))this.remove(a);else{var t,i=[];for(t in this.page){var n=this.page[t];null===n&&i.push(t)}for(t=i.length-1;t>=0;t--)delete this.page[i[t]];this.set(a,this.page)}},s.prototype.pageRemove=function(t){"undefined"!=typeof this.page[t]&&(this.page[t]=null,this.pageSave())},s.prototype.pageClear=function(){this.page={},this.pageSave()},s.prototype.pageGet=function(t,e){var i=this.page[t];return void 0===e||null!==i&&void 0!==i?i:e},s.prototype.pageSet=function(t,i){e.isPlainObject(t)?e.extend(!0,this.page,t):this.page[this.serialize(t)]=i,this.pageSave()},s.prototype.check=function(){if(!this.enable&&!this.slience)throw new Error("Browser not support localStorage or enable status been set true.");return this.enable},s.prototype.length=function(){return this.check()?i.getLength?i.getLength():i.length:0},s.prototype.removeItem=function(t){return i.removeItem(t),this},s.prototype.remove=function(t){return this.removeItem(t)},s.prototype.getItem=function(t){return i.getItem(t)},s.prototype.get=function(t,e){var i=this.deserialize(this.getItem(t));return"undefined"!=typeof i&&null!==i||"undefined"==typeof e?i:e},s.prototype.key=function(t){return i.key(t)},s.prototype.setItem=function(t,e){return i.setItem(t,e),this},s.prototype.set=function(t,e){return void 0===e?this.remove(t):(this.setItem(t,this.serialize(e)),this)},s.prototype.clear=function(){return i.clear(),this},s.prototype.forEach=function(t){for(var e=this.length(),n=e-1;n>=0;n--){var o=i.key(n);t(o,this.get(o))}return this},s.prototype.getAll=function(){var t={};return this.forEach(function(e,i){t[e]=i}),t},s.prototype.serialize=function(t){return"string"==typeof t?t:JSON.stringify(t)},s.prototype.deserialize=function(t){if("string"==typeof t)try{return JSON.parse(t)}catch(e){return t||void 0}},e.zui({store:new s})}(window,jQuery),function(t){"use strict";var e="zui.searchBox",i=function(e,n){var o=this;o.name=name,o.$=t(e),o.options=n=t.extend({},i.DEFAULTS,o.$.data(),n);var a=o.$.is(n.inputSelector)?o.$:o.$.find(n.inputSelector);if(a.length){var s=function(){o.changeTimer&&(clearTimeout(o.changeTimer),o.changeTimer=null)},r=function(){s();var t=o.getSearch();if(t!==o.lastValue){var e=""===t;a.toggleClass("empty",e),o.$.callComEvent(o,"onSearchChange",[t,e]),o.lastValue=t}};o.$input=a=a.first(),o.lastValue=o.getSearch(),a.on(n.listenEvent,function(t){o.changeTimer=setTimeout(function(){r()},n.changeDelay)}).on("focus",function(t){a.addClass("focus"),o.$.callComEvent(o,"onFocus",[t])}).on("blur",function(t){a.removeClass("focus"),o.$.callComEvent(o,"onBlur",[t])}).on("keydown",function(t){var e=0,i=t.witch;27===i&&n.escToClear?(this.setSearch("",!0),r(),e=1):13===i&&n.onPressEnter&&(r(),o.$.callComEvent(o,"onPressEnter",[t]));var a=o.$.callComEvent(o,"onKeyDown",[t]);a===!1&&(e=1),e&&t.preventDefault()}),o.$.on("click",".search-clear-btn",function(t){o.setSearch("",!0),r(),t.preventDefault()}),r()}else console.error("ZUI: search box init error, cannot find search box input element.")};i.DEFAULTS={inputSelector:'input[type="search"],input[type="text"]',listenEvent:"change input paste",changeDelay:500},i.prototype.getSearch=function(){return this.$input&&t.trim(this.$input.val())},i.prototype.setSearch=function(t,e){var i=this.$input;i&&(i.val(t),e||i.trigger("change"))},i.prototype.focus=function(){this.$input&&this.$input.focus()},t.fn.searchBox=function(n){return this.each(function(){var o=t(this),a=o.data(e),s="object"==typeof n&&n;a||o.data(e,a=new i(this,s)),"string"==typeof n&&a[n]()})},i.NAME=e,t.fn.searchBox.Constructor=i}(jQuery),function(t,e){"use strict";var i="zui.draggable",n={container:"body",move:!0},o=0,a=function(e,i){var a=this;a.$=t(e),a.id=o++,a.options=t.extend({},n,a.$.data(),i),a.init()};a.DEFAULTS=n,a.NAME=i,a.prototype.init=function(){var n,o,a,s,r,l=this,c=l.$,d="before",p="drag",h="finish",u="."+i+"."+l.id,f="mousedown"+u,g="mouseup"+u,m="mousemove"+u,v=l.options,y=v.selector,b=v.handle,w=c,C=t.isFunction(v.move),$=function(t){var e=t.pageX,i=t.pageY;r=!0;var o={left:e-a.x,top:i-a.y};w.removeClass("drag-ready").addClass("dragging"),v.move&&(C?v.move(o,w):w.css(o)),v[p]&&v[p]({event:t,element:w,startOffset:a,pos:o,offset:{x:e-n.x,y:i-n.y},smallOffset:{x:e-s.x,y:i-s.y}}),s.x=e,s.y=i,v.stopPropagation&&t.stopPropagation()},x=function(i){if(t(e).off(u),!r)return void w.removeClass("drag-ready");var o={left:i.pageX-a.x,top:i.pageY-a.y};w.removeClass("drag-ready dragging"),v.move&&(C?v.move(o,w):w.css(o)),v[h]&&v[h]({event:i,element:w,startOffset:a,pos:o,offset:{x:i.pageX-n.x,y:i.pageY-n.y},smallOffset:{x:i.pageX-s.x,y:i.pageY-s.y}}),i.preventDefault(),v.stopPropagation&&i.stopPropagation()},T=function(i){var l=t.zui.getMouseButtonCode(v.mouseButton);if(!(l>-1&&i.button!==l)){var c=t(this);if(y&&(w=b?c.closest(y):c),v[d]){var p=v[d]({event:i,element:w});if(p===!1)return}var h=t(v.container),u=w.offset();o=h.offset(),n={x:i.pageX,y:i.pageY},a={x:i.pageX-u.left+o.left,y:i.pageY-u.top+o.top},s=t.extend({},n),r=!1,w.addClass("drag-ready"),i.preventDefault(),v.stopPropagation&&i.stopPropagation(),t(e).on(m,$).on(g,x)}};b?c.on(f,b,T):y?c.on(f,y,T):c.on(f,T)},a.prototype.destroy=function(){var n="."+i+"."+this.id;this.$.off(n),t(e).off(n),this.$.data(i,null)},t.fn.draggable=function(e){return this.each(function(){var n=t(this),o=n.data(i),s="object"==typeof e&&e;o||n.data(i,o=new a(this,s)),"string"==typeof e&&o[e]()})},t.fn.draggable.Constructor=a}(jQuery,document),function(t,e,i){"use strict";var n="zui.droppable",o={target:".droppable-target",deviation:5,sensorOffsetX:0,sensorOffsetY:0},a=0,s=function(e,i){var n=this;n.id=a++,n.$=t(e),n.options=t.extend({},o,n.$.data(),i),n.init()};s.DEFAULTS=o,s.NAME=n,s.prototype.trigger=function(e,i){return t.zui.callEvent(this.options[e],i,this)},s.prototype.init=function(){var o,a,s,r,l,c,d,p,h,u,f,g,m,v=this,y=v.$,b=v.options,w=b.deviation,C="."+n+"."+v.id,$="mousedown"+C,x="mouseup"+C,T="mousemove"+C,k=b.selector,D=b.handle,E=b.flex,S=b.container,z=b.canMoveHere,P=y,I=!1,M=S?t(b.container).first():k?y:t("body"),j=function(e){if(I&&(f={left:e.pageX,top:e.pageY},!(i.abs(f.left-p.left)a&&f.top>s&&f.left-1&&i.button!==n)){var f=t(this);k&&(P=D?f.closest(k):f),P.hasClass("drag-shadow")||b.before&&b.before({event:i,element:P})===!1||(I=!0,o=t.isFunction(b.target)?b.target(y):M.find(b.target),a=null,s=null,r=!1,l=!0,c=null,d=P.offset(),h=M.offset(),p={left:i.pageX,top:i.pageY},g=t.extend({},p),u={left:p.left-d.left,top:p.top-d.top},P.addClass("drag-from"),t(e).on(T,j).on(x,L),m=setTimeout(function(){t(e).on($,L)},10),i.preventDefault())}};D?y.on($,D,O):k?y.on($,k,O):y.on($,O)},s.prototype.destroy=function(){var i="."+n+"."+this.id;this.$.off(i),t(e).off(i),this.$.data(n,null)},s.prototype.reset=function(){this.destroy(),this.init()},t.fn.droppable=function(e){return this.each(function(){var i=t(this),o=i.data(n),a="object"==typeof e&&e;o||i.data(n,o=new s(this,a)),"string"==typeof e&&o[e]()})},t.fn.droppable.Constructor=s}(jQuery,document,Math),+function(t){"use strict";function e(e,o,a){return this.each(function(){var s=t(this),r=s.data(i),l=t.extend({},n.DEFAULTS,s.data(),"object"==typeof e&&e);r||s.data(i,r=new n(this,l)),"string"==typeof e?r[e](o,a):l.show&&r.show(o,a)})}var i="zui.modal",n=function(e,n){var o=this;o.options=n,o.$body=t(document.body),o.$element=t(e),o.$backdrop=o.isShown=null,o.scrollbarWidth=0,void 0===n.moveable&&(o.options.moveable=o.$element.hasClass("modal-moveable")),n.remote&&o.$element.find(".modal-content").load(n.remote,function(){o.$element.trigger("loaded."+i)})};n.VERSION="3.2.0",n.TRANSITION_DURATION=300,n.BACKDROP_TRANSITION_DURATION=150,n.DEFAULTS={backdrop:!0,keyboard:!0,show:!0,position:"fit"};var o=function(e,i){var n=t(window);i.left=Math.max(0,Math.min(i.left,n.width()-e.outerWidth())),i.top=Math.max(0,Math.min(i.top,n.height()-e.outerHeight())),e.css(i)};n.prototype.toggle=function(t,e){return this.isShown?this.hide():this.show(t,e)},n.prototype.ajustPosition=function(e){var n=this,a=n.options;if("undefined"==typeof e&&(e=a.position),"undefined"!=typeof e){var s=n.$element.find(".modal-dialog"),r=Math.max(0,(t(window).height()-s.outerHeight())/2),l="fit"==e?2*r/3:"center"==e?r:e;if(s.hasClass("modal-moveable")){var c=null,d=a.rememberPos;d&&(d===!0?c=n.$element.data("modal-pos"):t.zui.store&&(c=t.zui.store.pageGet(i+".rememberPos."+d))),c||(c={left:Math.max(0,(t(window).width()-s.outerWidth())/2),top:l}),"inside"===a.moveable?o(s,c):s.css(c)}else s.css("margin-top",l)}},n.prototype.setMoveale=function(){t.fn.draggable||console.error("Moveable modal requires draggable.js.");var e=this,n=e.options,a=e.$element.find(".modal-dialog").removeClass("modal-dragged");a.toggleClass("modal-moveable",!!n.moveable),e.$element.data("modal-moveable-setup")||a.draggable({container:e.$element,handle:".modal-header",before:function(){a.css("margin-top","").addClass("modal-dragged")},finish:function(o){var a=n.rememberPos;a&&(e.$element.data("modal-pos",o.pos),t.zui.store&&a!==!0&&t.zui.store.pageSet(i+".rememberPos."+a,o.pos))},move:"inside"!==n.moveable||function(t){o(a,t)}})},n.prototype.show=function(e,o){var a=this,s=t.Event("show."+i,{relatedTarget:e});a.$element.trigger(s),a.isShown||s.isDefaultPrevented()||(a.isShown=!0,a.options.moveable&&a.setMoveale(),a.checkScrollbar(),a.$body.addClass("modal-open"),a.setScrollbar(),a.escape(),a.$element.on("click.dismiss."+i,'[data-dismiss="modal"]',t.proxy(a.hide,a)),a.backdrop(function(){var s=t.support.transition&&a.$element.hasClass("fade");a.$element.parent().length||a.$element.appendTo(a.$body),a.$element.show().scrollTop(0),s&&a.$element[0].offsetWidth,a.$element.addClass("in").attr("aria-hidden",!1),a.ajustPosition(o),a.enforceFocus();var r=t.Event("shown."+i,{relatedTarget:e});s?a.$element.find(".modal-dialog").one("bsTransitionEnd",function(){a.$element.trigger("focus").trigger(r)}).emulateTransitionEnd(n.TRANSITION_DURATION):a.$element.trigger("focus").trigger(r)}))},n.prototype.hide=function(e){e&&e.preventDefault(),e=t.Event("hide."+i),this.$element.trigger(e),this.isShown&&!e.isDefaultPrevented()&&(this.isShown=!1,this.$body.removeClass("modal-open"),this.resetScrollbar(),this.escape(),t(document).off("focusin."+i),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss."+i),t.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",t.proxy(this.hideModal,this)).emulateTransitionEnd(n.TRANSITION_DURATION):this.hideModal())},n.prototype.enforceFocus=function(){t(document).off("focusin."+i).on("focusin."+i,t.proxy(function(t){this.$element[0]===t.target||this.$element.has(t.target).length||this.$element.trigger("focus")},this))},n.prototype.escape=function(){this.isShown&&this.options.keyboard?t(document).on("keydown.dismiss."+i,t.proxy(function(e){if(27==e.which){var n=t.Event("escaping."+i),o=this.$element.triggerHandler(n,"esc");if(void 0!=o&&!o)return;this.hide()}},this)):this.isShown||t(document).off("keydown.dismiss."+i)},n.prototype.hideModal=function(){var t=this;this.$element.hide(),this.backdrop(function(){t.$element.trigger("hidden."+i)})},n.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},n.prototype.backdrop=function(e){var o=this,a=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var s=t.support.transition&&a;if(this.$backdrop=t('
  • ');var n=t("").attr({href:e.url||"###","class":e.className,style:e.style}).data("item",e);return e.html?n.html(e.html===!0?e.label||e.text:e.html):n.text(e.label||e.text),e.onClick&&n.on("click",e.onClick),t("
  • ").toggleClass("disabled",e.disabled===!0).append(n)},p=null,h=function(e,i){"function"==typeof e&&(i=e,e=null),p&&(clearTimeout(p),p=null);var n=t("#"+s);if(n.length){var o=n.data("options");if(!e||o.id===e){var r=function(){n.hide(),o.onHidden&&o.onHidden(),i&&i()};o.onHide&&o.onHide();var l=o.animation;n.removeClass("in"),l?p=setTimeout(r,o.duration):r()}}return a},u=function(c,u,f){t.isPlainObject(c)&&(f=u,u=c,c=u.items),o=!0,u=t.extend({},n,u);var g=u.x,m=u.y;g===e&&(g=(u.event||u).clientX),g===e&&(g=r),m===e&&(m=(u.event||u).clientY),m===e&&(m=l);var v=t("#"+s);v.length||(v=t('').appendTo("body"));var y=v.find(".contextmenu-menu").off("click."+i).on("click."+i,"a",function(e){var i=t(this),n=u.onClickItem&&u.onClickItem(i.data("item"),i,e);n!==!1&&h()}).empty();v.hide().attr("class","contextmenu");var b=u.itemCreator||d,w=typeof c;"string"===w?c=c.split(","):"function"===w&&(c=c(u)),t.each(c,function(t,e){y.append(b(e,t,u))});var C=u.animation,$=u.duration;C===!0&&(u.animation=C="fade"),p&&(clearTimeout(p),p=null);var x=function(){v.addClass("in"),u.onShown&&u.onShown(),f&&f()};u.onShow&&u.onShow(),v.data("options",{animation:C,onHide:u.onHide,onHidden:u.onHidden,id:u.id,duration:$});var T=t(window);return g=Math.max(0,Math.min(g,T.width()-y.outerWidth())),m=Math.max(0,Math.min(m,T.height()-y.outerHeight())),v.css({left:g,top:m}),C?(v.addClass("open").addClass(C).show(),p=setTimeout(function(){x(),o=!1},u.duration)):(v.addClass("open").show(),x(),p=setTimeout(function(){o=!1},200)),a};t(document).on("click",function(e){o||t(e.target).closest(".contextmenu").length||h()}),t.extend(a,{NAME:i,DEFAULTS:n,show:u,hide:h,listenMouse:c}),t.zui({ContextMenu:a});var f=function(e,n){var o=this;o.name=i,o.$=t(e),n=o.options=t.extend({trigger:"contextmenu"},a.DEFAULTS,this.$.data(),n);var s=n.trigger;o.id=t.zui.uuid();var r=function(t){if("mousedown"!==t.type||2===t.button){var e={x:t.clientX,y:t.clientY,event:t};return n.itemsCreator&&(e.items=n.itemsCreator.call(this,t)),o.show(e),t.preventDefault(),t.returnValue=!1,!1}},l=s+"."+i;n.selector?o.$.on(l,n.selector,r):o.$.on(l,r)};f.prototype.destory=function(){that.$.off("."+i)},f.prototype.hide=function(t){a.hide(this.id,t)},f.prototype.show=function(e,i){e=t.extend({},this.options,e),a.show(e,i)},t.fn.contextmenu=function(e){return this.each(function(){var n=t(this),o=n.data(i),a="object"==typeof e&&e;o||n.data(i,o=new f(this,a)),"string"==typeof e&&o[e]()})},t.fn.contextmenu.Constructor=f}(jQuery,void 0),+function(t){"use strict";var e=function(e,i){this.$element=t(e),this.$indicators=this.$element.find(".carousel-indicators"),this.options=i,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",t.proxy(this.pause,this)).on("mouseleave",t.proxy(this.cycle,this))};e.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,touchable:!0},e.prototype.touchable=function(){function e(e){var e=e||window.event;e.originalEvent&&(e=e.originalEvent);var a=t(this);switch(e.type){case"touchstart":n=e.touches[0].pageX,o=e.touches[0].pageY;break;case"touchend":var s=e.changedTouches[0].pageX-n,r=e.changedTouches[0].pageY-o;if(Math.abs(s)>Math.abs(r))i(a,s),Math.abs(s)>10&&e.preventDefault();else{var l=t(window);t("body,html").animate({scrollTop:l.scrollTop()-r},400)}}}function i(t,e){e>10?a.prev():e<-10&&a.next()}if(this.options.touchable){this.$element.on("touchstart touchmove touchend",e);var n,o,a=this}},e.prototype.cycle=function(e){return e||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(t.proxy(this.next,this),this.options.interval)),this},e.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},e.prototype.to=function(e){var i=this,n=this.getActiveIndex();if(!(e>this.$items.length-1||e<0))return this.sliding?this.$element.one("slid",function(){i.to(e)}):n==e?this.pause().cycle():this.slide(e>n?"next":"prev",t(this.$items[e]))},e.prototype.pause=function(e){return e||(this.paused=!0),this.$element.find(".next, .prev").length&&t.support.transition.end&&(this.$element.trigger(t.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},e.prototype.next=function(){if(!this.sliding)return this.slide("next")},e.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},e.prototype.slide=function(e,i){var n=this.$element.find(".item.active"),o=i||n[e](),a=this.interval,s="next"==e?"left":"right",r="next"==e?"first":"last",l=this;if(!o.length){if(!this.options.wrap)return;o=this.$element.find(".item")[r]()}this.sliding=!0,a&&this.pause();var c=t.Event("slide.zui.carousel",{relatedTarget:o[0],direction:s});if(!o.hasClass("active")){if(this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var e=t(l.$indicators.children()[l.getActiveIndex()]);e&&e.addClass("active")})),t.support.transition&&this.$element.hasClass("slide")){if(this.$element.trigger(c),c.isDefaultPrevented())return;o.addClass(e),o[0].offsetWidth,n.addClass(s),o.addClass(s),n.one(t.support.transition.end,function(){o.removeClass([e,s].join(" ")).addClass("active"),n.removeClass(["active",s].join(" ")),l.sliding=!1,setTimeout(function(){l.$element.trigger("slid")},0)}).emulateTransitionEnd(600)}else{if(this.$element.trigger(c),c.isDefaultPrevented())return;n.removeClass("active"),o.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return a&&this.cycle(),this}};var i=t.fn.carousel;t.fn.carousel=function(i){return this.each(function(){var n=t(this),o=n.data("zui.carousel"),a=t.extend({},e.DEFAULTS,n.data(),"object"==typeof i&&i),s="string"==typeof i?i:a.slide;o||n.data("zui.carousel",o=new e(this,a)),"number"==typeof i?o.to(i):s?o[s]():a.interval&&o.pause().cycle(),a.touchable&&o.touchable()})},t.fn.carousel.Constructor=e,t.fn.carousel.noConflict=function(){return t.fn.carousel=i,this},t(document).on("click.zui.carousel.data-api","[data-slide], [data-slide-to]",function(e){var i,n=t(this),o=t(n.attr("data-target")||(i=n.attr("href"))&&i.replace(/.*(?=#[^\s]+$)/,"")),a=t.extend({},o.data(),n.data()),s=n.attr("data-slide-to");s&&(a.interval=!1),o.carousel(a),(s=n.attr("data-slide-to"))&&o.data("zui.carousel").to(s),e.preventDefault()}),t(window).on("load",function(){t('[data-ride="carousel"]').each(function(){var e=t(this);e.carousel(e.data())})})}(window.jQuery),/*! TangBin: image.ready.js http://www.planeart.cn/?p=1121 */ +function(t){"use strict";t.zui.imgReady=function(){var t=[],e=null,i=function(){for(var e=0;e1024)&&(o.call(h),r.end=!0)},r(),h.onload=function(){!r.end&&r(),a&&a.call(h),h=h.onload=h.onerror=null},void(r.end||(t.push(r),null===e&&(e=setInterval(i,40)))))}}()}(jQuery),function(t,e,i){"use strict";if(!t.fn.modalTrigger)throw new Error("modal & modalTrigger requires for lightbox");if(!t.zui.imgReady)throw new Error("imgReady requires for lightbox");var n=function(e,i){this.$=t(e),this.options=this.getOptions(i),this.init()};n.DEFAULTS={modalTeamplate:'
  • <%if(datasets[i].label){%><%=datasets[i].label%><%}%>
  • <%}%>'};e.Type.extend({name:"Line",defaults:n,initialize:function(i){this.PointClass=e.Point.extend({strokeWidth:this.options.pointDotStrokeWidth,radius:this.options.pointDotRadius,display:this.options.pointDot,hitDetectionRadius:this.options.pointHitDetectionRadius,ctx:this.chart.ctx,inRange:function(t){return Math.pow(t-this.x,2)0&&ithis.scale.endPoint?t.controlPoints.outer.y=this.scale.endPoint:t.controlPoints.outer.ythis.scale.endPoint?t.controlPoints.inner.y=this.scale.endPoint:t.controlPoints.inner.y0&&(e.lineTo(h[h.length-1].x,this.scale.endPoint),e.lineTo(h[0].x,this.scale.endPoint),e.fillStyle=t.fillColor,e.closePath(),e.fill()),s.each(h,function(t){t.draw()})},this)}}),t.fn.lineChart=function(i,s){var n=[];return this.each(function(){var o=t(this);n.push(new e(this.getContext("2d")).Line(i,t.extend(o.data(),s)))}),1===n.length?n[0]:n}}.call(this,jQuery),function(t){"use strict";var i=t&&t.zui?t.zui:this,e=i.Chart,s=e.helpers,n={segmentShowStroke:!0,segmentStrokeColor:"#fff",segmentStrokeWidth:1,percentageInnerCutout:50,scaleShowLabels:!1,scaleLabel:"<%=value%>",scaleLabelPlacement:"auto",animationSteps:60,animationEasing:"easeOutBounce",animateRotate:!0,animateScale:!1,legendTemplate:'
      <% for (var i=0; i
    • <%if(segments[i].label){%><%=segments[i].label%><%}%>
    • <%}%>
    '};e.Type.extend({name:"Doughnut",defaults:n,initialize:function(t){this.segments=[],this.outerRadius=(s.min([this.chart.width,this.chart.height])-this.options.segmentStrokeWidth/2)/2,this.SegmentArc=e.Arc.extend({ctx:this.chart.ctx,x:this.chart.width/2,y:this.chart.height/2}),this.options.showTooltips&&s.bindEvents(this,this.options.tooltipEvents,function(t){var i="mouseout"!==t.type?this.getSegmentsAtEvent(t):[];s.each(this.segments,function(t){t.restore(["fillColor"])}),s.each(i,function(t){t.fillColor=t.highlightColor}),this.showTooltip(i)}),this.calculateTotal(t),s.each(t,function(t,i){this.addData(t,i,!0)},this),this.render()},getSegmentsAtEvent:function(t){var i=[],e=s.getRelativePosition(t);return s.each(this.segments,function(t){t.inRange(e.x,e.y)&&i.push(t)},this),i},addData:function(i,e,s){if(t.zui&&t.zui.Color&&t.zui.Color.get){var n=new t.zui.Color.get(i.color);i.color=n.toCssStr(),i.highlight||(i.highlight=n.lighten(5).toCssStr())}var o=e||this.segments.length;this.segments.splice(o,0,new this.SegmentArc({id:"undefined"==typeof i.id?o:i.id,value:i.value,outerRadius:this.options.animateScale?0:this.outerRadius,innerRadius:this.options.animateScale?0:this.outerRadius/100*this.options.percentageInnerCutout,fillColor:i.color,highlightColor:i.highlight||i.color,showStroke:this.options.segmentShowStroke,strokeWidth:this.options.segmentStrokeWidth,strokeColor:this.options.segmentStrokeColor,startAngle:1.5*Math.PI,circumference:this.options.animateRotate?0:this.calculateCircumference(i.value),showLabel:i.showLabel!==!1,label:i.label})),s||(this.reflow(),this.update())},calculateCircumference:function(t){return 2*Math.PI*(Math.abs(t)/this.total)},calculateTotal:function(t){this.total=0,s.each(t,function(t){this.total+=Math.abs(t.value)},this)},update:function(){this.calculateTotal(this.segments),s.each(this.activeElements,function(t){t.restore(["fillColor"])}),s.each(this.segments,function(t){t.save()}),this.render()},removeData:function(t){var i=s.isNumber(t)?t:this.segments.length-1;this.segments.splice(i,1),this.reflow(),this.update()},reflow:function(){s.extend(this.SegmentArc.prototype,{x:this.chart.width/2,y:this.chart.height/2}),this.outerRadius=(s.min([this.chart.width,this.chart.height])-this.options.segmentStrokeWidth/2)/2,s.each(this.segments,function(t){t.update({outerRadius:this.outerRadius,innerRadius:this.outerRadius/100*this.options.percentageInnerCutout})},this)},drawLabel:function(i,e,n){var o=this.options,a=(i.endAngle+i.startAngle)/2,h=o.scaleLabelPlacement;"inside"!==h&&"outside"!==h&&this.chart.width-this.chart.height>50&&i.circumference=0,g=l+d,v=r+f;u.textAlign=p?"left":"right",u.measureText(c).width,l=p?Math.max(d+i.outerRadius+10,l+30+d):Math.min(d-i.outerRadius-10,l-30+d);var x=o.scaleFontSize*(o.scaleLineHeight||1),m=Math.round((.8*r+f)/x)+1,y=(Math.floor(this.chart.width/x)+1,p?1:-1);if(n[m*y]&&(m>1?m--:m++),n[m*y])return;r=(m-1)*x+o.scaleFontSize/2,n[m*y]=!0,u.beginPath(),u.moveTo(g,v),u.lineTo(l,r),l=p?l+5:l-5,u.lineTo(l,r),u.strokeStyle=t.zui&&t.zui.Color?new t.zui.Color(i.fillColor).fade(40).toCssStr():i.fillColor,u.strokeWidth=o.scaleLineWidth,u.stroke(),u.fillStyle=i.fillColor}else l=.7*l+d,r=.7*r+f,u.fillStyle=t.zui&&t.zui.Color?new t.zui.Color(i.fillColor).contrast().toCssStr():"#fff";u.fillText(c,l,r)},draw:function(t){var i=t?t:1;this.clear();var e;if(s.each(this.segments,function(t,e){t.transition({circumference:this.calculateCircumference(t.value),outerRadius:this.outerRadius,innerRadius:this.outerRadius/100*this.options.percentageInnerCutout},i),t.endAngle=t.startAngle+t.circumference,t.draw(),0===e&&(t.startAngle=1.5*Math.PI),e<% for (var i=0; i
  • <%if(datasets[i].label){%><%=datasets[i].label%><%}%>
  • <%}%>'};e.Type.extend({name:"Bar",defaults:n,initialize:function(i){var n=this.options;this.ScaleClass=e.Scale.extend({offsetGridLines:!0,calculateBarX:function(t,i,e){var s=this.calculateBaseWidth(),o=this.calculateX(e)-s/2,a=this.calculateBarWidth(t);return o+a*i+i*n.barDatasetSpacing+a/2},calculateBaseWidth:function(){return this.calculateX(1)-this.calculateX(0)-2*n.barValueSpacing},calculateBarWidth:function(t){var i=this.calculateBaseWidth()-(t-1)*n.barDatasetSpacing;return i/t}}),this.datasets=[],this.options.showTooltips&&s.bindEvents(this,this.options.tooltipEvents,function(t){var i="mouseout"!==t.type?this.getBarsAtEvent(t):[];this.eachBars(function(t){t.restore(["fillColor","strokeColor"])}),s.each(i,function(t){t.fillColor=t.highlightFill,t.strokeColor=t.highlightStroke}),this.showTooltip(i)}),this.BarClass=e.Rectangle.extend({strokeWidth:this.options.barStrokeWidth,showStroke:this.options.barShowStroke,ctx:this.chart.ctx}),s.each(i.datasets,function(e,n){if(t.zui&&t.zui.Color&&t.zui.Color.get){var o=t.zui.Color.get(e.color),a=o.toCssStr();e.fillColor||(e.fillColor=o.clone().fade(50).toCssStr()),e.strokeColor||(e.strokeColor=a)}var h={label:e.label||null,fillColor:e.fillColor,strokeColor:e.strokeColor,bars:[]};this.datasets.push(h),s.each(e.data,function(t,s){h.bars.push(new this.BarClass({value:t,label:i.labels[s],datasetLabel:e.label,strokeColor:e.strokeColor,fillColor:e.fillColor,highlightFill:e.highlightFill||e.fillColor,highlightStroke:e.highlightStroke||e.strokeColor}))},this)},this),this.buildScale(i.labels),this.BarClass.prototype.base=this.scale.endPoint,this.eachBars(function(t,i,e){s.extend(t,{width:this.scale.calculateBarWidth(this.datasets.length),x:this.scale.calculateBarX(this.datasets.length,e,i),y:this.scale.endPoint}),t.save()},this),this.render()},update:function(){this.scale.update(),s.each(this.activeElements,function(t){t.restore(["fillColor","strokeColor"])}),this.eachBars(function(t){t.save()}),this.render()},eachBars:function(t){s.each(this.datasets,function(i,e){s.each(i.bars,t,this,e)},this)},getBarsAtEvent:function(t){for(var i,e=[],n=s.getRelativePosition(t),o=function(t){e.push(t.bars[i])},a=0;a span { + display: block; + margin-right: 26px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } +.chosen-container-single .chosen-single-with-deselect span { + margin-right: 38px; + } +.chosen-container-single .chosen-single abbr { + position: absolute; + top: 7px; + right: 24px; + display: block; + width: 20px; + height: 20px; + font-size: 19.5px; + font-weight: bold; + line-height: 14px; + color: #000; + text-align: center; + text-shadow: 0 1px 0 #fff; + filter: alpha(opacity=20); + opacity: .2; + } +.chosen-container-single .chosen-single abbr:before { + content: '×'; + } +.chosen-container-single .chosen-single abbr:hover, +.chosen-container-single .chosen-single abbr:focus { + color: #000; + text-decoration: none; + cursor: pointer; + filter: alpha(opacity=50); + opacity: .5; + } +.chosen-container-single .chosen-single div { + position: absolute; + top: 0; + right: 0; + display: block; + height: 100%; + padding: 5px 8px; + } +.chosen-container-single .chosen-single div b { + display: inline-block; + width: 0; + height: 0; + margin-bottom: 2px; + margin-left: 2px; + vertical-align: middle; + border-top: 4px dashed; + border-top: 4px solid \9; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + } +.chosen-container-single .chosen-search { + position: relative; + z-index: 1010; + padding: 3px 4px; + margin: 0; + white-space: nowrap; + } +.chosen-container-single .chosen-search input[type="text"] { + width: 100%; + height: 27px; + padding: 2px 26px 2px 8px; + margin: 1px 0; + font-size: 12px; + line-height: 1.5; + background-color: #fff; + border: 1px solid #ccc; + border-radius: 4px; + outline: 0; + } +.chosen-container-single .chosen-search input[type="text"]:focus { + border-color: #145ccd; + } +.chosen-container-single .chosen-search:before { + position: absolute; + top: 10px; + right: 10px; + display: block; + font-family: ZenIcon; + font-size: 14px; + font-style: normal; + font-weight: normal; + font-variant: normal; + line-height: 1; + color: #808080; + text-transform: none; + content: '\e603'; + + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } +.chosen-container-single .chosen-drop { + margin-top: -1px; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border-radius: 0 0 4px 4px; + } +.chosen-container-single.chosen-container-single-nosearch .chosen-search { + position: absolute; + left: -9999px; + } +.chosen-container .chosen-results { + position: relative; + max-height: 240px; + padding: 0; + margin: 0; + overflow-x: hidden; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + } +.chosen-container .chosen-results li { + display: none; + padding: 5px 10px; + margin: 0; + line-height: 15px; + list-style: none; + -webkit-transition: background-color .2s cubic-bezier(.175, .885, .32, 1); + -o-transition: background-color .2s cubic-bezier(.175, .885, .32, 1); + transition: background-color .2s cubic-bezier(.175, .885, .32, 1); + + -webkit-touch-callout: none; + } +.chosen-container .chosen-results li.active-result { + display: list-item; + cursor: pointer; + } +.chosen-container .chosen-results li.disabled-result { + display: list-item; + color: #ccc; + cursor: default; + } +.chosen-container .chosen-results li.highlighted { + color: #fff; + background-color: #3280fc; + } +.chosen-container .chosen-results li.no-results { + display: list-item; + background: #f4f4f4; + } +.chosen-container .chosen-results li.group-result { + display: list-item; + font-weight: bold; + cursor: default; + } +.chosen-container .chosen-results li.group-option { + padding-left: 15px; + } +.chosen-container .chosen-results li em { + font-style: normal; + text-decoration: underline; + } +.chosen-container-multi .chosen-choices { + position: relative; + width: 100%; + min-height: 32px; + min-height: 30px \0; + padding: 0; + margin: 0; + overflow: hidden; + cursor: text; + background-color: #fff; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + } +.chosen-container-multi .chosen-choices:before, +.chosen-container-multi .chosen-choices:after { + /* 1 */ + display: table; + content: " "; + /* 2 */ + } +.chosen-container-multi .chosen-choices:after { + clear: both; + } +.chosen-container-multi .chosen-choices li { + display: block; + float: left; + padding: 0 6px; + margin: 5px 0 0 6px; + list-style: none; + } +.chosen-container-multi .chosen-choices li.search-field { + padding: 0; + margin-bottom: 4px; + white-space: nowrap; + } +.chosen-container-multi .chosen-choices li.search-field input[type="text"] { + height: 20px; + font-size: 100%; + color: #808080; + background: transparent !important; + border: 0 !important; + border-radius: 0; + outline: 0; + -webkit-box-shadow: none; + box-shadow: none; + } +.chosen-container-multi .chosen-choices li.search-field .default { + color: #999; + } +.chosen-container-multi .chosen-choices li.search-field:before { + position: absolute; + right: 8px; + bottom: 8px; + display: block; + font-family: ZenIcon; + font-size: 14px; + font-style: normal; + font-weight: normal; + font-variant: normal; + line-height: 1; + color: #808080; + text-transform: none; + content: '\e603'; + opacity: 0; + -webkit-transition: opacity .2s cubic-bezier(.175, .885, .32, 1); + -o-transition: opacity .2s cubic-bezier(.175, .885, .32, 1); + transition: opacity .2s cubic-bezier(.175, .885, .32, 1); + + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } +.chosen-container-multi .chosen-choices li.search-choice { + position: relative; + padding: 3px 20px 3px 5px; + line-height: 12px; + cursor: default; + background-color: #f1f1f1; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ddd; + border-radius: 3px; + -webkit-box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, .05); + box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, .05); + -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: all .4s cubic-bezier(.175, .885, .32, 1); + transition: all .4s cubic-bezier(.175, .885, .32, 1); + } +.chosen-container-multi .chosen-choices li.search-choice:hover { + background-color: #fff; + border-color: #c4c4c4; + -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, .1); + box-shadow: 0 1px 0 rgba(0, 0, 0, .1); + } +.chosen-container-multi .chosen-choices li.search-choice .search-choice-close { + position: absolute; + top: 0; + right: 0; + display: block; + width: 20px; + height: 20px; + font-size: 15.6px; + font-weight: bold; + line-height: 14px; + color: #000; + text-align: center; + text-shadow: 0 1px 0 #fff; + filter: alpha(opacity=20); + opacity: .2; + } +.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:before { + content: '×'; + } +.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover, +.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:focus { + color: #000; + text-decoration: none; + cursor: pointer; + filter: alpha(opacity=50); + opacity: .5; + } +.chosen-container-multi .chosen-choices li.search-choice-disabled { + padding-right: 5px; + color: #666; + background-color: #e4e4e4; + border: 1px solid #ccc; + } +.chosen-container-multi .chosen-choices li.search-choice-focus { + background: #d4d4d4; + } +.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close { + background-position: -42px -10px; + } +.chosen-container-multi .chosen-results { + padding: 5px 0; + margin: 0; + } +.chosen-container-multi .chosen-drop .result-selected { + display: list-item; + color: #ccc; + cursor: default; + } +.chosen-container-active .chosen-single { + border-color: #145ccd; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(20, 92, 205, .6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(20, 92, 205, .6); + } +.chosen-container-active.chosen-with-drop .chosen-single { + border: 1px solid #cbcbcb; + border: 1px solid rgba(0, 0, 0, .15); + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + } +.chosen-container-active.chosen-with-drop .chosen-single div { + background: transparent; + border-left: none; + } +.chosen-container-active.chosen-with-drop .chosen-single div b { + content: ""; + border-top: 0 dotted; + border-bottom: 4px solid; + } +.chosen-container-active.chosen-with-drop.chosen-up .chosen-single { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + } +.chosen-container-active .chosen-choices { + border-color: #145ccd; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(20, 92, 205, .6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(20, 92, 205, .6); + } +.chosen-container-active .chosen-choices li.search-field input[type="text"] { + color: #111 !important; + } +.chosen-container-active .chosen-choices li.search-field:before { + opacity: 1; + } +.chosen-disabled { + cursor: default; + opacity: .5 !important; + } +.chosen-disabled .chosen-single { + cursor: default; + } +.chosen-disabled .chosen-choices .search-choice .search-choice-close { + cursor: default; + } diff --git a/root/res/zui/lib/chosen/chosen.js b/root/res/zui/lib/chosen/chosen.js new file mode 100644 index 0000000..cf37754 --- /dev/null +++ b/root/res/zui/lib/chosen/chosen.js @@ -0,0 +1,1313 @@ +/* ======================================================================== + * Chosen: chosen.js [version 1.1.0] + * https://github.com/harvesthq/chosen + * + * Chosen, a Select Box Enhancer for jQuery and Prototype + * by Patrick Filler for Harvest, http://getharvest.com + * + * ZUI: The file has been changed in ZUI. It will not keep update with the + * official version in the future. + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2011 Harvest http://getharvest.com + * MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md + * ======================================================================== + * Improvement in ZUI: + * 1. New option 'drop_direction': 'auto' | 'top' | 'bottom'; + * 2. Enhance the search experience, support search items by custom data + * with 'data-keys=*' attribute in option; + * 3. ‘middle_highlight’ option can make hightlight item in the middle of + * the dropdown menu + * ======================================================================== */ + + +/*! +Chosen, a Select Box Enhancer for jQuery and Prototype +by Patrick Filler for Harvest, http://getharvest.com + +Version 1.1.0 +Full source at https://github.com/harvesthq/chosen +Copyright (c) 2011 Harvest http://getharvest.com + +MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md +*/ + + +(function() { + var $, AbstractChosen, Chosen, SelectParser, _ref, + __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { + for(var key in parent) { + if(__hasProp.call(parent, key)) child[key] = parent[key]; + } + + function ctor() { + this.constructor = child; + } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); + child.__super__ = parent.prototype; + return child; + }; + + var LANGUAGE = { + zh_cn: { + no_results_text: "没有找到" + }, + zh_tw: { + no_results_text: "沒有找到" + }, + en: { + no_results_text: "No results match" + } + } + + SelectParser = (function() { + function SelectParser() { + this.options_index = 0; + this.parsed = []; + } + + SelectParser.prototype.add_node = function(child) { + if(child.nodeName.toUpperCase() === "OPTGROUP") { + return this.add_group(child); + } else { + return this.add_option(child); + } + }; + + SelectParser.prototype.add_group = function(group) { + var group_position, option, _i, _len, _ref, _results; + group_position = this.parsed.length; + this.parsed.push({ + array_index: group_position, + group: true, + label: this.escapeExpression(group.label), + children: 0, + disabled: group.disabled, + title: group.title, + search_keys: ($.trim(group.getAttribute('data-keys') || '')).replace(/,/g, ' ') + }); + _ref = group.childNodes; + _results = []; + for(_i = 0, _len = _ref.length; _i < _len; _i++) { + option = _ref[_i]; + _results.push(this.add_option(option, group_position, group.disabled)); + } + return _results; + }; + + SelectParser.prototype.add_option = function(option, group_position, group_disabled) { + if(option.nodeName.toUpperCase() === "OPTION") { + if(option.text !== "") { + if(group_position != null) { + this.parsed[group_position].children += 1; + } + this.parsed.push({ + array_index: this.parsed.length, + options_index: this.options_index, + value: option.value, + text: option.text, + title: option.title, + html: option.innerHTML, + selected: option.selected, + disabled: group_disabled === true ? group_disabled : option.disabled, + group_array_index: group_position, + classes: option.className, + style: option.style.cssText, + search_keys: ($.trim(option.getAttribute('data-keys') || '') + option.value).replace(/,/, ' ') + }); + } else { + this.parsed.push({ + array_index: this.parsed.length, + options_index: this.options_index, + empty: true + }); + } + return this.options_index += 1; + } + }; + + SelectParser.prototype.escapeExpression = function(text) { + var map, unsafe_chars; + if((text == null) || text === false) { + return ""; + } + if(!/[\&\<\>\"\'\`]/.test(text)) { + return text; + } + map = { + "<": "<", + ">": ">", + '"': """, + "'": "'", + "`": "`" + }; + unsafe_chars = /&(?!\w+;)|[\<\>\"\'\`]/g; + return text.replace(unsafe_chars, function(chr) { + return map[chr] || "&"; + }); + }; + + return SelectParser; + + })(); + + SelectParser.select_to_array = function(select) { + var child, parser, _i, _len, _ref; + parser = new SelectParser(); + _ref = select.childNodes; + for(_i = 0, _len = _ref.length; _i < _len; _i++) { + child = _ref[_i]; + parser.add_node(child); + } + return parser.parsed; + }; + + AbstractChosen = (function() { + function AbstractChosen(form_field, options) { + this.form_field = form_field; + this.options = options != null ? options : {}; + if(!AbstractChosen.browser_is_supported()) { + return; + } + + this.lang = LANGUAGE[this.options.lang || ($.zui.clientLang ? $.zui.clientLang() : 'zh_cn')]; + this.is_multiple = this.form_field.multiple; + this.set_default_text(); + this.set_default_values(); + this.setup(); + this.set_up_html(); + this.register_observers(); + } + + AbstractChosen.prototype.set_default_values = function() { + var _this = this; + this.click_test_action = function(evt) { + return _this.test_active_click(evt); + }; + this.activate_action = function(evt) { + return _this.activate_field(evt); + }; + this.active_field = false; + this.mouse_on_container = false; + this.results_showing = false; + this.result_highlighted = null; + this.allow_single_deselect = (this.options.allow_single_deselect != null) && (this.form_field.options[0] != null) && this.form_field.options[0].text === "" ? this.options.allow_single_deselect : false; + this.disable_search_threshold = this.options.disable_search_threshold || 0; + this.disable_search = this.options.disable_search || false; + this.enable_split_word_search = this.options.enable_split_word_search != null ? this.options.enable_split_word_search : true; + this.group_search = this.options.group_search != null ? this.options.group_search : true; + this.search_contains = this.options.search_contains || false; + this.single_backstroke_delete = this.options.single_backstroke_delete != null ? this.options.single_backstroke_delete : true; + this.max_selected_options = this.options.max_selected_options || Infinity; + this.drop_direction = this.options.drop_direction || 'auto'; + this.middle_highlight = this.options.middle_highlight; + this.inherit_select_classes = this.options.inherit_select_classes || false; + this.display_selected_options = this.options.display_selected_options != null ? this.options.display_selected_options : true; + return this.display_disabled_options = this.options.display_disabled_options != null ? this.options.display_disabled_options : true; + }; + + AbstractChosen.prototype.set_default_text = function() { + if(this.form_field.getAttribute("data-placeholder")) { + this.default_text = this.form_field.getAttribute("data-placeholder"); + } else if(this.is_multiple) { + this.default_text = this.options.placeholder_text_multiple || this.options.placeholder_text || AbstractChosen.default_multiple_text; + } else { + this.default_text = this.options.placeholder_text_single || this.options.placeholder_text || AbstractChosen.default_single_text; + } + return this.results_none_found = this.form_field.getAttribute("data-no_results_text") || this.options.no_results_text || this.lang.no_results_text || AbstractChosen.default_no_result_text; + }; + + AbstractChosen.prototype.mouse_enter = function() { + return this.mouse_on_container = true; + }; + + AbstractChosen.prototype.mouse_leave = function() { + return this.mouse_on_container = false; + }; + + AbstractChosen.prototype.input_focus = function(evt) { + var _this = this; + if(this.is_multiple) { + if(!this.active_field) { + return setTimeout((function() { + return _this.container_mousedown(); + }), 50); + } + } else { + if(!this.active_field) { + return this.activate_field(); + } + } + }; + + AbstractChosen.prototype.input_blur = function(evt) { + var _this = this; + if(!this.mouse_on_container) { + this.active_field = false; + return setTimeout((function() { + return _this.blur_test(); + }), 100); + } + }; + + AbstractChosen.prototype.results_option_build = function(options) { + var content, data, _i, _len, _ref; + content = ''; + _ref = this.results_data; + for(_i = 0, _len = _ref.length; _i < _len; _i++) { + data = _ref[_i]; + if(data.group) { + content += this.result_add_group(data); + } else { + content += this.result_add_option(data); + } + if(options != null ? options.first : void 0) { + if(data.selected && this.is_multiple) { + this.choice_build(data); + } else if(data.selected && !this.is_multiple) { + this.single_set_selected_text(data.text); + } + } + } + return content; + }; + + AbstractChosen.prototype.result_add_option = function(option) { + var classes, option_el; + if(!option.search_match) { + return ''; + } + if(!this.include_option_in_results(option)) { + return ''; + } + classes = []; + if(!option.disabled && !(option.selected && this.is_multiple)) { + classes.push("active-result"); + } + if(option.disabled && !(option.selected && this.is_multiple)) { + classes.push("disabled-result"); + } + if(option.selected) { + classes.push("result-selected"); + } + if(option.group_array_index != null) { + classes.push("group-option"); + } + if(option.classes !== "") { + classes.push(option.classes); + } + option_el = document.createElement("li"); + option_el.className = classes.join(" "); + option_el.style.cssText = option.style; + option_el.title = option.title; + option_el.setAttribute("data-option-array-index", option.array_index); + option_el.innerHTML = option.search_text; + return this.outerHTML(option_el); + }; + + AbstractChosen.prototype.result_add_group = function(group) { + var group_el; + if(!(group.search_match || group.group_match)) { + return ''; + } + if(!(group.active_options > 0)) { + return ''; + } + group_el = document.createElement("li"); + group_el.className = "group-result"; + group_el.title = group.title; + group_el.innerHTML = group.search_text; + return this.outerHTML(group_el); + }; + + AbstractChosen.prototype.results_update_field = function() { + this.set_default_text(); + if(!this.is_multiple) { + this.results_reset_cleanup(); + } + this.result_clear_highlight(); + this.results_build(); + if(this.results_showing) { + return this.winnow_results(); + } + }; + + AbstractChosen.prototype.reset_single_select_options = function() { + var result, _i, _len, _ref, _results; + _ref = this.results_data; + _results = []; + for(_i = 0, _len = _ref.length; _i < _len; _i++) { + result = _ref[_i]; + if(result.selected) { + _results.push(result.selected = false); + } else { + _results.push(void 0); + } + } + return _results; + }; + + AbstractChosen.prototype.results_toggle = function() { + if(this.results_showing) { + return this.results_hide(); + } else { + return this.results_show(); + } + }; + + AbstractChosen.prototype.results_search = function(evt) { + if(this.results_showing) { + return this.winnow_results(1); + } else { + return this.results_show(); + } + }; + + AbstractChosen.prototype.winnow_results = function(canMiddleHighlight) { + var escapedSearchText, option, regex, regexAnchor, results, results_group, searchText, startpos, text, zregex, _i, _len, _ref; + this.no_results_clear(); + results = 0; + searchText = this.get_search_text(); + escapedSearchText = searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); + regexAnchor = this.search_contains ? "" : "^"; + regex = new RegExp(regexAnchor + escapedSearchText, 'i'); + zregex = new RegExp(escapedSearchText, 'i'); + _ref = this.results_data; + for(_i = 0, _len = _ref.length; _i < _len; _i++) { + option = _ref[_i]; + option.search_match = false; + results_group = null; + if(this.include_option_in_results(option)) { + if(option.group) { + option.group_match = false; + option.active_options = 0; + } + if((option.group_array_index != null) && this.results_data[option.group_array_index]) { + results_group = this.results_data[option.group_array_index]; + if(results_group.active_options === 0 && results_group.search_match) { + results += 1; + } + results_group.active_options += 1; + } + if(!(option.group && !this.group_search)) { + option.search_text = option.group ? option.label : option.html; + option.search_keys_match = this.search_string_match(option.search_keys, regex); + option.search_text_match = this.search_string_match(option.search_text, regex); + option.search_match = option.search_text_match || option.search_keys_match; + if(option.search_match && !option.group) { + results += 1; + } + if(option.search_match) { + if(option.search_text_match && option.search_text.length) { + startpos = option.search_text.search(zregex); + text = option.search_text.substr(0, startpos + searchText.length) + '' + option.search_text.substr(startpos + searchText.length); + option.search_text = text.substr(0, startpos) + '' + text.substr(startpos); + } else if(option.search_keys_match && option.search_keys.length) { + startpos = option.search_keys.search(zregex); + text = option.search_keys.substr(0, startpos + searchText.length) + '' + option.search_keys.substr(startpos + searchText.length); + option.search_text += '  ' + text.substr(0, startpos) + '' + text.substr(startpos) + ''; + } + if(results_group != null) { + results_group.group_match = true; + } + } else if((option.group_array_index != null) && this.results_data[option.group_array_index].search_match) { + option.search_match = true; + } + } + } + } + this.result_clear_highlight(); + if(results < 1 && searchText.length) { + this.update_results_content(""); + return this.no_results(searchText); + } else { + this.update_results_content(this.results_option_build()); + return this.winnow_results_set_highlight(canMiddleHighlight); + } + }; + + AbstractChosen.prototype.search_string_match = function(search_string, regex) { + var part, parts, _i, _len; + if(regex.test(search_string)) { + return true; + } else if(this.enable_split_word_search && (search_string.indexOf(" ") >= 0 || search_string.indexOf("[") === 0)) { + parts = search_string.replace(/\[|\]/g, "").split(" "); + if(parts.length) { + for(_i = 0, _len = parts.length; _i < _len; _i++) { + part = parts[_i]; + if(regex.test(part)) { + return true; + } + } + } + } + }; + + AbstractChosen.prototype.choices_count = function() { + var option, _i, _len, _ref; + if(this.selected_option_count != null) { + return this.selected_option_count; + } + this.selected_option_count = 0; + _ref = this.form_field.options; + for(_i = 0, _len = _ref.length; _i < _len; _i++) { + option = _ref[_i]; + if(option.selected && option.value != '') { + this.selected_option_count += 1; + } + } + return this.selected_option_count; + }; + + AbstractChosen.prototype.choices_click = function(evt) { + evt.preventDefault(); + if(!(this.results_showing || this.is_disabled)) { + return this.results_show(); + } + }; + + AbstractChosen.prototype.keyup_checker = function(evt) { + var stroke, _ref; + stroke = (_ref = evt.which) != null ? _ref : evt.keyCode; + this.search_field_scale(); + switch(stroke) { + case 8: + if(this.is_multiple && this.backstroke_length < 1 && this.choices_count() > 0) { + return this.keydown_backstroke(); + } else if(!this.pending_backstroke) { + this.result_clear_highlight(); + return this.results_search(); + } + break; + case 13: + evt.preventDefault(); + if(this.results_showing) { + return this.result_select(evt); + } + break; + case 27: + if(this.results_showing) { + this.results_hide(); + } + return true; + case 9: + case 38: + case 40: + case 16: + case 91: + case 17: + break; + default: + return this.results_search(); + } + }; + + AbstractChosen.prototype.clipboard_event_checker = function(evt) { + var _this = this; + return setTimeout((function() { + return _this.results_search(); + }), 50); + }; + + AbstractChosen.prototype.container_width = function() { + if(this.options.width != null) { + return this.options.width; + } else { + return "" + this.form_field.offsetWidth + "px"; + } + }; + + AbstractChosen.prototype.include_option_in_results = function(option) { + if(this.is_multiple && (!this.display_selected_options && option.selected)) { + return false; + } + if(!this.display_disabled_options && option.disabled) { + return false; + } + if(option.empty) { + return false; + } + return true; + }; + + AbstractChosen.prototype.search_results_touchstart = function(evt) { + this.touch_started = true; + return this.search_results_mouseover(evt); + }; + + AbstractChosen.prototype.search_results_touchmove = function(evt) { + this.touch_started = false; + return this.search_results_mouseout(evt); + }; + + AbstractChosen.prototype.search_results_touchend = function(evt) { + if(this.touch_started) { + return this.search_results_mouseup(evt); + } + }; + + AbstractChosen.prototype.outerHTML = function(element) { + var tmp; + if(element.outerHTML) { + return element.outerHTML; + } + tmp = document.createElement("div"); + tmp.appendChild(element); + return tmp.innerHTML; + }; + + AbstractChosen.browser_is_supported = function() { + if(window.navigator.appName === "Microsoft Internet Explorer") { + return document.documentMode >= 8; + } + if(/iP(od|hone)/i.test(window.navigator.userAgent)) { + return false; + } + if(/Android/i.test(window.navigator.userAgent)) { + if(/Mobile/i.test(window.navigator.userAgent)) { + return false; + } + } + return true; + }; + + AbstractChosen.default_multiple_text = ""; + + AbstractChosen.default_single_text = ""; + + AbstractChosen.default_no_result_text = "No results match"; + + return AbstractChosen; + + })(); + + $ = jQuery; + + $.fn.extend({ + chosen: function(options) { + if(!AbstractChosen.browser_is_supported()) { + return this; + } + return this.each(function(input_field) { + var $this, chosen; + $this = $(this); + chosen = $this.data('chosen'); + if(options === 'destroy' && chosen) { + chosen.destroy(); + } else if(!chosen) { + $this.data('chosen', new Chosen(this, options)); + } + }); + } + }); + + Chosen = (function(_super) { + __extends(Chosen, _super); + + function Chosen() { + _ref = Chosen.__super__.constructor.apply(this, arguments); + return _ref; + } + + Chosen.prototype.setup = function() { + this.form_field_jq = $(this.form_field); + this.current_selectedIndex = this.form_field.selectedIndex; + return this.is_rtl = this.form_field_jq.hasClass("chosen-rtl"); + }; + + Chosen.prototype.set_up_html = function() { + var container_classes, container_props; + container_classes = ["chosen-container"]; + container_classes.push("chosen-container-" + (this.is_multiple ? "multi" : "single")); + if(this.inherit_select_classes && this.form_field.className) { + container_classes.push(this.form_field.className); + } + if(this.is_rtl) { + container_classes.push("chosen-rtl"); + } + var strClass = this.form_field.getAttribute('data-css-class'); + if(strClass) { + container_classes.push(strClass); + } + + container_props = { + 'class': container_classes.join(' '), + 'style': "width: " + (this.container_width()) + ";", + 'title': this.form_field.title + }; + if(this.form_field.id.length) { + container_props.id = this.form_field.id.replace(/[^\w]/g, '_') + "_chosen"; + } + this.container = $("
    ", container_props); + if(this.is_multiple) { + this.container.html('
      '); + } else { + this.container.html('
      ' + this.default_text + '
        '); + } + this.form_field_jq.hide().after(this.container); + this.dropdown = this.container.find('div.chosen-drop').first(); + this.search_field = this.container.find('input').first(); + this.search_results = this.container.find('ul.chosen-results').first(); + this.search_field_scale(); + this.search_no_results = this.container.find('li.no-results').first(); + if(this.is_multiple) { + this.search_choices = this.container.find('ul.chosen-choices').first(); + this.search_container = this.container.find('li.search-field').first(); + } else { + this.search_container = this.container.find('div.chosen-search').first(); + this.selected_item = this.container.find('.chosen-single').first(); + } + if(this.options.drop_width) { + this.dropdown.css('width', this.options.drop_width).addClass('chosen-drop-size-limited'); + } + this.results_build(); + this.set_tab_index(); + this.set_label_behavior(); + return this.form_field_jq.trigger("chosen:ready", { + chosen: this + }); + }; + + Chosen.prototype.register_observers = function() { + var _this = this; + this.container.bind('mousedown.chosen', function(evt) { + _this.container_mousedown(evt); + }); + this.container.bind('mouseup.chosen', function(evt) { + _this.container_mouseup(evt); + }); + this.container.bind('mouseenter.chosen', function(evt) { + _this.mouse_enter(evt); + }); + this.container.bind('mouseleave.chosen', function(evt) { + _this.mouse_leave(evt); + }); + this.search_results.bind('mouseup.chosen', function(evt) { + _this.search_results_mouseup(evt); + }); + this.search_results.bind('mouseover.chosen', function(evt) { + _this.search_results_mouseover(evt); + }); + this.search_results.bind('mouseout.chosen', function(evt) { + _this.search_results_mouseout(evt); + }); + this.search_results.bind('mousewheel.chosen DOMMouseScroll.chosen', function(evt) { + _this.search_results_mousewheel(evt); + }); + this.search_results.bind('touchstart.chosen', function(evt) { + _this.search_results_touchstart(evt); + }); + this.search_results.bind('touchmove.chosen', function(evt) { + _this.search_results_touchmove(evt); + }); + this.search_results.bind('touchend.chosen', function(evt) { + _this.search_results_touchend(evt); + }); + this.form_field_jq.bind("chosen:updated.chosen", function(evt) { + _this.results_update_field(evt); + }); + this.form_field_jq.bind("chosen:activate.chosen", function(evt) { + _this.activate_field(evt); + }); + this.form_field_jq.bind("chosen:open.chosen", function(evt) { + _this.container_mousedown(evt); + }); + this.form_field_jq.bind("chosen:close.chosen", function(evt) { + _this.input_blur(evt); + }); + this.search_field.bind('blur.chosen', function(evt) { + _this.input_blur(evt); + }); + this.search_field.bind('keyup.chosen', function(evt) { + _this.keyup_checker(evt); + }); + this.search_field.bind('keydown.chosen', function(evt) { + _this.keydown_checker(evt); + }); + this.search_field.bind('focus.chosen', function(evt) { + _this.input_focus(evt); + }); + this.search_field.bind('cut.chosen', function(evt) { + _this.clipboard_event_checker(evt); + }); + this.search_field.bind('paste.chosen', function(evt) { + _this.clipboard_event_checker(evt); + }); + if(this.is_multiple) { + return this.search_choices.bind('click.chosen', function(evt) { + _this.choices_click(evt); + }); + } else { + return this.container.bind('click.chosen', function(evt) { + evt.preventDefault(); + }); + } + }; + + Chosen.prototype.destroy = function() { + $(this.container[0].ownerDocument).unbind("click.chosen", this.click_test_action); + if(this.search_field[0].tabIndex) { + this.form_field_jq[0].tabIndex = this.search_field[0].tabIndex; + } + this.container.remove(); + this.form_field_jq.removeData('chosen'); + return this.form_field_jq.show(); + }; + + Chosen.prototype.search_field_disabled = function() { + this.is_disabled = this.form_field_jq[0].disabled; + if(this.is_disabled) { + this.container.addClass('chosen-disabled'); + this.search_field[0].disabled = true; + if(!this.is_multiple) { + this.selected_item.unbind("focus.chosen", this.activate_action); + } + return this.close_field(); + } else { + this.container.removeClass('chosen-disabled'); + this.search_field[0].disabled = false; + if(!this.is_multiple) { + return this.selected_item.bind("focus.chosen", this.activate_action); + } + } + }; + + Chosen.prototype.container_mousedown = function(evt) { + if(!this.is_disabled) { + if(evt && evt.type === "mousedown" && !this.results_showing) { + evt.preventDefault(); + } + if(!((evt != null) && ($(evt.target)).hasClass("search-choice-close"))) { + if(!this.active_field) { + if(this.is_multiple) { + this.search_field.val(""); + } + $(this.container[0].ownerDocument).bind('click.chosen', this.click_test_action); + this.results_show(); + } else if(!this.is_multiple && evt && (($(evt.target)[0] === this.selected_item[0]) || $(evt.target).parents("a.chosen-single").length)) { + evt.preventDefault(); + this.results_toggle(); + } + return this.activate_field(); + } + } + }; + + Chosen.prototype.container_mouseup = function(evt) { + if(evt.target.nodeName === "ABBR" && !this.is_disabled) { + return this.results_reset(evt); + } + }; + + Chosen.prototype.search_results_mousewheel = function(evt) { + var delta; + if(evt.originalEvent) { + delta = -evt.originalEvent.wheelDelta || evt.originalEvent.detail; + } + if(delta != null) { + evt.preventDefault(); + if(evt.type === 'DOMMouseScroll') { + delta = delta * 40; + } + return this.search_results.scrollTop(delta + this.search_results.scrollTop()); + } + }; + + Chosen.prototype.blur_test = function(evt) { + if(!this.active_field && this.container.hasClass("chosen-container-active")) { + return this.close_field(); + } + }; + + Chosen.prototype.close_field = function() { + $(this.container[0].ownerDocument).unbind("click.chosen", this.click_test_action); + this.active_field = false; + this.results_hide(); + this.container.removeClass("chosen-container-active"); + this.clear_backstroke(); + this.show_search_field_default(); + return this.search_field_scale(); + }; + + Chosen.prototype.activate_field = function() { + this.container.addClass("chosen-container-active"); + this.active_field = true; + this.search_field.val(this.search_field.val()); + // return this.search_field.focus(); ZUI: bug: when user select a item by click, container scroll to left automaticly. + }; + + Chosen.prototype.test_active_click = function(evt) { + var active_container; + active_container = $(evt.target).closest('.chosen-container'); + if(active_container.length && this.container[0] === active_container[0]) { + return this.active_field = true; + } else { + return this.close_field(); + } + }; + + Chosen.prototype.results_build = function() { + this.parsing = true; + this.selected_option_count = null; + this.results_data = SelectParser.select_to_array(this.form_field); + if(this.is_multiple) { + this.search_choices.find("li.search-choice").remove(); + } else if(!this.is_multiple) { + this.single_set_selected_text(); + if(this.disable_search || this.form_field.options.length <= this.disable_search_threshold) { + this.search_field[0].readOnly = true; + this.container.addClass("chosen-container-single-nosearch"); + } else { + this.search_field[0].readOnly = false; + this.container.removeClass("chosen-container-single-nosearch"); + } + } + this.update_results_content(this.results_option_build({ + first: true + })); + this.search_field_disabled(); + this.show_search_field_default(); + this.search_field_scale(); + return this.parsing = false; + }; + + Chosen.prototype.result_do_highlight = function(el, canMiddleHighlight) { + var high_bottom, high_top, maxHeight, visible_bottom, visible_top, resultHeight, scrollTop = -1; + if(el.length) { + this.result_clear_highlight(); + this.result_highlight = el; + this.result_highlight.addClass("highlighted"); + maxHeight = parseInt(this.search_results.css("maxHeight"), 10); + resultHeight = this.result_highlight.outerHeight(); + visible_top = this.search_results.scrollTop(); + visible_bottom = maxHeight + visible_top; + high_top = this.result_highlight.position().top + this.search_results.scrollTop(); + high_bottom = high_top + resultHeight; + if(this.middle_highlight && (canMiddleHighlight || this.middle_highlight === 'always' || high_bottom >= visible_bottom || high_top < visible_top)) { + scrollTop = Math.min(high_top - resultHeight, Math.max(0, high_top - (maxHeight - resultHeight)/2)); + } else if(high_bottom >= visible_bottom) { + scrollTop = (high_bottom - maxHeight) > 0 ? high_bottom - maxHeight : 0; + } else if(high_top < visible_top) { + scrollTop = high_top; + } + if(scrollTop > -1) { + this.search_results.scrollTop(scrollTop); + } + } + }; + + Chosen.prototype.result_clear_highlight = function() { + if(this.result_highlight) { + this.result_highlight.removeClass("highlighted"); + } + return this.result_highlight = null; + }; + + Chosen.prototype.results_show = function() { + if(this.is_multiple && this.max_selected_options <= this.choices_count()) { + this.form_field_jq.trigger("chosen:maxselected", { + chosen: this + }); + return false; + } + this.container.addClass("chosen-with-drop"); + this.results_showing = true; + this.search_field.focus(); + this.search_field.val(this.search_field.val()); + this.winnow_results(1); + + var dropDirection = this.drop_direction; + if(dropDirection === 'auto') { + if (!this.drop_directionFixed) { + var $drop = this.container.find('.chosen-drop'); + var offset = this.container.offset(); + if(offset.top + $drop.outerHeight() + 30 > $(window).height() + $(window).scrollTop()) { + dropDirection = 'up'; + } + this.drop_directionFixed = dropDirection; + } else { + dropDirection = this.drop_directionFixed; + } + } + this.container.toggleClass('chosen-up', dropDirection === 'up'); + + return this.form_field_jq.trigger("chosen:showing_dropdown", { + chosen: this + }); + }; + + Chosen.prototype.update_results_content = function(content) { + return this.search_results.html(content); + }; + + Chosen.prototype.results_hide = function() { + if(this.results_showing) { + this.result_clear_highlight(); + this.container.removeClass("chosen-with-drop"); + this.form_field_jq.trigger("chosen:hiding_dropdown", { + chosen: this + }); + this.drop_directionFixed = 0; + } + return this.results_showing = false; + }; + + Chosen.prototype.set_tab_index = function(el) { + var ti; + if(this.form_field.tabIndex) { + ti = this.form_field.tabIndex; + this.form_field.tabIndex = -1; + return this.search_field[0].tabIndex = ti; + } + }; + + Chosen.prototype.set_label_behavior = function() { + var _this = this; + this.form_field_label = this.form_field_jq.parents("label"); + if(!this.form_field_label.length && this.form_field.id.length) { + this.form_field_label = $("label[for='" + this.form_field.id + "']"); + } + if(this.form_field_label.length > 0) { + return this.form_field_label.bind('click.chosen', function(evt) { + if(_this.is_multiple) { + return _this.container_mousedown(evt); + } else { + return _this.activate_field(); + } + }); + } + }; + + Chosen.prototype.show_search_field_default = function() { + if(this.is_multiple && this.choices_count() < 1 && !this.active_field) { + this.search_field.val(this.default_text); + return this.search_field.addClass("default"); + } else { + this.search_field.val(""); + return this.search_field.removeClass("default"); + } + }; + + Chosen.prototype.search_results_mouseup = function(evt) { + var target; + target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first(); + if(target.length) { + this.result_highlight = target; + this.result_select(evt); + // return this.search_field.focus(); // ZUI: bug: when user select a item by click, container scroll to left automaticly. + } + }; + + Chosen.prototype.search_results_mouseover = function(evt) { + var target; + target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first(); + if(target) { + return this.result_do_highlight(target); + } + }; + + Chosen.prototype.search_results_mouseout = function(evt) { + if($(evt.target).hasClass("active-result" || $(evt.target).parents('.active-result').first())) { + return this.result_clear_highlight(); + } + }; + + Chosen.prototype.choice_build = function(item) { + var choice, close_link, + _this = this; + choice = $('
      • ', { + "class": "search-choice" + /// ZUI change begin + /// Set title to span with item value + /// }).html("" + item.html + ""); + }).html("" + item.html + ""); + /// ZUI change end + if(item.disabled) { + choice.addClass('search-choice-disabled'); + } else { + close_link = $('', { + "class": 'search-choice-close', + 'data-option-array-index': item.array_index + }); + close_link.bind('click.chosen', function(evt) { + return _this.choice_destroy_link_click(evt); + }); + choice.append(close_link); + } + return this.search_container.before(choice); + }; + + Chosen.prototype.choice_destroy_link_click = function(evt) { + evt.preventDefault(); + evt.stopPropagation(); + if(!this.is_disabled) { + return this.choice_destroy($(evt.target)); + } + }; + + Chosen.prototype.choice_destroy = function(link) { + if(this.result_deselect(link[0].getAttribute("data-option-array-index"))) { + this.show_search_field_default(); + if(this.is_multiple && this.choices_count() > 0 && this.search_field.val().length < 1) { + this.results_hide(); + } + link.parents('li').first().remove(); + return this.search_field_scale(); + } + }; + + Chosen.prototype.results_reset = function() { + this.reset_single_select_options(); + this.form_field.options[0].selected = true; + this.single_set_selected_text(); + this.show_search_field_default(); + this.results_reset_cleanup(); + this.form_field_jq.trigger("change"); + if(this.active_field) { + return this.results_hide(); + } + }; + + Chosen.prototype.results_reset_cleanup = function() { + this.current_selectedIndex = this.form_field.selectedIndex; + return this.selected_item.find("abbr").remove(); + }; + + Chosen.prototype.result_select = function(evt) { + var high, item; + if(this.result_highlight) { + high = this.result_highlight; + this.result_clear_highlight(); + if(this.is_multiple && this.max_selected_options <= this.choices_count()) { + this.form_field_jq.trigger("chosen:maxselected", { + chosen: this + }); + return false; + } + if(this.is_multiple) { + high.removeClass("active-result"); + } else { + this.reset_single_select_options(); + } + item = this.results_data[high[0].getAttribute("data-option-array-index")]; + item.selected = true; + this.form_field.options[item.options_index].selected = true; + this.selected_option_count = null; + if(this.is_multiple) { + this.choice_build(item); + } else { + this.single_set_selected_text(item.text); + } + if(!((evt.metaKey || evt.ctrlKey) && this.is_multiple)) { + this.results_hide(); + } + this.search_field.val(""); + if(this.is_multiple || this.form_field.selectedIndex !== this.current_selectedIndex) { + this.form_field_jq.trigger("change", { + 'selected': this.form_field.options[item.options_index].value + }); + } + this.current_selectedIndex = this.form_field.selectedIndex; + return this.search_field_scale(); + } + }; + + Chosen.prototype.single_set_selected_text = function(text) { + if(text == null) { + text = this.default_text; + } + if(text === this.default_text) { + this.selected_item.addClass("chosen-default"); + } else { + this.single_deselect_control_build(); + this.selected_item.removeClass("chosen-default"); + } + /// ZUI change begin + /// Change title with text + /// return this.selected_item.find("span").text(text); // old code + return this.selected_item.find("span").attr('title', text).text(text); + /// ZUI change end + }; + + Chosen.prototype.result_deselect = function(pos) { + var result_data; + result_data = this.results_data[pos]; + if(!this.form_field.options[result_data.options_index].disabled) { + result_data.selected = false; + this.form_field.options[result_data.options_index].selected = false; + this.selected_option_count = null; + this.result_clear_highlight(); + if(this.results_showing) { + this.winnow_results(); + } + this.form_field_jq.trigger("change", { + deselected: this.form_field.options[result_data.options_index].value + }); + this.search_field_scale(); + return true; + } else { + return false; + } + }; + + Chosen.prototype.single_deselect_control_build = function() { + if(!this.allow_single_deselect) { + return; + } + if(!this.selected_item.find("abbr").length) { + this.selected_item.find("span").first().after(""); + } + return this.selected_item.addClass("chosen-single-with-deselect"); + }; + + Chosen.prototype.get_search_text = function() { + if(this.search_field.val() === this.default_text) { + return ""; + } else { + return $('
        ').text($.trim(this.search_field.val())).html(); + } + }; + + Chosen.prototype.winnow_results_set_highlight = function(canMiddleHighlight) { + var do_high, selected_results; + selected_results = !this.is_multiple ? this.search_results.find(".result-selected.active-result") : []; + do_high = selected_results.length ? selected_results.first() : this.search_results.find(".active-result").first(); + if(do_high != null) { + return this.result_do_highlight(do_high, canMiddleHighlight); + } + }; + + Chosen.prototype.no_results = function(terms) { + var no_results_html; + no_results_html = $('
      • ' + this.results_none_found + ' ""
      • '); + no_results_html.find("span").first().html(terms); + this.search_results.append(no_results_html); + return this.form_field_jq.trigger("chosen:no_results", { + chosen: this + }); + }; + + Chosen.prototype.no_results_clear = function() { + return this.search_results.find(".no-results").remove(); + }; + + Chosen.prototype.keydown_arrow = function() { + var next_sib; + if(this.results_showing && this.result_highlight) { + next_sib = this.result_highlight.nextAll("li.active-result").first(); + if(next_sib) { + return this.result_do_highlight(next_sib); + } + } else { + return this.results_show(); + } + }; + + Chosen.prototype.keyup_arrow = function() { + var prev_sibs; + if(!this.results_showing && !this.is_multiple) { + return this.results_show(); + } else if(this.result_highlight) { + prev_sibs = this.result_highlight.prevAll("li.active-result"); + if(prev_sibs.length) { + return this.result_do_highlight(prev_sibs.first()); + } else { + if(this.choices_count() > 0) { + this.results_hide(); + } + return this.result_clear_highlight(); + } + } + }; + + Chosen.prototype.keydown_backstroke = function() { + var next_available_destroy; + if(this.pending_backstroke) { + this.choice_destroy(this.pending_backstroke.find("a").first()); + return this.clear_backstroke(); + } else { + next_available_destroy = this.search_container.siblings("li.search-choice").last(); + if(next_available_destroy.length && !next_available_destroy.hasClass("search-choice-disabled")) { + this.pending_backstroke = next_available_destroy; + if(this.single_backstroke_delete) { + return this.keydown_backstroke(); + } else { + return this.pending_backstroke.addClass("search-choice-focus"); + } + } + } + }; + + Chosen.prototype.clear_backstroke = function() { + if(this.pending_backstroke) { + this.pending_backstroke.removeClass("search-choice-focus"); + } + return this.pending_backstroke = null; + }; + + Chosen.prototype.keydown_checker = function(evt) { + var stroke, _ref1; + stroke = (_ref1 = evt.which) != null ? _ref1 : evt.keyCode; + this.search_field_scale(); + if(stroke !== 8 && this.pending_backstroke) { + this.clear_backstroke(); + } + switch(stroke) { + case 8: + this.backstroke_length = this.search_field.val().length; + break; + case 9: + if(this.results_showing && !this.is_multiple) { + this.result_select(evt); + } + this.mouse_on_container = false; + break; + case 13: + evt.preventDefault(); + break; + case 38: + evt.preventDefault(); + this.keyup_arrow(); + break; + case 40: + evt.preventDefault(); + this.keydown_arrow(); + break; + } + }; + + Chosen.prototype.search_field_scale = function() { + var div, f_width, h, style, style_block, styles, w, _i, _len; + if(this.is_multiple) { + h = 0; + w = 0; + style_block = "position:absolute; left: -1000px; top: -1000px; display:none;"; + styles = ['font-size', 'font-style', 'font-weight', 'font-family', 'line-height', 'text-transform', 'letter-spacing']; + for(_i = 0, _len = styles.length; _i < _len; _i++) { + style = styles[_i]; + style_block += style + ":" + this.search_field.css(style) + ";"; + } + div = $('
        ', { + 'style': style_block + }); + div.text(this.search_field.val()); + $('body').append(div); + w = div.width() + 25; + div.remove(); + f_width = this.container.outerWidth(); + if(w > f_width - 10) { + w = f_width - 10; + } + return this.search_field.css({ + 'width': w + 'px' + }); + } + }; + + return Chosen; + + })(AbstractChosen); +}).call(this); + diff --git a/root/res/zui/lib/chosen/chosen.min.css b/root/res/zui/lib/chosen/chosen.min.css new file mode 100644 index 0000000..d94e54c --- /dev/null +++ b/root/res/zui/lib/chosen/chosen.min.css @@ -0,0 +1,7 @@ +/*! + * Chosen, a Select Box Enhancer for jQuery and Prototype + * by Patrick Filler for Harvest, http://getharvest.com + * + * Copyright (c) 2011-2016 Harvest http://getharvest.com + * MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md +*/.chosen-container{position:relative;display:inline-block;font-size:13px;vertical-align:middle;zoom:1;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;*display:inline}.chosen-container .chosen-drop{position:absolute;top:100%;left:-9999px;z-index:1010;width:100%;background:#fff;border:1px solid #cbcbcb;border:1px solid rgba(0,0,0,.15);border-top:0;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.chosen-container .chosen-drop.chosen-drop-size-limited{border-top:1px solid rgba(0,0,0,.15)}.chosen-container.chosen-with-drop .chosen-drop{left:0}.chosen-container a{cursor:pointer}.chosen-container.chosen-up .chosen-drop{top:inherit;bottom:100%;margin-top:auto;margin-bottom:-1px;border-radius:2px 2px 0 0;-webkit-box-shadow:0 -3px 5px rgba(0,0,0,.175);box-shadow:0 -3px 5px rgba(0,0,0,.175)}.chosen-container-single .chosen-single{display:block;width:100%;height:32px;padding:5px 8px;overflow:hidden;line-height:1.53846154;color:#222;text-decoration:none;white-space:nowrap;vertical-align:middle;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s,-webkit-box-shadow ease-in-out .15s}.chosen-container-single .chosen-default{color:grey}.chosen-container-single .chosen-single>span{display:block;margin-right:26px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chosen-container-single .chosen-single-with-deselect span{margin-right:38px}.chosen-container-single .chosen-single abbr{position:absolute;top:7px;right:24px;display:block;width:20px;height:20px;font-size:19.5px;font-weight:700;line-height:14px;color:#000;text-align:center;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.chosen-container-single .chosen-single abbr:before{content:'×'}.chosen-container-single .chosen-single abbr:focus,.chosen-container-single .chosen-single abbr:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}.chosen-container-single .chosen-single div{position:absolute;top:0;right:0;display:block;height:100%;padding:5px 8px}.chosen-container-single .chosen-single div b{display:inline-block;width:0;height:0;margin-bottom:2px;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.chosen-container-single .chosen-search{position:relative;z-index:1010;padding:3px 4px;margin:0;white-space:nowrap}.chosen-container-single .chosen-search input[type=text]{width:100%;height:27px;padding:2px 26px 2px 8px;margin:1px 0;font-size:12px;line-height:1.5;background-color:#fff;border:1px solid #ccc;border-radius:4px;outline:0}.chosen-container-single .chosen-search input[type=text]:focus{border-color:#145ccd}.chosen-container-single .chosen-search:before{position:absolute;top:10px;right:10px;display:block;font-family:ZenIcon;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;color:grey;text-transform:none;content:'\e603';speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.chosen-container-single .chosen-drop{margin-top:-1px;-webkit-background-clip:padding-box;background-clip:padding-box;border-radius:0 0 4px 4px}.chosen-container-single.chosen-container-single-nosearch .chosen-search{position:absolute;left:-9999px}.chosen-container .chosen-results{position:relative;max-height:240px;padding:0;margin:0;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.chosen-container .chosen-results li{display:none;padding:5px 10px;margin:0;line-height:15px;list-style:none;-webkit-transition:background-color .2s cubic-bezier(.175,.885,.32,1);-o-transition:background-color .2s cubic-bezier(.175,.885,.32,1);transition:background-color .2s cubic-bezier(.175,.885,.32,1);-webkit-touch-callout:none}.chosen-container .chosen-results li.active-result{display:list-item;cursor:pointer}.chosen-container .chosen-results li.disabled-result{display:list-item;color:#ccc;cursor:default}.chosen-container .chosen-results li.highlighted{color:#fff;background-color:#3280fc}.chosen-container .chosen-results li.no-results{display:list-item;background:#f4f4f4}.chosen-container .chosen-results li.group-result{display:list-item;font-weight:700;cursor:default}.chosen-container .chosen-results li.group-option{padding-left:15px}.chosen-container .chosen-results li em{font-style:normal;text-decoration:underline}.chosen-container-multi .chosen-choices{position:relative;width:100%;min-height:32px;min-height:30px\9;padding:0;margin:0;overflow:hidden;cursor:text;background-color:#fff;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s,-webkit-box-shadow ease-in-out .15s}.chosen-container-multi .chosen-choices:after,.chosen-container-multi .chosen-choices:before{display:table;content:" "}.chosen-container-multi .chosen-choices:after{clear:both}.chosen-container-multi .chosen-choices li{display:block;float:left;padding:0 6px;margin:5px 0 0 6px;list-style:none}.chosen-container-multi .chosen-choices li.search-field{padding:0;margin-bottom:4px;white-space:nowrap}.chosen-container-multi .chosen-choices li.search-field input[type=text]{height:20px;font-size:100%;color:grey;background:0 0!important;border:0!important;border-radius:0;outline:0;-webkit-box-shadow:none;box-shadow:none}.chosen-container-multi .chosen-choices li.search-field .default{color:#999}.chosen-container-multi .chosen-choices li.search-field:before{position:absolute;right:8px;bottom:8px;display:block;font-family:ZenIcon;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;color:grey;text-transform:none;content:'\e603';opacity:0;-webkit-transition:opacity .2s cubic-bezier(.175,.885,.32,1);-o-transition:opacity .2s cubic-bezier(.175,.885,.32,1);transition:opacity .2s cubic-bezier(.175,.885,.32,1);speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.chosen-container-multi .chosen-choices li.search-choice{position:relative;padding:3px 20px 3px 5px;line-height:12px;cursor:default;background-color:#f1f1f1;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ddd;border-radius:3px;-webkit-box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.chosen-container-multi .chosen-choices li.search-choice:hover{background-color:#fff;border-color:#c4c4c4;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 0 rgba(0,0,0,.1)}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close{position:absolute;top:0;right:0;display:block;width:20px;height:20px;font-size:15.6px;font-weight:700;line-height:14px;color:#000;text-align:center;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:before{content:'×'}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:focus,.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}.chosen-container-multi .chosen-choices li.search-choice-disabled{padding-right:5px;color:#666;background-color:#e4e4e4;border:1px solid #ccc}.chosen-container-multi .chosen-choices li.search-choice-focus{background:#d4d4d4}.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close{background-position:-42px -10px}.chosen-container-multi .chosen-results{padding:5px 0;margin:0}.chosen-container-multi .chosen-drop .result-selected{display:list-item;color:#ccc;cursor:default}.chosen-container-active .chosen-single{border-color:#145ccd;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(20,92,205,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(20,92,205,.6)}.chosen-container-active.chosen-with-drop .chosen-single{border:1px solid #cbcbcb;border:1px solid rgba(0,0,0,.15);border-bottom-right-radius:0;border-bottom-left-radius:0;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.chosen-container-active.chosen-with-drop .chosen-single div{background:0 0;border-left:none}.chosen-container-active.chosen-with-drop .chosen-single div b{content:"";border-top:0 dotted;border-bottom:4px solid}.chosen-container-active.chosen-with-drop.chosen-up .chosen-single{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.chosen-container-active .chosen-choices{border-color:#145ccd;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(20,92,205,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(20,92,205,.6)}.chosen-container-active .chosen-choices li.search-field input[type=text]{color:#111!important}.chosen-container-active .chosen-choices li.search-field:before{opacity:1}.chosen-disabled{cursor:default;opacity:.5!important}.chosen-disabled .chosen-single{cursor:default}.chosen-disabled .chosen-choices .search-choice .search-choice-close{cursor:default} \ No newline at end of file diff --git a/root/res/zui/lib/chosen/chosen.min.js b/root/res/zui/lib/chosen/chosen.min.js new file mode 100644 index 0000000..37e423e --- /dev/null +++ b/root/res/zui/lib/chosen/chosen.min.js @@ -0,0 +1,11 @@ +/*! +Chosen, a Select Box Enhancer for jQuery and Prototype +by Patrick Filler for Harvest, http://getharvest.com + +Version 1.1.0 +Full source at https://github.com/harvesthq/chosen +Copyright (c) 2011 Harvest http://getharvest.com + +MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md +*/ +(function(){var t,e,s,i,r,o={}.hasOwnProperty,h=function(t,e){function s(){this.constructor=t}for(var i in e)o.call(e,i)&&(t[i]=e[i]);return s.prototype=e.prototype,t.prototype=new s,t.__super__=e.prototype,t},n={zh_cn:{no_results_text:"没有找到"},zh_tw:{no_results_text:"沒有找到"},en:{no_results_text:"No results match"}};i=function(){function e(){this.options_index=0,this.parsed=[]}return e.prototype.add_node=function(t){return"OPTGROUP"===t.nodeName.toUpperCase()?this.add_group(t):this.add_option(t)},e.prototype.add_group=function(e){var s,i,r,o,h,n;for(s=this.parsed.length,this.parsed.push({array_index:s,group:!0,label:this.escapeExpression(e.label),children:0,disabled:e.disabled,title:e.title,search_keys:t.trim(e.getAttribute("data-keys")||"").replace(/,/g," ")}),h=e.childNodes,n=[],r=0,o=h.length;r\"\'\`]/.test(t)?(e={"<":"<",">":">",'"':""","'":"'","`":"`"},s=/&(?!\w+;)|[\<\>\"\'\`]/g,t.replace(s,function(t){return e[t]||"&"})):t},e}(),i.select_to_array=function(t){var e,s,r,o,h;for(s=new i,h=t.childNodes,r=0,o=h.length;r0?(e=document.createElement("li"),e.className="group-result",e.title=t.title,e.innerHTML=t.search_text,this.outerHTML(e)):""},e.prototype.results_update_field=function(){if(this.set_default_text(),this.is_multiple||this.results_reset_cleanup(),this.result_clear_highlight(),this.results_build(),this.results_showing)return this.winnow_results()},e.prototype.reset_single_select_options=function(){var t,e,s,i,r;for(i=this.results_data,r=[],e=0,s=i.length;e"+s.search_text.substr(l+n.length),s.search_text=c.substr(0,l)+""+c.substr(l)):s.search_keys_match&&s.search_keys.length&&(l=s.search_keys.search(a),c=s.search_keys.substr(0,l+n.length)+""+s.search_keys.substr(l+n.length),s.search_text+='  '+c.substr(0,l)+""+c.substr(l)+""),null!=h&&(h.group_match=!0)):null!=s.group_array_index&&this.results_data[s.group_array_index].search_match&&(s.search_match=!0)));return this.result_clear_highlight(),o<1&&n.length?(this.update_results_content(""),this.no_results(n)):(this.update_results_content(this.results_option_build()),this.winnow_results_set_highlight(t))},e.prototype.search_string_match=function(t,e){var s,i,r,o;if(e.test(t))return!0;if(this.enable_split_word_search&&(t.indexOf(" ")>=0||0===t.indexOf("["))&&(i=t.replace(/\[|\]/g,"").split(" "),i.length))for(r=0,o=i.length;r0)return this.keydown_backstroke();if(!this.pending_backstroke)return this.result_clear_highlight(),this.results_search();break;case 13:if(t.preventDefault(),this.results_showing)return this.result_select(t);break;case 27:return this.results_showing&&this.results_hide(),!0;case 9:case 38:case 40:case 16:case 91:case 17:break;default:return this.results_search()}},e.prototype.clipboard_event_checker=function(t){var e=this;return setTimeout(function(){return e.results_search()},50)},e.prototype.container_width=function(){return null!=this.options.width?this.options.width:""+this.form_field.offsetWidth+"px"},e.prototype.include_option_in_results=function(t){return!(this.is_multiple&&!this.display_selected_options&&t.selected)&&(!(!this.display_disabled_options&&t.disabled)&&!t.empty)},e.prototype.search_results_touchstart=function(t){return this.touch_started=!0,this.search_results_mouseover(t)},e.prototype.search_results_touchmove=function(t){return this.touch_started=!1,this.search_results_mouseout(t)},e.prototype.search_results_touchend=function(t){if(this.touch_started)return this.search_results_mouseup(t)},e.prototype.outerHTML=function(t){var e;return t.outerHTML?t.outerHTML:(e=document.createElement("div"),e.appendChild(t),e.innerHTML)},e.browser_is_supported=function(){return"Microsoft Internet Explorer"===window.navigator.appName?document.documentMode>=8:!/iP(od|hone)/i.test(window.navigator.userAgent)&&(!/Android/i.test(window.navigator.userAgent)||!/Mobile/i.test(window.navigator.userAgent))},e.default_multiple_text="",e.default_single_text="",e.default_no_result_text="No results match",e}(),t=jQuery,t.fn.extend({chosen:function(i){return e.browser_is_supported()?this.each(function(e){var r,o;r=t(this),o=r.data("chosen"),"destroy"===i&&o?o.destroy():o||r.data("chosen",new s(this,i))}):this}}),s=function(e){function s(){return r=s.__super__.constructor.apply(this,arguments)}return h(s,e),s.prototype.setup=function(){return this.form_field_jq=t(this.form_field),this.current_selectedIndex=this.form_field.selectedIndex,this.is_rtl=this.form_field_jq.hasClass("chosen-rtl")},s.prototype.set_up_html=function(){var e,s;e=["chosen-container"],e.push("chosen-container-"+(this.is_multiple?"multi":"single")),this.inherit_select_classes&&this.form_field.className&&e.push(this.form_field.className),this.is_rtl&&e.push("chosen-rtl");var i=this.form_field.getAttribute("data-css-class");return i&&e.push(i),s={"class":e.join(" "),style:"width: "+this.container_width()+";",title:this.form_field.title},this.form_field.id.length&&(s.id=this.form_field.id.replace(/[^\w]/g,"_")+"_chosen"),this.container=t("
        ",s),this.is_multiple?this.container.html('
          '):this.container.html('
          '+this.default_text+'
            '),this.form_field_jq.hide().after(this.container),this.dropdown=this.container.find("div.chosen-drop").first(),this.search_field=this.container.find("input").first(),this.search_results=this.container.find("ul.chosen-results").first(),this.search_field_scale(),this.search_no_results=this.container.find("li.no-results").first(),this.is_multiple?(this.search_choices=this.container.find("ul.chosen-choices").first(),this.search_container=this.container.find("li.search-field").first()):(this.search_container=this.container.find("div.chosen-search").first(),this.selected_item=this.container.find(".chosen-single").first()),this.options.drop_width&&this.dropdown.css("width",this.options.drop_width).addClass("chosen-drop-size-limited"),this.results_build(),this.set_tab_index(),this.set_label_behavior(),this.form_field_jq.trigger("chosen:ready",{chosen:this})},s.prototype.register_observers=function(){var t=this;return this.container.bind("mousedown.chosen",function(e){t.container_mousedown(e)}),this.container.bind("mouseup.chosen",function(e){t.container_mouseup(e)}),this.container.bind("mouseenter.chosen",function(e){t.mouse_enter(e)}),this.container.bind("mouseleave.chosen",function(e){t.mouse_leave(e)}),this.search_results.bind("mouseup.chosen",function(e){t.search_results_mouseup(e)}),this.search_results.bind("mouseover.chosen",function(e){t.search_results_mouseover(e)}),this.search_results.bind("mouseout.chosen",function(e){t.search_results_mouseout(e)}),this.search_results.bind("mousewheel.chosen DOMMouseScroll.chosen",function(e){t.search_results_mousewheel(e)}),this.search_results.bind("touchstart.chosen",function(e){t.search_results_touchstart(e)}),this.search_results.bind("touchmove.chosen",function(e){t.search_results_touchmove(e)}),this.search_results.bind("touchend.chosen",function(e){t.search_results_touchend(e)}),this.form_field_jq.bind("chosen:updated.chosen",function(e){t.results_update_field(e)}),this.form_field_jq.bind("chosen:activate.chosen",function(e){t.activate_field(e)}),this.form_field_jq.bind("chosen:open.chosen",function(e){t.container_mousedown(e)}),this.form_field_jq.bind("chosen:close.chosen",function(e){t.input_blur(e)}),this.search_field.bind("blur.chosen",function(e){t.input_blur(e)}),this.search_field.bind("keyup.chosen",function(e){t.keyup_checker(e)}),this.search_field.bind("keydown.chosen",function(e){t.keydown_checker(e)}),this.search_field.bind("focus.chosen",function(e){t.input_focus(e)}),this.search_field.bind("cut.chosen",function(e){t.clipboard_event_checker(e)}),this.search_field.bind("paste.chosen",function(e){t.clipboard_event_checker(e)}),this.is_multiple?this.search_choices.bind("click.chosen",function(e){t.choices_click(e)}):this.container.bind("click.chosen",function(t){t.preventDefault()})},s.prototype.destroy=function(){return t(this.container[0].ownerDocument).unbind("click.chosen",this.click_test_action),this.search_field[0].tabIndex&&(this.form_field_jq[0].tabIndex=this.search_field[0].tabIndex),this.container.remove(),this.form_field_jq.removeData("chosen"),this.form_field_jq.show()},s.prototype.search_field_disabled=function(){return this.is_disabled=this.form_field_jq[0].disabled,this.is_disabled?(this.container.addClass("chosen-disabled"),this.search_field[0].disabled=!0,this.is_multiple||this.selected_item.unbind("focus.chosen",this.activate_action),this.close_field()):(this.container.removeClass("chosen-disabled"),this.search_field[0].disabled=!1,this.is_multiple?void 0:this.selected_item.bind("focus.chosen",this.activate_action))},s.prototype.container_mousedown=function(e){if(!this.is_disabled&&(e&&"mousedown"===e.type&&!this.results_showing&&e.preventDefault(),null==e||!t(e.target).hasClass("search-choice-close")))return this.active_field?this.is_multiple||!e||t(e.target)[0]!==this.selected_item[0]&&!t(e.target).parents("a.chosen-single").length||(e.preventDefault(),this.results_toggle()):(this.is_multiple&&this.search_field.val(""),t(this.container[0].ownerDocument).bind("click.chosen",this.click_test_action),this.results_show()),this.activate_field()},s.prototype.container_mouseup=function(t){if("ABBR"===t.target.nodeName&&!this.is_disabled)return this.results_reset(t)},s.prototype.search_results_mousewheel=function(t){var e;if(t.originalEvent&&(e=-t.originalEvent.wheelDelta||t.originalEvent.detail),null!=e)return t.preventDefault(),"DOMMouseScroll"===t.type&&(e=40*e),this.search_results.scrollTop(e+this.search_results.scrollTop())},s.prototype.blur_test=function(t){if(!this.active_field&&this.container.hasClass("chosen-container-active"))return this.close_field()},s.prototype.close_field=function(){return t(this.container[0].ownerDocument).unbind("click.chosen",this.click_test_action),this.active_field=!1,this.results_hide(),this.container.removeClass("chosen-container-active"),this.clear_backstroke(),this.show_search_field_default(),this.search_field_scale()},s.prototype.activate_field=function(){this.container.addClass("chosen-container-active"),this.active_field=!0,this.search_field.val(this.search_field.val())},s.prototype.test_active_click=function(e){var s;return s=t(e.target).closest(".chosen-container"),s.length&&this.container[0]===s[0]?this.active_field=!0:this.close_field()},s.prototype.results_build=function(){return this.parsing=!0,this.selected_option_count=null,this.results_data=i.select_to_array(this.form_field),this.is_multiple?this.search_choices.find("li.search-choice").remove():this.is_multiple||(this.single_set_selected_text(),this.disable_search||this.form_field.options.length<=this.disable_search_threshold?(this.search_field[0].readOnly=!0,this.container.addClass("chosen-container-single-nosearch")):(this.search_field[0].readOnly=!1,this.container.removeClass("chosen-container-single-nosearch"))),this.update_results_content(this.results_option_build({first:!0})),this.search_field_disabled(),this.show_search_field_default(),this.search_field_scale(),this.parsing=!1},s.prototype.result_do_highlight=function(t,e){var s,i,r,o,h,n,l=-1;t.length&&(this.result_clear_highlight(),this.result_highlight=t,this.result_highlight.addClass("highlighted"),r=parseInt(this.search_results.css("maxHeight"),10),n=this.result_highlight.outerHeight(),h=this.search_results.scrollTop(),o=r+h,i=this.result_highlight.position().top+this.search_results.scrollTop(),s=i+n,this.middle_highlight&&(e||"always"===this.middle_highlight||s>=o||i=o?l=s-r>0?s-r:0:i-1&&this.search_results.scrollTop(l))},s.prototype.result_clear_highlight=function(){return this.result_highlight&&this.result_highlight.removeClass("highlighted"),this.result_highlight=null},s.prototype.results_show=function(){if(this.is_multiple&&this.max_selected_options<=this.choices_count())return this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1;this.container.addClass("chosen-with-drop"),this.results_showing=!0,this.search_field.focus(),this.search_field.val(this.search_field.val()),this.winnow_results(1);var e=this.drop_direction;if("auto"===e)if(this.drop_directionFixed)e=this.drop_directionFixed;else{var s=this.container.find(".chosen-drop"),i=this.container.offset();i.top+s.outerHeight()+30>t(window).height()+t(window).scrollTop()&&(e="up"),this.drop_directionFixed=e}return this.container.toggleClass("chosen-up","up"===e),this.form_field_jq.trigger("chosen:showing_dropdown",{chosen:this})},s.prototype.update_results_content=function(t){return this.search_results.html(t)},s.prototype.results_hide=function(){return this.results_showing&&(this.result_clear_highlight(),this.container.removeClass("chosen-with-drop"),this.form_field_jq.trigger("chosen:hiding_dropdown",{chosen:this}),this.drop_directionFixed=0),this.results_showing=!1},s.prototype.set_tab_index=function(t){var e;if(this.form_field.tabIndex)return e=this.form_field.tabIndex,this.form_field.tabIndex=-1,this.search_field[0].tabIndex=e},s.prototype.set_label_behavior=function(){var e=this;if(this.form_field_label=this.form_field_jq.parents("label"),!this.form_field_label.length&&this.form_field.id.length&&(this.form_field_label=t("label[for='"+this.form_field.id+"']")),this.form_field_label.length>0)return this.form_field_label.bind("click.chosen",function(t){return e.is_multiple?e.container_mousedown(t):e.activate_field()})},s.prototype.show_search_field_default=function(){return this.is_multiple&&this.choices_count()<1&&!this.active_field?(this.search_field.val(this.default_text),this.search_field.addClass("default")):(this.search_field.val(""),this.search_field.removeClass("default"))},s.prototype.search_results_mouseup=function(e){var s;s=t(e.target).hasClass("active-result")?t(e.target):t(e.target).parents(".active-result").first(),s.length&&(this.result_highlight=s,this.result_select(e))},s.prototype.search_results_mouseover=function(e){var s;if(s=t(e.target).hasClass("active-result")?t(e.target):t(e.target).parents(".active-result").first())return this.result_do_highlight(s)},s.prototype.search_results_mouseout=function(e){if(t(e.target).hasClass("active-result"))return this.result_clear_highlight()},s.prototype.choice_build=function(e){var s,i,r=this;return s=t("
          • ",{"class":"search-choice"}).html(""+e.html+""),e.disabled?s.addClass("search-choice-disabled"):(i=t("",{"class":"search-choice-close","data-option-array-index":e.array_index}),i.bind("click.chosen",function(t){return r.choice_destroy_link_click(t)}),s.append(i)),this.search_container.before(s)},s.prototype.choice_destroy_link_click=function(e){if(e.preventDefault(),e.stopPropagation(),!this.is_disabled)return this.choice_destroy(t(e.target))},s.prototype.choice_destroy=function(t){if(this.result_deselect(t[0].getAttribute("data-option-array-index")))return this.show_search_field_default(),this.is_multiple&&this.choices_count()>0&&this.search_field.val().length<1&&this.results_hide(),t.parents("li").first().remove(),this.search_field_scale()},s.prototype.results_reset=function(){if(this.reset_single_select_options(),this.form_field.options[0].selected=!0,this.single_set_selected_text(),this.show_search_field_default(),this.results_reset_cleanup(),this.form_field_jq.trigger("change"),this.active_field)return this.results_hide()},s.prototype.results_reset_cleanup=function(){return this.current_selectedIndex=this.form_field.selectedIndex,this.selected_item.find("abbr").remove()},s.prototype.result_select=function(t){var e,s;if(this.result_highlight)return e=this.result_highlight,this.result_clear_highlight(),this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.is_multiple?e.removeClass("active-result"):this.reset_single_select_options(),s=this.results_data[e[0].getAttribute("data-option-array-index")],s.selected=!0,this.form_field.options[s.options_index].selected=!0,this.selected_option_count=null,this.is_multiple?this.choice_build(s):this.single_set_selected_text(s.text),(t.metaKey||t.ctrlKey)&&this.is_multiple||this.results_hide(),this.search_field.val(""),(this.is_multiple||this.form_field.selectedIndex!==this.current_selectedIndex)&&this.form_field_jq.trigger("change",{selected:this.form_field.options[s.options_index].value}),this.current_selectedIndex=this.form_field.selectedIndex,this.search_field_scale())},s.prototype.single_set_selected_text=function(t){return null==t&&(t=this.default_text),t===this.default_text?this.selected_item.addClass("chosen-default"):(this.single_deselect_control_build(),this.selected_item.removeClass("chosen-default")),this.selected_item.find("span").attr("title",t).text(t)},s.prototype.result_deselect=function(t){var e;return e=this.results_data[t],!this.form_field.options[e.options_index].disabled&&(e.selected=!1,this.form_field.options[e.options_index].selected=!1,this.selected_option_count=null,this.result_clear_highlight(),this.results_showing&&this.winnow_results(),this.form_field_jq.trigger("change",{deselected:this.form_field.options[e.options_index].value}),this.search_field_scale(),!0)},s.prototype.single_deselect_control_build=function(){if(this.allow_single_deselect)return this.selected_item.find("abbr").length||this.selected_item.find("span").first().after(''),this.selected_item.addClass("chosen-single-with-deselect")},s.prototype.get_search_text=function(){return this.search_field.val()===this.default_text?"":t("
            ").text(t.trim(this.search_field.val())).html()},s.prototype.winnow_results_set_highlight=function(t){var e,s;if(s=this.is_multiple?[]:this.search_results.find(".result-selected.active-result"),e=s.length?s.first():this.search_results.find(".active-result").first(),null!=e)return this.result_do_highlight(e,t)},s.prototype.no_results=function(e){var s;return s=t('
          • '+this.results_none_found+' ""
          • '),s.find("span").first().html(e),this.search_results.append(s),this.form_field_jq.trigger("chosen:no_results",{chosen:this})},s.prototype.no_results_clear=function(){return this.search_results.find(".no-results").remove()},s.prototype.keydown_arrow=function(){var t;return this.results_showing&&this.result_highlight?(t=this.result_highlight.nextAll("li.active-result").first())?this.result_do_highlight(t):void 0:this.results_show()},s.prototype.keyup_arrow=function(){var t;return this.results_showing||this.is_multiple?this.result_highlight?(t=this.result_highlight.prevAll("li.active-result"),t.length?this.result_do_highlight(t.first()):(this.choices_count()>0&&this.results_hide(),this.result_clear_highlight())):void 0:this.results_show()},s.prototype.keydown_backstroke=function(){var t;return this.pending_backstroke?(this.choice_destroy(this.pending_backstroke.find("a").first()),this.clear_backstroke()):(t=this.search_container.siblings("li.search-choice").last(),t.length&&!t.hasClass("search-choice-disabled")?(this.pending_backstroke=t,this.single_backstroke_delete?this.keydown_backstroke():this.pending_backstroke.addClass("search-choice-focus")):void 0)},s.prototype.clear_backstroke=function(){return this.pending_backstroke&&this.pending_backstroke.removeClass("search-choice-focus"),this.pending_backstroke=null},s.prototype.keydown_checker=function(t){var e,s;switch(e=null!=(s=t.which)?s:t.keyCode,this.search_field_scale(),8!==e&&this.pending_backstroke&&this.clear_backstroke(),e){case 8:this.backstroke_length=this.search_field.val().length;break;case 9:this.results_showing&&!this.is_multiple&&this.result_select(t),this.mouse_on_container=!1;break;case 13:t.preventDefault();break;case 38:t.preventDefault(),this.keyup_arrow();break;case 40:t.preventDefault(),this.keydown_arrow()}},s.prototype.search_field_scale=function(){var e,s,i,r,o,h,n,l,c;if(this.is_multiple){for(i=0,n=0,o="position:absolute; left: -1000px; top: -1000px; display:none;",h=["font-size","font-style","font-weight","font-family","line-height","text-transform","letter-spacing"],l=0,c=h.length;l",{style:o}),e.text(this.search_field.val()),t("body").append(e),n=e.width()+25,e.remove(),s=this.container.outerWidth(),n>s-10&&(n=s-10),this.search_field.css({width:n+"px"})}},s}(e)}).call(this); \ No newline at end of file diff --git a/root/res/zui/lib/chosenicons/zui.chosenicons.css b/root/res/zui/lib/chosenicons/zui.chosenicons.css new file mode 100644 index 0000000..2e2e047 --- /dev/null +++ b/root/res/zui/lib/chosenicons/zui.chosenicons.css @@ -0,0 +1,27 @@ +/*! + * ZUI: 图标选择器 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +.chosen-container.chosen-icons .chosen-results { + padding: 5px; + } +.chosen-container.chosen-icons .chosen-results li { + border-radius: 4px; + } +.chosen-container.chosen-icons .chosen-results li.group-result { + padding: 5px 0; + font-size: 12px; + color: #666; + border-radius: 0; + } +.chosen-container.chosen-icons .chosen-results li.group-option { + display: inline-block; + width: 30px; + padding: 8px; + font-size: 14px; + line-height: 14px; + text-align: center; + } diff --git a/root/res/zui/lib/chosenicons/zui.chosenicons.js b/root/res/zui/lib/chosenicons/zui.chosenicons.js new file mode 100644 index 0000000..7b0be43 --- /dev/null +++ b/root/res/zui/lib/chosenicons/zui.chosenicons.js @@ -0,0 +1,160 @@ +/*! + * ZUI: 图标选择器 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +/* ======================================================================== + * ZUI: chosen.icons.js + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2014 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + ++ function($) { + 'use strict'; + + var ChosenIcons = function(element, options) { + this.$ = $(element); + this.options = this.getOptions(options); + this.lang = ChosenIcons.LANGS[this.options.lang]; + this.id = 'chosen-icons-' + parseInt(Math.random() * 10000000000 + 1); + + this.init(); + }; + + ChosenIcons.DEFAULTS = { + optional: true, + lang: 'zh_cn', + icons: { + common: ['heart', 'user', 'group', 'list-ul', 'th', 'th-large', 'star', 'star-empty', 'search', 'envelope', 'dashboard', 'sitemap', 'umbrella', 'lightbulb', 'envelope-alt', 'cog', 'ok', 'remove', 'home', 'time', 'flag', 'flag-alt', 'flag-checkered', 'qrcode', 'tag', 'tags', 'book', 'bookmark', 'bookmark-empty', 'print', 'camera', 'picture', 'globe', 'map-marker', 'edit', 'edit-sign', 'play', 'stop', 'plus-sign', 'minus-sign', 'remove-sign', 'ok-sign', 'check-sign', 'question-sign', 'info-sign', 'exclamation-sign', 'plus', 'plus-sign', 'minus', 'minus-sign', 'asterisk', 'calendar', 'calendar-empty', 'comment', 'comment-alt', 'comments', 'comments-alt', 'folder-close', 'folder-open', 'folder-close-alt', 'folder-open-alt', 'thumbs-up', 'thumbs-down', 'pushpin', 'building', 'phone', 'rss', 'rss-sign', 'bullhorn', 'bell', 'bell-alt', 'certificate', 'wrench', 'tasks', 'cloud', 'beaker', 'magic', 'smile', 'frown', 'meh', 'code', 'location-arrow'], + web: ['share', 'pencil', 'trash', 'file-alt', 'file', 'file-text', 'download-alt', 'upload-alt', 'inbox', 'repeat', 'refresh', 'lock', 'check', 'check-empty', 'eye-open', 'eye-close', 'key', 'signin', 'signout', 'external-link', 'external-link-sign', 'link', 'reorder', 'quote-left', 'quote-right', 'spinner', 'reply', 'question', 'info', 'archive', 'collapse', 'collapse-top'], + editor: ['table', 'copy', 'save', 'list-ol', 'paste', 'keyboard', 'paper-clip', 'crop', 'unlink', 'sort-by-alphabet', 'sort-by-alphabet-alt', 'sort-by-attributes', 'sort-by-attributes-alt', 'sort-by-order', 'sort-by-order-alt'], + directional: ['chevron-left', 'chevron-right', 'chevron-down', 'chevron-up', 'arrow-left', 'arrow-right', 'arrow-down', 'arrow-up', 'hand-right', 'hand-left', 'hand-up', 'hand-down', 'circle-arrow-left', 'circle-arrow-right', 'circle-arrow-up', 'circle-arrow-down', 'double-angle-left', 'double-angle-right', 'double-angle-down', 'double-angle-up', 'angle-left', 'angle-right', 'angle-down', 'angle-up', 'long-arrow-left', 'long-arrow-right', 'long-arrow-down', 'long-arrow-up', 'caret-left', 'caret-right', 'caret-down', 'caret-up'], + other: ['desktop', 'laptop', 'tablet', 'mobile', 'building', 'firefox', 'ie', 'opera', 'qq', 'lemon', 'sign-blank', 'circle', 'circle-blank', 'terminal', 'html5', 'android', 'apple', 'windows', 'weibo', 'wechat', 'renren', 'bug', 'moon', 'sun'] + } + }; + + ChosenIcons.LANGS = {}; + ChosenIcons.LANGS['zh_cn'] = { + emptyIcon: '[没有图标]', + commonIcons: '常用图标', + webIcons: 'Web 图标', + editorIcons: '编辑器图标', + directionalIcons: '箭头总汇', + otherIcons: '其他图标', + }; + ChosenIcons.LANGS['en'] = { + emptyIcon: '[No Icon]', + commonIcons: 'Common Icons', + webIcons: 'Web Icons', + editorIcons: 'Editor Icons', + directionalIcons: 'Directional Icons', + otherIcons: 'Other Icons' + }; + ChosenIcons.LANGS['zh_tw'] = { + emptyIcon: '[沒有圖標]', + commonIcons: '常用圖標', + webIcons: 'Web 圖標', + editorIcons: '編輯器圖標', + directionalIcons: '箭頭總匯', + otherIcons: '其他圖標' + }; + + ChosenIcons.prototype.getOptions = function(options) { + options = $.extend(true, { + placeholder_text: ' ', + disable_search: true, + width: '100%', + inherit_select_classes: true + }, ChosenIcons.DEFAULTS, this.$.data(), options); + return options; + }; + + ChosenIcons.prototype.init = function() { + var that = this; + var $this = this.$.addClass('chosen-icons').addClass(this.id).removeClass('form-control'); + + $this.empty(); + + if(this.options.optional) { + $this.append(this.getOptionHtml()); + } + + var lang = this.lang; + + var iconsHtml = []; + $.each(this.options.icons, function(name, icons) { + iconsHtml.push(that.getgroupHtml(name, icons)); + }); + + $this.append(iconsHtml.join('')); + + $this.chosen(this.options); + + var chosenSelector = '.chosen-container.' + this.id; + + $this.on('chosen:showing_dropdown', function() { + $(chosenSelector + ' .chosen-results .group-option').each(function() { + var $this = $(this).addClass('icon'); + var text = $(this).text(); + $this.html(''); + }); + }).change(function() { + var span = $(chosenSelector + ' .chosen-single > span'); + var text = $(this).val(); + + if(text && text.length > 0) { + span.html('   ' + text.substr(5).replace(/-/g, ' ') + ''); + } + else { + span.html('' + lang.emptyIcon + ''); + } + }); + + var val = $this.data('value'); + if(val) { + $this.val(val).change(); + } + } + + ChosenIcons.prototype.getgroupHtml = function(name, icons) { + icons = icons || this.options.icons[name] + var iconsHtml = [], + that = this; + + $.each(icons, function(i, icon) { + iconsHtml.push(that.getOptionHtml(icon)); + }); + + return '' + iconsHtml.join('') + ''; + } + + ChosenIcons.prototype.getOptionHtml = function(value) { + var name = value; + if(value && value.length > 0) { + value = 'icon-' + value; + } else { + value = ''; + name = this.lang.emptyIcon; + } + return ''; + } + + $.fn.chosenIcons = function(option) { + return this.each(function() { + var $this = $(this); + var data = $this.data('zui.chosenIcons'); + var options = typeof option == 'object' && option; + + if(!data) $this.data('zui.chosenIcons', (data = new ChosenIcons(this, options))); + + if(typeof option == 'string') data[option](); + }) + }; + + $.fn.chosenIcons.Constructor = ChosenIcons; +}(jQuery); + diff --git a/root/res/zui/lib/chosenicons/zui.chosenicons.min.css b/root/res/zui/lib/chosenicons/zui.chosenicons.min.css new file mode 100644 index 0000000..84adfcf --- /dev/null +++ b/root/res/zui/lib/chosenicons/zui.chosenicons.min.css @@ -0,0 +1,6 @@ +/*! + * ZUI: 图标选择器 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */.chosen-container.chosen-icons .chosen-results{padding:5px}.chosen-container.chosen-icons .chosen-results li{border-radius:4px}.chosen-container.chosen-icons .chosen-results li.group-result{padding:5px 0;font-size:12px;color:#666;border-radius:0}.chosen-container.chosen-icons .chosen-results li.group-option{display:inline-block;width:30px;padding:8px;font-size:14px;line-height:14px;text-align:center} \ No newline at end of file diff --git a/root/res/zui/lib/chosenicons/zui.chosenicons.min.js b/root/res/zui/lib/chosenicons/zui.chosenicons.min.js new file mode 100644 index 0000000..2291093 --- /dev/null +++ b/root/res/zui/lib/chosenicons/zui.chosenicons.min.js @@ -0,0 +1,7 @@ +/*! + * ZUI: 图标选择器 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ ++function(o){"use strict";var e=function(t,n){this.$=o(t),this.options=this.getOptions(n),this.lang=e.LANGS[this.options.lang],this.id="chosen-icons-"+parseInt(1e10*Math.random()+1),this.init()};e.DEFAULTS={optional:!0,lang:"zh_cn",icons:{common:["heart","user","group","list-ul","th","th-large","star","star-empty","search","envelope","dashboard","sitemap","umbrella","lightbulb","envelope-alt","cog","ok","remove","home","time","flag","flag-alt","flag-checkered","qrcode","tag","tags","book","bookmark","bookmark-empty","print","camera","picture","globe","map-marker","edit","edit-sign","play","stop","plus-sign","minus-sign","remove-sign","ok-sign","check-sign","question-sign","info-sign","exclamation-sign","plus","plus-sign","minus","minus-sign","asterisk","calendar","calendar-empty","comment","comment-alt","comments","comments-alt","folder-close","folder-open","folder-close-alt","folder-open-alt","thumbs-up","thumbs-down","pushpin","building","phone","rss","rss-sign","bullhorn","bell","bell-alt","certificate","wrench","tasks","cloud","beaker","magic","smile","frown","meh","code","location-arrow"],web:["share","pencil","trash","file-alt","file","file-text","download-alt","upload-alt","inbox","repeat","refresh","lock","check","check-empty","eye-open","eye-close","key","signin","signout","external-link","external-link-sign","link","reorder","quote-left","quote-right","spinner","reply","question","info","archive","collapse","collapse-top"],editor:["table","copy","save","list-ol","paste","keyboard","paper-clip","crop","unlink","sort-by-alphabet","sort-by-alphabet-alt","sort-by-attributes","sort-by-attributes-alt","sort-by-order","sort-by-order-alt"],directional:["chevron-left","chevron-right","chevron-down","chevron-up","arrow-left","arrow-right","arrow-down","arrow-up","hand-right","hand-left","hand-up","hand-down","circle-arrow-left","circle-arrow-right","circle-arrow-up","circle-arrow-down","double-angle-left","double-angle-right","double-angle-down","double-angle-up","angle-left","angle-right","angle-down","angle-up","long-arrow-left","long-arrow-right","long-arrow-down","long-arrow-up","caret-left","caret-right","caret-down","caret-up"],other:["desktop","laptop","tablet","mobile","building","firefox","ie","opera","qq","lemon","sign-blank","circle","circle-blank","terminal","html5","android","apple","windows","weibo","wechat","renren","bug","moon","sun"]}},e.LANGS={},e.LANGS.zh_cn={emptyIcon:"[没有图标]",commonIcons:"常用图标",webIcons:"Web 图标",editorIcons:"编辑器图标",directionalIcons:"箭头总汇",otherIcons:"其他图标"},e.LANGS.en={emptyIcon:"[No Icon]",commonIcons:"Common Icons",webIcons:"Web Icons",editorIcons:"Editor Icons",directionalIcons:"Directional Icons",otherIcons:"Other Icons"},e.LANGS.zh_tw={emptyIcon:"[沒有圖標]",commonIcons:"常用圖標",webIcons:"Web 圖標",editorIcons:"編輯器圖標",directionalIcons:"箭頭總匯",otherIcons:"其他圖標"},e.prototype.getOptions=function(t){return t=o.extend(!0,{placeholder_text:" ",disable_search:!0,width:"100%",inherit_select_classes:!0},e.DEFAULTS,this.$.data(),t)},e.prototype.init=function(){var e=this,t=this.$.addClass("chosen-icons").addClass(this.id).removeClass("form-control");t.empty(),this.options.optional&&t.append(this.getOptionHtml());var n=this.lang,s=[];o.each(this.options.icons,function(o,t){s.push(e.getgroupHtml(o,t))}),t.append(s.join("")),t.chosen(this.options);var i=".chosen-container."+this.id;t.on("chosen:showing_dropdown",function(){o(i+" .chosen-results .group-option").each(function(){var e=o(this).addClass("icon"),t=o(this).text();e.html('')})}).change(function(){var e=o(i+" .chosen-single > span"),t=o(this).val();t&&t.length>0?e.html('   '+t.substr(5).replace(/-/g," ")+""):e.html(''+n.emptyIcon+"")});var r=t.data("value");r&&t.val(r).change()},e.prototype.getgroupHtml=function(e,t){t=t||this.options.icons[e];var n=[],s=this;return o.each(t,function(o,e){n.push(s.getOptionHtml(e))}),''+n.join("")+""},e.prototype.getOptionHtml=function(o){var e=o;return o&&o.length>0?o="icon-"+o:(o="",e=this.lang.emptyIcon),'"},o.fn.chosenIcons=function(t){return this.each(function(){var n=o(this),s=n.data("zui.chosenIcons"),i="object"==typeof t&&t;s||n.data("zui.chosenIcons",s=new e(this,i)),"string"==typeof t&&s[t]()})},o.fn.chosenIcons.Constructor=e}(jQuery); \ No newline at end of file diff --git a/root/res/zui/lib/clipboard/clipboard.js b/root/res/zui/lib/clipboard/clipboard.js new file mode 100644 index 0000000..6a28dfb --- /dev/null +++ b/root/res/zui/lib/clipboard/clipboard.js @@ -0,0 +1,745 @@ +/*! + * clipboard.js v1.5.5 + * https://zenorocha.github.io/clipboard.js + * + * Licensed MIT © Zeno Rocha + */ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Clipboard = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o li { + display: block; + float: left; + padding: 2px; + } +.colorpicker .dropdown-menu > li > a { + position: relative; + display: block; + width: 100%; + height: 100%; + padding: 0; + font-family: ZenIcon; + font-size: 14px; + font-style: normal; + font-weight: normal; + font-variant: normal; + line-height: 1; + text-align: center; + text-transform: none; + border: 1px solid transparent; + border-radius: 4px; + + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } +.colorpicker .dropdown-menu > li > a:before { + position: absolute; + top: 50%; + display: block; + width: 100%; + height: 20px; + margin-top: -8px; + } +.colorpicker .dropdown-menu > li > a:hover { + border-color: #333; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, .25); + box-shadow: 0 1px 4px rgba(0, 0, 0, .25); + } +.colorpicker .dropdown-menu > li > a.active:before { + content: '\e60d'; + } +.colorpicker .dropdown-menu > li > a.empty { + color: #666; + background: #f2f2f2; + } +.colorpicker .dropdown-menu > li > a.empty:before { + content: '\d7'; + } +.colorpicker .btn { + text-shadow: none; + } +.colorpicker .btn .cp-title { + display: inline-block; + margin-right: 5px; + } +.colorpicker.btn-wrapper { + position: relative; + display: inline-block; + } diff --git a/root/res/zui/lib/colorpicker/zui.colorpicker.js b/root/res/zui/lib/colorpicker/zui.colorpicker.js new file mode 100644 index 0000000..7fc4ed4 --- /dev/null +++ b/root/res/zui/lib/colorpicker/zui.colorpicker.js @@ -0,0 +1,230 @@ +/*! + * ZUI: 颜色选择器 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +/* ======================================================================== + * ZUI: ColorPicker.js [1.5.0+] + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2016 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + +(function($) { + 'use strict'; + + var name = 'zui.colorPicker'; // modal name + var TEAMPLATE = '
            '; + var LANG = { + zh_cn: { + errorTip: "不是有效的颜色值" + }, + zh_tw: { + errorTip: "不是有效的顏色值" + }, + en: { + errorTip: "Not a valid color value" + } + }; + + // The ColorPicker modal class + var ColorPicker = function(element, options) { + this.name = name; + this.$ = $(element); + + this.getOptions(options); + this.init(); + }; + + // default options + ColorPicker.DEFAULTS = { + colors: ['#00BCD4', '#388E3C', '#3280fc', '#3F51B5', '#9C27B0', '#795548', '#F57C00', '#F44336', '#E91E63'], + pullMenuRight: true, + wrapper: 'btn-wrapper', + tileSize: 30, + lineCount: 5, + optional: true, + tooltip: 'top', + icon: 'caret-down', + // btnTip: 'Tool tip in button' + }; + + ColorPicker.prototype.init = function() { + var options = this.options, + that = this; + + this.$picker = $(TEAMPLATE).addClass(options.wrapper); + this.$picker.find('.cp-title').toggle(options.title !== undefined).text(options.title); + this.$menu = this.$picker.find('.dropdown-menu').toggleClass('pull-right', options.pullMenuRight); + this.$btn = this.$picker.find('.btn.dropdown-toggle'); + this.$btn.find('.ic').addClass('icon-' + options.icon); + if(options.btnTip) { + this.$picker.attr('data-toggle', 'tooltip').tooltip({title: options.btnTip, placement: options.tooltip, container: 'body'}); + } + this.$.attr('data-provide', null).after(this.$picker); + + // init colors + this.colors = {}; + $.each(this.options.colors, function(idx, rawColor) { + if($.zui.Color.isColor(rawColor)) { + var color = new $.zui.Color(rawColor); + that.colors[color.toCssStr()] = color; + } + }); + + this.updateColors(); + var that = this; + this.$picker.on('click', '.cp-tile', function() { + that.setValue($(this).data('color')); + }); + var $input = this.$; + var setInputColor = function() { + var val = $input.val(); + var isColor = $.zui.Color.isColor(val); + $input.parent().toggleClass('has-error', !isColor && !(options.optional && val === '')); + if(isColor) { + that.setValue(val, true); + } else { + if(options.optional && val === '') { + $input.tooltip('hide'); + } else if(!$input.is(':focus')) { + $input.tooltip('show', options.errorTip); + } + } + } + if($input.is('input:not([type=hidden])')) { + if(options.tooltip) { + $input.attr('data-toggle', 'tooltip').tooltip({trigger: 'manual', placement: options.tooltip, tipClass: 'tooltip-danger', container: 'body'}); + } + $input.on('keyup paste input change', setInputColor); + } else { + $input.appendTo(this.$picker); + } + setInputColor(); + }; + + ColorPicker.prototype.addColor = function(color) { + if(!(color instanceof $.zui.Color)) { + color = new $.zui.Color(color); + } + var hex = color.toCssStr(), + options = this.options; + + if(!this.colors[hex]) { + this.colors[hex] = color; + } + + var $a = $('
            ', { + titile: color + }).data('color', color).css({ + 'color': color.contrast().toCssStr(), + 'background': hex, + 'border-color': color.luma() > 0.43 ? '#ccc' : 'transparent' + }).attr('data-color', hex); + this.$menu.append($('
          • ').css({width: options.tileSize, height: options.tileSize}).append($a)); + if(options.optional) { + this.$menu.find('.cp-tile.empty').parent().detach().appendTo(this.$menu); + } + }; + + ColorPicker.prototype.updateColors = function(colors) { + var $picker = this.$picker, + $menu = this.$menu.empty(), + options = this.options, + colors = colors || this.colors, + that = this; + var bestLineCount = 0; + $.each(colors, function(idx, color) { + that.addColor(color); + bestLineCount++; + }); + if(options.optional) { + var $li = $('
          • ').css({width: options.tileSize, height: options.tileSize}); + this.$menu.append($li); + bestLineCount++; + } + $menu.css('width', Math.min(bestLineCount, options.lineCount) * options.tileSize + 6); + }; + + ColorPicker.prototype.setValue = function(color, notSetInput) { + var options = this.options; + this.$menu.find('.cp-tile.active').removeClass('active'); + var hex = ''; + if(color) { + var c = new $.zui.Color(color); + hex = c.toCssStr().toLowerCase(); + this.$btn.css({ + background: hex, + color: c.contrast().toCssStr(), + borderColor: c.luma() > 0.43 ? '#ccc' : hex + }); + if(!this.colors[hex]) { + this.addColor(c); + } + if(!notSetInput && this.$.val().toLowerCase() !== hex) { + this.$.val(hex).trigger('change'); + } + this.$menu.find('.cp-tile[data-color="' + hex + '"]').addClass('active'); + this.$.tooltip('hide'); + this.$.trigger('colorchange', c); + } else { + this.$btn.attr('style', null); + if(!notSetInput && this.$.val() !== '') { + this.$.val(hex).trigger('change'); + } + if(options.optional) { + this.$.tooltip('hide'); + } + this.$menu.find('.cp-tile.empty').addClass('active'); + this.$.trigger('colorchange', null); + } + + if(options.updateBorder) { + $(options.updateBorder).css('border-color', hex); + } + if(options.updateBackground) { + $(options.updateBackground).css('background-color', hex); + } + if(options.updateColor) { + $(options.updateText).css('color', hex); + } + if(options.updateText) { + $(options.updateText).text(hex); + } + }; + + // Get and init options + ColorPicker.prototype.getOptions = function(options) { + var thisOptions = $.extend({}, ColorPicker.DEFAULTS, this.$.data(), options); + if(typeof thisOptions.colors === 'string') thisOptions.colors = thisOptions.colors.split(','); + var lang = (thisOptions.lang || $.zui.clientLang()).toLowerCase(); + if(!thisOptions.errorTip) { + thisOptions.errorTip = LANG[lang].errorTip; + } + if(!$.fn.tooltip) thisOptions.btnTip = false; + this.options = thisOptions; + }; + + // Extense jquery element + $.fn.colorPicker = function(option) { + return this.each(function() { + var $this = $(this); + var data = $this.data(name); + var options = typeof option == 'object' && option; + + if(!data) $this.data(name, (data = new ColorPicker(this, options))); + + if(typeof option == 'string') data[option](); + }); + }; + + $.fn.colorPicker.Constructor = ColorPicker; + + // Auto call colorPicker after document load complete + $(function() { + $('[data-provide="colorpicker"]').colorPicker(); + }); +}(jQuery)); diff --git a/root/res/zui/lib/colorpicker/zui.colorpicker.min.css b/root/res/zui/lib/colorpicker/zui.colorpicker.min.css new file mode 100644 index 0000000..c6488d0 --- /dev/null +++ b/root/res/zui/lib/colorpicker/zui.colorpicker.min.css @@ -0,0 +1,6 @@ +/*! + * ZUI: 颜色选择器 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */.colorpicker .dropdown-menu{min-width:0;padding:2px}.colorpicker .dropdown-menu>li{display:block;float:left;padding:2px}.colorpicker .dropdown-menu>li>a{position:relative;display:block;width:100%;height:100%;padding:0;font-family:ZenIcon;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-align:center;text-transform:none;border:1px solid transparent;border-radius:4px;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.colorpicker .dropdown-menu>li>a:before{position:absolute;top:50%;display:block;width:100%;height:20px;margin-top:-8px}.colorpicker .dropdown-menu>li>a:hover{border-color:#333;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.25);box-shadow:0 1px 4px rgba(0,0,0,.25)}.colorpicker .dropdown-menu>li>a.active:before{content:'\e60d'}.colorpicker .dropdown-menu>li>a.empty{color:#666;background:#f2f2f2}.colorpicker .dropdown-menu>li>a.empty:before{content:'\d7'}.colorpicker .btn{text-shadow:none}.colorpicker .btn .cp-title{display:inline-block;margin-right:5px}.colorpicker.btn-wrapper{position:relative;display:inline-block} \ No newline at end of file diff --git a/root/res/zui/lib/colorpicker/zui.colorpicker.min.js b/root/res/zui/lib/colorpicker/zui.colorpicker.min.js new file mode 100644 index 0000000..2930afa --- /dev/null +++ b/root/res/zui/lib/colorpicker/zui.colorpicker.min.js @@ -0,0 +1,7 @@ +/*! + * ZUI: 颜色选择器 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ +!function(t){"use strict";var o="zui.colorPicker",i='
            ',e={zh_cn:{errorTip:"不是有效的颜色值"},zh_tw:{errorTip:"不是有效的顏色值"},en:{errorTip:"Not a valid color value"}},r=function(i,e){this.name=o,this.$=t(i),this.getOptions(e),this.init()};r.DEFAULTS={colors:["#00BCD4","#388E3C","#3280fc","#3F51B5","#9C27B0","#795548","#F57C00","#F44336","#E91E63"],pullMenuRight:!0,wrapper:"btn-wrapper",tileSize:30,lineCount:5,optional:!0,tooltip:"top",icon:"caret-down"},r.prototype.init=function(){var o=this.options,e=this;this.$picker=t(i).addClass(o.wrapper),this.$picker.find(".cp-title").toggle(void 0!==o.title).text(o.title),this.$menu=this.$picker.find(".dropdown-menu").toggleClass("pull-right",o.pullMenuRight),this.$btn=this.$picker.find(".btn.dropdown-toggle"),this.$btn.find(".ic").addClass("icon-"+o.icon),o.btnTip&&this.$picker.attr("data-toggle","tooltip").tooltip({title:o.btnTip,placement:o.tooltip,container:"body"}),this.$.attr("data-provide",null).after(this.$picker),this.colors={},t.each(this.options.colors,function(o,i){if(t.zui.Color.isColor(i)){var r=new t.zui.Color(i);e.colors[r.toCssStr()]=r}}),this.updateColors();var e=this;this.$picker.on("click",".cp-tile",function(){e.setValue(t(this).data("color"))});var r=this.$,s=function(){var i=r.val(),s=t.zui.Color.isColor(i);r.parent().toggleClass("has-error",!(s||o.optional&&""===i)),s?e.setValue(i,!0):o.optional&&""===i?r.tooltip("hide"):r.is(":focus")||r.tooltip("show",o.errorTip)};r.is("input:not([type=hidden])")?(o.tooltip&&r.attr("data-toggle","tooltip").tooltip({trigger:"manual",placement:o.tooltip,tipClass:"tooltip-danger",container:"body"}),r.on("keyup paste input change",s)):r.appendTo(this.$picker),s()},r.prototype.addColor=function(o){o instanceof t.zui.Color||(o=new t.zui.Color(o));var i=o.toCssStr(),e=this.options;this.colors[i]||(this.colors[i]=o);var r=t('',{titile:o}).data("color",o).css({color:o.contrast().toCssStr(),background:i,"border-color":o.luma()>.43?"#ccc":"transparent"}).attr("data-color",i);this.$menu.append(t("
          • ").css({width:e.tileSize,height:e.tileSize}).append(r)),e.optional&&this.$menu.find(".cp-tile.empty").parent().detach().appendTo(this.$menu)},r.prototype.updateColors=function(o){var i=(this.$picker,this.$menu.empty()),e=this.options,o=o||this.colors,r=this,s=0;if(t.each(o,function(t,o){r.addColor(o),s++}),e.optional){var a=t('
          • ').css({width:e.tileSize,height:e.tileSize});this.$menu.append(a),s++}i.css("width",Math.min(s,e.lineCount)*e.tileSize+6)},r.prototype.setValue=function(o,i){var e=this.options;this.$menu.find(".cp-tile.active").removeClass("active");var r="";if(o){var s=new t.zui.Color(o);r=s.toCssStr().toLowerCase(),this.$btn.css({background:r,color:s.contrast().toCssStr(),borderColor:s.luma()>.43?"#ccc":r}),this.colors[r]||this.addColor(s),i||this.$.val().toLowerCase()===r||this.$.val(r).trigger("change"),this.$menu.find('.cp-tile[data-color="'+r+'"]').addClass("active"),this.$.tooltip("hide"),this.$.trigger("colorchange",s)}else this.$btn.attr("style",null),i||""===this.$.val()||this.$.val(r).trigger("change"),e.optional&&this.$.tooltip("hide"),this.$menu.find(".cp-tile.empty").addClass("active"),this.$.trigger("colorchange",null);e.updateBorder&&t(e.updateBorder).css("border-color",r),e.updateBackground&&t(e.updateBackground).css("background-color",r),e.updateColor&&t(e.updateText).css("color",r),e.updateText&&t(e.updateText).text(r)},r.prototype.getOptions=function(o){var i=t.extend({},r.DEFAULTS,this.$.data(),o);"string"==typeof i.colors&&(i.colors=i.colors.split(","));var s=(i.lang||t.zui.clientLang()).toLowerCase();i.errorTip||(i.errorTip=e[s].errorTip),t.fn.tooltip||(i.btnTip=!1),this.options=i},t.fn.colorPicker=function(i){return this.each(function(){var e=t(this),s=e.data(o),a="object"==typeof i&&i;s||e.data(o,s=new r(this,a)),"string"==typeof i&&s[i]()})},t.fn.colorPicker.Constructor=r,t(function(){t('[data-provide="colorpicker"]').colorPicker()})}(jQuery); \ No newline at end of file diff --git a/root/res/zui/lib/colorset.js/zui.colorset.js b/root/res/zui/lib/colorset.js/zui.colorset.js new file mode 100644 index 0000000..954a2a2 --- /dev/null +++ b/root/res/zui/lib/colorset.js/zui.colorset.js @@ -0,0 +1,72 @@ +/*! + * ZUI: JS配色表 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +/*! + * ZUI: Generated from less code - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +(function($) { + 'use strict'; + var nextColorIndex = 0; + var presetColors = ['primary', 'red', 'yellow', 'green', 'blue', 'purple', 'brown', 'dark']; + + var colorset = { + primary: '#3280fc', + secondary: '#145ccd', + pale: '#ebf2f9', + fore: '#353535', + back: '#fff', + grayDarker: '#222222', + grayDark: '#333333', + gray: '#808080', + grayLight: '#dddddd', + grayLighter: '#e5e5e5', + grayPale: '#f1f1f1', + white: '#fff', + black: '#000', + red: '#ea644a', + yellow: '#f1a325', + green: '#38b03f', + blue: '#03b8cf', + purple: '#8666b8', + brown: '#bd7b46', + greenPale: '#ddf4df', + yellowPale: '#fff0d5', + redPale: '#ffe5e0', + bluePale: '#ddf3f5', + brownPale: '#f7ebe1', + purplePale: '#f5eeff', + light: '#fff', + dark: '#353535', + success: '#38b03f', + warning: '#f1a325', + danger: '#ea644a', + info: '#03b8cf', + important: '#bd7b46', + special: '#8666b8', + successPale: '#ddf4df', + warningPale: '#fff0d5', + dangerPale: '#ffe5e0', + infoPale: '#ddf3f5', + importantPale: '#f7ebe1', + specialPale: '#f5eeff' + }; + + colorset.get = function(colorName) { + if(typeof colorName === 'undefined' || colorName === 'random') { + colorName = presetColors[(nextColorIndex++) % presetColors.length]; + } + var color = colorset[colorName] ? colorset[colorName] : colorName; + return $.zui.Color ? new $.zui.Color(color) : color; + } + + $.zui({colorset: colorset}); + if($.zui.Color) $.extend($.zui.Color, colorset); +}(jQuery)); diff --git a/root/res/zui/lib/colorset.js/zui.colorset.min.js b/root/res/zui/lib/colorset.js/zui.colorset.min.js new file mode 100644 index 0000000..f1de329 --- /dev/null +++ b/root/res/zui/lib/colorset.js/zui.colorset.min.js @@ -0,0 +1,13 @@ +/*! + * ZUI: JS配色表 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ +/*! + * ZUI: Generated from less code - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ +!function(e){"use strict";var f=0,r=["primary","red","yellow","green","blue","purple","brown","dark"],a={primary:"#3280fc",secondary:"#145ccd",pale:"#ebf2f9",fore:"#353535",back:"#fff",grayDarker:"#222222",grayDark:"#333333",gray:"#808080",grayLight:"#dddddd",grayLighter:"#e5e5e5",grayPale:"#f1f1f1",white:"#fff",black:"#000",red:"#ea644a",yellow:"#f1a325",green:"#38b03f",blue:"#03b8cf",purple:"#8666b8",brown:"#bd7b46",greenPale:"#ddf4df",yellowPale:"#fff0d5",redPale:"#ffe5e0",bluePale:"#ddf3f5",brownPale:"#f7ebe1",purplePale:"#f5eeff",light:"#fff",dark:"#353535",success:"#38b03f",warning:"#f1a325",danger:"#ea644a",info:"#03b8cf",important:"#bd7b46",special:"#8666b8",successPale:"#ddf4df",warningPale:"#fff0d5",dangerPale:"#ffe5e0",infoPale:"#ddf3f5",importantPale:"#f7ebe1",specialPale:"#f5eeff"};a.get=function(l){"undefined"!=typeof l&&"random"!==l||(l=r[f++%r.length]);var d=a[l]?a[l]:l;return e.zui.Color?new e.zui.Color(d):d},e.zui({colorset:a}),e.zui.Color&&e.extend(e.zui.Color,a)}(jQuery); \ No newline at end of file diff --git a/root/res/zui/lib/dashboard/zui.dashboard.css b/root/res/zui/lib/dashboard/zui.dashboard.css new file mode 100644 index 0000000..356d292 --- /dev/null +++ b/root/res/zui/lib/dashboard/zui.dashboard.css @@ -0,0 +1,288 @@ +/*! + * ZUI: 仪表盘 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +.dashboard { + position: relative; + } +.dashboard .panel { + position: relative; + } +.dashboard .panel-actions { + position: absolute; + top: 0; + right: 0; + } +.dashboard .panel-actions .dropdown-menu { + min-width: 80px; + } +.dashboard .panel-actions .dropdown-menu > li > a { + padding: 3px 10px; + } +.dashboard .panel-actions > a, +.dashboard .panel-actions > .dropdown > a { + color: #808080; + text-decoration: none !important; + } +.dashboard .panel-actions > a, +.dashboard .panel-actions > .btn, +.dashboard .panel-actions > .dropdown { + display: block; + float: left; + } +.dashboard .panel-actions > a, +.dashboard .panel-actions > .btn, +.dashboard .panel-actions > .dropdown > a, +.dashboard .panel-actions > .dropdown > .btn { + display: block; + min-width: 28px; + height: 31px; + padding: 0 3px; + line-height: 30px; + text-align: center; + filter: alpha(opacity=70); + border: none; + border-radius: 0; + opacity: .7; + } +.dashboard .panel-actions > a:hover, +.dashboard .panel-actions > .dropdown > a:hover { + background-color: rgba(0, 0, 0, .1); + } +.dashboard .panel-heading { + height: 32px; + padding: 6px 60px 6px 6px; + font-weight: bold; + text-overflow: ellipsis; + white-space: nowrap; + } +.dashboard .panel-heading > .icon { + filter: alpha(opacity=70); + opacity: .7; + } +.dashboard .panel-heading:hover > .panel-actions > .btn, +.dashboard .panel-heading:hover > .panel-actions > .dropdown > .btn, +.dashboard .panel-heading:hover > .panel-actions > .dropdown > a, +.dashboard .panel-heading:hover > .panel-actions > a { + filter: alpha(opacity=100); + opacity: 1; + } +.dashboard .panel-body { + position: absolute; + top: 32px; + right: 0; + bottom: 0; + left: 0; + padding: 10px; + overflow: auto; + } +.dashboard .panel-body.no-padding { + padding: 0; + } +.dashboard .panel-body > :last-child { + margin: 0; + } +.dashboard .panel-body > .list-group .list-group-item { + border-right: none; + border-left: none; + border-radius: 0; + } +.dashboard .panel-body > .list-group .list-group-item:first-child { + border-top: none; + } +.dashboard.dashboard-draggable .panel-heading { + cursor: move; + } +.dashboard .panel-dragging { + color: #fff; + background: rgba(0, 0, 0, .1); + border: 1px solid #fff; + -webkit-box-shadow: none!important; + box-shadow: none!important; + } +.dashboard .panel-dragging > * { + filter: alpha(opacity=10); + opacity: .1; + } +.dashboard .panel-dragging-shadow { + position: absolute; + cursor: move; + background: rgba(255, 255, 255, .5); + border: 2px solid rgba(255, 255, 255, .9); + -webkit-box-shadow: 1px 5px 15px rgba(0, 0, 0, .5) !important; + box-shadow: 1px 5px 15px rgba(0, 0, 0, .5) !important; + } +.dashboard .panel-dragging-shadow > * { + filter: alpha(opacity=70); + opacity: .7; + } +.dashboard .panel-dragging-shadow.circle { + overflow: hidden; + border-radius: 50%; + -webkit-transition: width .2s, height .2s; + -o-transition: width .2s, height .2s; + transition: width .2s, height .2s; + } +.dashboard .panel-dragging-shadow.circle .panel-actions { + display: none; + } +.dashboard .dragging-col-holder { + display: none; + } +.dashboard.dashboard-holding .dragging-col-holder { + display: block; + } +.dashboard.dashboard-holding .dragging-col { + display: none; + } +.dashboard .resize-handle { + position: absolute; + top: 0; + right: 4px; + bottom: 20px; + width: 12px; + cursor: e-resize; + filter: alpha(opacity=0); + border-radius: 4px; + opacity: 0; + -webkit-transition: opacity .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: opacity .4s cubic-bezier(.175, .885, .32, 1); + transition: opacity .4s cubic-bezier(.175, .885, .32, 1); + } +.dashboard .resize-handle > .icon { + position: absolute; + top: 50%; + left: 0; + display: block; + width: 20px; + height: 20px; + margin-top: -10px; + line-height: 20px; + color: #3280fc; + text-align: center; + background-color: rgba(50, 128, 252, .2); + -webkit-transition: left .4s cubic-bezier(.175, .885, .32, 1), top .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: left .4s cubic-bezier(.175, .885, .32, 1), top .4s cubic-bezier(.175, .885, .32, 1); + transition: left .4s cubic-bezier(.175, .885, .32, 1), top .4s cubic-bezier(.175, .885, .32, 1); + } +.dashboard .resize-handle:hover { + background-color: rgba(50, 128, 252, .12); + filter: alpha(opacity=100); + opacity: 1; + } +.dashboard .resize-handle:hover > .icon { + left: -4px; + } +.dashboard .resize-handle.resize-vertical { + top: auto; + right: 10px; + bottom: 14px; + left: 10px; + width: auto; + height: 12px; + cursor: n-resize; + } +.dashboard .resize-handle.resize-vertical > .icon { + top: 0; + left: 50%; + margin-top: 0; + margin-left: -10px; + } +.dashboard .resize-handle.resize-vertical:hover { + background-color: rgba(50, 128, 252, .12); + filter: alpha(opacity=100); + opacity: 1; + } +.dashboard .resize-handle.resize-vertical:hover > .icon { + top: -4px; + } +.dashboard .resizing { + -webkit-transition: width .2s cubic-bezier(.175, .885, .32, 1); + -o-transition: width .2s cubic-bezier(.175, .885, .32, 1); + transition: width .2s cubic-bezier(.175, .885, .32, 1); + } +.dashboard .resizing-v .resize-vertical { + opacity: 1; + } +.dashboard .resizing-v .resize-vertical > .icon { + top: -4px; + } +.dashboard .resizing-h .resize-horizontal { + opacity: 1; + } +.dashboard .resizing-h .resize-horizontal > .icon { + left: -4px; + } +.dashboard .resizing .resize-handle { + background-color: rgba(50, 128, 252, .12); + } +.dashboard .panel-body:after, +.dashboard .panel-body:before { + display: block; + visibility: hidden; + content: ' '; + opacity: 0; + -webkit-transition: visibility .2s, opacity .2s; + -o-transition: visibility .2s, opacity .2s; + transition: visibility .2s, opacity .2s; + } +.dashboard .panel-body:before { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + background-color: #fff; + } +.dashboard .panel-body:after { + position: absolute; + top: 50%; + left: 50%; + width: 40px; + height: 40px; + margin-top: -20px; + margin-left: -20px; + font-family: ZenIcon; + font-size: 14px; + font-size: 28px; + font-style: normal; + font-weight: normal; + font-variant: normal; + line-height: 1; + line-height: 40px; + text-align: center; + text-transform: none; + content: '\e97c'; + -webkit-animation: spin 2s infinite linear; + -o-animation: spin 2s infinite linear; + animation: spin 2s infinite linear; + + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } +.dashboard .panel-loading > .panel-body { + overflow: hidden; + } +.dashboard .panel-loading > .panel-body:before, +.dashboard .panel-loading > .panel-body:after { + visibility: visible; + opacity: .5; + } +.dashboard-inverse { + background-color: #3280fc; + } +.dashboard-inverse .panel { + -webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, .15); + box-shadow: 0 1px 5px rgba(0, 0, 0, .15); + } +.dashboard-inverse .panel-dragging { + background: rgba(0, 0, 0, .3); + } +.dashboard-inverse .panel-dragging-shadow { + -webkit-box-shadow: 1px 2px 15px rgba(0, 0, 0, .5) !important; + box-shadow: 1px 2px 15px rgba(0, 0, 0, .5) !important; + } diff --git a/root/res/zui/lib/dashboard/zui.dashboard.js b/root/res/zui/lib/dashboard/zui.dashboard.js new file mode 100644 index 0000000..cf80fa4 --- /dev/null +++ b/root/res/zui/lib/dashboard/zui.dashboard.js @@ -0,0 +1,529 @@ +/*! + * ZUI: 仪表盘 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +/* ======================================================================== + * ZUI: dashboard.js + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + +(function($, Math, undefined) { + 'use strict'; + + var dashboardMessager = $.zui.Messager ? new $.zui.Messager({placement: 'top', time: 1500, close: 0, scale: false, fade: false}) : 0; + + var Dashboard = function(element, options) { + this.$ = $(element); + this.options = this.getOptions(options); + this.draggable = this.$.hasClass('dashboard-draggable') || this.options.draggable; + + this.init(); + }; + + Dashboard.DEFAULTS = { + minHeight: 100, + height: 360, + shadowType: 'normal', + sensitive: false, + circleShadowSize: 100, + onlyRefreshBody: true, + resizable: true, // 'vertical', 'horizontal' + resizeMessage: false + }; + + Dashboard.prototype.getOptions = function(options) { + options = $.extend({}, Dashboard.DEFAULTS, this.$.data(), options); + return options; + }; + + Dashboard.prototype.handleRemoveEvent = function() { + var afterPanelRemoved = this.options.afterPanelRemoved; + var tip = this.options.panelRemovingTip; + this.$.on('click', '.remove-panel', function() { + var panel = $(this).closest('.panel'); + var name = panel.data('name') || panel.find('.panel-heading').text().replace('\n', '').replace(/(^\s*)|(\s*$)/g, ''); + var index = panel.attr('data-id'); + + if(tip === undefined || tip === false || confirm(tip.format(name))) { + panel.parent().remove(); + if(afterPanelRemoved && $.isFunction(afterPanelRemoved)) { + afterPanelRemoved(index); + } + } + }); + }; + + Dashboard.prototype.handleRefreshEvent = function() { + var that = this; + var onlyRefreshBody = this.options.onlyRefreshBody; + this.$.on('click', '.refresh-panel', function() { + var panel = $(this).closest('.panel'); + that.refresh(panel, onlyRefreshBody); + }); + }; + + Dashboard.prototype.handleDraggable = function() { + var dashboard = this.$; + var options = this.options; + var circleShadow = options.shadowType === 'circle'; + var circleSize = options.circleShadowSize; + var halfCircleSize = circleSize / 2; + var afterOrdered = options.afterOrdered; + + this.$.addClass('dashboard-draggable'); + + this.$.on('mousedown', '.panel-actions, .drag-disabled', function(event) { + event.stopPropagation(); + }); + + var pColClass; + this.$.on('mousedown', '.panel-heading, .panel-drag-handler', function(event) { + var panel = $(this).closest('.panel'); + var pCol = panel.parent(); + var row = panel.closest('.row'); + var dPanel = panel.clone().addClass('panel-dragging-shadow'); + var pos = panel.offset(); + var dPos = dashboard.offset(); + var dColShadow = row.find('.dragging-col-holder'); + var sWidth = panel.width(), + sHeight = panel.height(), + sX1, sY1, sX2, sY2, moveFn, dropCol, dropBefore, nextDropCol; + if(!dColShadow.length) { + dColShadow = $('
            ').removeClass('dragging-col').appendTo(row); + } + + if(pColClass) dColShadow.removeClass(pColClass); + dColShadow.addClass(pColClass = pCol.attr('class')); + + dColShadow.insertBefore(pCol).find('.panel').replaceWith(panel.clone().addClass('panel-dragging panel-dragging-holder')); + + dashboard.addClass('dashboard-dragging'); + panel.addClass('panel-dragging').parent().addClass('dragging-col'); + + dPanel.css({ + left: pos.left - dPos.left, + top: pos.top - dPos.top, + width: sWidth, + height: sHeight + }).appendTo(dashboard).data('mouseOffset', { + x: event.pageX - pos.left + dPos.left, + y: event.pageY - pos.top + dPos.top + }); + + if(circleShadow) { + dPanel.addClass('circle'); + setTimeout(function() { + dPanel.css({ + left: event.pageX - dPos.left - halfCircleSize, + top: event.pageY - dPos.top - halfCircleSize, + width: circleSize, + height: circleSize + }).data('mouseOffset', { + x: dPos.left + halfCircleSize, + y: dPos.top + halfCircleSize + }); + }, 100); + } + + $(document).on('mousemove', mouseMove).on('mouseup', mouseUp); + event.preventDefault(); + + function mouseMove(event) { + // console.log('......................'); + var offset = dPanel.data('mouseOffset'); + sX1 = event.pageX - offset.x; + sY1 = event.pageY - offset.y; + sX2 = sX1 + sWidth; + sY2 = sY1 + sHeight; + dPanel.css({ + left: sX1, + top: sY1 + }); + + row.find('.dragging-in').removeClass('dragging-in'); + dropBefore = false; + dropCol = null; + var area = 0, + thisArea; + row.children(':not(.dragging-col)').each(function() { + var col = $(this); + if(col.hasClass('dragging-col-holder')) { + dropBefore = (!options.sensitive) || (area < 100); + return true; + } + var p = col.children('.panel'); + var pP = p.offset(), + pW = p.width(), + pH = p.height(); + var pX = pP.left, + pY = pP.top; + + if(options.sensitive) { + pX -= dPos.left; + pY -= dPos.top; + thisArea = getIntersectArea(sX1, sY1, sX2, sY2, pX, pY, pX + pW, pY + pH); + if(thisArea > 100 && thisArea > area && thisArea > Math.min(getRectArea(sX1, sY1, sX2, sY2), getRectArea(pX, pY, pX + pW, pY + pH)) / 3) { + area = thisArea; + dropCol = col; + } + } else { + var mX = event.pageX, + mY = event.pageY; + + if(mX > pX && mY > pY && mX < (pX + pW) && mY < (pY + pH)) { + dropCol = col; + return false; + } + } + }); + + if(dropCol) { + if(moveFn) clearTimeout(moveFn); + nextDropCol = dropCol; + moveFn = setTimeout(movePanel, 50); + } + event.preventDefault(); + } + + function movePanel() { + if(nextDropCol) { + nextDropCol.addClass('dragging-in'); + if(dropBefore) dColShadow.insertAfter(nextDropCol); + else dColShadow.insertBefore(nextDropCol); + dashboard.addClass('dashboard-holding'); + moveFn = null; + nextDropCol = null; + } + } + + function mouseUp(event) { + if(moveFn) clearTimeout(moveFn); + + var oldOrder = panel.data('order'); + panel.parent().insertAfter(dColShadow); + var newOrder = 0; + var newOrders = {}; + + row.children(':not(.dragging-col-holder)').each(function() { + var p = $(this).children('.panel'); + p.data('order', ++newOrder); + newOrders[p.data('id') || p.attr('id')] = newOrder; + p.parent().attr('data-order', newOrder); + }); + + if(oldOrder != newOrders[panel.data('id') || panel.attr('id')]) { + row.data('orders', newOrders); + + if(afterOrdered && $.isFunction(afterOrdered)) { + afterOrdered(newOrders); + } + } + + dPanel.remove(); + + dashboard.removeClass('dashboard-holding'); + dashboard.find('.dragging-col').removeClass('dragging-col'); + dashboard.find('.panel-dragging').removeClass('panel-dragging'); + row.find('.dragging-in').removeClass('dragging-in'); + dashboard.removeClass('dashboard-dragging'); + $(document).off('mousemove', mouseMove).off('mouseup', mouseUp); + event.preventDefault(); + } + }); + }; + + Dashboard.prototype.handlePanelPadding = function() { + this.$.find('.panel-body > table, .panel-body > .list-group').parent().addClass('no-padding'); + }; + + Dashboard.prototype.updatePanelHeight = function() { + var that = this; + var defaultHeight = that.options.height; + var minHeight = that.options.minHeight; + var sizeConfig = {}; + if(that.id && $.zui.store) { + sizeConfig = $.zui.store.pageGet('zui.dashboard.' + that.id + '.sizeConfig', sizeConfig); + } + + this.$.children('.row').each(function() { + var $row = $(this); + var rowWidth = $row.width(); + var rows = [], row = [], calWidth = 0; + $row.children(':not(.dragging-col-holder)').each(function() { + var $col = $(this); + var colWidth = $col.width(); + if(calWidth + colWidth > rowWidth) { + if(row.length) rows.push(row); + row = [$col]; + calWidth = colWidth; + } else { + calWidth += colWidth; + row.push($col); + } + }); + if(row.length) rows.push(row); + if(rows.length) { + $.each(rows, function(rowId) { + row = rows[rowId]; + var bestHeight = 0; + var panels = []; + var setNewHeight = false; + $.each(row, function(colId) { + var $col = row[colId].data('row-id', rowId); + var $panel = $col.children('.panel:first'); + panels.push($panel); + if(setNewHeight) return; + var newHeight = $panel.data('newHeight'); + if(newHeight) { + $panel.data('newHeight', null).data('height', newHeight); + bestHeight = Math.max(minHeight, newHeight); + setNewHeight = true; + } else { + var panelHeight = $panel.data('height') || sizeConfig[$panel.data('id')]; + if(panelHeight) bestHeight = Math.max(bestHeight, panelHeight); + } + }); + if(!bestHeight) { + bestHeight = defaultHeight; + } + $.each(panels, function(idx) { + var $panel = panels[idx].css('height', bestHeight); + sizeConfig[$panel.data('id')] = $panel.data('height'); + }); + }); + } + }); + + if(that.id && $.zui.store) { + $.zui.store.pageSet('zui.dashboard.' + that.id + '.sizeConfig', sizeConfig); + } + + return sizeConfig; + }; + + Dashboard.prototype.handleResizeEvent = function() { + var that = this; + var options = that.options; + var resizable = options.resizable; + var onResize = options.onResize; + var minHeight = options.minHeight; + var resizeMessage = options.resizeMessage; + var messagerAvaliable = resizeMessage && dashboardMessager; + that.$.on('mousedown', '.resize-handle', function(e) { + var $handle = $(this); + var isVertical = $handle.hasClass('resize-vertical'); + var $col = $handle.parent() + .addClass('resizing') + .toggleClass('resizing-v', isVertical) + .toggleClass('resizing-h', !isVertical); + var $row = $col.closest('.row'); + var $panel = $col.children('.panel'); + var startX = e.pageX, startY = e.pageY; + var startWidth = $col.width(), startHeight = $panel.height(); + var rowWidth = $row.width(); + var oldGrid = Math.round(12*startWidth/rowWidth); + var lastGrid = oldGrid; + if(!isVertical) $col.attr('data-grid', oldGrid); + + var mouseMove = function(event) { + if(isVertical) { + $panel.css('height', Math.max(minHeight, startHeight + (event.pageY - startY))); + } + else { + var x = event.pageX; + var grid = Math.max(1, Math.min(12, Math.round(12 * (startWidth + (x - startX)) / rowWidth))); + if(lastGrid != grid) { + $col.attr('data-grid', grid).css('width', (100*grid/12) + '%'); + if(messagerAvaliable) dashboardMessager[dashboardMessager.isShow ? 'update' : 'show'](Math.round(100*grid/12) + '% (' + grid + '/12)'); + lastGrid = grid; + } + } + event.preventDefault(); + event.stopPropagation(); + }; + + var mouseUp = function(event) { + $col.removeClass('resizing resizing-v resizing-h'); + + if(isVertical) { + var newHeight = Math.max(minHeight, startHeight + (event.pageY - startY)); + if(newHeight !== startHeight) + { + if($.isFunction(onResize)) + { + var revert = function() { + $panel.css('height', startHeight).data('height', startHeight); + that.updatePanelHeight(); + }; + var result = onResize({type: 'vertical', id: $panel.data('id'), element: $col, old: startHeight, height: newHeight, revert: revert}); + if(result === false) revert(); + } + $panel.css('height', newHeight).data('newHeight', newHeight);; + } + } else { + var lastGrid = $col.attr('data-grid'); + if(oldGrid != lastGrid) { + if($.isFunction(onResize)) { + var revert = function() { + $col.attr('data-grid', oldGrid).css('width', null); + that.updatePanelHeight(); + }; + var result = onResize({type: 'horizontal', id: $panel.data('id'), element: $col, old: oldGrid, grid: lastGrid, revert: revert}); + if(result === false) revert(); + else if(result !== true) { + if(messagerAvaliable) dashboardMessager.show(Math.round(100*lastGrid/12) + '% (' + lastGrid + '/12)'); + } + } + } + } + that.updatePanelHeight(); + $('body').off('mousemove.resize', mouseMove).off('mouseup.resize', mouseUp); + event.preventDefault(); + event.stopPropagation(); + }; + + $('body').on('mousemove.resize', mouseMove).on('mouseup.resize', mouseUp); + e.preventDefault(); + e.stopPropagation(); + }); + var $col = that.$.children('.row').children(':not(.dragging-col-holder)'); + if(resizable === true || resizable === 'horizontal') + { + $col.append('
            '); + } + if(resizable === true || resizable === 'vertical') + { + $col.append('
            '); + } + }; + + Dashboard.prototype.refresh = function($panel, onlyRefreshBody) { + if(onlyRefreshBody === undefined) onlyRefreshBody = this.options.onlyRefreshBody; + var afterRefresh = this.options.afterRefresh; + $panel = $($panel); + var url = $panel.data('url'); + if(!url) return; + $panel.addClass('panel-loading').find('.panel-heading .icon-refresh,.panel-heading .icon-repeat').addClass('icon-spin'); + $.ajax({ + url: url, + dataType: 'html' + }).done(function(data) { + var $data = $(data); + if($data.hasClass('panel')) { + $panel.empty().append($data.children()); + } else if(onlyRefreshBody) { + $panel.find('.panel-body').empty().html(data); + } else { + $panel.html(data); + } + if($.isFunction(afterRefresh)) { + afterRefresh.call(this, { + result: true, + data: data, + $panel: $panel + }); + } + }).fail(function() { + $panel.addClass('panel-error'); + if($.isFunction(afterRefresh)) { + afterRefresh.call(this, { + result: false, + $panel: $panel + }); + } + }).always(function() { + $panel.removeClass('panel-loading'); + $panel.find('.panel-heading .icon-refresh,.panel-heading .icon-repeat').removeClass('icon-spin'); + }); + }; + + function getRectArea(x1, y1, x2, y2) { + return Math.abs((x2 - x1) * (y2 - y1)); + } + + function isPointInner(x, y, x1, y1, x2, y2) { + return x >= x1 && x <= x2 && y >= y1 && y <= y2; + } + + function getIntersectArea(ax1, ay1, ax2, ay2, bx1, by1, bx2, by2) { + var x1 = Math.max(ax1, bx1), + y1 = Math.max(ay1, by1), + x2 = Math.min(ax2, bx2), + y2 = Math.min(ay2, by2); + if(isPointInner(x1, y1, ax1, ay1, ax2, ay2) && isPointInner(x2, y2, ax1, ay1, ax2, ay2) && isPointInner(x1, y1, bx1, by1, bx2, by2) && isPointInner(x2, y2, bx1, by1, bx2, by2)) { + return getRectArea(x1, y1, x2, y2); + } + return 0; + } + + Dashboard.prototype.init = function() { + var options = this.options, that = this; + that.id = options.id ? options.id : that.$.attr('id'); + if(options.data) { + var $row = $('
            '); + $.each(options.data, function(idx, config) { + var $col = $('
            '); + if(config.colAttrs) $col.attr(config.colAttrs); + var $panel = $('
            '); + if(config.panelAttrs) $panel.attr(config.panelAttrs); + if(config.height !== undefined) $panel.data('height', config.height); + if(config.content !== undefined) { + if($.isFunction(config.content)) { + var content = config.content($panel); + if(content !== true) { + $panel.html(content); + } + } else { + $panel.html(config.content); + } + } + $row.append($col.append($panel.data('url', config.url))); + }); + that.$.append($row); + } + + that.updatePanelHeight(); + that.handlePanelPadding(); + that.handleRemoveEvent(); + that.handleRefreshEvent(); + if(options.resizable) that.handleResizeEvent(); + if(that.draggable) that.handleDraggable(); + + var orderSeed = 0; + that.$.find('.panel').each(function() { + var $this = $(this); + $this.data('order', ++orderSeed); + if(!$this.attr('id')) { + $this.attr('id', 'panel' + orderSeed); + } + if(!$this.attr('data-id')) { + $this.attr('data-id', orderSeed); + } + + that.refresh($this, options.onlyRefreshBody); + }); + + that.$.find('[data-toggle="tooltip"]').tooltip({container: 'body'}); + }; + + $.fn.dashboard = function(option) { + return this.each(function() { + var $this = $(this); + var data = $this.data('zui.dashboard'); + var options = typeof option == 'object' && option; + + if(!data) $this.data('zui.dashboard', (data = new Dashboard(this, options))); + + if(typeof option == 'string') data[option](); + }); + }; + + $.fn.dashboard.Constructor = Dashboard; +}(jQuery, Math, undefined)); + diff --git a/root/res/zui/lib/dashboard/zui.dashboard.min.css b/root/res/zui/lib/dashboard/zui.dashboard.min.css new file mode 100644 index 0000000..407ab93 --- /dev/null +++ b/root/res/zui/lib/dashboard/zui.dashboard.min.css @@ -0,0 +1,6 @@ +/*! + * ZUI: 仪表盘 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */.dashboard{position:relative}.dashboard .panel{position:relative}.dashboard .panel-actions{position:absolute;top:0;right:0}.dashboard .panel-actions .dropdown-menu{min-width:80px}.dashboard .panel-actions .dropdown-menu>li>a{padding:3px 10px}.dashboard .panel-actions>.dropdown>a,.dashboard .panel-actions>a{color:grey;text-decoration:none!important}.dashboard .panel-actions>.btn,.dashboard .panel-actions>.dropdown,.dashboard .panel-actions>a{display:block;float:left}.dashboard .panel-actions>.btn,.dashboard .panel-actions>.dropdown>.btn,.dashboard .panel-actions>.dropdown>a,.dashboard .panel-actions>a{display:block;min-width:28px;height:31px;padding:0 3px;line-height:30px;text-align:center;filter:alpha(opacity=70);border:none;border-radius:0;opacity:.7}.dashboard .panel-actions>.dropdown>a:hover,.dashboard .panel-actions>a:hover{background-color:rgba(0,0,0,.1)}.dashboard .panel-heading{height:32px;padding:6px 60px 6px 6px;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.dashboard .panel-heading>.icon{filter:alpha(opacity=70);opacity:.7}.dashboard .panel-heading:hover>.panel-actions>.btn,.dashboard .panel-heading:hover>.panel-actions>.dropdown>.btn,.dashboard .panel-heading:hover>.panel-actions>.dropdown>a,.dashboard .panel-heading:hover>.panel-actions>a{filter:alpha(opacity=100);opacity:1}.dashboard .panel-body{position:absolute;top:32px;right:0;bottom:0;left:0;padding:10px;overflow:auto}.dashboard .panel-body.no-padding{padding:0}.dashboard .panel-body>:last-child{margin:0}.dashboard .panel-body>.list-group .list-group-item{border-right:none;border-left:none;border-radius:0}.dashboard .panel-body>.list-group .list-group-item:first-child{border-top:none}.dashboard.dashboard-draggable .panel-heading{cursor:move}.dashboard .panel-dragging{color:#fff;background:rgba(0,0,0,.1);border:1px solid #fff;-webkit-box-shadow:none!important;box-shadow:none!important}.dashboard .panel-dragging>*{filter:alpha(opacity=10);opacity:.1}.dashboard .panel-dragging-shadow{position:absolute;cursor:move;background:rgba(255,255,255,.5);border:2px solid rgba(255,255,255,.9);-webkit-box-shadow:1px 5px 15px rgba(0,0,0,.5)!important;box-shadow:1px 5px 15px rgba(0,0,0,.5)!important}.dashboard .panel-dragging-shadow>*{filter:alpha(opacity=70);opacity:.7}.dashboard .panel-dragging-shadow.circle{overflow:hidden;border-radius:50%;-webkit-transition:width .2s,height .2s;-o-transition:width .2s,height .2s;transition:width .2s,height .2s}.dashboard .panel-dragging-shadow.circle .panel-actions{display:none}.dashboard .dragging-col-holder{display:none}.dashboard.dashboard-holding .dragging-col-holder{display:block}.dashboard.dashboard-holding .dragging-col{display:none}.dashboard .resize-handle{position:absolute;top:0;right:4px;bottom:20px;width:12px;cursor:e-resize;filter:alpha(opacity=0);border-radius:4px;opacity:0;-webkit-transition:opacity .4s cubic-bezier(.175,.885,.32,1);-o-transition:opacity .4s cubic-bezier(.175,.885,.32,1);transition:opacity .4s cubic-bezier(.175,.885,.32,1)}.dashboard .resize-handle>.icon{position:absolute;top:50%;left:0;display:block;width:20px;height:20px;margin-top:-10px;line-height:20px;color:#3280fc;text-align:center;background-color:rgba(50,128,252,.2);-webkit-transition:left .4s cubic-bezier(.175,.885,.32,1),top .4s cubic-bezier(.175,.885,.32,1);-o-transition:left .4s cubic-bezier(.175,.885,.32,1),top .4s cubic-bezier(.175,.885,.32,1);transition:left .4s cubic-bezier(.175,.885,.32,1),top .4s cubic-bezier(.175,.885,.32,1)}.dashboard .resize-handle:hover{background-color:rgba(50,128,252,.12);filter:alpha(opacity=100);opacity:1}.dashboard .resize-handle:hover>.icon{left:-4px}.dashboard .resize-handle.resize-vertical{top:auto;right:10px;bottom:14px;left:10px;width:auto;height:12px;cursor:n-resize}.dashboard .resize-handle.resize-vertical>.icon{top:0;left:50%;margin-top:0;margin-left:-10px}.dashboard .resize-handle.resize-vertical:hover{background-color:rgba(50,128,252,.12);filter:alpha(opacity=100);opacity:1}.dashboard .resize-handle.resize-vertical:hover>.icon{top:-4px}.dashboard .resizing{-webkit-transition:width .2s cubic-bezier(.175,.885,.32,1);-o-transition:width .2s cubic-bezier(.175,.885,.32,1);transition:width .2s cubic-bezier(.175,.885,.32,1)}.dashboard .resizing-v .resize-vertical{opacity:1}.dashboard .resizing-v .resize-vertical>.icon{top:-4px}.dashboard .resizing-h .resize-horizontal{opacity:1}.dashboard .resizing-h .resize-horizontal>.icon{left:-4px}.dashboard .resizing .resize-handle{background-color:rgba(50,128,252,.12)}.dashboard .panel-body:after,.dashboard .panel-body:before{display:block;visibility:hidden;content:' ';opacity:0;-webkit-transition:visibility .2s,opacity .2s;-o-transition:visibility .2s,opacity .2s;transition:visibility .2s,opacity .2s}.dashboard .panel-body:before{position:absolute;top:0;right:0;bottom:0;left:0;background-color:#fff}.dashboard .panel-body:after{position:absolute;top:50%;left:50%;width:40px;height:40px;margin-top:-20px;margin-left:-20px;font-family:ZenIcon;font-size:14px;font-size:28px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;line-height:40px;text-align:center;text-transform:none;content:'\e97c';-webkit-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.dashboard .panel-loading>.panel-body{overflow:hidden}.dashboard .panel-loading>.panel-body:after,.dashboard .panel-loading>.panel-body:before{visibility:visible;opacity:.5}.dashboard-inverse{background-color:#3280fc}.dashboard-inverse .panel{-webkit-box-shadow:0 1px 5px rgba(0,0,0,.15);box-shadow:0 1px 5px rgba(0,0,0,.15)}.dashboard-inverse .panel-dragging{background:rgba(0,0,0,.3)}.dashboard-inverse .panel-dragging-shadow{-webkit-box-shadow:1px 2px 15px rgba(0,0,0,.5)!important;box-shadow:1px 2px 15px rgba(0,0,0,.5)!important} \ No newline at end of file diff --git a/root/res/zui/lib/dashboard/zui.dashboard.min.js b/root/res/zui/lib/dashboard/zui.dashboard.min.js new file mode 100644 index 0000000..96adaa9 --- /dev/null +++ b/root/res/zui/lib/dashboard/zui.dashboard.min.js @@ -0,0 +1,7 @@ +/*! + * ZUI: 仪表盘 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ +!function(e,a,t){"use strict";function i(e,t,i,n){return a.abs((i-e)*(n-t))}function n(e,a,t,i,n,o){return e>=t&&e<=n&&a>=i&&a<=o}function o(e,t,o,s,r,d,l,h){var g=a.max(e,r),p=a.max(t,d),c=a.min(o,l),f=a.min(s,h);return n(g,p,e,t,o,s)&&n(c,f,e,t,o,s)&&n(g,p,r,d,l,h)&&n(c,f,r,d,l,h)?i(g,p,c,f):0}var s=e.zui.Messager?new e.zui.Messager({placement:"top",time:1500,close:0,scale:!1,fade:!1}):0,r=function(a,t){this.$=e(a),this.options=this.getOptions(t),this.draggable=this.$.hasClass("dashboard-draggable")||this.options.draggable,this.init()};r.DEFAULTS={minHeight:100,height:360,shadowType:"normal",sensitive:!1,circleShadowSize:100,onlyRefreshBody:!0,resizable:!0,resizeMessage:!1},r.prototype.getOptions=function(a){return a=e.extend({},r.DEFAULTS,this.$.data(),a)},r.prototype.handleRemoveEvent=function(){var a=this.options.afterPanelRemoved,i=this.options.panelRemovingTip;this.$.on("click",".remove-panel",function(){var n=e(this).closest(".panel"),o=n.data("name")||n.find(".panel-heading").text().replace("\n","").replace(/(^\s*)|(\s*$)/g,""),s=n.attr("data-id");(i===t||i===!1||confirm(i.format(o)))&&(n.parent().remove(),a&&e.isFunction(a)&&a(s))})},r.prototype.handleRefreshEvent=function(){var a=this,t=this.options.onlyRefreshBody;this.$.on("click",".refresh-panel",function(){var i=e(this).closest(".panel");a.refresh(i,t)})},r.prototype.handleDraggable=function(){var t=this.$,n=this.options,s="circle"===n.shadowType,r=n.circleShadowSize,d=r/2,l=n.afterOrdered;this.$.addClass("dashboard-draggable"),this.$.on("mousedown",".panel-actions, .drag-disabled",function(e){e.stopPropagation()});var h;this.$.on("mousedown",".panel-heading, .panel-drag-handler",function(g){function p(t){var s=x.data("mouseOffset");u=t.pageX-s.x,v=t.pageY-s.y,m=u+F,z=v+A,x.css({left:u,top:v}),R.find(".dragging-in").removeClass("dragging-in"),w=!1,C=null;var r,d=0;R.children(":not(.dragging-col)").each(function(){var s=e(this);if(s.hasClass("dragging-col-holder"))return w=!n.sensitive||d<100,!0;var l=s.children(".panel"),h=l.offset(),g=l.width(),p=l.height(),c=h.left,f=h.top;if(n.sensitive)c-=H.left,f-=H.top,r=o(u,v,m,z,c,f,c+g,f+p),r>100&&r>d&&r>a.min(i(u,v,m,z),i(c,f,c+g,f+p))/3&&(d=r,C=s);else{var y=t.pageX,b=t.pageY;if(y>c&&b>f&&y
            ').removeClass("dragging-col").appendTo(R)),h&&D.removeClass(h),D.addClass(h=P.attr("class")),D.insertBefore(P).find(".panel").replaceWith($.clone().addClass("panel-dragging panel-dragging-holder")),t.addClass("dashboard-dragging"),$.addClass("panel-dragging").parent().addClass("dragging-col"),x.css({left:T.left-H.left,top:T.top-H.top,width:F,height:A}).appendTo(t).data("mouseOffset",{x:g.pageX-T.left+H.left,y:g.pageY-T.top+H.top}),s&&(x.addClass("circle"),setTimeout(function(){x.css({left:g.pageX-H.left-d,top:g.pageY-H.top-d,width:r,height:r}).data("mouseOffset",{x:H.left+d,y:H.top+d})},100)),e(document).on("mousemove",p).on("mouseup",f),g.preventDefault()})},r.prototype.handlePanelPadding=function(){this.$.find(".panel-body > table, .panel-body > .list-group").parent().addClass("no-padding")},r.prototype.updatePanelHeight=function(){var t=this,i=t.options.height,n=t.options.minHeight,o={};return t.id&&e.zui.store&&(o=e.zui.store.pageGet("zui.dashboard."+t.id+".sizeConfig",o)),this.$.children(".row").each(function(){var t=e(this),s=t.width(),r=[],d=[],l=0;t.children(":not(.dragging-col-holder)").each(function(){var a=e(this),t=a.width();l+t>s?(d.length&&r.push(d),d=[a],l=t):(l+=t,d.push(a))}),d.length&&r.push(d),r.length&&e.each(r,function(t){d=r[t];var s=0,l=[],h=!1;e.each(d,function(e){var i=d[e].data("row-id",t),r=i.children(".panel:first");if(l.push(r),!h){var g=r.data("newHeight");if(g)r.data("newHeight",null).data("height",g),s=a.max(n,g),h=!0;else{var p=r.data("height")||o[r.data("id")];p&&(s=a.max(s,p))}}}),s||(s=i),e.each(l,function(e){var a=l[e].css("height",s);o[a.data("id")]=a.data("height")})})}),t.id&&e.zui.store&&e.zui.store.pageSet("zui.dashboard."+t.id+".sizeConfig",o),o},r.prototype.handleResizeEvent=function(){var t=this,i=t.options,n=i.resizable,o=i.onResize,r=i.minHeight,d=i.resizeMessage,l=d&&s;t.$.on("mousedown",".resize-handle",function(i){var n=e(this),d=n.hasClass("resize-vertical"),h=n.parent().addClass("resizing").toggleClass("resizing-v",d).toggleClass("resizing-h",!d),g=h.closest(".row"),p=h.children(".panel"),c=i.pageX,f=i.pageY,u=h.width(),v=p.height(),m=g.width(),z=a.round(12*u/m),y=z;d||h.attr("data-grid",z);var C=function(e){if(d)p.css("height",a.max(r,v+(e.pageY-f)));else{var t=e.pageX,i=a.max(1,a.min(12,a.round(12*(u+(t-c))/m)));y!=i&&(h.attr("data-grid",i).css("width",100*i/12+"%"),l&&s[s.isShow?"update":"show"](a.round(100*i/12)+"% ("+i+"/12)"),y=i)}e.preventDefault(),e.stopPropagation()},w=function(i){if(h.removeClass("resizing resizing-v resizing-h"),d){var n=a.max(r,v+(i.pageY-f));if(n!==v){if(e.isFunction(o)){var g=function(){p.css("height",v).data("height",v),t.updatePanelHeight()},c=o({type:"vertical",id:p.data("id"),element:h,old:v,height:n,revert:g});c===!1&&g()}p.css("height",n).data("newHeight",n)}}else{var u=h.attr("data-grid");if(z!=u&&e.isFunction(o)){var g=function(){h.attr("data-grid",z).css("width",null),t.updatePanelHeight()},c=o({type:"horizontal",id:p.data("id"),element:h,old:z,grid:u,revert:g});c===!1?g():c!==!0&&l&&s.show(a.round(100*u/12)+"% ("+u+"/12)")}}t.updatePanelHeight(),e("body").off("mousemove.resize",C).off("mouseup.resize",w),i.preventDefault(),i.stopPropagation()};e("body").on("mousemove.resize",C).on("mouseup.resize",w),i.preventDefault(),i.stopPropagation()});var h=t.$.children(".row").children(":not(.dragging-col-holder)");n!==!0&&"horizontal"!==n||h.append('
            '),n!==!0&&"vertical"!==n||h.append('
            ')},r.prototype.refresh=function(a,i){i===t&&(i=this.options.onlyRefreshBody);var n=this.options.afterRefresh;a=e(a);var o=a.data("url");o&&(a.addClass("panel-loading").find(".panel-heading .icon-refresh,.panel-heading .icon-repeat").addClass("icon-spin"),e.ajax({url:o,dataType:"html"}).done(function(t){var o=e(t);o.hasClass("panel")?a.empty().append(o.children()):i?a.find(".panel-body").empty().html(t):a.html(t),e.isFunction(n)&&n.call(this,{result:!0,data:t,$panel:a})}).fail(function(){a.addClass("panel-error"),e.isFunction(n)&&n.call(this,{result:!1,$panel:a})}).always(function(){a.removeClass("panel-loading"),a.find(".panel-heading .icon-refresh,.panel-heading .icon-repeat").removeClass("icon-spin")}))},r.prototype.init=function(){var a=this.options,i=this;if(i.id=a.id?a.id:i.$.attr("id"),a.data){var n=e('
            ');e.each(a.data,function(a,i){var o=e('
            ');i.colAttrs&&o.attr(i.colAttrs);var s=e('
            ');if(i.panelAttrs&&s.attr(i.panelAttrs),i.height!==t&&s.data("height",i.height),i.content!==t)if(e.isFunction(i.content)){var r=i.content(s);r!==!0&&s.html(r)}else s.html(i.content);n.append(o.append(s.data("url",i.url)))}),i.$.append(n)}i.updatePanelHeight(),i.handlePanelPadding(),i.handleRemoveEvent(),i.handleRefreshEvent(),a.resizable&&i.handleResizeEvent(),i.draggable&&i.handleDraggable();var o=0;i.$.find(".panel").each(function(){var t=e(this);t.data("order",++o),t.attr("id")||t.attr("id","panel"+o),t.attr("data-id")||t.attr("data-id",o),i.refresh(t,a.onlyRefreshBody)}),i.$.find('[data-toggle="tooltip"]').tooltip({container:"body"})},e.fn.dashboard=function(a){return this.each(function(){var t=e(this),i=t.data("zui.dashboard"),n="object"==typeof a&&a;i||t.data("zui.dashboard",i=new r(this,n)),"string"==typeof a&&i[a]()})},e.fn.dashboard.Constructor=r}(jQuery,Math,void 0); \ No newline at end of file diff --git a/root/res/zui/lib/datagrid/zui.datagrid.css b/root/res/zui/lib/datagrid/zui.datagrid.css new file mode 100644 index 0000000..9ae1161 --- /dev/null +++ b/root/res/zui/lib/datagrid/zui.datagrid.css @@ -0,0 +1,272 @@ +/*! + * ZUI: 数据表格② - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +.datagrid-container { + position: relative; + overflow: hidden; + background-color: #f1f1f1; + border: 1px solid #ddd; + } +.datagrid-cells { + position: absolute; + top: 0; + left: 0; + overflow: visible; + } +.datagrid-cell { + position: absolute; + padding: 8px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + background-color: #fff; + border: 1px solid #ddd; + -webkit-transition: .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: .4s cubic-bezier(.175, .885, .32, 1); + transition: .4s cubic-bezier(.175, .885, .32, 1); + -webkit-transition-property: background, outline; + -o-transition-property: background, outline; + transition-property: background, outline; + } +.datagrid-cell.datagrid-cell-index { + font-family: Monaco, Menlo, Consolas, "Courier New", monospace; + color: #808080; + text-align: right; + background-color: #f1f1f1; + } +.datagrid-cell.datagrid-cell-head { + background-color: #f1f1f1; + } +.datagrid-cell-span { + z-index: 10; + } +.datagrid-row { + position: absolute; + width: 100%; + background-color: #fff; + -webkit-transition: .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: .4s cubic-bezier(.175, .885, .32, 1); + transition: .4s cubic-bezier(.175, .885, .32, 1); + -webkit-transition-property: background, outline; + -o-transition-property: background, outline; + transition-property: background, outline; + } +.datagrid-row-head { + font-weight: bold; + color: #808080; + background-color: #f1f1f1; + } +.datagrid-fixed.datagrid-row { + z-index: 35; + } +.datagrid-fixed.datagrid-cell { + z-index: 30; + } +.datagrid-fixed-edge-top { + -webkit-box-shadow: 0 2px 5px 0 rgba(0, 0, 0, .125), 0 1px 0 rgba(0, 0, 0, .25); + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, .125), 0 1px 0 rgba(0, 0, 0, .25); + } +.datagrid-fixed-edge-bottom { + -webkit-box-shadow: 0 -2px 5px 0 rgba(0, 0, 0, .125), 0 -1px 0 rgba(0, 0, 0, .25); + box-shadow: 0 -2px 5px 0 rgba(0, 0, 0, .125), 0 -1px 0 rgba(0, 0, 0, .25); + } +.datagrid-fixed-edge-left { + -webkit-box-shadow: -1px 0 0 rgba(0, 0, 0, .25) inset; + box-shadow: -1px 0 0 rgba(0, 0, 0, .25) inset; + } +.datagrid-fixed-edge-right { + -webkit-box-shadow: 1px 0 0 rgba(0, 0, 0, .25) inset; + box-shadow: 1px 0 0 rgba(0, 0, 0, .25) inset; + } +.datagrid-row-cell.active .datagrid-cell { + background-color: #fff0d5; + } +.datagrid-row-cell.active .datagrid-cell.datagrid-cell-index { + background-color: #ffe7bc; + } +.datagrid-hover-row .datagrid-row-cell:hover { + z-index: 20; + } +.datagrid-hover-row .datagrid-row-cell:hover .datagrid-cell { + background-color: #ebf2f9; + } +.datagrid-hover-row .datagrid-row-cell:hover.datagrid-fixed { + z-index: 38; + } +.datagrid-hover-row .datagrid-row-cell:hover > .datagrid-cell-index { + background-color: #ddd; + } +.datagrid-hover-row .datagrid-row-cell:hover.active .datagrid-cell { + background-color: #ffe1ac; + } +.datagrid-hover-row .datagrid-row-cell:hover.active .datagrid-cell-index { + background-color: #ffda98; + } +.datagrid-hover-row.datagrid-hover-shadow .datagrid-row-cell:hover { + -webkit-box-shadow: 0 1px 3px 2px rgba(0, 0, 0, .05), 0 0 2px 1px rgba(0, 0, 0, .075); + box-shadow: 0 1px 3px 2px rgba(0, 0, 0, .05), 0 0 2px 1px rgba(0, 0, 0, .075); + } +.datagrid-hover-cell .datagrid-row-cell .datagrid-cell-cell:hover { + z-index: 40; + background-color: #fff; + outline: 1px solid #808080; + outline-offset: -1px; + } +.datagrid-hover-cell .datagrid-row-cell .datagrid-cell-cell.datagrid-fixed:hover, +.datagrid-hover-cell .datagrid-row-cell.datagrid-fixed .datagrid-cell-cell:hover { + z-index: 42; + } +.datagrid-hover-cell.datagrid-hover-shadow .datagrid-row-cell .datagrid-cell:hover { + -webkit-box-shadow: 0 1px 3px 3px rgba(0, 0, 0, .075), 0 0 2px rgba(0, 0, 0, .1); + box-shadow: 0 1px 3px 3px rgba(0, 0, 0, .075), 0 0 2px rgba(0, 0, 0, .1); + } +.datagrid-hover-col .datagrid-cell.hover { + background-color: #ebf2f9; + } +.datagrid-hover-col .datagrid-cell-head.hover, +.datagrid-hover-col .datagrid-cell-index.hover { + background-color: #ddd; + } +.datagrid-hover-col .datagrid-row-cell.active .datagrid-cell.hover { + background-color: #d7e5f3; + } +.datagrid-scrollbar { + position: absolute; + right: 0; + bottom: 0; + z-index: 50; + opacity: 0; + -webkit-transition: 2.5s cubic-bezier(.175, .885, .32, 1); + -o-transition: 2.5s cubic-bezier(.175, .885, .32, 1); + transition: 2.5s cubic-bezier(.175, .885, .32, 1); + -webkit-transition-property: background, opacity; + -o-transition-property: background, opacity; + transition-property: background, opacity; + } +.datagrid-scrollbar.scrolling, +.datagrid-container:hover .datagrid-scrollbar { + opacity: 1; + } +.datagrid-scrollbar > .bar { + position: absolute; + min-width: 10px; + background-color: #ddd; + background-color: rgba(0, 0, 0, .25); + } +.datagrid-scrollbar.scrolling, +.datagrid-scrollbar:hover { + background-color: rgba(0, 0, 0, .075); + } +.datagrid-scrollbar.scrolling > .bar, +.datagrid-scrollbar:hover > .bar { + position: absolute; + background-color: #808080; + background-color: rgba(0, 0, 0, .5); + } +.datagrid-scrollbar-h { + left: 0; + height: 10px; + } +.datagrid-scrollbar-h > .bar { + top: 0!important; + bottom: 0!important; + min-width: 20px; + } +.datagrid-scrollbar-v { + top: 0; + width: 10px; + } +.datagrid-scrollbar-v > .bar { + right: 0!important; + left: 0!important; + min-height: 20px; + } +.datagrid-messager { + position: absolute; + top: 0; + right: 0; + left: 0; + z-index: 60; + padding: 5px 10px; + text-align: center; + } +.datagrid-messager > .close { + position: absolute; + top: 0; + right: 0; + display: block; + width: 30px; + height: 30px; + padding-bottom: 5px; + line-height: 20px; + text-align: center; + } +.datagrid-messager > .close:hover { + background-color: rgba(0, 0, 0, .1); + } +.datagrid-loading { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 61; + background-color: rgba(255, 255, 255, .6); + } +.datagrid-loading > .content { + position: relative; + top: 50%; + display: block; + height: 50px; + margin-top: -25px; + text-align: center; + } +.datagrid-loading > .content > .icon { + color: #3280fc; + } +.datagrid-col-sortable { + padding-right: 20px; + cursor: pointer; + } +.datagrid-sorter { + position: absolute; + top: 3px; + right: 0; + bottom: 0; + width: 20px; + line-height: 30px; + text-align: center; + } +.datagrid-sort-down > .icon-sort:before { + color: #3280fc; + content: '\e6b8'; + } +.datagrid-sort-up > .icon-sort:before { + color: #3280fc; + content: '\e6b9'; + } +.datagrid-borderless .datagrid-container { + border-color: transparent; + } +.datagrid-borderless .datagrid-cell { + border-right-color: transparent; + border-left-color: transparent; + } +.datagrid-borderless .datagrid-fixed-edge-left { + -webkit-box-shadow: -1px 0 0 rgba(0, 0, 0, .1) inset; + box-shadow: -1px 0 0 rgba(0, 0, 0, .1) inset; + } +.datagrid-borderless .datagrid-fixed-edge-right { + -webkit-box-shadow: 1px 0 0 rgba(0, 0, 0, .1) inset; + box-shadow: 1px 0 0 rgba(0, 0, 0, .1) inset; + } +.datagrid-borderless .datagrid-row-cell:not(:hover) .datagrid-cell.datagrid-cell-index { + background-color: #fff; + } +.datagrid-striped .datagrid-cells > .datagrid-row-cell:nth-child(odd) .datagrid-cell-cell { + background-color: #f9f9f9; + } diff --git a/root/res/zui/lib/datagrid/zui.datagrid.js b/root/res/zui/lib/datagrid/zui.datagrid.js new file mode 100644 index 0000000..6403d1b --- /dev/null +++ b/root/res/zui/lib/datagrid/zui.datagrid.js @@ -0,0 +1,1825 @@ +/*! + * ZUI: 数据表格② - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +/*! + * jQuery Mousewheel 3.1.13 + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + */ + +(function (factory) { + if ( typeof define === 'function' && define.amd ) { + // AMD. Register as an anonymous module. + define(['jquery'], factory); + } else if (typeof exports === 'object') { + // Node/CommonJS style for Browserify + module.exports = factory; + } else { + // Browser globals + factory(jQuery); + } +}(function ($) { + + var toFix = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'], + toBind = ( 'onwheel' in document || document.documentMode >= 9 ) ? + ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'], + slice = Array.prototype.slice, + nullLowestDeltaTimeout, lowestDelta; + + if ( $.event.fixHooks ) { + for ( var i = toFix.length; i; ) { + $.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks; + } + } + + var special = $.event.special.mousewheel = { + version: '3.1.12', + + setup: function() { + if ( this.addEventListener ) { + for ( var i = toBind.length; i; ) { + this.addEventListener( toBind[--i], handler, false ); + } + } else { + this.onmousewheel = handler; + } + // Store the line height and page height for this particular element + $.data(this, 'mousewheel-line-height', special.getLineHeight(this)); + $.data(this, 'mousewheel-page-height', special.getPageHeight(this)); + }, + + teardown: function() { + if ( this.removeEventListener ) { + for ( var i = toBind.length; i; ) { + this.removeEventListener( toBind[--i], handler, false ); + } + } else { + this.onmousewheel = null; + } + // Clean up the data we added to the element + $.removeData(this, 'mousewheel-line-height'); + $.removeData(this, 'mousewheel-page-height'); + }, + + getLineHeight: function(elem) { + var $elem = $(elem), + $parent = $elem['offsetParent' in $.fn ? 'offsetParent' : 'parent'](); + if (!$parent.length) { + $parent = $('body'); + } + return parseInt($parent.css('fontSize'), 10) || parseInt($elem.css('fontSize'), 10) || 16; + }, + + getPageHeight: function(elem) { + return $(elem).height(); + }, + + settings: { + adjustOldDeltas: true, // see shouldAdjustOldDeltas() below + normalizeOffset: true // calls getBoundingClientRect for each event + } + }; + + $.fn.extend({ + mousewheel: function(fn) { + return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel'); + }, + + unmousewheel: function(fn) { + return this.unbind('mousewheel', fn); + } + }); + + + function handler(event) { + var orgEvent = event || window.event, + args = slice.call(arguments, 1), + delta = 0, + deltaX = 0, + deltaY = 0, + absDelta = 0, + offsetX = 0, + offsetY = 0; + event = $.event.fix(orgEvent); + event.type = 'mousewheel'; + + // Old school scrollwheel delta + if ( 'detail' in orgEvent ) { deltaY = orgEvent.detail * -1; } + if ( 'wheelDelta' in orgEvent ) { deltaY = orgEvent.wheelDelta; } + if ( 'wheelDeltaY' in orgEvent ) { deltaY = orgEvent.wheelDeltaY; } + if ( 'wheelDeltaX' in orgEvent ) { deltaX = orgEvent.wheelDeltaX * -1; } + + // Firefox < 17 horizontal scrolling related to DOMMouseScroll event + if ( 'axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) { + deltaX = deltaY * -1; + deltaY = 0; + } + + // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy + delta = deltaY === 0 ? deltaX : deltaY; + + // New school wheel delta (wheel event) + if ( 'deltaY' in orgEvent ) { + deltaY = orgEvent.deltaY * -1; + delta = deltaY; + } + if ( 'deltaX' in orgEvent ) { + deltaX = orgEvent.deltaX; + if ( deltaY === 0 ) { delta = deltaX * -1; } + } + + // No change actually happened, no reason to go any further + if ( deltaY === 0 && deltaX === 0 ) { return; } + + // Need to convert lines and pages to pixels if we aren't already in pixels + // There are three delta modes: + // * deltaMode 0 is by pixels, nothing to do + // * deltaMode 1 is by lines + // * deltaMode 2 is by pages + if ( orgEvent.deltaMode === 1 ) { + var lineHeight = $.data(this, 'mousewheel-line-height'); + delta *= lineHeight; + deltaY *= lineHeight; + deltaX *= lineHeight; + } else if ( orgEvent.deltaMode === 2 ) { + var pageHeight = $.data(this, 'mousewheel-page-height'); + delta *= pageHeight; + deltaY *= pageHeight; + deltaX *= pageHeight; + } + + // Store lowest absolute delta to normalize the delta values + absDelta = Math.max( Math.abs(deltaY), Math.abs(deltaX) ); + + if ( !lowestDelta || absDelta < lowestDelta ) { + lowestDelta = absDelta; + + // Adjust older deltas if necessary + if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) { + lowestDelta /= 40; + } + } + + // Adjust older deltas if necessary + if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) { + // Divide all the things by 40! + delta /= 40; + deltaX /= 40; + deltaY /= 40; + } + + // Get a whole, normalized value for the deltas + delta = Math[ delta >= 1 ? 'floor' : 'ceil' ](delta / lowestDelta); + deltaX = Math[ deltaX >= 1 ? 'floor' : 'ceil' ](deltaX / lowestDelta); + deltaY = Math[ deltaY >= 1 ? 'floor' : 'ceil' ](deltaY / lowestDelta); + + // Normalise offsetX and offsetY properties + if ( special.settings.normalizeOffset && this.getBoundingClientRect ) { + var boundingRect = this.getBoundingClientRect(); + offsetX = event.clientX - boundingRect.left; + offsetY = event.clientY - boundingRect.top; + } + + // Add information to the event object + event.deltaX = deltaX; + event.deltaY = deltaY; + event.deltaFactor = lowestDelta; + event.offsetX = offsetX; + event.offsetY = offsetY; + // Go ahead and set deltaMode to 0 since we converted to pixels + // Although this is a little odd since we overwrite the deltaX/Y + // properties with normalized deltas. + event.deltaMode = 0; + + // Add event and delta to the front of the arguments + args.unshift(event, delta, deltaX, deltaY); + + // Clearout lowestDelta after sometime to better + // handle multiple device types that give different + // a different lowestDelta + // Ex: trackpad = 3 and mouse wheel = 120 + if (nullLowestDeltaTimeout) { clearTimeout(nullLowestDeltaTimeout); } + nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200); + + return ($.event.dispatch || $.event.handle).apply(this, args); + } + + function nullLowestDelta() { + lowestDelta = null; + } + + function shouldAdjustOldDeltas(orgEvent, absDelta) { + // If this is an older event and the delta is divisable by 120, + // then we are assuming that the browser is treating this as an + // older mouse wheel event and that we should divide the deltas + // by 40 to try and get a more usable deltaFactor. + // Side note, this actually impacts the reported scroll distance + // in older browsers and can cause scrolling to be slower than native. + // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false. + return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0; + } + +})); + +/* ======================================================================== + * ZUI: datagrid.js + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + +(function($, undefined) { + 'use strict'; + + var loadDataSourceFromTable = function ($table) { + var cols = []; + $table.find('thead>tr:first>th').each(function(idx) { + var $th = $(this); + cols.push($.extend({ + name: idx, + label: $th.html(), + html: true, + width: $th.outerWidth() + }, $th.data())); + if ($th.attr('colspan') && $th.attr('colspan') !== '1') { + throw new Erorr('Table th element with colspan attribute is not support.'); + } + }); + var data = []; + $table.find('tbody>tr').each(function() { + var $tr = $(this); + var item = {}; + $tr.children('td').each(function(idx) { + item[idx] = $(this).html(); + }); + data.push($.extend(item, $tr.data())); + }); + return { + cols: cols, + array: data, + length: data.length + }; + }; + + // Define the datagrid model name + var NAME = 'zui.datagrid'; + + var DEFAULT_VALUE_OPERATOR = { + date: { + getter: function(dataValue, cell, dataGrid) { + var formater = dataGrid.options.defaultDateFormater; + return Date.create(dataValue).format(formater); + }, + setter: function(inputValue, cell, dataGrid) { + if (typeof inputValue === 'string') { + var intValue = parseInt(inputValue, 10); + if (!isNaN(intValue)) { + inputValue = intValue; + } + } + return Date.timestamp(inputValue); + }, + // sort: function(val1, val2) { + // } + } + }; + + var DEFAULT_CONFIGS = { + }; + + var DEFAULT_PAGER = { + page: 0, // current page index + recTotal: 0, // records total count + recPerPage: 10, // records count per page + }; + + var DEFAULT_STATES = { + // Fixed columns and rows config + fixedLeftUntil: 0, + // fixedRightFrom: 5, + fixedTopUntil: 0, + // fixedBottomFrom: 5, + + order: 'asc', // desc + + sortBy: null, + + pager: DEFAULT_PAGER, + + selections: {} + }; + + var DEFAULT_SEARCH_FUNC = function(item, searchKeyArr) { + var score = 0; + var searchKeyLength = searchKeyArr.length; + var matchKeysCount = 0, matchKeys = {}; + $.each(item, function(key, value) { + var valueType = typeof value; + if (valueType === 'number' || valueType === 'number') { + value += ''; + } else if (valueType !== 'string') { + value = JSON.stringify(valueType); + } + var keyScore = 0; + for(var i = 0; i < searchKeyLength; ++i) { + var search = searchKeyArr[i]; + if (value.includes(search)) { + if (value.startsWith(search)) { + keyScore = 10; + } else { + keyScore = 20; + } + if (!matchKeys[search]) { + matchKeys[search] = 1; + matchKeysCount++; + } + } + } + score += keyScore; + }); + score = matchKeysCount === searchKeyLength ? score : 0; + return score; + }; + + var DEFAULT_SORT_FUNC = function(val1, val2) { + if (val1 == val2) { + return 0; + } else if (val1 < val2) { + return -1; + } + return 1; + }; + + var LANG = { + zh_cn: { + 'errorCannotGetDataFromRemote': '无法从远程服务器({0})获取数据。', + 'errorCannotHandleRemoteData': '无法处理远程服务器返回的数据。' + }, + zh_tw: { + 'errorCannotGetDataFromRemote': '無法從遠程服務器({0})獲取數據。', + 'errorCannotHandleRemoteData': '無法處理遠程服務器返回的數據。' + }, + en: { + 'errorCannotGetDataFromRemote': 'Cannot fetch data from remote server {0}.', + 'errorCannotHandleRemoteData': 'Cannot handle the remote data.' + } + }; + + // The datagrid modal class + var DataGrid = function(element, options) { + var that = this; + var $element = that.$ = $(element); + that.name = NAME; + that.uuid = $.zui.uuid(); + that.id = 'zui-datagrid-' + that.uuid; + options = $.extend({}, DataGrid.DEFAULTS, that.$.data(), options); + + var lang = options.lang || 'zh_cn'; + that.lang = $.isPlainObject(lang) ? ($.extend(true, {}, LANG[lang.lang || $.zui.clientLang()], lang)) : LANG[lang]; + + options.valueOperator = $.extend({}, DEFAULT_VALUE_OPERATOR, options.valueOperator); + options.rowDefaultHeight = options.rowDefaultHeight || 30; + options.headerHeight = options.headerHeight || options.rowDefaultHeight || 30; + that.options = options; + if (typeof options.borderWidth !== 'number') { + options.borderWidth = 1; + } + + // Initialize + if ($element.is('table')) { + options.dataSource = $.extend(loadDataSourceFromTable(that.$), options.dataSource); + $element.hide(); + $element = $('
            ').insertAfter(that.$); + } + + var $container = $element.find('.datagrid-container:first'); + if (!$container.length) { + $container = $('
            ').appendTo($element); + } + $container.css({ + width: options.width, + borderWidth: options.borderWidth + }); + var $document = $(document); + var createScrollbar = function(direction) { + var $scrollbar = $container.find('.datagrid-scrollbar-' + direction); + if (!$scrollbar.length) { + $scrollbar = $('
            ').appendTo($container); + } + var isMouseDown = false; + var lastPos = null; + var eventSuffix = '.scrollbar' + direction + '.' + NAME + '.' + that.uuid; + var startPagePos, startPageOffset, isClickBar, startScrollOffset; + var handleMousePosition = function(e) { + if (!isMouseDown) return; + var pos = e[direction === 'h' ? 'pageX' : 'pageY']; + if (lastPos === pos) { + return; + } + lastPos = pos; + pos = (pos - startPagePos) + startPageOffset; + var scroll = that.layout[direction + 'Scroll']; + var offset; + if (isClickBar) { + offset = (lastPos - startPagePos) + startScrollOffset; + } else { + offset = Math.max(0, Math.min(scroll.space, pos - Math.round(scroll.barSize/2))); + } + if (direction === 'h') { + that.setScrollbarOffset(offset); + } else { + that.setScrollbarOffset(null, offset); + } + }; + $scrollbar.on('mousedown', function(e) { + e.preventDefault(); + isMouseDown = true; + var scroll = that.layout[direction + 'Scroll']; + var degree = direction === 'h' ? 'X' : 'Y'; + startPageOffset = e['offset' + degree]; + startPagePos = e['page' + degree]; + isClickBar = $(e.target).is('.bar'); + startScrollOffset = scroll.offset; + if (isClickBar) { + startPageOffset += startScrollOffset; + } + handleMousePosition(e); + $scrollbar.addClass('scrolling'); + $document.on('mouseup' + eventSuffix, function(e) { + isMouseDown = false; + handleMousePosition(e); + $document.off(eventSuffix); + $scrollbar.removeClass('scrolling'); + }).on('mousemove' + eventSuffix, handleMousePosition); + }); + that['$' + direction + 'Scroll'] = $scrollbar; + that['$' + direction + 'Scrollbar'] = $scrollbar.find('.bar'); + }; + createScrollbar('h'); + createScrollbar('v'); + var mouseWheelFactor = options.mouseWheelFactor; + var isWindows = window.navigator.userAgent.match(/Win/i); + if (isWindows) mouseWheelFactor *= 20; + $container.on('mousewheel', function(event) { + that.scroll(that.layout.scrollLeft - Math.round(event.deltaX * mouseWheelFactor), that.layout.scrollTop - Math.round(event.deltaY * mouseWheelFactor)); + event.preventDefault(); + }); + + that.$container = $container; + + var $cells = $element.find('.datagrid-cells:first'); + if (!$cells.length) { + $cells = $('
            ').appendTo($container); + } + $cells.toggleClass('datagrid-hover-cell', !!options.hoverCell) + .toggleClass('datagrid-hover-row', !!options.hoverRow) + .toggleClass('datagrid-hover-col', !!options.hoverCol) + .toggleClass('datagrid-hover-shadow', !!options.hoverCol); + that.$cells = $cells; + + // configs is an object + that.isFuncConfigs = $.isFunction(options.configs); + that.configs = that.isFuncConfigs ? options.configs : $.extend({}, DEFAULT_CONFIGS, options.configs); + + that.layout = {scrollLeft: 0, scrollTop: 0}; + that.configsCache = {}; + that.userConfigs = {}; + + // states is 2D arrays + that.states = $.extend(true, {}, DEFAULT_STATES, options.states); + that.cells = []; + that.setPager(that.states.pager); + + that.setDataSource(options.dataSource); + + that.render(true); + + if (options.responsive) { + var lastContainerWidth = $container.width(); + $container.on('resize', function() { + that.layout.cols = null; + that.render(); + }); + } + + if (options.hoverCol) { + $cells.on('mouseenter', '.datagrid-cell-head', function() { + var $headCol = $(this); + var colIndex = $headCol.data('col'); + that.$cells.find('.datagrid-cell.hover').removeClass('hover'); + that.$cells.find('.datagrid-cell[data-col="' + colIndex + '"]').addClass('hover'); + }).on('mouseleave', '.datagrid-cell-head.hover', function() { + that.$cells.find('.datagrid-cell.hover').removeClass('hover'); + }); + } + + if (options.sortable) { + $cells.on('click', '.datagrid-col-sortable', function() { + var colIndex = $(this).data('col'); + var col = that.getColConfig(colIndex); + var sortBy = that.states.sortBy; + var order = that.states.order; + if (sortBy !== col.name) { + sortBy = col.name; + order = 'desc'; + } else if (order === 'desc') { + order = 'asc'; + } else if (order === 'asc') { + sortBy = ''; + } + that.sortBy(sortBy, order); + }); + } + + if (options.checkable) { + if (options.selectable && $.fn.selectable) { + that.selectable = $cells.selectable($.extend({ + selector: '.datagrid-row-cell', + // selectClass: false, + trigger: options.checkByClickRow ? null : '.datagrid-row-cell .datagrid-has-checkbox', + clickBehavior: 'multi', + select: function(data) { + that.checkRow(data.id, true); + }, + unselect: function(data) { + that.checkRow(data.id, false); + } + }, $.isPlainObject(options.selectable) ? options.selectable : null)).data('zui.selectable'); + $cells.on('click', '.datagrid-cell-head.datagrid-has-checkbox', function() { + that.checkRow($(this).data('row')); + that.selectable.syncSelectionsFromClass(); + }); + } else { + $cells.on('click', options.checkByClickRow ? '.datagrid-row' : '.datagrid-has-checkbox', function(e) { + var rowIndex = $(this).data('row'); + if (rowIndex || $(e.target).closest('.datagrid-has-checkbox').length) { + that.checkRow(rowIndex); + } + }); + } + } + + // Init pager + if ($.fn.pager) { + var $pager = that.$.find('.pager'); + if ($pager.length) { + that.pagerObj = $pager.pager($.extend({}, that.pager, { + onPageChange: function(pageInfo) { + that.setPager(pageInfo).render(); + } + })).data('zui.pager'); + } + } + + // Init searchbox + if ($.fn.searchBox) { + var $searchBox = that.$.find('.search-box'); + if($searchBox) { + that.searchbox = $searchBox.searchBox({ + onSearchChange: function (searchString) { + that.search(searchString); + } + }); + } + } + }; + + DataGrid.prototype.setPager = function(page, recTotal, recPerPage) { + var that = this; + if (typeof page === 'object') { + recPerPage = page.recPerPage; + recTotal = page.recTotal; + page = page.page; + } + var pager = that.pager; + var oldPager = $.extend({}, pager); + if (!pager) { + pager = $.extend({}, DEFAULT_PAGER); + } + if (typeof recPerPage === 'number' && recPerPage > 0) { + pager.recPerPage = recPerPage; + } + if (typeof recTotal === 'number' && recTotal >= 0) { + pager.recTotal = recTotal; + } + if (typeof page === 'number' && page >= 0) { + pager.page = page; + } + pager.totalPage = (pager.recTotal && pager.recPerPage) ? (Math.ceil(pager.recTotal / pager.recPerPage)) : 1; + pager.page = Math.max(0, Math.min(pager.page, pager.totalPage)); + // pagerRecCount is items count in current page + pager.pageRecCount = pager.recTotal; + if (pager.page && pager.recTotal) { + if (pager.page < pager.totalPage) { + pager.pageRecCount = pager.recPerPage; + } else if (pager.page > 1) { + pager.pageRecCount = pager.recTotal - (pager.recPerPage * (pager.page - 1)); + } + } + pager.skip = pager.page > 1 ? ((pager.page - 1) * pager.recPerPage) : 0; + pager.end = pager.skip + pager.pageRecCount; + that.pager = pager; + + if (oldPager.page !== pager.page || oldPager.recTotal !== pager.recTotal || oldPager.recPerPage !== pager.recPerPage) { + that.layout.cols = null; + that.scroll(0, 0); + } + return that; + }; + + DataGrid.prototype.goToPage = function(page) { + return this.setPager(page).render(); + }; + + DataGrid.prototype.setSearch = function(searchStr) { + if (searchStr === undefined || searchStr === null) { + searchStr = ''; + } + this.states.search = $.trim(searchStr); + return this; + }; + + DataGrid.prototype.search = function(searchStr) { + var that = this; + if (searchStr !== that.states.search && that.pager.page) { + that.setPager(1); + } + return that.setSearch(searchStr).render(); + }; + + DataGrid.prototype.setSorter = function(sortBy, order) { + var that = this; + if (order === undefined) { + order = that.states.order === 'desc' ? 'asc' : 'desc'; + } + that.states.order = order.toLowerCase(); + that.states.sortBy = sortBy; + return that; + }; + + DataGrid.prototype.sortBy = function(sortBy, order) { + return this.setSorter(sortBy, order).render(); + }; + + DataGrid.prototype.setDataSource = function(data, cols) { + var that = this; + var dataSource = {}; + var oldcols = that.dataSource && that.dataSource.cols; + if ($.isArray(data)) { + dataSource.array = data; + dataSource.length = data.length; + that.setPager('', data.length); + } else if ($.isPlainObject(data)) { + dataSource = $.extend(dataSource, data); + } else if (typeof data === 'string') { + dataSource.remote = data; + } + if (dataSource.cache === true || dataSource.cache === undefined) { + dataSource.cache = []; + dataSource.cacheSize = 1; + } else if (typeof dataSource.cache === 'number') { + dataSource.cacheSize = dataSource.cache; + dataSource.cache = []; + } + if ($.isArray(dataSource.data)) { + dataSource.array = dataSource.data; + dataSource.length = dataSource.array.length; + that.setPager('', dataSource.length); + delete dataSource.data; + } else if (!dataSource.data && $.isFunction(dataSource.getByIndex)) { + that.setPager('', dataSource.length); + } + that.dataSource = dataSource; + + cols = cols || dataSource.cols || oldcols || []; + if (cols.length) { + for (var i = 0; i < cols.length; ++i) { + var col = cols[i]; + if (typeof col === 'string') { + cols[i] = {name: col}; + } + } + } + if (cols !== oldcols) { + that.layout.cols = null; + } + dataSource.cols = cols; + }; + + DataGrid.prototype.filterData = function(arr, filter) { + var that = this; + var result = arr; + var hasSearchScore = null; + if (filter.search) { + var searchKeyArr = filter.search.replace(/\s{2,}/g, ' ').split(' '); + result = []; + var searchFunc = that.options.searchFunc || DEFAULT_SEARCH_FUNC; + for (var i = 0; i < arr.length; ++i) { + var item = arr[i]; + var score = searchFunc(item, searchKeyArr, i, filter, that); + if (score) { + if (hasSearchScore === null) { + hasSearchScore = typeof score === 'number'; + } + if (hasSearchScore) { + item._SCORE = score; + } + result.push(item); + } + } + } + + that.setPager(-1, result.length); + + if (result.length) { + var sortBy = filter.sortBy || (hasSearchScore ? '_SCORE' : false); + if (sortBy) { + var order = sortBy === '_SCORE' ? 'DESC' : filter.order; + var colConfig = that.getColConfigByName(sortBy); + var isDESC = order === 'desc'; + var sortFunc = (colConfig && colConfig.sortFunc) || that.options.sortFunc || DEFAULT_SORT_FUNC; + result.sort(function(item1, item2) { + var sortResult = sortFunc(item1[sortBy], item2[sortBy], item1, item2, sortBy, that); + return isDESC ? ((-1) * sortResult) : sortResult; + }); + } + + var pager = that.pager; + if (pager.page) { + var start = pager.page > 1 ? (pager.page * pager.recPerPage) : 0; + result = result.slice(pager.skip, pager.end); + } + } + + return result; + }; + + DataGrid.prototype.getFilterParams = function() { + var that = this; + var states = that.states; + return { + page: that.pager.page, + recPerPage: that.pager.recPerPage, + search: states.search, + sortBy: states.sortBy, + order: states.order + }; + }; + + DataGrid.prototype.loadData = function(callback) { + var that = this; + that.loadingId = $.zui.uuid(); + + var afterLoad = function(result) { + that.$.callComEvent(that, 'onLoad', result); + return callback && callback(result); + }; + + var params = that.getFilterParams(); + var dataId = [params.page, params.recPerPage, params.search, params.sortBy, params.order].join('&'); + var data = that.getData(dataId); + + if (data) { + return afterLoad(data); + } + var dataSource = that.dataSource; + if (dataSource.array) { + data = that.filterData(dataSource.array, params); + that.resetData(dataId, data, that.pager); + return afterLoad(data); + } else if (dataSource.getByIndex) { + data = dataSource.getByIndex; + that.resetData(dataId, data); + return afterLoad(data); + } else { + var loadData = dataSource.loader; + var remote = dataSource.remote; + if (!loadData && remote) { + loadData = function(params, onFinish) { + var ajaxOptions = $.isFunction(remote) ? remote(params, that) : {url: remote}; + $.ajax($.extend({ + type: 'GET', + data: params, + dataType: 'json', + success: function(responseData, textStatus, jqXHR) { + if (dataSource.remoteConverter) { + responseData = dataSource.remoteConverter(responseData, textStatus, jqXHR, that); + } + if (typeof responseData === 'string') { + responseData = $.parseJSON(responseData); + } + if ($.isPlainObject(responseData) && responseData.data) { + var result = responseData.result || responseData.status; + if (result === 'success' || result === 'ok' || result === 200) { + onFinish(responseData); + } else { + onFinish(false, responseData.message || responseData.reason || that.lang['errorCannotHandleRemoteData'], responseData); + } + } else { + onFinish(false, that.lang['errorCannotHandleRemoteData'], responseData); + } + }, + error: function() { + onFinish(false, that.lang['errorCannotGetDataFromRemote'].format(dataSource.remote)); + }, + }, ajaxOptions)); + }; + } + if (loadData) { + that.renderLoading(true); + var loadingId = that.loadingId; + loadData(params, function(resultData, error) { + if (loadingId !== that.loadingId) { + return; + } + that.renderLoading(false); + if (error) { + that.showMessage(error, 'danger'); + afterLoad(false); + return; + } + that.resetData(dataId, resultData.data, resultData.pager); + afterLoad(resultData.data); + }); + } else { + return afterLoad(false); + } + } + }; + + DataGrid.prototype.getDataItem = function(index, data, filterParams) { + var that = this; + data = data || that.getData(); + if (typeof data === 'function') { + filterParams = filterParams || that.getFilterParams(); + return data(index, filterParams); + } + return data[index]; + }; + + DataGrid.prototype.showMessage = function(message, type, autoCloseTime) { + var that = this; + if (that.msgerAutoCloseTimer) { + clearTimeout(that.msgerAutoCloseTimer); + that.msgerAutoCloseTimer = null; + } + var $messager = that.$container.find('.datagrid-messager'); + if (!message) { + $messager.slideUp(); + return; + } + type = type || 'info'; + if (autoCloseTime === undefined) { + autoCloseTime = 5000; + } + if (!$messager.length) { + $messager = $('').appendTo(that.$container).on('click', '.close', function() { + $messager.slideUp(); + if (that.msgerAutoCloseTimer) { + clearTimeout(that.msgerAutoCloseTimer); + that.msgerAutoCloseTimer = null; + } + }); + } + $messager.attr('class', 'datagrid-messager bg-' + type).find('.content').text(message); + $messager.slideDown(); + if (autoCloseTime) { + that.msgerAutoCloseTimer = setTimeout(function() { + $messager.slideUp(); + that.msgerAutoCloseTimer = null; + }, autoCloseTime); + } + }; + + DataGrid.prototype.renderLoading = function(loading) { + var that = this; + if (loading !== undefined) { + that.states.loading = loading; + } + var $loading = that.$container.find('.datagrid-loading'); + if (loading) { + if (!$loading.length) { + $loading = $('').appendTo(that.$container); + } + $loading.find('.datagrid-loading-message').text((typeof loading === 'string') ? loading : ''); + $loading.fadeIn(); + } else { + $loading.fadeOut(); + } + }; + + DataGrid.prototype.getData = function(dataId) { + var dataSource = this.dataSource; + var data = null; + if (dataId && dataId !== dataSource.dataId) { + if (dataSource.cache && dataSource.cache.length) { + for (var i = dataSource.cache.length - 1; i >= 0; --i) { + var dataCache = dataSource.cache[i]; + if (dataCache.id === dataId) { + dataSource.dataId = dataId; + dataSource.data = dataCache.data; + this.setPager(dataCache.pager); + data = dataCache.data; + break; + } + } + } + } else { + data = dataSource.data; + } + return data; + }; + + DataGrid.prototype.resetData = function(dataId, data, pager) { + var dataSource = this.dataSource; + dataSource.dataId = dataId; + dataSource.data = data; + if (dataSource.cache) { + for (var i = dataSource.cache.length - 1; i > 0; --i) { + var dataCache = dataSource.cache[i]; + if (dataCache.id === dataId) { + dataSource.cache.splice(i, 1); + break; + } + } + dataSource.cache.push({ + id: dataId, + data: data, + pager: $.extend({}, pager) + }); + while (dataSource.cache.length > dataSource.cacheSize) { + dataSource.cache.shift(); + } + } + if (pager) { + this.setPager(pager); + } + }; + + DataGrid.prototype.getRowLayout = function(rowIndex) { + var layout = this.layout; + if (rowIndex === 0) { + return { + top: 0, + height: layout.headerHeight + }; + } + var rowHeight = layout.rowHeight; + return { + height: rowHeight, + top: layout.headerHeight + (rowIndex > 1 ? ((rowIndex - 1) * rowHeight) : 0) + rowIndex * layout.borderWidth + }; + }; + + DataGrid.prototype.updateLayout = function() { + var that = this; + var options = that.options; + var layout = that.layout; + var data = that.data; + var pager = that.pager; + var dataLength = pager.pageRecCount; + var $container = that.$container; + var containerWidth = $container.width(); + var dataSource = that.dataSource; + + if (!dataSource.cols.length && dataLength) { + $.each(that.getDataItem(0), function(name) { + dataSource.cols.push({ + name: name + }); + }); + } + + // Caculate cols layout + if (!layout.cols) { + var cols = dataSource.cols; + var colAutoMinWidth = options.colAutoMinWidth; + var colAutoDefaultWidth = options.colAutoDefaultWidth; + var growTotal = 0; + var minGrowWidth = 0; + var rowIndexWidth = options.rowIndexWidth; + var colsLayout = [{ + left: 0, + width: options.showRowIndex ? (rowIndexWidth === 'auto' ? ((dataLength + that.pager.skip + '').length * 8 + 18) : rowIndexWidth) : 0 + }]; + var cellsTotalWidth = 0; + var fixedWidth = colsLayout[0].width; + var lastGrowColIndex = false; + var lastMaxGrow = 0; + var checkBoxColIndex = 0; + var colLayout, colWidth; + + for (var i = 0; i < cols.length; ++i) { + var col = cols[i]; + if (!col) continue; + colWidth = col.width; + if (!colWidth || colWidth === 'auto') { + colWidth = 0.1; + } + colLayout = {left: 0}; + if (colWidth >= 1) { + if (col.minWidth !== undefined) { + colWidth = Math.max(colWidth, col.minWidth); + } + colLayout.width = colWidth; + fixedWidth += colWidth; + } else { + if (col.minWidth === undefined) { + col.minWidth = colAutoMinWidth; + } + colLayout.grow = colWidth; + growTotal += colWidth; + minGrowWidth += col.minWidth; + if (lastMaxGrow <= colLayout.grow) { + lastMaxGrow = colLayout.grow; + lastGrowColIndex = i + 1; + } + } + colLayout.minWidth = col.minWidth; + if (!checkBoxColIndex && col.checkbox) { + checkBoxColIndex = i + 1; + colLayout.checkbox = true; + } + colsLayout.push(colLayout); + } + if (options.checkable && !checkBoxColIndex) { + colsLayout[0].checkbox = true; + if (rowIndexWidth === 'auto') { + colsLayout[0].width += 30; + fixedWidth += 30; + } + } + var flexWidth = containerWidth - fixedWidth; + var autoOverflow = flexWidth < minGrowWidth; + var colsLenght = colsLayout.length; + for (var j = 0; j < colsLenght; ++j) { + colLayout = colsLayout[j]; + colWidth = colLayout.width; + if (!colWidth && colWidth !== 0) { + if (autoOverflow) { + colWidth = colAutoDefaultWidth * colLayout.grow * 10; + } else { + colWidth = flexWidth * colLayout.grow / growTotal; + } + colWidth = Math.floor(Math.max(colLayout.minWidth, colWidth)); + colLayout.width = colWidth; + } + if (j > 0) { + var lastColLayout = colsLayout[j - 1]; + colLayout.left = lastColLayout.left + lastColLayout.width; + } + cellsTotalWidth += colWidth; + } + + var extraGap = containerWidth - cellsTotalWidth; + if (lastGrowColIndex && extraGap > 0) { + colsLayout[lastGrowColIndex].width += extraGap; + cellsTotalWidth += extraGap; + } + layout.width = cellsTotalWidth; + layout.cols = colsLayout; + } + + layout.containerWidth = containerWidth; + layout.rowHeight = options.rowDefaultHeight; + layout.borderWidth = options.borderWidth; + layout.headerHeight = options.showHeader ? (options.headerHeight) : 0; + layout.rowsLength = dataLength + 1; + layout.colsLength = layout.cols.length; + layout.height = layout.headerHeight + dataLength * (layout.rowHeight + layout.borderWidth); + layout.spanMap = {}; + + var containerHeight = options.height; + if (containerHeight === 'page') { + containerHeight = layout.headerHeight + that.pager.recPerPage * (layout.rowHeight + layout.borderWidth); + } + $container.css('height', containerHeight); + layout.containerHeight = containerHeight; + + layout.vScrollSpare = layout.height - layout.containerHeight; + layout.hScrollSpare = layout.width - layout.containerWidth; + + that.layout = layout; + + var partialRendering = pager.page ? true : options.partialRendering; + if (partialRendering === 'auto') { + partialRendering = layout.height > (2 * layout.containerHeight); + } + layout.partialRendering = partialRendering; + return layout; + }; + + DataGrid.prototype.getCell = function(rowIndex, colIndex) { + var that = this; + var config = that.getCellConfig(rowIndex, colIndex); + var col = colIndex > 0 ? that.dataSource.cols[colIndex - 1] : null; + var type, value; + var cell = { + rowIndex: rowIndex, + colIndex: colIndex, + config: config, + checked: that.isRowChecked(config.rowId) + }; + if (colIndex === 0) { + type = 'index'; + var colLabel = rowIndex > 0 ? (that.pager.skip + rowIndex) : ''; + value = config.label !== undefined ? config.label : colLabel; + } else if (rowIndex === 0) { + type = 'head'; + value = config.label !== undefined ? config.label : (config.name !== undefined ? config.name : colIndex); + } else { + type = 'cell'; + value = config.data && config.data[that.options.dataItemIsArray ? colIndex : col.name]; + } + if (rowIndex > 0) { + var optionsValueOperator = that.options.valueOperator; + var valueType = config.valueType; + var valueOperator = config.valueOperator || (optionsValueOperator && valueType ? optionsValueOperator[valueType] : null); + if (valueOperator && valueOperator.getter) { + value = valueOperator.getter(value, cell, that); + } + } + cell.value = value; + cell.type = type; + var spanMap = that.layout.spanMap; + if (spanMap[config.id] || config.hidden) { + cell.hidden = true; + } else if ((config.colspan && config.colspan > 1) || (config.rowspan && config.rowspan > 1)) { + var rowSpanEnd = rowIndex + (config.rowspan || 1); + var colSpanEnd = colIndex + (config.colspan || 1); + for (var r = rowIndex; r < rowSpanEnd; ++r) { + for (var c = colIndex; c < colSpanEnd; ++c) { + if (r !== rowIndex || c !== colIndex) { + spanMap['R' + r + 'C' + c] = config.id; + } + } + } + config.span = true; + } + return cell; + }; + + DataGrid.prototype.getRowConfig = function(rowIndex) { + var that = this; + var rowId = 'R' + rowIndex; + var config = that.configsCache[rowId]; + if (!config) { + config = $.extend({ + // height: 'auto' + // fixed: false + }, that.isFuncConfigs ? that.configs(rowId) : that.configs[rowId], that.userConfigs[rowId]); + that.configsCache[rowId] = config; + } + var dataItem = rowIndex > 0 ? that.getDataItem(rowIndex - 1) : null; + config.data = dataItem; + var rowId = dataItem && (dataItem.rowId || dataItem.id); + config.rowId = rowId !== undefined ? rowId : (rowIndex === 0 ? '#header' : rowIndex); + return config; + }; + + DataGrid.prototype.getColConfigByName = function(colName) { + var cols = this.dataSource.cols; + for (var i = 0; i < cols.length; ++i) { + if (cols[i].name === colName) { + return this.getColConfig(i + 1); + } + } + return null; + }; + + DataGrid.prototype.getColConfig = function(colIndex) { + var that = this; + var colId = 'C' + colIndex; + // var config = that.configsCache[colId]; + var config = null; + if (!config) { + config = $.extend( + { + // html: false, + // style: null, + // className: '', + // valueOperator: null, + // sortFunc + valueType: 'string' + }, + colIndex > 0 ? that.dataSource.cols[colIndex - 1] : null, + that.layout.cols ? that.layout.cols[colIndex] : null, + that.isFuncConfigs ? that.configs(colId) : that.configs[colId], + that.userConfigs[colId] + ); + // that.configsCache[colId] = config; + } + return config; + }; + + DataGrid.prototype.getCellConfig = function(rowIndex, colIndex) { + var that = this; + var cellId = 'R' + rowIndex + 'C' + colIndex; + // var config = that.configsCache[cellId]; + var config = null; + if (!config) { + config = $.extend( + {id: cellId}, + that.getColConfig(colIndex), + that.getRowConfig(rowIndex), + that.isFuncConfigs ? that.configs(cellId) : that.configs[cellId], + that.userConfigs[cellId] + ); + // that.configsCache[cellId] = config; + } + return config; + }; + + DataGrid.prototype.isRowChecked = function(rowId) { + return !!this.states.selections[rowId]; + }; + + DataGrid.prototype.checkRow = function(rowIndex, checked) { + var that = this; + var selections = that.states.selections; + var rowConfig = that.getRowConfig(rowIndex); + var rowId = rowConfig.rowId; + if (checked === undefined) { + checked = !selections[rowId]; + } + if (selections[rowId] === checked) { + return; + } + if (checked) { + selections[rowId] = rowConfig; + } else { + delete selections[rowId]; + if (rowIndex > 0 && selections['#header']) { + delete selections['#header']; + that.renderRow(0); + } + } + that.renderRow(rowIndex); + if (rowIndex === 0 && that.layout.rowsLength < 500) { + for (var i = 1; i < that.layout.rowsLength; ++i) { + that.checkRow(i, checked); + } + } + that.renderFixeds(); + return checked; + }; + + DataGrid.prototype.getCheckItems = function() { + var selections = this.states.selections; + var items = []; + selections && $.each(selections, function(rowId) { + items.push(selections[rowId].data); + }); + return items; + }; + + DataGrid.prototype.renderCell = function(rowIndex, colIndex, $row) { + var that = this; + var options = that.options; + var cell = that.getCell(rowIndex, colIndex); + var config = cell.config; + + if (cell.hidden) { + return; + } + + var isCheckbox = config.checkbox; + var elementId = [that.id, 'cell', rowIndex, colIndex].join('-'); + var $cell = $('#' + elementId); + if (!$cell.length) { + $row = $row || $('#' + that.id + '-row-' + rowIndex); + $cell = (options.cellCreator ? options.cellCreator(cell, that) : $('
            ')).appendTo($row); + $cell.attr({ + id: elementId, + 'data-type': cell.type, + 'data-col': cell.colIndex, + 'data-row': cell.rowIndex + }).toggleClass('datagrid-cell-head', rowIndex === 0) + .toggleClass('datagrid-cell-cell', cell.type === 'cell') + .toggleClass('datagrid-cell-index', colIndex === 0); + + if (isCheckbox) { + var $checkbox = $cell.find('.datagrid-checkbox'); + if (!$checkbox.length) { + $checkbox = $('
            ').prependTo($cell.addClass('datagrid-has-checkbox')); + } + $cell.append(''); + } + } + + // Caculate cell style + var borderWidth = options.borderWidth; + var layout = that.layout; + var colsLength = layout.colsLength; + var cellBoundsStyle = { + top: borderWidth ? -borderWidth : 0, + bottom: borderWidth ? -borderWidth : 0, + left: borderWidth ? (config.left - borderWidth) : config.left, + width: borderWidth ? (config.width + ((colsLength - 1) === colIndex ? 2 : 1) * borderWidth) : config.width, + borderWidth: borderWidth + }; + if (config.span) { + if (config.rowspan && config.rowspan > 1) { + cellBoundsStyle.bottom -= (config.rowspan - 1) * (layout.rowHeight + borderWidth); + } + if (config.colspan && config.colspan > 1) { + var colspanEnd = colIndex + config.colspan; + for (var i = colIndex + 1; i < colspanEnd; ++i) { + var theSpanCell = that.getCell(rowIndex, i); + cellBoundsStyle.width += theSpanCell.config.width; + } + } + } + var configStyle = config.style; + if ($.isFunction(configStyle)) { + configStyle = configStyle(cell, cellBoundsStyle, that); + } + var style = $.extend({}, configStyle, cellBoundsStyle); + $cell.css(style).toggleClass('datagrid-cell-span', !!config.span); + + if (options.cellFormator) { + options.cellFormator($cell, cell, that); + } else { + var $content = isCheckbox ? $cell.find('.content') : $cell; + $content[cell.config.html ? 'html' : 'text'](cell.value); + if (config.className) { + $cell.addClass(config.className); + } + } + + if (colIndex > 0 && rowIndex === 0 && options.sortable && config.sort !== false) { + var sorted = false; + if (config.name === that.states.sortBy) { + sorted = that.states.order === 'desc' ? 'down' : 'up'; + } + var $sorter = $cell.find('.datagrid-sorter'); + if (!$sorter.length) { + $sorter = $('
            ').appendTo($cell); + $cell.addClass('datagrid-col-sortable'); + } + $sorter.toggleClass('datagrid-sort-up', sorted === 'up') + .toggleClass('datagrid-sort-down', sorted === 'down'); + } + + if (isCheckbox) { + $cell.find('.datagrid-checkbox').toggleClass('checked', cell.checked); + $row.toggleClass('active', cell.checked); + } + return $cell; + }; + + DataGrid.prototype.renderRow = function(rowIndex) { + var that = this; + var layout = that.layout; + var options = that.options; + var rowLayout = that.getRowLayout(rowIndex); + var colsLength = layout.colsLength; + var elementId = that.id + '-row-' + rowIndex; + var $row = $('#' + elementId); + if (!$row.length) { + $row = (options.rowCreator ? options.rowCreator(rowIndex, that) : $('
            ')).appendTo(that.$cells); + $row.attr({ + id: elementId, + 'data-row': rowIndex, + 'data-id': rowIndex + }).css({ + top: layout.partialRendering ? (rowLayout.top - layout.scrollTop) : rowLayout.top, + height: rowLayout.height + }).toggleClass('datagrid-row-head', rowIndex === 0) + .toggleClass('datagrid-row-cell', rowIndex !== 0); + } else if(layout.partialRendering) { + $row.css('top', rowLayout.top - layout.scrollTop); + } + for (var i = 0; i < colsLength; ++i) { + that.renderCell(rowIndex, i, $row); + } + return $row; + }; + + DataGrid.prototype.renderData = function() { + var that = this; + var layout = that.layout; + + if (!layout.cols) { + that.updateLayout(); + } + + var startRenderRow = 1; + var endRenderRow = layout.rowsLength - 1; + if (layout.partialRendering) { + var rowHeight = layout.rowHeight + layout.borderWidth; + startRenderRow = Math.min(endRenderRow, Math.max(1, Math.floor((layout.scrollTop - layout.headerHeight)/rowHeight))); + endRenderRow = Math.min(endRenderRow, Math.max(1, Math.ceil((layout.scrollTop + layout.containerHeight - layout.headerHeight)/rowHeight))); + that.$cells.find('.datagrid-row').each(function() { + var $row = $(this); + var rowIndex = $row.data('row'); + if (rowIndex > 0 && !$row.hasClass('datagrid-fixed') && (rowIndex < startRenderRow || rowIndex > endRenderRow)) { + $row.remove(); + } + }); + } + + // Render header + if (that.options.showHeader) { + that.renderRow(0); + } + + for (var i = startRenderRow; i <= endRenderRow; ++i) { + that.renderRow(i); + } + + if (layout.vScrollSpare) { + var states = that.states; + var fixedTopUntil = states.fixedTopUntil; + var fixedBottomFrom = states.fixedBottomFrom; + if (typeof fixedTopUntil === 'number' && fixedTopUntil > 0 && fixedTopUntil < startRenderRow) { + for (var i = 1; i <= fixedTopUntil; ++i) { + that.renderRow(i); + } + } + if (typeof fixedBottomFrom === 'number' && fixedBottomFrom > 0 && fixedBottomFrom > endRenderRow) { + for (var i = fixedBottomFrom; i <= (layout.rowsLength - 1); ++i) { + that.renderRow(i); + } + } + } + + if (that.pagerObj) { + that.pagerObj.set(that.pager); + } + }; + + DataGrid.prototype.render = function(ignoreDelay) { + var that = this; + var options = that.options; + + if (!ignoreDelay && options.renderDelay) { + if (that.renderDelayTimer) { + clearTimeout(that.renderDelayTimer); + } + that.renderDelayTimer = setTimeout(function() { + that.render(true); + }, options.renderDelay); + return that; + } + + if (that.renderDelayTimer) { + clearTimeout(that.renderDelayTimer); + that.renderDelayTimer = null; + } + + that.loadData(function(data) { + var layout = that.updateLayout(); + + that.$cells.css({ + width: layout.width, + height: layout.partialRendering ? layout.containerHeight : that.layout.height + }); + + // Render rows + that.renderData(); + + // Render scrollbars + that.renderScrolls(); + + that.renderFixeds(); + + that.$.callComEvent(that, 'onRender'); + }); + + return that; + }; + + DataGrid.prototype.setScrollbarOffset = function(offsetX, offsetY) { + var that = this; + var layout = that.layout; + var scrollLeft = layout.scrollLeft; + var scrollTop = layout.scrollTop; + if (typeof offsetX === 'number') { + var hScroll = layout.hScroll; + if (hScroll.offset !== offsetX) { + scrollLeft = Math.round(offsetX * layout.hScrollSpare / hScroll.space); + } + } + if (typeof offsetY === 'number') { + var vScroll = layout.vScroll; + if (vScroll.offset !== offsetY) { + scrollTop = Math.round(offsetY * layout.vScrollSpare / vScroll.space); + } + } + that.scroll(scrollLeft, scrollTop); + }; + + DataGrid.prototype.renderScrolls = function() { + var that = this; + var layout = that.layout; + var vSize = layout.vScrollSpare; + var hSize = layout.hScrollSpare; + var showVBar = vSize > 0; + var showHBar = hSize > 0; + that.$vScroll.toggle(showVBar); + that.$hScroll.toggle(showHBar); + layout.scrollLeft = showHBar ? Math.max(0, Math.min(hSize, layout.scrollLeft)) : 0; + layout.scrollTop = showVBar ? Math.max(0, Math.min(vSize, layout.scrollTop)) : 0; + if (showVBar) { + var $bar = that.$vScrollbar; + var scale = layout.containerHeight / layout.height; + var barSize = Math.max(20, Math.floor(scale * layout.containerHeight)); + var scrollSpace = layout.containerHeight - barSize; + var scrollScale = scrollSpace / vSize; + var offset = Math.round(layout.scrollTop * scrollScale); + layout.vScroll = { + space: scrollSpace, + size: vSize, + scale: scrollScale, + barSize: barSize, + offset: offset + }; + var barStyle = { + height: barSize, + top: offset + }; + $bar.css(barStyle); + } + if (showHBar) { + var $bar = that.$hScrollbar; + var scale = layout.containerWidth / layout.width; + var barSize = Math.max(20, Math.floor(scale * layout.containerWidth)); + var scrollSpace = layout.containerWidth - barSize; + var offset = Math.round(layout.scrollLeft * scrollSpace / hSize); + var barStyle = { + width: barSize, + left: offset + }; + layout.hScroll = { + offset: offset, + space: scrollSpace, + size: hSize, + barSize: barSize + }; + $bar.css(barStyle); + } + that.$cells.css({ + top: layout.partialRendering ? 0 : -layout.scrollTop, + left: -layout.scrollLeft + }); + }; + + DataGrid.prototype.scroll = function(scrollLeft, scrollTop, ignoreDelay) { + var that = this; + var now = new Date(); + var scrollDelay = that.options.scrollDelay; + if (scrollDelay) { + if (!ignoreDelay && that.lastScrollTime && (now - that.lastScrollTime) < scrollDelay) { + if (that.scrollDelayTimer) { + clearTimeout(that.scrollDelayTimer); + } + that.scrollDelayTimer = setTimeout(function() { + that.scroll(scrollLeft, scrollTop); + }, (scrollDelay - ((now - that.lastScrollTime)))); + + return; + } + if (that.scrollDelayTimer) { + clearTimeout(that.scrollDelayTimer); + that.scrollDelayTimer = null; + } + that.lastScrollTime = now; + } + var layout = that.layout; + var hScrolled = false, vScrolled = false; + if (typeof scrollLeft === 'number') { + scrollLeft = Math.max(0, Math.min(scrollLeft, layout.width - layout.containerWidth)); + if (scrollLeft !== layout.scrollLeft) { + hScrolled = true; + layout.scrollLeft = scrollLeft; + } + } + if (typeof scrollTop === 'number') { + scrollTop = Math.max(0, Math.min(scrollTop, layout.height - layout.containerHeight)); + if (scrollTop !== layout.scrollTop) { + vScrolled = true; + layout.scrollTop = scrollTop; + } + } + + if (vScrolled && layout.partialRendering) { + that.renderData(); + } + + if (hScrolled || vScrolled) { + that.renderScrolls(); + that.renderFixeds(); + } + + that.$.callComEvent(that, 'onScroll', [scrollLeft, scrollTop, {vScrolled: vScrolled, hScrolled: hScrolled}]); + }; + + DataGrid.prototype.renderFixeds = function() { + var that = this; + var states = that.states; + var layout = that.layout; + + that.$cells.find('.datagrid-fixed').removeClass('datagrid-fixed'); + that.$cells.find('.datagrid-fixed-edge-top').removeClass('datagrid-fixed-edge-top'); + that.$cells.find('.datagrid-fixed-edge-bottom').removeClass('datagrid-fixed-edge-bottom'); + that.$cells.find('.datagrid-fixed-edge-left').removeClass('datagrid-fixed-edge-left'); + that.$cells.find('.datagrid-fixed-edge-right').removeClass('datagrid-fixed-edge-right'); + + if (layout.vScrollSpare) { + var fixedTopUntil = states.fixedTopUntil; + if (typeof fixedTopUntil === 'number' && fixedTopUntil > -1) { + fixedTopUntil = Math.min(fixedTopUntil, layout.rowsLength); + for (var i = 0; i <= fixedTopUntil; ++i) { + var rowLayout = that.getRowLayout(i); + var $row = $('#' + that.id + '-row-' + i); + var fixedTop = layout.partialRendering ? rowLayout.top : (rowLayout.top + layout.scrollTop); + $row.addClass('datagrid-fixed').css('top', fixedTop); + if (i === fixedTopUntil && layout.scrollTop) { + $row.addClass('datagrid-fixed-edge-top'); + } + } + } else { + fixedTopUntil = -1; + } + var fixedBottomFrom = states.fixedBottomFrom; + if (typeof fixedBottomFrom === 'number' && fixedBottomFrom > -1) { + fixedBottomFrom = Math.max(fixedTopUntil > -1 ? (fixedTopUntil + 1) : 1, Math.min(fixedBottomFrom, layout.rowsLength)); + for (var i = fixedBottomFrom; i < layout.rowsLength; ++i) { + var rowLayout = that.getRowLayout(i); + var $row = $('#' + that.id + '-row-' + i); + var fixedTop = layout.partialRendering ? (rowLayout.top - layout.vScrollSpare) : (rowLayout.top - layout.vScrollSpare + layout.scrollTop); + $row.addClass('datagrid-fixed').css('top', fixedTop); + if (i === fixedBottomFrom && layout.scrollTop < layout.vScrollSpare) { + $row.addClass('datagrid-fixed-edge-bottom'); + } + } + } + } + + if (layout.hScrollSpare) { + var fixedLeftUntil = states.fixedLeftUntil; + if (typeof fixedLeftUntil === 'number' && fixedLeftUntil > -1) { + fixedLeftUntil = Math.min(fixedLeftUntil, layout.colsLength); + for (var i = 0; i <= fixedLeftUntil; ++i) { + var colLayout = layout.cols[i]; + var $cols = that.$cells.find('.datagrid-cell[data-col="' + i + '"]'); + var fixedLeft = colLayout.left + layout.scrollLeft - layout.borderWidth; + $cols.addClass('datagrid-fixed').css('left', fixedLeft); + if (i === fixedLeftUntil && layout.scrollLeft) { + $cols.addClass('datagrid-fixed-edge-left'); + } + } + } else { + fixedLeftUntil = -1; + } + var fixedRightFrom = states.fixedRightFrom; + if (typeof fixedRightFrom === 'number' && fixedRightFrom > -1) { + fixedRightFrom = Math.max(fixedLeftUntil > -1 ? (fixedLeftUntil + 1) : 1, Math.min(fixedRightFrom, layout.colsLength)); + for (var i = fixedRightFrom; i < layout.colsLength; ++i) { + var colLayout = layout.cols[i]; + var $cols = that.$cells.find('.datagrid-cell[data-col="' + i + '"]'); + var fixedLeft = colLayout.left - layout.hScrollSpare + layout.scrollLeft; + $cols.addClass('datagrid-fixed').css('left', fixedLeft); + if (i === fixedRightFrom && layout.scrollLeft < layout.hScrollSpare) { + $cols.addClass('datagrid-fixed-edge-right'); + } + } + } + } + }; + + // default options + DataGrid.DEFAULTS = { + // The data grid width, if set 'auto', then use the container element width + width: 'auto', + + // The data grid height, if set 'page', then use the page height + height: 400, + + // The init data, require an object array + // dataSource: null, + + // The cells configurations + // configs: null, + + // The cells default states + // states: null, + + // Cell default height + rowDefaultHeight: 36, + + // Column default width + colAutoDefaultWidth: 80, + + // Column min width + colAutoMinWidth: 50, + + // Show cells header + showHeader: true, + + // Cells header height + headerHeight: 36, + + // Show row index number + showRowIndex: true, + + // Row index width + rowIndexWidth: 'auto', + + // Create cell element + // cellCreator: null, + + // Format cell element + // cellFormator: null, + + // Row creator + // rowCreator: null, + + // Border width (px) + borderWidth: 1, + + // Use row hover effection + hoverRow: true, + + // Use column hover effection + hoverCol: true, + + // Use cell hover effection + hoverCell: false, + + // Relayout on container resize + responsive: true, + + // Value operator + // valueOperator: null, + + // Default date formater + defaultDateFormater: 'yyyy-MM-dd hh:mm', + + // Partial rendering can show large amount data in high efficiency + partialRendering: 'auto', + + // Scroll event trigger delay time + scrollDelay: 0, + + // Delay render time + renderDelay: 100, + + // On user scroll list + // onScroll: null, + + // On render datagrid + // onRender: null, + + // Search filter function + // searchFunc: null, + + // Sort function + // sortFunc: null, + + // Sort by click column headers + // sortable: false, + + // Show checkboxes and let user select a row + // checkable: false, + + // Let user check by click row + checkByClickRow: true, + + // Let user check rows by drag + selectable: true, + + mouseWheelFactor: 1, + }; + + // Extense jquery element + $.fn.datagrid = function(option) { + return this.each(function() { + var $this = $(this); + var data = $this.data(NAME); + var options = typeof option == 'object' && option; + + if(!data) $this.data(NAME, (data = new DataGrid(this, options))); + + if(typeof option == 'string') data[option](); + }); + }; + + DataGrid.NAME = NAME; + + $.fn.datagrid.Constructor = DataGrid; + + // Auto call datagrid after document load complete + $(function() { + $('[data-ride="datagrid"]').datagrid(); + }); +}(jQuery, undefined)); + diff --git a/root/res/zui/lib/datagrid/zui.datagrid.min.css b/root/res/zui/lib/datagrid/zui.datagrid.min.css new file mode 100644 index 0000000..9d40209 --- /dev/null +++ b/root/res/zui/lib/datagrid/zui.datagrid.min.css @@ -0,0 +1,6 @@ +/*! + * ZUI: 数据表格② - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */.datagrid-container{position:relative;overflow:hidden;background-color:#f1f1f1;border:1px solid #ddd}.datagrid-cells{position:absolute;top:0;left:0;overflow:visible}.datagrid-cell{position:absolute;padding:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background-color:#fff;border:1px solid #ddd;-webkit-transition:.4s cubic-bezier(.175,.885,.32,1);-o-transition:.4s cubic-bezier(.175,.885,.32,1);transition:.4s cubic-bezier(.175,.885,.32,1);-webkit-transition-property:background,outline;-o-transition-property:background,outline;transition-property:background,outline}.datagrid-cell.datagrid-cell-index{font-family:Monaco,Menlo,Consolas,"Courier New",monospace;color:grey;text-align:right;background-color:#f1f1f1}.datagrid-cell.datagrid-cell-head{background-color:#f1f1f1}.datagrid-cell-span{z-index:10}.datagrid-row{position:absolute;width:100%;background-color:#fff;-webkit-transition:.4s cubic-bezier(.175,.885,.32,1);-o-transition:.4s cubic-bezier(.175,.885,.32,1);transition:.4s cubic-bezier(.175,.885,.32,1);-webkit-transition-property:background,outline;-o-transition-property:background,outline;transition-property:background,outline}.datagrid-row-head{font-weight:700;color:grey;background-color:#f1f1f1}.datagrid-fixed.datagrid-row{z-index:35}.datagrid-fixed.datagrid-cell{z-index:30}.datagrid-fixed-edge-top{-webkit-box-shadow:0 2px 5px 0 rgba(0,0,0,.125),0 1px 0 rgba(0,0,0,.25);box-shadow:0 2px 5px 0 rgba(0,0,0,.125),0 1px 0 rgba(0,0,0,.25)}.datagrid-fixed-edge-bottom{-webkit-box-shadow:0 -2px 5px 0 rgba(0,0,0,.125),0 -1px 0 rgba(0,0,0,.25);box-shadow:0 -2px 5px 0 rgba(0,0,0,.125),0 -1px 0 rgba(0,0,0,.25)}.datagrid-fixed-edge-left{-webkit-box-shadow:-1px 0 0 rgba(0,0,0,.25) inset;box-shadow:-1px 0 0 rgba(0,0,0,.25) inset}.datagrid-fixed-edge-right{-webkit-box-shadow:1px 0 0 rgba(0,0,0,.25) inset;box-shadow:1px 0 0 rgba(0,0,0,.25) inset}.datagrid-row-cell.active .datagrid-cell{background-color:#fff0d5}.datagrid-row-cell.active .datagrid-cell.datagrid-cell-index{background-color:#ffe7bc}.datagrid-hover-row .datagrid-row-cell:hover{z-index:20}.datagrid-hover-row .datagrid-row-cell:hover .datagrid-cell{background-color:#ebf2f9}.datagrid-hover-row .datagrid-row-cell:hover.datagrid-fixed{z-index:38}.datagrid-hover-row .datagrid-row-cell:hover>.datagrid-cell-index{background-color:#ddd}.datagrid-hover-row .datagrid-row-cell:hover.active .datagrid-cell{background-color:#ffe1ac}.datagrid-hover-row .datagrid-row-cell:hover.active .datagrid-cell-index{background-color:#ffda98}.datagrid-hover-row.datagrid-hover-shadow .datagrid-row-cell:hover{-webkit-box-shadow:0 1px 3px 2px rgba(0,0,0,.05),0 0 2px 1px rgba(0,0,0,.075);box-shadow:0 1px 3px 2px rgba(0,0,0,.05),0 0 2px 1px rgba(0,0,0,.075)}.datagrid-hover-cell .datagrid-row-cell .datagrid-cell-cell:hover{z-index:40;background-color:#fff;outline:1px solid grey;outline-offset:-1px}.datagrid-hover-cell .datagrid-row-cell .datagrid-cell-cell.datagrid-fixed:hover,.datagrid-hover-cell .datagrid-row-cell.datagrid-fixed .datagrid-cell-cell:hover{z-index:42}.datagrid-hover-cell.datagrid-hover-shadow .datagrid-row-cell .datagrid-cell:hover{-webkit-box-shadow:0 1px 3px 3px rgba(0,0,0,.075),0 0 2px rgba(0,0,0,.1);box-shadow:0 1px 3px 3px rgba(0,0,0,.075),0 0 2px rgba(0,0,0,.1)}.datagrid-hover-col .datagrid-cell.hover{background-color:#ebf2f9}.datagrid-hover-col .datagrid-cell-head.hover,.datagrid-hover-col .datagrid-cell-index.hover{background-color:#ddd}.datagrid-hover-col .datagrid-row-cell.active .datagrid-cell.hover{background-color:#d7e5f3}.datagrid-scrollbar{position:absolute;right:0;bottom:0;z-index:50;opacity:0;-webkit-transition:2.5s cubic-bezier(.175,.885,.32,1);-o-transition:2.5s cubic-bezier(.175,.885,.32,1);transition:2.5s cubic-bezier(.175,.885,.32,1);-webkit-transition-property:background,opacity;-o-transition-property:background,opacity;transition-property:background,opacity}.datagrid-container:hover .datagrid-scrollbar,.datagrid-scrollbar.scrolling{opacity:1}.datagrid-scrollbar>.bar{position:absolute;min-width:10px;background-color:#ddd;background-color:rgba(0,0,0,.25)}.datagrid-scrollbar.scrolling,.datagrid-scrollbar:hover{background-color:rgba(0,0,0,.075)}.datagrid-scrollbar.scrolling>.bar,.datagrid-scrollbar:hover>.bar{position:absolute;background-color:grey;background-color:rgba(0,0,0,.5)}.datagrid-scrollbar-h{left:0;height:10px}.datagrid-scrollbar-h>.bar{top:0!important;bottom:0!important;min-width:20px}.datagrid-scrollbar-v{top:0;width:10px}.datagrid-scrollbar-v>.bar{right:0!important;left:0!important;min-height:20px}.datagrid-messager{position:absolute;top:0;right:0;left:0;z-index:60;padding:5px 10px;text-align:center}.datagrid-messager>.close{position:absolute;top:0;right:0;display:block;width:30px;height:30px;padding-bottom:5px;line-height:20px;text-align:center}.datagrid-messager>.close:hover{background-color:rgba(0,0,0,.1)}.datagrid-loading{position:absolute;top:0;right:0;bottom:0;left:0;z-index:61;background-color:rgba(255,255,255,.6)}.datagrid-loading>.content{position:relative;top:50%;display:block;height:50px;margin-top:-25px;text-align:center}.datagrid-loading>.content>.icon{color:#3280fc}.datagrid-col-sortable{padding-right:20px;cursor:pointer}.datagrid-sorter{position:absolute;top:3px;right:0;bottom:0;width:20px;line-height:30px;text-align:center}.datagrid-sort-down>.icon-sort:before{color:#3280fc;content:'\e6b8'}.datagrid-sort-up>.icon-sort:before{color:#3280fc;content:'\e6b9'}.datagrid-borderless .datagrid-container{border-color:transparent}.datagrid-borderless .datagrid-cell{border-right-color:transparent;border-left-color:transparent}.datagrid-borderless .datagrid-fixed-edge-left{-webkit-box-shadow:-1px 0 0 rgba(0,0,0,.1) inset;box-shadow:-1px 0 0 rgba(0,0,0,.1) inset}.datagrid-borderless .datagrid-fixed-edge-right{-webkit-box-shadow:1px 0 0 rgba(0,0,0,.1) inset;box-shadow:1px 0 0 rgba(0,0,0,.1) inset}.datagrid-borderless .datagrid-row-cell:not(:hover) .datagrid-cell.datagrid-cell-index{background-color:#fff}.datagrid-striped .datagrid-cells>.datagrid-row-cell:nth-child(odd) .datagrid-cell-cell{background-color:#f9f9f9} \ No newline at end of file diff --git a/root/res/zui/lib/datagrid/zui.datagrid.min.js b/root/res/zui/lib/datagrid/zui.datagrid.min.js new file mode 100644 index 0000000..70de1a9 --- /dev/null +++ b/root/res/zui/lib/datagrid/zui.datagrid.min.js @@ -0,0 +1,14 @@ +/*! + * ZUI: 数据表格② - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ +/*! + * jQuery Mousewheel 3.1.13 + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + */ +!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof exports?module.exports=e:e(jQuery)}(function(e){function t(t){var n=t||window.event,l=s.call(arguments,1),d=0,h=0,g=0,f=0,u=0,p=0;if(t=e.event.fix(n),t.type="mousewheel","detail"in n&&(g=n.detail*-1),"wheelDelta"in n&&(g=n.wheelDelta),"wheelDeltaY"in n&&(g=n.wheelDeltaY),"wheelDeltaX"in n&&(h=n.wheelDeltaX*-1),"axis"in n&&n.axis===n.HORIZONTAL_AXIS&&(h=g*-1,g=0),d=0===g?h:g,"deltaY"in n&&(g=n.deltaY*-1,d=g),"deltaX"in n&&(h=n.deltaX,0===g&&(d=h*-1)),0!==g||0!==h){if(1===n.deltaMode){var v=e.data(this,"mousewheel-line-height");d*=v,g*=v,h*=v}else if(2===n.deltaMode){var m=e.data(this,"mousewheel-page-height");d*=m,g*=m,h*=m}if(f=Math.max(Math.abs(g),Math.abs(h)),(!i||f=1?"floor":"ceil"](d/i),h=Math[h>=1?"floor":"ceil"](h/i),g=Math[g>=1?"floor":"ceil"](g/i),c.settings.normalizeOffset&&this.getBoundingClientRect){var y=this.getBoundingClientRect();u=t.clientX-y.left,p=t.clientY-y.top}return t.deltaX=h,t.deltaY=g,t.deltaFactor=i,t.offsetX=u,t.offsetY=p,t.deltaMode=0,l.unshift(t,d,h,g),o&&clearTimeout(o),o=setTimeout(a,200),(e.event.dispatch||e.event.handle).apply(this,l)}}function a(){i=null}function r(e,t){return c.settings.adjustOldDeltas&&"mousewheel"===e.type&&t%120===0}var o,i,n=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],l="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],s=Array.prototype.slice;if(e.event.fixHooks)for(var d=n.length;d;)e.event.fixHooks[n[--d]]=e.event.mouseHooks;var c=e.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var a=l.length;a;)this.addEventListener(l[--a],t,!1);else this.onmousewheel=t;e.data(this,"mousewheel-line-height",c.getLineHeight(this)),e.data(this,"mousewheel-page-height",c.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var a=l.length;a;)this.removeEventListener(l[--a],t,!1);else this.onmousewheel=null;e.removeData(this,"mousewheel-line-height"),e.removeData(this,"mousewheel-page-height")},getLineHeight:function(t){var a=e(t),r=a["offsetParent"in e.fn?"offsetParent":"parent"]();return r.length||(r=e("body")),parseInt(r.css("fontSize"),10)||parseInt(a.css("fontSize"),10)||16},getPageHeight:function(t){return e(t).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};e.fn.extend({mousewheel:function(e){return e?this.bind("mousewheel",e):this.trigger("mousewheel")},unmousewheel:function(e){return this.unbind("mousewheel",e)}})}),function(e,t){"use strict";var a=function(t){var a=[];t.find("thead>tr:first>th").each(function(t){var r=e(this);if(a.push(e.extend({name:t,label:r.html(),html:!0,width:r.outerWidth()},r.data())),r.attr("colspan")&&"1"!==r.attr("colspan"))throw new Erorr("Table th element with colspan attribute is not support.")});var r=[];return t.find("tbody>tr").each(function(){var t=e(this),a={};t.children("td").each(function(t){a[t]=e(this).html()}),r.push(e.extend(a,t.data()))}),{cols:a,array:r,length:r.length}},r="zui.datagrid",o={date:{getter:function(e,t,a){var r=a.options.defaultDateFormater;return Date.create(e).format(r)},setter:function(e,t,a){if("string"==typeof e){var r=parseInt(e,10);isNaN(r)||(e=r)}return Date.timestamp(e)}}},i={},n={page:0,recTotal:0,recPerPage:10},l={fixedLeftUntil:0,fixedTopUntil:0,order:"asc",sortBy:null,pager:n,selections:{}},s=function(t,a){var r=0,o=a.length,i=0,n={};return e.each(t,function(e,t){var l=typeof t;"number"===l||"number"===l?t+="":"string"!==l&&(t=JSON.stringify(l));for(var s=0,d=0;d').insertAfter(s.$));var f=d.find(".datagrid-container:first");f.length||(f=e('
            ').appendTo(d)),f.css({width:n.width,borderWidth:n.borderWidth});var u=e(document),p=function(t){var a=f.find(".datagrid-scrollbar-"+t);a.length||(a=e('
            ').appendTo(f));var o,i,n,l,d=!1,c=null,h=".scrollbar"+t+"."+r+"."+s.uuid,g=function(e){if(d){var a=e["h"===t?"pageX":"pageY"];if(c!==a){c=a,a=a-o+i;var r,h=s.layout[t+"Scroll"];r=n?c-o+l:Math.max(0,Math.min(h.space,a-Math.round(h.barSize/2))),"h"===t?s.setScrollbarOffset(r):s.setScrollbarOffset(null,r)}}};a.on("mousedown",function(r){r.preventDefault(),d=!0;var c=s.layout[t+"Scroll"],f="h"===t?"X":"Y";i=r["offset"+f],o=r["page"+f],n=e(r.target).is(".bar"),l=c.offset,n&&(i+=l),g(r),a.addClass("scrolling"),u.on("mouseup"+h,function(e){d=!1,g(e),u.off(h),a.removeClass("scrolling")}).on("mousemove"+h,g)}),s["$"+t+"Scroll"]=a,s["$"+t+"Scrollbar"]=a.find(".bar")};p("h"),p("v");var v=n.mouseWheelFactor,m=window.navigator.userAgent.match(/Win/i);m&&(v*=20),f.on("mousewheel",function(e){s.scroll(s.layout.scrollLeft-Math.round(e.deltaX*v),s.layout.scrollTop-Math.round(e.deltaY*v)),e.preventDefault()}),s.$container=f;var y=d.find(".datagrid-cells:first");if(y.length||(y=e('
            ').appendTo(f)),y.toggleClass("datagrid-hover-cell",!!n.hoverCell).toggleClass("datagrid-hover-row",!!n.hoverRow).toggleClass("datagrid-hover-col",!!n.hoverCol).toggleClass("datagrid-hover-shadow",!!n.hoverCol),s.$cells=y,s.isFuncConfigs=e.isFunction(n.configs),s.configs=s.isFuncConfigs?n.configs:e.extend({},i,n.configs),s.layout={scrollLeft:0,scrollTop:0},s.configsCache={},s.userConfigs={},s.states=e.extend(!0,{},l,n.states),s.cells=[],s.setPager(s.states.pager),s.setDataSource(n.dataSource),s.render(!0),n.responsive){f.width();f.on("resize",function(){s.layout.cols=null,s.render()})}if(n.hoverCol&&y.on("mouseenter",".datagrid-cell-head",function(){var t=e(this),a=t.data("col");s.$cells.find(".datagrid-cell.hover").removeClass("hover"),s.$cells.find('.datagrid-cell[data-col="'+a+'"]').addClass("hover")}).on("mouseleave",".datagrid-cell-head.hover",function(){s.$cells.find(".datagrid-cell.hover").removeClass("hover")}),n.sortable&&y.on("click",".datagrid-col-sortable",function(){var t=e(this).data("col"),a=s.getColConfig(t),r=s.states.sortBy,o=s.states.order;r!==a.name?(r=a.name,o="desc"):"desc"===o?o="asc":"asc"===o&&(r=""),s.sortBy(r,o)}),n.checkable&&(n.selectable&&e.fn.selectable?(s.selectable=y.selectable(e.extend({selector:".datagrid-row-cell",trigger:n.checkByClickRow?null:".datagrid-row-cell .datagrid-has-checkbox",clickBehavior:"multi",select:function(e){s.checkRow(e.id,!0)},unselect:function(e){s.checkRow(e.id,!1)}},e.isPlainObject(n.selectable)?n.selectable:null)).data("zui.selectable"),y.on("click",".datagrid-cell-head.datagrid-has-checkbox",function(){s.checkRow(e(this).data("row")),s.selectable.syncSelectionsFromClass()})):y.on("click",n.checkByClickRow?".datagrid-row":".datagrid-has-checkbox",function(t){var a=e(this).data("row");(a||e(t.target).closest(".datagrid-has-checkbox").length)&&s.checkRow(a)})),e.fn.pager){var w=s.$.find(".pager");w.length&&(s.pagerObj=w.pager(e.extend({},s.pager,{onPageChange:function(e){s.setPager(e).render()}})).data("zui.pager"))}if(e.fn.searchBox){var C=s.$.find(".search-box");C&&(s.searchbox=C.searchBox({onSearchChange:function(e){s.search(e)}}))}};h.prototype.setPager=function(t,a,r){var o=this;"object"==typeof t&&(r=t.recPerPage,a=t.recTotal,t=t.page);var i=o.pager,l=e.extend({},i);return i||(i=e.extend({},n)),"number"==typeof r&&r>0&&(i.recPerPage=r),"number"==typeof a&&a>=0&&(i.recTotal=a),"number"==typeof t&&t>=0&&(i.page=t),i.totalPage=i.recTotal&&i.recPerPage?Math.ceil(i.recTotal/i.recPerPage):1,i.page=Math.max(0,Math.min(i.page,i.totalPage)),i.pageRecCount=i.recTotal,i.page&&i.recTotal&&(i.page1&&(i.pageRecCount=i.recTotal-i.recPerPage*(i.page-1))),i.skip=i.page>1?(i.page-1)*i.recPerPage:0,i.end=i.skip+i.pageRecCount,o.pager=i,l.page===i.page&&l.recTotal===i.recTotal&&l.recPerPage===i.recPerPage||(o.layout.cols=null,o.scroll(0,0)),o},h.prototype.goToPage=function(e){return this.setPager(e).render()},h.prototype.setSearch=function(a){return a!==t&&null!==a||(a=""),this.states.search=e.trim(a),this},h.prototype.search=function(e){var t=this;return e!==t.states.search&&t.pager.page&&t.setPager(1),t.setSearch(e).render()},h.prototype.setSorter=function(e,a){var r=this;return a===t&&(a="desc"===r.states.order?"asc":"desc"),r.states.order=a.toLowerCase(),r.states.sortBy=e,r},h.prototype.sortBy=function(e,t){return this.setSorter(e,t).render()},h.prototype.setDataSource=function(a,r){var o=this,i={},n=o.dataSource&&o.dataSource.cols;if(e.isArray(a)?(i.array=a,i.length=a.length,o.setPager("",a.length)):e.isPlainObject(a)?i=e.extend(i,a):"string"==typeof a&&(i.remote=a),i.cache===!0||i.cache===t?(i.cache=[],i.cacheSize=1):"number"==typeof i.cache&&(i.cacheSize=i.cache,i.cache=[]),e.isArray(i.data)?(i.array=i.data,i.length=i.array.length,o.setPager("",i.length),delete i.data):!i.data&&e.isFunction(i.getByIndex)&&o.setPager("",i.length),o.dataSource=i,r=r||i.cols||n||[],r.length)for(var l=0;l1?m.page*m.recPerPage:0;r=r.slice(m.skip,m.end)}}return r},h.prototype.getFilterParams=function(){var e=this,t=e.states;return{page:e.pager.page,recPerPage:e.pager.recPerPage,search:t.search,sortBy:t.sortBy,order:t.order}},h.prototype.loadData=function(t){var a=this;a.loadingId=e.zui.uuid();var r=function(e){return a.$.callComEvent(a,"onLoad",e),t&&t(e)},o=a.getFilterParams(),i=[o.page,o.recPerPage,o.search,o.sortBy,o.order].join("&"),n=a.getData(i);if(n)return r(n);var l=a.dataSource;if(l.array)return n=a.filterData(l.array,o),a.resetData(i,n,a.pager),r(n);if(l.getByIndex)return n=l.getByIndex,a.resetData(i,n),r(n);var s=l.loader,d=l.remote;if(!s&&d&&(s=function(t,r){var o=e.isFunction(d)?d(t,a):{url:d};e.ajax(e.extend({type:"GET",data:t,dataType:"json",success:function(t,o,i){if(l.remoteConverter&&(t=l.remoteConverter(t,o,i,a)),"string"==typeof t&&(t=e.parseJSON(t)),e.isPlainObject(t)&&t.data){var n=t.result||t.status;"success"===n||"ok"===n||200===n?r(t):r(!1,t.message||t.reason||a.lang.errorCannotHandleRemoteData,t)}else r(!1,a.lang.errorCannotHandleRemoteData,t)},error:function(){r(!1,a.lang.errorCannotGetDataFromRemote.format(l.remote))}},o))}),!s)return r(!1);a.renderLoading(!0);var c=a.loadingId;s(o,function(e,t){if(c===a.loadingId){if(a.renderLoading(!1),t)return a.showMessage(t,"danger"),void r(!1);a.resetData(i,e.data,e.pager),r(e.data)}})},h.prototype.getDataItem=function(e,t,a){var r=this;return t=t||r.getData(),"function"==typeof t?(a=a||r.getFilterParams(),t(e,a)):t[e]},h.prototype.showMessage=function(a,r,o){var i=this;i.msgerAutoCloseTimer&&(clearTimeout(i.msgerAutoCloseTimer),i.msgerAutoCloseTimer=null);var n=i.$container.find(".datagrid-messager");return a?(r=r||"info",o===t&&(o=5e3),n.length||(n=e('').appendTo(i.$container).on("click",".close",function(){n.slideUp(),i.msgerAutoCloseTimer&&(clearTimeout(i.msgerAutoCloseTimer),i.msgerAutoCloseTimer=null)})),n.attr("class","datagrid-messager bg-"+r).find(".content").text(a),n.slideDown(),void(o&&(i.msgerAutoCloseTimer=setTimeout(function(){n.slideUp(),i.msgerAutoCloseTimer=null},o)))):void n.slideUp()},h.prototype.renderLoading=function(a){var r=this;a!==t&&(r.states.loading=a);var o=r.$container.find(".datagrid-loading");a?(o.length||(o=e('').appendTo(r.$container)),o.find(".datagrid-loading-message").text("string"==typeof a?a:""),o.fadeIn()):o.fadeOut()},h.prototype.getData=function(e){var t=this.dataSource,a=null;if(e&&e!==t.dataId){if(t.cache&&t.cache.length)for(var r=t.cache.length-1;r>=0;--r){var o=t.cache[r];if(o.id===e){t.dataId=e,t.data=o.data,this.setPager(o.pager),a=o.data;break}}}else a=t.data;return a},h.prototype.resetData=function(t,a,r){var o=this.dataSource;if(o.dataId=t,o.data=a,o.cache){for(var i=o.cache.length-1;i>0;--i){var n=o.cache[i];if(n.id===t){o.cache.splice(i,1);break}}for(o.cache.push({id:t,data:a,pager:e.extend({},r)});o.cache.length>o.cacheSize;)o.cache.shift()}r&&this.setPager(r)},h.prototype.getRowLayout=function(e){var t=this.layout;if(0===e)return{top:0,height:t.headerHeight};var a=t.rowHeight;return{height:a,top:t.headerHeight+(e>1?(e-1)*a:0)+e*t.borderWidth}},h.prototype.updateLayout=function(){var a=this,r=a.options,o=a.layout,i=(a.data,a.pager),n=i.pageRecCount,l=a.$container,s=l.width(),d=a.dataSource;if(!d.cols.length&&n&&e.each(a.getDataItem(0),function(e){d.cols.push({name:e})}),!o.cols){for(var c,h,g=d.cols,f=r.colAutoMinWidth,u=r.colAutoDefaultWidth,p=0,v=0,m=r.rowIndexWidth,y=[{left:0,width:r.showRowIndex?"auto"===m?8*(n+a.pager.skip+"").length+18:m:0}],w=0,C=y[0].width,b=!1,x=0,S=0,T=0;T=1?(D.minWidth!==t&&(h=Math.max(h,D.minWidth)),c.width=h,C+=h):(D.minWidth===t&&(D.minWidth=f),c.grow=h,p+=h,v+=D.minWidth,x<=c.grow&&(x=c.grow,b=T+1)),c.minWidth=D.minWidth,!S&&D.checkbox&&(S=T+1,c.checkbox=!0),y.push(c))}r.checkable&&!S&&(y[0].checkbox=!0,"auto"===m&&(y[0].width+=30,C+=30));for(var M=s-C,R=M0){var k=y[L-1];c.left=k.left+k.width}w+=h}var H=s-w;b&&H>0&&(y[b].width+=H,w+=H),o.width=w,o.cols=y}o.containerWidth=s,o.rowHeight=r.rowDefaultHeight,o.borderWidth=r.borderWidth,o.headerHeight=r.showHeader?r.headerHeight:0,o.rowsLength=n+1,o.colsLength=o.cols.length,o.height=o.headerHeight+n*(o.rowHeight+o.borderWidth),o.spanMap={};var W=r.height;"page"===W&&(W=o.headerHeight+a.pager.recPerPage*(o.rowHeight+o.borderWidth)),l.css("height",W),o.containerHeight=W,o.vScrollSpare=o.height-o.containerHeight,o.hScrollSpare=o.width-o.containerWidth,a.layout=o;var F=!!i.page||r.partialRendering;return"auto"===F&&(F=o.height>2*o.containerHeight),o.partialRendering=F,o},h.prototype.getCell=function(e,a){var r,o,i=this,n=i.getCellConfig(e,a),l=a>0?i.dataSource.cols[a-1]:null,s={rowIndex:e,colIndex:a,config:n,checked:i.isRowChecked(n.rowId)};if(0===a){r="index";var d=e>0?i.pager.skip+e:"";o=n.label!==t?n.label:d}else 0===e?(r="head",o=n.label!==t?n.label:n.name!==t?n.name:a):(r="cell",o=n.data&&n.data[i.options.dataItemIsArray?a:l.name]);if(e>0){var c=i.options.valueOperator,h=n.valueType,g=n.valueOperator||(c&&h?c[h]:null);g&&g.getter&&(o=g.getter(o,s,i))}s.value=o,s.type=r;var f=i.layout.spanMap;if(f[n.id]||n.hidden)s.hidden=!0;else if(n.colspan&&n.colspan>1||n.rowspan&&n.rowspan>1){for(var u=e+(n.rowspan||1),p=a+(n.colspan||1),v=e;v0?r.getDataItem(a-1):null;i.data=n;var o=n&&(n.rowId||n.id);return i.rowId=o!==t?o:0===a?"#header":a,i},h.prototype.getColConfigByName=function(e){for(var t=this.dataSource.cols,a=0;a0?a.dataSource.cols[t-1]:null,a.layout.cols?a.layout.cols[t]:null,a.isFuncConfigs?a.configs(r):a.configs[r],a.userConfigs[r])),o},h.prototype.getCellConfig=function(t,a){var r=this,o="R"+t+"C"+a,i=null;return i||(i=e.extend({id:o},r.getColConfig(a),r.getRowConfig(t),r.isFuncConfigs?r.configs(o):r.configs[o],r.userConfigs[o])),i},h.prototype.isRowChecked=function(e){return!!this.states.selections[e]},h.prototype.checkRow=function(e,a){var r=this,o=r.states.selections,i=r.getRowConfig(e),n=i.rowId;if(a===t&&(a=!o[n]),o[n]!==a){if(a?o[n]=i:(delete o[n],e>0&&o["#header"]&&(delete o["#header"],r.renderRow(0))),r.renderRow(e),0===e&&r.layout.rowsLength<500)for(var l=1;l')).appendTo(r),c.attr({id:d,"data-type":n.type,"data-col":n.colIndex,"data-row":n.rowIndex}).toggleClass("datagrid-cell-head",0===t).toggleClass("datagrid-cell-cell","cell"===n.type).toggleClass("datagrid-cell-index",0===a),s)){var h=c.find(".datagrid-checkbox");h.length||(h=e('
            ').prependTo(c.addClass("datagrid-has-checkbox"))),c.append('')}var g=i.borderWidth,f=o.layout,u=f.colsLength,p={top:g?-g:0,bottom:g?-g:0,left:g?l.left-g:l.left,width:g?l.width+(u-1===a?2:1)*g:l.width,borderWidth:g};if(l.span&&(l.rowspan&&l.rowspan>1&&(p.bottom-=(l.rowspan-1)*(f.rowHeight+g)),l.colspan&&l.colspan>1))for(var v=a+l.colspan,m=a+1;m0&&0===t&&i.sortable&&l.sort!==!1){var x=!1;l.name===o.states.sortBy&&(x="desc"===o.states.order?"down":"up");var S=c.find(".datagrid-sorter");S.length||(S=e('
            ').appendTo(c),c.addClass("datagrid-col-sortable")),S.toggleClass("datagrid-sort-up","up"===x).toggleClass("datagrid-sort-down","down"===x)}return s&&(c.find(".datagrid-checkbox").toggleClass("checked",n.checked),r.toggleClass("active",n.checked)),c}},h.prototype.renderRow=function(t){var a=this,r=a.layout,o=a.options,i=a.getRowLayout(t),n=r.colsLength,l=a.id+"-row-"+t,s=e("#"+l);s.length?r.partialRendering&&s.css("top",i.top-r.scrollTop):(s=(o.rowCreator?o.rowCreator(t,a):e('
            ')).appendTo(a.$cells),s.attr({id:l,"data-row":t,"data-id":t}).css({top:r.partialRendering?i.top-r.scrollTop:i.top,height:i.height}).toggleClass("datagrid-row-head",0===t).toggleClass("datagrid-row-cell",0!==t));for(var d=0;d0&&!t.hasClass("datagrid-fixed")&&(ao)&&t.remove()})}t.options.showHeader&&t.renderRow(0);for(var n=r;n<=o;++n)t.renderRow(n);if(a.vScrollSpare){var l=t.states,s=l.fixedTopUntil,d=l.fixedBottomFrom;if("number"==typeof s&&s>0&&s0&&d>o)for(var n=d;n<=a.rowsLength-1;++n)t.renderRow(n)}t.pagerObj&&t.pagerObj.set(t.pager)},h.prototype.render=function(e){var t=this,a=t.options;return!e&&a.renderDelay?(t.renderDelayTimer&&clearTimeout(t.renderDelayTimer),t.renderDelayTimer=setTimeout(function(){t.render(!0)},a.renderDelay),t):(t.renderDelayTimer&&(clearTimeout(t.renderDelayTimer),t.renderDelayTimer=null),t.loadData(function(e){var a=t.updateLayout();t.$cells.css({width:a.width,height:a.partialRendering?a.containerHeight:t.layout.height}),t.renderData(),t.renderScrolls(),t.renderFixeds(),t.$.callComEvent(t,"onRender")}),t)},h.prototype.setScrollbarOffset=function(e,t){var a=this,r=a.layout,o=r.scrollLeft,i=r.scrollTop;if("number"==typeof e){var n=r.hScroll;n.offset!==e&&(o=Math.round(e*r.hScrollSpare/n.space))}if("number"==typeof t){var l=r.vScroll;l.offset!==t&&(i=Math.round(t*r.vScrollSpare/l.space))}a.scroll(o,i)},h.prototype.renderScrolls=function(){var e=this,t=e.layout,a=t.vScrollSpare,r=t.hScrollSpare,o=a>0,i=r>0;if(e.$vScroll.toggle(o),e.$hScroll.toggle(i),t.scrollLeft=i?Math.max(0,Math.min(r,t.scrollLeft)):0,t.scrollTop=o?Math.max(0,Math.min(a,t.scrollTop)):0,o){var n=e.$vScrollbar,l=t.containerHeight/t.height,s=Math.max(20,Math.floor(l*t.containerHeight)),d=t.containerHeight-s,c=d/a,h=Math.round(t.scrollTop*c);t.vScroll={space:d,size:a,scale:c,barSize:s,offset:h};var g={height:s,top:h};n.css(g)}if(i){var n=e.$hScrollbar,l=t.containerWidth/t.width,s=Math.max(20,Math.floor(l*t.containerWidth)),d=t.containerWidth-s,h=Math.round(t.scrollLeft*d/r),g={width:s,left:h};t.hScroll={offset:h,space:d,size:r,barSize:s},n.css(g)}e.$cells.css({top:t.partialRendering?0:-t.scrollTop,left:-t.scrollLeft})},h.prototype.scroll=function(e,t,a){var r=this,o=new Date,i=r.options.scrollDelay;if(i){if(!a&&r.lastScrollTime&&o-r.lastScrollTime-1){o=Math.min(o,r.rowsLength);for(var i=0;i<=o;++i){var n=t.getRowLayout(i),l=e("#"+t.id+"-row-"+i),s=r.partialRendering?n.top:n.top+r.scrollTop;l.addClass("datagrid-fixed").css("top",s),i===o&&r.scrollTop&&l.addClass("datagrid-fixed-edge-top")}}else o=-1;var d=a.fixedBottomFrom;if("number"==typeof d&&d>-1){d=Math.max(o>-1?o+1:1,Math.min(d,r.rowsLength));for(var i=d;i-1){c=Math.min(c,r.colsLength);for(var i=0;i<=c;++i){var h=r.cols[i],g=t.$cells.find('.datagrid-cell[data-col="'+i+'"]'),f=h.left+r.scrollLeft-r.borderWidth;g.addClass("datagrid-fixed").css("left",f),i===c&&r.scrollLeft&&g.addClass("datagrid-fixed-edge-left")}}else c=-1;var u=a.fixedRightFrom;if("number"==typeof u&&u>-1){u=Math.max(c>-1?c+1:1,Math.min(u,r.colsLength));for(var i=u;i .datatable-head { + -webkit-transition: -webkit-box-shadow .2s; + -o-transition: box-shadow .2s; + transition: -webkit-box-shadow .2s; + transition: box-shadow .2s; + transition: box-shadow .2s, -webkit-box-shadow .2s; + } +.datatable .table { + margin: 0; + table-layout: fixed; + } +.datatable .table > tbody > tr > td, +.datatable .table > thead > tr > th { + min-width: 20px; + } +.datatable .table > tbody > tr > td.check-btn, +.datatable .table > thead > tr > th.check-btn { + width: 30px; + color: #9b9b9b; + text-align: center; + cursor: pointer; + } +.datatable .table > tbody > tr.hover > td.check-btn, +.datatable .table > tbody > tr.active > td.check-btn, +.datatable .table > thead > tr > th.check-btn:hover, +.datatable .table > tbody > tr > td.check-btn:hover, +.datatable .table > thead > tr > th.check-btn.checked, +.datatable .table > tbody > tr > td.check-btn.checked { + color: #4f4f4f; + } +.datatable .table > thead > tr > th.check-btn.checked > .icon-check-empty:before, +.datatable .table > tbody > tr > td.check-btn.checked > .icon-check-empty:before, +.datatable .table > tbody > tr.active > td.check-btn > .icon-check-empty:before { + content: '\e642'; + } +.datatable .table > thead > tr > th.col-hover { + background-color: #e2e2e2; + } +.datatable .table > tbody > tr > td.col-hover, +.datatable .table > tbody > tr.hover > td { + background-color: #ebf2f9; + } +.datatable .table > tbody > tr.active.hover td { + background-color: #ffdea2; + } +.datatable.head-fixed > .datatable-head { + position: fixed; + z-index: 1030; + -webkit-box-shadow: 0 1px 4px 0 rgba(0, 0, 0, .15); + box-shadow: 0 1px 4px 0 rgba(0, 0, 0, .15); + } +.datatable.sortable .datatable-head-span .table > thead > tr > th { + overflow: hidden; + white-space: nowrap; + cursor: pointer; + } +.datatable.sortable .datatable-head-span .table > thead > tr > th.text-center { + padding-right: 0; + padding-left: 0; + } +.datatable.sortable .datatable-head-span .table > thead > tr > th:after { + display: inline-block; + margin-left: 5px; + font-family: ZenIcon; + font-size: 14px; + font-style: normal; + font-weight: normal; + font-variant: normal; + line-height: 1; + color: #808080; + text-transform: none; + content: '\e6bd'; + + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } +.datatable.sortable .datatable-head-span .table > thead > tr > th.sort-down:after { + color: #145ccd; + content: '\e6b8'; + } +.datatable.sortable .datatable-head-span .table > thead > tr > th.sort-up:after { + color: #145ccd; + content: '\e6b9'; + } +.datatable.sortable .datatable-head-span .table > thead > tr > th.check-btn:after, +.datatable.sortable .datatable-head-span .table > thead > tr > th.sort-disabled:after { + display: none; + } +.datatable.sortable .datatable-head-span .table > thead > tr > th.sort-disabled { + cursor: default; + } +.datatable-wrapper { + position: relative; + } +.datatable-span { + display: table-cell; + vertical-align: top; + } +.datatable-span.flexarea { + overflow: hidden; + } +.datatable-span.flexarea.datatable-head-span.dragging { + cursor: move !important; + } +.datatable-span.flexarea .table { + position: relative; + top: 0; + left: 0; + } +.datatable-span.flexarea .scrolled-shadow { + position: absolute; + top: 0; + bottom: 0; + display: none; + width: 20px; + -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, .15); + box-shadow: 0 0 10px rgba(0, 0, 0, .15); + opacity: 0; + -webkit-transition: all .4s cubic-bezier(.175, .885, .32, 1); + -o-transition: all .4s cubic-bezier(.175, .885, .32, 1); + transition: all .4s cubic-bezier(.175, .885, .32, 1); + } +.datatable-span.flexarea .scrolled-in-shadow { + left: -30px; + } +.datatable-span.flexarea .scrolled-out-shadow { + right: -30px; + } +.datatable > .scroll-wrapper { + position: relative; + width: 100%; + } +.datatable .scroll-slide { + position: absolute; + right: -1px; + bottom: 0; + left: -1px; + display: none; + height: 11px; + background: #e5e5e5; + background: rgba(128, 128, 128, .1); + border: 1px solid #e5e5e5; + border-bottom: none; + opacity: 0; + -webkit-transition: opacity .5s, background .3s; + -o-transition: opacity .5s, background .3s; + transition: opacity .5s, background .3s; + } +.datatable .scroll-slide > .bar { + position: absolute; + top: 0; + left: 0; + min-width: 50px; + height: 10px; + cursor: move; + background-color: #a6a6a6; + } +.datatable .scroll-slide:hover > .bar { + background-color: #808080; + } +.datatable .scroll-slide.scroll-pos-out { + bottom: -14px; + height: 15px; + } +.datatable .scroll-slide.scroll-pos-out > .bar { + height: 14px; + } +.datatable.show-scroll-slide:hover .scroll-slide, +.datatable.show-scroll-slide.scrolling .scroll-slide, +.datatable.show-scroll-slide:hover .scrolled-shadow, +.datatable.show-scroll-slide.scrolling .scrolled-shadow { + opacity: 1; + } +.datatable.show-scroll-slide .scroll-slide, +.datatable.show-scroll-slide .scrolled-shadow { + display: block; + } +.datatable.show-scroll-slide.scrolled-in .scrolled-in-shadow { + left: -20px; + } +.datatable.show-scroll-slide.scrolled-out .scrolled-out-shadow { + right: -20px; + } diff --git a/root/res/zui/lib/datatable/zui.datatable.js b/root/res/zui/lib/datatable/zui.datatable.js new file mode 100644 index 0000000..9476b60 --- /dev/null +++ b/root/res/zui/lib/datatable/zui.datatable.js @@ -0,0 +1,948 @@ +/*! + * ZUI: 数据表格 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +/* ======================================================================== + * ZUI: datatable.js + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT + * ======================================================================== */ +(function($) { + 'use strict'; + + var name = 'zui.datatable'; + var store = $.zui.store; + + /** + * Datatable class + * + * @param object element DOM element or jquery element + * @param object options Datatable options + */ + var DataTable = function(element, options) { + this.name = name; + this.$ = $(element); + this.isTable = (this.$[0].tagName === 'TABLE'); + this.firstShow = true; + if(this.isTable) { + this.$table = this.$; + this.id = 'datatable-' + (this.$.attr('id') || $.zui.uuid()); + } else { + this.$datatable = this.$.addClass('datatable'); + if(this.$.attr('id')) { + this.id = this.$.attr('id'); + } else { + this.id = 'datatable-' + $.zui.uuid(); + this.$.attr('id', this.id); + } + } + this.getOptions(options); + this.load(); + + this.callEvent('ready'); + }; + + // default options + DataTable.DEFAULTS = { + // Check options + checkable: false, // added check icon to the head of rows + checkByClickRow: true, // change check status by click anywhere on a row + checkedClass: 'active', // apply CSS class to an checked row + checkboxName: null, + selectable: true, + + // Sort options + sortable: false, // enable sorter + + // storage + storage: true, // enable storage + + // fixed header of columns + fixedHeader: false, // fixed header + fixedHeaderOffset: 0, // set top offset of header when fixed + fixedLeftWidth: '30%', // set left width after first render + fixedRightWidth: '30%', // set right width after first render + flexHeadDrag: true, // scroll flexarea by drag header + scrollPos: 'in', // scroll bar position: 'out' | 'in' + + // hover effection + rowHover: true, // apply hover effection to row + colHover: true, // apply hover effection to head + hoverClass: 'hover', + colHoverClass: 'col-hover', + + + // Fix cell height + fixCellHeight: true, + + // Merge rows + mergeRows: false, // Merge rows + + // custom columns size + // customizable: false, // enable customizable + minColWidth: 20, // min width of columns + minFixedLeftWidth: 200, // min left width + minFixedRightWidth: 200, // min right width + minFlexAreaWidth: 200 // min flexarea width + }; + + // Get options + DataTable.prototype.getOptions = function(options) { + var $e = this.$; + options = $.extend({}, DataTable.DEFAULTS, this.$.data(), options); + + options.tableClass = options.tableClass || ''; + options.tableClass = ' ' + options.tableClass + ' table-datatable'; + + $.each(['bordered', 'condensed', 'striped', 'condensed', 'fixed'], function(idx, cls) { + cls = 'table-' + cls; + if($e.hasClass(cls)) options.tableClass += ' ' + cls; + }); + + if($e.hasClass('table-hover') || options.rowHover) { + options.tableClass += ' table-hover'; + } + + if(!options.checkable || !$.fn.selectable) options.selectable = false; + + this.options = options; + }; + + // Load data form options or table dom + DataTable.prototype.load = function(data) { + var options = this.options, + cols; + + if($.isFunction(data)) { + data = data(this.data, this); + data.keepSort = true; + } else if($.isPlainObject(data)) { + this.data = data; + } else if(typeof data === 'string') { + var $table = $(data); + if($table.length) { + this.$table = $table.first(); + this.$table.data(name, this); + this.isTable = true; + } + data = null; + } else { + data = options.data; + } + + if(!data) { + if(this.isTable) { + data = { + cols: [], + rows: [] + }; + cols = data.cols; + var rows = data.rows, + i, + $th, $tr, $td, row, $t = this.$table, + colSpan; + + $t.children('thead').children('tr:first').children('th').each(function() { + $th = $(this); + cols.push($.extend({ + text: $th.html(), + flex: false || $th.hasClass('flex-col'), + width: 'auto', + cssClass: $th.attr('class'), + css: $th.attr('style'), + type: 'string', + ignore: $th.hasClass('ignore'), + sort: !$th.hasClass('sort-disabled'), + mergeRows: $th.attr('merge-rows') + }, $th.data())); + }); + + $t.children('tbody').children('tr').each(function() { + $tr = $(this); + row = $.extend({ + data: [], + checked: false, + cssClass: $tr.attr('class'), + css: $tr.attr('style'), + id: $tr.attr('id') + }, $tr.data()); + + $tr.children('td').each(function() { + $td = $(this); + colSpan = $td.attr('colspan') || 1; + row.data.push($.extend({ + cssClass: $td.attr('class'), + css: $td.attr('style'), + text: $td.html(), + colSpan: colSpan, + title: $td.attr('title') + }, $td.data())); + + if(colSpan > 1) { + for(i = 1; i < colSpan; i++) { + row.data.push({ + empty: true + }); + } + } + }); + + rows.push(row); + }); + + var $tfoot = $t.children('tfoot'); + if($tfoot.length) { + data.footer = $('
            ').append($tfoot); + } + } else { + throw new Error('No data avaliable!'); + } + } + + data.flexStart = -1; + data.flexEnd = -1; + + cols = data.cols; + data.colsLength = cols.length; + for(var i = 0; i < data.colsLength; ++i) { + var col = cols[i]; + if(col.flex) { + if(data.flexStart < 0) { + data.flexStart = i; + } + + data.flexEnd = i; + } + } + + if(data.flexStart === 0 && data.flexEnd === data.colsLength) { + data.flexStart = -1; + data.flexEnd = -1; + } + + data.flexArea = data.flexStart >= 0; + data.fixedRight = data.flexEnd >= 0 && data.flexEnd < (data.colsLength - 1); + data.fixedLeft = data.flexStart > 0; + if(data.flexStart < 0 && data.flexEnd < 0) { + data.fixedLeft = true; + data.flexStart = data.colsLength; + data.flexEnd = data.colsLength; + } + + this.data = data; + + this.callEvent('afterLoad', { + data: data + }); + + this.render(); + }; + + // Render datatable + DataTable.prototype.render = function() { + var that = this; + var $datatable = that.$datatable || (that.isTable ? $('
            ') : that.$datatable), + options = that.options, + data = that.data, + cols = that.data.cols, + rows = that.data.rows; + var checkable = options.checkable, + $left, + i, + $right, + $flex, + dataRowSpan = '
            ', + dataHeadSpan = '
            '; + + $datatable.children('.datatable-head, .datatable-rows, .scroll-wrapper').remove(); + + // Set css class to datatable by options + $datatable.toggleClass('sortable', options.sortable); + // $datatable.toggleClass('customizable', options.customizable); + + // Head + var $head = $('
            '), + $tr, + $th, + col; + $left = $(''); + $right = $(''); + $flex = $(''); + for(i = 0; i < cols.length; i++) { + col = cols[i]; + $tr = i < data.flexStart ? $left : ((i >= data.flexStart && i <= data.flexEnd) ? $flex : $right); + if(i === 0 && checkable) { + $tr.append(''); + } + if(col.ignore) continue; + + $th = $(''); + + // set sort class + $th.toggleClass('sort-down', col.sort === 'down') + .toggleClass('sort-up', col.sort === 'up') + .toggleClass('sort-disabled', col.sort === false); + + $th.addClass(col.cssClass) + .addClass(col.colClass) + .html(col.text) + .attr({ + 'data-index': i, + 'data-type': col.type, + style: col.css + }).css('width', col.width); + $tr.append($th); + } + + var $headSpan; + if(data.fixedLeft) { + $headSpan = $(dataHeadSpan); + $headSpan.addClass('fixed-left') + // .find('.datatable-wrapper') + // .append('
            ') + .find('table') + .addClass(options.tableClass) + .find('thead').append($left); + $head.append($headSpan); + } + if(data.flexArea) { + $headSpan = $(dataHeadSpan); + $headSpan.addClass('flexarea') + .find('.datatable-wrapper') + .append('
            ') + .find('table') + .addClass(options.tableClass) + .find('thead').append($flex); + $head.append($headSpan); + } + if(data.fixedRight) { + $headSpan = $(dataHeadSpan); + $headSpan.addClass('fixed-right') + // .find('.datatable-wrapper') + // .append('
            ') + .find('table') + .addClass(options.tableClass) + .find('thead').append($right); + $head.append($headSpan); + } + $datatable.append($head); + + // Rows + var $rows = $('
            '); + var $leftRow, + $flexRow, + $rightRow, + // $tr, + $td, + $cTd, + row, + rowLen = rows.length, + rowCol, + rowColLen; + $left = $(''); + $right = $(''); + $flex = $(''); + + for(var r = 0; r < rowLen; ++r) { + row = rows[r]; + + // format row + if(typeof row.id === 'undefined') { + row.id = r; + } + row.index = r; + + $leftRow = $(''); + $leftRow.addClass(row.cssClass) + .toggleClass(options.checkedClass, !!row.checked) + .attr({ + 'data-index': r, + 'data-id': row.id + }); + $flexRow = $leftRow.clone().addClass('datatable-row-flex'); + $rightRow = $leftRow.clone().addClass('datatable-row-right'); + $leftRow.addClass('datatable-row-left'); + + rowColLen = row.data.length; + for(i = 0; i < rowColLen; ++i) { + rowCol = row.data[i]; + if(i > 0 && rowCol.empty) { + continue; + } + + $tr = i < data.flexStart ? $leftRow : ((i >= data.flexStart && i <= data.flexEnd) ? $flexRow : $rightRow); + if(i === 0 && checkable) { + $cTd = $(''); + if(options.checkboxName) { + $cTd.append(''); + } + $tr.append($cTd); + } + + if(cols[i].ignore) continue; + + // format row column + if(!$.isPlainObject(rowCol)) { + rowCol = { + text: rowCol, + row: r, + index: i + }; + } else { + rowCol.row = r; + rowCol.index = i; + } + row.data[i] = rowCol; + + $td = $(''); + + $td.html(rowCol.text) + .addClass(rowCol.cssClass) + .addClass(cols[i].colClass) + .attr('colspan', rowCol.colSpan) + .attr({ + 'data-row': r, + 'data-index': i, + 'data-flex': false, + 'data-type': cols[i].type, + style: rowCol.css, + title: rowCol.title || '' + }).css('width', cols[i].width); + + + $tr.append($td); + } + + $left.append($leftRow); + $flex.append($flexRow); + $right.append($rightRow); + } + + + var $rowSpan; + if(data.fixedLeft) { + $rowSpan = $(dataRowSpan); + $rowSpan.addClass('fixed-left') + .find('table') + .addClass(options.tableClass) + .append($left); + $rows.append($rowSpan); + } + if(data.flexArea) { + $rowSpan = $(dataRowSpan); + $rowSpan.addClass('flexarea') + .find('.datatable-wrapper') + .append('
            ') + .find('table') + .addClass(options.tableClass) + .append($flex); + $rows.append($rowSpan); + } + if(data.fixedRight) { + $rowSpan = $(dataRowSpan); + $rowSpan.addClass('fixed-right') + .find('table') + .addClass(options.tableClass) + .append($right); + $rows.append($rowSpan); + } + $datatable.append($rows); + + if(data.flexArea) { + $datatable.append('
            '); + } + + var $oldFooter = $datatable.children('.datatable-footer').detach(); + if(data.footer) { + $datatable.append($('').css(t.extend({zIndex:1060,position:"absolute",top:e,left:i,pointerEvents:"none"},u.options.rangeStyle)).appendTo(t("body")))),n.css(s),clearTimeout(a),a=setTimeout(b,10),d=!1))},$=function(e){t(document).off(g),clearTimeout(y),v&&(v=!1,n&&n.remove(),d||s&&(clearTimeout(a),b(),s=null),u.callEvent("finish",{selections:u.selections,selected:u.getSelectedArray()}),e.preventDefault())},w=function(o){if(v)return $(o);var s=t.zui.getMouseButtonCode(r.mouseButton);if(!(s>-1&&o.button!==s||u.altKey||3===o.which||u.callEvent("start",o)===!1)){var l=u.$children=u.$.find(r.selector);l.addClass("slectable-item");var c=u.multiKey?"multi":r.clickBehavior;if("multi"===c?u.toggle(o.target):"single"===c?(u.unselect(),u.select(o.target)):"toggle"===c&&u.toggle(o.target,null,function(t){u.unselect()}),u.callEvent("startDrag",o)===!1)return void u.callEvent("finish",{selections:u.selections,selected:u.getSelectedArray()});e=o.pageX,i=o.pageY,n=null,d=!0,v=!0,t(document).on("mousemove"+g,C).on("mouseup"+g,$),y=setTimeout(function(){t(document).on(m,$)},10),o.preventDefault()}},F=r.container&&"default"!==r.container?t(r.container):this.$;r.trigger?F.on(m,r.trigger,w):F.on(m,w),t(document).on("keydown",function(t){var e=t.keyCode;17===e||91==e?u.multiKey=e:18===e&&(u.altKey=!0)}).on("keyup",function(t){u.multiKey=!1,u.altKey=!1})},i.prototype.callEvent=function(e,i){var n=t.Event(e+"."+this.name);this.$.trigger(n,i);var o=n.result,s=this.options[e];return t.isFunction(s)&&(o=s.apply(this,t.isArray(i)?i:[i])),o},t.fn.selectable=function(n){return this.each(function(){var o=t(this),s=o.data(e),l="object"==typeof n&&n;s||o.data(e,s=new i(this,l)),"string"==typeof n&&s[n]()})},t.fn.selectable.Constructor=i,t(function(){t('[data-ride="selectable"]').selectable()})}(jQuery); \ No newline at end of file diff --git a/root/res/zui/lib/sortable/zui.sortable.js b/root/res/zui/lib/sortable/zui.sortable.js new file mode 100644 index 0000000..57e98bb --- /dev/null +++ b/root/res/zui/lib/sortable/zui.sortable.js @@ -0,0 +1,185 @@ +/*! + * ZUI: 排序 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +/* ======================================================================== + * ZUI: sortable.js + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + ++ function($, window, document) { + 'use strict'; + + if(!$.fn.droppable) { + console.error('Sortable requires droppable.js'); + return; + } + + var NAME = 'zui.sortable', + DEFAULTS = { + selector : 'li,div', + dragCssClass : 'invisible', + sortingClass : 'sortable-sorting' + }, + STR_ORDER = 'order'; + + var Sortable = function(element, options) { + var that = this; + that.$ = $(element); + that.options = $.extend({}, DEFAULTS, that.$.data(), options); + that.init(); + }; + + Sortable.DEFAULTS = DEFAULTS; + Sortable.NAME = NAME; + + Sortable.prototype.init = function() { + var that = this, + $root = that.$, + options = that.options, + selector = options.selector, + sortingClass = options.sortingClass, + dragCssClass = options.dragCssClass, + isReverse = options.reverse; + + var markOrders = function($items) { + $items = $items || that.getItems(1); + var orders = []; + + $items.each(function() { + var order = $(this).data(STR_ORDER); + if(typeof order === 'number') { + orders.push(order); + } + }); + + orders.sort(function(a, b) { + return a - b; + }); + + var itemsCount = $items.length; + while(orders.length < itemsCount) { + orders.push(orders.length ? (orders[orders.length - 1] + 1) : 0); + } + + if(isReverse) { + orders.reverse(); + } + + that.maxOrder = 0; + $items.each(function(idx) { + that.maxOrder = Math.max(that.maxOrder, orders[idx]); + $(this).data(STR_ORDER, orders[idx]).attr('data-' + STR_ORDER, orders[idx]); + }); + }; + + markOrders(); + + $root.droppable({ + handle : options.trigger, + target : selector, + selector : selector, + container : $root, + always : options.always, + flex : true, + lazy : options.lazy, + canMoveHere : options.canMoveHere, + nested : options.nested, + before : options.before, + mouseButton : options.mouseButton, + start: function(e) { + if(dragCssClass) e.element.addClass(dragCssClass); + that.trigger('start', e); + }, + drag: function(e) { + $root.addClass(sortingClass); + if(e.isIn) { + var $ele = e.element, + $target = e.target, + eleOrder = $ele.data(STR_ORDER), + targetOrder = $target.data(STR_ORDER); + if (!eleOrder && eleOrder !== 0) { + that.maxOrder++; + eleOrder = that.maxOrder; + $ele.attr('data-' + STR_ORDER, eleOrder); + } + if (!targetOrder && targetOrder !== 0) { + that.maxOrder++; + targetOrder = that.maxOrder; + $target.attr('data-' + STR_ORDER, targetOrder); + } + if(eleOrder == targetOrder) return; + else if(eleOrder > targetOrder) { + $target[isReverse ? 'after' : 'before']($ele); + } else { + $target[isReverse ? 'before' : 'after']($ele); + } + var $items = that.getItems(1); + markOrders($items); + that.trigger(STR_ORDER, { + list: $items, + element: $ele + }); + } + }, + finish: function(e) { + if(dragCssClass && e.element) e.element.removeClass(dragCssClass); + $root.removeClass(sortingClass); + that.trigger('finish', { + list: that.getItems(1), + element: e.element + }); + } + }); + }; + + Sortable.prototype.destroy = function() { + this.$.droppable('destroy'); + this.$.data(NAME, null); + }; + + Sortable.prototype.reset = function() { + this.destroy(); + this.init(); + }; + + Sortable.prototype.getItems = function(onlyElements) { + var $items = this.$.children(this.options.selector).not('.drag-shadow'); + if(!onlyElements) { + return $items.map(function() { + var $item = $(this); + return { + item: $item, + order: $item.data('order') + }; + }); + } + return $items; + }; + + Sortable.prototype.trigger = function(name, params) { + return $.zui.callEvent(this.options[name], params, this); + }; + + $.fn.sortable = function(option) { + return this.each(function() { + var $this = $(this); + var data = $this.data(NAME); + var options = typeof option == 'object' && option; + + if(!data) $this.data(NAME, (data = new Sortable(this, options))); + else if(typeof option == 'object') data.reset(); + + if(typeof option == 'string') data[option](); + }); + }; + + $.fn.sortable.Constructor = Sortable; +}(jQuery, window, document); + diff --git a/root/res/zui/lib/sortable/zui.sortable.min.js b/root/res/zui/lib/sortable/zui.sortable.min.js new file mode 100644 index 0000000..16447f1 --- /dev/null +++ b/root/res/zui/lib/sortable/zui.sortable.min.js @@ -0,0 +1,7 @@ +/*! + * ZUI: 排序 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ ++function(t,e,r){"use strict";if(!t.fn.droppable)return void console.error("Sortable requires droppable.js");var a="zui.sortable",n={selector:"li,div",dragCssClass:"invisible",sortingClass:"sortable-sorting"},o="order",s=function(e,r){var a=this;a.$=t(e),a.options=t.extend({},n,a.$.data(),r),a.init()};s.DEFAULTS=n,s.NAME=a,s.prototype.init=function(){var e=this,r=e.$,a=e.options,n=a.selector,s=a.sortingClass,i=a.dragCssClass,l=a.reverse,d=function(r){r=r||e.getItems(1);var a=[];r.each(function(){var e=t(this).data(o);"number"==typeof e&&a.push(e)}),a.sort(function(t,e){return t-e});for(var n=r.length;a.lengthu?n[l?"after":"before"](a):n[l?"before":"after"](a);var f=e.getItems(1);d(f),e.trigger(o,{list:f,element:a})}},finish:function(t){i&&t.element&&t.element.removeClass(i),r.removeClass(s),e.trigger("finish",{list:e.getItems(1),element:t.element})}})},s.prototype.destroy=function(){this.$.droppable("destroy"),this.$.data(a,null)},s.prototype.reset=function(){this.destroy(),this.init()},s.prototype.getItems=function(e){var r=this.$.children(this.options.selector).not(".drag-shadow");return e?r:r.map(function(){var e=t(this);return{item:e,order:e.data("order")}})},s.prototype.trigger=function(e,r){return t.zui.callEvent(this.options[e],r,this)},t.fn.sortable=function(e){return this.each(function(){var r=t(this),n=r.data(a),o="object"==typeof e&&e;n?"object"==typeof e&&n.reset():r.data(a,n=new s(this,o)),"string"==typeof e&&n[e]()})},t.fn.sortable.Constructor=s}(jQuery,window,document); \ No newline at end of file diff --git a/root/res/zui/lib/tabs/zui.tabs.css b/root/res/zui/lib/tabs/zui.tabs.css new file mode 100644 index 0000000..18ebcc8 --- /dev/null +++ b/root/res/zui/lib/tabs/zui.tabs.css @@ -0,0 +1,146 @@ +/*! + * ZUI: 标签页管理器 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +.tabs { + position: relative; + min-height: 400px; + } +.tabs-navbar { + padding: 4px 4px 0 4px; + } +.tabs-nav { + height: 30px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border-bottom: none; + border-bottom: 1px solid #ddd; + } +.tab-nav-item { + width: 160px; + min-width: 0; + max-width: 160px; + padding-right: 2px; + margin-bottom: 0; + border: none; + } +.tab-nav-item:hover { + min-width: 95px; + } +.tab-nav-link { + position: relative; + height: 30px; + margin: 0; + overflow: hidden; + background-color: rgba(255, 255, 255, .65); + background-color: #e5e5e5; + border-color: #ddd; + border-bottom: none; + border-radius: 2px 2px 0 0; + } +.tab-nav-link > .title { + position: absolute; + top: 5px; + right: 5px; + left: 30px; + display: block; + overflow: hidden; + font-size: 14px; + line-height: 20px; + text-overflow: ellipsis; + white-space: nowrap; + } +.tab-nav-link > .icon { + position: absolute; + top: 5px; + left: 5px; + display: block; + width: 20px; + height: 20px; + line-height: 20px; + text-align: center; + opacity: .8; + } +.tab-nav-item.loading .tab-nav-link > .icon:before { + content: '\e97b'; + -webkit-animation: spin 2s infinite linear; + -o-animation: spin 2s infinite linear; + animation: spin 2s infinite linear; + } +.tab-nav-link > .close { + position: absolute; + top: 5px; + right: 5px; + width: 20px; + height: 20px; + font-weight: 200; + line-height: 16px; + text-align: center; + text-shadow: none; + visibility: hidden; + border-radius: 4px; + opacity: 0; + -webkit-transition: all .2s; + -o-transition: all .2s; + transition: all .2s; + } +.tab-nav-link > .close:hover { + color: #fff; + background-color: #ea644a; + } +.tab-nav-link:hover > .title { + right: 25px; + } +.tab-nav-link:hover > .close { + visibility: visible; + opacity: 1; + } +.tab-nav-link.not-closable > .close { + display: none; + } +.nav-tabs.tabs-nav > li > a, +.nav-tabs.tabs-nav > li > a:hover, +.nav-tabs.tabs-nav > li > a:focus { + border-color: #ddd #ddd transparent #ddd; + } +.tab-nav-condensed .tab-nav-link > .title { + left: 5px; + text-overflow: initial; + } +.tab-nav-condensed .tab-nav-link > .icon { + display: none; + } +.tabs-container { + position: absolute; + top: 34px; + right: 0; + bottom: 0; + left: 0; + } +.tabs-container > .tab-pane { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + display: none; + } +.tabs-container > .tab-pane.active { + display: block; + } +.tab-iframe-cover { + display: none; + } +.tabs-show-contextmenu .tab-iframe-cover { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + display: block; + } diff --git a/root/res/zui/lib/tabs/zui.tabs.js b/root/res/zui/lib/tabs/zui.tabs.js new file mode 100644 index 0000000..5b98268 --- /dev/null +++ b/root/res/zui/lib/tabs/zui.tabs.js @@ -0,0 +1,488 @@ +/*! + * ZUI: 标签页管理器 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +/* ======================================================================== + * ZUI: tabs.js + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2017-2018 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + +(function($) { + 'use strict'; + + /** + * Tab object + * @param {Object | String} tab + */ + var Tab = function(tab) { + var that = this; + if(typeof tab === 'string') { + that.url = tab; + } else if($.isPlainObject(tab)) { + $.extend(that, tab); + } + if(!that.id) { + that.id = $.zui.uuid(); + } + if(!that.type) { + if(that.iframe) { + that.type = 'iframe'; + that.url = that.url || that.iframe; + } else if(that.ajax) { + that.type = 'ajax'; + that.url = that.url || ($.isPlainObject(that.ajax) ? that.ajax.url : that.ajax); + } else if(that.url) { + that.type = tab.ajax ? 'ajax' : 'iframe'; + } else { + that.type = 'custom'; + } + } + that.createTime = new Date().getTime(); + that.openTime = 0; + that.onCreate && that.onCreate.call(that); + }; + + Tab.prototype.open = function() { + var that = this; + that.openTime = new Date().getTime(); + that.onOpen && that.onOpen.call(that); + }; + + Tab.prototype.close = function() { + var that = this; + that.openTime = 0; + that.onClose && that.onClose.call(that); + }; + + Tab.create = function(data) { + if (data instanceof Tab) { + return data; + } + return new Tab(data); + }; + + var NAME = 'zui.tabs'; // model name + var DEFAULTS = { + tabs: [], + defaultTabIcon: 'icon-window', + contextMenu: true, + errorTemplate: '
            {0}
            ', + // messagerOptions: null, + showMessage: true, + navTemplate: '', + containerTemplate: '
            ' + }; + + var LANG = { + zh_cn: { + reload: '重新加载', + close: '关闭', + closeOthers: '关闭其他标签页', + closeRight: '关闭右侧标签页', + reopenLast: '恢复上次关闭的标签页', + errorCannotFetchFromRemote: '无法从远程服务器({0})获取内容。' + }, + zh_tw: { + reload: '重新加載', + close: '關閉', + closeOthers: '關閉其他標籤頁', + closeRight: '關閉右側標籤頁', + reopenLast: '恢復上次關閉的標籤頁', + errorCannotFetchFromRemote: '無法從遠程服務器({0})獲取內容。' + }, + en: { + reload: 'Reload', + close: 'Close', + closeOthers: 'Close others', + closeRight: 'Close right', + reopenLast: 'Reopen last', + errorCannotFetchFromRemote: 'Cannot fetch data from remote server {0}.' + } + }; + + // The tabs model class + var Tabs = function(element, options) { + var that = this; + that.name = NAME; + that.$ = $(element); + + options = that.options = $.extend({}, DEFAULTS, this.$.data(), options); + var lang = options.lang || 'zh_cn'; + that.lang = $.isPlainObject(lang) ? ($.extend(true, {}, LANG[lang.lang || $.zui.clientLang()], lang)) : LANG[lang]; + + // Initialize here + var $navbar = that.$.find('.tabs-navbar'); + if (!$navbar.length) { + $navbar = $(options.navTemplate).appendTo(that.$); + } + that.$navbar = $navbar; + + var $nav = $navbar.find('.tabs-nav'); + if (!$nav.length) { + $nav = $('').appendTo($navbar); + } + that.$nav = $nav; + + var $tabs = that.$.find('.tabs-container'); + if (!$tabs.length) { + $tabs = $(options.containerTemplate).appendTo(that.$); + } + that.$tabs = $tabs; + + that.activeTabId = options.defaultTab; + var tabs = options.tabs || []; + that.tabs = {}; + $.each(tabs, function(index, item) { + var tab = Tab.create(item); + that.tabs[tab.id] = tab; + + if (!that.activeTabId) { + that.activeTabId = tab.id; + } + + that.renderTab(tab); + }); + that.closedTabs = []; + + that.open(that.getActiveTab()); + + $nav.on('click.' + NAME, '.tab-nav-link', function () { + that.open(that.getTab($(this).data('id'))); + }).on('click.' + NAME, '.tab-nav-close', function (e) { + that.close($(this).closest('.tab-nav-link').data('id')); + e.stopPropagation(); + }).on('resize.' + NAME, function () { + that.adjustNavs(); + }); + + if (options.contextMenu) { + $nav.contextmenu({ + selector: '.tab-nav-link', + itemsCreator: function (e) { + return that.createMenuItems(that.getTab($(this).data('id'))); + }, + onShow: function () { + that.$.addClass('tabs-show-contextmenu'); + }, + onHide: function () { + that.$.removeClass('tabs-show-contextmenu'); + } + }); + } + }; + + Tabs.prototype.createMenuItems = function (tab) { + var that = this; + var lang = that.lang; + return [{ + label: lang.reload, + onClick: function () { + that.open(tab, true); + } + }, '-', { + label: lang.close, + disabled: tab.forbidClose, + onClick: function () { + that.close(tab.id); + } + }, { + label: lang.closeOthers, + disabled: that.$nav.find('.tab-nav-item:not(.hidden)').length <= 1, + onClick: function () { + that.closeOthers(tab.id); + } + }, { + label: lang.closeRight, + disabled: !$('#tab-nav-item-' + tab.id).next('.tab-nav-item:not(.hidden)').length, + onClick: function () { + that.closeRight(tab.id); + } + }, '-', { + label: lang.reopenLast, + disabled: !that.closedTabs.length, + onClick: function () { + that.reopen(); + } + }]; + }; + + Tabs.prototype.adjustNavs = function (immediately) { + var that = this; + if (!immediately) { + if (that.adjustNavsTimer) { + clearTimeout(that.adjustNavsTimer); + } + that.adjustNavsTimer = setTimeout(function() { + that.adjustNavs(true); + }, 50); + return; + } + if (that.adjustNavsTimer) { + that.adjustNavsTimer = null; + } + var $nav = that.$nav; + var $navItems = $nav.find('.tab-nav-item:not(.hidden)'); + var totalWidth = $nav.width(); + var totalCount = $navItems.length; + var maxWidth = Math.floor(totalWidth/totalCount); + if(maxWidth < 96) { + maxWidth = Math.floor((totalWidth-96)/(totalCount-1)) + } + $nav.toggleClass('tab-nav-condensed', maxWidth <= 50); + $navItems.css('max-width', maxWidth); + }; + + Tabs.prototype.renderTab = function(tab, beforeTabId) { + var that = this; + var $nav = that.$nav; + var $tabNav = $('#tab-nav-item-' + tab.id); + if (!$tabNav.length) { + var $a = $('
            ×').attr({ + href: '#tabs-item-' + tab.id, + 'data-id': tab.id + }); + $tabNav = $('
          • ').append($a).appendTo(that.$nav); + if (beforeTabId) { + var $before$nav = $('#tab-nav-item-' + beforeTabId); + if ($before$nav.length) { + $tabNav.insertAfter($before$nav); + } + } + that.adjustNavs(); + } + var $a = $tabNav.find('a').attr('title', tab.desc).toggleClass('not-closable', !!tab.forbidClose); + $a.find('.icon').attr('class', 'icon ' + (tab.icon || that.options.defaultTabIcon)); + $a.find('.title').text(tab.title || tab.defaultTitle || ''); + return $tabNav; + }; + + Tabs.prototype.getActiveTab = function() { + var that = this; + return that.activeTabId ? that.tabs[that.activeTabId] : null; + }; + + Tabs.prototype.getTab = function(tabId) { + var that = this; + if (!tabId) { + return that.getActiveTab(); + } + if (typeof tabId === 'object') { + tabId = tabId.id; + } + return that.tabs[tabId]; + }; + + Tabs.prototype.close = function(tabId, forceClose) { + var that = this; + var tab = that.getTab(tabId); + if (tab && (forceClose || !tab.forbidClose)) { + $('#tab-nav-item-' + tab.id).remove(); + $('#tab-' + tab.id).remove(); + tab.close(); + delete that.tabs[tab.id]; + that.closedTabs.push(tab); + that.$.callComEvent(that, 'onClose', tab); + + var lastTab; + $.each(that.tabs, function (tabId, tab) { + if (!lastTab || lastTab.openTime < tab.openTime) { + lastTab = tab; + } + }); + lastTab && that.open(lastTab); + } + }; + + Tabs.prototype.open = function(tab, forceReload) { + var that = this; + + if (!(tab instanceof Tab)) { + tab = Tab.create(tab); + } + + var $tabNav = that.renderTab(tab); + that.$nav.find('.tab-nav-item.active').removeClass('active'); + $tabNav.addClass('active'); + + var $tabPane = $('#tab-' + tab.id); + if (!$tabPane.length) { + $tabPane = $('
            ').appendTo(that.$tabs); + } + that.$tabs.find('.tab-pane.active').removeClass('active'); + $tabPane.addClass('active'); + + tab.open(); + that.activeTabId = tab.id; + that.tabs[tab.id] = tab; + + if (forceReload || !tab.loaded) { + that.reload(tab); + } + + that.$.callComEvent(that, 'onOpen', tab); + }; + + Tabs.prototype.showMessage = function (message, type) { + $.zui.messager.show(message, $.extend({ + placement: 'center' + }, this.options.messagerOptions, { + type: type + })); + }; + + Tabs.prototype.reload = function(tab) { + var that = this; + + if (typeof tab === 'string') { + tab = that.getTab(tab); + } else if (!tab) { + tab = that.getActiveTab(); + } + + if (!tab) { + return; + } + + if (!tab.openTime) { + return that.open(tab); + } + + var $tabNav = $('#tab-nav-item-' + tab.id).addClass('loading').removeClass('has-error'); + var $tabPane = $('#tab-' + tab.id).addClass('loading').removeClass('has-error'); + var afterRefresh = function (content, error) { + if (!tab.openTime) { + return; + } + $tabNav.removeClass('loading'); + $tabPane.removeClass('loading'); + that.$.callComEvent(that, 'onLoad', tab); + if(typeof content === 'string' || content instanceof $) { + if (tab.contentConverter) { + content = tab.contentConverter(content, tab); + } + $tabPane.empty().append(content); + if (!tab.title) { + content = $tabPane.text().replace(/\n/g, ''); + tab.title = content.length > 10 ? content.substr(0, 10) : content; + that.renderTab(tab); + } + } + if (error) { + $tabNav.addClass('has-error'); + $tabPane.addClass('has-error'); + var showMessage = that.options.showMessage; + if (showMessage) { + if ($.isFunction(showMessage)) { + error = showMessage(error); + } + that.showMessage(error, 'danger'); + } + if (!content) { + $tabPane.html(that.options.errorTemplate.format(error)); + } + } + tab.loaded = new Date().getTime(); + }; + if (tab.type === 'ajax') { + var ajaxOption = { + type: 'get', + url: tab.url, + error: function(jqXHR, textStatus, errorThrown) { + afterRefresh(false, that.lang.errorCannotFetchFromRemote.format(tab.url)); + }, + success: function(data) { + afterRefresh(data); + } + }; + if($.isPlainObject(tab.ajax)) { + ajaxOption = $.extend(ajaxOption, tab.ajax); + } + $.ajax(ajaxOption); + } else if (tab.type === 'iframe') { + try { + var iframeName = 'tab-iframe-' + tab.id; + var $iframe = $(''); + $iframe.appendTo($tabPane.empty()); + $('
            ').appendTo($tabPane); + var frame = document.getElementById(iframeName); + frame.onload = frame.onreadystatechange = function() { + if(this.readyState && this.readyState != 'complete') return; + afterRefresh(); + var contentDocument = frame.contentDocument; + if (contentDocument && !tab.title) { + tab.title = contentDocument.title; + that.renderTab(tab); + } + }; + } catch (e) { + afterRefresh(); + } + } else { + var content = tab.content || tab.custom; + if (typeof content === 'function') { + content = content(tab, afterRefresh, that); + if (content !== true) { + afterRefresh(content); + } + } else { + afterRefresh(content); + } + } + }; + + Tabs.prototype.closeOthers = function(tabId) { + var that = this; + that.$nav.find('.tab-nav-link:not(.hidden)').each(function() { + var thisTabId = $(this).data('id'); + if (thisTabId !== tabId) { + that.close(thisTabId); + } + }); + }; + + Tabs.prototype.closeRight = function(tabId) { + var $tabNav = $('#tab-nav-item-' + tabId); + var $rightNav = $tabNav.next('.tab-nav-item:not(.hidden)'); + while ($rightNav.length) { + this.close($rightNav.data('id')); + $rightNav = $tabNav.next('.tab-nav-item:not(.hidden)'); + } + }; + + Tabs.prototype.closeAll = function() { + var that = this; + that.$nav.find('.tab-nav-link:not(.hidden)').each(function() { + that.close($(this).data('id')); + }); + }; + + Tabs.prototype.reopen = function() { + var that = this; + if(that.closedTabs.length) { + that.open(that.closedTabs.pop()); + } + }; + + // Extense jquery element + $.fn.tabs = function(option) { + return this.each(function() { + var $this = $(this); + var data = $this.data(NAME); + var options = typeof option == 'object' && option; + + if(!data) $this.data(NAME, (data = new Tabs(this, options))); + + if(typeof option == 'string') data[option](); + }); + }; + + Tabs.NAME = NAME; + $.fn.tabs.Constructor = Tabs; +}(jQuery)); + diff --git a/root/res/zui/lib/tabs/zui.tabs.min.css b/root/res/zui/lib/tabs/zui.tabs.min.css new file mode 100644 index 0000000..2bc5423 --- /dev/null +++ b/root/res/zui/lib/tabs/zui.tabs.min.css @@ -0,0 +1,6 @@ +/*! + * ZUI: 标签页管理器 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */.tabs{position:relative;min-height:400px}.tabs-navbar{padding:4px 4px 0 4px}.tabs-nav{height:30px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-bottom:none;border-bottom:1px solid #ddd}.tab-nav-item{width:160px;min-width:0;max-width:160px;padding-right:2px;margin-bottom:0;border:none}.tab-nav-item:hover{min-width:95px}.tab-nav-link{position:relative;height:30px;margin:0;overflow:hidden;background-color:rgba(255,255,255,.65);background-color:#e5e5e5;border-color:#ddd;border-bottom:none;border-radius:2px 2px 0 0}.tab-nav-link>.title{position:absolute;top:5px;right:5px;left:30px;display:block;overflow:hidden;font-size:14px;line-height:20px;text-overflow:ellipsis;white-space:nowrap}.tab-nav-link>.icon{position:absolute;top:5px;left:5px;display:block;width:20px;height:20px;line-height:20px;text-align:center;opacity:.8}.tab-nav-item.loading .tab-nav-link>.icon:before{content:'\e97b';-webkit-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear}.tab-nav-link>.close{position:absolute;top:5px;right:5px;width:20px;height:20px;font-weight:200;line-height:16px;text-align:center;text-shadow:none;visibility:hidden;border-radius:4px;opacity:0;-webkit-transition:all .2s;-o-transition:all .2s;transition:all .2s}.tab-nav-link>.close:hover{color:#fff;background-color:#ea644a}.tab-nav-link:hover>.title{right:25px}.tab-nav-link:hover>.close{visibility:visible;opacity:1}.tab-nav-link.not-closable>.close{display:none}.nav-tabs.tabs-nav>li>a,.nav-tabs.tabs-nav>li>a:focus,.nav-tabs.tabs-nav>li>a:hover{border-color:#ddd #ddd transparent #ddd}.tab-nav-condensed .tab-nav-link>.title{left:5px;text-overflow:initial}.tab-nav-condensed .tab-nav-link>.icon{display:none}.tabs-container{position:absolute;top:34px;right:0;bottom:0;left:0}.tabs-container>.tab-pane{position:absolute;top:0;right:0;bottom:0;left:0;display:none}.tabs-container>.tab-pane.active{display:block}.tab-iframe-cover{display:none}.tabs-show-contextmenu .tab-iframe-cover{position:absolute;top:0;right:0;bottom:0;left:0;display:block} \ No newline at end of file diff --git a/root/res/zui/lib/tabs/zui.tabs.min.js b/root/res/zui/lib/tabs/zui.tabs.min.js new file mode 100644 index 0000000..49edee0 --- /dev/null +++ b/root/res/zui/lib/tabs/zui.tabs.min.js @@ -0,0 +1,7 @@ +/*! + * ZUI: 标签页管理器 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ +!function(e){"use strict";var t=function(t){var a=this;"string"==typeof t?a.url=t:e.isPlainObject(t)&&e.extend(a,t),a.id||(a.id=e.zui.uuid()),a.type||(a.iframe?(a.type="iframe",a.url=a.url||a.iframe):a.ajax?(a.type="ajax",a.url=a.url||(e.isPlainObject(a.ajax)?a.ajax.url:a.ajax)):a.url?a.type=t.ajax?"ajax":"iframe":a.type="custom"),a.createTime=(new Date).getTime(),a.openTime=0,a.onCreate&&a.onCreate.call(a)};t.prototype.open=function(){var e=this;e.openTime=(new Date).getTime(),e.onOpen&&e.onOpen.call(e)},t.prototype.close=function(){var e=this;e.openTime=0,e.onClose&&e.onClose.call(e)},t.create=function(e){return e instanceof t?e:new t(e)};var a="zui.tabs",n={tabs:[],defaultTabIcon:"icon-window",contextMenu:!0,errorTemplate:'
            {0}
            ',showMessage:!0,navTemplate:'',containerTemplate:'
            '},o={zh_cn:{reload:"重新加载",close:"关闭",closeOthers:"关闭其他标签页",closeRight:"关闭右侧标签页",reopenLast:"恢复上次关闭的标签页",errorCannotFetchFromRemote:"无法从远程服务器({0})获取内容。"},zh_tw:{reload:"重新加載",close:"關閉",closeOthers:"關閉其他標籤頁",closeRight:"關閉右側標籤頁",reopenLast:"恢復上次關閉的標籤頁",errorCannotFetchFromRemote:"無法從遠程服務器({0})獲取內容。"},en:{reload:"Reload",close:"Close",closeOthers:"Close others",closeRight:"Close right",reopenLast:"Reopen last",errorCannotFetchFromRemote:"Cannot fetch data from remote server {0}."}},i=function(i,s){var r=this;r.name=a,r.$=e(i),s=r.options=e.extend({},n,this.$.data(),s);var l=s.lang||"zh_cn";r.lang=e.isPlainObject(l)?e.extend(!0,{},o[l.lang||e.zui.clientLang()],l):o[l];var c=r.$.find(".tabs-navbar");c.length||(c=e(s.navTemplate).appendTo(r.$)),r.$navbar=c;var d=c.find(".tabs-nav");d.length||(d=e('').appendTo(c)),r.$nav=d;var v=r.$.find(".tabs-container");v.length||(v=e(s.containerTemplate).appendTo(r.$)),r.$tabs=v,r.activeTabId=s.defaultTab;var p=s.tabs||[];r.tabs={},e.each(p,function(e,a){var n=t.create(a);r.tabs[n.id]=n,r.activeTabId||(r.activeTabId=n.id),r.renderTab(n)}),r.closedTabs=[],r.open(r.getActiveTab()),d.on("click."+a,".tab-nav-link",function(){r.open(r.getTab(e(this).data("id")))}).on("click."+a,".tab-nav-close",function(t){r.close(e(this).closest(".tab-nav-link").data("id")),t.stopPropagation()}).on("resize."+a,function(){r.adjustNavs()}),s.contextMenu&&d.contextmenu({selector:".tab-nav-link",itemsCreator:function(t){return r.createMenuItems(r.getTab(e(this).data("id")))},onShow:function(){r.$.addClass("tabs-show-contextmenu")},onHide:function(){r.$.removeClass("tabs-show-contextmenu")}})};i.prototype.createMenuItems=function(t){var a=this,n=a.lang;return[{label:n.reload,onClick:function(){a.open(t,!0)}},"-",{label:n.close,disabled:t.forbidClose,onClick:function(){a.close(t.id)}},{label:n.closeOthers,disabled:a.$nav.find(".tab-nav-item:not(.hidden)").length<=1,onClick:function(){a.closeOthers(t.id)}},{label:n.closeRight,disabled:!e("#tab-nav-item-"+t.id).next(".tab-nav-item:not(.hidden)").length,onClick:function(){a.closeRight(t.id)}},"-",{label:n.reopenLast,disabled:!a.closedTabs.length,onClick:function(){a.reopen()}}]},i.prototype.adjustNavs=function(e){var t=this;if(!e)return t.adjustNavsTimer&&clearTimeout(t.adjustNavsTimer),void(t.adjustNavsTimer=setTimeout(function(){t.adjustNavs(!0)},50));t.adjustNavsTimer&&(t.adjustNavsTimer=null);var a=t.$nav,n=a.find(".tab-nav-item:not(.hidden)"),o=a.width(),i=n.length,s=Math.floor(o/i);s<96&&(s=Math.floor((o-96)/(i-1))),a.toggleClass("tab-nav-condensed",s<=50),n.css("max-width",s)},i.prototype.renderTab=function(t,a){var n=this,o=(n.$nav,e("#tab-nav-item-"+t.id));if(!o.length){var i=e('×').attr({href:"#tabs-item-"+t.id,"data-id":t.id});if(o=e('
          • ').append(i).appendTo(n.$nav),a){var s=e("#tab-nav-item-"+a);s.length&&o.insertAfter(s)}n.adjustNavs()}var i=o.find("a").attr("title",t.desc).toggleClass("not-closable",!!t.forbidClose);return i.find(".icon").attr("class","icon "+(t.icon||n.options.defaultTabIcon)),i.find(".title").text(t.title||t.defaultTitle||""),o},i.prototype.getActiveTab=function(){var e=this;return e.activeTabId?e.tabs[e.activeTabId]:null},i.prototype.getTab=function(e){var t=this;return e?("object"==typeof e&&(e=e.id),t.tabs[e]):t.getActiveTab()},i.prototype.close=function(t,a){var n=this,o=n.getTab(t);if(o&&(a||!o.forbidClose)){e("#tab-nav-item-"+o.id).remove(),e("#tab-"+o.id).remove(),o.close(),delete n.tabs[o.id],n.closedTabs.push(o),n.$.callComEvent(n,"onClose",o);var i;e.each(n.tabs,function(e,t){(!i||i.openTime').appendTo(o.$tabs)),o.$tabs.find(".tab-pane.active").removeClass("active"),s.addClass("active"),a.open(),o.activeTabId=a.id,o.tabs[a.id]=a,!n&&a.loaded||o.reload(a),o.$.callComEvent(o,"onOpen",a)},i.prototype.showMessage=function(t,a){e.zui.messager.show(t,e.extend({placement:"center"},this.options.messagerOptions,{type:a}))},i.prototype.reload=function(t){var a=this;if("string"==typeof t?t=a.getTab(t):t||(t=a.getActiveTab()),t){if(!t.openTime)return a.open(t);var n=e("#tab-nav-item-"+t.id).addClass("loading").removeClass("has-error"),o=e("#tab-"+t.id).addClass("loading").removeClass("has-error"),i=function(i,s){if(t.openTime){if(n.removeClass("loading"),o.removeClass("loading"),a.$.callComEvent(a,"onLoad",t),("string"==typeof i||i instanceof e)&&(t.contentConverter&&(i=t.contentConverter(i,t)),o.empty().append(i),t.title||(i=o.text().replace(/\n/g,""),t.title=i.length>10?i.substr(0,10):i,a.renderTab(t))),s){n.addClass("has-error"),o.addClass("has-error");var r=a.options.showMessage;r&&(e.isFunction(r)&&(s=r(s)),a.showMessage(s,"danger")),i||o.html(a.options.errorTemplate.format(s))}t.loaded=(new Date).getTime()}};if("ajax"===t.type){var s={type:"get",url:t.url,error:function(e,n,o){i(!1,a.lang.errorCannotFetchFromRemote.format(t.url))},success:function(e){i(e)}};e.isPlainObject(t.ajax)&&(s=e.extend(s,t.ajax)),e.ajax(s)}else if("iframe"===t.type)try{var r="tab-iframe-"+t.id,l=e('');l.appendTo(o.empty()),e('
            ').appendTo(o);var c=document.getElementById(r);c.onload=c.onreadystatechange=function(){if(!this.readyState||"complete"==this.readyState){i();var e=c.contentDocument;e&&!t.title&&(t.title=e.title,a.renderTab(t))}}}catch(d){i()}else{var v=t.content||t.custom;"function"==typeof v?(v=v(t,i,a),v!==!0&&i(v)):i(v)}}},i.prototype.closeOthers=function(t){var a=this;a.$nav.find(".tab-nav-link:not(.hidden)").each(function(){var n=e(this).data("id");n!==t&&a.close(n)})},i.prototype.closeRight=function(t){for(var a=e("#tab-nav-item-"+t),n=a.next(".tab-nav-item:not(.hidden)");n.length;)this.close(n.data("id")),n=a.next(".tab-nav-item:not(.hidden)")},i.prototype.closeAll=function(){var t=this;t.$nav.find(".tab-nav-link:not(.hidden)").each(function(){t.close(e(this).data("id"))})},i.prototype.reopen=function(){var e=this;e.closedTabs.length&&e.open(e.closedTabs.pop())},e.fn.tabs=function(t){return this.each(function(){var n=e(this),o=n.data(a),s="object"==typeof t&&t;o||n.data(a,o=new i(this,s)),"string"==typeof t&&o[t]()})},i.NAME=a,e.fn.tabs.Constructor=i}(jQuery); \ No newline at end of file diff --git a/root/res/zui/lib/treemap/zui.treemap.css b/root/res/zui/lib/treemap/zui.treemap.css new file mode 100644 index 0000000..e9501fb --- /dev/null +++ b/root/res/zui/lib/treemap/zui.treemap.css @@ -0,0 +1,120 @@ +/*! + * ZUI: 树形图 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +.treemap-data { + text-align: left; + } +.treemap-nodes { + position: relative; + display: table; + padding: 10px; + margin-right: auto; + margin-left: auto; + text-align: center; + -webkit-user-select: none; + -moz-user-select: none; + } +.treemap-node { + display: table-cell; + vertical-align: top; + } +.treemap-node-wrapper { + position: relative; + z-index: 5; + display: inline-block; + padding: 5px 10px; + border: 1px solid #808080; + border-radius: 1px; + } +a.treemap-node-wrapper { + color: #353535; + cursor: pointer; + } +a.treemap-node-wrapper:active, +a.treemap-node-wrapper:focus, +a.treemap-node-wrapper:hover { + color: #3280fc; + text-decoration: none; + background-color: #ebf2f9; + border-color: #3280fc; + } +.treemap-node-root > .treemap-node-wrapper { + background-color: rgba(0, 0, 0, .1); + } +.treemap-node-children { + display: table; + margin-top: 20px auto 0; + } +.treemap-line-top, +.treemap-line-bottom { + position: absolute; + top: 100%; + left: 50%; + margin-left: -1px; + border-right: none!important; + border-bottom: none!important; + } +.treemap-line-top { + top: 0; + } +.treemap-node > .treemap-line { + position: absolute; + right: 0; + left: 0; + z-index: 1; + border-right: none!important; + border-bottom: none!important; + } +.treemap-node-fold-icon { + position: absolute; + top: -6px; + left: -5px; + z-index: 10; + display: block!important; + width: 10px; + height: 10px; + line-height: 10px; + color: #808080; + background-color: #fff; + border-radius: 5px; + opacity: 0; + -webkit-transition: opacity .2s, -webkit-transform .1s; + -o-transition: opacity .2s, -o-transform .1s; + transition: opacity .2s, -webkit-transform .1s; + transition: opacity .2s, transform .1s; + transition: opacity .2s, transform .1s, -webkit-transform .1s, -o-transform .1s; + } +.treemap-node-fold-icon:before { + min-width: 10px; + content: '\e6f2'; + } +.treemap-node-wrapper:hover .treemap-node-fold-icon { + opacity: 1; + } +.treemap-node.collapsed > .treemap-line, +.treemap-node.collapsed .treemap-line-bottom { + border-color: transparent!important; + } +.treemap-node.collapsed > .treemap-node-children { + display: none; + } +.treemap-node.collapsed .treemap-node-fold-icon { + top: -6px; + color: #808080; + opacity: 1; + -webkit-transform: none!important; + -ms-transform: none!important; + -o-transform: none!important; + transform: none!important; + } +.treemap-node.collapsed .treemap-node-fold-icon:before { + content: '\e6f1'; + } +.treemap-node.tree-node-collapsing > .treemap-line, +.treemap-node.tree-node-collapsing > .treemap-node-children { + visibility: hidden; + } diff --git a/root/res/zui/lib/treemap/zui.treemap.js b/root/res/zui/lib/treemap/zui.treemap.js new file mode 100644 index 0000000..99f569f --- /dev/null +++ b/root/res/zui/lib/treemap/zui.treemap.js @@ -0,0 +1,415 @@ +/*! + * ZUI: 树形图 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +/* ======================================================================== + * ZUI: treemap.js + * http://zui.sexy + * ======================================================================== + * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + +// Tree map data format +// { +// text: main text, +// html: main text as html format +// style: node style, +// textColor: text color, +// color: background color +// border: border style, +// cableWidth: 2, +// cableColor: '#808080' +// cableStyle: 'solid' +// } + + +(function($, window, document, Math, undefined) { + 'use strict'; + + var NAME = 'zui.treemap', + DEFAULTS = { + data: [], + // direction: 'bottom', // or 'top', 'left', 'right' + cableWidth: 1, + cableColor: '#808080', + cableStyle: 'solid', + rowSpace: 30, + nodeSpace: 20, + listenNodeResize: true, + nodeTemplate: '
            ', + foldable: true, + clickNodeToFold: true, + // sort: false, // Boolean or function + // tooltip: null, + // nodeStyle: null, + }; + // var DEFAULT_NODE = { + // id: uuid(), // uuid + // text: '', // main text, + // html: '', // main text as html format + // style: null, // node element style + // textColor: '', // text color + // color: '', // background color + // border: '', // border style, + // tooltip: '' // node caption + // attrs: null // attrs + // title: '' // node title + // tooltip: '' // node tooltip + // }; + + var getDataFromUlList = function($list) { + return $list.children('li,.treemap-data-item').map(function() { + var $item = $(this), + item = $item.data(), + $text = $item.children('.text'), + $html = $item.children('.content'), + $children = $item.children('ul,.treemap-data-list'); + if($text.length) item.text = $text.text(); + if($html.length) item.html = $html.html(); + if($children.length) { + item.children = getDataFromUlList($children); + } + if(!item.text && !item.html) { + var $content = $item.children(':not(ul,.treemap-data-list)'); + var $itemClone = $item.clone(); + $itemClone.find('ul,.treemap-data-list').remove(); + if(!$content.length) { + item.text = $itemClone.text(); + } else { + item.html = $itemClone.html(); + } + } + return item; + }).get(); + }; + + var Treemap = function(element, options) { + var $element = $(element); + if($.isArray(options)) { + options = {data: options}; + } + options = $.extend({}, DEFAULTS, $element.data(), options); + + var data = options.data || []; + if(!data.length) { + var $dataList = $element.children('.treemap-data'); + if($dataList.length) { + data = getDataFromUlList($dataList.hide()); + } + } + + var $nodes = $element.children('.treemap-nodes'); + if(!$nodes.length) { + $nodes = $('
            ').appendTo($element); + } + + var that = this; + that.$ = $element; + that.$nodes = $nodes; + that.data = $.isArray(data) ? data : [data]; + that.options = options; + that.offsetX = 0; + that.offsetY = 0; + that.scale = options.scale || 1; + + // Bind events + + that.render(); + + $nodes.on('resize', '.treemap-node-wrapper', function() { + that.delayDrawLines(); + }); + if(options.foldable) { + $nodes.on('click', options.clickNodeToFold ? '.treemap-node-wrapper' : '.treemap-node-fold-icon', function() { + that.toggle($(this).closest('.treemap-node')); + }); + } + + $nodes.on('click', '.treemap-node-wrapper', function() { + var $node = $(this).closest('.treemap-node'); + that.callEvent('onNodeClick', $node.data('node')); + }); + }; + + Treemap.prototype.toggle = function($node, toggle, ignoreAnimation) { + var that = this; + if(typeof $node === 'boolean') { + toggle = $node; + $node = null; + } + if(!$node) { + $node = that.$nodes.children('.treemap-node').first(); + } + if($node) + { + if($node.data('node').foldable === false) { + return; + } + if(toggle === undefined) { + toggle = $node.hasClass('collapsed'); + } + $node.toggleClass('collapsed', !toggle).find('[data-toggle="tooltip"]').tooltip('hide'); + if (!ignoreAnimation) { + $node.addClass('tree-node-collapsing') + } + that.$nodes.find('.tooltip').remove(); + that.drawLines(); + if (!ignoreAnimation) { + $node.removeClass('tree-node-collapsing'); + } else { + clearTimeout(that.toggleTimeTask); + that.toggleTimeTask = setTimeout(function() { + $node.removeClass('tree-node-collapsing'); + }, 200); + } + } + }; + + Treemap.prototype.showLevel = function(level) { + var that = this; + that.$nodes.find('.treemap-node').each(function() { + var $node = $(this); + that.toggle($node, $node.data('level') < level, true); + }); + }; + + Treemap.prototype.render = function(data) { + var that = this; + that.data = data ? ($.isArray(data) ? data : [data]) : that.data; + + if(that.data) { + that.createNodes(); + that.drawLines(); + that.delayDrawLines(500); + } + + that.callEvent('afterRender'); + }; + + Treemap.prototype.createNodes = function(nodes, parent, callback) { + var that = this, + options = that.options, + rowSpace = options.rowSpace, + $nodes = that.$nodes; + if(!parent) { + $nodes.find('.treemap-node-wrapper').off('resize.' + NAME); + $nodes.empty(); + } + if(options.sort) { + nodes.sort($.isFunction(options.sort) ? options.sort : function(nodeX, nodeY) { + return (nodeX.order || 0) - (nodeY.order); + }); + } + var lastNode = null; + nodes = nodes || that.data; + if (!parent) { + that.maxLevel = 1; + } + $.each(nodes, function(idx, node) { + if(typeof node === 'string') { + node = {html: node}; + nodes[idx] = node; + } + + if(!node.id) node.id = $.zui.uuid(); + node.level = parent ? (parent.level + 1) : 1; + that.maxLevel = Math.max(that.maxLevel, node.level); + + // Create node element + var isCustomNodeTemplate = $.isFunction(options.nodeTemplate); + var $node = isCustomNodeTemplate ? options.nodeTemplate(node, that) : $(options.nodeTemplate); + + // Create node wrapper element + var $wrapper = $node.find('.treemap-node-wrapper'); + if(!$wrapper.length) { + $wrapper = $('
            ').appendTo($node); + } + + var children = node.children; + var hasChild = children && children.length; + node.isOnlyOneChild = hasChild === 1; + + // Set node data attributes + node.idx = idx; + var row = parent ? (parent.row + 1) : 0; + $node.toggleClass('treemap-node-has-child', !!hasChild) + .toggleClass('treemap-node-has-parent', !!parent) + .toggleClass('treemap-node-one-child', hasChild === 1) + .toggleClass('collapsed', !!node.collapsed && node.collapsed !== 'false') + .toggleClass('treemap-node-root', !row) + .attr({'data-id': node.id, 'data-level': node.level}).data('node', node); + if(node.className) { + $node.addClass(node.className); + } + node.row = row; + + // Set node element attributes and sytle + var style = $.extend({}, options.nodeStyle, node.style); + if(node.textColor) style.color = node.textColor; + if(node.color) style.backgroundColor = node.color; + if(node.border) style.border = node.border; + var attrs = $.extend({}, node.attrs, { + title: node.caption + }); + if(node.tooltip) { + attrs['data-toggle'] = 'tooltip'; + attrs.title = node.tooltip; + } + $wrapper.attr(attrs).css(style); + if(lastNode) { + $node.css('padding-left', options.nodeSpace); + } + if(!isCustomNodeTemplate) { + if(node.html) $wrapper.append(node.html); + else if(node.text) $wrapper.text(node.text); + } + + // append node element to ducument + $node.appendTo(parent ? parent.$children : $nodes); + + // Save sizes + // node.bounds = { + // width : $wrapper.outerWidth(), + // height : $wrapper.outerHeight() + // }; + + if(lastNode) { + lastNode.next = node; + } + node.prev = lastNode; + node.parent = parent; + node.$ = $node; + node.$wrapper = $wrapper; + + // Create children + if(hasChild) { + var $children = $node.find('.treemap-node-children'); + if(!$children.length) { + $children = $('
            ').appendTo($node); + } + $children.css('margin-top', rowSpace); + node.$children = $children; + that.createNodes(children, node); + } + + if(options.listenNodeResize) { + $wrapper.on('resize.' + NAME, function() { + // node.bounds.width = $wrapper.outerWidth(); + // node.bounds.height = $wrapper.outerHeight(); + that.delayDrawLines(); + }); + } + + lastNode = node; + callback && callback($node, node); + }); + + if(!parent) { + // Init tooltip + $nodes.find('[data-toggle="tooltip"]').tooltip(options.tooltip); + } + }; + + Treemap.prototype.delayDrawLines = function(delay) { + var that = this; + clearTimeout(that.delayDrawLinesTask); + that.delayDrawLinesTask = setTimeout(function() { + that.drawLines(); + }, delay || 10); + }; + + Treemap.prototype.drawLines = function(nodes, parent) { + var that = this, + options = that.options, + rowSpace = options.rowSpace; + var cableStyle = {}; + if(options.cableWidth) cableStyle.borderWidth = options.cableWidth; + if(options.cableStyle) cableStyle.borderStyle = options.cableStyle; + if(options.cableColor) cableStyle.borderColor = options.cableColor; + var rowSpaceHalf = Math.round(rowSpace/2); + var nodesOffsetLeft = that.$nodes.offset().left; + $.each(nodes || that.data, function(idx, node) { + var $wrapper = node.$wrapper; + var children = node.children; + var nodeCableStyle = $.extend({ + height: rowSpaceHalf, + top: -rowSpaceHalf - 1, + left: Math.round(($wrapper.outerWidth() - cableStyle.borderWidth)/2), + color: cableStyle.borderColor + }, cableStyle); + if(parent && !parent.isOnlyOneChild) { + var $topLine = $wrapper.find('.treemap-line-top'); + if(!$topLine.length) { + $topLine = $('
            ').appendTo($wrapper); + } + $topLine.css(nodeCableStyle); + } + if(children && children.length) { + nodeCableStyle.top = $wrapper.outerHeight() - 1; + if(node.isOnlyOneChild) { + nodeCableStyle.height = rowSpace; + } + var $bottomLine = $wrapper.find('.treemap-line-bottom'); + if(!$bottomLine.length) { + $bottomLine = $('
            ').appendTo($wrapper); + if(options.foldable) { + $bottomLine.append(''); + } + } + $bottomLine.css(nodeCableStyle); + that.drawLines(children, node); + if(children.length > 1) { + var firstChild = children[0], + lastChild = children[children.length - 1]; + + var $centerLine = node.$.children('.treemap-line'); + if(!$centerLine.length) { + $centerLine = $('
            ').insertAfter($wrapper); + } + var lineLeft = Math.round(firstChild.$wrapper.offset().left - nodesOffsetLeft + firstChild.$wrapper.outerWidth()/2); + $centerLine.css($.extend({ + marginTop: rowSpaceHalf, + left: lineLeft, + width: lastChild.$wrapper.offset().left - nodesOffsetLeft -lineLeft + lastChild.$wrapper.outerWidth()/2 + }, cableStyle)); + } + } + }); + + if(!parent) { + that.callEvent('afterDrawLines'); + } + }; + + // Call event + Treemap.prototype.callEvent = function(name, params) { + var that = this; + if(!$.isArray(params)) params = [params]; + that.$.trigger(name, params); + if($.isFunction(that.options[name])) { + return that.options[name].apply(that, params); + } + }; + + Treemap.DEFAULTS = DEFAULTS; + Treemap.NAME = NAME; + + $.fn.treemap = function(option, param1, parma2) { + return this.each(function() { + var $this = $(this); + var data = $this.data(NAME); + var options = typeof option == 'object' && option; + + if(!data) $this.data(NAME, (data = new Treemap(this, options))); + + if(typeof option == 'string') data[option](param1, parma2); + }); + }; + + $.fn.treemap.Constructor = Treemap; +}(jQuery, window, document, Math, undefined)); + diff --git a/root/res/zui/lib/treemap/zui.treemap.min.css b/root/res/zui/lib/treemap/zui.treemap.min.css new file mode 100644 index 0000000..a9656f1 --- /dev/null +++ b/root/res/zui/lib/treemap/zui.treemap.min.css @@ -0,0 +1,6 @@ +/*! + * ZUI: 树形图 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */.treemap-data{text-align:left}.treemap-nodes{position:relative;display:table;padding:10px;margin-right:auto;margin-left:auto;text-align:center;-webkit-user-select:none;-moz-user-select:none}.treemap-node{display:table-cell;vertical-align:top}.treemap-node-wrapper{position:relative;z-index:5;display:inline-block;padding:5px 10px;border:1px solid grey;border-radius:1px}a.treemap-node-wrapper{color:#353535;cursor:pointer}a.treemap-node-wrapper:active,a.treemap-node-wrapper:focus,a.treemap-node-wrapper:hover{color:#3280fc;text-decoration:none;background-color:#ebf2f9;border-color:#3280fc}.treemap-node-root>.treemap-node-wrapper{background-color:rgba(0,0,0,.1)}.treemap-node-children{display:table;margin-top:20px auto 0}.treemap-line-bottom,.treemap-line-top{position:absolute;top:100%;left:50%;margin-left:-1px;border-right:none!important;border-bottom:none!important}.treemap-line-top{top:0}.treemap-node>.treemap-line{position:absolute;right:0;left:0;z-index:1;border-right:none!important;border-bottom:none!important}.treemap-node-fold-icon{position:absolute;top:-6px;left:-5px;z-index:10;display:block!important;width:10px;height:10px;line-height:10px;color:grey;background-color:#fff;border-radius:5px;opacity:0;-webkit-transition:opacity .2s,-webkit-transform .1s;-o-transition:opacity .2s,-o-transform .1s;transition:opacity .2s,-webkit-transform .1s;transition:opacity .2s,transform .1s;transition:opacity .2s,transform .1s,-webkit-transform .1s,-o-transform .1s}.treemap-node-fold-icon:before{min-width:10px;content:'\e6f2'}.treemap-node-wrapper:hover .treemap-node-fold-icon{opacity:1}.treemap-node.collapsed .treemap-line-bottom,.treemap-node.collapsed>.treemap-line{border-color:transparent!important}.treemap-node.collapsed>.treemap-node-children{display:none}.treemap-node.collapsed .treemap-node-fold-icon{top:-6px;color:grey;opacity:1;-webkit-transform:none!important;-ms-transform:none!important;-o-transform:none!important;transform:none!important}.treemap-node.collapsed .treemap-node-fold-icon:before{content:'\e6f1'}.treemap-node.tree-node-collapsing>.treemap-line,.treemap-node.tree-node-collapsing>.treemap-node-children{visibility:hidden} \ No newline at end of file diff --git a/root/res/zui/lib/treemap/zui.treemap.min.js b/root/res/zui/lib/treemap/zui.treemap.min.js new file mode 100644 index 0000000..a492f2a --- /dev/null +++ b/root/res/zui/lib/treemap/zui.treemap.min.js @@ -0,0 +1,7 @@ +/*! + * ZUI: 树形图 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ +!function(e,t,a,o,r){"use strict";var n="zui.treemap",l={data:[],cableWidth:1,cableColor:"#808080",cableStyle:"solid",rowSpace:30,nodeSpace:20,listenNodeResize:!0,nodeTemplate:'
            ',foldable:!0,clickNodeToFold:!0},i=function(t){return t.children("li,.treemap-data-item").map(function(){var t=e(this),a=t.data(),o=t.children(".text"),r=t.children(".content"),n=t.children("ul,.treemap-data-list");if(o.length&&(a.text=o.text()),r.length&&(a.html=r.html()),n.length&&(a.children=i(n)),!a.text&&!a.html){var l=t.children(":not(ul,.treemap-data-list)"),d=t.clone();d.find("ul,.treemap-data-list").remove(),l.length?a.html=d.html():a.text=d.text()}return a}).get()},d=function(t,a){var o=e(t);e.isArray(a)&&(a={data:a}),a=e.extend({},l,o.data(),a);var r=a.data||[];if(!r.length){var n=o.children(".treemap-data");n.length&&(r=i(n.hide()))}var d=o.children(".treemap-nodes");d.length||(d=e('
            ').appendTo(o));var s=this;s.$=o,s.$nodes=d,s.data=e.isArray(r)?r:[r],s.options=a,s.offsetX=0,s.offsetY=0,s.scale=a.scale||1,s.render(),d.on("resize",".treemap-node-wrapper",function(){s.delayDrawLines()}),a.foldable&&d.on("click",a.clickNodeToFold?".treemap-node-wrapper":".treemap-node-fold-icon",function(){s.toggle(e(this).closest(".treemap-node"))}),d.on("click",".treemap-node-wrapper",function(){var t=e(this).closest(".treemap-node");s.callEvent("onNodeClick",t.data("node"))})};d.prototype.toggle=function(e,t,a){var o=this;if("boolean"==typeof e&&(t=e,e=null),e||(e=o.$nodes.children(".treemap-node").first()),e){if(e.data("node").foldable===!1)return;t===r&&(t=e.hasClass("collapsed")),e.toggleClass("collapsed",!t).find('[data-toggle="tooltip"]').tooltip("hide"),a||e.addClass("tree-node-collapsing"),o.$nodes.find(".tooltip").remove(),o.drawLines(),a?(clearTimeout(o.toggleTimeTask),o.toggleTimeTask=setTimeout(function(){e.removeClass("tree-node-collapsing")},200)):e.removeClass("tree-node-collapsing")}},d.prototype.showLevel=function(t){var a=this;a.$nodes.find(".treemap-node").each(function(){var o=e(this);a.toggle(o,o.data("level")').appendTo(m));var v=h.children,u=v&&v.length;h.isOnlyOneChild=1===u,h.idx=c;var w=a?a.row+1:0;m.toggleClass("treemap-node-has-child",!!u).toggleClass("treemap-node-has-parent",!!a).toggleClass("treemap-node-one-child",1===u).toggleClass("collapsed",!!h.collapsed&&"false"!==h.collapsed).toggleClass("treemap-node-root",!w).attr({"data-id":h.id,"data-level":h.level}).data("node",h),h.className&&m.addClass(h.className),h.row=w;var y=e.extend({},i.nodeStyle,h.style);h.textColor&&(y.color=h.textColor),h.color&&(y.backgroundColor=h.color),h.border&&(y.border=h.border);var b=e.extend({},h.attrs,{title:h.caption});if(h.tooltip&&(b["data-toggle"]="tooltip",b.title=h.tooltip),g.attr(b).css(y),p&&m.css("padding-left",i.nodeSpace),f||(h.html?g.append(h.html):h.text&&g.text(h.text)),m.appendTo(a?a.$children:s),p&&(p.next=h),h.prev=p,h.parent=a,h.$=m,h.$wrapper=g,u){var x=m.find(".treemap-node-children");x.length||(x=e('
            ').appendTo(m)),x.css("margin-top",d),h.$children=x,l.createNodes(v,h)}i.listenNodeResize&&g.on("resize."+n,function(){l.delayDrawLines()}),p=h,r&&r(m,h)}),a||s.find('[data-toggle="tooltip"]').tooltip(i.tooltip)},d.prototype.delayDrawLines=function(e){var t=this;clearTimeout(t.delayDrawLinesTask),t.delayDrawLinesTask=setTimeout(function(){t.drawLines()},e||10)},d.prototype.drawLines=function(t,a){var r=this,n=r.options,l=n.rowSpace,i={};n.cableWidth&&(i.borderWidth=n.cableWidth),n.cableStyle&&(i.borderStyle=n.cableStyle),n.cableColor&&(i.borderColor=n.cableColor);var d=o.round(l/2),s=r.$nodes.offset().left;e.each(t||r.data,function(t,p){var c=p.$wrapper,h=p.children,f=e.extend({height:d,top:-d-1,left:o.round((c.outerWidth()-i.borderWidth)/2),color:i.borderColor},i);if(a&&!a.isOnlyOneChild){var m=c.find(".treemap-line-top");m.length||(m=e('
            ').appendTo(c)),m.css(f)}if(h&&h.length){f.top=c.outerHeight()-1,p.isOnlyOneChild&&(f.height=l);var g=c.find(".treemap-line-bottom");if(g.length||(g=e('
            ').appendTo(c),n.foldable&&g.append('')),g.css(f),r.drawLines(h,p),h.length>1){var v=h[0],u=h[h.length-1],w=p.$.children(".treemap-line");w.length||(w=e('
            ').insertAfter(c));var y=o.round(v.$wrapper.offset().left-s+v.$wrapper.outerWidth()/2);w.css(e.extend({marginTop:d,left:y,width:u.$wrapper.offset().left-s-y+u.$wrapper.outerWidth()/2},i))}}}),a||r.callEvent("afterDrawLines")},d.prototype.callEvent=function(t,a){var o=this;if(e.isArray(a)||(a=[a]),o.$.trigger(t,a),e.isFunction(o.options[t]))return o.options[t].apply(o,a)},d.DEFAULTS=l,d.NAME=n,e.fn.treemap=function(t,a,o){return this.each(function(){var r=e(this),l=r.data(n),i="object"==typeof t&&t;l||r.data(n,l=new d(this,i)),"string"==typeof t&&l[t](a,o)})},e.fn.treemap.Constructor=d}(jQuery,window,document,Math,void 0); \ No newline at end of file diff --git a/root/res/zui/lib/ueditor/ueditor.css b/root/res/zui/lib/ueditor/ueditor.css new file mode 100644 index 0000000..07eb88a --- /dev/null +++ b/root/res/zui/lib/ueditor/ueditor.css @@ -0,0 +1,1604 @@ +/*基础UI构建 +*/ +/* common layer */ +.edui-default .edui-box { + padding: 0; + margin: 0; + overflow: hidden; + border: none; + } +.edui-default a.edui-box { + display: block; + color: black; + text-decoration: none; + } +.edui-default a.edui-box:hover { + text-decoration: none; + } +.edui-default a.edui-box:active { + text-decoration: none; + } +.edui-default table.edui-box { + border-collapse: collapse; + } +.edui-default ul.edui-box { + list-style-type: none; + } +div.edui-box { + position: relative; + display: inline-block !important; + vertical-align: top; + } +.edui-default .edui-clearfix { + zoom: 1; + } +.edui-default .edui-clearfix:after { + display: block; + clear: both; + content: '\20'; + } +* html div.edui-box { + display: inline !important; + } +*:first-child + html div.edui-box { + display: inline !important; + } +/* control layout */ +.edui-default .edui-button-body, +.edui-splitbutton-body, +.edui-menubutton-body, +.edui-combox-body { + position: relative; + } +.edui-default .edui-popup { + position: absolute; + -webkit-user-select: none; + -moz-user-select: none; + } +.edui-default .edui-popup .edui-shadow { + position: absolute; + z-index: -1; + } +.edui-default .edui-popup .edui-bordereraser { + position: absolute; + overflow: hidden; + } +.edui-default .edui-tablepicker .edui-canvas { + position: relative; + } +.edui-default .edui-tablepicker .edui-canvas .edui-overlay { + position: absolute; + } +.edui-default .edui-dialog-modalmask, +.edui-dialog-dragmask { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + } +.edui-default .edui-toolbar { + position: relative; + } +/* + * default theme + */ +.edui-default .edui-label { + cursor: default; + } +.edui-default span.edui-clickable { + color: blue; + text-decoration: underline; + cursor: pointer; + } +.edui-default span.edui-unclickable { + color: gray; + cursor: default; + } +/* 工具栏 */ +.edui-default .edui-toolbar { + width: auto; + height: auto; + padding: 1px; + overflow: hidden; + cursor: default; + /*全屏下单独一行不占位*/ + zoom: 1; + -webkit-user-select: none; + -moz-user-select: none; + } +.edui-default .edui-toolbar .edui-button, +.edui-default .edui-toolbar .edui-splitbutton, +.edui-default .edui-toolbar .edui-menubutton, +.edui-default .edui-toolbar .edui-combox { + margin: 1px; + } +/*UI工具栏、编辑区域、底部*/ +.edui-default .edui-editor { + position: relative; + overflow: visible; + background-color: white; + border: 1px solid #d4d4d4; + border-radius: 4px; + } +.edui-editor div { + width: auto; + height: auto; + } +.edui-default .edui-editor-toolbarbox { + position: relative; + zoom: 1; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + } +.edui-default .edui-editor-toolbarboxouter { + background-color: #fafafa; + background-repeat: repeat-x; + border-bottom: 1px solid #d4d4d4; + + *zoom: 1; + } +.edui-default .edui-editor-toolbarboxinner { + padding: 2px; + } +.edui-default .edui-editor-iframeholder { + position: relative; + } +.edui-default .edui-editor-bottomContainer { + overflow: hidden; + } +.edui-default .edui-editor-bottomContainer table { + width: 100%; + height: 0; + overflow: hidden; + border-spacing: 0; + } +.edui-default .edui-editor-bottomContainer td { + font-family: Arial, Helvetica, Tahoma, Verdana, Sans-Serif; + font-size: 12px; + line-height: 20px; + white-space: nowrap; + border-top: 1px solid #ccc; + } +.edui-default .edui-editor-wordcount { + margin-right: 5px; + color: #aaa; + text-align: right; + } +.edui-default .edui-editor-scale { + width: 12px; + } +.edui-default .edui-editor-scale .edui-editor-icon { + float: right; + width: 100%; + height: 12px; + margin-top: 10px; + cursor: se-resize; + background: url(../images/scale.png) no-repeat; + } +.edui-default .edui-editor-breadcrumb { + margin: 2px 0 0 3px; + } +.edui-default .edui-editor-breadcrumb span { + color: blue; + text-decoration: underline; + cursor: pointer; + } +.edui-default .edui-toolbar .edui-for-fullscreen { + float: right; + } +.edui-default .edui-bubble .edui-popup-content { + padding: 5px; + font-family: "宋体"; + font-size: 10pt; + background-color: #fff6d9; + border: 1px solid #dcac6c; + } +.edui-default .edui-editor-toolbarmsg { + position: absolute; + bottom: -25px; + left: 0; + z-index: 1009; + width: 99.9%; + background-color: #fff6d9; + border-bottom: 1px solid #ccc; + } +.edui-default .edui-editor-toolbarmsg-upload { + position: absolute; + top: 5px; + left: 350px; + width: 100px; + height: 16px; + font-size: 14px; + line-height: 16px; + color: blue; + cursor: pointer; + } +.edui-default .edui-editor-toolbarmsg-label { + padding: 4px; + font-size: 12px; + line-height: 16px; + } +.edui-default .edui-editor-toolbarmsg-close { + float: right; + width: 20px; + height: 16px; + line-height: 16px; + color: red; + cursor: pointer; + } +.edui-default .edui-list .edui-bordereraser { + display: none; + } +.edui-default .edui-listitem { + padding: 1px; + white-space: nowrap; + } +.edui-default .edui-list .edui-state-hover { + position: relative; + padding: 0; + background-color: #fff5d4; + border: 1px solid #dcac6c; + } +.edui-default .edui-for-fontfamily .edui-listitem-label { + min-width: 130px; + height: 22px; + padding-left: 5px; + font-size: 12px; + line-height: 22px; + + _width: 120px; + } +.edui-default .edui-for-insertcode .edui-listitem-label { + min-width: 120px; + height: 22px; + padding-left: 5px; + font-size: 12px; + line-height: 22px; + + _width: 120px; + } +.edui-default .edui-for-underline .edui-listitem-label { + min-width: 120px; + padding: 3px 5px; + font-size: 12px; + + _width: 120px; + } +.edui-default .edui-for-fontsize .edui-listitem-label { + min-width: 120px; + padding: 3px 5px; + + _width: 120px; + } +.edui-default .edui-for-paragraph .edui-listitem-label { + min-width: 200px; + padding: 2px 5px; + + _width: 200px; + } +.edui-default .edui-for-rowspacingtop .edui-listitem-label, +.edui-default .edui-for-rowspacingbottom .edui-listitem-label { + min-width: 53px; + padding: 2px 5px; + + _width: 53px; + } +.edui-default .edui-for-lineheight .edui-listitem-label { + min-width: 53px; + padding: 2px 5px; + + _width: 53px; + } +.edui-default .edui-for-customstyle .edui-listitem-label { + width: 200px !important; + min-width: 200px; + padding: 2px 5px; + + _width: 200px; + } +/* 可选中按钮弹出菜单*/ +.edui-default .edui-menu { + z-index: 3000; + } +.edui-default .edui-menu .edui-popup-content { + padding: 3px; + } +.edui-default .edui-menu-body { + min-width: 170px; + background: url("../images/sparator_v.png") repeat-y 25px; + + _width: 150px; + } +.edui-default .edui-menuitem { + height: 20px; + vertical-align: top; + cursor: default; + } +.edui-default .edui-menuitem .edui-icon { + width: 20px !important; + height: 20px !important; + background: url(../images/icons.png) 0 -4000px; + background: url(../images/icons.gif) 0 -4000px\9; + } +.edui-default .edui-menuitem .edui-label { + height: 20px; + padding-left: 10px; + font-size: 12px; + line-height: 20px; + } +.edui-default .edui-state-checked .edui-menuitem-body { + background: url("../images/icons-all.gif") no-repeat 6px -205px; + } +.edui-default .edui-state-disabled .edui-menuitem-label { + color: gray; + } +/*不可选中菜单按钮 */ +.edui-default .edui-toolbar .edui-combox-body .edui-button-body { + width: 60px; + height: 20px; + padding-left: 5px; + margin: 0 3px 0 0; + font-size: 12px; + line-height: 20px; + white-space: nowrap; + } +.edui-default .edui-toolbar .edui-combox-body .edui-arrow { + width: 9px; + height: 20px; + background: url(../images/icons.png) -741px 0; + + _background: url(../images/icons.gif) -741px 0; + } +.edui-default .edui-toolbar .edui-combox .edui-combox-body { + background-color: white; + border: 1px solid #ccc; + border-radius: 2px; + + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + } +.edui-default .edui-toolbar .edui-combox-body .edui-splitborder { + display: none; + } +.edui-default .edui-toolbar .edui-combox-body .edui-arrow { + border-left: 1px solid #ccc; + } +.edui-default .edui-toolbar .edui-state-hover .edui-combox-body { + background-color: #fff5d4; + border: 1px solid #dcac6c; + } +.edui-default .edui-toolbar .edui-state-hover .edui-combox-body .edui-arrow { + border-left: 1px solid #dcac6c; + } +.edui-default .edui-toolbar .edui-state-checked .edui-combox-body { + background-color: #ffe69f; + border: 1px solid #dcac6c; + } +.edui-toolbar .edui-state-checked .edui-combox-body .edui-arrow { + border-left: 1px solid #dcac6c; + } +.edui-toolbar .edui-state-disabled .edui-combox-body { + background-color: #f0f0ee; + filter: alpha(opacity=30); + opacity: .3; + } +.edui-toolbar .edui-state-opened .edui-combox-body { + background-color: white; + border: 1px solid gray; + } +/*普通按钮样式及状态*/ +.edui-default .edui-toolbar .edui-button .edui-icon, +.edui-default .edui-toolbar .edui-menubutton .edui-icon, +.edui-default .edui-toolbar .edui-splitbutton .edui-icon { + width: 20px !important; + height: 20px !important; + background-image: url(../images/icons.png); + background-image: url(../images/icons.gif) \9; + } +.edui-default .edui-toolbar .edui-button .edui-button-wrap { + position: relative; + padding: 1px; + } +.edui-default .edui-toolbar .edui-button .edui-state-hover .edui-button-wrap { + padding: 0; + background-color: #fff5d4; + border: 1px solid #dcac6c; + } +.edui-default .edui-toolbar .edui-button .edui-state-checked .edui-button-wrap { + padding: 0; + background-color: #ffe69f; + border: 1px solid #dcac6c; + border-radius: 2px; + + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + } +.edui-default .edui-toolbar .edui-button .edui-state-active .edui-button-wrap { + padding: 0; + background-color: #fff; + border: 1px solid gray; + } +.edui-default .edui-toolbar .edui-state-disabled .edui-label { + color: #ccc; + } +.edui-default .edui-toolbar .edui-state-disabled .edui-icon { + filter: alpha(opacity=30); + opacity: .3; + } +/* toolbar icons */ +.edui-default .edui-for-undo .edui-icon { + background-position: -160px 0; + } +.edui-default .edui-for-redo .edui-icon { + background-position: -100px 0; + } +.edui-default .edui-for-bold .edui-icon { + background-position: 0 0; + } +.edui-default .edui-for-italic .edui-icon { + background-position: -60px 0; + } +.edui-default .edui-for-fontborder .edui-icon { + background-position: -160px -40px; + } +.edui-default .edui-for-underline .edui-icon { + background-position: -140px 0; + } +.edui-default .edui-for-strikethrough .edui-icon { + background-position: -120px 0; + } +.edui-default .edui-for-subscript .edui-icon { + background-position: -600px 0; + } +.edui-default .edui-for-superscript .edui-icon { + background-position: -620px 0; + } +.edui-default .edui-for-blockquote .edui-icon { + background-position: -220px 0; + } +.edui-default .edui-for-forecolor .edui-icon { + background-position: -720px 0; + } +.edui-default .edui-for-backcolor .edui-icon { + background-position: -760px 0; + } +.edui-default .edui-for-inserttable .edui-icon { + background-position: -580px -20px; + } +.edui-default .edui-for-autotypeset .edui-icon { + background-position: -640px -40px; + } +.edui-default .edui-for-justifyleft .edui-icon { + background-position: -460px 0; + } +.edui-default .edui-for-justifycenter .edui-icon { + background-position: -420px 0; + } +.edui-default .edui-for-justifyright .edui-icon { + background-position: -480px 0; + } +.edui-default .edui-for-justifyjustify .edui-icon { + background-position: -440px 0; + } +.edui-default .edui-for-insertorderedlist .edui-icon { + background-position: -80px 0; + } +.edui-default .edui-for-insertunorderedlist .edui-icon { + background-position: -20px 0; + } +.edui-default .edui-for-lineheight .edui-icon { + background-position: -725px -40px; + } +.edui-default .edui-for-rowspacingbottom .edui-icon { + background-position: -745px -40px; + } +.edui-default .edui-for-rowspacingtop .edui-icon { + background-position: -765px -40px; + } +.edui-default .edui-for-horizontal .edui-icon { + background-position: -360px 0; + } +.edui-default .edui-for-link .edui-icon { + background-position: -500px 0; + } +.edui-default .edui-for-code .edui-icon { + background-position: -440px -40px; + } +.edui-default .edui-for-insertimage .edui-icon { + background-position: -726px -77px; + } +.edui-default .edui-for-insertframe .edui-icon { + background-position: -240px -40px; + } +.edui-default .edui-for-emoticon .edui-icon { + background-position: -60px -20px; + } +.edui-default .edui-for-spechars .edui-icon { + background-position: -240px 0; + } +.edui-default .edui-for-help .edui-icon { + background-position: -340px 0; + } +.edui-default .edui-for-print .edui-icon { + background-position: -440px -20px; + } +.edui-default .edui-for-preview .edui-icon { + background-position: -420px -20px; + } +.edui-default .edui-for-selectall .edui-icon { + background-position: -400px -20px; + } +.edui-default .edui-for-searchreplace .edui-icon { + background-position: -520px -20px; + } +.edui-default .edui-for-map .edui-icon { + background-position: -40px -40px; + } +.edui-default .edui-for-gmap .edui-icon { + background-position: -260px -40px; + } +.edui-default .edui-for-insertvideo .edui-icon { + background-position: -320px -20px; + } +.edui-default .edui-for-time .edui-icon { + background-position: -160px -20px; + } +.edui-default .edui-for-date .edui-icon { + background-position: -140px -20px; + } +.edui-default .edui-for-cut .edui-icon { + background-position: -680px 0; + } +.edui-default .edui-for-copy .edui-icon { + background-position: -700px 0; + } +.edui-default .edui-for-paste .edui-icon { + background-position: -560px 0; + } +.edui-default .edui-for-formatmatch .edui-icon { + background-position: -40px 0; + } +.edui-default .edui-for-pasteplain .edui-icon { + background-position: -360px -20px; + } +.edui-default .edui-for-directionalityltr .edui-icon { + background-position: -20px -20px; + } +.edui-default .edui-for-directionalityrtl .edui-icon { + background-position: -40px -20px; + } +.edui-default .edui-for-source .edui-icon { + background-position: -261px 0; + } +.edui-default .edui-for-removeformat .edui-icon { + background-position: -580px 0; + } +.edui-default .edui-for-unlink .edui-icon { + background-position: -640px 0; + } +.edui-default .edui-for-touppercase .edui-icon { + background-position: -786px 0; + } +.edui-default .edui-for-tolowercase .edui-icon { + background-position: -806px 0; + } +.edui-default .edui-for-insertrow .edui-icon { + background-position: -478px -76px; + } +.edui-default .edui-for-insertrownext .edui-icon { + background-position: -498px -76px; + } +.edui-default .edui-for-insertcol .edui-icon { + background-position: -455px -76px; + } +.edui-default .edui-for-insertcolnext .edui-icon { + background-position: -429px -76px; + } +.edui-default .edui-for-mergeright .edui-icon { + background-position: -60px -40px; + } +.edui-default .edui-for-mergedown .edui-icon { + background-position: -80px -40px; + } +.edui-default .edui-for-splittorows .edui-icon { + background-position: -100px -40px; + } +.edui-default .edui-for-splittocols .edui-icon { + background-position: -120px -40px; + } +.edui-default .edui-for-insertparagraphbeforetable .edui-icon { + background-position: -140px -40px; + } +.edui-default .edui-for-deleterow .edui-icon { + background-position: -660px -20px; + } +.edui-default .edui-for-deletecol .edui-icon { + background-position: -640px -20px; + } +.edui-default .edui-for-splittocells .edui-icon { + background-position: -800px -20px; + } +.edui-default .edui-for-mergecells .edui-icon { + background-position: -760px -20px; + } +.edui-default .edui-for-deletetable .edui-icon { + background-position: -620px -20px; + } +.edui-default .edui-for-cleardoc .edui-icon { + background-position: -520px 0; + } +.edui-default .edui-for-fullscreen .edui-icon { + background-position: -100px -20px; + } +.edui-default .edui-for-anchor .edui-icon { + background-position: -200px 0; + } +.edui-default .edui-for-pagebreak .edui-icon { + background-position: -460px -40px; + } +.edui-default .edui-for-imagenone .edui-icon { + background-position: -480px -40px; + } +.edui-default .edui-for-imageleft .edui-icon { + background-position: -500px -40px; + } +.edui-default .edui-for-wordimage .edui-icon { + background-position: -660px -40px; + } +.edui-default .edui-for-imageright .edui-icon { + background-position: -520px -40px; + } +.edui-default .edui-for-imagecenter .edui-icon { + background-position: -540px -40px; + } +.edui-default .edui-for-indent .edui-icon { + background-position: -400px 0; + } +.edui-default .edui-for-outdent .edui-icon { + background-position: -540px 0; + } +.edui-default .edui-for-webapp .edui-icon { + background-position: -601px -40px; + } +.edui-default .edui-for-table .edui-icon { + background-position: -580px -20px; + } +.edui-default .edui-for-edittable .edui-icon { + background-position: -420px -40px; + } +.edui-default .edui-for-template .edui-icon { + background-position: -339px -40px; + } +.edui-default .edui-for-delete .edui-icon { + background-position: -360px -40px; + } +.edui-default .edui-for-attachment .edui-icon { + background-position: -620px -40px; + } +.edui-default .edui-for-edittd .edui-icon { + background-position: -700px -40px; + } +.edui-default .edui-for-snapscreen .edui-icon { + background-position: -581px -40px; + } +.edui-default .edui-for-scrawl .edui-icon { + background-position: -801px -41px; + } +.edui-default .edui-for-background .edui-icon { + background-position: -680px -40px; + } +.edui-default .edui-for-music .edui-icon { + background-position: -18px -40px; + } +.edui-default .edui-for-formula .edui-icon { + background-position: -200px -40px; + } +.edui-default .edui-for-aligntd .edui-icon { + background-position: -236px -76px; + } +.edui-default .edui-for-insertparagraphtrue .edui-icon { + background-position: -625px -76px; + } +.edui-default .edui-for-insertparagraph .edui-icon { + background-position: -602px -76px; + } +.edui-default .edui-for-insertcaption .edui-icon { + background-position: -336px -76px; + } +.edui-default .edui-for-deletecaption .edui-icon { + background-position: -362px -76px; + } +.edui-default .edui-for-inserttitle .edui-icon { + background-position: -286px -76px; + } +.edui-default .edui-for-deletetitle .edui-icon { + background-position: -311px -76px; + } +.edui-default .edui-for-aligntable .edui-icon { + background-position: -440px 0; + } +.edui-default .edui-for-tablealignment-left .edui-icon { + background-position: -460px 0; + } +.edui-default .edui-for-tablealignment-center .edui-icon { + background-position: -420px 0; + } +.edui-default .edui-for-tablealignment-right .edui-icon { + background-position: -480px 0; + } +.edui-default .edui-for-drafts .edui-icon { + background-position: -560px 0; + } +.edui-default .edui-for-charts .edui-icon { + background: url(../images/charts.png ) no-repeat 2px 3px !important; + } +.edui-default .edui-for-inserttitlecol .edui-icon { + background-position: -673px -76px; + } +.edui-default .edui-for-deletetitlecol .edui-icon { + background-position: -698px -76px; + } +.edui-default .edui-for-simpleupload .edui-icon { + background-position: -380px 0; + } +/*splitbutton*/ +.edui-default .edui-toolbar .edui-splitbutton-body .edui-arrow, +.edui-default .edui-toolbar .edui-menubutton-body .edui-arrow { + width: 9px; + height: 20px; + background: url(../images/icons.png) -741px 0; + + _background: url(../images/icons.gif) -741px 0; + } +.edui-default .edui-toolbar .edui-splitbutton .edui-splitbutton-body, +.edui-default .edui-toolbar .edui-menubutton .edui-menubutton-body { + padding: 1px; + } +.edui-default .edui-toolbar .edui-splitborder { + width: 1px; + height: 20px; + } +.edui-default .edui-toolbar .edui-state-hover .edui-splitborder { + width: 1px; + border-left: 0 solid #dcac6c; + } +.edui-default .edui-toolbar .edui-state-active .edui-splitborder { + width: 0; + border-left: 1px solid gray; + } +.edui-default .edui-toolbar .edui-state-opened .edui-splitborder { + width: 1px; + border: 0; + } +.edui-default .edui-toolbar .edui-splitbutton .edui-state-hover .edui-splitbutton-body, +.edui-default .edui-toolbar .edui-menubutton .edui-state-hover .edui-menubutton-body { + padding: 0; + background-color: #fff5d4; + border: 1px solid #dcac6c; + } +.edui-default .edui-toolbar .edui-splitbutton .edui-state-checked .edui-splitbutton-body, +.edui-default .edui-toolbar .edui-menubutton .edui-state-checked .edui-menubutton-body { + padding: 0; + background-color: #ffe69f; + border: 1px solid #dcac6c; + } +.edui-default .edui-toolbar .edui-splitbutton .edui-state-active .edui-splitbutton-body, +.edui-default .edui-toolbar .edui-menubutton .edui-state-active .edui-menubutton-body { + padding: 0; + background-color: #fff; + border: 1px solid gray; + } +.edui-default .edui-state-disabled .edui-arrow { + filter: alpha(opacity=30); + opacity: .3; + } +.edui-default .edui-toolbar .edui-splitbutton .edui-state-opened .edui-splitbutton-body, +.edui-default .edui-toolbar .edui-menubutton .edui-state-opened .edui-menubutton-body { + padding: 0; + background-color: white; + border: 1px solid gray; + } +.edui-default .edui-for-insertorderedlist .edui-bordereraser, +.edui-default .edui-for-lineheight .edui-bordereraser, +.edui-default .edui-for-rowspacingtop .edui-bordereraser, +.edui-default .edui-for-rowspacingbottom .edui-bordereraser, +.edui-default .edui-for-insertunorderedlist .edui-bordereraser { + background-color: white; + } +/* 解决嵌套导致的图标问题 */ +.edui-default .edui-for-insertorderedlist .edui-popup-body .edui-icon, +.edui-default .edui-for-lineheight .edui-popup-body .edui-icon, +.edui-default .edui-for-rowspacingtop .edui-popup-body .edui-icon, +.edui-default .edui-for-rowspacingbottom .edui-popup-body .edui-icon, +.edui-default .edui-for-insertunorderedlist .edui-popup-body .edui-icon { + /*background-position: 0 -40px;*/ + background-image: none ; + } +/* 弹出菜单 */ +.edui-default .edui-popup { + z-index: 3000; + width: auto; + height: auto; + background-color: #fff; + } +.edui-default .edui-popup .edui-shadow { + top: 0; + left: 0; + width: 100%; + height: 100%; + } +.edui-default .edui-popup-content { + padding: 5px; + background: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + + *border-right-width: 2px; + *border-bottom-width: 2px; + } +.edui-default .edui-popup .edui-bordereraser { + height: 3px; + background-color: white; + } +.edui-default .edui-menu .edui-bordereraser { + height: 3px; + } +.edui-default .edui-anchor-topleft .edui-bordereraser { + top: -2px; + left: 1px; + } +.edui-default .edui-anchor-topright .edui-bordereraser { + top: -2px; + right: 1px; + } +.edui-default .edui-anchor-bottomleft .edui-bordereraser { + bottom: -6px; + left: 0; + height: 7px; + border-right: 1px solid gray; + border-left: 1px solid gray; + } +.edui-default .edui-anchor-bottomright .edui-bordereraser { + right: 0; + bottom: -6px; + height: 7px; + border-right: 1px solid gray; + border-left: 1px solid gray; + } +.edui-popup div { + width: auto; + height: auto; + } +.edui-default .edui-editor-messageholder { + position: absolute; + top: 28px; + right: 3px; + display: block; + width: 150px; + height: auto; + padding: 0; + margin: 0; + border: 0; + } +.edui-default .edui-message { + position: relative; + min-height: 10px; + padding: 0; + margin-bottom: 3px; + text-shadow: 0 1px 0 rgba(255, 255, 255, .5); + } +.edui-default .edui-message-body { + padding: 8px 15px 8px 8px; + color: #c09853; + background-color: #fcf8e3; + border: 1px solid #fbeed5; + border-radius: 4px; + } +.edui-default .edui-message-type-info { + color: #3a87ad; + background-color: #d9edf7; + border-color: #bce8f1; + } +.edui-default .edui-message-type-success { + color: #468847; + background-color: #dff0d8; + border-color: #d6e9c6; + } +.edui-default .edui-message-type-danger, +.edui-default .edui-message-type-error { + color: #b94a48; + background-color: #f2dede; + border-color: #eed3d7; + } +.edui-default .edui-message .edui-message-closer { + position: absolute; + top: 0; + right: 0; + display: block; + float: right; + width: 16px; + height: 16px; + padding: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 20px; + font-weight: bold; + line-height: 16px; + color: #999; + text-shadow: 0 1px 0 #fff; + cursor: pointer; + background: transparent; + border: 0; + } +.edui-default .edui-message .edui-message-content { + font-size: 10pt; + word-break: normal; + word-wrap: break-word; + } +/* 弹出对话框按钮和对话框大小 */ +.edui-default .edui-dialog { + position: absolute; + z-index: 2000; + } +.edui-dialog div { + width: auto; + } +.edui-default .edui-dialog-wrap { + margin-right: 6px; + margin-bottom: 6px; + } +.edui-default .edui-dialog-fullscreen-flag { + margin-right: 0; + margin-bottom: 0; + } +.edui-default .edui-dialog-body { + position: relative; + padding: 2px 0 0 2px; + + _zoom: 1; + } +.edui-default .edui-dialog-fullscreen-flag .edui-dialog-body { + padding: 0; + } +.edui-default .edui-dialog-shadow { + position: absolute; + top: 0; + left: 0; + z-index: -1; + width: 100%; + height: 100%; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); + box-shadow: 0 3px 9px rgba(0, 0, 0, .5); + + *border-right-width: 2px; + *border-bottom-width: 2px; + } +.edui-default .edui-dialog-foot { + background-color: white; + } +.edui-default .edui-dialog-titlebar { + position: relative; + min-height: 24px; + padding: 8px 10px; + line-height: 24px; + cursor: move; + border-bottom: 1px solid #e5e5e5; + } +.edui-default .edui-dialog-caption { + padding-left: 5px; + font-size: 12px; + font-weight: bold; + line-height: 26px; + } +.edui-default .edui-dialog-draghandle { + height: 26px; + } +.edui-default .edui-dialog-closebutton { + position: absolute !important; + top: 4px; + right: 3px; + } +.edui-default .edui-dialog-closebutton .edui-button-body { + width: 30px; + height: 30px; + font-size: 19.5px; + font-weight: 700; + line-height: 30px; + color: #000; + text-align: center; + text-shadow: 0 1px 0 #fff; + cursor: pointer; + filter: alpha(opacity=20); + opacity: .2; + } +.edui-default .edui-dialog-closebutton .edui-button-body:before { + content: '×'; + } +.edui-default .edui-dialog-closebutton .edui-button-body:hover { + filter: alpha(opacity=70); + opacity: .7; + } +.edui-default .edui-dialog-foot { + height: 40px; + } +.edui-default .edui-dialog-buttons { + position: absolute; + right: 0; + } +.edui-default .edui-dialog-buttons .edui-button { + margin-right: 10px; + } +.edui-default .edui-dialog-buttons .edui-button .edui-button-body { + width: 96px; + height: 24px; + font-size: 12px; + line-height: 24px; + text-align: center; + cursor: default; + background-color: #f2f2f2; + border: 1px solid #bfbfbf; + border-radius: 4px; + } +.edui-default .edui-dialog-buttons .edui-button .edui-state-hover .edui-button-body { + background-color: #dedede; + border-color: #a1a1a1; + -webkit-box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + box-shadow: 0 2px 1px rgba(0, 0, 0, .1); + } +.edui-default .edui-dialog iframe { + padding: 0; + margin: 0; + vertical-align: top; + border: 0; + } +.edui-default .edui-dialog-modalmask { + position: absolute; + background-color: #ccc; + filter: alpha(opacity=30); + opacity: .3; + /*z-index: 1999;*/ + } +.edui-default .edui-dialog-dragmask { + position: absolute; + cursor: move; + /*z-index: 2001;*/ + background-color: transparent; + } +.edui-default .edui-dialog-content { + position: relative; + } +.edui-default .dialogcontmask { + position: absolute; + display: block; + width: 100%; + height: 100%; + cursor: move; + visibility: hidden; + filter: alpha(opacity=0); + opacity: 0; + } +/*link-dialog*/ +.edui-default .edui-for-link .edui-dialog-content { + width: 420px; + height: 200px; + overflow: hidden; + } +/*background-dialog*/ +.edui-default .edui-for-background .edui-dialog-content { + width: 440px; + height: 280px; + overflow: hidden; + } +/*template-dialog*/ +.edui-default .edui-for-template .edui-dialog-content { + width: 630px; + height: 390px; + overflow: hidden; + } +/*scrawl-dialog*/ +.edui-default .edui-for-scrawl .edui-dialog-content { + width: 515px; + height: 360px; + + *width: 506px; + } +/*spechars-dialog*/ +.edui-default .edui-for-spechars .edui-dialog-content { + width: 620px; + height: 500px; + + *width: 630px; + *height: 570px; + } +/*image-dialog*/ +.edui-default .edui-for-insertimage .edui-dialog-content { + width: 650px; + height: 400px; + overflow: hidden; + } +/*webapp-dialog*/ +.edui-default .edui-for-webapp .edui-dialog-content { + width: 560px; + height: 450px; + overflow: hidden; + + _width: 565px; + } +/*image-insertframe*/ +.edui-default .edui-for-insertframe .edui-dialog-content { + width: 350px; + height: 200px; + overflow: hidden; + } +/*wordImage-dialog*/ +.edui-default .edui-for-wordimage .edui-dialog-content { + width: 620px; + height: 380px; + overflow: hidden; + } +/*attachment-dialog*/ +.edui-default .edui-for-attachment .edui-dialog-content { + width: 650px; + height: 400px; + overflow: hidden; + } +/*map-dialog*/ +.edui-default .edui-for-map .edui-dialog-content { + width: 550px; + height: 400px; + } +/*gmap-dialog*/ +.edui-default .edui-for-gmap .edui-dialog-content { + width: 550px; + height: 400px; + } +/*video-dialog*/ +.edui-default .edui-for-insertvideo .edui-dialog-content { + width: 590px; + height: 390px; + } +/*anchor-dialog*/ +.edui-default .edui-for-anchor .edui-dialog-content { + width: 320px; + height: 60px; + overflow: hidden; + } +/*searchreplace-dialog*/ +.edui-default .edui-for-searchreplace .edui-dialog-content { + width: 400px; + height: 220px; + } +/*help-dialog*/ +.edui-default .edui-for-help .edui-dialog-content { + width: 400px; + height: 420px; + } +/*edittable-dialog*/ +.edui-default .edui-for-edittable .edui-dialog-content { + width: 540px; + height: 335px; + + _width: 590px; + } +/*edittip-dialog*/ +.edui-default .edui-for-edittip .edui-dialog-content { + width: 225px; + height: 60px; + } +/*edittd-dialog*/ +.edui-default .edui-for-edittd .edui-dialog-content { + width: 240px; + height: 50px; + } +/*snapscreen-dialog*/ +.edui-default .edui-for-snapscreen .edui-dialog-content { + width: 400px; + height: 220px; + } +/*music-dialog*/ +.edui-default .edui-for-music .edui-dialog-content { + width: 515px; + height: 360px; + } +/*段落弹出菜单*/ +.edui-default .edui-for-paragraph .edui-listitem-label { + font-family: Tahoma, Verdana, Arial, Helvetica; + } +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-p { + font-size: 22px; + line-height: 27px; + } +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h1 { + font-size: 32px; + font-weight: bolder; + line-height: 36px; + } +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h2 { + font-size: 27px; + font-weight: bolder; + line-height: 29px; + } +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h3 { + font-size: 19px; + font-weight: bolder; + line-height: 23px; + } +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h4 { + font-size: 16px; + font-weight: bolder; + line-height: 19px; + } +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h5 { + font-size: 13px; + font-weight: bolder; + line-height: 16px; + } +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h6 { + font-size: 12px; + font-weight: bolder; + line-height: 14px; + } +/* 表格弹出菜单 */ +.edui-default .edui-for-inserttable .edui-splitborder { + display: none; + } +.edui-default .edui-for-inserttable .edui-splitbutton-body .edui-arrow { + width: 0; + } +.edui-default .edui-toolbar .edui-for-inserttable .edui-state-active .edui-splitborder { + border-left: 1px solid transparent; + } +.edui-default .edui-tablepicker .edui-infoarea { + width: 220px; + height: 14px; + margin-bottom: 3px; + clear: both; + font-size: 12px; + line-height: 14px; + } +.edui-default .edui-tablepicker .edui-infoarea .edui-label { + float: left; + } +.edui-default .edui-dialog-buttons .edui-label { + line-height: 24px; + } +.edui-default .edui-tablepicker .edui-infoarea .edui-clickable { + float: right; + } +.edui-default .edui-tablepicker .edui-pickarea { + width: 220px; + height: 220px; + background: url("../images/unhighlighted.gif") repeat; + } +.edui-default .edui-tablepicker .edui-pickarea .edui-overlay { + background: url("../images/highlighted.gif") repeat; + } +/* 颜色弹出菜单 */ +.edui-default .edui-colorpicker-topbar { + width: 200px; + height: 27px; + /*border-bottom: 1px gray dashed;*/ + } +.edui-default .edui-colorpicker-preview { + float: left; + width: 128px; + height: 20px; + margin-left: 1px; + border: 1px inset black; + } +.edui-default .edui-colorpicker-nocolor { + float: right; + height: 14px; + padding: 3px 5px; + margin-right: 1px; + font-size: 12px; + line-height: 14px; + cursor: pointer; + border: 1px solid #333; + } +.edui-default .edui-colorpicker-tablefirstrow { + height: 30px; + } +.edui-default .edui-colorpicker-colorcell { + display: block; + width: 14px; + height: 14px; + margin: 0; + cursor: pointer; + } +.edui-default .edui-colorpicker-colorcell:hover { + width: 14px; + height: 14px; + margin: 0; + } +.edui-default .edui-colorpicker-advbtn { + display: block; + height: 20px; + text-align: center; + cursor: pointer; + } +.arrow_down { + background: white url('../images/arrow_down.png') no-repeat center; + } +.arrow_up { + background: white url('../images/arrow_up.png') no-repeat center; + } +/*高级的样式*/ +.edui-colorpicker-adv { + position: relative; + display: none; + height: 180px; + overflow: hidden; + } +.edui-colorpicker-plant, +.edui-colorpicker-hue { + border: solid 1px #666; + } +.edui-colorpicker-pad { + position: absolute; + top: 13px; + left: 14px; + width: 150px; + height: 150px; + overflow: hidden; + cursor: crosshair; + background: red; + } +.edui-colorpicker-cover { + position: absolute; + top: 0; + left: 0; + width: 150px; + height: 150px; + background: url("../images/tangram-colorpicker.png") -160px -200px; + } +.edui-colorpicker-padDot { + position: absolute; + top: 0; + left: 0; + z-index: 1000; + width: 11px; + height: 11px; + overflow: hidden; + background: url(../images/tangram-colorpicker.png) 0 -200px repeat-x; + } +.edui-colorpicker-sliderMain { + position: absolute; + top: 13px; + left: 171px; + width: 19px; + height: 152px; + background: url(../images/tangram-colorpicker.png) -179px -12px no-repeat; + } +.edui-colorpicker-slider { + width: 100%; + height: 100%; + cursor: pointer; + } +.edui-colorpicker-thumb { + position: absolute; + top: 0; + right: -1px; + left: -1px; + height: 3px; + cursor: pointer; + background: white; + border: 1px solid black; + opacity: .8; + } +/*自动排版弹出菜单*/ +.edui-default .edui-autotypesetpicker .edui-autotypesetpicker-body { + margin-bottom: 3px; + clear: both; + font-size: 12px; + } +.edui-default .edui-autotypesetpicker-body table { + border-spacing: 2px; + border-collapse: separate; + } +.edui-default .edui-autotypesetpicker-body td { + font-size: 12px; + word-wrap: break-word; + } +.edui-default .edui-autotypesetpicker-body td input { + margin: 3px 3px 3px 4px; + + *margin: 1px 0 0 0; + } +/*自动排版弹出菜单*/ +.edui-default .edui-cellalignpicker .edui-cellalignpicker-body { + width: 70px; + font-size: 12px; + cursor: default; + } +.edui-default .edui-cellalignpicker-body table { + border-spacing: 0; + border-collapse: separate; + } +.edui-default .edui-cellalignpicker-body td { + padding: 1px; + } +.edui-default .edui-cellalignpicker-body .edui-icon { + width: 20px; + height: 20px; + padding: 1px; + background-image: url(../images/table-cell-align.png); + } +.edui-default .edui-cellalignpicker-body .edui-left { + background-position: 0 0; + } +.edui-default .edui-cellalignpicker-body .edui-center { + background-position: -25px 0; + } +.edui-default .edui-cellalignpicker-body .edui-right { + background-position: -51px 0; + } +.edui-default .edui-cellalignpicker-body td.edui-state-hover .edui-left { + background-position: -73px 0; + } +.edui-default .edui-cellalignpicker-body td.edui-state-hover .edui-center { + background-position: -98px 0; + } +.edui-default .edui-cellalignpicker-body td.edui-state-hover .edui-right { + background-position: -124px 0; + } +.edui-default .edui-cellalignpicker-body td.edui-cellalign-selected .edui-left { + background-color: #f1f4f5; + background-position: -146px 0; + } +.edui-default .edui-cellalignpicker-body td.edui-cellalign-selected .edui-center { + background-position: -245px 0; + } +.edui-default .edui-cellalignpicker-body td.edui-cellalign-selected .edui-right { + background-position: -271px 0; + } +/*分隔线*/ +.edui-default .edui-toolbar .edui-separator { + width: 2px; + height: 20px; + margin: 2px 4px 2px 3px; + background: url(../images/icons.png) -181px 0; + background: url(../images/icons.gif) -181px 0 \9; + } +/*颜色按钮 */ +.edui-default .edui-toolbar .edui-colorbutton .edui-colorlump { + position: absolute; + bottom: 1px; + left: 1px; + width: 18px; + height: 4px; + overflow: hidden; + } +/*表情按钮及弹出菜单*/ +/*去除了表情的下拉箭头*/ +.edui-default .edui-for-emotion .edui-icon { + background-position: -60px -20px; + } +.edui-default .edui-for-emotion .edui-popup-content iframe { + width: 514px; + height: 380px; + overflow: hidden; + } +.edui-default .edui-for-emotion .edui-popup-content { + position: relative; + z-index: 555; + } +.edui-default .edui-for-emotion .edui-splitborder { + display: none; + } +.edui-default .edui-for-emotion .edui-splitbutton-body .edui-arrow { + width: 0; + } +.edui-default .edui-toolbar .edui-for-emotion .edui-state-active .edui-splitborder { + border-left: 1px solid transparent; + } +/*contextmenu*/ +.edui-default .edui-hassubmenu .edui-arrow { + float: right; + width: 20px; + height: 20px; + background: url("../images/icons-all.gif") no-repeat 10px -233px; + } +.edui-default .edui-menu-body .edui-menuitem { + padding: 1px; + } +.edui-default .edui-menuseparator { + height: 1px; + margin: 2px 0; + overflow: hidden; + } +.edui-default .edui-menuseparator-inner { + margin-right: 1px; + margin-left: 29px; + border-bottom: 1px solid #e2e3e3; + } +.edui-default .edui-menu-body .edui-state-hover { + padding: 0 !important; + background-color: #fff5d4; + border: 1px solid #dcac6c; + } +/*弹出菜单*/ +.edui-default .edui-shortcutmenu { + width: 190px; + height: 50px; + padding: 2px; + background-color: #fff; + border: 1px solid #ccc; + border-radius: 4px; + } +/*粘贴弹出菜单*/ +.edui-default .edui-wordpastepop .edui-popup-content { + width: 54px; + height: 21px; + padding: 0; + border: none; + } +.edui-default .edui-pasteicon { + width: 100%; + height: 100%; + background-image: url('../images/wordpaste.png'); + background-position: 0 0; + } +.edui-default .edui-pasteicon.edui-state-opened { + background-position: 0 -34px; + } +.edui-default .edui-pastecontainer { + position: relative; + width: 97px; + visibility: hidden; + background: #fff; + border: 1px solid #ccc; + } +.edui-default .edui-pastecontainer .edui-title { + height: 25px; + padding-left: 5px; + font-size: 12px; + font-weight: bold; + line-height: 25px; + background: #f8f8ff; + } +.edui-default .edui-pastecontainer .edui-button { + margin: 3px 0; + overflow: hidden; + } +.edui-default .edui-pastecontainer .edui-button .edui-richtxticon, +.edui-default .edui-pastecontainer .edui-button .edui-tagicon, +.edui-default .edui-pastecontainer .edui-button .edui-plaintxticon { + float: left; + width: 29px; + height: 29px; + margin-left: 5px; + cursor: pointer; + background-image: url('../images/wordpaste.png'); + background-repeat: no-repeat; + } +.edui-default .edui-pastecontainer .edui-button .edui-richtxticon { + margin-left: 0; + background-position: -109px 0; + } +.edui-default .edui-pastecontainer .edui-button .edui-tagicon { + background-position: -148px 1px; + } +.edui-default .edui-pastecontainer .edui-button .edui-plaintxticon { + background-position: -72px 0; + } +.edui-default .edui-pastecontainer .edui-button .edui-state-hover .edui-richtxticon { + background-position: -109px -34px; + } +.edui-default .edui-pastecontainer .edui-button .edui-state-hover .edui-tagicon { + background-position: -148px -34px; + } +.edui-default .edui-pastecontainer .edui-button .edui-state-hover .edui-plaintxticon { + background-position: -72px -34px; + } diff --git a/root/res/zui/lib/ueditor/ueditor.min.css b/root/res/zui/lib/ueditor/ueditor.min.css new file mode 100644 index 0000000..0900926 --- /dev/null +++ b/root/res/zui/lib/ueditor/ueditor.min.css @@ -0,0 +1 @@ +.edui-default .edui-box{padding:0;margin:0;overflow:hidden;border:none}.edui-default a.edui-box{display:block;color:#000;text-decoration:none}.edui-default a.edui-box:hover{text-decoration:none}.edui-default a.edui-box:active{text-decoration:none}.edui-default table.edui-box{border-collapse:collapse}.edui-default ul.edui-box{list-style-type:none}div.edui-box{position:relative;display:inline-block!important;vertical-align:top}.edui-default .edui-clearfix{zoom:1}.edui-default .edui-clearfix:after{display:block;clear:both;content:'\20'}* html div.edui-box{display:inline!important}.edui-combox-body,.edui-default .edui-button-body,.edui-menubutton-body,.edui-splitbutton-body{position:relative}.edui-default .edui-popup{position:absolute;-webkit-user-select:none;-moz-user-select:none}.edui-default .edui-popup .edui-shadow{position:absolute;z-index:-1}.edui-default .edui-popup .edui-bordereraser{position:absolute;overflow:hidden}.edui-default .edui-tablepicker .edui-canvas{position:relative}.edui-default .edui-tablepicker .edui-canvas .edui-overlay{position:absolute}.edui-default .edui-dialog-modalmask,.edui-dialog-dragmask{position:absolute;top:0;left:0;width:100%;height:100%}.edui-default .edui-toolbar{position:relative}.edui-default .edui-label{cursor:default}.edui-default span.edui-clickable{color:#00f;text-decoration:underline;cursor:pointer}.edui-default span.edui-unclickable{color:gray;cursor:default}.edui-default .edui-toolbar{width:auto;height:auto;padding:1px;overflow:hidden;cursor:default;zoom:1;-webkit-user-select:none;-moz-user-select:none}.edui-default .edui-toolbar .edui-button,.edui-default .edui-toolbar .edui-combox,.edui-default .edui-toolbar .edui-menubutton,.edui-default .edui-toolbar .edui-splitbutton{margin:1px}.edui-default .edui-editor{position:relative;overflow:visible;background-color:#fff;border:1px solid #d4d4d4;border-radius:4px}.edui-editor div{width:auto;height:auto}.edui-default .edui-editor-toolbarbox{position:relative;zoom:1;border-top-left-radius:4px;border-top-right-radius:4px}.edui-default .edui-editor-toolbarboxouter{background-color:#fafafa;background-repeat:repeat-x;border-bottom:1px solid #d4d4d4;*zoom:1}.edui-default .edui-editor-toolbarboxinner{padding:2px}.edui-default .edui-editor-iframeholder{position:relative}.edui-default .edui-editor-bottomContainer{overflow:hidden}.edui-default .edui-editor-bottomContainer table{width:100%;height:0;overflow:hidden;border-spacing:0}.edui-default .edui-editor-bottomContainer td{font-family:Arial,Helvetica,Tahoma,Verdana,Sans-Serif;font-size:12px;line-height:20px;white-space:nowrap;border-top:1px solid #ccc}.edui-default .edui-editor-wordcount{margin-right:5px;color:#aaa;text-align:right}.edui-default .edui-editor-scale{width:12px}.edui-default .edui-editor-scale .edui-editor-icon{float:right;width:100%;height:12px;margin-top:10px;cursor:se-resize;background:url(../images/scale.png) no-repeat}.edui-default .edui-editor-breadcrumb{margin:2px 0 0 3px}.edui-default .edui-editor-breadcrumb span{color:#00f;text-decoration:underline;cursor:pointer}.edui-default .edui-toolbar .edui-for-fullscreen{float:right}.edui-default .edui-bubble .edui-popup-content{padding:5px;font-family:"宋体";font-size:10pt;background-color:#fff6d9;border:1px solid #dcac6c}.edui-default .edui-editor-toolbarmsg{position:absolute;bottom:-25px;left:0;z-index:1009;width:99.9%;background-color:#fff6d9;border-bottom:1px solid #ccc}.edui-default .edui-editor-toolbarmsg-upload{position:absolute;top:5px;left:350px;width:100px;height:16px;font-size:14px;line-height:16px;color:#00f;cursor:pointer}.edui-default .edui-editor-toolbarmsg-label{padding:4px;font-size:12px;line-height:16px}.edui-default .edui-editor-toolbarmsg-close{float:right;width:20px;height:16px;line-height:16px;color:red;cursor:pointer}.edui-default .edui-list .edui-bordereraser{display:none}.edui-default .edui-listitem{padding:1px;white-space:nowrap}.edui-default .edui-list .edui-state-hover{position:relative;padding:0;background-color:#fff5d4;border:1px solid #dcac6c}.edui-default .edui-for-fontfamily .edui-listitem-label{min-width:130px;height:22px;padding-left:5px;font-size:12px;line-height:22px;_width:120px}.edui-default .edui-for-insertcode .edui-listitem-label{min-width:120px;height:22px;padding-left:5px;font-size:12px;line-height:22px;_width:120px}.edui-default .edui-for-underline .edui-listitem-label{min-width:120px;padding:3px 5px;font-size:12px;_width:120px}.edui-default .edui-for-fontsize .edui-listitem-label{min-width:120px;padding:3px 5px;_width:120px}.edui-default .edui-for-paragraph .edui-listitem-label{min-width:200px;padding:2px 5px;_width:200px}.edui-default .edui-for-rowspacingbottom .edui-listitem-label,.edui-default .edui-for-rowspacingtop .edui-listitem-label{min-width:53px;padding:2px 5px;_width:53px}.edui-default .edui-for-lineheight .edui-listitem-label{min-width:53px;padding:2px 5px;_width:53px}.edui-default .edui-for-customstyle .edui-listitem-label{width:200px!important;min-width:200px;padding:2px 5px;_width:200px}.edui-default .edui-menu{z-index:3000}.edui-default .edui-menu .edui-popup-content{padding:3px}.edui-default .edui-menu-body{min-width:170px;background:url(../images/sparator_v.png) repeat-y 25px;_width:150px}.edui-default .edui-menuitem{height:20px;vertical-align:top;cursor:default}.edui-default .edui-menuitem .edui-icon{width:20px!important;height:20px!important;background:url(../images/icons.png) 0 -4000px;background:url(../images/icons.gif) 0 -4000px\9}.edui-default .edui-menuitem .edui-label{height:20px;padding-left:10px;font-size:12px;line-height:20px}.edui-default .edui-state-checked .edui-menuitem-body{background:url(../images/icons-all.gif) no-repeat 6px -205px}.edui-default .edui-state-disabled .edui-menuitem-label{color:gray}.edui-default .edui-toolbar .edui-combox-body .edui-button-body{width:60px;height:20px;padding-left:5px;margin:0 3px 0 0;font-size:12px;line-height:20px;white-space:nowrap}.edui-default .edui-toolbar .edui-combox-body .edui-arrow{width:9px;height:20px;background:url(../images/icons.png) -741px 0;_background:url(../images/icons.gif) -741px 0}.edui-default .edui-toolbar .edui-combox .edui-combox-body{background-color:#fff;border:1px solid #ccc;border-radius:2px;-webkit-border-radius:2px;-moz-border-radius:2px}.edui-default .edui-toolbar .edui-combox-body .edui-splitborder{display:none}.edui-default .edui-toolbar .edui-combox-body .edui-arrow{border-left:1px solid #ccc}.edui-default .edui-toolbar .edui-state-hover .edui-combox-body{background-color:#fff5d4;border:1px solid #dcac6c}.edui-default .edui-toolbar .edui-state-hover .edui-combox-body .edui-arrow{border-left:1px solid #dcac6c}.edui-default .edui-toolbar .edui-state-checked .edui-combox-body{background-color:#ffe69f;border:1px solid #dcac6c}.edui-toolbar .edui-state-checked .edui-combox-body .edui-arrow{border-left:1px solid #dcac6c}.edui-toolbar .edui-state-disabled .edui-combox-body{background-color:#f0f0ee;filter:alpha(opacity=30);opacity:.3}.edui-toolbar .edui-state-opened .edui-combox-body{background-color:#fff;border:1px solid gray}.edui-default .edui-toolbar .edui-button .edui-icon,.edui-default .edui-toolbar .edui-menubutton .edui-icon,.edui-default .edui-toolbar .edui-splitbutton .edui-icon{width:20px!important;height:20px!important;background-image:url(../images/icons.png);background-image:url(../images/icons.gif)\9}.edui-default .edui-toolbar .edui-button .edui-button-wrap{position:relative;padding:1px}.edui-default .edui-toolbar .edui-button .edui-state-hover .edui-button-wrap{padding:0;background-color:#fff5d4;border:1px solid #dcac6c}.edui-default .edui-toolbar .edui-button .edui-state-checked .edui-button-wrap{padding:0;background-color:#ffe69f;border:1px solid #dcac6c;border-radius:2px;-webkit-border-radius:2px;-moz-border-radius:2px}.edui-default .edui-toolbar .edui-button .edui-state-active .edui-button-wrap{padding:0;background-color:#fff;border:1px solid gray}.edui-default .edui-toolbar .edui-state-disabled .edui-label{color:#ccc}.edui-default .edui-toolbar .edui-state-disabled .edui-icon{filter:alpha(opacity=30);opacity:.3}.edui-default .edui-for-undo .edui-icon{background-position:-160px 0}.edui-default .edui-for-redo .edui-icon{background-position:-100px 0}.edui-default .edui-for-bold .edui-icon{background-position:0 0}.edui-default .edui-for-italic .edui-icon{background-position:-60px 0}.edui-default .edui-for-fontborder .edui-icon{background-position:-160px -40px}.edui-default .edui-for-underline .edui-icon{background-position:-140px 0}.edui-default .edui-for-strikethrough .edui-icon{background-position:-120px 0}.edui-default .edui-for-subscript .edui-icon{background-position:-600px 0}.edui-default .edui-for-superscript .edui-icon{background-position:-620px 0}.edui-default .edui-for-blockquote .edui-icon{background-position:-220px 0}.edui-default .edui-for-forecolor .edui-icon{background-position:-720px 0}.edui-default .edui-for-backcolor .edui-icon{background-position:-760px 0}.edui-default .edui-for-inserttable .edui-icon{background-position:-580px -20px}.edui-default .edui-for-autotypeset .edui-icon{background-position:-640px -40px}.edui-default .edui-for-justifyleft .edui-icon{background-position:-460px 0}.edui-default .edui-for-justifycenter .edui-icon{background-position:-420px 0}.edui-default .edui-for-justifyright .edui-icon{background-position:-480px 0}.edui-default .edui-for-justifyjustify .edui-icon{background-position:-440px 0}.edui-default .edui-for-insertorderedlist .edui-icon{background-position:-80px 0}.edui-default .edui-for-insertunorderedlist .edui-icon{background-position:-20px 0}.edui-default .edui-for-lineheight .edui-icon{background-position:-725px -40px}.edui-default .edui-for-rowspacingbottom .edui-icon{background-position:-745px -40px}.edui-default .edui-for-rowspacingtop .edui-icon{background-position:-765px -40px}.edui-default .edui-for-horizontal .edui-icon{background-position:-360px 0}.edui-default .edui-for-link .edui-icon{background-position:-500px 0}.edui-default .edui-for-code .edui-icon{background-position:-440px -40px}.edui-default .edui-for-insertimage .edui-icon{background-position:-726px -77px}.edui-default .edui-for-insertframe .edui-icon{background-position:-240px -40px}.edui-default .edui-for-emoticon .edui-icon{background-position:-60px -20px}.edui-default .edui-for-spechars .edui-icon{background-position:-240px 0}.edui-default .edui-for-help .edui-icon{background-position:-340px 0}.edui-default .edui-for-print .edui-icon{background-position:-440px -20px}.edui-default .edui-for-preview .edui-icon{background-position:-420px -20px}.edui-default .edui-for-selectall .edui-icon{background-position:-400px -20px}.edui-default .edui-for-searchreplace .edui-icon{background-position:-520px -20px}.edui-default .edui-for-map .edui-icon{background-position:-40px -40px}.edui-default .edui-for-gmap .edui-icon{background-position:-260px -40px}.edui-default .edui-for-insertvideo .edui-icon{background-position:-320px -20px}.edui-default .edui-for-time .edui-icon{background-position:-160px -20px}.edui-default .edui-for-date .edui-icon{background-position:-140px -20px}.edui-default .edui-for-cut .edui-icon{background-position:-680px 0}.edui-default .edui-for-copy .edui-icon{background-position:-700px 0}.edui-default .edui-for-paste .edui-icon{background-position:-560px 0}.edui-default .edui-for-formatmatch .edui-icon{background-position:-40px 0}.edui-default .edui-for-pasteplain .edui-icon{background-position:-360px -20px}.edui-default .edui-for-directionalityltr .edui-icon{background-position:-20px -20px}.edui-default .edui-for-directionalityrtl .edui-icon{background-position:-40px -20px}.edui-default .edui-for-source .edui-icon{background-position:-261px 0}.edui-default .edui-for-removeformat .edui-icon{background-position:-580px 0}.edui-default .edui-for-unlink .edui-icon{background-position:-640px 0}.edui-default .edui-for-touppercase .edui-icon{background-position:-786px 0}.edui-default .edui-for-tolowercase .edui-icon{background-position:-806px 0}.edui-default .edui-for-insertrow .edui-icon{background-position:-478px -76px}.edui-default .edui-for-insertrownext .edui-icon{background-position:-498px -76px}.edui-default .edui-for-insertcol .edui-icon{background-position:-455px -76px}.edui-default .edui-for-insertcolnext .edui-icon{background-position:-429px -76px}.edui-default .edui-for-mergeright .edui-icon{background-position:-60px -40px}.edui-default .edui-for-mergedown .edui-icon{background-position:-80px -40px}.edui-default .edui-for-splittorows .edui-icon{background-position:-100px -40px}.edui-default .edui-for-splittocols .edui-icon{background-position:-120px -40px}.edui-default .edui-for-insertparagraphbeforetable .edui-icon{background-position:-140px -40px}.edui-default .edui-for-deleterow .edui-icon{background-position:-660px -20px}.edui-default .edui-for-deletecol .edui-icon{background-position:-640px -20px}.edui-default .edui-for-splittocells .edui-icon{background-position:-800px -20px}.edui-default .edui-for-mergecells .edui-icon{background-position:-760px -20px}.edui-default .edui-for-deletetable .edui-icon{background-position:-620px -20px}.edui-default .edui-for-cleardoc .edui-icon{background-position:-520px 0}.edui-default .edui-for-fullscreen .edui-icon{background-position:-100px -20px}.edui-default .edui-for-anchor .edui-icon{background-position:-200px 0}.edui-default .edui-for-pagebreak .edui-icon{background-position:-460px -40px}.edui-default .edui-for-imagenone .edui-icon{background-position:-480px -40px}.edui-default .edui-for-imageleft .edui-icon{background-position:-500px -40px}.edui-default .edui-for-wordimage .edui-icon{background-position:-660px -40px}.edui-default .edui-for-imageright .edui-icon{background-position:-520px -40px}.edui-default .edui-for-imagecenter .edui-icon{background-position:-540px -40px}.edui-default .edui-for-indent .edui-icon{background-position:-400px 0}.edui-default .edui-for-outdent .edui-icon{background-position:-540px 0}.edui-default .edui-for-webapp .edui-icon{background-position:-601px -40px}.edui-default .edui-for-table .edui-icon{background-position:-580px -20px}.edui-default .edui-for-edittable .edui-icon{background-position:-420px -40px}.edui-default .edui-for-template .edui-icon{background-position:-339px -40px}.edui-default .edui-for-delete .edui-icon{background-position:-360px -40px}.edui-default .edui-for-attachment .edui-icon{background-position:-620px -40px}.edui-default .edui-for-edittd .edui-icon{background-position:-700px -40px}.edui-default .edui-for-snapscreen .edui-icon{background-position:-581px -40px}.edui-default .edui-for-scrawl .edui-icon{background-position:-801px -41px}.edui-default .edui-for-background .edui-icon{background-position:-680px -40px}.edui-default .edui-for-music .edui-icon{background-position:-18px -40px}.edui-default .edui-for-formula .edui-icon{background-position:-200px -40px}.edui-default .edui-for-aligntd .edui-icon{background-position:-236px -76px}.edui-default .edui-for-insertparagraphtrue .edui-icon{background-position:-625px -76px}.edui-default .edui-for-insertparagraph .edui-icon{background-position:-602px -76px}.edui-default .edui-for-insertcaption .edui-icon{background-position:-336px -76px}.edui-default .edui-for-deletecaption .edui-icon{background-position:-362px -76px}.edui-default .edui-for-inserttitle .edui-icon{background-position:-286px -76px}.edui-default .edui-for-deletetitle .edui-icon{background-position:-311px -76px}.edui-default .edui-for-aligntable .edui-icon{background-position:-440px 0}.edui-default .edui-for-tablealignment-left .edui-icon{background-position:-460px 0}.edui-default .edui-for-tablealignment-center .edui-icon{background-position:-420px 0}.edui-default .edui-for-tablealignment-right .edui-icon{background-position:-480px 0}.edui-default .edui-for-drafts .edui-icon{background-position:-560px 0}.edui-default .edui-for-charts .edui-icon{background:url(../images/charts.png) no-repeat 2px 3px!important}.edui-default .edui-for-inserttitlecol .edui-icon{background-position:-673px -76px}.edui-default .edui-for-deletetitlecol .edui-icon{background-position:-698px -76px}.edui-default .edui-for-simpleupload .edui-icon{background-position:-380px 0}.edui-default .edui-toolbar .edui-menubutton-body .edui-arrow,.edui-default .edui-toolbar .edui-splitbutton-body .edui-arrow{width:9px;height:20px;background:url(../images/icons.png) -741px 0;_background:url(../images/icons.gif) -741px 0}.edui-default .edui-toolbar .edui-menubutton .edui-menubutton-body,.edui-default .edui-toolbar .edui-splitbutton .edui-splitbutton-body{padding:1px}.edui-default .edui-toolbar .edui-splitborder{width:1px;height:20px}.edui-default .edui-toolbar .edui-state-hover .edui-splitborder{width:1px;border-left:0 solid #dcac6c}.edui-default .edui-toolbar .edui-state-active .edui-splitborder{width:0;border-left:1px solid gray}.edui-default .edui-toolbar .edui-state-opened .edui-splitborder{width:1px;border:0}.edui-default .edui-toolbar .edui-menubutton .edui-state-hover .edui-menubutton-body,.edui-default .edui-toolbar .edui-splitbutton .edui-state-hover .edui-splitbutton-body{padding:0;background-color:#fff5d4;border:1px solid #dcac6c}.edui-default .edui-toolbar .edui-menubutton .edui-state-checked .edui-menubutton-body,.edui-default .edui-toolbar .edui-splitbutton .edui-state-checked .edui-splitbutton-body{padding:0;background-color:#ffe69f;border:1px solid #dcac6c}.edui-default .edui-toolbar .edui-menubutton .edui-state-active .edui-menubutton-body,.edui-default .edui-toolbar .edui-splitbutton .edui-state-active .edui-splitbutton-body{padding:0;background-color:#fff;border:1px solid gray}.edui-default .edui-state-disabled .edui-arrow{filter:alpha(opacity=30);opacity:.3}.edui-default .edui-toolbar .edui-menubutton .edui-state-opened .edui-menubutton-body,.edui-default .edui-toolbar .edui-splitbutton .edui-state-opened .edui-splitbutton-body{padding:0;background-color:#fff;border:1px solid gray}.edui-default .edui-for-insertorderedlist .edui-bordereraser,.edui-default .edui-for-insertunorderedlist .edui-bordereraser,.edui-default .edui-for-lineheight .edui-bordereraser,.edui-default .edui-for-rowspacingbottom .edui-bordereraser,.edui-default .edui-for-rowspacingtop .edui-bordereraser{background-color:#fff}.edui-default .edui-for-insertorderedlist .edui-popup-body .edui-icon,.edui-default .edui-for-insertunorderedlist .edui-popup-body .edui-icon,.edui-default .edui-for-lineheight .edui-popup-body .edui-icon,.edui-default .edui-for-rowspacingbottom .edui-popup-body .edui-icon,.edui-default .edui-for-rowspacingtop .edui-popup-body .edui-icon{background-image:none}.edui-default .edui-popup{z-index:3000;width:auto;height:auto;background-color:#fff}.edui-default .edui-popup .edui-shadow{top:0;left:0;width:100%;height:100%}.edui-default .edui-popup-content{padding:5px;background:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);*border-right-width:2px;*border-bottom-width:2px}.edui-default .edui-popup .edui-bordereraser{height:3px;background-color:#fff}.edui-default .edui-menu .edui-bordereraser{height:3px}.edui-default .edui-anchor-topleft .edui-bordereraser{top:-2px;left:1px}.edui-default .edui-anchor-topright .edui-bordereraser{top:-2px;right:1px}.edui-default .edui-anchor-bottomleft .edui-bordereraser{bottom:-6px;left:0;height:7px;border-right:1px solid gray;border-left:1px solid gray}.edui-default .edui-anchor-bottomright .edui-bordereraser{right:0;bottom:-6px;height:7px;border-right:1px solid gray;border-left:1px solid gray}.edui-popup div{width:auto;height:auto}.edui-default .edui-editor-messageholder{position:absolute;top:28px;right:3px;display:block;width:150px;height:auto;padding:0;margin:0;border:0}.edui-default .edui-message{position:relative;min-height:10px;padding:0;margin-bottom:3px;text-shadow:0 1px 0 rgba(255,255,255,.5)}.edui-default .edui-message-body{padding:8px 15px 8px 8px;color:#c09853;background-color:#fcf8e3;border:1px solid #fbeed5;border-radius:4px}.edui-default .edui-message-type-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.edui-default .edui-message-type-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.edui-default .edui-message-type-danger,.edui-default .edui-message-type-error{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.edui-default .edui-message .edui-message-closer{position:absolute;top:0;right:0;display:block;float:right;width:16px;height:16px;padding:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:20px;font-weight:700;line-height:16px;color:#999;text-shadow:0 1px 0 #fff;cursor:pointer;background:0 0;border:0}.edui-default .edui-message .edui-message-content{font-size:10pt;word-break:normal;word-wrap:break-word}.edui-default .edui-dialog{position:absolute;z-index:2000}.edui-dialog div{width:auto}.edui-default .edui-dialog-wrap{margin-right:6px;margin-bottom:6px}.edui-default .edui-dialog-fullscreen-flag{margin-right:0;margin-bottom:0}.edui-default .edui-dialog-body{position:relative;padding:2px 0 0 2px;_zoom:1}.edui-default .edui-dialog-fullscreen-flag .edui-dialog-body{padding:0}.edui-default .edui-dialog-shadow{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);*border-right-width:2px;*border-bottom-width:2px}.edui-default .edui-dialog-foot{background-color:#fff}.edui-default .edui-dialog-titlebar{position:relative;min-height:24px;padding:8px 10px;line-height:24px;cursor:move;border-bottom:1px solid #e5e5e5}.edui-default .edui-dialog-caption{padding-left:5px;font-size:12px;font-weight:700;line-height:26px}.edui-default .edui-dialog-draghandle{height:26px}.edui-default .edui-dialog-closebutton{position:absolute!important;top:4px;right:3px}.edui-default .edui-dialog-closebutton .edui-button-body{width:30px;height:30px;font-size:19.5px;font-weight:700;line-height:30px;color:#000;text-align:center;text-shadow:0 1px 0 #fff;cursor:pointer;filter:alpha(opacity=20);opacity:.2}.edui-default .edui-dialog-closebutton .edui-button-body:before{content:'×'}.edui-default .edui-dialog-closebutton .edui-button-body:hover{filter:alpha(opacity=70);opacity:.7}.edui-default .edui-dialog-foot{height:40px}.edui-default .edui-dialog-buttons{position:absolute;right:0}.edui-default .edui-dialog-buttons .edui-button{margin-right:10px}.edui-default .edui-dialog-buttons .edui-button .edui-button-body{width:96px;height:24px;font-size:12px;line-height:24px;text-align:center;cursor:default;background-color:#f2f2f2;border:1px solid #bfbfbf;border-radius:4px}.edui-default .edui-dialog-buttons .edui-button .edui-state-hover .edui-button-body{background-color:#dedede;border-color:#a1a1a1;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.edui-default .edui-dialog iframe{padding:0;margin:0;vertical-align:top;border:0}.edui-default .edui-dialog-modalmask{position:absolute;background-color:#ccc;filter:alpha(opacity=30);opacity:.3}.edui-default .edui-dialog-dragmask{position:absolute;cursor:move;background-color:transparent}.edui-default .edui-dialog-content{position:relative}.edui-default .dialogcontmask{position:absolute;display:block;width:100%;height:100%;cursor:move;visibility:hidden;filter:alpha(opacity=0);opacity:0}.edui-default .edui-for-link .edui-dialog-content{width:420px;height:200px;overflow:hidden}.edui-default .edui-for-background .edui-dialog-content{width:440px;height:280px;overflow:hidden}.edui-default .edui-for-template .edui-dialog-content{width:630px;height:390px;overflow:hidden}.edui-default .edui-for-scrawl .edui-dialog-content{width:515px;height:360px;*width:506px}.edui-default .edui-for-spechars .edui-dialog-content{width:620px;height:500px;*width:630px;*height:570px}.edui-default .edui-for-insertimage .edui-dialog-content{width:650px;height:400px;overflow:hidden}.edui-default .edui-for-webapp .edui-dialog-content{width:560px;height:450px;overflow:hidden;_width:565px}.edui-default .edui-for-insertframe .edui-dialog-content{width:350px;height:200px;overflow:hidden}.edui-default .edui-for-wordimage .edui-dialog-content{width:620px;height:380px;overflow:hidden}.edui-default .edui-for-attachment .edui-dialog-content{width:650px;height:400px;overflow:hidden}.edui-default .edui-for-map .edui-dialog-content{width:550px;height:400px}.edui-default .edui-for-gmap .edui-dialog-content{width:550px;height:400px}.edui-default .edui-for-insertvideo .edui-dialog-content{width:590px;height:390px}.edui-default .edui-for-anchor .edui-dialog-content{width:320px;height:60px;overflow:hidden}.edui-default .edui-for-searchreplace .edui-dialog-content{width:400px;height:220px}.edui-default .edui-for-help .edui-dialog-content{width:400px;height:420px}.edui-default .edui-for-edittable .edui-dialog-content{width:540px;height:335px;_width:590px}.edui-default .edui-for-edittip .edui-dialog-content{width:225px;height:60px}.edui-default .edui-for-edittd .edui-dialog-content{width:240px;height:50px}.edui-default .edui-for-snapscreen .edui-dialog-content{width:400px;height:220px}.edui-default .edui-for-music .edui-dialog-content{width:515px;height:360px}.edui-default .edui-for-paragraph .edui-listitem-label{font-family:Tahoma,Verdana,Arial,Helvetica}.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-p{font-size:22px;line-height:27px}.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h1{font-size:32px;font-weight:bolder;line-height:36px}.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h2{font-size:27px;font-weight:bolder;line-height:29px}.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h3{font-size:19px;font-weight:bolder;line-height:23px}.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h4{font-size:16px;font-weight:bolder;line-height:19px}.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h5{font-size:13px;font-weight:bolder;line-height:16px}.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h6{font-size:12px;font-weight:bolder;line-height:14px}.edui-default .edui-for-inserttable .edui-splitborder{display:none}.edui-default .edui-for-inserttable .edui-splitbutton-body .edui-arrow{width:0}.edui-default .edui-toolbar .edui-for-inserttable .edui-state-active .edui-splitborder{border-left:1px solid transparent}.edui-default .edui-tablepicker .edui-infoarea{width:220px;height:14px;margin-bottom:3px;clear:both;font-size:12px;line-height:14px}.edui-default .edui-tablepicker .edui-infoarea .edui-label{float:left}.edui-default .edui-dialog-buttons .edui-label{line-height:24px}.edui-default .edui-tablepicker .edui-infoarea .edui-clickable{float:right}.edui-default .edui-tablepicker .edui-pickarea{width:220px;height:220px;background:url(../images/unhighlighted.gif) repeat}.edui-default .edui-tablepicker .edui-pickarea .edui-overlay{background:url(../images/highlighted.gif) repeat}.edui-default .edui-colorpicker-topbar{width:200px;height:27px}.edui-default .edui-colorpicker-preview{float:left;width:128px;height:20px;margin-left:1px;border:1px inset #000}.edui-default .edui-colorpicker-nocolor{float:right;height:14px;padding:3px 5px;margin-right:1px;font-size:12px;line-height:14px;cursor:pointer;border:1px solid #333}.edui-default .edui-colorpicker-tablefirstrow{height:30px}.edui-default .edui-colorpicker-colorcell{display:block;width:14px;height:14px;margin:0;cursor:pointer}.edui-default .edui-colorpicker-colorcell:hover{width:14px;height:14px;margin:0}.edui-default .edui-colorpicker-advbtn{display:block;height:20px;text-align:center;cursor:pointer}.arrow_down{background:#fff url(../images/arrow_down.png) no-repeat center}.arrow_up{background:#fff url(../images/arrow_up.png) no-repeat center}.edui-colorpicker-adv{position:relative;display:none;height:180px;overflow:hidden}.edui-colorpicker-hue,.edui-colorpicker-plant{border:solid 1px #666}.edui-colorpicker-pad{position:absolute;top:13px;left:14px;width:150px;height:150px;overflow:hidden;cursor:crosshair;background:red}.edui-colorpicker-cover{position:absolute;top:0;left:0;width:150px;height:150px;background:url(../images/tangram-colorpicker.png) -160px -200px}.edui-colorpicker-padDot{position:absolute;top:0;left:0;z-index:1000;width:11px;height:11px;overflow:hidden;background:url(../images/tangram-colorpicker.png) 0 -200px repeat-x}.edui-colorpicker-sliderMain{position:absolute;top:13px;left:171px;width:19px;height:152px;background:url(../images/tangram-colorpicker.png) -179px -12px no-repeat}.edui-colorpicker-slider{width:100%;height:100%;cursor:pointer}.edui-colorpicker-thumb{position:absolute;top:0;right:-1px;left:-1px;height:3px;cursor:pointer;background:#fff;border:1px solid #000;opacity:.8}.edui-default .edui-autotypesetpicker .edui-autotypesetpicker-body{margin-bottom:3px;clear:both;font-size:12px}.edui-default .edui-autotypesetpicker-body table{border-spacing:2px;border-collapse:separate}.edui-default .edui-autotypesetpicker-body td{font-size:12px;word-wrap:break-word}.edui-default .edui-autotypesetpicker-body td input{margin:3px 3px 3px 4px;*margin:1px 0 0 0}.edui-default .edui-cellalignpicker .edui-cellalignpicker-body{width:70px;font-size:12px;cursor:default}.edui-default .edui-cellalignpicker-body table{border-spacing:0;border-collapse:separate}.edui-default .edui-cellalignpicker-body td{padding:1px}.edui-default .edui-cellalignpicker-body .edui-icon{width:20px;height:20px;padding:1px;background-image:url(../images/table-cell-align.png)}.edui-default .edui-cellalignpicker-body .edui-left{background-position:0 0}.edui-default .edui-cellalignpicker-body .edui-center{background-position:-25px 0}.edui-default .edui-cellalignpicker-body .edui-right{background-position:-51px 0}.edui-default .edui-cellalignpicker-body td.edui-state-hover .edui-left{background-position:-73px 0}.edui-default .edui-cellalignpicker-body td.edui-state-hover .edui-center{background-position:-98px 0}.edui-default .edui-cellalignpicker-body td.edui-state-hover .edui-right{background-position:-124px 0}.edui-default .edui-cellalignpicker-body td.edui-cellalign-selected .edui-left{background-color:#f1f4f5;background-position:-146px 0}.edui-default .edui-cellalignpicker-body td.edui-cellalign-selected .edui-center{background-position:-245px 0}.edui-default .edui-cellalignpicker-body td.edui-cellalign-selected .edui-right{background-position:-271px 0}.edui-default .edui-toolbar .edui-separator{width:2px;height:20px;margin:2px 4px 2px 3px;background:url(../images/icons.png) -181px 0;background:url(../images/icons.gif) -181px 0\9}.edui-default .edui-toolbar .edui-colorbutton .edui-colorlump{position:absolute;bottom:1px;left:1px;width:18px;height:4px;overflow:hidden}.edui-default .edui-for-emotion .edui-icon{background-position:-60px -20px}.edui-default .edui-for-emotion .edui-popup-content iframe{width:514px;height:380px;overflow:hidden}.edui-default .edui-for-emotion .edui-popup-content{position:relative;z-index:555}.edui-default .edui-for-emotion .edui-splitborder{display:none}.edui-default .edui-for-emotion .edui-splitbutton-body .edui-arrow{width:0}.edui-default .edui-toolbar .edui-for-emotion .edui-state-active .edui-splitborder{border-left:1px solid transparent}.edui-default .edui-hassubmenu .edui-arrow{float:right;width:20px;height:20px;background:url(../images/icons-all.gif) no-repeat 10px -233px}.edui-default .edui-menu-body .edui-menuitem{padding:1px}.edui-default .edui-menuseparator{height:1px;margin:2px 0;overflow:hidden}.edui-default .edui-menuseparator-inner{margin-right:1px;margin-left:29px;border-bottom:1px solid #e2e3e3}.edui-default .edui-menu-body .edui-state-hover{padding:0!important;background-color:#fff5d4;border:1px solid #dcac6c}.edui-default .edui-shortcutmenu{width:190px;height:50px;padding:2px;background-color:#fff;border:1px solid #ccc;border-radius:4px}.edui-default .edui-wordpastepop .edui-popup-content{width:54px;height:21px;padding:0;border:none}.edui-default .edui-pasteicon{width:100%;height:100%;background-image:url(../images/wordpaste.png);background-position:0 0}.edui-default .edui-pasteicon.edui-state-opened{background-position:0 -34px}.edui-default .edui-pastecontainer{position:relative;width:97px;visibility:hidden;background:#fff;border:1px solid #ccc}.edui-default .edui-pastecontainer .edui-title{height:25px;padding-left:5px;font-size:12px;font-weight:700;line-height:25px;background:#f8f8ff}.edui-default .edui-pastecontainer .edui-button{margin:3px 0;overflow:hidden}.edui-default .edui-pastecontainer .edui-button .edui-plaintxticon,.edui-default .edui-pastecontainer .edui-button .edui-richtxticon,.edui-default .edui-pastecontainer .edui-button .edui-tagicon{float:left;width:29px;height:29px;margin-left:5px;cursor:pointer;background-image:url(../images/wordpaste.png);background-repeat:no-repeat}.edui-default .edui-pastecontainer .edui-button .edui-richtxticon{margin-left:0;background-position:-109px 0}.edui-default .edui-pastecontainer .edui-button .edui-tagicon{background-position:-148px 1px}.edui-default .edui-pastecontainer .edui-button .edui-plaintxticon{background-position:-72px 0}.edui-default .edui-pastecontainer .edui-button .edui-state-hover .edui-richtxticon{background-position:-109px -34px}.edui-default .edui-pastecontainer .edui-button .edui-state-hover .edui-tagicon{background-position:-148px -34px}.edui-default .edui-pastecontainer .edui-button .edui-state-hover .edui-plaintxticon{background-position:-72px -34px} \ No newline at end of file diff --git a/root/res/zui/lib/uploader/Moxie.swf b/root/res/zui/lib/uploader/Moxie.swf new file mode 100644 index 0000000000000000000000000000000000000000..4e82d8ea4f6f23f32e3dd058d2ffdb48b21e920a GIT binary patch literal 27517 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 V#fEX~U4NJ`-WUt1{{`E59LFw?PXhn| literal 0 HcmV?d00001 diff --git a/root/res/zui/lib/uploader/Moxie.xap b/root/res/zui/lib/uploader/Moxie.xap new file mode 100644 index 0000000000000000000000000000000000000000..70ef069dad67effad3032a5537a3746fa09ebb4b GIT binary patch literal 65757 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 Q5I>Lg&-iM6|99@c0D=zP_5c6? literal 0 HcmV?d00001 diff --git a/root/res/zui/lib/uploader/zui.uploader.css b/root/res/zui/lib/uploader/zui.uploader.css new file mode 100644 index 0000000..b1121ae --- /dev/null +++ b/root/res/zui/lib/uploader/zui.uploader.css @@ -0,0 +1,615 @@ +/*! + * ZUI: 文件上传 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +.uploader { + position: relative; + margin-bottom: 20px; + } +.uploader-btn-hidden { + position: absolute; + top: -1px; + left: -1px; + width: 1px; + height: 1px; + opacity: 0; + } +.file-dragable { + position: relative; + } +[data-drop-placeholder]:before { + position: absolute; + top: 0; + left: 0; + z-index: 10; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + width: 100%; + height: 100%; + font-size: 16px; + text-align: center; + pointer-events: none; + content: attr(data-drop-placeholder); + background-color: rgba(255, 240, 213, .5); + filter: alpha(opacity=0); + border: 2px dashed #f1a325; + opacity: 0; + -webkit-transition: all .2s; + -o-transition: all .2s; + transition: all .2s; + -webkit-transform: scale(.95); + -ms-transform: scale(.95); + -o-transform: scale(.95); + transform: scale(.95); + + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + } +.ie [data-drop-placeholder]:before { + display: none !important; + } +.file-dragable[data-drop-placeholder]:before { + filter: alpha(opacity=100); + opacity: 1; + -webkit-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); + } +.file-drag-enter[data-drop-placeholder]:before { + background-color: #fff0d5; + border-style: solid; + } +.uploader-files, +.file-list { + position: relative; + min-height: 32px; + margin-bottom: 10px; + border: 1px solid #ddd; + } +.uploader-files[data-drag-placeholder]:before, +.file-list[data-drag-placeholder]:before { + position: absolute; + top: 50%; + right: 0; + left: 0; + display: block; + margin-top: -15px; + line-height: 32px; + color: #ddd; + text-align: center; + pointer-events: none; + content: attr(data-drag-placeholder); + -webkit-transition: all .4s; + -o-transition: all .4s; + transition: all .4s; + } +.uploader-files[data-drag-placeholder]:hover:before, +.file-list[data-drag-placeholder]:hover:before { + color: #808080; + } +.uploader-files .file-icon, +.file-list .file-icon { + position: relative; + width: 32px; + height: 32px; + line-height: 32px; + text-align: center; + filter: alpha(opacity=70); + opacity: .7; + -webkit-transition: opacity .4s; + -o-transition: opacity .4s; + transition: opacity .4s; + } +.uploader-files .file-icon-image, +.file-list .file-icon-image { + position: absolute; + top: 5px; + right: 5px; + bottom: 5px; + left: 5px; + background-color: #fff; + background-repeat: no-repeat; + background-position: center; + -webkit-background-size: cover; + background-size: cover; + border: 1px solid #ddd; + } +.uploader-files .file-name, +.file-list .file-name { + text-decoration: none; + -webkit-transition: all .2s; + -o-transition: all .2s; + transition: all .2s; + } +.uploader-files .file-name[contenteditable], +.file-list .file-name[contenteditable] { + padding: 0 5px; + background-color: #fff; + outline: 1px solid #3280fc; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #97befd; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #97befd; + } +.uploader-files .file-name, +.file-list .file-name, +.uploader-files .file-size, +.file-list .file-size { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } +.uploader-files .file-renaming .file-name[contenteditable], +.file-list .file-renaming .file-name[contenteditable] { + text-overflow: initial; + } +.uploader-files .file:hover .file-name, +.file-list .file:hover .file-name { + color: #3280fc; + } +.uploader-files .file:hover .file-icon, +.file-list .file:hover .file-icon { + opacity: 1; + } +.uploader-files .file-status, +.file-list .file-status { + display: inline-block; + line-height: 20px; + text-align: right; + } +.uploader-files .file-status:hover, +.file-list .file-status:hover { + background-color: rgba(0, 0, 0, .07); + } +.uploader-files .file-status > .icon, +.file-list .file-status > .icon { + line-height: 20px; + vertical-align: middle; + opacity: 1; + -webkit-transition: all .8s; + -o-transition: all .8s; + transition: all .8s; + -webkit-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); + } +.uploader-files .file-status > .icon:before, +.file-list .file-status > .icon:before { + content: '\e653'; + } +.uploader-files .file-status > .text, +.file-list .file-status > .text { + display: inline-block; + padding: 0 6px; + font-size: 12px; + line-height: 20px; + } +.uploader-files .file-status > .text:empty, +.file-list .file-status > .text:empty { + display: none; + } +.uploader-files .file[data-status="uploading"] .file-status > .icon, +.file-list .file[data-status="uploading"] .file-status > .icon { + filter: alpha(opacity=0); + opacity: 0; + -webkit-transform: scale(0); + -ms-transform: scale(0); + -o-transform: scale(0); + transform: scale(0); + } +.uploader-files .file[data-status="uploading"] .file-status > .text, +.file-list .file[data-status="uploading"] .file-status > .text { + color: #fff; + background-color: #3280fc; + border-radius: 10px; + } +.uploader-files .file[data-status="queue"] .file-status, +.file-list .file[data-status="queue"] .file-status { + color: #f1a325; + } +.uploader-files .file[data-status="queue"] .file-status > .icon:before, +.file-list .file[data-status="queue"] .file-status > .icon:before { + content: '\e6cd'; + } +.uploader-files .file[data-status="failed"] .file-status, +.file-list .file[data-status="failed"] .file-status { + color: #ea644a; + } +.uploader-files .file[data-status="failed"] .file-status > .icon:before, +.file-list .file[data-status="failed"] .file-status > .icon:before { + content: '\e66a'; + } +.uploader-files .file[data-status="done"] .file-status, +.file-list .file[data-status="done"] .file-status { + color: #38b03f; + } +.uploader-files .file .actions > .btn-reset-file, +.file-list .file .actions > .btn-reset-file, +.uploader-files .file .actions > .btn-download-file, +.file-list .file .actions > .btn-download-file, +.uploader-files .file[data-status="failed"] .actions > .btn-rename-file, +.file-list .file[data-status="failed"] .actions > .btn-rename-file, +.uploader-files .file[data-status="uploading"] .actions > .btn, +.file-list .file[data-status="uploading"] .actions > .btn, +.uploader-files .file[data-status="done"] .actions > .btn, +.file-list .file[data-status="done"] .actions > .btn { + display: none; + } +.uploader-files .file[data-status="done"] .actions > .btn-download-file[href], +.file-list .file[data-status="done"] .actions > .btn-download-file[href], +.uploader-files.file-show-rename-action-on-done .file[data-status="done"] .actions > .btn-rename-file, +.file-list.file-show-rename-action-on-done .file[data-status="done"] .actions > .btn-rename-file, +.uploader-files.file-show-delete-action-on-done .file[data-status="done"] .actions > .btn-delete-file, +.file-list.file-show-delete-action-on-done .file[data-status="done"] .actions > .btn-delete-file, +.uploader-files .file[data-status="failed"] .actions > .btn-reset-file, +.file-list .file[data-status="failed"] .actions > .btn-reset-file { + display: inline-block; + } +.uploader-files.file-rename-by-click [data-status="queue"] .file-name:hover, +.file-list.file-rename-by-click [data-status="queue"] .file-name:hover { + background-color: rgba(255, 255, 255, .5); + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #97befd; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #97befd; + } +.uploader-files .file-progress-bar, +.file-list .file-progress-bar { + position: absolute; + top: 0; + bottom: 0; + left: 0; + z-index: 10; + pointer-events: none; + background-color: rgba(50, 128, 252, .1); + filter: alpha(opacity=0); + -webkit-box-shadow: inset 0 -2px #3280fc; + box-shadow: inset 0 -2px #3280fc; + opacity: 0; + -webkit-transition: width .6s ease, opacity .4s; + -o-transition: width .6s ease, opacity .4s; + transition: width .6s ease, opacity .4s; + } +.uploader-files .file[data-status="uploading"] .file-progress-bar, +.file-list .file[data-status="uploading"] .file-progress-bar { + filter: alpha(opacity=100); + opacity: 1; + } +.uploader-files .file[data-status="queue"], +.file-list .file[data-status="queue"] { + background-color: #fff0d5; + } +.uploader-files .file[data-status="failed"], +.file-list .file[data-status="failed"] { + background-color: #ffe5e0; + } +.uploader-files .file[data-status="done"], +.file-list .file[data-status="done"] { + background-color: #fff; + } +.uploader-actions { + background-color: #f1f1f1; + } +.file-list + .uploader-actions { + margin-top: -10px; + border: 1px solid #ddd; + border-top: none; + } +.uploader-actions .uploader-status { + padding: 5px 10px; + line-height: 20px; + } +.uploader-message { + position: absolute; + top: 0; + right: 0; + left: 0; + z-index: 1; + display: none; + padding: 5px 10px; + color: #fff; + background: #3280fc; + filter: alpha(opacity=95); + opacity: .95; + } +.uploader-message > .close { + position: absolute; + top: 3px; + right: 10px; + color: inherit; + text-shadow: none; + opacity: .4; + } +.uploader-message > .close:hover { + opacity: 1; + } +.uploader-message[data-type="danger"] { + background: #ea644a; + } +.uploader-message[data-type="warning"] { + background: #f1a325; + } +.uploader-message[data-type="info"] { + background: #03b8cf; + } +.uploader-message[data-type="success"] { + background: #38b03f; + } +.file-list .file { + position: relative; + z-index: 0; + background-color: #fff; + -webkit-transition: background .4s; + -o-transition: background .4s; + transition: background .4s; + } +.file-list .file + .file { + border-top: 1px solid #ddd; + } +.file-list .file-wrapper { + position: relative; + z-index: 2; + display: table; + width: 100%; + table-layout: fixed; + -webkit-transition: background .4s; + -o-transition: background .4s; + transition: background .4s; + } +.file-list .file-wrapper:hover { + background-color: rgba(0, 0, 0, .05); + } +.file-list .file-wrapper > .file-icon, +.file-list .file-wrapper > .content, +.file-list .file-wrapper > .actions { + display: table-cell; + vertical-align: middle; + } +.file-list .file-wrapper > .actions { + width: 150px; + text-align: right; + } +.file-list .file-wrapper > .actions > .btn { + padding: 5px 8px; + } +.file-list .file-wrapper > .actions > .btn:hover { + background-color: rgba(0, 0, 0, .07); + } +.file-list .file-name { + display: block; + } +.file-list .file-wrapper > .content > .file-name { + float: left; + } +.file-list .file-wrapper > .content > .file-size { + float: right; + margin-top: 2px; + } +.file-list .file-wrapper > .actions > .btn { + border-radius: 0; + } +.file-list .file-status { + padding: 5px; + } +.file-list-lg .file { + min-height: 50px; + } +.file-list-lg .file-icon { + width: 50px; + line-height: 50px; + } +.file-list-lg .file-icon .icon { + position: relative; + display: block; + width: 50px; + font-size: 28px; + line-height: 50px; + text-align: center; + } +.file-list-lg .file-icon .icon-file-o { + position: relative; + left: -2px; + } +.file-list-lg .file-status { + line-height: 40px; + } +.file-list-lg .file-status > .icon { + font-size: 20px; + } +.file-list-lg .file[data-status="done"] .file-status { + padding: 5px 12px; + } +.file-list-lg .file-wrapper > .content > .file-name { + float: none; + line-height: 20px; + } +.file-list-lg .file-wrapper > .content > .file-size { + float: none; + line-height: 14px; + } +.file-list-lg .file-wrapper > .actions > .btn { + padding: 14px 8px; + } +.file-list-lg .file-renaming .file-name[contenteditable] { + font-size: 14px; + line-height: 34px; + } +.file-list-lg .file-renaming .file-wrapper > .content > .file-size { + display: none; + } +.file-list-grid { + margin-right: -8px; + margin-left: -8px; + border: none; + } +.file-list-grid:before, +.file-list-grid:after { + /* 1 */ + display: table; + content: " "; + /* 2 */ + } +.file-list-grid:after { + clear: both; + } +.file-list-grid .file { + display: block; + float: left; + width: 120px; + height: 120px; + margin: 8px 8px 35px 8px; + border: 1px solid #ddd; + border-radius: 4px; + } +.file-list-grid .file .file-icon { + display: block; + width: 118px; + height: 118px; + overflow: hidden; + } +.file-list-grid .file-icon > .icon { + font-size: 70px; + line-height: 118px; + } +.file-list-grid .file-icon-image { + top: -1px; + right: -1px; + bottom: -1px; + left: -1px; + border: none; + } +.file-list-grid .file-wrapper { + position: absolute; + top: 0; + right: 0; + left: 0; + display: block; + width: auto; + } +.file-list-grid .file-wrapper > .content { + position: absolute; + right: -1px; + bottom: -24px; + left: -1px; + display: block; + text-align: center; + -webkit-transition: all .2s; + -o-transition: all .2s; + transition: all .2s; + } +.file-list-grid .file-wrapper > .content > .file-name { + position: relative; + z-index: 5; + float: none; + padding: 4px 0; + line-height: 16px; + border: 1px solid transparent; + } +.file-list-grid .file-wrapper > .content > .file-size { + position: absolute; + top: -24px; + left: 4px; + display: block; + padding: 0 5px; + line-height: 18px; + color: #fff; + background-color: #808080; + background-color: rgba(0, 0, 0, .5); + filter: alpha(opacity=0); + border-radius: 9px; + opacity: 0; + -webkit-transition: opacity .4s; + -o-transition: opacity .4s; + transition: opacity .4s; + } +.file-list-grid .file-renaming .file-wrapper > .content > .file-name, +.file-list-grid .file-wrapper > .content:hover > .file-name { + text-overflow: initial; + word-break: break-all; + white-space: normal; + background-color: #fff; + border-color: #ddd; + -webkit-box-shadow: none; + box-shadow: none; + } +.file-list-grid .file-renaming .file-wrapper > .content > .file-name { + padding: 4px; + text-align: left; + } +.file-list-grid .file[data-status="uploading"] .file-wrapper > .content > .file-size, +.file-list-grid .file:hover .file-wrapper > .content > .file-size { + filter: alpha(opacity=100); + opacity: 1; + } +.file-list-grid .file-wrapper > .actions { + position: absolute; + top: 0; + right: 0; + left: 0; + display: block; + width: 118px; + } +.file-list-grid .file-wrapper:hover > .actions { + background: rgba(255, 255, 255, .85); + } +.file-list-grid .file-wrapper > .actions > .file-status { + position: absolute; + top: 0; + left: 0; + height: 28px; + padding: 4px 5px; + } +.file-list-grid .file-wrapper > .actions > .file-status > .icon { + position: relative; + top: -1px; + display: inline-block; + font-size: 21px; + text-shadow: -1px -1px 0 #fff, 1px -1px 0 #fff, -1px 1px 0 #fff, 1px 1px 0 #fff; + } +.file-list-grid .file-wrapper > .actions > .file-status > .text { + padding: 0; + } +.file-list-grid .file[data-status="failed"] .file-wrapper > .actions > .file-status > .icon { + font-size: 14px; + text-shadow: none; + } +.file-list-grid .file[data-status="uploading"] .file-wrapper > .actions > .file-status > .text { + position: absolute; + top: 4px; + left: 4px; + padding: 0 8px; + } +.file-list-grid .file[data-status="failed"] .file-wrapper > .actions > .file-status { + top: 4px; + left: 4px; + height: 20px; + padding: 0 8px; + color: #fff; + background-color: #ea644a; + border-radius: 10px; + } +.file-list-grid .file-wrapper > .actions > .btn { + padding: 3px 6px; + filter: alpha(opacity=0); + opacity: 0; + } +.file-list-grid .file-wrapper:hover > .actions > .btn { + filter: alpha(opacity=100); + opacity: 1; + } +.file-list-grid .file-progress-bar { + -webkit-box-shadow: inset 0 -4px #3280fc; + box-shadow: inset 0 -4px #3280fc; + } +.file-list-grid + .uploader-actions { + border: none; + } diff --git a/root/res/zui/lib/uploader/zui.uploader.js b/root/res/zui/lib/uploader/zui.uploader.js new file mode 100644 index 0000000..9d1b83f --- /dev/null +++ b/root/res/zui/lib/uploader/zui.uploader.js @@ -0,0 +1,934 @@ +/*! + * ZUI: 文件上传 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +/*! + * mOxie - multi-runtime File API & XMLHttpRequest L2 Polyfill + * v1.5.2 + * + * Copyright 2013, Moxiecode Systems AB + * Released under GPL License. + * + * License: http://www.plupload.com/license + * Contributing: http://www.plupload.com/contributing + * + * Date: 2016-11-23 + */ +!function(e,t){var i=function(){var e={};return t.apply(e,arguments),e.moxie};"function"==typeof define&&define.amd?define("moxie",[],i):"object"==typeof module&&module.exports?module.exports=i():e.moxie=i()}(this||window,function(){!function(e,t){"use strict";function i(e,t){for(var i,n=[],r=0;r0&&u(n,function(n,u){var c=-1!==m(e(n),["array","object"]);return n===r||t&&s[u]===r?!0:(c&&i&&(n=o(n)),e(s[u])===e(n)&&c?a(t,i,[s[u],n]):s[u]=n,void 0)})}),s}function s(e,t){function i(){this.constructor=e}for(var n in t)({}).hasOwnProperty.call(t,n)&&(e[n]=t[n]);return i.prototype=t.prototype,e.prototype=new i,e.__parent__=t.prototype,e}function u(e,t){var i,n,r,o;if(e){try{i=e.length}catch(a){i=o}if(i===o||"number"!=typeof i){for(n in e)if(e.hasOwnProperty(n)&&t(e[n],n)===!1)return}else for(r=0;i>r;r++)if(t(e[r],r)===!1)return}}function c(t){var i;if(!t||"object"!==e(t))return!0;for(i in t)return!1;return!0}function l(t,i){function n(r){"function"===e(t[r])&&t[r](function(e){++ri;i++)if(t[i]===e)return i}return-1}function h(t,i){var n=[];"array"!==e(t)&&(t=[t]),"array"!==e(i)&&(i=[i]);for(var r in t)-1===m(t[r],i)&&n.push(t[r]);return n.length?n:!1}function f(e,t){var i=[];return u(e,function(e){-1!==m(e,t)&&i.push(e)}),i.length?i:null}function p(e){var t,i=[];for(t=0;ti;i++)n+=Math.floor(65535*Math.random()).toString(32);return(t||"o_")+n+(e++).toString(32)}}();return{guid:w,typeOf:e,extend:t,extendIf:i,extendImmutable:n,extendImmutableIf:r,inherit:s,each:u,isEmptyObj:c,inSeries:l,inParallel:d,inArray:m,arrayDiff:h,arrayIntersect:f,toArray:p,trim:g,sprintf:v,parseSizeStr:x,delay:y}}),n("moxie/core/utils/Encode",[],function(){var e=function(e){return unescape(encodeURIComponent(e))},t=function(e){return decodeURIComponent(escape(e))},i=function(e,i){if("function"==typeof window.atob)return i?t(window.atob(e)):window.atob(e);var n,r,o,a,s,u,c,l,d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",m=0,h=0,f="",p=[];if(!e)return e;e+="";do a=d.indexOf(e.charAt(m++)),s=d.indexOf(e.charAt(m++)),u=d.indexOf(e.charAt(m++)),c=d.indexOf(e.charAt(m++)),l=a<<18|s<<12|u<<6|c,n=255&l>>16,r=255&l>>8,o=255&l,p[h++]=64==u?String.fromCharCode(n):64==c?String.fromCharCode(n,r):String.fromCharCode(n,r,o);while(m>18,s=63&l>>12,u=63&l>>6,c=63&l,p[h++]=d.charAt(a)+d.charAt(s)+d.charAt(u)+d.charAt(c);while(mn;n++)if(e[n]!=t[n]){if(e[n]=u(e[n]),t[n]=u(t[n]),e[n]t[n]){o=1;break}}if(!i)return o;switch(i){case">":case"gt":return o>0;case">=":case"ge":return o>=0;case"<=":case"le":return 0>=o;case"==":case"=":case"eq":return 0===o;case"<>":case"!=":case"ne":return 0!==o;case"":case"<":case"lt":return 0>o;default:return null}}var i=function(e){var t="",i="?",n="function",r="undefined",o="object",a="name",s="version",u={has:function(e,t){return-1!==t.toLowerCase().indexOf(e.toLowerCase())},lowerize:function(e){return e.toLowerCase()}},c={rgx:function(){for(var t,i,a,s,u,c,l,d=0,m=arguments;d0?2==u.length?t[u[0]]=typeof u[1]==n?u[1].call(this,l):u[1]:3==u.length?t[u[0]]=typeof u[1]!==n||u[1].exec&&u[1].test?l?l.replace(u[1],u[2]):e:l?u[1].call(this,l,u[2]):e:4==u.length&&(t[u[0]]=l?u[3].call(this,l.replace(u[1],u[2])):e):t[u]=l?l:e;break}if(c)break}return t},str:function(t,n){for(var r in n)if(typeof n[r]===o&&n[r].length>0){for(var a=0;a=9)},use_data_uri_of:function(e){return t.use_data_uri&&33e3>e||t.use_data_uri_over32kb()},use_fileinput:function(){if(navigator.userAgent.match(/(Android (1.0|1.1|1.5|1.6|2.0|2.1))|(Windows Phone (OS 7|8.0))|(XBLWP)|(ZuneWP)|(w(eb)?OSBrowser)|(webOS)|(Kindle\/(1.0|2.0|2.5|3.0))/))return!1;var e=document.createElement("input");return e.setAttribute("type","file"),!e.disabled}};return function(i){var n=[].slice.call(arguments);return n.shift(),"function"===e.typeOf(t[i])?t[i].apply(this,n):!!t[i]}}(),r=(new i).getResult(),o={can:n,uaParser:i,browser:r.browser.name,version:r.browser.version,os:r.os.name,osVersion:r.os.version,verComp:t,swf_url:"../flash/Moxie.swf",xap_url:"../silverlight/Moxie.xap",global_event_dispatcher:"moxie.core.EventTarget.instance.dispatchEvent"};return o.OS=o.os,o}),n("moxie/core/Exceptions",["moxie/core/utils/Basic"],function(e){function t(e,t){var i;for(i in e)if(e[i]===t)return i;return null}return{RuntimeError:function(){function i(e,i){this.code=e,this.name=t(n,e),this.message=this.name+(i||": RuntimeError "+this.code)}var n={NOT_INIT_ERR:1,EXCEPTION_ERR:3,NOT_SUPPORTED_ERR:9,JS_ERR:4};return e.extend(i,n),i.prototype=Error.prototype,i}(),OperationNotAllowedException:function(){function t(e){this.code=e,this.name="OperationNotAllowedException"}return e.extend(t,{NOT_ALLOWED_ERR:1}),t.prototype=Error.prototype,t}(),ImageError:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": ImageError "+this.code}var n={WRONG_FORMAT:1,MAX_RESOLUTION_ERR:2,INVALID_META_ERR:3};return e.extend(i,n),i.prototype=Error.prototype,i}(),FileException:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": FileException "+this.code}var n={NOT_FOUND_ERR:1,SECURITY_ERR:2,ABORT_ERR:3,NOT_READABLE_ERR:4,ENCODING_ERR:5,NO_MODIFICATION_ALLOWED_ERR:6,INVALID_STATE_ERR:7,SYNTAX_ERR:8};return e.extend(i,n),i.prototype=Error.prototype,i}(),DOMException:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": DOMException "+this.code}var n={INDEX_SIZE_ERR:1,DOMSTRING_SIZE_ERR:2,HIERARCHY_REQUEST_ERR:3,WRONG_DOCUMENT_ERR:4,INVALID_CHARACTER_ERR:5,NO_DATA_ALLOWED_ERR:6,NO_MODIFICATION_ALLOWED_ERR:7,NOT_FOUND_ERR:8,NOT_SUPPORTED_ERR:9,INUSE_ATTRIBUTE_ERR:10,INVALID_STATE_ERR:11,SYNTAX_ERR:12,INVALID_MODIFICATION_ERR:13,NAMESPACE_ERR:14,INVALID_ACCESS_ERR:15,VALIDATION_ERR:16,TYPE_MISMATCH_ERR:17,SECURITY_ERR:18,NETWORK_ERR:19,ABORT_ERR:20,URL_MISMATCH_ERR:21,QUOTA_EXCEEDED_ERR:22,TIMEOUT_ERR:23,INVALID_NODE_TYPE_ERR:24,DATA_CLONE_ERR:25};return e.extend(i,n),i.prototype=Error.prototype,i}(),EventException:function(){function t(e){this.code=e,this.name="EventException"}return e.extend(t,{UNSPECIFIED_EVENT_TYPE_ERR:0}),t.prototype=Error.prototype,t}()}}),n("moxie/core/utils/Dom",["moxie/core/utils/Env"],function(e){var t=function(e){return"string"!=typeof e?e:document.getElementById(e)},i=function(e,t){if(!e.className)return!1;var i=new RegExp("(^|\\s+)"+t+"(\\s+|$)");return i.test(e.className)},n=function(e,t){i(e,t)||(e.className=e.className?e.className.replace(/\s+$/,"")+" "+t:t)},r=function(e,t){if(e.className){var i=new RegExp("(^|\\s+)"+t+"(\\s+|$)");e.className=e.className.replace(i,function(e,t,i){return" "===t&&" "===i?" ":""})}},o=function(e,t){return e.currentStyle?e.currentStyle[t]:window.getComputedStyle?window.getComputedStyle(e,null)[t]:void 0},a=function(t,i){function n(e){var t,i,n=0,r=0;return e&&(i=e.getBoundingClientRect(),t="CSS1Compat"===c.compatMode?c.documentElement:c.body,n=i.left+t.scrollLeft,r=i.top+t.scrollTop),{x:n,y:r}}var r,o,a,s=0,u=0,c=document;if(t=t,i=i||c.body,t&&t.getBoundingClientRect&&"IE"===e.browser&&(!c.documentMode||c.documentMode<8))return o=n(t),a=n(i),{x:o.x-a.x,y:o.y-a.y};for(r=t;r&&r!=i&&r.nodeType;)s+=r.offsetLeft||0,u+=r.offsetTop||0,r=r.offsetParent;for(r=t.parentNode;r&&r!=i&&r.nodeType;)s-=r.scrollLeft||0,u-=r.scrollTop||0,r=r.parentNode;return{x:s,y:u}},s=function(e){return{w:e.offsetWidth||e.clientWidth,h:e.offsetHeight||e.clientHeight}};return{get:t,hasClass:i,addClass:n,removeClass:r,getStyle:o,getPos:a,getSize:s}}),n("moxie/core/EventTarget",["moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Basic"],function(e,t,i){function n(){this.uid=i.guid()}var r={};return i.extend(n.prototype,{init:function(){this.uid||(this.uid=i.guid("uid_"))},addEventListener:function(e,t,n,o){var a,s=this;return this.hasOwnProperty("uid")||(this.uid=i.guid("uid_")),e=i.trim(e),/\s/.test(e)?(i.each(e.split(/\s+/),function(e){s.addEventListener(e,t,n,o)}),void 0):(e=e.toLowerCase(),n=parseInt(n,10)||0,a=r[this.uid]&&r[this.uid][e]||[],a.push({fn:t,priority:n,scope:o||this}),r[this.uid]||(r[this.uid]={}),r[this.uid][e]=a,void 0)},hasEventListener:function(e){var t;return e?(e=e.toLowerCase(),t=r[this.uid]&&r[this.uid][e]):t=r[this.uid],t?t:!1},removeEventListener:function(e,t){var n,o,a=this;if(e=e.toLowerCase(),/\s/.test(e))return i.each(e.split(/\s+/),function(e){a.removeEventListener(e,t)}),void 0;if(n=r[this.uid]&&r[this.uid][e]){if(t){for(o=n.length-1;o>=0;o--)if(n[o].fn===t){n.splice(o,1);break}}else n=[];n.length||(delete r[this.uid][e],i.isEmptyObj(r[this.uid])&&delete r[this.uid])}},removeAllEventListeners:function(){r[this.uid]&&delete r[this.uid]},dispatchEvent:function(e){var n,o,a,s,u,c={},l=!0;if("string"!==i.typeOf(e)){if(s=e,"string"!==i.typeOf(s.type))throw new t.EventException(t.EventException.UNSPECIFIED_EVENT_TYPE_ERR);e=s.type,s.total!==u&&s.loaded!==u&&(c.total=s.total,c.loaded=s.loaded),c.async=s.async||!1}if(-1!==e.indexOf("::")?function(t){n=t[0],e=t[1]}(e.split("::")):n=this.uid,e=e.toLowerCase(),o=r[n]&&r[n][e]){o.sort(function(e,t){return t.priority-e.priority}),a=[].slice.call(arguments),a.shift(),c.type=e,a.unshift(c);var d=[];i.each(o,function(e){a[0].target=e.scope,c.async?d.push(function(t){setTimeout(function(){t(e.fn.apply(e.scope,a)===!1)},1)}):d.push(function(t){t(e.fn.apply(e.scope,a)===!1)})}),d.length&&i.inSeries(d,function(e){l=!e})}return l},bindOnce:function(e,t,i,n){var r=this;r.bind.call(this,e,function o(){return r.unbind(e,o),t.apply(this,arguments)},i,n)},bind:function(){this.addEventListener.apply(this,arguments)},unbind:function(){this.removeEventListener.apply(this,arguments)},unbindAll:function(){this.removeAllEventListeners.apply(this,arguments)},trigger:function(){return this.dispatchEvent.apply(this,arguments)},handleEventProps:function(e){var t=this;this.bind(e.join(" "),function(e){var t="on"+e.type.toLowerCase();"function"===i.typeOf(this[t])&&this[t].apply(this,arguments)}),i.each(e,function(e){e="on"+e.toLowerCase(e),"undefined"===i.typeOf(t[e])&&(t[e]=null)})}}),n.instance=new n,n}),n("moxie/runtime/Runtime",["moxie/core/utils/Env","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/EventTarget"],function(e,t,i,n){function r(e,n,o,s,u){var c,l=this,d=t.guid(n+"_"),m=u||"browser";e=e||{},a[d]=this,o=t.extend({access_binary:!1,access_image_binary:!1,display_media:!1,do_cors:!1,drag_and_drop:!1,filter_by_extension:!0,resize_image:!1,report_upload_progress:!1,return_response_headers:!1,return_response_type:!1,return_status_code:!0,send_custom_headers:!1,select_file:!1,select_folder:!1,select_multiple:!0,send_binary_string:!1,send_browser_cookies:!0,send_multipart:!0,slice_blob:!1,stream_upload:!1,summon_file_dialog:!1,upload_filesize:!0,use_http_method:!0},o),e.preferred_caps&&(m=r.getMode(s,e.preferred_caps,m)),c=function(){var e={};return{exec:function(t,i,n,r){return c[i]&&(e[t]||(e[t]={context:this,instance:new c[i]}),e[t].instance[n])?e[t].instance[n].apply(this,r):void 0},removeInstance:function(t){delete e[t]},removeAllInstances:function(){var i=this;t.each(e,function(e,n){"function"===t.typeOf(e.instance.destroy)&&e.instance.destroy.call(e.context),i.removeInstance(n)})}}}(),t.extend(this,{initialized:!1,uid:d,type:n,mode:r.getMode(s,e.required_caps,m),shimid:d+"_container",clients:0,options:e,can:function(e,i){var n=arguments[2]||o;if("string"===t.typeOf(e)&&"undefined"===t.typeOf(i)&&(e=r.parseCaps(e)),"object"===t.typeOf(e)){for(var a in e)if(!this.can(a,e[a],n))return!1;return!0}return"function"===t.typeOf(n[e])?n[e].call(this,i):i===n[e]},getShimContainer:function(){var e,n=i.get(this.shimid);return n||(e=i.get(this.options.container)||document.body,n=document.createElement("div"),n.id=this.shimid,n.className="moxie-shim moxie-shim-"+this.type,t.extend(n.style,{position:"absolute",top:"0px",left:"0px",width:"1px",height:"1px",overflow:"hidden"}),e.appendChild(n),e=null),n},getShim:function(){return c},shimExec:function(e,t){var i=[].slice.call(arguments,2);return l.getShim().exec.call(this,this.uid,e,t,i)},exec:function(e,t){var i=[].slice.call(arguments,2);return l[e]&&l[e][t]?l[e][t].apply(this,i):l.shimExec.apply(this,arguments)},destroy:function(){if(l){var e=i.get(this.shimid);e&&e.parentNode.removeChild(e),c&&c.removeAllInstances(),this.unbindAll(),delete a[this.uid],this.uid=null,d=l=c=e=null}}}),this.mode&&e.required_caps&&!this.can(e.required_caps)&&(this.mode=!1)}var o={},a={};return r.order="html5,flash,silverlight,html4",r.getRuntime=function(e){return a[e]?a[e]:!1},r.addConstructor=function(e,t){t.prototype=n.instance,o[e]=t},r.getConstructor=function(e){return o[e]||null},r.getInfo=function(e){var t=r.getRuntime(e);return t?{uid:t.uid,type:t.type,mode:t.mode,can:function(){return t.can.apply(t,arguments)}}:null},r.parseCaps=function(e){var i={};return"string"!==t.typeOf(e)?e||{}:(t.each(e.split(","),function(e){i[e]=!0}),i)},r.can=function(e,t){var i,n,o=r.getConstructor(e);return o?(i=new o({required_caps:t}),n=i.mode,i.destroy(),!!n):!1},r.thatCan=function(e,t){var i=(t||r.order).split(/\s*,\s*/);for(var n in i)if(r.can(i[n],e))return i[n];return null},r.getMode=function(e,i,n){var r=null;if("undefined"===t.typeOf(n)&&(n="browser"),i&&!t.isEmptyObj(e)){if(t.each(i,function(i,n){if(e.hasOwnProperty(n)){var o=e[n](i);if("string"==typeof o&&(o=[o]),r){if(!(r=t.arrayIntersect(r,o)))return r=!1}else r=o}}),r)return-1!==t.inArray(n,r)?n:r[0];if(r===!1)return!1}return n},r.capTrue=function(){return!0},r.capFalse=function(){return!1},r.capTest=function(e){return function(){return!!e}},r}),n("moxie/runtime/RuntimeClient",["moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Basic","moxie/runtime/Runtime"],function(e,t,i,n){return function(){var e;i.extend(this,{connectRuntime:function(r){function o(i){var a,u;return i.length?(a=i.shift().toLowerCase(),(u=n.getConstructor(a))?(e=new u(r),e.bind("Init",function(){e.initialized=!0,setTimeout(function(){e.clients++,s.ruid=e.uid,s.trigger("RuntimeInit",e)},1)}),e.bind("Error",function(){e.destroy(),o(i)}),e.bind("Exception",function(e,i){var n=i.name+"(#"+i.code+")"+(i.message?", from: "+i.message:"");s.trigger("RuntimeError",new t.RuntimeError(t.RuntimeError.EXCEPTION_ERR,n))}),e.mode?(e.init(),void 0):(e.trigger("Error"),void 0)):(o(i),void 0)):(s.trigger("RuntimeError",new t.RuntimeError(t.RuntimeError.NOT_INIT_ERR)),e=null,void 0)}var a,s=this;if("string"===i.typeOf(r)?a=r:"string"===i.typeOf(r.ruid)&&(a=r.ruid),a){if(e=n.getRuntime(a))return s.ruid=a,e.clients++,e;throw new t.RuntimeError(t.RuntimeError.NOT_INIT_ERR)}o((r.runtime_order||n.order).split(/\s*,\s*/))},disconnectRuntime:function(){e&&--e.clients<=0&&e.destroy(),e=null},getRuntime:function(){return e&&e.uid?e:e=null},exec:function(){return e?e.exec.apply(this,arguments):null},can:function(t){return e?e.can(t):!1}})}}),n("moxie/file/Blob",["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/runtime/RuntimeClient"],function(e,t,i){function n(o,a){function s(t,i,o){var a,s=r[this.uid];return"string"===e.typeOf(s)&&s.length?(a=new n(null,{type:o,size:i-t}),a.detach(s.substr(t,a.size)),a):null}i.call(this),o&&this.connectRuntime(o),a?"string"===e.typeOf(a)&&(a={data:a}):a={},e.extend(this,{uid:a.uid||e.guid("uid_"),ruid:o,size:a.size||0,type:a.type||"",slice:function(e,t,i){return this.isDetached()?s.apply(this,arguments):this.getRuntime().exec.call(this,"Blob","slice",this.getSource(),e,t,i)},getSource:function(){return r[this.uid]?r[this.uid]:null},detach:function(e){if(this.ruid&&(this.getRuntime().exec.call(this,"Blob","destroy"),this.disconnectRuntime(),this.ruid=null),e=e||"","data:"==e.substr(0,5)){var i=e.indexOf(";base64,");this.type=e.substring(5,i),e=t.atob(e.substring(i+8))}this.size=e.length,r[this.uid]=e},isDetached:function(){return!this.ruid&&"string"===e.typeOf(r[this.uid])},destroy:function(){this.detach(),delete r[this.uid]}}),a.data?this.detach(a.data):r[this.uid]=a}var r={};return n}),n("moxie/core/I18n",["moxie/core/utils/Basic"],function(e){var t={};return{addI18n:function(i){return e.extend(t,i)},translate:function(e){return t[e]||e},_:function(e){return this.translate(e)},sprintf:function(t){var i=[].slice.call(arguments,1);return t.replace(/%[a-z]/g,function(){var t=i.shift();return"undefined"!==e.typeOf(t)?t:""})}}}),n("moxie/core/utils/Mime",["moxie/core/utils/Basic","moxie/core/I18n"],function(e,t){var i="application/msword,doc dot,application/pdf,pdf,application/pgp-signature,pgp,application/postscript,ps ai eps,application/rtf,rtf,application/vnd.ms-excel,xls xlb,application/vnd.ms-powerpoint,ppt pps pot,application/zip,zip,application/x-shockwave-flash,swf swfl,application/vnd.openxmlformats-officedocument.wordprocessingml.document,docx,application/vnd.openxmlformats-officedocument.wordprocessingml.template,dotx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,xlsx,application/vnd.openxmlformats-officedocument.presentationml.presentation,pptx,application/vnd.openxmlformats-officedocument.presentationml.template,potx,application/vnd.openxmlformats-officedocument.presentationml.slideshow,ppsx,application/x-javascript,js,application/json,json,audio/mpeg,mp3 mpga mpega mp2,audio/x-wav,wav,audio/x-m4a,m4a,audio/ogg,oga ogg,audio/aiff,aiff aif,audio/flac,flac,audio/aac,aac,audio/ac3,ac3,audio/x-ms-wma,wma,image/bmp,bmp,image/gif,gif,image/jpeg,jpg jpeg jpe,image/photoshop,psd,image/png,png,image/svg+xml,svg svgz,image/tiff,tiff tif,text/plain,asc txt text diff log,text/html,htm html xhtml,text/css,css,text/csv,csv,text/rtf,rtf,video/mpeg,mpeg mpg mpe m2v,video/quicktime,qt mov,video/mp4,mp4,video/x-m4v,m4v,video/x-flv,flv,video/x-ms-wmv,wmv,video/avi,avi,video/webm,webm,video/3gpp,3gpp 3gp,video/3gpp2,3g2,video/vnd.rn-realvideo,rv,video/ogg,ogv,video/x-matroska,mkv,application/vnd.oasis.opendocument.formula-template,otf,application/octet-stream,exe",n={mimes:{},extensions:{},addMimeType:function(e){var t,i,n,r=e.split(/,/);for(t=0;ta;a++)o+=String.fromCharCode(r[a]);return o}}t.call(this),e.extend(this,{uid:e.guid("uid_"),readAsBinaryString:function(e){return n.call(this,"readAsBinaryString",e)},readAsDataURL:function(e){return n.call(this,"readAsDataURL",e)},readAsText:function(e){return n.call(this,"readAsText",e)}})}}),n("moxie/xhr/FormData",["moxie/core/Exceptions","moxie/core/utils/Basic","moxie/file/Blob"],function(e,t,i){function n(){var e,n=[];t.extend(this,{append:function(r,o){var a=this,s=t.typeOf(o);o instanceof i?e={name:r,value:o}:"array"===s?(r+="[]",t.each(o,function(e){a.append(r,e)})):"object"===s?t.each(o,function(e,t){a.append(r+"["+t+"]",e)}):"null"===s||"undefined"===s||"number"===s&&isNaN(o)?a.append(r,"false"):n.push({name:r,value:o.toString()})},hasBlob:function(){return!!this.getBlob()},getBlob:function(){return e&&e.value||null},getBlobName:function(){return e&&e.name||null},each:function(i){t.each(n,function(e){i(e.value,e.name)}),e&&i(e.value,e.name)},destroy:function(){e=null,n=[]}})}return n}),n("moxie/xhr/XMLHttpRequest",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/core/EventTarget","moxie/core/utils/Encode","moxie/core/utils/Url","moxie/runtime/Runtime","moxie/runtime/RuntimeTarget","moxie/file/Blob","moxie/file/FileReaderSync","moxie/xhr/FormData","moxie/core/utils/Env","moxie/core/utils/Mime"],function(e,t,i,n,r,o,a,s,u,c,l,d){function m(){this.uid=e.guid("uid_")}function h(){function i(e,t){return I.hasOwnProperty(e)?1===arguments.length?l.can("define_property")?I[e]:A[e]:(l.can("define_property")?I[e]=t:A[e]=t,void 0):void 0}function u(t){function n(){R&&(R.destroy(),R=null),s.dispatchEvent("loadend"),s=null}function r(r){R.bind("LoadStart",function(e){i("readyState",h.LOADING),s.dispatchEvent("readystatechange"),s.dispatchEvent(e),L&&s.upload.dispatchEvent(e)}),R.bind("Progress",function(e){i("readyState")!==h.LOADING&&(i("readyState",h.LOADING),s.dispatchEvent("readystatechange")),s.dispatchEvent(e)}),R.bind("UploadProgress",function(e){L&&s.upload.dispatchEvent({type:"progress",lengthComputable:!1,total:e.total,loaded:e.loaded})}),R.bind("Load",function(t){i("readyState",h.DONE),i("status",Number(r.exec.call(R,"XMLHttpRequest","getStatus")||0)),i("statusText",f[i("status")]||""),i("response",r.exec.call(R,"XMLHttpRequest","getResponse",i("responseType"))),~e.inArray(i("responseType"),["text",""])?i("responseText",i("response")):"document"===i("responseType")&&i("responseXML",i("response")),U=r.exec.call(R,"XMLHttpRequest","getAllResponseHeaders"),s.dispatchEvent("readystatechange"),i("status")>0?(L&&s.upload.dispatchEvent(t),s.dispatchEvent(t)):(F=!0,s.dispatchEvent("error")),n()}),R.bind("Abort",function(e){s.dispatchEvent(e),n()}),R.bind("Error",function(e){F=!0,i("readyState",h.DONE),s.dispatchEvent("readystatechange"),M=!0,s.dispatchEvent(e),n()}),r.exec.call(R,"XMLHttpRequest","send",{url:x,method:v,async:T,user:y,password:w,headers:S,mimeType:D,encoding:O,responseType:s.responseType,withCredentials:s.withCredentials,options:k},t)}var s=this;E=(new Date).getTime(),R=new a,"string"==typeof k.required_caps&&(k.required_caps=o.parseCaps(k.required_caps)),k.required_caps=e.extend({},k.required_caps,{return_response_type:s.responseType}),t instanceof c&&(k.required_caps.send_multipart=!0),e.isEmptyObj(S)||(k.required_caps.send_custom_headers=!0),B||(k.required_caps.do_cors=!0),k.ruid?r(R.connectRuntime(k)):(R.bind("RuntimeInit",function(e,t){r(t)}),R.bind("RuntimeError",function(e,t){s.dispatchEvent("RuntimeError",t)}),R.connectRuntime(k))}function g(){i("responseText",""),i("responseXML",null),i("response",null),i("status",0),i("statusText",""),E=b=null}var x,v,y,w,E,b,R,_,A=this,I={timeout:0,readyState:h.UNSENT,withCredentials:!1,status:0,statusText:"",responseType:"",responseXML:null,responseText:null,response:null},T=!0,S={},O=null,D=null,N=!1,C=!1,L=!1,M=!1,F=!1,B=!1,P=null,H=null,k={},U="";e.extend(this,I,{uid:e.guid("uid_"),upload:new m,open:function(o,a,s,u,c){var l;if(!o||!a)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(/[\u0100-\uffff]/.test(o)||n.utf8_encode(o)!==o)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(~e.inArray(o.toUpperCase(),["CONNECT","DELETE","GET","HEAD","OPTIONS","POST","PUT","TRACE","TRACK"])&&(v=o.toUpperCase()),~e.inArray(v,["CONNECT","TRACE","TRACK"]))throw new t.DOMException(t.DOMException.SECURITY_ERR);if(a=n.utf8_encode(a),l=r.parseUrl(a),B=r.hasSameOrigin(l),x=r.resolveUrl(a),(u||c)&&!B)throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);if(y=u||l.user,w=c||l.pass,T=s||!0,T===!1&&(i("timeout")||i("withCredentials")||""!==i("responseType")))throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);N=!T,C=!1,S={},g.call(this),i("readyState",h.OPENED),this.dispatchEvent("readystatechange")},setRequestHeader:function(r,o){var a=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","content-transfer-encoding","date","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","user-agent","via"];if(i("readyState")!==h.OPENED||C)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(/[\u0100-\uffff]/.test(r)||n.utf8_encode(r)!==r)throw new t.DOMException(t.DOMException.SYNTAX_ERR);return r=e.trim(r).toLowerCase(),~e.inArray(r,a)||/^(proxy\-|sec\-)/.test(r)?!1:(S[r]?S[r]+=", "+o:S[r]=o,!0)},hasRequestHeader:function(e){return e&&S[e.toLowerCase()]||!1},getAllResponseHeaders:function(){return U||""},getResponseHeader:function(t){return t=t.toLowerCase(),F||~e.inArray(t,["set-cookie","set-cookie2"])?null:U&&""!==U&&(_||(_={},e.each(U.split(/\r\n/),function(t){var i=t.split(/:\s+/);2===i.length&&(i[0]=e.trim(i[0]),_[i[0].toLowerCase()]={header:i[0],value:e.trim(i[1])})})),_.hasOwnProperty(t))?_[t].header+": "+_[t].value:null},overrideMimeType:function(n){var r,o;if(~e.inArray(i("readyState"),[h.LOADING,h.DONE]))throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(n=e.trim(n.toLowerCase()),/;/.test(n)&&(r=n.match(/^([^;]+)(?:;\scharset\=)?(.*)$/))&&(n=r[1],r[2]&&(o=r[2])),!d.mimes[n])throw new t.DOMException(t.DOMException.SYNTAX_ERR);P=n,H=o},send:function(i,r){if(k="string"===e.typeOf(r)?{ruid:r}:r?r:{},this.readyState!==h.OPENED||C)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(i instanceof s)k.ruid=i.ruid,D=i.type||"application/octet-stream";else if(i instanceof c){if(i.hasBlob()){var o=i.getBlob();k.ruid=o.ruid,D=o.type||"application/octet-stream"}}else"string"==typeof i&&(O="UTF-8",D="text/plain;charset=UTF-8",i=n.utf8_encode(i));this.withCredentials||(this.withCredentials=k.required_caps&&k.required_caps.send_browser_cookies&&!B),L=!N&&this.upload.hasEventListener(),F=!1,M=!i,N||(C=!0),u.call(this,i)},abort:function(){if(F=!0,N=!1,~e.inArray(i("readyState"),[h.UNSENT,h.OPENED,h.DONE]))i("readyState",h.UNSENT);else{if(i("readyState",h.DONE),C=!1,!R)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);R.getRuntime().exec.call(R,"XMLHttpRequest","abort",M),M=!0}},destroy:function(){R&&("function"===e.typeOf(R.destroy)&&R.destroy(),R=null),this.unbindAll(),this.upload&&(this.upload.unbindAll(),this.upload=null)}}),this.handleEventProps(p.concat(["readystatechange"])),this.upload.handleEventProps(p)}var f={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",306:"Reserved",307:"Temporary Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Request Entity Too Large",414:"Request-URI Too Long",415:"Unsupported Media Type",416:"Requested Range Not Satisfiable",417:"Expectation Failed",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",426:"Upgrade Required",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",510:"Not Extended"};m.prototype=i.instance;var p=["loadstart","progress","abort","error","load","timeout","loadend"];return h.UNSENT=0,h.OPENED=1,h.HEADERS_RECEIVED=2,h.LOADING=3,h.DONE=4,h.prototype=i.instance,h}),n("moxie/runtime/Transporter",["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/runtime/RuntimeClient","moxie/core/EventTarget"],function(e,t,i,n){function r(){function n(){l=d=0,c=this.result=null}function o(t,i){var n=this;u=i,n.bind("TransportingProgress",function(t){d=t.loaded,l>d&&-1===e.inArray(n.state,[r.IDLE,r.DONE])&&a.call(n)},999),n.bind("TransportingComplete",function(){d=l,n.state=r.DONE,c=null,n.result=u.exec.call(n,"Transporter","getAsBlob",t||"")},999),n.state=r.BUSY,n.trigger("TransportingStarted"),a.call(n)}function a(){var e,i=this,n=l-d;m>n&&(m=n),e=t.btoa(c.substr(d,m)),u.exec.call(i,"Transporter","receive",e,l)}var s,u,c,l,d,m;i.call(this),e.extend(this,{uid:e.guid("uid_"),state:r.IDLE,result:null,transport:function(t,i,r){var a=this;if(r=e.extend({chunk_size:204798},r),(s=r.chunk_size%3)&&(r.chunk_size+=3-s),m=r.chunk_size,n.call(this),c=t,l=t.length,"string"===e.typeOf(r)||r.ruid)o.call(a,i,this.connectRuntime(r));else{var u=function(e,t){a.unbind("RuntimeInit",u),o.call(a,i,t)};this.bind("RuntimeInit",u),this.connectRuntime(r)}},abort:function(){var e=this;e.state=r.IDLE,u&&(u.exec.call(e,"Transporter","clear"),e.trigger("TransportingAborted")),n.call(e)},destroy:function(){this.unbindAll(),u=null,this.disconnectRuntime(),n.call(this)}})}return r.IDLE=0,r.BUSY=1,r.DONE=2,r.prototype=n.instance,r}),n("moxie/image/Image",["moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/file/FileReaderSync","moxie/xhr/XMLHttpRequest","moxie/runtime/Runtime","moxie/runtime/RuntimeClient","moxie/runtime/Transporter","moxie/core/utils/Env","moxie/core/EventTarget","moxie/file/Blob","moxie/file/File","moxie/core/utils/Encode"],function(e,t,i,n,r,o,a,s,u,c,l,d,m){function h(){function n(e){try{return e||(e=this.exec("Image","getInfo")),this.size=e.size,this.width=e.width,this.height=e.height,this.type=e.type,this.meta=e.meta,""===this.name&&(this.name=e.name),!0}catch(t){return this.trigger("error",t.code),!1}}function c(t){var n=e.typeOf(t);try{if(t instanceof h){if(!t.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);p.apply(this,arguments)}else if(t instanceof l){if(!~e.inArray(t.type,["image/jpeg","image/png"]))throw new i.ImageError(i.ImageError.WRONG_FORMAT);g.apply(this,arguments)}else if(-1!==e.inArray(n,["blob","file"]))c.call(this,new d(null,t),arguments[1]);else if("string"===n)"data:"===t.substr(0,5)?c.call(this,new l(null,{data:t}),arguments[1]):x.apply(this,arguments);else{if("node"!==n||"img"!==t.nodeName.toLowerCase())throw new i.DOMException(i.DOMException.TYPE_MISMATCH_ERR);c.call(this,t.src,arguments[1])}}catch(r){this.trigger("error",r.code)}}function p(t,i){var n=this.connectRuntime(t.ruid);this.ruid=n.uid,n.exec.call(this,"Image","loadFromImage",t,"undefined"===e.typeOf(i)?!0:i)}function g(t,i){function n(e){r.ruid=e.uid,e.exec.call(r,"Image","loadFromBlob",t)}var r=this;r.name=t.name||"",t.isDetached()?(this.bind("RuntimeInit",function(e,t){n(t)}),i&&"string"==typeof i.required_caps&&(i.required_caps=o.parseCaps(i.required_caps)),this.connectRuntime(e.extend({required_caps:{access_image_binary:!0,resize_image:!0}},i))):n(this.connectRuntime(t.ruid))}function x(e,t){var i,n=this;i=new r,i.open("get",e),i.responseType="blob",i.onprogress=function(e){n.trigger(e)},i.onload=function(){g.call(n,i.response,!0)},i.onerror=function(e){n.trigger(e)},i.onloadend=function(){i.destroy()},i.bind("RuntimeError",function(e,t){n.trigger("RuntimeError",t)}),i.send(null,t)}a.call(this),e.extend(this,{uid:e.guid("uid_"),ruid:null,name:"",size:0,width:0,height:0,type:"",meta:{},clone:function(){this.load.apply(this,arguments)},load:function(){c.apply(this,arguments)},resize:function(t){var n,r,o=this,a={x:0,y:0,width:o.width,height:o.height},s=e.extendIf({width:o.width,height:o.height,type:o.type||"image/jpeg",quality:90,crop:!1,fit:!0,preserveHeaders:!0,resample:"default",multipass:!0},t);try{if(!o.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);if(o.width>h.MAX_RESIZE_WIDTH||o.height>h.MAX_RESIZE_HEIGHT)throw new i.ImageError(i.ImageError.MAX_RESOLUTION_ERR);if(n=o.meta&&o.meta.tiff&&o.meta.tiff.Orientation||1,-1!==e.inArray(n,[5,6,7,8])){var u=s.width;s.width=s.height,s.height=u}if(s.crop){switch(r=Math.max(s.width/o.width,s.height/o.height),t.fit?(a.width=Math.min(Math.ceil(s.width/r),o.width),a.height=Math.min(Math.ceil(s.height/r),o.height),r=s.width/a.width):(a.width=Math.min(s.width,o.width),a.height=Math.min(s.height,o.height),r=1),"boolean"==typeof s.crop&&(s.crop="cc"),s.crop.toLowerCase().replace(/_/,"-")){case"rb":case"right-bottom":a.x=o.width-a.width,a.y=o.height-a.height;break;case"cb":case"center-bottom":a.x=Math.floor((o.width-a.width)/2),a.y=o.height-a.height;break;case"lb":case"left-bottom":a.x=0,a.y=o.height-a.height;break;case"lt":case"left-top":a.x=0,a.y=0;break;case"ct":case"center-top":a.x=Math.floor((o.width-a.width)/2),a.y=0;break;case"rt":case"right-top":a.x=o.width-a.width,a.y=0;break;case"rc":case"right-center":case"right-middle":a.x=o.width-a.width,a.y=Math.floor((o.height-a.height)/2);break;case"lc":case"left-center":case"left-middle":a.x=0,a.y=Math.floor((o.height-a.height)/2);break;case"cc":case"center-center":case"center-middle":default:a.x=Math.floor((o.width-a.width)/2),a.y=Math.floor((o.height-a.height)/2)}a.x=Math.max(a.x,0),a.y=Math.max(a.y,0)}else r=Math.min(s.width/o.width,s.height/o.height);this.exec("Image","resize",a,r,s)}catch(c){o.trigger("error",c.code)}},downsize:function(t){var i,n={width:this.width,height:this.height,type:this.type||"image/jpeg",quality:90,crop:!1,preserveHeaders:!0,resample:"default"};i="object"==typeof t?e.extend(n,t):e.extend(n,{width:arguments[0],height:arguments[1],crop:arguments[2],preserveHeaders:arguments[3]}),this.resize(i)},crop:function(e,t,i){this.downsize(e,t,!0,i)},getAsCanvas:function(){if(!u.can("create_canvas"))throw new i.RuntimeError(i.RuntimeError.NOT_SUPPORTED_ERR);var e=this.connectRuntime(this.ruid);return e.exec.call(this,"Image","getAsCanvas")},getAsBlob:function(e,t){if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);return this.exec("Image","getAsBlob",e||"image/jpeg",t||90)},getAsDataURL:function(e,t){if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);return this.exec("Image","getAsDataURL",e||"image/jpeg",t||90)},getAsBinaryString:function(e,t){var i=this.getAsDataURL(e,t);return m.atob(i.substring(i.indexOf("base64,")+7))},embed:function(n,r){function o(t,r){var o=this;if(u.can("create_canvas")){var l=o.getAsCanvas();if(l)return n.appendChild(l),l=null,o.destroy(),c.trigger("embedded"),void 0}var d=o.getAsDataURL(t,r);if(!d)throw new i.ImageError(i.ImageError.WRONG_FORMAT);if(u.can("use_data_uri_of",d.length))n.innerHTML='',o.destroy(),c.trigger("embedded");else{var h=new s;h.bind("TransportingComplete",function(){a=c.connectRuntime(this.result.ruid),c.bind("Embedded",function(){e.extend(a.getShimContainer().style,{top:"0px",left:"0px",width:o.width+"px",height:o.height+"px"}),a=null},999),a.exec.call(c,"ImageView","display",this.result.uid,width,height),o.destroy()}),h.transport(m.atob(d.substring(d.indexOf("base64,")+7)),t,{required_caps:{display_media:!0},runtime_order:"flash,silverlight",container:n})}}var a,c=this,l=e.extend({width:this.width,height:this.height,type:this.type||"image/jpeg",quality:90},r);try{if(!(n=t.get(n)))throw new i.DOMException(i.DOMException.INVALID_NODE_TYPE_ERR);if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);this.width>h.MAX_RESIZE_WIDTH||this.height>h.MAX_RESIZE_HEIGHT;var d=new h;return d.bind("Resize",function(){o.call(this,l.type,l.quality)}),d.bind("Load",function(){d.downsize(l)}),this.meta.thumb&&this.meta.thumb.width>=l.width&&this.meta.thumb.height>=l.height?d.load(this.meta.thumb.data):d.clone(this,!1),d}catch(f){this.trigger("error",f.code)}},destroy:function(){this.ruid&&(this.getRuntime().exec.call(this,"Image","destroy"),this.disconnectRuntime()),this.unbindAll()}}),this.handleEventProps(f),this.bind("Load Resize",function(){return n.call(this)},999)}var f=["progress","load","error","resize","embedded"];return h.MAX_RESIZE_WIDTH=8192,h.MAX_RESIZE_HEIGHT=8192,h.prototype=c.instance,h}),n("moxie/runtime/html5/Runtime",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/Runtime","moxie/core/utils/Env"],function(e,t,i,n){function o(t){var o=this,u=i.capTest,c=i.capTrue,l=e.extend({access_binary:u(window.FileReader||window.File&&window.File.getAsDataURL),access_image_binary:function(){return o.can("access_binary")&&!!s.Image},display_media:u((n.can("create_canvas")||n.can("use_data_uri_over32kb"))&&r("moxie/image/Image")),do_cors:u(window.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest),drag_and_drop:u(function(){var e=document.createElement("div");return("draggable"in e||"ondragstart"in e&&"ondrop"in e)&&("IE"!==n.browser||n.verComp(n.version,9,">"))}()),filter_by_extension:u(function(){return!("Chrome"===n.browser&&n.verComp(n.version,28,"<")||"IE"===n.browser&&n.verComp(n.version,10,"<")||"Safari"===n.browser&&n.verComp(n.version,7,"<")||"Firefox"===n.browser&&n.verComp(n.version,37,"<"))}()),return_response_headers:c,return_response_type:function(e){return"json"===e&&window.JSON?!0:n.can("return_response_type",e)},return_status_code:c,report_upload_progress:u(window.XMLHttpRequest&&(new XMLHttpRequest).upload),resize_image:function(){return o.can("access_binary")&&n.can("create_canvas")},select_file:function(){return n.can("use_fileinput")&&window.File},select_folder:function(){return o.can("select_file")&&("Chrome"===n.browser&&n.verComp(n.version,21,">=")||"Firefox"===n.browser&&n.verComp(n.version,42,">="))},select_multiple:function(){return!(!o.can("select_file")||"Safari"===n.browser&&"Windows"===n.os||"iOS"===n.os&&n.verComp(n.osVersion,"7.0.0",">")&&n.verComp(n.osVersion,"8.0.0","<"))},send_binary_string:u(window.XMLHttpRequest&&((new XMLHttpRequest).sendAsBinary||window.Uint8Array&&window.ArrayBuffer)),send_custom_headers:u(window.XMLHttpRequest),send_multipart:function(){return!!(window.XMLHttpRequest&&(new XMLHttpRequest).upload&&window.FormData)||o.can("send_binary_string")},slice_blob:u(window.File&&(File.prototype.mozSlice||File.prototype.webkitSlice||File.prototype.slice)),stream_upload:function(){return o.can("slice_blob")&&o.can("send_multipart")},summon_file_dialog:function(){return o.can("select_file")&&("Firefox"===n.browser&&n.verComp(n.version,4,">=")||"Opera"===n.browser&&n.verComp(n.version,12,">=")||"IE"===n.browser&&n.verComp(n.version,10,">=")||!!~e.inArray(n.browser,["Chrome","Safari","Edge"]))},upload_filesize:c,use_http_method:c},arguments[2]);i.call(this,t,arguments[1]||a,l),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(o),e=o=null}}(this.destroy)}),e.extend(this.getShim(),s)}var a="html5",s={};return i.addConstructor(a,o),s}),n("moxie/runtime/html5/file/Blob",["moxie/runtime/html5/Runtime","moxie/file/Blob"],function(e,t){function i(){function e(e,t,i){var n;if(!window.File.prototype.slice)return(n=window.File.prototype.webkitSlice||window.File.prototype.mozSlice)?n.call(e,t,i):null;try{return e.slice(),e.slice(t,i)}catch(r){return e.slice(t,i-t)}}this.slice=function(){return new t(this.getRuntime().uid,e.apply(this,arguments))}}return e.Blob=i}),n("moxie/core/utils/Events",["moxie/core/utils/Basic"],function(e){function t(){this.returnValue=!1}function i(){this.cancelBubble=!0}var n={},r="moxie_"+e.guid(),o=function(o,a,s,u){var c,l;a=a.toLowerCase(),o.addEventListener?(c=s,o.addEventListener(a,c,!1)):o.attachEvent&&(c=function(){var e=window.event;e.target||(e.target=e.srcElement),e.preventDefault=t,e.stopPropagation=i,s(e)},o.attachEvent("on"+a,c)),o[r]||(o[r]=e.guid()),n.hasOwnProperty(o[r])||(n[o[r]]={}),l=n[o[r]],l.hasOwnProperty(a)||(l[a]=[]),l[a].push({func:c,orig:s,key:u})},a=function(t,i,o){var a,s;if(i=i.toLowerCase(),t[r]&&n[t[r]]&&n[t[r]][i]){a=n[t[r]][i];for(var u=a.length-1;u>=0&&(a[u].orig!==o&&a[u].key!==o||(t.removeEventListener?t.removeEventListener(i,a[u].func,!1):t.detachEvent&&t.detachEvent("on"+i,a[u].func),a[u].orig=null,a[u].func=null,a.splice(u,1),o===s));u--);if(a.length||delete n[t[r]][i],e.isEmptyObj(n[t[r]])){delete n[t[r]];try{delete t[r]}catch(c){t[r]=s}}}},s=function(t,i){t&&t[r]&&e.each(n[t[r]],function(e,n){a(t,n,i)})};return{addEvent:o,removeEvent:a,removeAllEvents:s}}),n("moxie/runtime/html5/file/FileInput",["moxie/runtime/html5/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o,a){function s(){var e,s;i.extend(this,{init:function(u){var c,l,d,m,h,f,p=this,g=p.getRuntime();e=u,d=e.accept.mimes||o.extList2mimes(e.accept,g.can("filter_by_extension")),l=g.getShimContainer(),l.innerHTML='",c=n.get(g.uid),i.extend(c.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),m=n.get(e.browse_button),s=n.getStyle(m,"z-index")||"auto",g.can("summon_file_dialog")&&("static"===n.getStyle(m,"position")&&(m.style.position="relative"),r.addEvent(m,"click",function(e){var t=n.get(g.uid);t&&!t.disabled&&t.click(),e.preventDefault()},p.uid),p.bind("Refresh",function(){h=parseInt(s,10)||1,n.get(e.browse_button).style.zIndex=h,this.getRuntime().getShimContainer().style.zIndex=h-1})),f=g.can("summon_file_dialog")?m:l,r.addEvent(f,"mouseover",function(){p.trigger("mouseenter")},p.uid),r.addEvent(f,"mouseout",function(){p.trigger("mouseleave")},p.uid),r.addEvent(f,"mousedown",function(){p.trigger("mousedown")},p.uid),r.addEvent(n.get(e.container),"mouseup",function(){p.trigger("mouseup")},p.uid),c.onchange=function x(){if(p.files=[],i.each(this.files,function(i){var n="";return e.directory&&"."==i.name?!0:(i.webkitRelativePath&&(n="/"+i.webkitRelativePath.replace(/^\//,"")),i=new t(g.uid,i),i.relativePath=n,p.files.push(i),void 0)}),"IE"!==a.browser&&"IEMobile"!==a.browser)this.value="";else{var n=this.cloneNode(!0);this.parentNode.replaceChild(n,this),n.onchange=x}p.files.length&&p.trigger("change")},p.trigger({type:"ready",async:!0}),l=null},setOption:function(e,t){var i=this.getRuntime(),r=n.get(i.uid);switch(e){case"accept":if(t){var a=t.mimes||o.extList2mimes(t,i.can("filter_by_extension"));r.setAttribute("accept",a.join(","))}else r.removeAttribute("accept");break;case"directory":t&&i.can("select_folder")?(r.setAttribute("directory",""),r.setAttribute("webkitdirectory","")):(r.removeAttribute("directory"),r.removeAttribute("webkitdirectory"));break;case"multiple":t&&i.can("select_multiple")?r.setAttribute("multiple",""):r.removeAttribute("multiple")}},disable:function(e){var t,i=this.getRuntime();(t=n.get(i.uid))&&(t.disabled=!!e)},destroy:function(){var t=this.getRuntime(),i=t.getShim(),o=t.getShimContainer(),a=e&&n.get(e.container),u=e&&n.get(e.browse_button);a&&r.removeAllEvents(a,this.uid),u&&(r.removeAllEvents(u,this.uid),u.style.zIndex=s),o&&(r.removeAllEvents(o,this.uid),o.innerHTML=""),i.removeInstance(this.uid),e=o=a=u=i=null}})}return e.FileInput=s}),n("moxie/runtime/html5/file/FileDrop",["moxie/runtime/html5/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime"],function(e,t,i,n,r,o){function a(){function e(e){if(!e.dataTransfer||!e.dataTransfer.types)return!1;var t=i.toArray(e.dataTransfer.types||[]);return-1!==i.inArray("Files",t)||-1!==i.inArray("public.file-url",t)||-1!==i.inArray("application/x-moz-file",t)}function a(e,i){if(u(e)){var n=new t(f,e);n.relativePath=i||"",p.push(n)}}function s(e){for(var t=[],n=0;n=")&&u.verComp(u.version,7,"<"),f="Android Browser"===u.browser,p=!1;if(h=i.url.replace(/^.+?\/([\w\-\.]+)$/,"$1").toLowerCase(),m=c(),m.open(i.method,i.url,i.async,i.user,i.password),r instanceof o)r.isDetached()&&(p=!0),r=r.getSource(); +else if(r instanceof a){if(r.hasBlob())if(r.getBlob().isDetached())r=d.call(s,r),p=!0;else if((l||f)&&"blob"===t.typeOf(r.getBlob().getSource())&&window.FileReader)return e.call(s,i,r),void 0;if(r instanceof a){var g=new window.FormData;r.each(function(e,t){e instanceof o?g.append(t,e.getSource()):g.append(t,e)}),r=g}}m.upload?(i.withCredentials&&(m.withCredentials=!0),m.addEventListener("load",function(e){s.trigger(e)}),m.addEventListener("error",function(e){s.trigger(e)}),m.addEventListener("progress",function(e){s.trigger(e)}),m.upload.addEventListener("progress",function(e){s.trigger({type:"UploadProgress",loaded:e.loaded,total:e.total})})):m.onreadystatechange=function(){switch(m.readyState){case 1:break;case 2:break;case 3:var e,t;try{n.hasSameOrigin(i.url)&&(e=m.getResponseHeader("Content-Length")||0),m.responseText&&(t=m.responseText.length)}catch(r){e=t=0}s.trigger({type:"progress",lengthComputable:!!e,total:parseInt(e,10),loaded:t});break;case 4:m.onreadystatechange=function(){},0===m.status?s.trigger("error"):s.trigger("load")}},t.isEmptyObj(i.headers)||t.each(i.headers,function(e,t){m.setRequestHeader(t,e)}),""!==i.responseType&&"responseType"in m&&(m.responseType="json"!==i.responseType||u.can("return_response_type","json")?i.responseType:"text"),p?m.sendAsBinary?m.sendAsBinary(r):function(){for(var e=new Uint8Array(r.length),t=0;t0&&o.set(new Uint8Array(t.slice(0,e)),0),o.set(new Uint8Array(r),e),o.set(new Uint8Array(t.slice(e+n)),e+r.byteLength),this.clear(),t=o.buffer,i=new DataView(t);break}default:return t}},length:function(){return t?t.byteLength:0},clear:function(){i=t=null}})}function n(t){function i(e,i,n){n=3===arguments.length?n:t.length-i-1,t=t.substr(0,i)+e+t.substr(n+i)}e.extend(this,{readByteAt:function(e){return t.charCodeAt(e)},writeByteAt:function(e,t){i(String.fromCharCode(t),e,1)},SEGMENT:function(e,n,r){switch(arguments.length){case 1:return t.substr(e);case 2:return t.substr(e,n);case 3:i(null!==r?r:"",e,n);break;default:return t}},length:function(){return t?t.length:0},clear:function(){t=null}})}return e.extend(t.prototype,{littleEndian:!1,read:function(e,t){var i,n,r;if(e+t>this.length())throw new Error("You are trying to read outside the source boundaries.");for(n=this.littleEndian?0:-8*(t-1),r=0,i=0;t>r;r++)i|=this.readByteAt(e+r)<this.length())throw new Error("You are trying to write outside the source boundaries.");for(n=this.littleEndian?0:-8*(i-1),r=0;i>r;r++)this.writeByteAt(e+r,255&t>>Math.abs(n+8*r))},BYTE:function(e){return this.read(e,1)},SHORT:function(e){return this.read(e,2)},LONG:function(e){return this.read(e,4)},SLONG:function(e){var t=this.read(e,4);return t>2147483647?t-4294967296:t},CHAR:function(e){return String.fromCharCode(this.read(e,1))},STRING:function(e,t){return this.asArray("CHAR",e,t).join("")},asArray:function(e,t,i){for(var n=[],r=0;i>r;r++)n[r]=this[e](t+r);return n}}),t}),n("moxie/runtime/html5/image/JPEGHeaders",["moxie/runtime/html5/utils/BinaryReader","moxie/core/Exceptions"],function(e,t){return function i(n){var r,o,a,s=[],u=0;if(r=new e(n),65496!==r.SHORT(0))throw r.clear(),new t.ImageError(t.ImageError.WRONG_FORMAT);for(o=2;o<=r.length();)if(a=r.SHORT(o),a>=65488&&65495>=a)o+=2;else{if(65498===a||65497===a)break;u=r.SHORT(o+2)+2,a>=65505&&65519>=a&&s.push({hex:a,name:"APP"+(15&a),start:o,length:u,segment:r.SEGMENT(o,u)}),o+=u}return r.clear(),{headers:s,restore:function(t){var i,n,r;for(r=new e(t),o=65504==r.SHORT(2)?4+r.SHORT(4):2,n=0,i=s.length;i>n;n++)r.SEGMENT(o,0,s[n].segment),o+=s[n].length;return t=r.SEGMENT(),r.clear(),t},strip:function(t){var n,r,o,a;for(o=new i(t),r=o.headers,o.purge(),n=new e(t),a=r.length;a--;)n.SEGMENT(r[a].start,r[a].length,"");return t=n.SEGMENT(),n.clear(),t},get:function(e){for(var t=[],i=0,n=s.length;n>i;i++)s[i].name===e.toUpperCase()&&t.push(s[i].segment);return t},set:function(e,t){var i,n,r,o=[];for("string"==typeof t?o.push(t):o=t,i=n=0,r=s.length;r>i&&(s[i].name===e.toUpperCase()&&(s[i].segment=o[n],s[i].length=o[n].length,n++),!(n>=o.length));i++);},purge:function(){this.headers=s=[]}}}}),n("moxie/runtime/html5/image/ExifParser",["moxie/core/utils/Basic","moxie/runtime/html5/utils/BinaryReader","moxie/core/Exceptions"],function(e,i,n){function r(o){function a(i,r){var o,a,s,u,c,m,h,f,p=this,g=[],x={},v={1:"BYTE",7:"UNDEFINED",2:"ASCII",3:"SHORT",4:"LONG",5:"RATIONAL",9:"SLONG",10:"SRATIONAL"},y={BYTE:1,UNDEFINED:1,ASCII:1,SHORT:2,LONG:4,RATIONAL:8,SLONG:4,SRATIONAL:8};for(o=p.SHORT(i),a=0;o>a;a++)if(g=[],h=i+2+12*a,s=r[p.SHORT(h)],s!==t){if(u=v[p.SHORT(h+=2)],c=p.LONG(h+=2),m=y[u],!m)throw new n.ImageError(n.ImageError.INVALID_META_ERR);if(h+=4,m*c>4&&(h=p.LONG(h)+d.tiffHeader),h+m*c>=this.length())throw new n.ImageError(n.ImageError.INVALID_META_ERR);"ASCII"!==u?(g=p.asArray(u,h,c),f=1==c?g[0]:g,x[s]=l.hasOwnProperty(s)&&"object"!=typeof f?l[s][f]:f):x[s]=e.trim(p.STRING(h,c).replace(/\0$/,""))}return x}function s(e,t,i){var n,r,o,a=0;if("string"==typeof t){var s=c[e.toLowerCase()];for(var u in s)if(s[u]===t){t=u;break}}n=d[e.toLowerCase()+"IFD"],r=this.SHORT(n);for(var l=0;r>l;l++)if(o=n+12*l+2,this.SHORT(o)==t){a=o+8;break}if(!a)return!1;try{this.write(a,i,4)}catch(m){return!1}return!0}var u,c,l,d,m,h;if(i.call(this,o),c={tiff:{274:"Orientation",270:"ImageDescription",271:"Make",272:"Model",305:"Software",34665:"ExifIFDPointer",34853:"GPSInfoIFDPointer"},exif:{36864:"ExifVersion",40961:"ColorSpace",40962:"PixelXDimension",40963:"PixelYDimension",36867:"DateTimeOriginal",33434:"ExposureTime",33437:"FNumber",34855:"ISOSpeedRatings",37377:"ShutterSpeedValue",37378:"ApertureValue",37383:"MeteringMode",37384:"LightSource",37385:"Flash",37386:"FocalLength",41986:"ExposureMode",41987:"WhiteBalance",41990:"SceneCaptureType",41988:"DigitalZoomRatio",41992:"Contrast",41993:"Saturation",41994:"Sharpness"},gps:{0:"GPSVersionID",1:"GPSLatitudeRef",2:"GPSLatitude",3:"GPSLongitudeRef",4:"GPSLongitude"},thumb:{513:"JPEGInterchangeFormat",514:"JPEGInterchangeFormatLength"}},l={ColorSpace:{1:"sRGB",0:"Uncalibrated"},MeteringMode:{0:"Unknown",1:"Average",2:"CenterWeightedAverage",3:"Spot",4:"MultiSpot",5:"Pattern",6:"Partial",255:"Other"},LightSource:{1:"Daylight",2:"Fliorescent",3:"Tungsten",4:"Flash",9:"Fine weather",10:"Cloudy weather",11:"Shade",12:"Daylight fluorescent (D 5700 - 7100K)",13:"Day white fluorescent (N 4600 -5400K)",14:"Cool white fluorescent (W 3900 - 4500K)",15:"White fluorescent (WW 3200 - 3700K)",17:"Standard light A",18:"Standard light B",19:"Standard light C",20:"D55",21:"D65",22:"D75",23:"D50",24:"ISO studio tungsten",255:"Other"},Flash:{0:"Flash did not fire",1:"Flash fired",5:"Strobe return light not detected",7:"Strobe return light detected",9:"Flash fired, compulsory flash mode",13:"Flash fired, compulsory flash mode, return light not detected",15:"Flash fired, compulsory flash mode, return light detected",16:"Flash did not fire, compulsory flash mode",24:"Flash did not fire, auto mode",25:"Flash fired, auto mode",29:"Flash fired, auto mode, return light not detected",31:"Flash fired, auto mode, return light detected",32:"No flash function",65:"Flash fired, red-eye reduction mode",69:"Flash fired, red-eye reduction mode, return light not detected",71:"Flash fired, red-eye reduction mode, return light detected",73:"Flash fired, compulsory flash mode, red-eye reduction mode",77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",89:"Flash fired, auto mode, red-eye reduction mode",93:"Flash fired, auto mode, return light not detected, red-eye reduction mode",95:"Flash fired, auto mode, return light detected, red-eye reduction mode"},ExposureMode:{0:"Auto exposure",1:"Manual exposure",2:"Auto bracket"},WhiteBalance:{0:"Auto white balance",1:"Manual white balance"},SceneCaptureType:{0:"Standard",1:"Landscape",2:"Portrait",3:"Night scene"},Contrast:{0:"Normal",1:"Soft",2:"Hard"},Saturation:{0:"Normal",1:"Low saturation",2:"High saturation"},Sharpness:{0:"Normal",1:"Soft",2:"Hard"},GPSLatitudeRef:{N:"North latitude",S:"South latitude"},GPSLongitudeRef:{E:"East longitude",W:"West longitude"}},d={tiffHeader:10},m=d.tiffHeader,u={clear:this.clear},e.extend(this,{read:function(){try{return r.prototype.read.apply(this,arguments)}catch(e){throw new n.ImageError(n.ImageError.INVALID_META_ERR)}},write:function(){try{return r.prototype.write.apply(this,arguments)}catch(e){throw new n.ImageError(n.ImageError.INVALID_META_ERR)}},UNDEFINED:function(){return this.BYTE.apply(this,arguments)},RATIONAL:function(e){return this.LONG(e)/this.LONG(e+4)},SRATIONAL:function(e){return this.SLONG(e)/this.SLONG(e+4)},ASCII:function(e){return this.CHAR(e)},TIFF:function(){return h||null},EXIF:function(){var t=null;if(d.exifIFD){try{t=a.call(this,d.exifIFD,c.exif)}catch(i){return null}if(t.ExifVersion&&"array"===e.typeOf(t.ExifVersion)){for(var n=0,r="";n=65472&&65475>=t)return n+=5,{height:e.SHORT(n),width:e.SHORT(n+=2)};i=e.SHORT(n+=2),n+=i-2}return null}function s(){var e,t,i=d.thumb();return i&&(e=new n(i),t=a(e),e.clear(),t)?(t.data=i,t):null}function u(){d&&l&&c&&(d.clear(),l.purge(),c.clear(),m=l=d=c=null)}var c,l,d,m;if(c=new n(o),65496!==c.SHORT(0))throw new t.ImageError(t.ImageError.WRONG_FORMAT);l=new i(o);try{d=new r(l.get("app1")[0])}catch(h){}m=a.call(this),e.extend(this,{type:"image/jpeg",size:c.length(),width:m&&m.width||0,height:m&&m.height||0,setExif:function(t,i){return d?("object"===e.typeOf(t)?e.each(t,function(e,t){d.setExif(t,e)}):d.setExif(t,i),l.set("app1",d.SEGMENT()),void 0):!1},writeHeaders:function(){return arguments.length?l.restore(arguments[0]):l.restore(o)},stripHeaders:function(e){return l.strip(e)},purge:function(){u.call(this)}}),d&&(this.meta={tiff:d.TIFF(),exif:d.EXIF(),gps:d.GPS(),thumb:s()})}return o}),n("moxie/runtime/html5/image/PNG",["moxie/core/Exceptions","moxie/core/utils/Basic","moxie/runtime/html5/utils/BinaryReader"],function(e,t,i){function n(n){function r(){var e,t;return e=a.call(this,8),"IHDR"==e.type?(t=e.start,{width:s.LONG(t),height:s.LONG(t+=4)}):null}function o(){s&&(s.clear(),n=l=u=c=s=null)}function a(e){var t,i,n,r;return t=s.LONG(e),i=s.STRING(e+=4,4),n=e+=4,r=s.LONG(e+t),{length:t,type:i,start:n,CRC:r}}var s,u,c,l;s=new i(n),function(){var t=0,i=0,n=[35152,20039,3338,6666];for(i=0;in||n>2)&&(n=.5>n?.5:2,a=!0);var s=t(i,n);return a?e(s,o/s.width):s}function t(e,t){var i=e.width,n=e.height,r=Math.floor(i*t),o=Math.floor(n*t),a=document.createElement("canvas");return a.width=r,a.height=o,a.getContext("2d").drawImage(e,0,0,i,n,0,0,r,o),e=null,a}return{scale:e}}),n("moxie/runtime/html5/image/Image",["moxie/runtime/html5/Runtime","moxie/core/utils/Basic","moxie/core/Exceptions","moxie/core/utils/Encode","moxie/file/Blob","moxie/file/File","moxie/runtime/html5/image/ImageInfo","moxie/runtime/html5/image/ResizerCanvas","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o,a,s,u){function c(){function e(){if(!v&&!g)throw new i.ImageError(i.DOMException.INVALID_STATE_ERR);return v||g}function c(){var t=e();return"canvas"==t.nodeName.toLowerCase()?t:(v=document.createElement("canvas"),v.width=t.width,v.height=t.height,v.getContext("2d").drawImage(t,0,0),v)}function l(e){return n.atob(e.substring(e.indexOf("base64,")+7))}function d(e,t){return"data:"+(t||"")+";base64,"+n.btoa(e)}function m(e){var t=this;g=new Image,g.onerror=function(){p.call(this),t.trigger("error",i.ImageError.WRONG_FORMAT)},g.onload=function(){t.trigger("load")},g.src="data:"==e.substr(0,5)?e:d(e,w.type)}function h(e,t){var n,r=this;return window.FileReader?(n=new FileReader,n.onload=function(){t(this.result)},n.onerror=function(){r.trigger("error",i.ImageError.WRONG_FORMAT)},n.readAsDataURL(e),void 0):t(e.getAsDataURL())}function f(e,i){var n=Math.PI/180,r=document.createElement("canvas"),o=r.getContext("2d"),a=e.width,s=e.height;switch(t.inArray(i,[5,6,7,8])>-1?(r.width=s,r.height=a):(r.width=a,r.height=s),i){case 2:o.translate(a,0),o.scale(-1,1);break;case 3:o.translate(a,s),o.rotate(180*n);break;case 4:o.translate(0,s),o.scale(1,-1);break;case 5:o.rotate(90*n),o.scale(1,-1);break;case 6:o.rotate(90*n),o.translate(0,-s);break;case 7:o.rotate(90*n),o.translate(a,-s),o.scale(-1,1);break;case 8:o.rotate(-90*n),o.translate(-a,0)}return o.drawImage(e,0,0,a,s),r}function p(){x&&(x.purge(),x=null),y=g=v=w=null,b=!1}var g,x,v,y,w,E=this,b=!1,R=!0;t.extend(this,{loadFromBlob:function(e){var t=this,n=t.getRuntime(),r=arguments.length>1?arguments[1]:!0;if(!n.can("access_binary"))throw new i.RuntimeError(i.RuntimeError.NOT_SUPPORTED_ERR);return w=e,e.isDetached()?(y=e.getSource(),m.call(this,y),void 0):(h.call(this,e.getSource(),function(e){r&&(y=l(e)),m.call(t,e)}),void 0)},loadFromImage:function(e,t){this.meta=e.meta,w=new o(null,{name:e.name,size:e.size,type:e.type}),m.call(this,t?y=e.getAsBinaryString():e.getAsDataURL())},getInfo:function(){var t,i=this.getRuntime();return!x&&y&&i.can("access_image_binary")&&(x=new a(y)),t={width:e().width||0,height:e().height||0,type:w.type||u.getFileMime(w.name),size:y&&y.length||w.size||0,name:w.name||"",meta:null},R&&(t.meta=x&&x.meta||this.meta||{},!t.meta||!t.meta.thumb||t.meta.thumb.data instanceof r||(t.meta.thumb.data=new r(null,{type:"image/jpeg",data:t.meta.thumb.data}))),t},resize:function(t,i,n){var r=document.createElement("canvas");if(r.width=t.width,r.height=t.height,r.getContext("2d").drawImage(e(),t.x,t.y,t.width,t.height,0,0,r.width,r.height),v=s.scale(r,i),R=n.preserveHeaders,!R){var o=this.meta&&this.meta.tiff&&this.meta.tiff.Orientation||1;v=f(v,o)}this.width=v.width,this.height=v.height,b=!0,this.trigger("Resize")},getAsCanvas:function(){return v||(v=c()),v.id=this.uid+"_canvas",v},getAsBlob:function(e,t){return e!==this.type?(b=!0,new o(null,{name:w.name||"",type:e,data:E.getAsDataURL(e,t)})):new o(null,{name:w.name||"",type:e,data:E.getAsBinaryString(e,t)})},getAsDataURL:function(e){var t=arguments[1]||90;if(!b)return g.src;if(c(),"image/jpeg"!==e)return v.toDataURL("image/png");try{return v.toDataURL("image/jpeg",t/100)}catch(i){return v.toDataURL("image/jpeg")}},getAsBinaryString:function(e,t){if(!b)return y||(y=l(E.getAsDataURL(e,t))),y;if("image/jpeg"!==e)y=l(E.getAsDataURL(e,t));else{var i;t||(t=90),c();try{i=v.toDataURL("image/jpeg",t/100)}catch(n){i=v.toDataURL("image/jpeg")}y=l(i),x&&(y=x.stripHeaders(y),R&&(x.meta&&x.meta.exif&&x.setExif({PixelXDimension:this.width,PixelYDimension:this.height}),y=x.writeHeaders(y)),x.purge(),x=null)}return b=!1,y},destroy:function(){E=null,p.call(this),this.getRuntime().getShim().removeInstance(this.uid)}})}return e.Image=c}),n("moxie/runtime/flash/Runtime",["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/runtime/Runtime"],function(e,t,i,n,o){function a(){var e;try{e=navigator.plugins["Shockwave Flash"],e=e.description}catch(t){try{e=new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version")}catch(i){e="0.0"}}return e=e.match(/\d+/g),parseFloat(e[0]+"."+e[1])}function s(e){var n=i.get(e);n&&"OBJECT"==n.nodeName&&("IE"===t.browser?(n.style.display="none",function r(){4==n.readyState?u(e):setTimeout(r,10)}()):n.parentNode.removeChild(n))}function u(e){var t=i.get(e);if(t){for(var n in t)"function"==typeof t[n]&&(t[n]=null);t.parentNode.removeChild(t)}}function c(u){var c,m=this;u=e.extend({swf_url:t.swf_url},u),o.call(this,u,l,{access_binary:function(e){return e&&"browser"===m.mode},access_image_binary:function(e){return e&&"browser"===m.mode},display_media:o.capTest(r("moxie/image/Image")),do_cors:o.capTrue,drag_and_drop:!1,report_upload_progress:function(){return"client"===m.mode},resize_image:o.capTrue,return_response_headers:!1,return_response_type:function(t){return"json"===t&&window.JSON?!0:!e.arrayDiff(t,["","text","document"])||"browser"===m.mode},return_status_code:function(t){return"browser"===m.mode||!e.arrayDiff(t,[200,404])},select_file:o.capTrue,select_multiple:o.capTrue,send_binary_string:function(e){return e&&"browser"===m.mode},send_browser_cookies:function(e){return e&&"browser"===m.mode},send_custom_headers:function(e){return e&&"browser"===m.mode},send_multipart:o.capTrue,slice_blob:function(e){return e&&"browser"===m.mode},stream_upload:function(e){return e&&"browser"===m.mode},summon_file_dialog:!1,upload_filesize:function(t){return e.parseSizeStr(t)<=2097152||"client"===m.mode},use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}},{access_binary:function(e){return e?"browser":"client"},access_image_binary:function(e){return e?"browser":"client"},report_upload_progress:function(e){return e?"browser":"client"},return_response_type:function(t){return e.arrayDiff(t,["","text","json","document"])?"browser":["client","browser"]},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"browser":["client","browser"]},send_binary_string:function(e){return e?"browser":"client"},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"browser":"client"},slice_blob:function(e){return e?"browser":"client"},stream_upload:function(e){return e?"client":"browser"},upload_filesize:function(t){return e.parseSizeStr(t)>=2097152?"client":"browser"}},"client"),a()<11.3&&(this.mode=!1),e.extend(this,{getShim:function(){return i.get(this.uid)},shimExec:function(e,t){var i=[].slice.call(arguments,2);return m.getShim().exec(this.uid,e,t,i)},init:function(){var i,r,o;o=this.getShimContainer(),e.extend(o.style,{position:"absolute",top:"-8px",left:"-8px",width:"9px",height:"9px",overflow:"hidden"}),i=''+''+''+''+"","IE"===t.browser?(r=document.createElement("div"),o.appendChild(r),r.outerHTML=i,r=o=null):o.innerHTML=i,c=setTimeout(function(){m&&!m.initialized&&m.trigger("Error",new n.RuntimeError(n.RuntimeError.NOT_INIT_ERR))},5e3)},destroy:function(e){return function(){s(m.uid),e.call(m),clearTimeout(c),u=c=e=m=null}}(this.destroy)},d)}var l="flash",d={};return o.addConstructor(l,c),d}),n("moxie/runtime/flash/file/Blob",["moxie/runtime/flash/Runtime","moxie/file/Blob"],function(e,t){var i={slice:function(e,i,n,r){var o=this.getRuntime();return 0>i?i=Math.max(e.size+i,0):i>0&&(i=Math.min(i,e.size)),0>n?n=Math.max(e.size+n,0):n>0&&(n=Math.min(n,e.size)),e=o.shimExec.call(this,"Blob","slice",i,n,r||""),e&&(e=new t(o.uid,e)),e}};return e.Blob=i}),n("moxie/runtime/flash/file/FileInput",["moxie/runtime/flash/Runtime","moxie/file/File","moxie/core/utils/Basic"],function(e,t,i){var n={init:function(e){var n=this,r=this.getRuntime();this.bind("Change",function(){var e=r.shimExec.call(n,"FileInput","getFiles");n.files=[],i.each(e,function(e){n.files.push(new t(r.uid,e))})},999),this.getRuntime().shimExec.call(this,"FileInput","init",{accept:e.accept,multiple:e.multiple}),this.trigger("ready")}};return e.FileInput=n}),n("moxie/runtime/flash/file/FileReader",["moxie/runtime/flash/Runtime","moxie/core/utils/Encode"],function(e,t){function i(e,i){switch(i){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var n={read:function(e,t){var n=this;return n.result="","readAsDataURL"===e&&(n.result="data:"+(t.type||"")+";base64,"),n.bind("Progress",function(t,r){r&&(n.result+=i(r,e))},999),n.getRuntime().shimExec.call(this,"FileReader","readAsBase64",t.uid)}};return e.FileReader=n}),n("moxie/runtime/flash/file/FileReaderSync",["moxie/runtime/flash/Runtime","moxie/core/utils/Encode"],function(e,t){function i(e,i){switch(i){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var n={read:function(e,t){var n,r=this.getRuntime();return(n=r.shimExec.call(this,"FileReaderSync","readAsBase64",t.uid))?("readAsDataURL"===e&&(n="data:"+(t.type||"")+";base64,"+n),i(n,e,t.type)):null}};return e.FileReaderSync=n}),n("moxie/runtime/flash/runtime/Transporter",["moxie/runtime/flash/Runtime","moxie/file/Blob"],function(e,t){var i={getAsBlob:function(e){var i=this.getRuntime(),n=i.shimExec.call(this,"Transporter","getAsBlob",e);return n?new t(i.uid,n):null}};return e.Transporter=i}),n("moxie/runtime/flash/xhr/XMLHttpRequest",["moxie/runtime/flash/Runtime","moxie/core/utils/Basic","moxie/file/Blob","moxie/file/File","moxie/file/FileReaderSync","moxie/runtime/flash/file/FileReaderSync","moxie/xhr/FormData","moxie/runtime/Transporter","moxie/runtime/flash/runtime/Transporter"],function(e,t,i,n,r,o,a,s){var u={send:function(e,n){function r(){e.transport=l.mode,l.shimExec.call(c,"XMLHttpRequest","send",e,n)}function o(e,t){l.shimExec.call(c,"XMLHttpRequest","appendBlob",e,t.uid),n=null,r()}function u(e,t){var i=new s;i.bind("TransportingComplete",function(){t(this.result)}),i.transport(e.getSource(),e.type,{ruid:l.uid})}var c=this,l=c.getRuntime();if(t.isEmptyObj(e.headers)||t.each(e.headers,function(e,t){l.shimExec.call(c,"XMLHttpRequest","setRequestHeader",t,e.toString())}),n instanceof a){var d;if(n.each(function(e,t){e instanceof i?d=t:l.shimExec.call(c,"XMLHttpRequest","append",t,e)}),n.hasBlob()){var m=n.getBlob();m.isDetached()?u(m,function(e){m.destroy(),o(d,e)}):o(d,m)}else n=null,r()}else n instanceof i?n.isDetached()?u(n,function(e){n.destroy(),n=e.uid,r()}):(n=n.uid,r()):r()},getResponse:function(e){var i,o,a=this.getRuntime();if(o=a.shimExec.call(this,"XMLHttpRequest","getResponseAsBlob")){if(o=new n(a.uid,o),"blob"===e)return o;try{if(i=new r,~t.inArray(e,["","text"]))return i.readAsText(o);if("json"===e&&window.JSON)return JSON.parse(i.readAsText(o))}finally{o.destroy()}}return null},abort:function(){var e=this.getRuntime();e.shimExec.call(this,"XMLHttpRequest","abort"),this.dispatchEvent("readystatechange"),this.dispatchEvent("abort")}};return e.XMLHttpRequest=u}),n("moxie/runtime/flash/image/Image",["moxie/runtime/flash/Runtime","moxie/core/utils/Basic","moxie/runtime/Transporter","moxie/file/Blob","moxie/file/FileReaderSync"],function(e,t,i,n,r){var o={loadFromBlob:function(e){function t(e){r.shimExec.call(n,"Image","loadFromBlob",e.uid),n=r=null}var n=this,r=n.getRuntime();if(e.isDetached()){var o=new i;o.bind("TransportingComplete",function(){t(o.result.getSource())}),o.transport(e.getSource(),e.type,{ruid:r.uid})}else t(e.getSource())},loadFromImage:function(e){var t=this.getRuntime();return t.shimExec.call(this,"Image","loadFromImage",e.uid)},getInfo:function(){var e=this.getRuntime(),t=e.shimExec.call(this,"Image","getInfo");return!t.meta||!t.meta.thumb||t.meta.thumb.data instanceof n||(t.meta.thumb.data=new n(e.uid,t.meta.thumb.data)),t},getAsBlob:function(e,t){var i=this.getRuntime(),r=i.shimExec.call(this,"Image","getAsBlob",e,t);return r?new n(i.uid,r):null},getAsDataURL:function(){var e,t=this.getRuntime(),i=t.Image.getAsBlob.apply(this,arguments);return i?(e=new r,e.readAsDataURL(i)):null}};return e.Image=o}),n("moxie/runtime/silverlight/Runtime",["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/runtime/Runtime"],function(e,t,i,n,o){function a(e){var t,i,n,r,o,a=!1,s=null,u=0;try{try{s=new ActiveXObject("AgControl.AgControl"),s.IsVersionSupported(e)&&(a=!0),s=null}catch(c){var l=navigator.plugins["Silverlight Plug-In"];if(l){for(t=l.description,"1.0.30226.2"===t&&(t="2.0.30226.2"),i=t.split(".");i.length>3;)i.pop();for(;i.length<4;)i.push(0);for(n=e.split(".");n.length>4;)n.pop();do r=parseInt(n[u],10),o=parseInt(i[u],10),u++;while(u=r&&!isNaN(r)&&(a=!0)}}}catch(d){a=!1}return a}function s(s){var l,d=this;s=e.extend({xap_url:t.xap_url},s),o.call(this,s,u,{access_binary:o.capTrue,access_image_binary:o.capTrue,display_media:o.capTest(r("moxie/image/Image")),do_cors:o.capTrue,drag_and_drop:!1,report_upload_progress:o.capTrue,resize_image:o.capTrue,return_response_headers:function(e){return e&&"client"===d.mode},return_response_type:function(e){return"json"!==e?!0:!!window.JSON},return_status_code:function(t){return"client"===d.mode||!e.arrayDiff(t,[200,404])},select_file:o.capTrue,select_multiple:o.capTrue,send_binary_string:o.capTrue,send_browser_cookies:function(e){return e&&"browser"===d.mode},send_custom_headers:function(e){return e&&"client"===d.mode},send_multipart:o.capTrue,slice_blob:o.capTrue,stream_upload:!0,summon_file_dialog:!1,upload_filesize:o.capTrue,use_http_method:function(t){return"client"===d.mode||!e.arrayDiff(t,["GET","POST"])}},{return_response_headers:function(e){return e?"client":"browser"},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"client":["client","browser"]},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"client":"browser"},use_http_method:function(t){return e.arrayDiff(t,["GET","POST"])?"client":["client","browser"]}}),a("2.0.31005.0")&&"Opera"!==t.browser||(this.mode=!1),e.extend(this,{getShim:function(){return i.get(this.uid).content.Moxie},shimExec:function(e,t){var i=[].slice.call(arguments,2);return d.getShim().exec(this.uid,e,t,i)},init:function(){var e;e=this.getShimContainer(),e.innerHTML=''+''+''+''+''+''+"",l=setTimeout(function(){d&&!d.initialized&&d.trigger("Error",new n.RuntimeError(n.RuntimeError.NOT_INIT_ERR))},"Windows"!==t.OS?1e4:5e3)},destroy:function(e){return function(){e.call(d),clearTimeout(l),s=l=e=d=null}}(this.destroy)},c)}var u="silverlight",c={};return o.addConstructor(u,s),c}),n("moxie/runtime/silverlight/file/Blob",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/file/Blob"],function(e,t,i){return e.Blob=t.extend({},i)}),n("moxie/runtime/silverlight/file/FileInput",["moxie/runtime/silverlight/Runtime","moxie/file/File","moxie/core/utils/Basic"],function(e,t,i){function n(e){for(var t="",i=0;ii;i++)t=s.keys[i],a=s[t],a&&(/^(\d|[1-9]\d+)$/.test(a)?a=parseInt(a,10):/^\d*\.\d+$/.test(a)&&(a=parseFloat(a)),r.meta[e][t]=a)}),!r.meta||!r.meta.thumb||r.meta.thumb.data instanceof i||(r.meta.thumb.data=new i(e.uid,r.meta.thumb.data))),r.width=parseInt(o.width,10),r.height=parseInt(o.height,10),r.size=parseInt(o.size,10),r.type=o.type,r.name=o.name,r},resize:function(e,t,i){this.getRuntime().shimExec.call(this,"Image","resize",e.x,e.y,e.width,e.height,t,i.preserveHeaders,i.resample)}})}),n("moxie/runtime/html4/Runtime",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/Runtime","moxie/core/utils/Env"],function(e,t,i,n){function o(t){var o=this,u=i.capTest,c=i.capTrue;i.call(this,t,a,{access_binary:u(window.FileReader||window.File&&File.getAsDataURL),access_image_binary:!1,display_media:u((n.can("create_canvas")||n.can("use_data_uri_over32kb"))&&r("moxie/image/Image")),do_cors:!1,drag_and_drop:!1,filter_by_extension:u(function(){return!("Chrome"===n.browser&&n.verComp(n.version,28,"<")||"IE"===n.browser&&n.verComp(n.version,10,"<")||"Safari"===n.browser&&n.verComp(n.version,7,"<")||"Firefox"===n.browser&&n.verComp(n.version,37,"<"))}()),resize_image:function(){return s.Image&&o.can("access_binary")&&n.can("create_canvas")},report_upload_progress:!1,return_response_headers:!1,return_response_type:function(t){return"json"===t&&window.JSON?!0:!!~e.inArray(t,["text","document",""])},return_status_code:function(t){return!e.arrayDiff(t,[200,404])},select_file:function(){return n.can("use_fileinput")},select_multiple:!1,send_binary_string:!1,send_custom_headers:!1,send_multipart:!0,slice_blob:!1,stream_upload:function(){return o.can("select_file")},summon_file_dialog:function(){return o.can("select_file")&&("Firefox"===n.browser&&n.verComp(n.version,4,">=")||"Opera"===n.browser&&n.verComp(n.version,12,">=")||"IE"===n.browser&&n.verComp(n.version,10,">=")||!!~e.inArray(n.browser,["Chrome","Safari"]))},upload_filesize:c,use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}}),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(o),e=o=null}}(this.destroy)}),e.extend(this.getShim(),s)}var a="html4",s={};return i.addConstructor(a,o),s}),n("moxie/runtime/html4/file/FileInput",["moxie/runtime/html4/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o,a){function s(){function e(){var o,c,d,m,h,f,p=this,g=p.getRuntime();f=i.guid("uid_"),o=g.getShimContainer(),s&&(d=n.get(s+"_form"),d&&i.extend(d.style,{top:"100%"})),m=document.createElement("form"),m.setAttribute("id",f+"_form"),m.setAttribute("method","post"),m.setAttribute("enctype","multipart/form-data"),m.setAttribute("encoding","multipart/form-data"),i.extend(m.style,{overflow:"hidden",position:"absolute",top:0,left:0,width:"100%",height:"100%"}),h=document.createElement("input"),h.setAttribute("id",f),h.setAttribute("type","file"),h.setAttribute("accept",l.join(",")),i.extend(h.style,{fontSize:"999px",opacity:0}),m.appendChild(h),o.appendChild(m),i.extend(h.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),"IE"===a.browser&&a.verComp(a.version,10,"<")&&i.extend(h.style,{filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=0)"}),h.onchange=function(){var i;if(this.value){if(this.files){if(i=this.files[0],0===i.size)return m.parentNode.removeChild(m),void 0}else i={name:this.value};i=new t(g.uid,i),this.onchange=function(){},e.call(p),p.files=[i],h.setAttribute("id",i.uid),m.setAttribute("id",i.uid+"_form"),p.trigger("change"),h=m=null}},g.can("summon_file_dialog")&&(c=n.get(u.browse_button),r.removeEvent(c,"click",p.uid),r.addEvent(c,"click",function(e){h&&!h.disabled&&h.click(),e.preventDefault()},p.uid)),s=f,o=d=c=null}var s,u,c,l=[];i.extend(this,{init:function(t){var i,a=this,s=a.getRuntime();u=t,l=t.accept.mimes||o.extList2mimes(t.accept,s.can("filter_by_extension")),i=s.getShimContainer(),function(){var e,o,l;e=n.get(t.browse_button),c=n.getStyle(e,"z-index")||"auto",s.can("summon_file_dialog")&&("static"===n.getStyle(e,"position")&&(e.style.position="relative"),a.bind("Refresh",function(){o=parseInt(c,10)||1,n.get(u.browse_button).style.zIndex=o,this.getRuntime().getShimContainer().style.zIndex=o-1})),l=s.can("summon_file_dialog")?e:i,r.addEvent(l,"mouseover",function(){a.trigger("mouseenter")},a.uid),r.addEvent(l,"mouseout",function(){a.trigger("mouseleave")},a.uid),r.addEvent(l,"mousedown",function(){a.trigger("mousedown")},a.uid),r.addEvent(n.get(t.container),"mouseup",function(){a.trigger("mouseup")},a.uid),e=null}(),e.call(this),i=null,a.trigger({type:"ready",async:!0})},setOption:function(e,t){var i,r=this.getRuntime();"accept"==e&&(l=t.mimes||o.extList2mimes(t,r.can("filter_by_extension"))),i=n.get(s),i&&i.setAttribute("accept",l.join(","))},disable:function(e){var t;(t=n.get(s))&&(t.disabled=!!e)},destroy:function(){var e=this.getRuntime(),t=e.getShim(),i=e.getShimContainer(),o=u&&n.get(u.container),a=u&&n.get(u.browse_button);o&&r.removeAllEvents(o,this.uid),a&&(r.removeAllEvents(a,this.uid),a.style.zIndex=c),i&&(r.removeAllEvents(i,this.uid),i.innerHTML=""),t.removeInstance(this.uid),s=l=u=i=o=a=t=null}})}return e.FileInput=s}),n("moxie/runtime/html4/file/FileReader",["moxie/runtime/html4/Runtime","moxie/runtime/html5/file/FileReader"],function(e,t){return e.FileReader=t}),n("moxie/runtime/html4/xhr/XMLHttpRequest",["moxie/runtime/html4/Runtime","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Url","moxie/core/Exceptions","moxie/core/utils/Events","moxie/file/Blob","moxie/xhr/FormData"],function(e,t,i,n,r,o,a,s){function u(){function e(e){var t,n,r,a,s=this,u=!1;if(l){if(t=l.id.replace(/_iframe$/,""),n=i.get(t+"_form")){for(r=n.getElementsByTagName("input"),a=r.length;a--;)switch(r[a].getAttribute("type")){case"hidden":r[a].parentNode.removeChild(r[a]);break;case"file":u=!0}r=[],u||n.parentNode.removeChild(n),n=null}setTimeout(function(){o.removeEvent(l,"load",s.uid),l.parentNode&&l.parentNode.removeChild(l);var t=s.getRuntime().getShimContainer();t.children.length||t.parentNode.removeChild(t),t=l=null,e()},1)}}var u,c,l;t.extend(this,{send:function(d,m){function h(){var i=y.getShimContainer()||document.body,r=document.createElement("div");r.innerHTML='',l=r.firstChild,i.appendChild(l),o.addEvent(l,"load",function(){var i;try{i=l.contentWindow.document||l.contentDocument||window.frames[l.id].document,/^4(0[0-9]|1[0-7]|2[2346])\s/.test(i.title)?u=i.title.replace(/^(\d+).*$/,"$1"):(u=200,c=t.trim(i.body.innerHTML),v.trigger({type:"progress",loaded:c.length,total:c.length}),x&&v.trigger({type:"uploadprogress",loaded:x.size||1025,total:x.size||1025}))}catch(r){if(!n.hasSameOrigin(d.url))return e.call(v,function(){v.trigger("error")}),void 0;u=404}e.call(v,function(){v.trigger("load")})},v.uid)}var f,p,g,x,v=this,y=v.getRuntime();if(u=c=null,m instanceof s&&m.hasBlob()){if(x=m.getBlob(),f=x.uid,g=i.get(f),p=i.get(f+"_form"),!p)throw new r.DOMException(r.DOMException.NOT_FOUND_ERR)}else f=t.guid("uid_"),p=document.createElement("form"),p.setAttribute("id",f+"_form"),p.setAttribute("method",d.method),p.setAttribute("enctype","multipart/form-data"),p.setAttribute("encoding","multipart/form-data"),y.getShimContainer().appendChild(p);p.setAttribute("target",f+"_iframe"),m instanceof s&&m.each(function(e,i){if(e instanceof a)g&&g.setAttribute("name",i);else{var n=document.createElement("input");t.extend(n,{type:"hidden",name:i,value:e}),g?p.insertBefore(n,g):p.appendChild(n)}}),p.setAttribute("action",d.url),h(),p.submit(),v.trigger("loadstart")},getStatus:function(){return u},getResponse:function(e){if("json"===e&&"string"===t.typeOf(c)&&window.JSON)try{return JSON.parse(c.replace(/^\s*]*>/,"").replace(/<\/pre>\s*$/,""))}catch(i){return null}return c},abort:function(){var t=this;l&&l.contentWindow&&(l.contentWindow.stop?l.contentWindow.stop():l.contentWindow.document.execCommand?l.contentWindow.document.execCommand("Stop"):l.src="about:blank"),e.call(this,function(){t.dispatchEvent("abort")})}})}return e.XMLHttpRequest=u}),n("moxie/runtime/html4/image/Image",["moxie/runtime/html4/Runtime","moxie/runtime/html5/image/Image"],function(e,t){return e.Image=t}),a(["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Dom","moxie/core/EventTarget","moxie/runtime/Runtime","moxie/runtime/RuntimeClient","moxie/file/Blob","moxie/core/I18n","moxie/core/utils/Mime","moxie/file/FileInput","moxie/file/File","moxie/file/FileDrop","moxie/file/FileReader","moxie/core/utils/Url","moxie/runtime/RuntimeTarget","moxie/xhr/FormData","moxie/xhr/XMLHttpRequest","moxie/runtime/Transporter","moxie/image/Image","moxie/core/utils/Events","moxie/runtime/html5/image/ResizerCanvas"])}(this)}); +/** + * Plupload - multi-runtime File Uploader + * v2.2.1 + * + * Copyright 2013, Moxiecode Systems AB + * Released under GPL License. + * + * License: http://www.plupload.com/license + * Contributing: http://www.plupload.com/contributing + * + * Date: 2016-11-23 + */ +!function(e,t){var i=function(){var e={};return t.apply(e,arguments),e.plupload};"function"==typeof define&&define.amd?define("plupload",["./moxie"],i):"object"==typeof module&&module.exports?module.exports=i(require("./moxie")):e.plupload=i(e.moxie)}(this||window,function(e){!function(e,t,i){function n(e){function t(e,t,i){var r={chunks:"slice_blob",jpgresize:"send_binary_string",pngresize:"send_binary_string",progress:"report_upload_progress",multi_selection:"select_multiple",dragdrop:"drag_and_drop",drop_element:"drag_and_drop",headers:"send_custom_headers",urlstream_upload:"send_binary_string",canSendBinary:"send_binary",triggerDialog:"summon_file_dialog"};r[e]?n[r[e]]=t:i||(n[e]=t)}var i=e.required_features,n={};return"string"==typeof i?l.each(i.split(/\s*,\s*/),function(e){t(e,!0)}):"object"==typeof i?l.each(i,function(e,i){t(i,e)}):i===!0&&(e.chunk_size>0&&(n.slice_blob=!0),l.isEmptyObj(e.resize)&&e.multipart||(n.send_binary_string=!0),l.each(e,function(e,i){t(i,!!e,!0)})),n}var r=window.setTimeout,s={},a=t.core.utils,o=t.runtime.Runtime,l={VERSION:"2.2.1",STOPPED:1,STARTED:2,QUEUED:1,UPLOADING:2,FAILED:4,DONE:5,GENERIC_ERROR:-100,HTTP_ERROR:-200,IO_ERROR:-300,SECURITY_ERROR:-400,INIT_ERROR:-500,FILE_SIZE_ERROR:-600,FILE_EXTENSION_ERROR:-601,FILE_DUPLICATE_ERROR:-602,IMAGE_FORMAT_ERROR:-700,MEMORY_ERROR:-701,IMAGE_DIMENSIONS_ERROR:-702,mimeTypes:a.Mime.mimes,ua:a.Env,typeOf:a.Basic.typeOf,extend:a.Basic.extend,guid:a.Basic.guid,getAll:function(e){var t,i=[];"array"!==l.typeOf(e)&&(e=[e]);for(var n=e.length;n--;)t=l.get(e[n]),t&&i.push(t);return i.length?i:null},get:a.Dom.get,each:a.Basic.each,getPos:a.Dom.getPos,getSize:a.Dom.getSize,xmlEncode:function(e){var t={"<":"lt",">":"gt","&":"amp",'"':"quot","'":"#39"},i=/[<>&\"\']/g;return e?(""+e).replace(i,function(e){return t[e]?"&"+t[e]+";":e}):e},toArray:a.Basic.toArray,inArray:a.Basic.inArray,inSeries:a.Basic.inSeries,addI18n:t.core.I18n.addI18n,translate:t.core.I18n.translate,sprintf:a.Basic.sprintf,isEmptyObj:a.Basic.isEmptyObj,hasClass:a.Dom.hasClass,addClass:a.Dom.addClass,removeClass:a.Dom.removeClass,getStyle:a.Dom.getStyle,addEvent:a.Events.addEvent,removeEvent:a.Events.removeEvent,removeAllEvents:a.Events.removeAllEvents,cleanName:function(e){var t,i;for(i=[/[\300-\306]/g,"A",/[\340-\346]/g,"a",/\307/g,"C",/\347/g,"c",/[\310-\313]/g,"E",/[\350-\353]/g,"e",/[\314-\317]/g,"I",/[\354-\357]/g,"i",/\321/g,"N",/\361/g,"n",/[\322-\330]/g,"O",/[\362-\370]/g,"o",/[\331-\334]/g,"U",/[\371-\374]/g,"u"],t=0;t0?"&":"?")+i),e},formatSize:function(e){function t(e,t){return Math.round(e*Math.pow(10,t))/Math.pow(10,t)}if(e===i||/\D/.test(e))return l.translate("N/A");var n=Math.pow(1024,4);return e>n?t(e/n,1)+" "+l.translate("tb"):e>(n/=1024)?t(e/n,1)+" "+l.translate("gb"):e>(n/=1024)?t(e/n,1)+" "+l.translate("mb"):e>1024?Math.round(e/1024)+" "+l.translate("kb"):e+" "+l.translate("b")},parseSize:a.Basic.parseSizeStr,predictRuntime:function(e,t){var i,n;return i=new l.Uploader(e),n=o.thatCan(i.getOption().required_features,t||e.runtimes),i.destroy(),n},addFileFilter:function(e,t){s[e]=t}};l.addFileFilter("mime_types",function(e,t,i){e.length&&!e.regexp.test(t.name)?(this.trigger("Error",{code:l.FILE_EXTENSION_ERROR,message:l.translate("File extension error."),file:t}),i(!1)):i(!0)}),l.addFileFilter("max_file_size",function(e,t,i){var n;e=l.parseSize(e),t.size!==n&&e&&t.size>e?(this.trigger("Error",{code:l.FILE_SIZE_ERROR,message:l.translate("File size error."),file:t}),i(!1)):i(!0)}),l.addFileFilter("prevent_duplicates",function(e,t,i){if(e)for(var n=this.files.length;n--;)if(t.name===this.files[n].name&&t.size===this.files[n].size)return this.trigger("Error",{code:l.FILE_DUPLICATE_ERROR,message:l.translate("Duplicate file error."),file:t}),i(!1),void 0;i(!0)}),l.Uploader=function(e){function a(){var e,t,i=0;if(this.state==l.STARTED){for(t=0;t0?Math.ceil(100*(e.loaded/e.size)):100,d()}function d(){var e,t;for(w.reset(),e=0;e0?Math.ceil(100*(w.uploaded/T.length)):0:(w.bytesPerSec=Math.ceil(w.loaded/((+new Date-S||1)/1e3)),w.percent=w.size>0?Math.ceil(100*(w.loaded/w.size)):0)}function c(){var e=A[0]||P[0];return e?e.getRuntime().uid:!1}function f(e,t){if(e.ruid){var i=o.getInfo(e.ruid);if(i)return i.can(t)}return!1}function p(){this.bind("FilesAdded FilesRemoved",function(e){e.trigger("QueueChanged"),e.refresh()}),this.bind("CancelUpload",y),this.bind("BeforeUpload",m),this.bind("UploadFile",E),this.bind("UploadProgress",v),this.bind("StateChanged",b),this.bind("QueueChanged",d),this.bind("Error",z),this.bind("FileUploaded",R),this.bind("Destroy",O)}function g(e,i){var n=this,r=0,s=[],a={runtime_order:e.runtimes,required_caps:e.required_features,preferred_caps:F,swf_url:e.flash_swf_url,xap_url:e.silverlight_xap_url};l.each(e.runtimes.split(/\s*,\s*/),function(t){e[t]&&(a[t]=e[t])}),e.browse_button&&l.each(e.browse_button,function(i){s.push(function(s){var u=new t.file.FileInput(l.extend({},a,{accept:e.filters.mime_types,name:e.file_data_name,multiple:e.multi_selection,container:e.container,browse_button:i}));u.onready=function(){var e=o.getInfo(this.ruid);l.extend(n.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),multi_selection:e.can("select_multiple")}),r++,A.push(this),s()},u.onchange=function(){n.addFile(this.files)},u.bind("mouseenter mouseleave mousedown mouseup",function(t){U||(e.browse_button_hover&&("mouseenter"===t.type?l.addClass(i,e.browse_button_hover):"mouseleave"===t.type&&l.removeClass(i,e.browse_button_hover)),e.browse_button_active&&("mousedown"===t.type?l.addClass(i,e.browse_button_active):"mouseup"===t.type&&l.removeClass(i,e.browse_button_active)))}),u.bind("mousedown",function(){n.trigger("Browse")}),u.bind("error runtimeerror",function(){u=null,s()}),u.init()})}),e.drop_element&&l.each(e.drop_element,function(e){s.push(function(i){var s=new t.file.FileDrop(l.extend({},a,{drop_zone:e}));s.onready=function(){var e=o.getInfo(this.ruid);l.extend(n.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),dragdrop:e.can("drag_and_drop")}),r++,P.push(this),i()},s.ondrop=function(){n.addFile(this.files)},s.bind("error runtimeerror",function(){s=null,i()}),s.init()})}),l.inSeries(s,function(){"function"==typeof i&&i(r)})}function h(e,n,r){var s=new t.image.Image;try{s.onload=function(){return n.width>this.width&&n.height>this.height&&n.quality===i&&n.preserve_headers&&!n.crop?(this.destroy(),r(e)):(s.downsize(n.width,n.height,n.crop,n.preserve_headers),void 0)},s.onresize=function(){r(this.getAsBlob(e.type,n.quality)),this.destroy()},s.onerror=function(){r(e)},s.load(e)}catch(a){r(e)}}function _(e,i,r){function s(e,i,n){var r=I[e];switch(e){case"max_file_size":"max_file_size"===e&&(I.max_file_size=I.filters.max_file_size=i);break;case"chunk_size":(i=l.parseSize(i))&&(I[e]=i,I.send_file_name=!0);break;case"multipart":I[e]=i,i||(I.send_file_name=!0);break;case"unique_names":I[e]=i,i&&(I.send_file_name=!0);break;case"filters":"array"===l.typeOf(i)&&(i={mime_types:i}),n?l.extend(I.filters,i):I.filters=i,i.mime_types&&("string"===l.typeOf(i.mime_types)&&(i.mime_types=t.core.utils.Mime.mimes2extList(i.mime_types)),i.mime_types.regexp=function(e){var t=[];return l.each(e,function(e){l.each(e.extensions.split(/,/),function(e){/^\s*\*\s*$/.test(e)?t.push("\\.*"):t.push("\\."+e.replace(new RegExp("["+"/^$.*+?|()[]{}\\".replace(/./g,"\\$&")+"]","g"),"\\$&"))})}),new RegExp("("+t.join("|")+")$","i")}(i.mime_types),I.filters.mime_types=i.mime_types);break;case"resize":I.resize=i?l.extend({preserve_headers:!0,crop:!1},i):!1;break;case"prevent_duplicates":I.prevent_duplicates=I.filters.prevent_duplicates=!!i;break;case"container":case"browse_button":case"drop_element":i="container"===e?l.get(i):l.getAll(i);case"runtimes":case"multi_selection":case"flash_swf_url":case"silverlight_xap_url":I[e]=i,n||(u=!0);break;default:I[e]=i}n||a.trigger("OptionChanged",e,i,r)}var a=this,u=!1;"object"==typeof e?l.each(e,function(e,t){s(t,e,r)}):s(e,i,r),r?(I.required_features=n(l.extend({},I)),F=n(l.extend({},I,{required_features:!0}))):u&&(a.trigger("Destroy"),g.call(a,I,function(e){e?(a.runtime=o.getInfo(c()).type,a.trigger("Init",{runtime:a.runtime}),a.trigger("PostInit")):a.trigger("Error",{code:l.INIT_ERROR,message:l.translate("Init error.")})}))}function m(e,t){if(e.settings.unique_names){var i=t.name.match(/\.([^.]+)$/),n="part";i&&(n=i[1]),t.target_name=t.id+"."+n}}function E(e,i){function n(){d-->0?r(s,1e3):(i.loaded=p,e.trigger("Error",{code:l.HTTP_ERROR,message:l.translate("HTTP Error."),file:i,response:D.responseText,status:D.status,responseHeaders:D.getAllResponseHeaders()}))}function s(){var f,g,h,_={};i.status===l.UPLOADING&&e.state!==l.STOPPED&&(e.settings.send_file_name&&(_.name=i.target_name||i.name),u&&c.chunks&&a.size>u?(h=Math.min(u,a.size-p),f=a.slice(p,p+h)):(h=a.size,f=a),u&&c.chunks&&(e.settings.send_chunk_number?(_.chunk=Math.ceil(p/u),_.chunks=Math.ceil(a.size/u)):(_.offset=p,_.total=a.size)),D=new t.xhr.XMLHttpRequest,D.upload&&(D.upload.onprogress=function(t){i.loaded=Math.min(i.size,p+t.loaded),e.trigger("UploadProgress",i)}),D.onload=function(){return D.status>=400?(n(),void 0):(d=e.settings.max_retries,h=a.size?(i.size!=i.origSize&&(a.destroy(),a=null),e.trigger("UploadProgress",i),i.status=l.DONE,e.trigger("FileUploaded",i,{response:D.responseText,status:D.status,responseHeaders:D.getAllResponseHeaders()})):r(s,1),void 0)},D.onerror=function(){n()},D.onloadend=function(){this.destroy(),D=null},e.settings.multipart&&c.multipart?(D.open("post",o,!0),l.each(e.settings.headers,function(e,t){D.setRequestHeader(t,e)}),g=new t.xhr.FormData,l.each(l.extend(_,e.settings.multipart_params),function(e,t){g.append(t,e)}),g.append(e.settings.file_data_name,f),D.send(g,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:F,swf_url:e.settings.flash_swf_url,xap_url:e.settings.silverlight_xap_url})):(o=l.buildUrl(e.settings.url,l.extend(_,e.settings.multipart_params)),D.open("post",o,!0),l.each(e.settings.headers,function(e,t){D.setRequestHeader(t,e)}),D.hasRequestHeader("Content-Type")||D.setRequestHeader("Content-Type","application/octet-stream"),D.send(f,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:F,swf_url:e.settings.flash_swf_url,xap_url:e.settings.silverlight_xap_url})))}var a,o=e.settings.url,u=e.settings.chunk_size,d=e.settings.max_retries,c=e.features,p=0;i.loaded&&(p=i.loaded=u?u*Math.floor(i.loaded/u):0),a=i.getSource(),!l.isEmptyObj(e.settings.resize)&&f(a,"send_binary_string")&&-1!==l.inArray(a.type,["image/jpeg","image/png"])?h.call(this,a,e.settings.resize,function(e){a=e,i.size=e.size,s()}):s()}function v(e,t){u(t)}function b(e){if(e.state==l.STARTED)S=+new Date;else if(e.state==l.STOPPED)for(var t=e.files.length-1;t>=0;t--)e.files[t].status==l.UPLOADING&&(e.files[t].status=l.QUEUED,d())}function y(){D&&D.abort()}function R(e){d(),r(function(){a.call(e)},1)}function z(e,t){t.code===l.INIT_ERROR?e.destroy():t.code===l.HTTP_ERROR&&(t.file.status=l.FAILED,u(t.file),e.state==l.STARTED&&(e.trigger("CancelUpload"),r(function(){a.call(e)},1)))}function O(e){e.stop(),l.each(T,function(e){e.destroy()}),T=[],A.length&&(l.each(A,function(e){e.destroy()}),A=[]),P.length&&(l.each(P,function(e){e.destroy()}),P=[]),F={},U=!1,S=D=null,w.reset()}var I,S,w,D,x=l.guid(),T=[],F={},A=[],P=[],U=!1;I={runtimes:o.order,max_retries:0,chunk_size:0,multipart:!0,multi_selection:!0,file_data_name:"file",flash_swf_url:"js/Moxie.swf",silverlight_xap_url:"js/Moxie.xap",filters:{mime_types:[],prevent_duplicates:!1,max_file_size:0},resize:!1,send_file_name:!0,send_chunk_number:!0},_.call(this,e,null,!0),w=new l.QueueProgress,l.extend(this,{id:x,uid:x,state:l.STOPPED,features:{},runtime:null,files:T,settings:I,total:w,init:function(){var e,t,i=this;return e=i.getOption("preinit"),"function"==typeof e?e(i):l.each(e,function(e,t){i.bind(t,e)}),p.call(i),l.each(["container","browse_button","drop_element"],function(e){return null===i.getOption(e)?(t={code:l.INIT_ERROR,message:l.sprintf(l.translate("%s specified, but cannot be found."),e)},!1):void 0}),t?i.trigger("Error",t):I.browse_button||I.drop_element?(g.call(i,I,function(e){var t=i.getOption("init");"function"==typeof t?t(i):l.each(t,function(e,t){i.bind(t,e)}),e?(i.runtime=o.getInfo(c()).type,i.trigger("Init",{runtime:i.runtime}),i.trigger("PostInit")):i.trigger("Error",{code:l.INIT_ERROR,message:l.translate("Init error.")})}),void 0):i.trigger("Error",{code:l.INIT_ERROR,message:l.translate("You must specify either browse_button or drop_element.")})},setOption:function(e,t){_.call(this,e,t,!this.runtime)},getOption:function(e){return e?I[e]:I},refresh:function(){A.length&&l.each(A,function(e){e.trigger("Refresh")}),this.trigger("Refresh")},start:function(){this.state!=l.STARTED&&(this.state=l.STARTED,this.trigger("StateChanged"),a.call(this))},stop:function(){this.state!=l.STOPPED&&(this.state=l.STOPPED,this.trigger("StateChanged"),this.trigger("CancelUpload"))},disableBrowse:function(){U=arguments[0]!==i?arguments[0]:!0,A.length&&l.each(A,function(e){e.disable(U)}),this.trigger("DisableBrowse",U)},getFile:function(e){var t;for(t=T.length-1;t>=0;t--)if(T[t].id===e)return T[t]},addFile:function(e,i){function n(e,t){var i=[];l.each(u.settings.filters,function(t,n){s[n]&&i.push(function(i){s[n].call(u,t,e,function(e){i(!e)})})}),l.inSeries(i,t)}function a(e){var s=l.typeOf(e);if(e instanceof t.file.File){if(!e.ruid&&!e.isDetached()){if(!o)return!1;e.ruid=o,e.connectRuntime(o)}a(new l.File(e))}else e instanceof t.file.Blob?(a(e.getSource()),e.destroy()):e instanceof l.File?(i&&(e.name=i),d.push(function(t){n(e,function(i){i||(T.push(e),f.push(e),u.trigger("FileFiltered",e)),r(t,1)})})):-1!==l.inArray(s,["file","blob"])?a(new t.file.File(null,e)):"node"===s&&"filelist"===l.typeOf(e.files)?l.each(e.files,a):"array"===s&&(i=null,l.each(e,a))}var o,u=this,d=[],f=[];o=c(),a(e),d.length&&l.inSeries(d,function(){f.length&&u.trigger("FilesAdded",f)})},removeFile:function(e){for(var t="string"==typeof e?e:e.id,i=T.length-1;i>=0;i--)if(T[i].id===t)return this.splice(i,1)[0]},splice:function(e,t){var n=T.splice(e===i?0:e,t===i?T.length:t),r=!1;return this.state==l.STARTED&&(l.each(n,function(e){return e.status===l.UPLOADING?(r=!0,!1):void 0}),r&&this.stop()),this.trigger("FilesRemoved",n),l.each(n,function(e){e.destroy()}),r&&this.start(),n},dispatchEvent:function(e){var t,i;if(e=e.toLowerCase(),t=this.hasEventListener(e)){t.sort(function(e,t){return t.priority-e.priority}),i=[].slice.call(arguments),i.shift(),i.unshift(this);for(var n=0;n.file-list', '#myFileList', '

            ' + // fileTemplate: '', + // fileFormater: null, + // fileIconCreator: null, + // staticFiles: null, + rename: true, + // renameExtension: false, + renameByClick: true, + // autoUpload: false, + // browseByClickList: false, + dropPlaceholder: true, + // messageCreator: null, // NOT SUPPORT + previewImageIcon: true, + sendFileName: true, + sendFileId: true, + responseHandler: true, + // limitFilesCount: false, + // deleteConfirm: false, + // removeUploaded: false, + // statusCreator: null, // Function + // previewImageSize: {width: 200, height: 200}, + uploadedMessage: true, + // deleteActionOnDone: false, // false, true or function + // renameActionOnDone: false, // false, true or function + + // plupload options + drop_element: 'self', // 'self', 'fileList', String or jQuery object, + browse_button: 'hidden', // String or jQuery object + // url: '', // String + filters: {prevent_duplicates: true}, // {mime_types, max_file_size, prevent_duplicates} + // headers: null, // Object + // multipart: true, // true, false + // multipart_params: null, // Object + chunk_size: '1mb', // Number, String + max_retries: 3, + // resize: {}, // {width, height, crop, quality, preserve_headers}, + // multi_selection: true, // true, false, + // required_features: null, // String + // unique_names: false, // true, false + // runtimes: 'html5,flash,silverlight,html4', // String + // file_data_name: 'file', // String + flash_swf_url: 'lib/uploader/Moxie.swf', // String + silverlight_xap_url: 'lib/uploader/Moxie.xap' // String + }; + + var STATUS = { + QUEUED : Plupload.QUEUED, + UPLOADING : Plupload.UPLOADING, + FAILED : Plupload.FAILED, + DONE : Plupload.DONE, + STOPPED : Plupload.STOPPED, + STARTED : Plupload.STARTED + }; + STATUS[Plupload.QUEUED] = 'queue'; + STATUS[Plupload.UPLOADING] = 'uploading'; + STATUS[Plupload.FAILED] = 'failed'; + STATUS[Plupload.DONE] = 'done'; + + var ERRORS = { + GENERIC_ERROR : Plupload.GENERIC_ERROR, + HTTP_ERROR : Plupload.HTTP_ERROR, + IO_ERROR : Plupload.IO_ERROR, + SECURITY_ERROR : Plupload.SECURITY_ERROR, + INIT_ERROR : Plupload.INIT_ERROR, + FILE_SIZE_ERROR : Plupload.FILE_SIZE_ERROR, + FILE_EXTENSION_ERROR : Plupload.FILE_EXTENSION_ERROR, + FILE_DUPLICATE_ERROR : Plupload.FILE_DUPLICATE_ERROR, + IMAGE_FORMAT_ERROR : Plupload.IMAGE_FORMAT_ERROR, + IMAGE_MEMORY_ERROR : Plupload.IMAGE_MEMORY_ERROR, + IMAGE_DIMENSIONS_ERROR: Plupload.IMAGE_DIMENSIONS_ERROR + }; + + // The uploader modal class + var Uploader = function(element, options) { + var that = this; + that.name = NAME; + that.$ = $(element).addClass('uploader'); + options = that.getOptions(options); + + // Init lang + var lang = $.isPlainObject(options.lang) ? ($.extend(true, {}, Uploader.LANG[lang.lang || $.zui.clientLang()], options.lang)) : Uploader.LANG[options.lang]; + that.lang = lang; + + // Init file list element + var $this = that.$; + var fileList = options.fileList; + var $list; + if(!fileList || fileList == 'large' || fileList == 'grid') { + $list = $this.find('.file-list,.uploader-files'); + } else if(fileList.indexOf('>') === 0) $list = $this.find(fileList.substr(1)); + else $list = $(fileList); + if(!$list || !$list.length) $list = $('
            '); + if(!$list.parent().length) $this.append($list); + if(fileList == 'large') $list.addClass('file-list-lg'); + else if(fileList == 'grid') $list.addClass('file-list-grid'); + $list.children('.file').addClass('file-static'); + that.$list = $list; + + if(options.browseByClickList || $list.hasClass('uploader-btn-browse')) { + $list.addClass('uploader-btn-browse').on('click', '.file-wrapper > .actions,.file-renaming .file-name', function(e) { + e.stopPropagation(); + }); + } + + // Init file template + var template = options.fileTemplate; + if(!template) { + var $template = $list.find('.template'); + if($template.length) { + template = $template.first().clone().removeClass('template'); + $template.remove(); + } + if(!template) template = FILE_TEMPLATE; + } + if(typeof template === 'string') { + template = $(template); + if(template.parent()) template = template.clone().removeClass('template'); + } + that.template = template; + + // Init browse button element + var browseBtn = options.browse_button; + var $btn = null; + if(browseBtn) { + if(browseBtn.indexOf('>') === 0) $btn = $this.find(browseBtn.substr(1)); + else if(browseBtn !== 'hidden') $btn = $(browseBtn); + } + if(!$btn || !$btn.length) { + $btn = $('
            ').appendTo($this); + } + that.$button = $btn.first(); + + // Init drop element + var dropElement = options.drop_element; + var $dropElement = (dropElement == 'fileList' ? that.$list : (dropElement == 'self' ? that.$ : $(dropElement))).first().addClass('file-drag-area'); + if (!notSupportDnd) { + var dropPlaceholder = options.dropPlaceholder; + if(dropPlaceholder === true) dropPlaceholder = lang.dropPlaceholder; + if(dropPlaceholder) $dropElement.attr('data-drop-placeholder', dropPlaceholder); + } else { + $dropElement.attr('data-drop-placeholder', ''); + } + that.$dropElement = $dropElement; + + // Init message + that.$message = $this.find('.uploader-message').on('click', '.close', function() { + that.hideMessage(); + }); + that.$status = $this.find('.uploader-status'); + + // Init actions + $this.toggleClass('uploader-rename', !!options.rename); + + // Init plupload + that.initPlupload(); + + // Bind events + $this.on('click.' + NAME, '.uploader-btn-start', function(e) { + that.start(); + }).on('click.' + NAME, '.uploader-btn-browse', function(e) { + if($(this).is(that.$button)) return; + that.$button.trigger('click'); + }).on('click.' + NAME, '.uploader-btn-stop', function(e) { + that.stop(); + }); + + $('body').on('dragleave.' + NAME + ' drop.' + NAME, function(e) { + $this.removeClass('file-dragable'); + + // Below two lines for firefox, open a new tab after drop file + e.preventDefault(); + e.stopPropagation(); + }).on('dragover.' + NAME + ' dragenter.' + NAME, function(e) { + $this.addClass('file-dragable'); + }); + $dropElement.on('dragleave.' + NAME + ' drop.' + NAME, function(e) { + $this.removeClass('file-drag-enter'); + }).on('dragover.' + NAME + ' dragenter.' + NAME, function(e) { + $this.addClass('file-drag-enter'); + }); + + $list.on('click.' + NAME, '.btn-delete-file', function() { + var $file = $(this).closest('.file'); + var file = $file.data('file'); + var deleteActionOnDoneOption = options.deleteActionOnDone; + var doneActionAble = file.status === Plupload.DONE && $.isFunction(deleteActionOnDoneOption); + if(file.status === Plupload.QUEUED || file.status === Plupload.FAILED || doneActionAble) { + var doRemoveFile = function() { + that.removeFile(file); + }; + var removeFile = function() { + if(doneActionAble) { + var result = deleteActionOnDoneOption.call(that, file, doRemoveFile); + if(result === true) { + doRemoveFile(); + } + } else { + doRemoveFile(); + } + }; + var deleteConfirmOption = options.deleteConfirm; + if(deleteConfirmOption) { + var confirmMessage = $.isFunction(deleteConfirmOption) ? deleteConfirmOption(file) : (deleteConfirmOption === true ? lang.deleteConfirm : deleteConfirmOption); + confirmMessage = confirmMessage.format(file); + if(window.bootbox) { + window.bootbox.confirm(confirmMessage, function(result) { + if(result) removeFile(); + }); + } else { + if(window.confirm(confirmMessage)) removeFile(); + } + } else { + removeFile(); + } + } + }).on('click.' + NAME, '.btn-reset-file', function() { + var $file = $(this).closest('.file'); + var file = that.plupload.getFile($file.data('id')) || $file.data('file'); + if(file.status === Plupload.FAILED) { + file.status = Plupload.QUEUED; + that.showFile(file); + if(options.autoUpload) that.start(); + } + }); + if(options.rename) { + $list.toggleClass('file-rename-by-click', !!options.renameByClick) + .toggleClass('file-show-rename-action-on-done', !!options.renameActionOnDone); + $list.on('click.' + NAME, '.btn-rename-file' + (options.renameByClick ? ',.file-name' : ''), function() { + var $file = $(this).closest('.file'); + if($file.hasClass('file-renaming')) return; + var file = that.plupload.getFile($file.data('id')) || $file.data('file'); + var renameActionOnDoneOption = options.renameActionOnDone; + var renameActionAble = file.status === Plupload.DONE && $.isFunction(renameActionOnDoneOption); + if(renameActionAble || file.status === Plupload.QUEUED) { + var $filename = $file.find('.file-name').first(); + $file.addClass('file-renaming'); + that.showFile(file); + if(!options.renameExtension && file.ext) { + $filename.text(file.name.substr(0, file.name.length - file.ext.length - 1)); + } + $filename.attr('contenteditable', 'true').one('blur', function() { + var filename = $.trim($filename.text()); + var renameFile = function() { + if(filename !== undefined && filename !== null && filename !== '') { + var ext = file.ext; + if(ext.length && !options.renameExtension && filename.lastIndexOf('.' + ext) !== (filename.length - ext.length - 1)) { + filename += '.' + ext; + } + file.name = filename; + } + that.showFile(file); + }; + if(renameActionAble) { + var result = renameActionOnDoneOption.call(that, file, filename, renameFile); + if(result === true) { + renameFile(); + } else if(result === false) { + that.showFile(file); + } + } else { + renameFile(); + } + $file.removeClass('file-renaming'); + $filename.off('keydown.' + NAME).attr('contenteditable', null); + }).on('keydown.' + NAME, function(e) { + if(e.keyCode === 13) { + $filename.blur(); + e.preventDefault(); + } + }).focus(); + } + }); + } + + $list.toggleClass('file-show-delete-action-on-done', !!options.deleteActionOnDone); + + // Init static files + that.staticFilesSize = 0; + that.staticFilesCount = 0; + if(options.staticFiles) { + $.each(options.staticFiles, function(idx, file) { + file = $.extend({status: Plupload.DONE}, file); + file.static = true; + if(!file.id) file.id = $.zui.uuid(); + that.showFile(file); + if (file.size) { + that.staticFilesSize += file.size; + that.staticFilesCount++; + } + }); + } + + that.callEvent('onInit'); + }; + + // default options + Uploader.DEFAULTS = DEFAULTS; + + Uploader.prototype.showMessage = function(message, type, time) { + var that = this; + var $msg = that.$message; + if(!message) that.hideMessage(); + else clearTimeout(that.lastDismissMessage); + type = type || 'danger'; + if(time === undefined) time = type === 'danger' ? 8 : 5; + if(time < 20) time *= 1000; + var $content = $msg.find('.content'); + if($content.length) $content.empty().append(message); + else $msg.empty().append(message); + $msg.attr('data-type', type).slideDown('fast'); + if(time) { + that.lastDismissMessage = setTimeout(function() { + that.hideMessage(); + }, time); + } + }; + + Uploader.prototype.hideMessage = function() { + clearTimeout(this.lastDismissMessage); + this.$message.slideUp('fast'); + }; + + Uploader.prototype.start = function() { + return this.plupload.start(); + }; + + Uploader.prototype.stop = function() { + return this.plupload.stop(); + }; + + Uploader.prototype.getState = function() { + return this.plupload.state; + }; + + Uploader.prototype.isStarted = function() { + return this.getState() === Plupload.STARTED; + }; + + Uploader.prototype.isStopped = function() { + return this.getState() === Plupload.STOPPED; + }; + + Uploader.prototype.getFiles = function() { + return this.plupload.files; + }; + + Uploader.prototype.getTotal = function() { + return this.plupload.total; + }; + + Uploader.prototype.disableBrowse = function(disable) { + this.$.find('.uploader-btn-browse').attr('disable', disable ? 'disable' : null).toggle('disable', !!disable); + return this.plupload.disableBrowse(); + }; + + Uploader.prototype.getFile = function(id) { + return this.plupload.getFile(id); + }; + + Uploader.prototype.destroy = function() { + var that = this; + var eventNamespace = '.' + NAME; + that.$.off(eventNamespace).data(NAME, null); + that.$list.off(eventNamespace); + that.$dropElement.off(eventNamespace); + $('body').off(eventNamespace); + that.plupload.destroy(); + }; + + // see https://github.com/moxiecode/moxie/wiki/API + Uploader.prototype.previewImageSrc = function(file, callback) { + if(!file || !file.getSource || !/image\//.test(file.type)) return; + var size = $.extend({width: 200, height: 200}, this.options.previewImageSize); + if(file.type == 'image/gif') { + //mOxie.Image only support jpg and png + var fr = new Moxie.file.FileReader(); + fr.onload = function() { + callback(fr.result); + fr.destroy(); + fr = null; + }; + fr.readAsDataURL(file.getSource()); + } else { + var preloader = new Moxie.image.Image(); + preloader.onload = function() { + // compressImage + preloader.downsize(size.width, size.height); + var imgsrc = preloader.type == 'image/jpeg' ? preloader.getAsDataURL('image/jpeg', 80) : preloader.getAsDataURL(); // return base64 data + callback(imgsrc); + preloader.destroy(); + preloader = null; + }; + preloader.load(file.getSource()); + } + }; + + Uploader.prototype.createFileIcon = function(file) { + var fileType = file.type; + var ext = file.ext; + var icon = 'file-o'; + var types = fileType ? fileType.split('/') : null; + var type = (types && types.length) ? types[0] : '', subType = (types && types.length) > 1 ? types[1] : ''; + if(type == 'image') icon = 'file-image'; + else if(ext == 'doc' || ext == 'docx' || ext == 'pages') icon = 'file-word'; + else if(ext == 'ppt' || ext == 'pptx' || ext == 'key') icon = 'file-powerpoint'; + else if(ext == 'xls' || ext == 'xlsx' || ext == 'numbers') icon = 'file-excel'; + else if(ext == 'html' || ext == 'htm') icon = 'globe'; + else if(ext == 'js' || ext == 'php' || ext == 'cs' || ext == 'jsx' || ext == 'css' || ext == 'less' || ext == 'json' || ext == 'java' || ext == 'lua' || ext == 'py' || ext == 'c' || ext == 'cpp' || ext == 'swift' || ext == 'h' || ext == 'sh' || ext == 'rb' || ext == 'yml' || ext == 'ini' || ext == 'sql' || ext == 'xml') icon = 'file-code'; + else if(ext == 'apk') icon = 'android'; + else if(ext == 'exe') icon = 'windows'; + else if(ext == 'pkg' || ext == 'msi' || ext == 'dmg') icon = 'cube'; + else if(ext == 'epub') icon = 'book'; + else if(ext == 'sketch') icon = 'diamond'; + else if(subType == 'zip' || subType == 'x-rar' || subType == 'x-7z-compressed') icon = 'file-archive'; + else if(subType == 'pdf') icon = 'file-pdf'; + else if(type == 'video') icon = 'file-movie'; + else if(type == 'audio') icon = 'file-audio'; + else if(type == 'text') icon = 'file-text-o'; + return ''; + }; + + Uploader.prototype.getFileItem = function(file) { + var that = this; + if(typeof file == 'string') { + file = that.plupload.getFile(file); + } + + if(!file) return null; + + var filename = file.name; + if(filename && file.ext === undefined) { + var ext = filename.lastIndexOf('.'); + if(ext > -1) ext = filename.substr(ext + 1); + else ext = ''; + file.ext = ext; + + if(file.type && /image\//.test(file.type)) { + file.isImage = file.ext; + } + } + + var $file = $('#file-' + file.id); + if(!$file.length) { + if($.isFunction(that.template)) { + $file = $(that.template(file, that)); + } else { + $file = $(that.template).clone(); + $file.find('.btn-rename-file').attr('title', that.lang.rename); + $file.find('.btn-delete-file').attr('title', that.lang.remove); + $file.find('.btn-reset-file').attr('title', that.lang.repeat); + $file.find('.btn-download-file').attr('title', that.lang.download).attr('download', file.name); + } + $file.data('id', file.id) + .toggleClass('file-static', !!file.static) + .attr('id', 'file-' + file.id) + .appendTo(that.$list); + if($.fn.tooltip) $file.find('[data-toggle="tooltip"]').tooltip(); + } + return $file; + }; + + Uploader.prototype.showFile = function(file, responseObject) { + var that = this; + if($.isArray(file)) { + $.each(file, function(idx, f) { + that.showFile(f, responseObject); + }); + return; + } + + if(typeof file == 'string') { + file = that.plupload.getFile(file); + } + + if(!file) return; + + var $file = that.getFileItem(file); + if(!$file || !$file.length) { + return; + } + + var options = that.options; + var status = STATUS[file.status]; + if(options.fileFormater) { + options.fileFormater.call(that, $file, file, status); + } else { + var downloadUrl = (status == 'done' && file.url) ? file.url : null; + $file.find('.file-name').text(file.name); + $file.find('.file-size').text((status == 'uploading' ? (Plupload.formatSize(Math.floor(file.size*file.percent/100)).toUpperCase() + '/') : '') + Plupload.formatSize(file.size).toUpperCase()); + $file.find('.file-icon').html(options.fileIconCreator ? options.fileIconCreator(file.type, file, that) : that.createFileIcon(file)).css('color', 'hsl(' + $.zui.strCode(file.type || file.ext) + ', 70%, 40%)'); + $file.find('.file-progress-bar').css('width', file.percent + '%'); + var $status = $file.find('.file-status').attr('title', that.lang[status]); + $status.find('.text').text(status == 'uploading' ? (file.percent + '%') : ((status == 'failed') ? that.lang[status] : '')); + if($.fn.tooltip) $file.find('[data-toggle="tooltip"]').tooltip('fixTitle'); + $file.find('a.btn-download-file, a.file-name').attr('href', downloadUrl); + } + + if(options.previewImageIcon && file.isImage) { + var setPreviewImage = function() { + $file.find('.file-icon').html('
            '); + }; + if(file.previewImage) { + setPreviewImage(); + } else { + that.previewImageSrc(file, function(src) { + file.previewImage = src; + setPreviewImage(); + }); + } + } + + $file.attr('data-status', status) + .data('file', file); + + // console.log('FILE', file); + }; + + Uploader.prototype.showStatus = function() { + var that = this; + var plupload = that.plupload; + var $status = that.$status; + var state = plupload.state, + total = plupload.total, + statusText = '', + totalCount = plupload.files.length; + if(that.options.statusCreator) { + statusText = that.options.statusCreator(total, state, that); + } else { + var stateObj = { + uploading: Math.max(0, Math.min(totalCount, total.uploaded + 1)), + total: that.staticFilesCount + totalCount, + size: Plupload.formatSize(total.size + that.staticFilesSize).toUpperCase(), + queue: total.queued, + failed: total.failed, + uploaded: total.uploaded, + uploadedSize: Plupload.formatSize(total.loaded).toUpperCase(), + percent: total.percent, + speed: Plupload.formatSize(total.bytesPerSec).toUpperCase() + '/S' + }; + if(state == Plupload.STARTED) { + statusText = that.lang.startedStatusText.format(stateObj); + } else { + if(totalCount < 1) { + statusText = that.lang.initStatusText; + } else { + statusText = that.lang.stoppedStatusText.format(stateObj); + } + } + } + $status.html(statusText); + if(total.uploaded < 1) $status.find('.uploader-status-uploaded').remove(); + if(total.failed < 1) $status.find('.uploader-status-failed').remove(); + if(total.queued < 1) $status.find('.uploader-status-queue').remove(); + if($.fn.tooltip) $status.find('[data-toggle="tooltip"]').tooltip(); + }; + + Uploader.prototype.delayShowStatus = function(delay) { + var that = this; + if(that.delayStatusTask) return; + that.delayStatusTask = true; + if(delay === undefined) delay = 500; + that.delayStatusTask = setTimeout(function() { + that.showStatus(); + that.delayStatusTask = false; + }, delay); + }; + + Uploader.prototype.removeFile = function(file, onlyRemoveElement) { + var that = this; + if(typeof file == 'string') { + file = that.plupload.getFile(file); + } + if(onlyRemoveElement || file.static) { + var $file = $('#file-' + file.id); + if($.fn.tooltip) { + $file.find('[data-toggle="tooltip"]').tooltip('destroy'); + $('.tooltip').remove(); + } + $file.fadeOut(function() { + $(this).remove(); + }); + } else { + that.plupload.removeFile(file); + } + }; + + Uploader.prototype.initPlupload = function() { + var that = this; + var options = that.options; + var plOptions = $.extend({}, options, { + browse_button: that.$button[0], + container: that.$[0], + drop_element: that.$dropElement[0], + multipart_params: null + }); + var eventHandlers = { + FilesAdded: function(uploader, files) { + var limitFilesCount = options.limitFilesCount; + if(limitFilesCount) { + if(limitFilesCount === true) limitFilesCount = 1; + var existCount = that.$list.children('.file').length; + if((existCount + files.length) > limitFilesCount) { + that.showMessage(that.lang.limitFilesCountMessage.format({count: limitFilesCount}), 'warning'); + var newFiles = []; + for(var i = 0; i < files.length; ++i) { + if((existCount + i + 1) <= limitFilesCount) { + newFiles.push(files[i]); + } else { + uploader.removeFile(files[i]); + } + } + if(!newFiles.length) return; + files = newFiles; + } + } + that.showFile(files); + if(options.autoUpload) that.start(); + that.showStatus(); + that.callEvent('onFilesAdded', [files]); + }, + UploadProgress: function(uploader, file) { + that.showFile(file); + that.delayShowStatus(); + that.callEvent('onUploadProgress', file); + }, + FileUploaded: function(uploader, file, responseObject) { + if(responseObject) { + var responseData = typeof responseObject === 'object' ? responseObject.response : responseObject; + try {file.remoteData = $.parseJSON(responseData);} + catch(e) {} + } + if(that.qiniuEnable && file.remoteData) { + file.url = uploader.settings.domain + file.remoteData.key; + } + var responseHandlerOption = options.responseHandler; + if(responseHandlerOption) { + var error = null; + if($.isFunction(responseHandlerOption)) { + error = responseHandlerOption.call(that, responseObject, file); + } else if(responseObject.response) { + var json = file.remoteData; + if($.isPlainObject(json)) { + var result = json.status || json.result; + if(result !== undefined && result !== 'ok' && result !== 'success' && result !== 200) { + error = {message: json.message, data: json}; + } + if(json.id !== undefined) file.remoteId = json.id; + if(json.url !== undefined) file.url = json.url; + if(json.name !== undefined) file.name = json.name; + } + } + if(error) { + error = $.isPlainObject(error) ? error : {message: error}; + file.status = Plupload.FAILED; + if(error.code === undefined) error.code = Plupload.GENERIC_ERROR; + error.file = file; + error.responseObject = responseObject; + uploader.trigger('Error', error); + file.errorMessage = error.message; + return; + } + } + + if(file.status === Plupload.DONE) { + that.lastUploadedCount++; + } + that.showFile(file, responseObject); + that.showStatus(); + that.callEvent('onFileUploaded', [file, responseObject]); + + if(file.status === Plupload.DONE) { + var optionRemoveUploaded = options.removeUploaded; + if(optionRemoveUploaded) { + setTimeout(function() { + $('#file-' + file.id).fadeOut(function() { + $(this).remove(); + }); + }, (typeof optionRemoveUploaded) === 'number' ? optionRemoveUploaded : 2000); + } + } + }, + UploadComplete: function(uploader, files) { + that.showFile(files); + that.showStatus(); + var uploadedMessage = options.uploadedMessage; + if(uploadedMessage) { + var uploadedCount = that.lastUploadedCount; + var failedCount = 0; + var failMessages = []; + $.each(files, function(idx, file) { + if(file.status === Plupload.FAILED) { + failedCount++; + if (file.errorMessage) { + failMessages.push(file.errorMessage); + delete file.errorMessage; + } + } + }); + var msg = failMessages && failMessages.length ? ('

            ' + failMessages.join(',') + '

            ') : '', + msgData = { + uploaded: uploadedCount, + failed: failedCount + }; + if(typeof uploadedMessage === 'string') { + msg += uploadedMessage.format(msgData); + } else if($.isFunction(uploadedMessage)) { + msg += uploadedMessage(msgData); + } else { + msg += that.lang[failedCount > 0 ? 'uploadHasFailedMessage' : (uploadedCount > 0 ? 'uploadSuccessMessage' : 'uploadEmptyMessage')].format(msgData); + } + that.showMessage(msg, failedCount > 0 ? 'danger' : (uploadedCount > 0 ? 'success' : 'warning'), 3); + } + that.callEvent('onUploadComplete', [files]); + }, + FilesRemoved: function(uploader, files) { + $.each(files, function(idx, file) { + that.removeFile(file, true); + }); + that.showStatus(); + that.callEvent('onFilesRemoved', files); + }, + ChunkUploaded: function(uploader, file, responseObject) { + that.callEvent('onChunkUploaded', [file, responseObject]); + }, + UploadFile: function(uploader, file) { + that.showStatus(); + that.callEvent('onUploadFile', file); + }, + BeforeUpload: function(uploader, file) { + var oldParams = uploader.getOption('multipart_params'); + var multipartParamsOption = options.multipart_params; + var params = {}; + if (oldParams && oldParams.key) { + params.key = oldParams.key; + } + if (oldParams && oldParams.token) { + params.token = oldParams.token; + } + if(options.sendFileName) params[options.sendFileName === true ? 'name' : options.sendFileName] = file.name; + if(options.sendFileId) params[options.sendFileId === true ? 'uuid' : options.sendFileId] = file.id; + params = $.extend(params, $.isFunction(multipartParamsOption) ? multipartParamsOption(file, params) : multipartParamsOption); + uploader.setOption('multipart_params', params); + that.callEvent('onBeforeUpload', file); + }, + Refresh: function(uploader) { + that.showStatus(); + that.callEvent('onRefresh'); + }, + StateChanged: function(uploader) { + if(uploader.state === Plupload.STARTED) { + that.lastUploadedCount = 0; + } + that.$.toggleClass('uploader-started', Plupload.STARTED === uploader.state); + that.hideMessage(); + that.showStatus(); + that.callEvent('onStateChanged', uploader.state); + }, + QueueChanged: function(uploader) { + that.showStatus(); + that.callEvent('onQueueChanged'); + }, + Error: function(uploader, error) { + var type = 'danger'; + if(error.code === Plupload.FILE_SIZE_ERROR || error.code === Plupload.FILE_SIZE_ERROR || error.code === Plupload.FILE_EXTENSION_ERROR || error.code === Plupload.FILE_DUPLICATE_ERROR || error.code === Plupload.MAGE_FORMAT_ERROR) type = 'warning'; + that.showMessage(error.message, type); + that.callEvent('onError', error); + } + }; + + Plupload.addI18n(that.lang.i18n); + + that.qiniuEnable = $.isPlainObject(options.qiniu) && window.Qiniu; + if(that.qiniuEnable) { + var qiniuOptions = options.qiniu; + var qiniuKeyFunc = qiniuOptions.key; + delete plOptions.qiniu; + if(qiniuKeyFunc) { + delete qiniuOptions.key; + if($.isFunction(qiniuKeyFunc)) { + eventHandlers.Key = qiniuKeyFunc; + } + } else { + eventHandlers.Key = function(uploader, file) { + return file.name; + }; + } + qiniuOptions.init = eventHandlers; + plOptions = $.extend(plOptions, qiniuOptions); + var qiniuSKD = new QiniuJsSDK(); + var plupload = qiniuSKD.uploader(plOptions); + that.plupload = plupload; + } else { + var plupload = new Plupload.Uploader(plOptions); + plupload.init(); + that.plOptions = plOptions; + that.plupload = plupload; + $.each(eventHandlers, function(eventName, eventHandler) { + plupload.bind(eventName, eventHandler); + }); + } + }; + + // Get and init options + Uploader.prototype.getOptions = function(options) { + this.options = $.extend({ + lang: $.zui.clientLang() + }, DEFAULTS, this.$.data(), options); + return this.options; + }; + + // Call event helper + Uploader.prototype.callEvent = function(name, params) { + var that = this; + if(!$.isArray(params)) params = [params]; + that.$.trigger(name, params); + if($.isFunction(that.options[name])) { + return that.options[name].apply(that, params); + } + }; + + // Extense jquery element + $.fn.uploader = function(option, params) { + return this.each(function() { + var $this = $(this); + var data = $this.data(NAME); + var options = typeof option == 'object' && option; + + if(!data) $this.data(NAME, (data = new Uploader(this, options))); + + if(typeof option == 'string') data[option](params); + }); + }; + + Uploader.NAME = NAME; + Uploader.STATUS = STATUS; + Uploader.ERRORS = ERRORS; + Uploader.NAME = NAME; + Uploader.LANG = { + zh_cn: {"limitFilesCountMessage": "所有文件数目不能超过 {count} 个,如果要上传此文件请先从列表移除文件。", "uploadEmptyMessage": "没有文件等待上传。", "uploadSuccessMessage": "已上传 {uploaded} 个文件。", "uploadHasFailedMessage": "已上传 {uploaded} 个文件,{failed} 个文件上传失败。", "startedStatusText": "正在上传第 {uploading} 个文件,共 {total} 个文件,已上传 {uploaded} 个文件,{failed} 个上传失败,进度 {percent}%,平均速度 {speed}。", "initStatusText": "添加文件或拖放文件来上传。", "stoppedStatusText": "共 {total} 个文件{queue} 个文件等待上传,已上传 {uploaded} 个文件{failed} 个上传失败,平均速度 {speed}。", "deleteConfirm": "确定移除文件【{name}】?", "download": "下载", "rename": "重命名", "repeat": "重新上传", "remove": "移除", "dropPlaceholder": "将文件拖放至在此处。", "queue": "待上传", "uploading": "正在上传", "failed": "失败", "done": "已上传", "i18n": {"Stop Upload":"停止上传","Upload URL might be wrong or doesn't exist.":"上传的URL可能是错误的或不存在。","tb":"tb","Size":"大小","Close":"关闭","You must specify either browse_button or drop_element.":"您必须指定 browse_button 或者 drop_element。","Init error.":"初始化错误。","Add files to the upload queue and click the start button.":"将文件添加到上传队列,然后点击”开始上传“按钮。","List":"列表","Filename":"文件名","%s specified, but cannot be found.":"%s 已指定,但是没有找到。","Image format either wrong or not supported.":"图片格式错误或者不支持。","Status":"状态","HTTP Error.":"HTTP 错误。","Start Upload":"开始上传","Error: File too large:":"错误: 文件太大:","kb":"kb","Duplicate file error.":"无法添加重复文件。","File size error.":"文件大小错误。","N/A":"N/A","gb":"gb","Error: Invalid file extension:":"错误:无效的文件扩展名:","Select files":"选择文件","%s already present in the queue.":"%s 已经在当前队列里。","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"超限。%s 支持最大 %wx%hpx 的图片。","File: %s":"文件: %s","b":"b","Uploaded %d/%d files":"已上传 %d/%d 个文件","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"每次只接受同时上传 %d 个文件,多余的文件将会被删除。","%d files queued":"%d 个文件加入到队列","File: %s, size: %d, max file size: %d":"文件: %s, 大小: %d, 最大文件大小: %d","Thumbnails":"缩略图","Drag files here.":"把文件拖到这里。","Runtime ran out of available memory.":"运行时已消耗所有可用内存。","File count error.":"文件数量错误。","File extension error.":"文件扩展名错误。","mb":"mb","Add Files":"增加文件"}}, + zh_tw: {"limitFilesCountMessage": "所有文件數目不能超過 {count} 個。","uploadEmptyMessage": "没有文件等待上傳。", "uploadSuccessMessage": "已上傳 {uploaded} 个文件。", "uploadHasFailedMessage": "文件上傳完成,已上傳 {uploaded} 個文件,{failed} 個文件上傳失败。", "startedStatusText": "正在上傳第{uploading} 個文件,共{total} 個文件,已上傳{uploaded} 個文件,{failed} 個上傳失敗,進度{percent}%,平均速度{speed}。", "initStatusText": "添加文件或拖放文件來上傳。", "stoppedStatusText": "共{total} 個文件{queue} 個文件等待上傳,已上傳{uploaded} 個文件{failed} 個上傳失敗,平均速度{speed}< /strong>。", "deleteConfirm": "確定移除文件【{name}】?", "download": "下载", "rename": "重命名", "repeat": "重新上傳", "remove": "移除", "dropPlaceholder": "將文件拖放至在此處。", "queue": "待上傳", "uploading": "正在上傳", "failed": "失敗", "done": "已上傳", "i18n": {"Stop Upload":"停止上傳","Upload URL might be wrong or doesn't exist.":"檔案URL可能有誤或者不存在。","tb":"tb","Size":"大小","Close":"關閉","You must specify either browse_button or drop_element.":"您必須指定 browse_button 或 drop_element。","Init error.":"初始化錯誤。","Add files to the upload queue and click the start button.":"將檔案加入上傳序列,然後點選”開始上傳“按鈕。","List":"清單","Filename":"檔案名稱","%s specified, but cannot be found.":"找不到已選擇的 %s。","Image format either wrong or not supported.":"圖片格式錯誤或者不支援。","Status":"狀態","HTTP Error.":"HTTP 錯誤。","Start Upload":"開始上傳","Error: File too large:":"錯誤: 檔案大小太大:","kb":"kb","Duplicate file error.":"錯誤:檔案重複。","File size error.":"錯誤:檔案大小超過限制。","N/A":"N/A","gb":"gb","Error: Invalid file extension:":"錯誤:不接受的檔案格式:","Select files":"選擇檔案","%s already present in the queue.":"%s 已經存在目前的檔案序列。","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"圖片解析度超出範圍! %s 最高只支援到 %wx%hpx。","File: %s":"檔案: %s","b":"b","Uploaded %d/%d files":"已上傳 %d/%d 個文件","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"每次只能上傳 %d 個檔案,超過限制數量的檔案將被忽略。","%d files queued":"%d 個檔案加入到序列","File: %s, size: %d, max file size: %d":"檔案: %s, 大小: %d, 檔案大小上限: %d","Thumbnails":"縮圖","Drag files here.":"把檔案拖曳到這裡。","Runtime ran out of available memory.":"執行時耗盡了所有可用的記憶體。","File count error.":"檔案數量錯誤。","File extension error.":"檔案副檔名錯誤。","mb":"mb","Add Files":"增加檔案"}}, + en: {"limitFilesCountMessage": "All files count can not over {count}.","uploadEmptyMessage": "No file in queue to upload", "uploadSuccessMessage": "Uploaded {uploaded} files。", "uploadHasFailedMessage": "Uploaded complete, {uploaded} success, {failed} failed.", "startedStatusText": "Uploading NO.{uploading} file, total {total} files, Uploaded {uploaded} files, {failed} failed, progress {percent}%, average spped {speed}。", "initStatusText": "Append or drag file here.", "stoppedStatusText": "Total {total} files, {queue} files in queue, uploaded {uploaded} files, {failed} failed, average spped {speed}。", "deleteConfirm": "Remove file \"{name}\" form upload queue?", "rename": "Rename", "download": "Download", "repeat": "Repeat", "remove": "Remove", "dropPlaceholder": "Drop file here.", "queue": "Wait", "uploading": "Uploading", "failed": "Failed", "done": "Done", "i18n": {"Stop Upload":"Stop Upload","Upload URL might be wrong or doesn't exist.":"Upload URL might be wrong or doesn't exist.","tb":"tb","Size":"Size","Close":"Close","You must specify either browse_button or drop_element.":"You must specify either browse_button or drop_element.","Init error.":"Init error.","Add files to the upload queue and click the start button.":"Add files to the upload queue and click the start button.","List":"List","Filename":"Filename","%s specified, but cannot be found.":"%s specified, but cannot be found.","Image format either wrong or not supported.":"Image format either wrong or not supported.","Status":"Status","HTTP Error.":"HTTP Error.","Start Upload":"Start Upload","Error: File too large:":"Error: File too large:","kb":"kb","Duplicate file error.":"Duplicate file error.","File size error.":"File size error.","N/A":"N/A","gb":"gb","Error: Invalid file extension:":"Error: Invalid file extension:","Select files":"Select files","%s already present in the queue.":"%s already present in the queue.","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.","File: %s":"File: %s","b":"b","Uploaded %d/%d files":"Uploaded %d/%d files","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload element accepts only %d file(s) at a time. Extra files were stripped.","%d files queued":"%d files queued","File: %s, size: %d, max file size: %d":"File: %s, size: %d, max file size: %d","Thumbnails":"Thumbnails","Drag files here.":"Drag files here.","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"File count error.","File extension error.":"File extension error.","mb":"mb","Add Files":"Add Files"}} + }; + + $.zui.plupload = Plupload; + $.zui.moxie = Moxie; + $.zui.Uploader = Uploader; + + $.fn.uploader.Constructor = Uploader; + + // For qiniu + if(!window.mOxie) window.mOxie = { + Env: Moxie.core.utils.Env, + XMLHttpRequest: Moxie.xhr.XMLHttpRequest + }; + + // Auto call uploader after document load complete + $(function() { + $('[data-ride="uploader"]').uploader(); + }); +}(jQuery, window, plupload, moxie, undefined)); + diff --git a/root/res/zui/lib/uploader/zui.uploader.min.css b/root/res/zui/lib/uploader/zui.uploader.min.css new file mode 100644 index 0000000..b714532 --- /dev/null +++ b/root/res/zui/lib/uploader/zui.uploader.min.css @@ -0,0 +1,6 @@ +/*! + * ZUI: 文件上传 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */.uploader{position:relative;margin-bottom:20px}.uploader-btn-hidden{position:absolute;top:-1px;left:-1px;width:1px;height:1px;opacity:0}.file-dragable{position:relative}[data-drop-placeholder]:before{position:absolute;top:0;left:0;z-index:10;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;height:100%;font-size:16px;text-align:center;pointer-events:none;content:attr(data-drop-placeholder);background-color:rgba(255,240,213,.5);filter:alpha(opacity=0);border:2px dashed #f1a325;opacity:0;-webkit-transition:all .2s;-o-transition:all .2s;transition:all .2s;-webkit-transform:scale(.95);-ms-transform:scale(.95);-o-transform:scale(.95);transform:scale(.95);-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.ie [data-drop-placeholder]:before{display:none!important}.file-dragable[data-drop-placeholder]:before{filter:alpha(opacity=100);opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}.file-drag-enter[data-drop-placeholder]:before{background-color:#fff0d5;border-style:solid}.file-list,.uploader-files{position:relative;min-height:32px;margin-bottom:10px;border:1px solid #ddd}.file-list[data-drag-placeholder]:before,.uploader-files[data-drag-placeholder]:before{position:absolute;top:50%;right:0;left:0;display:block;margin-top:-15px;line-height:32px;color:#ddd;text-align:center;pointer-events:none;content:attr(data-drag-placeholder);-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s}.file-list[data-drag-placeholder]:hover:before,.uploader-files[data-drag-placeholder]:hover:before{color:grey}.file-list .file-icon,.uploader-files .file-icon{position:relative;width:32px;height:32px;line-height:32px;text-align:center;filter:alpha(opacity=70);opacity:.7;-webkit-transition:opacity .4s;-o-transition:opacity .4s;transition:opacity .4s}.file-list .file-icon-image,.uploader-files .file-icon-image{position:absolute;top:5px;right:5px;bottom:5px;left:5px;background-color:#fff;background-repeat:no-repeat;background-position:center;-webkit-background-size:cover;background-size:cover;border:1px solid #ddd}.file-list .file-name,.uploader-files .file-name{text-decoration:none;-webkit-transition:all .2s;-o-transition:all .2s;transition:all .2s}.file-list .file-name[contenteditable],.uploader-files .file-name[contenteditable]{padding:0 5px;background-color:#fff;outline:1px solid #3280fc;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #97befd;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #97befd}.file-list .file-name,.file-list .file-size,.uploader-files .file-name,.uploader-files .file-size{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-list .file-renaming .file-name[contenteditable],.uploader-files .file-renaming .file-name[contenteditable]{text-overflow:initial}.file-list .file:hover .file-name,.uploader-files .file:hover .file-name{color:#3280fc}.file-list .file:hover .file-icon,.uploader-files .file:hover .file-icon{opacity:1}.file-list .file-status,.uploader-files .file-status{display:inline-block;line-height:20px;text-align:right}.file-list .file-status:hover,.uploader-files .file-status:hover{background-color:rgba(0,0,0,.07)}.file-list .file-status>.icon,.uploader-files .file-status>.icon{line-height:20px;vertical-align:middle;opacity:1;-webkit-transition:all .8s;-o-transition:all .8s;transition:all .8s;-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}.file-list .file-status>.icon:before,.uploader-files .file-status>.icon:before{content:'\e653'}.file-list .file-status>.text,.uploader-files .file-status>.text{display:inline-block;padding:0 6px;font-size:12px;line-height:20px}.file-list .file-status>.text:empty,.uploader-files .file-status>.text:empty{display:none}.file-list .file[data-status=uploading] .file-status>.icon,.uploader-files .file[data-status=uploading] .file-status>.icon{filter:alpha(opacity=0);opacity:0;-webkit-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0)}.file-list .file[data-status=uploading] .file-status>.text,.uploader-files .file[data-status=uploading] .file-status>.text{color:#fff;background-color:#3280fc;border-radius:10px}.file-list .file[data-status=queue] .file-status,.uploader-files .file[data-status=queue] .file-status{color:#f1a325}.file-list .file[data-status=queue] .file-status>.icon:before,.uploader-files .file[data-status=queue] .file-status>.icon:before{content:'\e6cd'}.file-list .file[data-status=failed] .file-status,.uploader-files .file[data-status=failed] .file-status{color:#ea644a}.file-list .file[data-status=failed] .file-status>.icon:before,.uploader-files .file[data-status=failed] .file-status>.icon:before{content:'\e66a'}.file-list .file[data-status=done] .file-status,.uploader-files .file[data-status=done] .file-status{color:#38b03f}.file-list .file .actions>.btn-download-file,.file-list .file .actions>.btn-reset-file,.file-list .file[data-status=uploading] .actions>.btn,.file-list .file[data-status=failed] .actions>.btn-rename-file,.file-list .file[data-status=done] .actions>.btn,.uploader-files .file .actions>.btn-download-file,.uploader-files .file .actions>.btn-reset-file,.uploader-files .file[data-status=uploading] .actions>.btn,.uploader-files .file[data-status=failed] .actions>.btn-rename-file,.uploader-files .file[data-status=done] .actions>.btn{display:none}.file-list .file[data-status=failed] .actions>.btn-reset-file,.file-list .file[data-status=done] .actions>.btn-download-file[href],.file-list.file-show-delete-action-on-done .file[data-status=done] .actions>.btn-delete-file,.file-list.file-show-rename-action-on-done .file[data-status=done] .actions>.btn-rename-file,.uploader-files .file[data-status=failed] .actions>.btn-reset-file,.uploader-files .file[data-status=done] .actions>.btn-download-file[href],.uploader-files.file-show-delete-action-on-done .file[data-status=done] .actions>.btn-delete-file,.uploader-files.file-show-rename-action-on-done .file[data-status=done] .actions>.btn-rename-file{display:inline-block}.file-list.file-rename-by-click [data-status=queue] .file-name:hover,.uploader-files.file-rename-by-click [data-status=queue] .file-name:hover{background-color:rgba(255,255,255,.5);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #97befd;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #97befd}.file-list .file-progress-bar,.uploader-files .file-progress-bar{position:absolute;top:0;bottom:0;left:0;z-index:10;pointer-events:none;background-color:rgba(50,128,252,.1);filter:alpha(opacity=0);-webkit-box-shadow:inset 0 -2px #3280fc;box-shadow:inset 0 -2px #3280fc;opacity:0;-webkit-transition:width .6s ease,opacity .4s;-o-transition:width .6s ease,opacity .4s;transition:width .6s ease,opacity .4s}.file-list .file[data-status=uploading] .file-progress-bar,.uploader-files .file[data-status=uploading] .file-progress-bar{filter:alpha(opacity=100);opacity:1}.file-list .file[data-status=queue],.uploader-files .file[data-status=queue]{background-color:#fff0d5}.file-list .file[data-status=failed],.uploader-files .file[data-status=failed]{background-color:#ffe5e0}.file-list .file[data-status=done],.uploader-files .file[data-status=done]{background-color:#fff}.uploader-actions{background-color:#f1f1f1}.file-list+.uploader-actions{margin-top:-10px;border:1px solid #ddd;border-top:none}.uploader-actions .uploader-status{padding:5px 10px;line-height:20px}.uploader-message{position:absolute;top:0;right:0;left:0;z-index:1;display:none;padding:5px 10px;color:#fff;background:#3280fc;filter:alpha(opacity=95);opacity:.95}.uploader-message>.close{position:absolute;top:3px;right:10px;color:inherit;text-shadow:none;opacity:.4}.uploader-message>.close:hover{opacity:1}.uploader-message[data-type=danger]{background:#ea644a}.uploader-message[data-type=warning]{background:#f1a325}.uploader-message[data-type=info]{background:#03b8cf}.uploader-message[data-type=success]{background:#38b03f}.file-list .file{position:relative;z-index:0;background-color:#fff;-webkit-transition:background .4s;-o-transition:background .4s;transition:background .4s}.file-list .file+.file{border-top:1px solid #ddd}.file-list .file-wrapper{position:relative;z-index:2;display:table;width:100%;table-layout:fixed;-webkit-transition:background .4s;-o-transition:background .4s;transition:background .4s}.file-list .file-wrapper:hover{background-color:rgba(0,0,0,.05)}.file-list .file-wrapper>.actions,.file-list .file-wrapper>.content,.file-list .file-wrapper>.file-icon{display:table-cell;vertical-align:middle}.file-list .file-wrapper>.actions{width:150px;text-align:right}.file-list .file-wrapper>.actions>.btn{padding:5px 8px}.file-list .file-wrapper>.actions>.btn:hover{background-color:rgba(0,0,0,.07)}.file-list .file-name{display:block}.file-list .file-wrapper>.content>.file-name{float:left}.file-list .file-wrapper>.content>.file-size{float:right;margin-top:2px}.file-list .file-wrapper>.actions>.btn{border-radius:0}.file-list .file-status{padding:5px}.file-list-lg .file{min-height:50px}.file-list-lg .file-icon{width:50px;line-height:50px}.file-list-lg .file-icon .icon{position:relative;display:block;width:50px;font-size:28px;line-height:50px;text-align:center}.file-list-lg .file-icon .icon-file-o{position:relative;left:-2px}.file-list-lg .file-status{line-height:40px}.file-list-lg .file-status>.icon{font-size:20px}.file-list-lg .file[data-status=done] .file-status{padding:5px 12px}.file-list-lg .file-wrapper>.content>.file-name{float:none;line-height:20px}.file-list-lg .file-wrapper>.content>.file-size{float:none;line-height:14px}.file-list-lg .file-wrapper>.actions>.btn{padding:14px 8px}.file-list-lg .file-renaming .file-name[contenteditable]{font-size:14px;line-height:34px}.file-list-lg .file-renaming .file-wrapper>.content>.file-size{display:none}.file-list-grid{margin-right:-8px;margin-left:-8px;border:none}.file-list-grid:after,.file-list-grid:before{display:table;content:" "}.file-list-grid:after{clear:both}.file-list-grid .file{display:block;float:left;width:120px;height:120px;margin:8px 8px 35px 8px;border:1px solid #ddd;border-radius:4px}.file-list-grid .file .file-icon{display:block;width:118px;height:118px;overflow:hidden}.file-list-grid .file-icon>.icon{font-size:70px;line-height:118px}.file-list-grid .file-icon-image{top:-1px;right:-1px;bottom:-1px;left:-1px;border:none}.file-list-grid .file-wrapper{position:absolute;top:0;right:0;left:0;display:block;width:auto}.file-list-grid .file-wrapper>.content{position:absolute;right:-1px;bottom:-24px;left:-1px;display:block;text-align:center;-webkit-transition:all .2s;-o-transition:all .2s;transition:all .2s}.file-list-grid .file-wrapper>.content>.file-name{position:relative;z-index:5;float:none;padding:4px 0;line-height:16px;border:1px solid transparent}.file-list-grid .file-wrapper>.content>.file-size{position:absolute;top:-24px;left:4px;display:block;padding:0 5px;line-height:18px;color:#fff;background-color:grey;background-color:rgba(0,0,0,.5);filter:alpha(opacity=0);border-radius:9px;opacity:0;-webkit-transition:opacity .4s;-o-transition:opacity .4s;transition:opacity .4s}.file-list-grid .file-renaming .file-wrapper>.content>.file-name,.file-list-grid .file-wrapper>.content:hover>.file-name{text-overflow:initial;word-break:break-all;white-space:normal;background-color:#fff;border-color:#ddd;-webkit-box-shadow:none;box-shadow:none}.file-list-grid .file-renaming .file-wrapper>.content>.file-name{padding:4px;text-align:left}.file-list-grid .file:hover .file-wrapper>.content>.file-size,.file-list-grid .file[data-status=uploading] .file-wrapper>.content>.file-size{filter:alpha(opacity=100);opacity:1}.file-list-grid .file-wrapper>.actions{position:absolute;top:0;right:0;left:0;display:block;width:118px}.file-list-grid .file-wrapper:hover>.actions{background:rgba(255,255,255,.85)}.file-list-grid .file-wrapper>.actions>.file-status{position:absolute;top:0;left:0;height:28px;padding:4px 5px}.file-list-grid .file-wrapper>.actions>.file-status>.icon{position:relative;top:-1px;display:inline-block;font-size:21px;text-shadow:-1px -1px 0 #fff,1px -1px 0 #fff,-1px 1px 0 #fff,1px 1px 0 #fff}.file-list-grid .file-wrapper>.actions>.file-status>.text{padding:0}.file-list-grid .file[data-status=failed] .file-wrapper>.actions>.file-status>.icon{font-size:14px;text-shadow:none}.file-list-grid .file[data-status=uploading] .file-wrapper>.actions>.file-status>.text{position:absolute;top:4px;left:4px;padding:0 8px}.file-list-grid .file[data-status=failed] .file-wrapper>.actions>.file-status{top:4px;left:4px;height:20px;padding:0 8px;color:#fff;background-color:#ea644a;border-radius:10px}.file-list-grid .file-wrapper>.actions>.btn{padding:3px 6px;filter:alpha(opacity=0);opacity:0}.file-list-grid .file-wrapper:hover>.actions>.btn{filter:alpha(opacity=100);opacity:1}.file-list-grid .file-progress-bar{-webkit-box-shadow:inset 0 -4px #3280fc;box-shadow:inset 0 -4px #3280fc}.file-list-grid+.uploader-actions{border:none} \ No newline at end of file diff --git a/root/res/zui/lib/uploader/zui.uploader.min.js b/root/res/zui/lib/uploader/zui.uploader.min.js new file mode 100644 index 0000000..77b8a48 --- /dev/null +++ b/root/res/zui/lib/uploader/zui.uploader.min.js @@ -0,0 +1,23 @@ +/*! + * ZUI: 文件上传 - v1.8.1 - 2018-01-18 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ +/*! + * mOxie - multi-runtime File API & XMLHttpRequest L2 Polyfill + * v1.5.2 + * + * Copyright 2013, Moxiecode Systems AB + * Released under GPL License. + * + * License: http://www.plupload.com/license + * Contributing: http://www.plupload.com/contributing + * + * Date: 2016-11-23 + */ +!function(e,t){var i=function(){var e={};return t.apply(e,arguments),e.moxie};"function"==typeof define&&define.amd?define("moxie",[],i):"object"==typeof module&&module.exports?module.exports=i():e.moxie=i()}(this||window,function(){!function(e,t){"use strict";function i(e,t){for(var i,n=[],r=0;r0&&l(n,function(n,l){var u=-1!==p(e(n),["array","object"]);return!!(n===r||t&&a[l]===r)||(u&&i&&(n=o(n)),void(e(a[l])===e(n)&&u?s(t,i,[a[l],n]):a[l]=n))})}),a}function a(e,t){function i(){this.constructor=e}for(var n in t)({}).hasOwnProperty.call(t,n)&&(e[n]=t[n]);return i.prototype=t.prototype,e.prototype=new i,e.__parent__=t.prototype,e}function l(e,t){var i,n,r,o;if(e){try{i=e.length}catch(s){i=o}if(i===o||"number"!=typeof i){for(n in e)if(e.hasOwnProperty(n)&&t(e[n],n)===!1)return}else for(r=0;i>r;r++)if(t(e[r],r)===!1)return}}function u(t){var i;if(!t||"object"!==e(t))return!0;for(i in t)return!1;return!0}function c(t,i){function n(r){"function"===e(t[r])&&t[r](function(e){++ri;i++)if(t[i]===e)return i}return-1}function f(t,i){var n=[];"array"!==e(t)&&(t=[t]),"array"!==e(i)&&(i=[i]);for(var r in t)-1===p(t[r],i)&&n.push(t[r]);return!!n.length&&n}function m(e,t){var i=[];return l(e,function(e){-1!==p(e,t)&&i.push(e)}),i.length?i:null}function h(e){var t,i=[];for(t=0;ti;i++)n+=Math.floor(65535*Math.random()).toString(32);return(t||"o_")+n+(e++).toString(32)}}();return{guid:E,typeOf:e,extend:t,extendIf:i,extendImmutable:n,extendImmutableIf:r,inherit:a,each:l,isEmptyObj:u,inSeries:c,inParallel:d,inArray:p,arrayDiff:f,arrayIntersect:m,toArray:h,trim:g,sprintf:x,parseSizeStr:v,delay:y}}),n("moxie/core/utils/Encode",[],function(){var e=function(e){return unescape(encodeURIComponent(e))},t=function(e){return decodeURIComponent(escape(e))},i=function(e,i){if("function"==typeof window.atob)return i?t(window.atob(e)):window.atob(e);var n,r,o,s,a,l,u,c,d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",p=0,f=0,m="",h=[];if(!e)return e;e+="";do s=d.indexOf(e.charAt(p++)),a=d.indexOf(e.charAt(p++)),l=d.indexOf(e.charAt(p++)),u=d.indexOf(e.charAt(p++)),c=s<<18|a<<12|l<<6|u,n=255&c>>16,r=255&c>>8,o=255&c,h[f++]=64==l?String.fromCharCode(n):64==u?String.fromCharCode(n,r):String.fromCharCode(n,r,o);while(p>18,a=63&c>>12,l=63&c>>6,u=63&c,h[f++]=d.charAt(s)+d.charAt(a)+d.charAt(l)+d.charAt(u);while(pn;n++)if(e[n]!=t[n]){if(e[n]=l(e[n]),t[n]=l(t[n]),e[n]t[n]){o=1;break}}if(!i)return o;switch(i){case">":case"gt":return o>0;case">=":case"ge":return o>=0;case"<=":case"le":return 0>=o;case"==":case"=":case"eq":return 0===o;case"<>":case"!=":case"ne":return 0!==o;case"":case"<":case"lt":return 0>o;default:return null}}var i=function(e){var t="",i="?",n="function",r="undefined",o="object",s="name",a="version",l={has:function(e,t){return-1!==t.toLowerCase().indexOf(e.toLowerCase())},lowerize:function(e){return e.toLowerCase()}},u={rgx:function(){for(var t,i,s,a,l,u,c,d=0,p=arguments;d0?2==l.length?t[l[0]]=typeof l[1]==n?l[1].call(this,c):l[1]:3==l.length?t[l[0]]=typeof l[1]!==n||l[1].exec&&l[1].test?c?c.replace(l[1],l[2]):e:c?l[1].call(this,c,l[2]):e:4==l.length&&(t[l[0]]=c?l[3].call(this,c.replace(l[1],l[2])):e):t[l]=c?c:e;break}if(u)break}return t},str:function(t,n){for(var r in n)if(typeof n[r]===o&&n[r].length>0){for(var s=0;s=9)},use_data_uri_of:function(e){return t.use_data_uri&&33e3>e||t.use_data_uri_over32kb()},use_fileinput:function(){if(navigator.userAgent.match(/(Android (1.0|1.1|1.5|1.6|2.0|2.1))|(Windows Phone (OS 7|8.0))|(XBLWP)|(ZuneWP)|(w(eb)?OSBrowser)|(webOS)|(Kindle\/(1.0|2.0|2.5|3.0))/))return!1;var e=document.createElement("input");return e.setAttribute("type","file"),!e.disabled}};return function(i){var n=[].slice.call(arguments);return n.shift(),"function"===e.typeOf(t[i])?t[i].apply(this,n):!!t[i]}}(),r=(new i).getResult(),o={can:n,uaParser:i,browser:r.browser.name,version:r.browser.version,os:r.os.name,osVersion:r.os.version,verComp:t,swf_url:"../flash/Moxie.swf",xap_url:"../silverlight/Moxie.xap",global_event_dispatcher:"moxie.core.EventTarget.instance.dispatchEvent"};return o.OS=o.os,o}),n("moxie/core/Exceptions",["moxie/core/utils/Basic"],function(e){function t(e,t){var i;for(i in e)if(e[i]===t)return i;return null}return{RuntimeError:function(){function i(e,i){this.code=e,this.name=t(n,e),this.message=this.name+(i||": RuntimeError "+this.code)}var n={NOT_INIT_ERR:1,EXCEPTION_ERR:3,NOT_SUPPORTED_ERR:9,JS_ERR:4};return e.extend(i,n),i.prototype=Error.prototype,i}(),OperationNotAllowedException:function(){function t(e){this.code=e,this.name="OperationNotAllowedException"}return e.extend(t,{NOT_ALLOWED_ERR:1}),t.prototype=Error.prototype,t}(),ImageError:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": ImageError "+this.code}var n={WRONG_FORMAT:1,MAX_RESOLUTION_ERR:2,INVALID_META_ERR:3};return e.extend(i,n),i.prototype=Error.prototype,i}(),FileException:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": FileException "+this.code}var n={NOT_FOUND_ERR:1,SECURITY_ERR:2,ABORT_ERR:3,NOT_READABLE_ERR:4,ENCODING_ERR:5,NO_MODIFICATION_ALLOWED_ERR:6,INVALID_STATE_ERR:7,SYNTAX_ERR:8};return e.extend(i,n),i.prototype=Error.prototype,i}(),DOMException:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": DOMException "+this.code}var n={INDEX_SIZE_ERR:1,DOMSTRING_SIZE_ERR:2,HIERARCHY_REQUEST_ERR:3,WRONG_DOCUMENT_ERR:4,INVALID_CHARACTER_ERR:5,NO_DATA_ALLOWED_ERR:6,NO_MODIFICATION_ALLOWED_ERR:7,NOT_FOUND_ERR:8,NOT_SUPPORTED_ERR:9,INUSE_ATTRIBUTE_ERR:10,INVALID_STATE_ERR:11,SYNTAX_ERR:12,INVALID_MODIFICATION_ERR:13,NAMESPACE_ERR:14,INVALID_ACCESS_ERR:15,VALIDATION_ERR:16,TYPE_MISMATCH_ERR:17,SECURITY_ERR:18,NETWORK_ERR:19,ABORT_ERR:20,URL_MISMATCH_ERR:21,QUOTA_EXCEEDED_ERR:22,TIMEOUT_ERR:23,INVALID_NODE_TYPE_ERR:24,DATA_CLONE_ERR:25};return e.extend(i,n),i.prototype=Error.prototype,i}(),EventException:function(){function t(e){this.code=e,this.name="EventException"}return e.extend(t,{UNSPECIFIED_EVENT_TYPE_ERR:0}),t.prototype=Error.prototype,t}()}}),n("moxie/core/utils/Dom",["moxie/core/utils/Env"],function(e){var t=function(e){return"string"!=typeof e?e:document.getElementById(e)},i=function(e,t){if(!e.className)return!1;var i=new RegExp("(^|\\s+)"+t+"(\\s+|$)");return i.test(e.className)},n=function(e,t){i(e,t)||(e.className=e.className?e.className.replace(/\s+$/,"")+" "+t:t)},r=function(e,t){if(e.className){var i=new RegExp("(^|\\s+)"+t+"(\\s+|$)");e.className=e.className.replace(i,function(e,t,i){return" "===t&&" "===i?" ":""})}},o=function(e,t){return e.currentStyle?e.currentStyle[t]:window.getComputedStyle?window.getComputedStyle(e,null)[t]:void 0},s=function(t,i){function n(e){var t,i,n=0,r=0;return e&&(i=e.getBoundingClientRect(),t="CSS1Compat"===u.compatMode?u.documentElement:u.body,n=i.left+t.scrollLeft,r=i.top+t.scrollTop),{x:n,y:r}}var r,o,s,a=0,l=0,u=document;if(t=t,i=i||u.body,t&&t.getBoundingClientRect&&"IE"===e.browser&&(!u.documentMode||u.documentMode<8))return o=n(t),s=n(i),{x:o.x-s.x,y:o.y-s.y};for(r=t;r&&r!=i&&r.nodeType;)a+=r.offsetLeft||0,l+=r.offsetTop||0,r=r.offsetParent;for(r=t.parentNode;r&&r!=i&&r.nodeType;)a-=r.scrollLeft||0,l-=r.scrollTop||0,r=r.parentNode;return{x:a,y:l}},a=function(e){return{w:e.offsetWidth||e.clientWidth,h:e.offsetHeight||e.clientHeight}};return{get:t,hasClass:i,addClass:n,removeClass:r,getStyle:o,getPos:s,getSize:a}}),n("moxie/core/EventTarget",["moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Basic"],function(e,t,i){function n(){this.uid=i.guid()}var r={};return i.extend(n.prototype,{init:function(){this.uid||(this.uid=i.guid("uid_"))},addEventListener:function(e,t,n,o){var s,a=this;return this.hasOwnProperty("uid")||(this.uid=i.guid("uid_")),e=i.trim(e),/\s/.test(e)?void i.each(e.split(/\s+/),function(e){a.addEventListener(e,t,n,o)}):(e=e.toLowerCase(),n=parseInt(n,10)||0,s=r[this.uid]&&r[this.uid][e]||[],s.push({fn:t,priority:n,scope:o||this}),r[this.uid]||(r[this.uid]={}),void(r[this.uid][e]=s))},hasEventListener:function(e){var t;return e?(e=e.toLowerCase(),t=r[this.uid]&&r[this.uid][e]):t=r[this.uid],!!t&&t},removeEventListener:function(e,t){var n,o,s=this;if(e=e.toLowerCase(),/\s/.test(e))return void i.each(e.split(/\s+/),function(e){s.removeEventListener(e,t)});if(n=r[this.uid]&&r[this.uid][e]){if(t){for(o=n.length-1;o>=0;o--)if(n[o].fn===t){n.splice(o,1);break}}else n=[];n.length||(delete r[this.uid][e],i.isEmptyObj(r[this.uid])&&delete r[this.uid])}},removeAllEventListeners:function(){r[this.uid]&&delete r[this.uid]},dispatchEvent:function(e){var n,o,s,a,l,u={},c=!0;if("string"!==i.typeOf(e)){if(a=e,"string"!==i.typeOf(a.type))throw new t.EventException(t.EventException.UNSPECIFIED_EVENT_TYPE_ERR);e=a.type,a.total!==l&&a.loaded!==l&&(u.total=a.total,u.loaded=a.loaded),u.async=a.async||!1}if(-1!==e.indexOf("::")?function(t){n=t[0],e=t[1]}(e.split("::")):n=this.uid,e=e.toLowerCase(),o=r[n]&&r[n][e]){o.sort(function(e,t){return t.priority-e.priority}),s=[].slice.call(arguments),s.shift(),u.type=e,s.unshift(u);var d=[];i.each(o,function(e){s[0].target=e.scope,u.async?d.push(function(t){setTimeout(function(){t(e.fn.apply(e.scope,s)===!1)},1)}):d.push(function(t){t(e.fn.apply(e.scope,s)===!1)})}),d.length&&i.inSeries(d,function(e){c=!e})}return c},bindOnce:function(e,t,i,n){var r=this;r.bind.call(this,e,function o(){return r.unbind(e,o),t.apply(this,arguments)},i,n)},bind:function(){this.addEventListener.apply(this,arguments)},unbind:function(){this.removeEventListener.apply(this,arguments)},unbindAll:function(){this.removeAllEventListeners.apply(this,arguments)},trigger:function(){return this.dispatchEvent.apply(this,arguments)},handleEventProps:function(e){var t=this;this.bind(e.join(" "),function(e){var t="on"+e.type.toLowerCase();"function"===i.typeOf(this[t])&&this[t].apply(this,arguments)}),i.each(e,function(e){e="on"+e.toLowerCase(e),"undefined"===i.typeOf(t[e])&&(t[e]=null)})}}),n.instance=new n,n}),n("moxie/runtime/Runtime",["moxie/core/utils/Env","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/EventTarget"],function(e,t,i,n){function r(e,n,o,a,l){var u,c=this,d=t.guid(n+"_"),p=l||"browser";e=e||{},s[d]=this,o=t.extend({access_binary:!1,access_image_binary:!1,display_media:!1,do_cors:!1,drag_and_drop:!1,filter_by_extension:!0,resize_image:!1,report_upload_progress:!1,return_response_headers:!1,return_response_type:!1,return_status_code:!0,send_custom_headers:!1,select_file:!1,select_folder:!1,select_multiple:!0,send_binary_string:!1,send_browser_cookies:!0,send_multipart:!0,slice_blob:!1,stream_upload:!1,summon_file_dialog:!1,upload_filesize:!0,use_http_method:!0},o),e.preferred_caps&&(p=r.getMode(a,e.preferred_caps,p)),u=function(){var e={};return{exec:function(t,i,n,r){return u[i]&&(e[t]||(e[t]={context:this,instance:new u[i]}),e[t].instance[n])?e[t].instance[n].apply(this,r):void 0},removeInstance:function(t){delete e[t]},removeAllInstances:function(){var i=this;t.each(e,function(e,n){"function"===t.typeOf(e.instance.destroy)&&e.instance.destroy.call(e.context),i.removeInstance(n)})}}}(),t.extend(this,{initialized:!1,uid:d,type:n,mode:r.getMode(a,e.required_caps,p),shimid:d+"_container",clients:0,options:e,can:function(e,i){var n=arguments[2]||o;if("string"===t.typeOf(e)&&"undefined"===t.typeOf(i)&&(e=r.parseCaps(e)),"object"===t.typeOf(e)){for(var s in e)if(!this.can(s,e[s],n))return!1;return!0}return"function"===t.typeOf(n[e])?n[e].call(this,i):i===n[e]},getShimContainer:function(){var e,n=i.get(this.shimid);return n||(e=i.get(this.options.container)||document.body,n=document.createElement("div"),n.id=this.shimid,n.className="moxie-shim moxie-shim-"+this.type,t.extend(n.style,{position:"absolute",top:"0px",left:"0px",width:"1px",height:"1px",overflow:"hidden"}),e.appendChild(n),e=null),n},getShim:function(){return u},shimExec:function(e,t){var i=[].slice.call(arguments,2);return c.getShim().exec.call(this,this.uid,e,t,i)},exec:function(e,t){var i=[].slice.call(arguments,2);return c[e]&&c[e][t]?c[e][t].apply(this,i):c.shimExec.apply(this,arguments)},destroy:function(){if(c){var e=i.get(this.shimid);e&&e.parentNode.removeChild(e),u&&u.removeAllInstances(),this.unbindAll(),delete s[this.uid],this.uid=null,d=c=u=e=null}}}),this.mode&&e.required_caps&&!this.can(e.required_caps)&&(this.mode=!1)}var o={},s={};return r.order="html5,flash,silverlight,html4",r.getRuntime=function(e){return!!s[e]&&s[e]},r.addConstructor=function(e,t){t.prototype=n.instance,o[e]=t},r.getConstructor=function(e){return o[e]||null},r.getInfo=function(e){var t=r.getRuntime(e);return t?{uid:t.uid,type:t.type,mode:t.mode,can:function(){return t.can.apply(t,arguments)}}:null},r.parseCaps=function(e){var i={};return"string"!==t.typeOf(e)?e||{}:(t.each(e.split(","),function(e){i[e]=!0}),i)},r.can=function(e,t){var i,n,o=r.getConstructor(e);return!!o&&(i=new o({required_caps:t}),n=i.mode,i.destroy(),!!n)},r.thatCan=function(e,t){var i=(t||r.order).split(/\s*,\s*/);for(var n in i)if(r.can(i[n],e))return i[n];return null},r.getMode=function(e,i,n){var r=null;if("undefined"===t.typeOf(n)&&(n="browser"),i&&!t.isEmptyObj(e)){if(t.each(i,function(i,n){if(e.hasOwnProperty(n)){var o=e[n](i);if("string"==typeof o&&(o=[o]),r){if(!(r=t.arrayIntersect(r,o)))return r=!1}else r=o}}),r)return-1!==t.inArray(n,r)?n:r[0];if(r===!1)return!1}return n},r.capTrue=function(){return!0},r.capFalse=function(){return!1},r.capTest=function(e){return function(){return!!e}},r}),n("moxie/runtime/RuntimeClient",["moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Basic","moxie/runtime/Runtime"],function(e,t,i,n){return function(){var e;i.extend(this,{connectRuntime:function(r){function o(i){var s,l;return i.length?(s=i.shift().toLowerCase(),(l=n.getConstructor(s))?(e=new l(r),e.bind("Init",function(){e.initialized=!0,setTimeout(function(){e.clients++,a.ruid=e.uid,a.trigger("RuntimeInit",e)},1)}),e.bind("Error",function(){e.destroy(),o(i)}),e.bind("Exception",function(e,i){var n=i.name+"(#"+i.code+")"+(i.message?", from: "+i.message:"");a.trigger("RuntimeError",new t.RuntimeError(t.RuntimeError.EXCEPTION_ERR,n))}),e.mode?void e.init():void e.trigger("Error")):void o(i)):(a.trigger("RuntimeError",new t.RuntimeError(t.RuntimeError.NOT_INIT_ERR)),void(e=null))}var s,a=this;if("string"===i.typeOf(r)?s=r:"string"===i.typeOf(r.ruid)&&(s=r.ruid),s){if(e=n.getRuntime(s))return a.ruid=s,e.clients++,e;throw new t.RuntimeError(t.RuntimeError.NOT_INIT_ERR)}o((r.runtime_order||n.order).split(/\s*,\s*/))},disconnectRuntime:function(){e&&--e.clients<=0&&e.destroy(),e=null},getRuntime:function(){return e&&e.uid?e:e=null},exec:function(){return e?e.exec.apply(this,arguments):null},can:function(t){return!!e&&e.can(t)}})}}),n("moxie/file/Blob",["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/runtime/RuntimeClient"],function(e,t,i){function n(o,s){function a(t,i,o){var s,a=r[this.uid];return"string"===e.typeOf(a)&&a.length?(s=new n(null,{type:o,size:i-t}),s.detach(a.substr(t,s.size)),s):null}i.call(this),o&&this.connectRuntime(o),s?"string"===e.typeOf(s)&&(s={data:s}):s={},e.extend(this,{uid:s.uid||e.guid("uid_"),ruid:o,size:s.size||0,type:s.type||"",slice:function(e,t,i){return this.isDetached()?a.apply(this,arguments):this.getRuntime().exec.call(this,"Blob","slice",this.getSource(),e,t,i)},getSource:function(){return r[this.uid]?r[this.uid]:null},detach:function(e){if(this.ruid&&(this.getRuntime().exec.call(this,"Blob","destroy"),this.disconnectRuntime(),this.ruid=null),e=e||"","data:"==e.substr(0,5)){var i=e.indexOf(";base64,");this.type=e.substring(5,i),e=t.atob(e.substring(i+8))}this.size=e.length,r[this.uid]=e},isDetached:function(){return!this.ruid&&"string"===e.typeOf(r[this.uid])},destroy:function(){this.detach(),delete r[this.uid]}}),s.data?this.detach(s.data):r[this.uid]=s}var r={};return n}),n("moxie/core/I18n",["moxie/core/utils/Basic"],function(e){var t={};return{addI18n:function(i){return e.extend(t,i)},translate:function(e){return t[e]||e},_:function(e){return this.translate(e)},sprintf:function(t){var i=[].slice.call(arguments,1);return t.replace(/%[a-z]/g,function(){var t=i.shift();return"undefined"!==e.typeOf(t)?t:""})}}}),n("moxie/core/utils/Mime",["moxie/core/utils/Basic","moxie/core/I18n"],function(e,t){var i="application/msword,doc dot,application/pdf,pdf,application/pgp-signature,pgp,application/postscript,ps ai eps,application/rtf,rtf,application/vnd.ms-excel,xls xlb,application/vnd.ms-powerpoint,ppt pps pot,application/zip,zip,application/x-shockwave-flash,swf swfl,application/vnd.openxmlformats-officedocument.wordprocessingml.document,docx,application/vnd.openxmlformats-officedocument.wordprocessingml.template,dotx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,xlsx,application/vnd.openxmlformats-officedocument.presentationml.presentation,pptx,application/vnd.openxmlformats-officedocument.presentationml.template,potx,application/vnd.openxmlformats-officedocument.presentationml.slideshow,ppsx,application/x-javascript,js,application/json,json,audio/mpeg,mp3 mpga mpega mp2,audio/x-wav,wav,audio/x-m4a,m4a,audio/ogg,oga ogg,audio/aiff,aiff aif,audio/flac,flac,audio/aac,aac,audio/ac3,ac3,audio/x-ms-wma,wma,image/bmp,bmp,image/gif,gif,image/jpeg,jpg jpeg jpe,image/photoshop,psd,image/png,png,image/svg+xml,svg svgz,image/tiff,tiff tif,text/plain,asc txt text diff log,text/html,htm html xhtml,text/css,css,text/csv,csv,text/rtf,rtf,video/mpeg,mpeg mpg mpe m2v,video/quicktime,qt mov,video/mp4,mp4,video/x-m4v,m4v,video/x-flv,flv,video/x-ms-wmv,wmv,video/avi,avi,video/webm,webm,video/3gpp,3gpp 3gp,video/3gpp2,3g2,video/vnd.rn-realvideo,rv,video/ogg,ogv,video/x-matroska,mkv,application/vnd.oasis.opendocument.formula-template,otf,application/octet-stream,exe",n={mimes:{},extensions:{},addMimeType:function(e){var t,i,n,r=e.split(/,/);for(t=0;ts;s++)o+=String.fromCharCode(r[s]);return o}}t.call(this),e.extend(this,{uid:e.guid("uid_"),readAsBinaryString:function(e){return n.call(this,"readAsBinaryString",e)},readAsDataURL:function(e){return n.call(this,"readAsDataURL",e)},readAsText:function(e){return n.call(this,"readAsText",e)}})}}),n("moxie/xhr/FormData",["moxie/core/Exceptions","moxie/core/utils/Basic","moxie/file/Blob"],function(e,t,i){function n(){var e,n=[];t.extend(this,{append:function(r,o){var s=this,a=t.typeOf(o);o instanceof i?e={name:r,value:o}:"array"===a?(r+="[]",t.each(o,function(e){s.append(r,e)})):"object"===a?t.each(o,function(e,t){s.append(r+"["+t+"]",e)}):"null"===a||"undefined"===a||"number"===a&&isNaN(o)?s.append(r,"false"):n.push({name:r,value:o.toString()})},hasBlob:function(){return!!this.getBlob()},getBlob:function(){return e&&e.value||null},getBlobName:function(){return e&&e.name||null},each:function(i){t.each(n,function(e){i(e.value,e.name)}),e&&i(e.value,e.name)},destroy:function(){e=null,n=[]}})}return n}),n("moxie/xhr/XMLHttpRequest",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/core/EventTarget","moxie/core/utils/Encode","moxie/core/utils/Url","moxie/runtime/Runtime","moxie/runtime/RuntimeTarget","moxie/file/Blob","moxie/file/FileReaderSync","moxie/xhr/FormData","moxie/core/utils/Env","moxie/core/utils/Mime"],function(e,t,i,n,r,o,s,a,l,u,c,d){function p(){this.uid=e.guid("uid_")}function f(){function i(e,t){return S.hasOwnProperty(e)?1===arguments.length?c.can("define_property")?S[e]:I[e]:void(c.can("define_property")?S[e]=t:I[e]=t):void 0}function l(t){function n(){_&&(_.destroy(),_=null),a.dispatchEvent("loadend"),a=null}function r(r){_.bind("LoadStart",function(e){i("readyState",f.LOADING),a.dispatchEvent("readystatechange"),a.dispatchEvent(e),N&&a.upload.dispatchEvent(e)}),_.bind("Progress",function(e){i("readyState")!==f.LOADING&&(i("readyState",f.LOADING),a.dispatchEvent("readystatechange")),a.dispatchEvent(e)}),_.bind("UploadProgress",function(e){N&&a.upload.dispatchEvent({type:"progress",lengthComputable:!1,total:e.total,loaded:e.loaded})}),_.bind("Load",function(t){i("readyState",f.DONE),i("status",Number(r.exec.call(_,"XMLHttpRequest","getStatus")||0)),i("statusText",m[i("status")]||""),i("response",r.exec.call(_,"XMLHttpRequest","getResponse",i("responseType"))),~e.inArray(i("responseType"),["text",""])?i("responseText",i("response")):"document"===i("responseType")&&i("responseXML",i("response")),k=r.exec.call(_,"XMLHttpRequest","getAllResponseHeaders"),a.dispatchEvent("readystatechange"),i("status")>0?(N&&a.upload.dispatchEvent(t),a.dispatchEvent(t)):(L=!0,a.dispatchEvent("error")),n()}),_.bind("Abort",function(e){a.dispatchEvent(e),n()}),_.bind("Error",function(e){L=!0,i("readyState",f.DONE),a.dispatchEvent("readystatechange"),M=!0,a.dispatchEvent(e),n()}),r.exec.call(_,"XMLHttpRequest","send",{url:v,method:x,async:T,user:y,password:E,headers:A,mimeType:D,encoding:O,responseType:a.responseType,withCredentials:a.withCredentials,options:B},t)}var a=this;w=(new Date).getTime(),_=new s,"string"==typeof B.required_caps&&(B.required_caps=o.parseCaps(B.required_caps)),B.required_caps=e.extend({},B.required_caps,{return_response_type:a.responseType}),t instanceof u&&(B.required_caps.send_multipart=!0),e.isEmptyObj(A)||(B.required_caps.send_custom_headers=!0),z||(B.required_caps.do_cors=!0),B.ruid?r(_.connectRuntime(B)):(_.bind("RuntimeInit",function(e,t){r(t)}),_.bind("RuntimeError",function(e,t){a.dispatchEvent("RuntimeError",t)}),_.connectRuntime(B))}function g(){i("responseText",""),i("responseXML",null),i("response",null),i("status",0),i("statusText",""),w=b=null}var v,x,y,E,w,b,_,R,I=this,S={timeout:0,readyState:f.UNSENT,withCredentials:!1,status:0,statusText:"",responseType:"",responseXML:null,responseText:null,response:null},T=!0,A={},O=null,D=null,F=!1,C=!1,N=!1,M=!1,L=!1,z=!1,U=null,P=null,B={},k="";e.extend(this,S,{uid:e.guid("uid_"),upload:new p,open:function(o,s,a,l,u){var c;if(!o||!s)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(/[\u0100-\uffff]/.test(o)||n.utf8_encode(o)!==o)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(~e.inArray(o.toUpperCase(),["CONNECT","DELETE","GET","HEAD","OPTIONS","POST","PUT","TRACE","TRACK"])&&(x=o.toUpperCase()),~e.inArray(x,["CONNECT","TRACE","TRACK"]))throw new t.DOMException(t.DOMException.SECURITY_ERR);if(s=n.utf8_encode(s),c=r.parseUrl(s),z=r.hasSameOrigin(c),v=r.resolveUrl(s),(l||u)&&!z)throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);if(y=l||c.user,E=u||c.pass,T=a||!0,T===!1&&(i("timeout")||i("withCredentials")||""!==i("responseType")))throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);F=!T,C=!1,A={},g.call(this),i("readyState",f.OPENED),this.dispatchEvent("readystatechange")},setRequestHeader:function(r,o){var s=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","content-transfer-encoding","date","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","user-agent","via"];if(i("readyState")!==f.OPENED||C)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(/[\u0100-\uffff]/.test(r)||n.utf8_encode(r)!==r)throw new t.DOMException(t.DOMException.SYNTAX_ERR);return r=e.trim(r).toLowerCase(),!~e.inArray(r,s)&&!/^(proxy\-|sec\-)/.test(r)&&(A[r]?A[r]+=", "+o:A[r]=o,!0)},hasRequestHeader:function(e){return e&&A[e.toLowerCase()]||!1},getAllResponseHeaders:function(){return k||""},getResponseHeader:function(t){return t=t.toLowerCase(),L||~e.inArray(t,["set-cookie","set-cookie2"])?null:k&&""!==k&&(R||(R={},e.each(k.split(/\r\n/),function(t){var i=t.split(/:\s+/);2===i.length&&(i[0]=e.trim(i[0]),R[i[0].toLowerCase()]={header:i[0],value:e.trim(i[1])})})),R.hasOwnProperty(t))?R[t].header+": "+R[t].value:null},overrideMimeType:function(n){var r,o;if(~e.inArray(i("readyState"),[f.LOADING,f.DONE]))throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(n=e.trim(n.toLowerCase()),/;/.test(n)&&(r=n.match(/^([^;]+)(?:;\scharset\=)?(.*)$/))&&(n=r[1],r[2]&&(o=r[2])),!d.mimes[n])throw new t.DOMException(t.DOMException.SYNTAX_ERR);U=n,P=o},send:function(i,r){if(B="string"===e.typeOf(r)?{ruid:r}:r?r:{},this.readyState!==f.OPENED||C)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(i instanceof a)B.ruid=i.ruid,D=i.type||"application/octet-stream";else if(i instanceof u){if(i.hasBlob()){var o=i.getBlob();B.ruid=o.ruid,D=o.type||"application/octet-stream"}}else"string"==typeof i&&(O="UTF-8",D="text/plain;charset=UTF-8",i=n.utf8_encode(i));this.withCredentials||(this.withCredentials=B.required_caps&&B.required_caps.send_browser_cookies&&!z),N=!F&&this.upload.hasEventListener(),L=!1,M=!i,F||(C=!0),l.call(this,i)},abort:function(){if(L=!0,F=!1,~e.inArray(i("readyState"),[f.UNSENT,f.OPENED,f.DONE]))i("readyState",f.UNSENT);else{if(i("readyState",f.DONE),C=!1,!_)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);_.getRuntime().exec.call(_,"XMLHttpRequest","abort",M),M=!0}},destroy:function(){_&&("function"===e.typeOf(_.destroy)&&_.destroy(),_=null),this.unbindAll(),this.upload&&(this.upload.unbindAll(),this.upload=null)}}),this.handleEventProps(h.concat(["readystatechange"])),this.upload.handleEventProps(h)}var m={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",306:"Reserved",307:"Temporary Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Request Entity Too Large",414:"Request-URI Too Long",415:"Unsupported Media Type",416:"Requested Range Not Satisfiable",417:"Expectation Failed",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",426:"Upgrade Required",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",510:"Not Extended"};p.prototype=i.instance;var h=["loadstart","progress","abort","error","load","timeout","loadend"];return f.UNSENT=0,f.OPENED=1,f.HEADERS_RECEIVED=2,f.LOADING=3,f.DONE=4,f.prototype=i.instance,f}),n("moxie/runtime/Transporter",["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/runtime/RuntimeClient","moxie/core/EventTarget"],function(e,t,i,n){function r(){function n(){c=d=0,u=this.result=null}function o(t,i){var n=this;l=i,n.bind("TransportingProgress",function(t){d=t.loaded,c>d&&-1===e.inArray(n.state,[r.IDLE,r.DONE])&&s.call(n)},999),n.bind("TransportingComplete",function(){d=c,n.state=r.DONE,u=null,n.result=l.exec.call(n,"Transporter","getAsBlob",t||"")},999),n.state=r.BUSY,n.trigger("TransportingStarted"),s.call(n)}function s(){var e,i=this,n=c-d;p>n&&(p=n),e=t.btoa(u.substr(d,p)),l.exec.call(i,"Transporter","receive",e,c)}var a,l,u,c,d,p;i.call(this),e.extend(this,{uid:e.guid("uid_"),state:r.IDLE,result:null,transport:function(t,i,r){var s=this;if(r=e.extend({chunk_size:204798},r),(a=r.chunk_size%3)&&(r.chunk_size+=3-a),p=r.chunk_size,n.call(this),u=t,c=t.length,"string"===e.typeOf(r)||r.ruid)o.call(s,i,this.connectRuntime(r));else{var l=function(e,t){s.unbind("RuntimeInit",l),o.call(s,i,t)};this.bind("RuntimeInit",l),this.connectRuntime(r)}},abort:function(){var e=this;e.state=r.IDLE,l&&(l.exec.call(e,"Transporter","clear"),e.trigger("TransportingAborted")),n.call(e)},destroy:function(){this.unbindAll(),l=null,this.disconnectRuntime(),n.call(this)}})}return r.IDLE=0,r.BUSY=1,r.DONE=2,r.prototype=n.instance,r}),n("moxie/image/Image",["moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/file/FileReaderSync","moxie/xhr/XMLHttpRequest","moxie/runtime/Runtime","moxie/runtime/RuntimeClient","moxie/runtime/Transporter","moxie/core/utils/Env","moxie/core/EventTarget","moxie/file/Blob","moxie/file/File","moxie/core/utils/Encode"],function(e,t,i,n,r,o,s,a,l,u,c,d,p){function f(){function n(e){try{return e||(e=this.exec("Image","getInfo")),this.size=e.size,this.width=e.width,this.height=e.height,this.type=e.type,this.meta=e.meta,""===this.name&&(this.name=e.name),!0}catch(t){return this.trigger("error",t.code),!1}}function u(t){var n=e.typeOf(t);try{if(t instanceof f){if(!t.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);h.apply(this,arguments)}else if(t instanceof c){if(!~e.inArray(t.type,["image/jpeg","image/png"]))throw new i.ImageError(i.ImageError.WRONG_FORMAT);g.apply(this,arguments)}else if(-1!==e.inArray(n,["blob","file"]))u.call(this,new d(null,t),arguments[1]);else if("string"===n)"data:"===t.substr(0,5)?u.call(this,new c(null,{data:t}),arguments[1]):v.apply(this,arguments);else{if("node"!==n||"img"!==t.nodeName.toLowerCase())throw new i.DOMException(i.DOMException.TYPE_MISMATCH_ERR);u.call(this,t.src,arguments[1])}}catch(r){this.trigger("error",r.code)}}function h(t,i){var n=this.connectRuntime(t.ruid);this.ruid=n.uid,n.exec.call(this,"Image","loadFromImage",t,"undefined"===e.typeOf(i)||i)}function g(t,i){function n(e){r.ruid=e.uid,e.exec.call(r,"Image","loadFromBlob",t)}var r=this;r.name=t.name||"",t.isDetached()?(this.bind("RuntimeInit",function(e,t){n(t)}),i&&"string"==typeof i.required_caps&&(i.required_caps=o.parseCaps(i.required_caps)),this.connectRuntime(e.extend({required_caps:{access_image_binary:!0,resize_image:!0}},i))):n(this.connectRuntime(t.ruid))}function v(e,t){var i,n=this;i=new r,i.open("get",e),i.responseType="blob",i.onprogress=function(e){n.trigger(e)},i.onload=function(){g.call(n,i.response,!0)},i.onerror=function(e){n.trigger(e)},i.onloadend=function(){i.destroy()},i.bind("RuntimeError",function(e,t){n.trigger("RuntimeError",t)}),i.send(null,t)}s.call(this),e.extend(this,{uid:e.guid("uid_"),ruid:null,name:"",size:0,width:0,height:0,type:"",meta:{},clone:function(){this.load.apply(this,arguments)},load:function(){u.apply(this,arguments)},resize:function(t){var n,r,o=this,s={x:0,y:0,width:o.width,height:o.height},a=e.extendIf({width:o.width,height:o.height,type:o.type||"image/jpeg",quality:90,crop:!1,fit:!0,preserveHeaders:!0,resample:"default",multipass:!0},t);try{if(!o.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);if(o.width>f.MAX_RESIZE_WIDTH||o.height>f.MAX_RESIZE_HEIGHT)throw new i.ImageError(i.ImageError.MAX_RESOLUTION_ERR);if(n=o.meta&&o.meta.tiff&&o.meta.tiff.Orientation||1,-1!==e.inArray(n,[5,6,7,8])){var l=a.width;a.width=a.height,a.height=l}if(a.crop){switch(r=Math.max(a.width/o.width,a.height/o.height),t.fit?(s.width=Math.min(Math.ceil(a.width/r),o.width),s.height=Math.min(Math.ceil(a.height/r),o.height),r=a.width/s.width):(s.width=Math.min(a.width,o.width),s.height=Math.min(a.height,o.height),r=1),"boolean"==typeof a.crop&&(a.crop="cc"),a.crop.toLowerCase().replace(/_/,"-")){case"rb":case"right-bottom":s.x=o.width-s.width,s.y=o.height-s.height;break;case"cb":case"center-bottom":s.x=Math.floor((o.width-s.width)/2),s.y=o.height-s.height;break;case"lb":case"left-bottom":s.x=0,s.y=o.height-s.height;break;case"lt":case"left-top":s.x=0,s.y=0;break;case"ct":case"center-top":s.x=Math.floor((o.width-s.width)/2),s.y=0;break;case"rt":case"right-top":s.x=o.width-s.width,s.y=0;break;case"rc":case"right-center":case"right-middle":s.x=o.width-s.width,s.y=Math.floor((o.height-s.height)/2);break;case"lc":case"left-center":case"left-middle":s.x=0,s.y=Math.floor((o.height-s.height)/2);break;case"cc":case"center-center":case"center-middle":default:s.x=Math.floor((o.width-s.width)/2),s.y=Math.floor((o.height-s.height)/2)}s.x=Math.max(s.x,0),s.y=Math.max(s.y,0)}else r=Math.min(a.width/o.width,a.height/o.height);this.exec("Image","resize",s,r,a)}catch(u){o.trigger("error",u.code)}},downsize:function(t){var i,n={width:this.width,height:this.height,type:this.type||"image/jpeg",quality:90,crop:!1,preserveHeaders:!0,resample:"default"};i="object"==typeof t?e.extend(n,t):e.extend(n,{width:arguments[0],height:arguments[1],crop:arguments[2],preserveHeaders:arguments[3]}),this.resize(i)},crop:function(e,t,i){this.downsize(e,t,!0,i)},getAsCanvas:function(){if(!l.can("create_canvas"))throw new i.RuntimeError(i.RuntimeError.NOT_SUPPORTED_ERR);var e=this.connectRuntime(this.ruid);return e.exec.call(this,"Image","getAsCanvas")},getAsBlob:function(e,t){if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);return this.exec("Image","getAsBlob",e||"image/jpeg",t||90)},getAsDataURL:function(e,t){if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);return this.exec("Image","getAsDataURL",e||"image/jpeg",t||90)},getAsBinaryString:function(e,t){var i=this.getAsDataURL(e,t);return p.atob(i.substring(i.indexOf("base64,")+7))},embed:function(n,r){function o(t,r){var o=this;if(l.can("create_canvas")){var c=o.getAsCanvas();if(c)return n.appendChild(c),c=null,o.destroy(),void u.trigger("embedded")}var d=o.getAsDataURL(t,r);if(!d)throw new i.ImageError(i.ImageError.WRONG_FORMAT);if(l.can("use_data_uri_of",d.length))n.innerHTML='',o.destroy(),u.trigger("embedded");else{var f=new a;f.bind("TransportingComplete",function(){s=u.connectRuntime(this.result.ruid),u.bind("Embedded",function(){e.extend(s.getShimContainer().style,{top:"0px",left:"0px",width:o.width+"px",height:o.height+"px"}),s=null},999),s.exec.call(u,"ImageView","display",this.result.uid,width,height),o.destroy()}),f.transport(p.atob(d.substring(d.indexOf("base64,")+7)),t,{required_caps:{display_media:!0},runtime_order:"flash,silverlight",container:n})}}var s,u=this,c=e.extend({width:this.width,height:this.height,type:this.type||"image/jpeg",quality:90},r);try{if(!(n=t.get(n)))throw new i.DOMException(i.DOMException.INVALID_NODE_TYPE_ERR);if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);this.width>f.MAX_RESIZE_WIDTH||this.height>f.MAX_RESIZE_HEIGHT;var d=new f;return d.bind("Resize",function(){o.call(this,c.type,c.quality)}),d.bind("Load",function(){d.downsize(c)}),this.meta.thumb&&this.meta.thumb.width>=c.width&&this.meta.thumb.height>=c.height?d.load(this.meta.thumb.data):d.clone(this,!1),d}catch(m){this.trigger("error",m.code)}},destroy:function(){this.ruid&&(this.getRuntime().exec.call(this,"Image","destroy"),this.disconnectRuntime()),this.unbindAll()}}),this.handleEventProps(m),this.bind("Load Resize",function(){return n.call(this)},999)}var m=["progress","load","error","resize","embedded"];return f.MAX_RESIZE_WIDTH=8192,f.MAX_RESIZE_HEIGHT=8192,f.prototype=u.instance,f}),n("moxie/runtime/html5/Runtime",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/Runtime","moxie/core/utils/Env"],function(e,t,i,n){function o(t){var o=this,l=i.capTest,u=i.capTrue,c=e.extend({access_binary:l(window.FileReader||window.File&&window.File.getAsDataURL),access_image_binary:function(){return o.can("access_binary")&&!!a.Image},display_media:l((n.can("create_canvas")||n.can("use_data_uri_over32kb"))&&r("moxie/image/Image")),do_cors:l(window.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest),drag_and_drop:l(function(){var e=document.createElement("div");return("draggable"in e||"ondragstart"in e&&"ondrop"in e)&&("IE"!==n.browser||n.verComp(n.version,9,">"))}()),filter_by_extension:l(function(){return!("Chrome"===n.browser&&n.verComp(n.version,28,"<")||"IE"===n.browser&&n.verComp(n.version,10,"<")||"Safari"===n.browser&&n.verComp(n.version,7,"<")||"Firefox"===n.browser&&n.verComp(n.version,37,"<"))}()),return_response_headers:u,return_response_type:function(e){return!("json"!==e||!window.JSON)||n.can("return_response_type",e)},return_status_code:u,report_upload_progress:l(window.XMLHttpRequest&&(new XMLHttpRequest).upload),resize_image:function(){return o.can("access_binary")&&n.can("create_canvas")},select_file:function(){return n.can("use_fileinput")&&window.File},select_folder:function(){return o.can("select_file")&&("Chrome"===n.browser&&n.verComp(n.version,21,">=")||"Firefox"===n.browser&&n.verComp(n.version,42,">="))},select_multiple:function(){return!(!o.can("select_file")||"Safari"===n.browser&&"Windows"===n.os||"iOS"===n.os&&n.verComp(n.osVersion,"7.0.0",">")&&n.verComp(n.osVersion,"8.0.0","<"))},send_binary_string:l(window.XMLHttpRequest&&((new XMLHttpRequest).sendAsBinary||window.Uint8Array&&window.ArrayBuffer)),send_custom_headers:l(window.XMLHttpRequest),send_multipart:function(){return!!(window.XMLHttpRequest&&(new XMLHttpRequest).upload&&window.FormData)||o.can("send_binary_string")},slice_blob:l(window.File&&(File.prototype.mozSlice||File.prototype.webkitSlice||File.prototype.slice)),stream_upload:function(){return o.can("slice_blob")&&o.can("send_multipart")},summon_file_dialog:function(){return o.can("select_file")&&("Firefox"===n.browser&&n.verComp(n.version,4,">=")||"Opera"===n.browser&&n.verComp(n.version,12,">=")||"IE"===n.browser&&n.verComp(n.version,10,">=")||!!~e.inArray(n.browser,["Chrome","Safari","Edge"]))},upload_filesize:u,use_http_method:u},arguments[2]);i.call(this,t,arguments[1]||s,c),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(o),e=o=null}}(this.destroy)}),e.extend(this.getShim(),a)}var s="html5",a={};return i.addConstructor(s,o),a}),n("moxie/runtime/html5/file/Blob",["moxie/runtime/html5/Runtime","moxie/file/Blob"],function(e,t){function i(){function e(e,t,i){var n;if(!window.File.prototype.slice)return(n=window.File.prototype.webkitSlice||window.File.prototype.mozSlice)?n.call(e,t,i):null;try{return e.slice(),e.slice(t,i)}catch(r){return e.slice(t,i-t)}}this.slice=function(){return new t(this.getRuntime().uid,e.apply(this,arguments))}}return e.Blob=i}),n("moxie/core/utils/Events",["moxie/core/utils/Basic"],function(e){function t(){this.returnValue=!1}function i(){this.cancelBubble=!0}var n={},r="moxie_"+e.guid(),o=function(o,s,a,l){var u,c;s=s.toLowerCase(),o.addEventListener?(u=a,o.addEventListener(s,u,!1)):o.attachEvent&&(u=function(){var e=window.event;e.target||(e.target=e.srcElement),e.preventDefault=t,e.stopPropagation=i,a(e)},o.attachEvent("on"+s,u)),o[r]||(o[r]=e.guid()),n.hasOwnProperty(o[r])||(n[o[r]]={}),c=n[o[r]],c.hasOwnProperty(s)||(c[s]=[]),c[s].push({func:u,orig:a,key:l})},s=function(t,i,o){var s,a;if(i=i.toLowerCase(),t[r]&&n[t[r]]&&n[t[r]][i]){s=n[t[r]][i];for(var l=s.length-1;l>=0&&(s[l].orig!==o&&s[l].key!==o||(t.removeEventListener?t.removeEventListener(i,s[l].func,!1):t.detachEvent&&t.detachEvent("on"+i,s[l].func),s[l].orig=null,s[l].func=null,s.splice(l,1),o===a));l--);if(s.length||delete n[t[r]][i],e.isEmptyObj(n[t[r]])){delete n[t[r]];try{delete t[r]}catch(u){t[r]=a}}}},a=function(t,i){t&&t[r]&&e.each(n[t[r]],function(e,n){s(t,n,i)})};return{addEvent:o,removeEvent:s,removeAllEvents:a}}),n("moxie/runtime/html5/file/FileInput",["moxie/runtime/html5/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o,s){function a(){var e,a;i.extend(this,{init:function(l){var u,c,d,p,f,m,h=this,g=h.getRuntime();e=l,d=e.accept.mimes||o.extList2mimes(e.accept,g.can("filter_by_extension")),c=g.getShimContainer(),c.innerHTML='",u=n.get(g.uid),i.extend(u.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),p=n.get(e.browse_button),a=n.getStyle(p,"z-index")||"auto",g.can("summon_file_dialog")&&("static"===n.getStyle(p,"position")&&(p.style.position="relative"),r.addEvent(p,"click",function(e){var t=n.get(g.uid);t&&!t.disabled&&t.click(),e.preventDefault()},h.uid),h.bind("Refresh",function(){f=parseInt(a,10)||1,n.get(e.browse_button).style.zIndex=f,this.getRuntime().getShimContainer().style.zIndex=f-1})),m=g.can("summon_file_dialog")?p:c,r.addEvent(m,"mouseover",function(){h.trigger("mouseenter")},h.uid),r.addEvent(m,"mouseout",function(){h.trigger("mouseleave")},h.uid),r.addEvent(m,"mousedown",function(){h.trigger("mousedown")},h.uid),r.addEvent(n.get(e.container),"mouseup",function(){h.trigger("mouseup")},h.uid),u.onchange=function v(){if(h.files=[],i.each(this.files,function(i){var n="";return!(!e.directory||"."!=i.name)||(i.webkitRelativePath&&(n="/"+i.webkitRelativePath.replace(/^\//,"")),i=new t(g.uid,i),i.relativePath=n,void h.files.push(i))}),"IE"!==s.browser&&"IEMobile"!==s.browser)this.value="";else{var n=this.cloneNode(!0);this.parentNode.replaceChild(n,this),n.onchange=v}h.files.length&&h.trigger("change")},h.trigger({type:"ready",async:!0}),c=null},setOption:function(e,t){var i=this.getRuntime(),r=n.get(i.uid);switch(e){case"accept":if(t){var s=t.mimes||o.extList2mimes(t,i.can("filter_by_extension"));r.setAttribute("accept",s.join(","))}else r.removeAttribute("accept");break;case"directory":t&&i.can("select_folder")?(r.setAttribute("directory",""),r.setAttribute("webkitdirectory","")):(r.removeAttribute("directory"),r.removeAttribute("webkitdirectory"));break;case"multiple":t&&i.can("select_multiple")?r.setAttribute("multiple",""):r.removeAttribute("multiple")}},disable:function(e){var t,i=this.getRuntime();(t=n.get(i.uid))&&(t.disabled=!!e)},destroy:function(){var t=this.getRuntime(),i=t.getShim(),o=t.getShimContainer(),s=e&&n.get(e.container),l=e&&n.get(e.browse_button);s&&r.removeAllEvents(s,this.uid),l&&(r.removeAllEvents(l,this.uid),l.style.zIndex=a),o&&(r.removeAllEvents(o,this.uid),o.innerHTML=""),i.removeInstance(this.uid),e=o=s=l=i=null}})}return e.FileInput=a}),n("moxie/runtime/html5/file/FileDrop",["moxie/runtime/html5/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime"],function(e,t,i,n,r,o){function s(){function e(e){if(!e.dataTransfer||!e.dataTransfer.types)return!1;var t=i.toArray(e.dataTransfer.types||[]);return-1!==i.inArray("Files",t)||-1!==i.inArray("public.file-url",t)||-1!==i.inArray("application/x-moz-file",t)}function s(e,i){if(l(e)){var n=new t(m,e);n.relativePath=i||"",h.push(n)}}function a(e){for(var t=[],n=0;n=")&&l.verComp(l.version,7,"<"),m="Android Browser"===l.browser,h=!1; +if(f=i.url.replace(/^.+?\/([\w\-\.]+)$/,"$1").toLowerCase(),p=u(),p.open(i.method,i.url,i.async,i.user,i.password),r instanceof o)r.isDetached()&&(h=!0),r=r.getSource();else if(r instanceof s){if(r.hasBlob())if(r.getBlob().isDetached())r=d.call(a,r),h=!0;else if((c||m)&&"blob"===t.typeOf(r.getBlob().getSource())&&window.FileReader)return void e.call(a,i,r);if(r instanceof s){var g=new window.FormData;r.each(function(e,t){e instanceof o?g.append(t,e.getSource()):g.append(t,e)}),r=g}}p.upload?(i.withCredentials&&(p.withCredentials=!0),p.addEventListener("load",function(e){a.trigger(e)}),p.addEventListener("error",function(e){a.trigger(e)}),p.addEventListener("progress",function(e){a.trigger(e)}),p.upload.addEventListener("progress",function(e){a.trigger({type:"UploadProgress",loaded:e.loaded,total:e.total})})):p.onreadystatechange=function(){switch(p.readyState){case 1:break;case 2:break;case 3:var e,t;try{n.hasSameOrigin(i.url)&&(e=p.getResponseHeader("Content-Length")||0),p.responseText&&(t=p.responseText.length)}catch(r){e=t=0}a.trigger({type:"progress",lengthComputable:!!e,total:parseInt(e,10),loaded:t});break;case 4:p.onreadystatechange=function(){},0===p.status?a.trigger("error"):a.trigger("load")}},t.isEmptyObj(i.headers)||t.each(i.headers,function(e,t){p.setRequestHeader(t,e)}),""!==i.responseType&&"responseType"in p&&(p.responseType="json"!==i.responseType||l.can("return_response_type","json")?i.responseType:"text"),h?p.sendAsBinary?p.sendAsBinary(r):function(){for(var e=new Uint8Array(r.length),t=0;t0&&o.set(new Uint8Array(t.slice(0,e)),0),o.set(new Uint8Array(r),e),o.set(new Uint8Array(t.slice(e+n)),e+r.byteLength),this.clear(),t=o.buffer,i=new DataView(t);break}default:return t}},length:function(){return t?t.byteLength:0},clear:function(){i=t=null}})}function n(t){function i(e,i,n){n=3===arguments.length?n:t.length-i-1,t=t.substr(0,i)+e+t.substr(n+i)}e.extend(this,{readByteAt:function(e){return t.charCodeAt(e)},writeByteAt:function(e,t){i(String.fromCharCode(t),e,1)},SEGMENT:function(e,n,r){switch(arguments.length){case 1:return t.substr(e);case 2:return t.substr(e,n);case 3:i(null!==r?r:"",e,n);break;default:return t}},length:function(){return t?t.length:0},clear:function(){t=null}})}return e.extend(t.prototype,{littleEndian:!1,read:function(e,t){var i,n,r;if(e+t>this.length())throw new Error("You are trying to read outside the source boundaries.");for(n=this.littleEndian?0:-8*(t-1),r=0,i=0;t>r;r++)i|=this.readByteAt(e+r)<this.length())throw new Error("You are trying to write outside the source boundaries.");for(n=this.littleEndian?0:-8*(i-1),r=0;i>r;r++)this.writeByteAt(e+r,255&t>>Math.abs(n+8*r))},BYTE:function(e){return this.read(e,1)},SHORT:function(e){return this.read(e,2)},LONG:function(e){return this.read(e,4)},SLONG:function(e){var t=this.read(e,4);return t>2147483647?t-4294967296:t},CHAR:function(e){return String.fromCharCode(this.read(e,1))},STRING:function(e,t){return this.asArray("CHAR",e,t).join("")},asArray:function(e,t,i){for(var n=[],r=0;i>r;r++)n[r]=this[e](t+r);return n}}),t}),n("moxie/runtime/html5/image/JPEGHeaders",["moxie/runtime/html5/utils/BinaryReader","moxie/core/Exceptions"],function(e,t){return function i(n){var r,o,s,a=[],l=0;if(r=new e(n),65496!==r.SHORT(0))throw r.clear(),new t.ImageError(t.ImageError.WRONG_FORMAT);for(o=2;o<=r.length();)if(s=r.SHORT(o),s>=65488&&65495>=s)o+=2;else{if(65498===s||65497===s)break;l=r.SHORT(o+2)+2,s>=65505&&65519>=s&&a.push({hex:s,name:"APP"+(15&s),start:o,length:l,segment:r.SEGMENT(o,l)}),o+=l}return r.clear(),{headers:a,restore:function(t){var i,n,r;for(r=new e(t),o=65504==r.SHORT(2)?4+r.SHORT(4):2,n=0,i=a.length;i>n;n++)r.SEGMENT(o,0,a[n].segment),o+=a[n].length;return t=r.SEGMENT(),r.clear(),t},strip:function(t){var n,r,o,s;for(o=new i(t),r=o.headers,o.purge(),n=new e(t),s=r.length;s--;)n.SEGMENT(r[s].start,r[s].length,"");return t=n.SEGMENT(),n.clear(),t},get:function(e){for(var t=[],i=0,n=a.length;n>i;i++)a[i].name===e.toUpperCase()&&t.push(a[i].segment);return t},set:function(e,t){var i,n,r,o=[];for("string"==typeof t?o.push(t):o=t,i=n=0,r=a.length;r>i&&(a[i].name===e.toUpperCase()&&(a[i].segment=o[n],a[i].length=o[n].length,n++),!(n>=o.length));i++);},purge:function(){this.headers=a=[]}}}}),n("moxie/runtime/html5/image/ExifParser",["moxie/core/utils/Basic","moxie/runtime/html5/utils/BinaryReader","moxie/core/Exceptions"],function(e,i,n){function r(o){function s(i,r){var o,s,a,l,u,p,f,m,h=this,g=[],v={},x={1:"BYTE",7:"UNDEFINED",2:"ASCII",3:"SHORT",4:"LONG",5:"RATIONAL",9:"SLONG",10:"SRATIONAL"},y={BYTE:1,UNDEFINED:1,ASCII:1,SHORT:2,LONG:4,RATIONAL:8,SLONG:4,SRATIONAL:8};for(o=h.SHORT(i),s=0;o>s;s++)if(g=[],f=i+2+12*s,a=r[h.SHORT(f)],a!==t){if(l=x[h.SHORT(f+=2)],u=h.LONG(f+=2),p=y[l],!p)throw new n.ImageError(n.ImageError.INVALID_META_ERR);if(f+=4,p*u>4&&(f=h.LONG(f)+d.tiffHeader),f+p*u>=this.length())throw new n.ImageError(n.ImageError.INVALID_META_ERR);"ASCII"!==l?(g=h.asArray(l,f,u),m=1==u?g[0]:g,v[a]=c.hasOwnProperty(a)&&"object"!=typeof m?c[a][m]:m):v[a]=e.trim(h.STRING(f,u).replace(/\0$/,""))}return v}function a(e,t,i){var n,r,o,s=0;if("string"==typeof t){var a=u[e.toLowerCase()];for(var l in a)if(a[l]===t){t=l;break}}n=d[e.toLowerCase()+"IFD"],r=this.SHORT(n);for(var c=0;r>c;c++)if(o=n+12*c+2,this.SHORT(o)==t){s=o+8;break}if(!s)return!1;try{this.write(s,i,4)}catch(p){return!1}return!0}var l,u,c,d,p,f;if(i.call(this,o),u={tiff:{274:"Orientation",270:"ImageDescription",271:"Make",272:"Model",305:"Software",34665:"ExifIFDPointer",34853:"GPSInfoIFDPointer"},exif:{36864:"ExifVersion",40961:"ColorSpace",40962:"PixelXDimension",40963:"PixelYDimension",36867:"DateTimeOriginal",33434:"ExposureTime",33437:"FNumber",34855:"ISOSpeedRatings",37377:"ShutterSpeedValue",37378:"ApertureValue",37383:"MeteringMode",37384:"LightSource",37385:"Flash",37386:"FocalLength",41986:"ExposureMode",41987:"WhiteBalance",41990:"SceneCaptureType",41988:"DigitalZoomRatio",41992:"Contrast",41993:"Saturation",41994:"Sharpness"},gps:{0:"GPSVersionID",1:"GPSLatitudeRef",2:"GPSLatitude",3:"GPSLongitudeRef",4:"GPSLongitude"},thumb:{513:"JPEGInterchangeFormat",514:"JPEGInterchangeFormatLength"}},c={ColorSpace:{1:"sRGB",0:"Uncalibrated"},MeteringMode:{0:"Unknown",1:"Average",2:"CenterWeightedAverage",3:"Spot",4:"MultiSpot",5:"Pattern",6:"Partial",255:"Other"},LightSource:{1:"Daylight",2:"Fliorescent",3:"Tungsten",4:"Flash",9:"Fine weather",10:"Cloudy weather",11:"Shade",12:"Daylight fluorescent (D 5700 - 7100K)",13:"Day white fluorescent (N 4600 -5400K)",14:"Cool white fluorescent (W 3900 - 4500K)",15:"White fluorescent (WW 3200 - 3700K)",17:"Standard light A",18:"Standard light B",19:"Standard light C",20:"D55",21:"D65",22:"D75",23:"D50",24:"ISO studio tungsten",255:"Other"},Flash:{0:"Flash did not fire",1:"Flash fired",5:"Strobe return light not detected",7:"Strobe return light detected",9:"Flash fired, compulsory flash mode",13:"Flash fired, compulsory flash mode, return light not detected",15:"Flash fired, compulsory flash mode, return light detected",16:"Flash did not fire, compulsory flash mode",24:"Flash did not fire, auto mode",25:"Flash fired, auto mode",29:"Flash fired, auto mode, return light not detected",31:"Flash fired, auto mode, return light detected",32:"No flash function",65:"Flash fired, red-eye reduction mode",69:"Flash fired, red-eye reduction mode, return light not detected",71:"Flash fired, red-eye reduction mode, return light detected",73:"Flash fired, compulsory flash mode, red-eye reduction mode",77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",89:"Flash fired, auto mode, red-eye reduction mode",93:"Flash fired, auto mode, return light not detected, red-eye reduction mode",95:"Flash fired, auto mode, return light detected, red-eye reduction mode"},ExposureMode:{0:"Auto exposure",1:"Manual exposure",2:"Auto bracket"},WhiteBalance:{0:"Auto white balance",1:"Manual white balance"},SceneCaptureType:{0:"Standard",1:"Landscape",2:"Portrait",3:"Night scene"},Contrast:{0:"Normal",1:"Soft",2:"Hard"},Saturation:{0:"Normal",1:"Low saturation",2:"High saturation"},Sharpness:{0:"Normal",1:"Soft",2:"Hard"},GPSLatitudeRef:{N:"North latitude",S:"South latitude"},GPSLongitudeRef:{E:"East longitude",W:"West longitude"}},d={tiffHeader:10},p=d.tiffHeader,l={clear:this.clear},e.extend(this,{read:function(){try{return r.prototype.read.apply(this,arguments)}catch(e){throw new n.ImageError(n.ImageError.INVALID_META_ERR)}},write:function(){try{return r.prototype.write.apply(this,arguments)}catch(e){throw new n.ImageError(n.ImageError.INVALID_META_ERR)}},UNDEFINED:function(){return this.BYTE.apply(this,arguments)},RATIONAL:function(e){return this.LONG(e)/this.LONG(e+4)},SRATIONAL:function(e){return this.SLONG(e)/this.SLONG(e+4)},ASCII:function(e){return this.CHAR(e)},TIFF:function(){return f||null},EXIF:function(){var t=null;if(d.exifIFD){try{t=s.call(this,d.exifIFD,u.exif)}catch(i){return null}if(t.ExifVersion&&"array"===e.typeOf(t.ExifVersion)){for(var n=0,r="";n=65472&&65475>=t)return n+=5,{height:e.SHORT(n),width:e.SHORT(n+=2)};i=e.SHORT(n+=2),n+=i-2}return null}function a(){var e,t,i=d.thumb();return i&&(e=new n(i),t=s(e),e.clear(),t)?(t.data=i,t):null}function l(){d&&c&&u&&(d.clear(),c.purge(),u.clear(),p=c=d=u=null)}var u,c,d,p;if(u=new n(o),65496!==u.SHORT(0))throw new t.ImageError(t.ImageError.WRONG_FORMAT);c=new i(o);try{d=new r(c.get("app1")[0])}catch(f){}p=s.call(this),e.extend(this,{type:"image/jpeg",size:u.length(),width:p&&p.width||0,height:p&&p.height||0,setExif:function(t,i){return!!d&&("object"===e.typeOf(t)?e.each(t,function(e,t){d.setExif(t,e)}):d.setExif(t,i),void c.set("app1",d.SEGMENT()))},writeHeaders:function(){return arguments.length?c.restore(arguments[0]):c.restore(o)},stripHeaders:function(e){return c.strip(e)},purge:function(){l.call(this)}}),d&&(this.meta={tiff:d.TIFF(),exif:d.EXIF(),gps:d.GPS(),thumb:a()})}return o}),n("moxie/runtime/html5/image/PNG",["moxie/core/Exceptions","moxie/core/utils/Basic","moxie/runtime/html5/utils/BinaryReader"],function(e,t,i){function n(n){function r(){var e,t;return e=s.call(this,8),"IHDR"==e.type?(t=e.start,{width:a.LONG(t),height:a.LONG(t+=4)}):null}function o(){a&&(a.clear(),n=c=l=u=a=null)}function s(e){var t,i,n,r;return t=a.LONG(e),i=a.STRING(e+=4,4),n=e+=4,r=a.LONG(e+t),{length:t,type:i,start:n,CRC:r}}var a,l,u,c;a=new i(n),function(){var t=0,i=0,n=[35152,20039,3338,6666];for(i=0;in||n>2)&&(n=.5>n?.5:2,s=!0);var a=t(i,n);return s?e(a,o/a.width):a}function t(e,t){var i=e.width,n=e.height,r=Math.floor(i*t),o=Math.floor(n*t),s=document.createElement("canvas");return s.width=r,s.height=o,s.getContext("2d").drawImage(e,0,0,i,n,0,0,r,o),e=null,s}return{scale:e}}),n("moxie/runtime/html5/image/Image",["moxie/runtime/html5/Runtime","moxie/core/utils/Basic","moxie/core/Exceptions","moxie/core/utils/Encode","moxie/file/Blob","moxie/file/File","moxie/runtime/html5/image/ImageInfo","moxie/runtime/html5/image/ResizerCanvas","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o,s,a,l){function u(){function e(){if(!x&&!g)throw new i.ImageError(i.DOMException.INVALID_STATE_ERR);return x||g}function u(){var t=e();return"canvas"==t.nodeName.toLowerCase()?t:(x=document.createElement("canvas"),x.width=t.width,x.height=t.height,x.getContext("2d").drawImage(t,0,0),x)}function c(e){return n.atob(e.substring(e.indexOf("base64,")+7))}function d(e,t){return"data:"+(t||"")+";base64,"+n.btoa(e)}function p(e){var t=this;g=new Image,g.onerror=function(){h.call(this),t.trigger("error",i.ImageError.WRONG_FORMAT)},g.onload=function(){t.trigger("load")},g.src="data:"==e.substr(0,5)?e:d(e,E.type)}function f(e,t){var n,r=this;return window.FileReader?(n=new FileReader,n.onload=function(){t(this.result)},n.onerror=function(){r.trigger("error",i.ImageError.WRONG_FORMAT)},void n.readAsDataURL(e)):t(e.getAsDataURL())}function m(e,i){var n=Math.PI/180,r=document.createElement("canvas"),o=r.getContext("2d"),s=e.width,a=e.height;switch(t.inArray(i,[5,6,7,8])>-1?(r.width=a,r.height=s):(r.width=s,r.height=a),i){case 2:o.translate(s,0),o.scale(-1,1);break;case 3:o.translate(s,a),o.rotate(180*n);break;case 4:o.translate(0,a),o.scale(1,-1);break;case 5:o.rotate(90*n),o.scale(1,-1);break;case 6:o.rotate(90*n),o.translate(0,-a);break;case 7:o.rotate(90*n),o.translate(s,-a),o.scale(-1,1);break;case 8:o.rotate(-90*n),o.translate(-s,0)}return o.drawImage(e,0,0,s,a),r}function h(){v&&(v.purge(),v=null),y=g=x=E=null,b=!1}var g,v,x,y,E,w=this,b=!1,_=!0;t.extend(this,{loadFromBlob:function(e){var t=this,n=t.getRuntime(),r=!(arguments.length>1)||arguments[1];if(!n.can("access_binary"))throw new i.RuntimeError(i.RuntimeError.NOT_SUPPORTED_ERR);return E=e,e.isDetached()?(y=e.getSource(),void p.call(this,y)):void f.call(this,e.getSource(),function(e){r&&(y=c(e)),p.call(t,e)})},loadFromImage:function(e,t){this.meta=e.meta,E=new o(null,{name:e.name,size:e.size,type:e.type}),p.call(this,t?y=e.getAsBinaryString():e.getAsDataURL())},getInfo:function(){var t,i=this.getRuntime();return!v&&y&&i.can("access_image_binary")&&(v=new s(y)),t={width:e().width||0,height:e().height||0,type:E.type||l.getFileMime(E.name),size:y&&y.length||E.size||0,name:E.name||"",meta:null},_&&(t.meta=v&&v.meta||this.meta||{},!t.meta||!t.meta.thumb||t.meta.thumb.data instanceof r||(t.meta.thumb.data=new r(null,{type:"image/jpeg",data:t.meta.thumb.data}))),t},resize:function(t,i,n){var r=document.createElement("canvas");if(r.width=t.width,r.height=t.height,r.getContext("2d").drawImage(e(),t.x,t.y,t.width,t.height,0,0,r.width,r.height),x=a.scale(r,i),_=n.preserveHeaders,!_){var o=this.meta&&this.meta.tiff&&this.meta.tiff.Orientation||1;x=m(x,o)}this.width=x.width,this.height=x.height,b=!0,this.trigger("Resize")},getAsCanvas:function(){return x||(x=u()),x.id=this.uid+"_canvas",x},getAsBlob:function(e,t){return e!==this.type?(b=!0,new o(null,{name:E.name||"",type:e,data:w.getAsDataURL(e,t)})):new o(null,{name:E.name||"",type:e,data:w.getAsBinaryString(e,t)})},getAsDataURL:function(e){var t=arguments[1]||90;if(!b)return g.src;if(u(),"image/jpeg"!==e)return x.toDataURL("image/png");try{return x.toDataURL("image/jpeg",t/100)}catch(i){return x.toDataURL("image/jpeg")}},getAsBinaryString:function(e,t){if(!b)return y||(y=c(w.getAsDataURL(e,t))),y;if("image/jpeg"!==e)y=c(w.getAsDataURL(e,t));else{var i;t||(t=90),u();try{i=x.toDataURL("image/jpeg",t/100)}catch(n){i=x.toDataURL("image/jpeg")}y=c(i),v&&(y=v.stripHeaders(y),_&&(v.meta&&v.meta.exif&&v.setExif({PixelXDimension:this.width,PixelYDimension:this.height}),y=v.writeHeaders(y)),v.purge(),v=null)}return b=!1,y},destroy:function(){w=null,h.call(this),this.getRuntime().getShim().removeInstance(this.uid)}})}return e.Image=u}),n("moxie/runtime/flash/Runtime",["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/runtime/Runtime"],function(e,t,i,n,o){function s(){var e;try{e=navigator.plugins["Shockwave Flash"],e=e.description}catch(t){try{e=new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version")}catch(i){e="0.0"}}return e=e.match(/\d+/g),parseFloat(e[0]+"."+e[1])}function a(e){var n=i.get(e);n&&"OBJECT"==n.nodeName&&("IE"===t.browser?(n.style.display="none",function r(){4==n.readyState?l(e):setTimeout(r,10)}()):n.parentNode.removeChild(n))}function l(e){var t=i.get(e);if(t){for(var n in t)"function"==typeof t[n]&&(t[n]=null);t.parentNode.removeChild(t)}}function u(l){var u,p=this;l=e.extend({swf_url:t.swf_url},l),o.call(this,l,c,{access_binary:function(e){return e&&"browser"===p.mode},access_image_binary:function(e){return e&&"browser"===p.mode},display_media:o.capTest(r("moxie/image/Image")),do_cors:o.capTrue,drag_and_drop:!1,report_upload_progress:function(){return"client"===p.mode},resize_image:o.capTrue,return_response_headers:!1,return_response_type:function(t){return!("json"!==t||!window.JSON)||(!e.arrayDiff(t,["","text","document"])||"browser"===p.mode)},return_status_code:function(t){return"browser"===p.mode||!e.arrayDiff(t,[200,404])},select_file:o.capTrue,select_multiple:o.capTrue,send_binary_string:function(e){return e&&"browser"===p.mode},send_browser_cookies:function(e){return e&&"browser"===p.mode},send_custom_headers:function(e){return e&&"browser"===p.mode},send_multipart:o.capTrue,slice_blob:function(e){return e&&"browser"===p.mode},stream_upload:function(e){return e&&"browser"===p.mode},summon_file_dialog:!1,upload_filesize:function(t){return e.parseSizeStr(t)<=2097152||"client"===p.mode},use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}},{access_binary:function(e){return e?"browser":"client"},access_image_binary:function(e){return e?"browser":"client"},report_upload_progress:function(e){return e?"browser":"client"},return_response_type:function(t){return e.arrayDiff(t,["","text","json","document"])?"browser":["client","browser"]},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"browser":["client","browser"]},send_binary_string:function(e){return e?"browser":"client"},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"browser":"client"},slice_blob:function(e){return e?"browser":"client"},stream_upload:function(e){return e?"client":"browser"},upload_filesize:function(t){return e.parseSizeStr(t)>=2097152?"client":"browser"}},"client"),s()<11.3&&(this.mode=!1),e.extend(this,{getShim:function(){return i.get(this.uid)},shimExec:function(e,t){var i=[].slice.call(arguments,2);return p.getShim().exec(this.uid,e,t,i)},init:function(){var i,r,o;o=this.getShimContainer(),e.extend(o.style,{position:"absolute",top:"-8px",left:"-8px",width:"9px",height:"9px",overflow:"hidden"}),i='',"IE"===t.browser?(r=document.createElement("div"),o.appendChild(r),r.outerHTML=i,r=o=null):o.innerHTML=i,u=setTimeout(function(){p&&!p.initialized&&p.trigger("Error",new n.RuntimeError(n.RuntimeError.NOT_INIT_ERR))},5e3)},destroy:function(e){return function(){a(p.uid),e.call(p),clearTimeout(u),l=u=e=p=null}}(this.destroy)},d)}var c="flash",d={};return o.addConstructor(c,u),d}),n("moxie/runtime/flash/file/Blob",["moxie/runtime/flash/Runtime","moxie/file/Blob"],function(e,t){var i={slice:function(e,i,n,r){var o=this.getRuntime();return 0>i?i=Math.max(e.size+i,0):i>0&&(i=Math.min(i,e.size)),0>n?n=Math.max(e.size+n,0):n>0&&(n=Math.min(n,e.size)),e=o.shimExec.call(this,"Blob","slice",i,n,r||""),e&&(e=new t(o.uid,e)),e}};return e.Blob=i}),n("moxie/runtime/flash/file/FileInput",["moxie/runtime/flash/Runtime","moxie/file/File","moxie/core/utils/Basic"],function(e,t,i){var n={init:function(e){var n=this,r=this.getRuntime();this.bind("Change",function(){var e=r.shimExec.call(n,"FileInput","getFiles");n.files=[],i.each(e,function(e){n.files.push(new t(r.uid,e))})},999),this.getRuntime().shimExec.call(this,"FileInput","init",{accept:e.accept,multiple:e.multiple}),this.trigger("ready")}};return e.FileInput=n}),n("moxie/runtime/flash/file/FileReader",["moxie/runtime/flash/Runtime","moxie/core/utils/Encode"],function(e,t){function i(e,i){switch(i){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var n={read:function(e,t){var n=this;return n.result="","readAsDataURL"===e&&(n.result="data:"+(t.type||"")+";base64,"),n.bind("Progress",function(t,r){r&&(n.result+=i(r,e))},999),n.getRuntime().shimExec.call(this,"FileReader","readAsBase64",t.uid)}};return e.FileReader=n}),n("moxie/runtime/flash/file/FileReaderSync",["moxie/runtime/flash/Runtime","moxie/core/utils/Encode"],function(e,t){function i(e,i){switch(i){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var n={read:function(e,t){var n,r=this.getRuntime();return(n=r.shimExec.call(this,"FileReaderSync","readAsBase64",t.uid))?("readAsDataURL"===e&&(n="data:"+(t.type||"")+";base64,"+n),i(n,e,t.type)):null}};return e.FileReaderSync=n}),n("moxie/runtime/flash/runtime/Transporter",["moxie/runtime/flash/Runtime","moxie/file/Blob"],function(e,t){var i={getAsBlob:function(e){var i=this.getRuntime(),n=i.shimExec.call(this,"Transporter","getAsBlob",e);return n?new t(i.uid,n):null}};return e.Transporter=i}),n("moxie/runtime/flash/xhr/XMLHttpRequest",["moxie/runtime/flash/Runtime","moxie/core/utils/Basic","moxie/file/Blob","moxie/file/File","moxie/file/FileReaderSync","moxie/runtime/flash/file/FileReaderSync","moxie/xhr/FormData","moxie/runtime/Transporter","moxie/runtime/flash/runtime/Transporter"],function(e,t,i,n,r,o,s,a){var l={send:function(e,n){function r(){e.transport=c.mode,c.shimExec.call(u,"XMLHttpRequest","send",e,n)}function o(e,t){c.shimExec.call(u,"XMLHttpRequest","appendBlob",e,t.uid),n=null,r()}function l(e,t){var i=new a;i.bind("TransportingComplete",function(){t(this.result)}),i.transport(e.getSource(),e.type,{ruid:c.uid})}var u=this,c=u.getRuntime();if(t.isEmptyObj(e.headers)||t.each(e.headers,function(e,t){c.shimExec.call(u,"XMLHttpRequest","setRequestHeader",t,e.toString())}),n instanceof s){var d;if(n.each(function(e,t){e instanceof i?d=t:c.shimExec.call(u,"XMLHttpRequest","append",t,e)}),n.hasBlob()){var p=n.getBlob();p.isDetached()?l(p,function(e){p.destroy(),o(d,e)}):o(d,p)}else n=null,r()}else n instanceof i?n.isDetached()?l(n,function(e){n.destroy(),n=e.uid,r()}):(n=n.uid,r()):r()},getResponse:function(e){var i,o,s=this.getRuntime();if(o=s.shimExec.call(this,"XMLHttpRequest","getResponseAsBlob")){if(o=new n(s.uid,o),"blob"===e)return o;try{if(i=new r,~t.inArray(e,["","text"]))return i.readAsText(o);if("json"===e&&window.JSON)return JSON.parse(i.readAsText(o))}finally{o.destroy()}}return null},abort:function(){var e=this.getRuntime();e.shimExec.call(this,"XMLHttpRequest","abort"),this.dispatchEvent("readystatechange"),this.dispatchEvent("abort")}};return e.XMLHttpRequest=l}),n("moxie/runtime/flash/image/Image",["moxie/runtime/flash/Runtime","moxie/core/utils/Basic","moxie/runtime/Transporter","moxie/file/Blob","moxie/file/FileReaderSync"],function(e,t,i,n,r){var o={loadFromBlob:function(e){function t(e){r.shimExec.call(n,"Image","loadFromBlob",e.uid),n=r=null}var n=this,r=n.getRuntime();if(e.isDetached()){var o=new i;o.bind("TransportingComplete",function(){t(o.result.getSource())}),o.transport(e.getSource(),e.type,{ruid:r.uid})}else t(e.getSource())},loadFromImage:function(e){var t=this.getRuntime();return t.shimExec.call(this,"Image","loadFromImage",e.uid)},getInfo:function(){var e=this.getRuntime(),t=e.shimExec.call(this,"Image","getInfo");return!t.meta||!t.meta.thumb||t.meta.thumb.data instanceof n||(t.meta.thumb.data=new n(e.uid,t.meta.thumb.data)),t},getAsBlob:function(e,t){var i=this.getRuntime(),r=i.shimExec.call(this,"Image","getAsBlob",e,t);return r?new n(i.uid,r):null},getAsDataURL:function(){var e,t=this.getRuntime(),i=t.Image.getAsBlob.apply(this,arguments);return i?(e=new r,e.readAsDataURL(i)):null}};return e.Image=o}),n("moxie/runtime/silverlight/Runtime",["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/runtime/Runtime"],function(e,t,i,n,o){function s(e){var t,i,n,r,o,s=!1,a=null,l=0;try{try{a=new ActiveXObject("AgControl.AgControl"),a.IsVersionSupported(e)&&(s=!0),a=null}catch(u){var c=navigator.plugins["Silverlight Plug-In"];if(c){for(t=c.description,"1.0.30226.2"===t&&(t="2.0.30226.2"),i=t.split(".");i.length>3;)i.pop();for(;i.length<4;)i.push(0);for(n=e.split(".");n.length>4;)n.pop();do r=parseInt(n[l],10),o=parseInt(i[l],10),l++;while(l=r&&!isNaN(r)&&(s=!0)}}}catch(d){s=!1}return s}function a(a){var c,d=this;a=e.extend({xap_url:t.xap_url},a),o.call(this,a,l,{access_binary:o.capTrue,access_image_binary:o.capTrue,display_media:o.capTest(r("moxie/image/Image")),do_cors:o.capTrue,drag_and_drop:!1,report_upload_progress:o.capTrue,resize_image:o.capTrue,return_response_headers:function(e){return e&&"client"===d.mode},return_response_type:function(e){return"json"!==e||!!window.JSON},return_status_code:function(t){return"client"===d.mode||!e.arrayDiff(t,[200,404])},select_file:o.capTrue,select_multiple:o.capTrue,send_binary_string:o.capTrue,send_browser_cookies:function(e){return e&&"browser"===d.mode},send_custom_headers:function(e){return e&&"client"===d.mode},send_multipart:o.capTrue,slice_blob:o.capTrue,stream_upload:!0,summon_file_dialog:!1,upload_filesize:o.capTrue,use_http_method:function(t){return"client"===d.mode||!e.arrayDiff(t,["GET","POST"])}},{return_response_headers:function(e){return e?"client":"browser"},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"client":["client","browser"]},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"client":"browser"},use_http_method:function(t){return e.arrayDiff(t,["GET","POST"])?"client":["client","browser"]}}),s("2.0.31005.0")&&"Opera"!==t.browser||(this.mode=!1),e.extend(this,{getShim:function(){return i.get(this.uid).content.Moxie},shimExec:function(e,t){var i=[].slice.call(arguments,2);return d.getShim().exec(this.uid,e,t,i)},init:function(){var e;e=this.getShimContainer(),e.innerHTML='',c=setTimeout(function(){d&&!d.initialized&&d.trigger("Error",new n.RuntimeError(n.RuntimeError.NOT_INIT_ERR))},"Windows"!==t.OS?1e4:5e3)},destroy:function(e){return function(){e.call(d),clearTimeout(c),a=c=e=d=null}}(this.destroy)},u)}var l="silverlight",u={};return o.addConstructor(l,a),u}),n("moxie/runtime/silverlight/file/Blob",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/file/Blob"],function(e,t,i){return e.Blob=t.extend({},i)}),n("moxie/runtime/silverlight/file/FileInput",["moxie/runtime/silverlight/Runtime","moxie/file/File","moxie/core/utils/Basic"],function(e,t,i){function n(e){for(var t="",i=0;ii;i++)t=a.keys[i],s=a[t],s&&(/^(\d|[1-9]\d+)$/.test(s)?s=parseInt(s,10):/^\d*\.\d+$/.test(s)&&(s=parseFloat(s)),r.meta[e][t]=s)}),!r.meta||!r.meta.thumb||r.meta.thumb.data instanceof i||(r.meta.thumb.data=new i(e.uid,r.meta.thumb.data))),r.width=parseInt(o.width,10),r.height=parseInt(o.height,10),r.size=parseInt(o.size,10),r.type=o.type,r.name=o.name,r},resize:function(e,t,i){this.getRuntime().shimExec.call(this,"Image","resize",e.x,e.y,e.width,e.height,t,i.preserveHeaders,i.resample)}})}),n("moxie/runtime/html4/Runtime",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/Runtime","moxie/core/utils/Env"],function(e,t,i,n){function o(t){var o=this,l=i.capTest,u=i.capTrue;i.call(this,t,s,{access_binary:l(window.FileReader||window.File&&File.getAsDataURL),access_image_binary:!1,display_media:l((n.can("create_canvas")||n.can("use_data_uri_over32kb"))&&r("moxie/image/Image")),do_cors:!1,drag_and_drop:!1,filter_by_extension:l(function(){return!("Chrome"===n.browser&&n.verComp(n.version,28,"<")||"IE"===n.browser&&n.verComp(n.version,10,"<")||"Safari"===n.browser&&n.verComp(n.version,7,"<")||"Firefox"===n.browser&&n.verComp(n.version,37,"<"))}()),resize_image:function(){return a.Image&&o.can("access_binary")&&n.can("create_canvas")},report_upload_progress:!1,return_response_headers:!1,return_response_type:function(t){return!("json"!==t||!window.JSON)||!!~e.inArray(t,["text","document",""])},return_status_code:function(t){return!e.arrayDiff(t,[200,404])},select_file:function(){return n.can("use_fileinput")},select_multiple:!1,send_binary_string:!1,send_custom_headers:!1,send_multipart:!0,slice_blob:!1,stream_upload:function(){return o.can("select_file")},summon_file_dialog:function(){return o.can("select_file")&&("Firefox"===n.browser&&n.verComp(n.version,4,">=")||"Opera"===n.browser&&n.verComp(n.version,12,">=")||"IE"===n.browser&&n.verComp(n.version,10,">=")||!!~e.inArray(n.browser,["Chrome","Safari"]))},upload_filesize:u,use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}}),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(o),e=o=null}}(this.destroy)}),e.extend(this.getShim(),a)}var s="html4",a={};return i.addConstructor(s,o),a}),n("moxie/runtime/html4/file/FileInput",["moxie/runtime/html4/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o,s){function a(){function e(){var o,u,d,p,f,m,h=this,g=h.getRuntime();m=i.guid("uid_"),o=g.getShimContainer(),a&&(d=n.get(a+"_form"),d&&i.extend(d.style,{top:"100%"})),p=document.createElement("form"),p.setAttribute("id",m+"_form"),p.setAttribute("method","post"),p.setAttribute("enctype","multipart/form-data"),p.setAttribute("encoding","multipart/form-data"),i.extend(p.style,{overflow:"hidden",position:"absolute",top:0,left:0,width:"100%",height:"100%"}),f=document.createElement("input"),f.setAttribute("id",m),f.setAttribute("type","file"),f.setAttribute("accept",c.join(",")),i.extend(f.style,{fontSize:"999px",opacity:0}),p.appendChild(f),o.appendChild(p),i.extend(f.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),"IE"===s.browser&&s.verComp(s.version,10,"<")&&i.extend(f.style,{filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=0)"}),f.onchange=function(){var i;if(this.value){if(this.files){if(i=this.files[0],0===i.size)return void p.parentNode.removeChild(p)}else i={name:this.value};i=new t(g.uid,i),this.onchange=function(){},e.call(h),h.files=[i],f.setAttribute("id",i.uid),p.setAttribute("id",i.uid+"_form"),h.trigger("change"),f=p=null}},g.can("summon_file_dialog")&&(u=n.get(l.browse_button),r.removeEvent(u,"click",h.uid),r.addEvent(u,"click",function(e){f&&!f.disabled&&f.click(),e.preventDefault()},h.uid)),a=m,o=d=u=null}var a,l,u,c=[];i.extend(this,{init:function(t){var i,s=this,a=s.getRuntime();l=t,c=t.accept.mimes||o.extList2mimes(t.accept,a.can("filter_by_extension")),i=a.getShimContainer(),function(){var e,o,c;e=n.get(t.browse_button),u=n.getStyle(e,"z-index")||"auto",a.can("summon_file_dialog")&&("static"===n.getStyle(e,"position")&&(e.style.position="relative"),s.bind("Refresh",function(){o=parseInt(u,10)||1,n.get(l.browse_button).style.zIndex=o,this.getRuntime().getShimContainer().style.zIndex=o-1})),c=a.can("summon_file_dialog")?e:i,r.addEvent(c,"mouseover",function(){s.trigger("mouseenter")},s.uid),r.addEvent(c,"mouseout",function(){s.trigger("mouseleave")},s.uid),r.addEvent(c,"mousedown",function(){s.trigger("mousedown")},s.uid),r.addEvent(n.get(t.container),"mouseup",function(){s.trigger("mouseup")},s.uid),e=null}(),e.call(this),i=null,s.trigger({type:"ready",async:!0})},setOption:function(e,t){var i,r=this.getRuntime();"accept"==e&&(c=t.mimes||o.extList2mimes(t,r.can("filter_by_extension"))),i=n.get(a),i&&i.setAttribute("accept",c.join(","))},disable:function(e){var t;(t=n.get(a))&&(t.disabled=!!e)},destroy:function(){var e=this.getRuntime(),t=e.getShim(),i=e.getShimContainer(),o=l&&n.get(l.container),s=l&&n.get(l.browse_button);o&&r.removeAllEvents(o,this.uid),s&&(r.removeAllEvents(s,this.uid),s.style.zIndex=u),i&&(r.removeAllEvents(i,this.uid),i.innerHTML=""),t.removeInstance(this.uid),a=c=l=i=o=s=t=null}})}return e.FileInput=a}),n("moxie/runtime/html4/file/FileReader",["moxie/runtime/html4/Runtime","moxie/runtime/html5/file/FileReader"],function(e,t){return e.FileReader=t}),n("moxie/runtime/html4/xhr/XMLHttpRequest",["moxie/runtime/html4/Runtime","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Url","moxie/core/Exceptions","moxie/core/utils/Events","moxie/file/Blob","moxie/xhr/FormData"],function(e,t,i,n,r,o,s,a){function l(){function e(e){var t,n,r,s,a=this,l=!1;if(c){if(t=c.id.replace(/_iframe$/,""),n=i.get(t+"_form")){for(r=n.getElementsByTagName("input"),s=r.length;s--;)switch(r[s].getAttribute("type")){case"hidden":r[s].parentNode.removeChild(r[s]);break;case"file":l=!0}r=[],l||n.parentNode.removeChild(n),n=null}setTimeout(function(){o.removeEvent(c,"load",a.uid),c.parentNode&&c.parentNode.removeChild(c);var t=a.getRuntime().getShimContainer();t.children.length||t.parentNode.removeChild(t),t=c=null,e()},1)}}var l,u,c;t.extend(this,{send:function(d,p){function f(){var i=y.getShimContainer()||document.body,r=document.createElement("div");r.innerHTML='',c=r.firstChild,i.appendChild(c),o.addEvent(c,"load",function(){var i;try{i=c.contentWindow.document||c.contentDocument||window.frames[c.id].document,/^4(0[0-9]|1[0-7]|2[2346])\s/.test(i.title)?l=i.title.replace(/^(\d+).*$/,"$1"):(l=200,u=t.trim(i.body.innerHTML),x.trigger({type:"progress",loaded:u.length,total:u.length}),v&&x.trigger({type:"uploadprogress",loaded:v.size||1025,total:v.size||1025}))}catch(r){if(!n.hasSameOrigin(d.url))return void e.call(x,function(){x.trigger("error")});l=404}e.call(x,function(){x.trigger("load")})},x.uid)}var m,h,g,v,x=this,y=x.getRuntime();if(l=u=null,p instanceof a&&p.hasBlob()){if(v=p.getBlob(),m=v.uid,g=i.get(m),h=i.get(m+"_form"),!h)throw new r.DOMException(r.DOMException.NOT_FOUND_ERR)}else m=t.guid("uid_"),h=document.createElement("form"),h.setAttribute("id",m+"_form"),h.setAttribute("method",d.method),h.setAttribute("enctype","multipart/form-data"),h.setAttribute("encoding","multipart/form-data"),y.getShimContainer().appendChild(h);h.setAttribute("target",m+"_iframe"),p instanceof a&&p.each(function(e,i){if(e instanceof s)g&&g.setAttribute("name",i);else{var n=document.createElement("input");t.extend(n,{type:"hidden",name:i,value:e}),g?h.insertBefore(n,g):h.appendChild(n)}}),h.setAttribute("action",d.url),f(),h.submit(),x.trigger("loadstart")},getStatus:function(){return l},getResponse:function(e){if("json"===e&&"string"===t.typeOf(u)&&window.JSON)try{return JSON.parse(u.replace(/^\s*]*>/,"").replace(/<\/pre>\s*$/,""))}catch(i){return null}return u},abort:function(){var t=this;c&&c.contentWindow&&(c.contentWindow.stop?c.contentWindow.stop():c.contentWindow.document.execCommand?c.contentWindow.document.execCommand("Stop"):c.src="about:blank"),e.call(this,function(){t.dispatchEvent("abort")})}})}return e.XMLHttpRequest=l}),n("moxie/runtime/html4/image/Image",["moxie/runtime/html4/Runtime","moxie/runtime/html5/image/Image"],function(e,t){return e.Image=t}),s(["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Dom","moxie/core/EventTarget","moxie/runtime/Runtime","moxie/runtime/RuntimeClient","moxie/file/Blob","moxie/core/I18n","moxie/core/utils/Mime","moxie/file/FileInput","moxie/file/File","moxie/file/FileDrop","moxie/file/FileReader","moxie/core/utils/Url","moxie/runtime/RuntimeTarget","moxie/xhr/FormData","moxie/xhr/XMLHttpRequest","moxie/runtime/Transporter","moxie/image/Image","moxie/core/utils/Events","moxie/runtime/html5/image/ResizerCanvas"])}(this)}),!function(e,t){var i=function(){var e={};return t.apply(e,arguments),e.plupload};"function"==typeof define&&define.amd?define("plupload",["./moxie"],i):"object"==typeof module&&module.exports?module.exports=i(require("./moxie")):e.plupload=i(e.moxie)}(this||window,function(e){!function(e,t,i){function n(e){function t(e,t,i){var r={chunks:"slice_blob",jpgresize:"send_binary_string",pngresize:"send_binary_string",progress:"report_upload_progress",multi_selection:"select_multiple",dragdrop:"drag_and_drop",drop_element:"drag_and_drop",headers:"send_custom_headers",urlstream_upload:"send_binary_string",canSendBinary:"send_binary",triggerDialog:"summon_file_dialog"};r[e]?n[r[e]]=t:i||(n[e]=t)}var i=e.required_features,n={};return"string"==typeof i?l.each(i.split(/\s*,\s*/),function(e){t(e,!0)}):"object"==typeof i?l.each(i,function(e,i){t(i,e)}):i===!0&&(e.chunk_size>0&&(n.slice_blob=!0),l.isEmptyObj(e.resize)&&e.multipart||(n.send_binary_string=!0),l.each(e,function(e,i){t(i,!!e,!0)})),n}var r=window.setTimeout,o={},s=t.core.utils,a=t.runtime.Runtime,l={VERSION:"2.2.1",STOPPED:1,STARTED:2,QUEUED:1,UPLOADING:2,FAILED:4,DONE:5,GENERIC_ERROR:-100,HTTP_ERROR:-200,IO_ERROR:-300,SECURITY_ERROR:-400,INIT_ERROR:-500,FILE_SIZE_ERROR:-600,FILE_EXTENSION_ERROR:-601,FILE_DUPLICATE_ERROR:-602,IMAGE_FORMAT_ERROR:-700,MEMORY_ERROR:-701,IMAGE_DIMENSIONS_ERROR:-702,mimeTypes:s.Mime.mimes,ua:s.Env,typeOf:s.Basic.typeOf,extend:s.Basic.extend,guid:s.Basic.guid,getAll:function(e){var t,i=[];"array"!==l.typeOf(e)&&(e=[e]);for(var n=e.length;n--;)t=l.get(e[n]),t&&i.push(t);return i.length?i:null},get:s.Dom.get,each:s.Basic.each,getPos:s.Dom.getPos,getSize:s.Dom.getSize,xmlEncode:function(e){var t={"<":"lt",">":"gt","&":"amp",'"':"quot","'":"#39"},i=/[<>&\"\']/g;return e?(""+e).replace(i,function(e){return t[e]?"&"+t[e]+";":e}):e},toArray:s.Basic.toArray,inArray:s.Basic.inArray,inSeries:s.Basic.inSeries,addI18n:t.core.I18n.addI18n,translate:t.core.I18n.translate,sprintf:s.Basic.sprintf,isEmptyObj:s.Basic.isEmptyObj,hasClass:s.Dom.hasClass,addClass:s.Dom.addClass,removeClass:s.Dom.removeClass,getStyle:s.Dom.getStyle,addEvent:s.Events.addEvent,removeEvent:s.Events.removeEvent,removeAllEvents:s.Events.removeAllEvents,cleanName:function(e){var t,i;for(i=[/[\300-\306]/g,"A",/[\340-\346]/g,"a",/\307/g,"C",/\347/g,"c",/[\310-\313]/g,"E",/[\350-\353]/g,"e",/[\314-\317]/g,"I",/[\354-\357]/g,"i",/\321/g,"N",/\361/g,"n",/[\322-\330]/g,"O",/[\362-\370]/g,"o",/[\331-\334]/g,"U",/[\371-\374]/g,"u"],t=0;t0?"&":"?")+i),e},formatSize:function(e){function t(e,t){return Math.round(e*Math.pow(10,t))/Math.pow(10,t)}if(e===i||/\D/.test(e))return l.translate("N/A");var n=Math.pow(1024,4);return e>n?t(e/n,1)+" "+l.translate("tb"):e>(n/=1024)?t(e/n,1)+" "+l.translate("gb"):e>(n/=1024)?t(e/n,1)+" "+l.translate("mb"):e>1024?Math.round(e/1024)+" "+l.translate("kb"):e+" "+l.translate("b")},parseSize:s.Basic.parseSizeStr,predictRuntime:function(e,t){var i,n;return i=new l.Uploader(e),n=a.thatCan(i.getOption().required_features,t||e.runtimes),i.destroy(),n},addFileFilter:function(e,t){o[e]=t}};l.addFileFilter("mime_types",function(e,t,i){e.length&&!e.regexp.test(t.name)?(this.trigger("Error",{code:l.FILE_EXTENSION_ERROR,message:l.translate("File extension error."),file:t}),i(!1)):i(!0)}),l.addFileFilter("max_file_size",function(e,t,i){var n;e=l.parseSize(e),t.size!==n&&e&&t.size>e?(this.trigger("Error",{code:l.FILE_SIZE_ERROR,message:l.translate("File size error."),file:t}),i(!1)):i(!0)}),l.addFileFilter("prevent_duplicates",function(e,t,i){if(e)for(var n=this.files.length;n--;)if(t.name===this.files[n].name&&t.size===this.files[n].size)return this.trigger("Error",{code:l.FILE_DUPLICATE_ERROR,message:l.translate("Duplicate file error."),file:t}),void i(!1);i(!0)}),l.Uploader=function(e){function s(){var e,t,i=0;if(this.state==l.STARTED){for(t=0;t0?Math.ceil(100*(e.loaded/e.size)):100,c()}function c(){var e,t;for(T.reset(),e=0;e0?Math.ceil(100*(T.uploaded/D.length)):0:(T.bytesPerSec=Math.ceil(T.loaded/((+new Date-S||1)/1e3)),T.percent=T.size>0?Math.ceil(100*(T.loaded/T.size)):0)}function d(){var e=C[0]||N[0];return!!e&&e.getRuntime().uid}function p(e,t){if(e.ruid){var i=a.getInfo(e.ruid);if(i)return i.can(t)}return!1}function f(){this.bind("FilesAdded FilesRemoved",function(e){e.trigger("QueueChanged"),e.refresh()}),this.bind("CancelUpload",w),this.bind("BeforeUpload",v),this.bind("UploadFile",x),this.bind("UploadProgress",y),this.bind("StateChanged",E),this.bind("QueueChanged",c),this.bind("Error",_),this.bind("FileUploaded",b),this.bind("Destroy",R)}function m(e,i){var n=this,r=0,o=[],s={runtime_order:e.runtimes,required_caps:e.required_features,preferred_caps:F,swf_url:e.flash_swf_url,xap_url:e.silverlight_xap_url};l.each(e.runtimes.split(/\s*,\s*/),function(t){e[t]&&(s[t]=e[t])}),e.browse_button&&l.each(e.browse_button,function(i){o.push(function(o){var u=new t.file.FileInput(l.extend({},s,{accept:e.filters.mime_types,name:e.file_data_name,multiple:e.multi_selection,container:e.container,browse_button:i}));u.onready=function(){var e=a.getInfo(this.ruid);l.extend(n.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),multi_selection:e.can("select_multiple")}),r++,C.push(this),o()},u.onchange=function(){n.addFile(this.files)},u.bind("mouseenter mouseleave mousedown mouseup",function(t){M||(e.browse_button_hover&&("mouseenter"===t.type?l.addClass(i,e.browse_button_hover):"mouseleave"===t.type&&l.removeClass(i,e.browse_button_hover)),e.browse_button_active&&("mousedown"===t.type?l.addClass(i,e.browse_button_active):"mouseup"===t.type&&l.removeClass(i,e.browse_button_active)))}),u.bind("mousedown",function(){n.trigger("Browse")}),u.bind("error runtimeerror",function(){u=null,o()}),u.init()})}),e.drop_element&&l.each(e.drop_element,function(e){o.push(function(i){var o=new t.file.FileDrop(l.extend({},s,{drop_zone:e}));o.onready=function(){var e=a.getInfo(this.ruid);l.extend(n.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),dragdrop:e.can("drag_and_drop")}),r++,N.push(this),i()},o.ondrop=function(){n.addFile(this.files)},o.bind("error runtimeerror",function(){o=null,i()}),o.init()})}),l.inSeries(o,function(){"function"==typeof i&&i(r)})}function h(e,n,r){var o=new t.image.Image;try{o.onload=function(){return n.width>this.width&&n.height>this.height&&n.quality===i&&n.preserve_headers&&!n.crop?(this.destroy(),r(e)):void o.downsize(n.width,n.height,n.crop,n.preserve_headers)},o.onresize=function(){r(this.getAsBlob(e.type,n.quality)),this.destroy()},o.onerror=function(){r(e)},o.load(e)}catch(s){r(e)}}function g(e,i,r){function o(e,i,n){var r=I[e];switch(e){case"max_file_size":"max_file_size"===e&&(I.max_file_size=I.filters.max_file_size=i);break;case"chunk_size":(i=l.parseSize(i))&&(I[e]=i,I.send_file_name=!0);break;case"multipart":I[e]=i,i||(I.send_file_name=!0);break;case"unique_names":I[e]=i,i&&(I.send_file_name=!0);break;case"filters":"array"===l.typeOf(i)&&(i={mime_types:i}),n?l.extend(I.filters,i):I.filters=i,i.mime_types&&("string"===l.typeOf(i.mime_types)&&(i.mime_types=t.core.utils.Mime.mimes2extList(i.mime_types)),i.mime_types.regexp=function(e){var t=[];return l.each(e,function(e){l.each(e.extensions.split(/,/),function(e){/^\s*\*\s*$/.test(e)?t.push("\\.*"):t.push("\\."+e.replace(new RegExp("["+"/^$.*+?|()[]{}\\".replace(/./g,"\\$&")+"]","g"),"\\$&"))})}),new RegExp("("+t.join("|")+")$","i")}(i.mime_types),I.filters.mime_types=i.mime_types);break;case"resize":I.resize=!!i&&l.extend({preserve_headers:!0,crop:!1},i);break;case"prevent_duplicates":I.prevent_duplicates=I.filters.prevent_duplicates=!!i;break;case"container":case"browse_button":case"drop_element":i="container"===e?l.get(i):l.getAll(i);case"runtimes":case"multi_selection":case"flash_swf_url":case"silverlight_xap_url":I[e]=i,n||(u=!0);break;default:I[e]=i}n||s.trigger("OptionChanged",e,i,r)}var s=this,u=!1;"object"==typeof e?l.each(e,function(e,t){o(t,e,r)}):o(e,i,r),r?(I.required_features=n(l.extend({},I)),F=n(l.extend({},I,{required_features:!0}))):u&&(s.trigger("Destroy"),m.call(s,I,function(e){e?(s.runtime=a.getInfo(d()).type,s.trigger("Init",{runtime:s.runtime}),s.trigger("PostInit")):s.trigger("Error",{code:l.INIT_ERROR,message:l.translate("Init error.")})}))}function v(e,t){if(e.settings.unique_names){var i=t.name.match(/\.([^.]+)$/),n="part";i&&(n=i[1]),t.target_name=t.id+"."+n}}function x(e,i){function n(){c-- >0?r(o,1e3):(i.loaded=f,e.trigger("Error",{code:l.HTTP_ERROR,message:l.translate("HTTP Error."),file:i,response:A.responseText,status:A.status,responseHeaders:A.getAllResponseHeaders()}))}function o(){var p,m,h,g={};i.status===l.UPLOADING&&e.state!==l.STOPPED&&(e.settings.send_file_name&&(g.name=i.target_name||i.name),u&&d.chunks&&s.size>u?(h=Math.min(u,s.size-f),p=s.slice(f,f+h)):(h=s.size,p=s),u&&d.chunks&&(e.settings.send_chunk_number?(g.chunk=Math.ceil(f/u),g.chunks=Math.ceil(s.size/u)):(g.offset=f,g.total=s.size)),A=new t.xhr.XMLHttpRequest,A.upload&&(A.upload.onprogress=function(t){i.loaded=Math.min(i.size,f+t.loaded),e.trigger("UploadProgress",i)}),A.onload=function(){return A.status>=400?void n():(c=e.settings.max_retries,h=s.size?(i.size!=i.origSize&&(s.destroy(),s=null),e.trigger("UploadProgress",i),i.status=l.DONE,e.trigger("FileUploaded",i,{response:A.responseText,status:A.status,responseHeaders:A.getAllResponseHeaders()})):r(o,1)))},A.onerror=function(){n()},A.onloadend=function(){this.destroy(),A=null},e.settings.multipart&&d.multipart?(A.open("post",a,!0),l.each(e.settings.headers,function(e,t){A.setRequestHeader(t,e)}),m=new t.xhr.FormData,l.each(l.extend(g,e.settings.multipart_params),function(e,t){m.append(t,e)}),m.append(e.settings.file_data_name,p),A.send(m,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:F,swf_url:e.settings.flash_swf_url,xap_url:e.settings.silverlight_xap_url})):(a=l.buildUrl(e.settings.url,l.extend(g,e.settings.multipart_params)),A.open("post",a,!0),l.each(e.settings.headers,function(e,t){A.setRequestHeader(t,e)}),A.hasRequestHeader("Content-Type")||A.setRequestHeader("Content-Type","application/octet-stream"),A.send(p,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:F,swf_url:e.settings.flash_swf_url,xap_url:e.settings.silverlight_xap_url})))}var s,a=e.settings.url,u=e.settings.chunk_size,c=e.settings.max_retries,d=e.features,f=0;i.loaded&&(f=i.loaded=u?u*Math.floor(i.loaded/u):0),s=i.getSource(),!l.isEmptyObj(e.settings.resize)&&p(s,"send_binary_string")&&-1!==l.inArray(s.type,["image/jpeg","image/png"])?h.call(this,s,e.settings.resize,function(e){s=e,i.size=e.size,o()}):o()}function y(e,t){u(t)}function E(e){if(e.state==l.STARTED)S=+new Date;else if(e.state==l.STOPPED)for(var t=e.files.length-1;t>=0;t--)e.files[t].status==l.UPLOADING&&(e.files[t].status=l.QUEUED,c())}function w(){A&&A.abort()}function b(e){c(),r(function(){s.call(e)},1)}function _(e,t){t.code===l.INIT_ERROR?e.destroy():t.code===l.HTTP_ERROR&&(t.file.status=l.FAILED,u(t.file),e.state==l.STARTED&&(e.trigger("CancelUpload"),r(function(){s.call(e)},1)))}function R(e){e.stop(),l.each(D,function(e){e.destroy()}),D=[],C.length&&(l.each(C,function(e){e.destroy()}),C=[]),N.length&&(l.each(N,function(e){e.destroy()}),N=[]),F={},M=!1,S=A=null,T.reset()}var I,S,T,A,O=l.guid(),D=[],F={},C=[],N=[],M=!1;I={runtimes:a.order,max_retries:0,chunk_size:0,multipart:!0,multi_selection:!0,file_data_name:"file",flash_swf_url:"js/Moxie.swf",silverlight_xap_url:"js/Moxie.xap",filters:{mime_types:[],prevent_duplicates:!1,max_file_size:0},resize:!1,send_file_name:!0,send_chunk_number:!0},g.call(this,e,null,!0),T=new l.QueueProgress,l.extend(this,{id:O,uid:O,state:l.STOPPED,features:{},runtime:null,files:D,settings:I,total:T,init:function(){var e,t,i=this;return e=i.getOption("preinit"),"function"==typeof e?e(i):l.each(e,function(e,t){i.bind(t,e)}),f.call(i),l.each(["container","browse_button","drop_element"],function(e){return null===i.getOption(e)?(t={code:l.INIT_ERROR,message:l.sprintf(l.translate("%s specified, but cannot be found."),e)},!1):void 0}),t?i.trigger("Error",t):I.browse_button||I.drop_element?void m.call(i,I,function(e){var t=i.getOption("init");"function"==typeof t?t(i):l.each(t,function(e,t){i.bind(t,e)}),e?(i.runtime=a.getInfo(d()).type,i.trigger("Init",{runtime:i.runtime}),i.trigger("PostInit")):i.trigger("Error",{code:l.INIT_ERROR,message:l.translate("Init error.")})}):i.trigger("Error",{code:l.INIT_ERROR,message:l.translate("You must specify either browse_button or drop_element.")})},setOption:function(e,t){g.call(this,e,t,!this.runtime)},getOption:function(e){return e?I[e]:I},refresh:function(){C.length&&l.each(C,function(e){e.trigger("Refresh")}),this.trigger("Refresh")},start:function(){this.state!=l.STARTED&&(this.state=l.STARTED,this.trigger("StateChanged"),s.call(this))},stop:function(){this.state!=l.STOPPED&&(this.state=l.STOPPED,this.trigger("StateChanged"),this.trigger("CancelUpload"))},disableBrowse:function(){M=arguments[0]===i||arguments[0],C.length&&l.each(C,function(e){e.disable(M)}),this.trigger("DisableBrowse",M)},getFile:function(e){var t;for(t=D.length-1;t>=0;t--)if(D[t].id===e)return D[t]},addFile:function(e,i){function n(e,t){var i=[];l.each(u.settings.filters,function(t,n){o[n]&&i.push(function(i){o[n].call(u,t,e,function(e){i(!e)})})}),l.inSeries(i,t)}function s(e){var o=l.typeOf(e);if(e instanceof t.file.File){if(!e.ruid&&!e.isDetached()){if(!a)return!1;e.ruid=a,e.connectRuntime(a)}s(new l.File(e))}else e instanceof t.file.Blob?(s(e.getSource()),e.destroy()):e instanceof l.File?(i&&(e.name=i),c.push(function(t){n(e,function(i){i||(D.push(e),p.push(e),u.trigger("FileFiltered",e)),r(t,1)})})):-1!==l.inArray(o,["file","blob"])?s(new t.file.File(null,e)):"node"===o&&"filelist"===l.typeOf(e.files)?l.each(e.files,s):"array"===o&&(i=null,l.each(e,s))}var a,u=this,c=[],p=[];a=d(),s(e),c.length&&l.inSeries(c,function(){p.length&&u.trigger("FilesAdded",p)})},removeFile:function(e){for(var t="string"==typeof e?e:e.id,i=D.length-1;i>=0;i--)if(D[i].id===t)return this.splice(i,1)[0]},splice:function(e,t){var n=D.splice(e===i?0:e,t===i?D.length:t),r=!1;return this.state==l.STARTED&&(l.each(n,function(e){return e.status===l.UPLOADING?(r=!0,!1):void 0}),r&&this.stop()),this.trigger("FilesRemoved",n),l.each(n,function(e){e.destroy()}),r&&this.start(),n},dispatchEvent:function(e){var t,i;if(e=e.toLowerCase(),t=this.hasEventListener(e)){t.sort(function(e,t){return t.priority-e.priority}),i=[].slice.call(arguments),i.shift(),i.unshift(this);for(var n=0;n
            ',l={rename:!0,renameByClick:!0,dropPlaceholder:!0,previewImageIcon:!0,sendFileName:!0,sendFileId:!0,responseHandler:!0,uploadedMessage:!0,drop_element:"self",browse_button:"hidden",filters:{prevent_duplicates:!0},chunk_size:"1mb",max_retries:3,flash_swf_url:"lib/uploader/Moxie.swf",silverlight_xap_url:"lib/uploader/Moxie.xap"},u={QUEUED:i.QUEUED,UPLOADING:i.UPLOADING,FAILED:i.FAILED,DONE:i.DONE,STOPPED:i.STOPPED,STARTED:i.STARTED};u[i.QUEUED]="queue",u[i.UPLOADING]="uploading",u[i.FAILED]="failed",u[i.DONE]="done";var c={GENERIC_ERROR:i.GENERIC_ERROR,HTTP_ERROR:i.HTTP_ERROR,IO_ERROR:i.IO_ERROR,SECURITY_ERROR:i.SECURITY_ERROR,INIT_ERROR:i.INIT_ERROR,FILE_SIZE_ERROR:i.FILE_SIZE_ERROR,FILE_EXTENSION_ERROR:i.FILE_EXTENSION_ERROR,FILE_DUPLICATE_ERROR:i.FILE_DUPLICATE_ERROR,IMAGE_FORMAT_ERROR:i.IMAGE_FORMAT_ERROR,IMAGE_MEMORY_ERROR:i.IMAGE_MEMORY_ERROR,IMAGE_DIMENSIONS_ERROR:i.IMAGE_DIMENSIONS_ERROR},d=function(n,l){var u=this;u.name=s,u.$=e(n).addClass("uploader"),l=u.getOptions(l);var c=e.isPlainObject(l.lang)?e.extend(!0,{},d.LANG[c.lang||e.zui.clientLang()],l.lang):d.LANG[l.lang];u.lang=c;var p,f=u.$,m=l.fileList;p=m&&"large"!=m&&"grid"!=m?0===m.indexOf(">")?f.find(m.substr(1)):e(m):f.find(".file-list,.uploader-files"),p&&p.length||(p=e('
            ')),p.parent().length||f.append(p),"large"==m?p.addClass("file-list-lg"):"grid"==m&&p.addClass("file-list-grid"),p.children(".file").addClass("file-static"),u.$list=p,(l.browseByClickList||p.hasClass("uploader-btn-browse"))&&p.addClass("uploader-btn-browse").on("click",".file-wrapper > .actions,.file-renaming .file-name",function(e){e.stopPropagation()});var h=l.fileTemplate;if(!h){var g=p.find(".template");g.length&&(h=g.first().clone().removeClass("template"),g.remove()),h||(h=a)}"string"==typeof h&&(h=e(h),h.parent()&&(h=h.clone().removeClass("template"))),u.template=h;var v=l.browse_button,x=null;v&&(0===v.indexOf(">")?x=f.find(v.substr(1)):"hidden"!==v&&(x=e(v))),x&&x.length||(x=e('
            ').appendTo(f)),u.$button=x.first();var y=l.drop_element,E=("fileList"==y?u.$list:"self"==y?u.$:e(y)).first().addClass("file-drag-area");if(o)E.attr("data-drop-placeholder","");else{var w=l.dropPlaceholder;w===!0&&(w=c.dropPlaceholder),w&&E.attr("data-drop-placeholder",w)}u.$dropElement=E,u.$message=f.find(".uploader-message").on("click",".close",function(){u.hideMessage()}),u.$status=f.find(".uploader-status"),f.toggleClass("uploader-rename",!!l.rename),u.initPlupload(),f.on("click."+s,".uploader-btn-start",function(e){u.start()}).on("click."+s,".uploader-btn-browse",function(t){e(this).is(u.$button)||u.$button.trigger("click")}).on("click."+s,".uploader-btn-stop",function(e){u.stop()}),e("body").on("dragleave."+s+" drop."+s,function(e){f.removeClass("file-dragable"),e.preventDefault(),e.stopPropagation()}).on("dragover."+s+" dragenter."+s,function(e){f.addClass("file-dragable")}),E.on("dragleave."+s+" drop."+s,function(e){f.removeClass("file-drag-enter")}).on("dragover."+s+" dragenter."+s,function(e){f.addClass("file-drag-enter")}),p.on("click."+s,".btn-delete-file",function(){var n=e(this).closest(".file"),r=n.data("file"),o=l.deleteActionOnDone,s=r.status===i.DONE&&e.isFunction(o);if(r.status===i.QUEUED||r.status===i.FAILED||s){var a=function(){u.removeFile(r)},d=function(){if(s){var e=o.call(u,r,a);e===!0&&a()}else a()},p=l.deleteConfirm;if(p){var f=e.isFunction(p)?p(r):p===!0?c.deleteConfirm:p;f=f.format(r),t.bootbox?t.bootbox.confirm(f,function(e){e&&d()}):t.confirm(f)&&d()}else d()}}).on("click."+s,".btn-reset-file",function(){var t=e(this).closest(".file"),n=u.plupload.getFile(t.data("id"))||t.data("file");n.status===i.FAILED&&(n.status=i.QUEUED,u.showFile(n),l.autoUpload&&u.start())}),l.rename&&(p.toggleClass("file-rename-by-click",!!l.renameByClick).toggleClass("file-show-rename-action-on-done",!!l.renameActionOnDone),p.on("click."+s,".btn-rename-file"+(l.renameByClick?",.file-name":""),function(){var t=e(this).closest(".file"); +if(!t.hasClass("file-renaming")){var n=u.plupload.getFile(t.data("id"))||t.data("file"),o=l.renameActionOnDone,a=n.status===i.DONE&&e.isFunction(o);if(a||n.status===i.QUEUED){var c=t.find(".file-name").first();t.addClass("file-renaming"),u.showFile(n),!l.renameExtension&&n.ext&&c.text(n.name.substr(0,n.name.length-n.ext.length-1)),c.attr("contenteditable","true").one("blur",function(){var i=e.trim(c.text()),d=function(){if(i!==r&&null!==i&&""!==i){var e=n.ext;e.length&&!l.renameExtension&&i.lastIndexOf("."+e)!==i.length-e.length-1&&(i+="."+e),n.name=i}u.showFile(n)};if(a){var p=o.call(u,n,i,d);p===!0?d():p===!1&&u.showFile(n)}else d();t.removeClass("file-renaming"),c.off("keydown."+s).attr("contenteditable",null)}).on("keydown."+s,function(e){13===e.keyCode&&(c.blur(),e.preventDefault())}).focus()}}})),p.toggleClass("file-show-delete-action-on-done",!!l.deleteActionOnDone),u.staticFilesSize=0,u.staticFilesCount=0,l.staticFiles&&e.each(l.staticFiles,function(t,n){n=e.extend({status:i.DONE},n),n["static"]=!0,n.id||(n.id=e.zui.uuid()),u.showFile(n),n.size&&(u.staticFilesSize+=n.size,u.staticFilesCount++)}),u.callEvent("onInit")};d.DEFAULTS=l,d.prototype.showMessage=function(e,t,i){var n=this,o=n.$message;e?clearTimeout(n.lastDismissMessage):n.hideMessage(),t=t||"danger",i===r&&(i="danger"===t?8:5),i<20&&(i*=1e3);var s=o.find(".content");s.length?s.empty().append(e):o.empty().append(e),o.attr("data-type",t).slideDown("fast"),i&&(n.lastDismissMessage=setTimeout(function(){n.hideMessage()},i))},d.prototype.hideMessage=function(){clearTimeout(this.lastDismissMessage),this.$message.slideUp("fast")},d.prototype.start=function(){return this.plupload.start()},d.prototype.stop=function(){return this.plupload.stop()},d.prototype.getState=function(){return this.plupload.state},d.prototype.isStarted=function(){return this.getState()===i.STARTED},d.prototype.isStopped=function(){return this.getState()===i.STOPPED},d.prototype.getFiles=function(){return this.plupload.files},d.prototype.getTotal=function(){return this.plupload.total},d.prototype.disableBrowse=function(e){return this.$.find(".uploader-btn-browse").attr("disable",e?"disable":null).toggle("disable",!!e),this.plupload.disableBrowse()},d.prototype.getFile=function(e){return this.plupload.getFile(e)},d.prototype.destroy=function(){var t=this,i="."+s;t.$.off(i).data(s,null),t.$list.off(i),t.$dropElement.off(i),e("body").off(i),t.plupload.destroy()},d.prototype.previewImageSrc=function(t,i){if(t&&t.getSource&&/image\//.test(t.type)){var r=e.extend({width:200,height:200},this.options.previewImageSize);if("image/gif"==t.type){var o=new n.file.FileReader;o.onload=function(){i(o.result),o.destroy(),o=null},o.readAsDataURL(t.getSource())}else{var s=new n.image.Image;s.onload=function(){s.downsize(r.width,r.height);var e="image/jpeg"==s.type?s.getAsDataURL("image/jpeg",80):s.getAsDataURL();i(e),s.destroy(),s=null},s.load(t.getSource())}}},d.prototype.createFileIcon=function(e){var t=e.type,i=e.ext,n="file-o",r=t?t.split("/"):null,o=r&&r.length?r[0]:"",s=(r&&r.length)>1?r[1]:"";return"image"==o?n="file-image":"doc"==i||"docx"==i||"pages"==i?n="file-word":"ppt"==i||"pptx"==i||"key"==i?n="file-powerpoint":"xls"==i||"xlsx"==i||"numbers"==i?n="file-excel":"html"==i||"htm"==i?n="globe":"js"==i||"php"==i||"cs"==i||"jsx"==i||"css"==i||"less"==i||"json"==i||"java"==i||"lua"==i||"py"==i||"c"==i||"cpp"==i||"swift"==i||"h"==i||"sh"==i||"rb"==i||"yml"==i||"ini"==i||"sql"==i||"xml"==i?n="file-code":"apk"==i?n="android":"exe"==i?n="windows":"pkg"==i||"msi"==i||"dmg"==i?n="cube":"epub"==i?n="book":"sketch"==i?n="diamond":"zip"==s||"x-rar"==s||"x-7z-compressed"==s?n="file-archive":"pdf"==s?n="file-pdf":"video"==o?n="file-movie":"audio"==o?n="file-audio":"text"==o&&(n="file-text-o"),'"},d.prototype.getFileItem=function(t){var i=this;if("string"==typeof t&&(t=i.plupload.getFile(t)),!t)return null;var n=t.name;if(n&&t.ext===r){var o=n.lastIndexOf(".");o=o>-1?n.substr(o+1):"",t.ext=o,t.type&&/image\//.test(t.type)&&(t.isImage=t.ext)}var s=e("#file-"+t.id);return s.length||(e.isFunction(i.template)?s=e(i.template(t,i)):(s=e(i.template).clone(),s.find(".btn-rename-file").attr("title",i.lang.rename),s.find(".btn-delete-file").attr("title",i.lang.remove),s.find(".btn-reset-file").attr("title",i.lang.repeat),s.find(".btn-download-file").attr("title",i.lang.download).attr("download",t.name)),s.data("id",t.id).toggleClass("file-static",!!t["static"]).attr("id","file-"+t.id).appendTo(i.$list),e.fn.tooltip&&s.find('[data-toggle="tooltip"]').tooltip()),s},d.prototype.showFile=function(t,n){var r=this;if(e.isArray(t))return void e.each(t,function(e,t){r.showFile(t,n)});if("string"==typeof t&&(t=r.plupload.getFile(t)),t){var o=r.getFileItem(t);if(o&&o.length){var s=r.options,a=u[t.status];if(s.fileFormater)s.fileFormater.call(r,o,t,a);else{var l="done"==a&&t.url?t.url:null;o.find(".file-name").text(t.name),o.find(".file-size").text(("uploading"==a?i.formatSize(Math.floor(t.size*t.percent/100)).toUpperCase()+"/":"")+i.formatSize(t.size).toUpperCase()),o.find(".file-icon").html(s.fileIconCreator?s.fileIconCreator(t.type,t,r):r.createFileIcon(t)).css("color","hsl("+e.zui.strCode(t.type||t.ext)+", 70%, 40%)"),o.find(".file-progress-bar").css("width",t.percent+"%");var c=o.find(".file-status").attr("title",r.lang[a]);c.find(".text").text("uploading"==a?t.percent+"%":"failed"==a?r.lang[a]:""),e.fn.tooltip&&o.find('[data-toggle="tooltip"]').tooltip("fixTitle"),o.find("a.btn-download-file, a.file-name").attr("href",l)}if(s.previewImageIcon&&t.isImage){var d=function(){o.find(".file-icon").html('
            ')};t.previewImage?d():r.previewImageSrc(t,function(e){t.previewImage=e,d()})}o.attr("data-status",a).data("file",t)}}},d.prototype.showStatus=function(){var t=this,n=t.plupload,r=t.$status,o=n.state,s=n.total,a="",l=n.files.length;if(t.options.statusCreator)a=t.options.statusCreator(s,o,t);else{var u={uploading:Math.max(0,Math.min(l,s.uploaded+1)),total:t.staticFilesCount+l,size:i.formatSize(s.size+t.staticFilesSize).toUpperCase(),queue:s.queued,failed:s.failed,uploaded:s.uploaded,uploadedSize:i.formatSize(s.loaded).toUpperCase(),percent:s.percent,speed:i.formatSize(s.bytesPerSec).toUpperCase()+"/S"};a=o==i.STARTED?t.lang.startedStatusText.format(u):l<1?t.lang.initStatusText:t.lang.stoppedStatusText.format(u)}r.html(a),s.uploaded<1&&r.find(".uploader-status-uploaded").remove(),s.failed<1&&r.find(".uploader-status-failed").remove(),s.queued<1&&r.find(".uploader-status-queue").remove(),e.fn.tooltip&&r.find('[data-toggle="tooltip"]').tooltip()},d.prototype.delayShowStatus=function(e){var t=this;t.delayStatusTask||(t.delayStatusTask=!0,e===r&&(e=500),t.delayStatusTask=setTimeout(function(){t.showStatus(),t.delayStatusTask=!1},e))},d.prototype.removeFile=function(t,i){var n=this;if("string"==typeof t&&(t=n.plupload.getFile(t)),i||t["static"]){var r=e("#file-"+t.id);e.fn.tooltip&&(r.find('[data-toggle="tooltip"]').tooltip("destroy"),e(".tooltip").remove()),r.fadeOut(function(){e(this).remove()})}else n.plupload.removeFile(t)},d.prototype.initPlupload=function(){var n=this,o=n.options,s=e.extend({},o,{browse_button:n.$button[0],container:n.$[0],drop_element:n.$dropElement[0],multipart_params:null}),a={FilesAdded:function(e,t){var i=o.limitFilesCount;if(i){i===!0&&(i=1);var r=n.$list.children(".file").length;if(r+t.length>i){n.showMessage(n.lang.limitFilesCountMessage.format({count:i}),"warning");for(var s=[],a=0;a"+u.join(",")+"

            ":"",d={uploaded:a,failed:l};c+="string"==typeof s?s.format(d):e.isFunction(s)?s(d):n.lang[l>0?"uploadHasFailedMessage":a>0?"uploadSuccessMessage":"uploadEmptyMessage"].format(d),n.showMessage(c,l>0?"danger":a>0?"success":"warning",3)}n.callEvent("onUploadComplete",[r])},FilesRemoved:function(t,i){e.each(i,function(e,t){n.removeFile(t,!0)}),n.showStatus(),n.callEvent("onFilesRemoved",i)},ChunkUploaded:function(e,t,i){n.callEvent("onChunkUploaded",[t,i])},UploadFile:function(e,t){n.showStatus(),n.callEvent("onUploadFile",t)},BeforeUpload:function(t,i){var r=t.getOption("multipart_params"),s=o.multipart_params,a={};r&&r.key&&(a.key=r.key),r&&r.token&&(a.token=r.token),o.sendFileName&&(a[o.sendFileName===!0?"name":o.sendFileName]=i.name),o.sendFileId&&(a[o.sendFileId===!0?"uuid":o.sendFileId]=i.id),a=e.extend(a,e.isFunction(s)?s(i,a):s),t.setOption("multipart_params",a),n.callEvent("onBeforeUpload",i)},Refresh:function(e){n.showStatus(),n.callEvent("onRefresh")},StateChanged:function(e){e.state===i.STARTED&&(n.lastUploadedCount=0),n.$.toggleClass("uploader-started",i.STARTED===e.state),n.hideMessage(),n.showStatus(),n.callEvent("onStateChanged",e.state)},QueueChanged:function(e){n.showStatus(),n.callEvent("onQueueChanged")},Error:function(e,t){var r="danger";t.code!==i.FILE_SIZE_ERROR&&t.code!==i.FILE_SIZE_ERROR&&t.code!==i.FILE_EXTENSION_ERROR&&t.code!==i.FILE_DUPLICATE_ERROR&&t.code!==i.MAGE_FORMAT_ERROR||(r="warning"),n.showMessage(t.message,r),n.callEvent("onError",t)}};if(i.addI18n(n.lang.i18n),n.qiniuEnable=e.isPlainObject(o.qiniu)&&t.Qiniu,n.qiniuEnable){var l=o.qiniu,u=l.key;delete s.qiniu,u?(delete l.key,e.isFunction(u)&&(a.Key=u)):a.Key=function(e,t){return t.name},l.init=a,s=e.extend(s,l);var c=new QiniuJsSDK,d=c.uploader(s);n.plupload=d}else{var d=new i.Uploader(s);d.init(),n.plOptions=s,n.plupload=d,e.each(a,function(e,t){d.bind(e,t)})}},d.prototype.getOptions=function(t){return this.options=e.extend({lang:e.zui.clientLang()},l,this.$.data(),t),this.options},d.prototype.callEvent=function(t,i){var n=this;if(e.isArray(i)||(i=[i]),n.$.trigger(t,i),e.isFunction(n.options[t]))return n.options[t].apply(n,i)},e.fn.uploader=function(t,i){return this.each(function(){var n=e(this),r=n.data(s),o="object"==typeof t&&t;r||n.data(s,r=new d(this,o)),"string"==typeof t&&r[t](i)})},d.NAME=s,d.STATUS=u,d.ERRORS=c,d.NAME=s,d.LANG={zh_cn:{limitFilesCountMessage:"所有文件数目不能超过 {count} 个,如果要上传此文件请先从列表移除文件。",uploadEmptyMessage:"没有文件等待上传。",uploadSuccessMessage:"已上传 {uploaded} 个文件。",uploadHasFailedMessage:"已上传 {uploaded} 个文件,{failed} 个文件上传失败。",startedStatusText:'正在上传第 {uploading} 个文件,共 {total} 个文件,已上传 {uploaded} 个文件,{failed} 个上传失败,进度 {percent}%,平均速度 {speed}。',initStatusText:"添加文件或拖放文件来上传。",stoppedStatusText:'共 {total} 个文件{queue} 个文件等待上传,已上传 {uploaded} 个文件{failed} 个上传失败,平均速度 {speed}。',deleteConfirm:"确定移除文件【{name}】?",download:"下载",rename:"重命名",repeat:"重新上传",remove:"移除",dropPlaceholder:"将文件拖放至在此处。",queue:"待上传",uploading:"正在上传",failed:"失败",done:"已上传",i18n:{"Stop Upload":"停止上传","Upload URL might be wrong or doesn't exist.":"上传的URL可能是错误的或不存在。",tb:"tb",Size:"大小",Close:"关闭","You must specify either browse_button or drop_element.":"您必须指定 browse_button 或者 drop_element。","Init error.":"初始化错误。","Add files to the upload queue and click the start button.":"将文件添加到上传队列,然后点击”开始上传“按钮。",List:"列表",Filename:"文件名","%s specified, but cannot be found.":"%s 已指定,但是没有找到。","Image format either wrong or not supported.":"图片格式错误或者不支持。",Status:"状态","HTTP Error.":"HTTP 错误。","Start Upload":"开始上传","Error: File too large:":"错误: 文件太大:",kb:"kb","Duplicate file error.":"无法添加重复文件。","File size error.":"文件大小错误。","N/A":"N/A",gb:"gb","Error: Invalid file extension:":"错误:无效的文件扩展名:","Select files":"选择文件","%s already present in the queue.":"%s 已经在当前队列里。","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"超限。%s 支持最大 %wx%hpx 的图片。","File: %s":"文件: %s",b:"b","Uploaded %d/%d files":"已上传 %d/%d 个文件","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"每次只接受同时上传 %d 个文件,多余的文件将会被删除。","%d files queued":"%d 个文件加入到队列","File: %s, size: %d, max file size: %d":"文件: %s, 大小: %d, 最大文件大小: %d",Thumbnails:"缩略图","Drag files here.":"把文件拖到这里。","Runtime ran out of available memory.":"运行时已消耗所有可用内存。","File count error.":"文件数量错误。","File extension error.":"文件扩展名错误。",mb:"mb","Add Files":"增加文件"}},zh_tw:{limitFilesCountMessage:"所有文件數目不能超過 {count} 個。",uploadEmptyMessage:"没有文件等待上傳。",uploadSuccessMessage:"已上傳 {uploaded} 个文件。",uploadHasFailedMessage:"文件上傳完成,已上傳 {uploaded} 個文件,{failed} 個文件上傳失败。",startedStatusText:'正在上傳第{uploading} 個文件,共{total} 個文件,已上傳{uploaded} 個文件,{failed} 個上傳失敗,進度{percent}%,平均速度{speed}。',initStatusText:"添加文件或拖放文件來上傳。",stoppedStatusText:'共{total} 個文件{queue} 個文件等待上傳,已上傳{uploaded} 個文件{failed} 個上傳失敗,平均速度{speed}< /strong>。',deleteConfirm:"確定移除文件【{name}】?",download:"下载",rename:"重命名",repeat:"重新上傳",remove:"移除",dropPlaceholder:"將文件拖放至在此處。",queue:"待上傳",uploading:"正在上傳",failed:"失敗",done:"已上傳",i18n:{"Stop Upload":"停止上傳","Upload URL might be wrong or doesn't exist.":"檔案URL可能有誤或者不存在。",tb:"tb",Size:"大小",Close:"關閉","You must specify either browse_button or drop_element.":"您必須指定 browse_button 或 drop_element。","Init error.":"初始化錯誤。","Add files to the upload queue and click the start button.":"將檔案加入上傳序列,然後點選”開始上傳“按鈕。",List:"清單",Filename:"檔案名稱","%s specified, but cannot be found.":"找不到已選擇的 %s。","Image format either wrong or not supported.":"圖片格式錯誤或者不支援。",Status:"狀態","HTTP Error.":"HTTP 錯誤。","Start Upload":"開始上傳","Error: File too large:":"錯誤: 檔案大小太大:",kb:"kb","Duplicate file error.":"錯誤:檔案重複。","File size error.":"錯誤:檔案大小超過限制。","N/A":"N/A",gb:"gb","Error: Invalid file extension:":"錯誤:不接受的檔案格式:","Select files":"選擇檔案","%s already present in the queue.":"%s 已經存在目前的檔案序列。","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"圖片解析度超出範圍! %s 最高只支援到 %wx%hpx。","File: %s":"檔案: %s",b:"b","Uploaded %d/%d files":"已上傳 %d/%d 個文件","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"每次只能上傳 %d 個檔案,超過限制數量的檔案將被忽略。","%d files queued":"%d 個檔案加入到序列","File: %s, size: %d, max file size: %d":"檔案: %s, 大小: %d, 檔案大小上限: %d",Thumbnails:"縮圖","Drag files here.":"把檔案拖曳到這裡。","Runtime ran out of available memory.":"執行時耗盡了所有可用的記憶體。","File count error.":"檔案數量錯誤。","File extension error.":"檔案副檔名錯誤。",mb:"mb","Add Files":"增加檔案"}},en:{limitFilesCountMessage:"All files count can not over {count}.",uploadEmptyMessage:"No file in queue to upload",uploadSuccessMessage:"Uploaded {uploaded} files。",uploadHasFailedMessage:"Uploaded complete, {uploaded} success, {failed} failed.",startedStatusText:'Uploading NO.{uploading} file, total {total} files, Uploaded {uploaded} files, {failed} failed, progress {percent}%, average spped {speed}。',initStatusText:"Append or drag file here.",stoppedStatusText:'Total {total} files, {queue} files in queue, uploaded {uploaded} files, {failed} failed, average spped {speed}。',deleteConfirm:'Remove file "{name}" form upload queue?',rename:"Rename",download:"Download",repeat:"Repeat",remove:"Remove",dropPlaceholder:"Drop file here.",queue:"Wait",uploading:"Uploading",failed:"Failed",done:"Done",i18n:{"Stop Upload":"Stop Upload","Upload URL might be wrong or doesn't exist.":"Upload URL might be wrong or doesn't exist.",tb:"tb",Size:"Size",Close:"Close","You must specify either browse_button or drop_element.":"You must specify either browse_button or drop_element.","Init error.":"Init error.","Add files to the upload queue and click the start button.":"Add files to the upload queue and click the start button.",List:"List",Filename:"Filename","%s specified, but cannot be found.":"%s specified, but cannot be found.","Image format either wrong or not supported.":"Image format either wrong or not supported.",Status:"Status","HTTP Error.":"HTTP Error.","Start Upload":"Start Upload","Error: File too large:":"Error: File too large:",kb:"kb","Duplicate file error.":"Duplicate file error.","File size error.":"File size error.","N/A":"N/A",gb:"gb","Error: Invalid file extension:":"Error: Invalid file extension:","Select files":"Select files","%s already present in the queue.":"%s already present in the queue.","Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.":"Resoultion out of boundaries! %s runtime supports images only up to %wx%hpx.","File: %s":"File: %s",b:"b","Uploaded %d/%d files":"Uploaded %d/%d files","Upload element accepts only %d file(s) at a time. Extra files were stripped.":"Upload element accepts only %d file(s) at a time. Extra files were stripped.","%d files queued":"%d files queued","File: %s, size: %d, max file size: %d":"File: %s, size: %d, max file size: %d",Thumbnails:"Thumbnails","Drag files here.":"Drag files here.","Runtime ran out of available memory.":"Runtime ran out of available memory.","File count error.":"File count error.","File extension error.":"File extension error.",mb:"mb","Add Files":"Add Files"}}},e.zui.plupload=i,e.zui.moxie=n,e.zui.Uploader=d,e.fn.uploader.Constructor=d,t.mOxie||(t.mOxie={Env:n.core.utils.Env,XMLHttpRequest:n.xhr.XMLHttpRequest}),e(function(){e('[data-ride="uploader"]').uploader()})}(jQuery,window,plupload,moxie,void 0); \ No newline at end of file diff --git a/root/user/login.html b/root/user/login.html new file mode 100644 index 0000000..f69c089 --- /dev/null +++ b/root/user/login.html @@ -0,0 +1,127 @@ + + + + + 登录 - MetaKit + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/net/tccn/base/JBean.java b/src/main/java/net/tccn/base/JBean.java new file mode 100644 index 0000000..f3646e7 --- /dev/null +++ b/src/main/java/net/tccn/base/JBean.java @@ -0,0 +1,78 @@ +package net.tccn.base; + +import org.redkale.convert.json.JsonConvert; + +/** + * Created by liangxianyou at 2018/7/30 16:51. + */ +public class JBean { + private int code; + private String message; + private Object body; + private long timestamp; + + public static JBean by(int code, String message){ + JBean jBean = new JBean(); + jBean.code = code; + jBean.message = message; + jBean.timestamp = System.currentTimeMillis(); + return jBean; + } + public static JBean by(int code, String message, Object result){ + JBean jBean = new JBean(); + jBean.code = code; + jBean.message = message; + jBean.body = result; + jBean.timestamp = System.currentTimeMillis(); + return jBean; + } + public JBean set(int code, String message){ + this.code = code; + this.message = message; + return this; + } + + public JBean set(int code, String message, Object result){ + this.code = code; + this.message = message; + this.body = result; + this.timestamp = System.currentTimeMillis(); + return this; + } + + public JBean setCode(int code) { + this.code = code; + return this; + } + + public JBean setMessage(String message) { + this.message = message; + return this; + } + + public JBean setBody(Object body) { + this.body = body; + return this; + } + + public int getCode() { + return code; + } + + public String getMessage() { + return message; + } + + public Object getBody() { + return body; + } + + public long getTimestamp() { + return timestamp; + } + + @Override + public String toString() { + return JsonConvert.root().convertTo(this); + } +} diff --git a/src/main/java/net/tccn/base/Kv.java b/src/main/java/net/tccn/base/Kv.java new file mode 100644 index 0000000..ffeac98 --- /dev/null +++ b/src/main/java/net/tccn/base/Kv.java @@ -0,0 +1,156 @@ +package net.tccn.base; + +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.function.Predicate; + +/** + * Created by liangxianyou@eversec.cn at 2018/3/12 14:17. + */ +public class Kv extends LinkedHashMap { + public static Kv of(){ + return new Kv(); + } + + public static Kv of(Object k, Object v){ + return new Kv().set(k,v); + } + + public Kv set(K k, V v){ + put(k, v); + return this; + } + + public static Kv toKv(Object m) { + return toKv(m, Kv.of(), m.getClass()); + } + + private static Kv toKv(Object m, Kv kv, Class clazz) { + Field[] fields = clazz.getDeclaredFields(); + for (Field field : fields) { + try { + field.setAccessible(true); + if (!kv.containsKey(field.getName())) { + kv.set(field.getName(), field.get(m)); + } + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + + Class superclass = clazz.getSuperclass(); + if (superclass != null) { + kv = toKv(m, kv, superclass); + } + return kv; + } + + public T toBean(Class type) { + return (T) toBean(this, type); + } + + // 首字母大写 + private static Function upFirst = (s) -> { + return s.substring(0, 1).toUpperCase() + s.substring(1); + }; + private static Map clazzMap = new HashMap<>(); + static { + clazzMap.put(ArrayList.class, new Class[]{List.class, ArrayList.class, String.class}); + clazzMap.put(HashMap.class, new Class[]{Map.class, HashMap.class, String.class}); + clazzMap.put(Long.class, new Class[]{Long.class, Integer.class, long.class, int.class, short.class, String.class}); + clazzMap.put(String.class, new Class[]{String.class, Integer.class, Date.class}); + clazzMap.put(Double.class, new Class[]{Double.class, Long.class, Integer.class, long.class, int.class, short.class, String.class}); + } + private static Predicate isNumber = (t) -> { + return t == Integer.class || t == int.class + || t == Long.class || t == long.class + || t == Double.class || t == double.class + ; + }; + public static T toBean(Map m, Class type) { + try { + Object obj = type.newInstance(); + m.forEach((k, v) -> { + String methodName = "set" + upFirst.apply(k); + Method method = null; + Class[] clazzs = clazzMap.get(v == null ? null : v.getClass()); + if (clazzs == null) { + //doc.set(k, v); + } else { + for (Class clazz : clazzs) { + try { + method = type.getDeclaredMethod(methodName, clazz); + } catch (NoSuchMethodException e) { + } + if (method != null) { + try { + if (v == null || "".equals(v)) { + + } else if (v.getClass() == Long.class && clazz != Long.class) {//多种数值类型的处理 + Object _v; + switch (clazz.getSimpleName()) { + case "int": + case "Long": _v = v; break; + case "Integer": _v = (int)((long) v); break; + case "short": + case "Short": _v = (short)((long) v); break; + default: _v = v; + } + method.invoke(obj, _v); + } else if (v.getClass() == Double.class) { + Object _v = null; + if (isNumber.test(clazz)) { + switch (clazz.getSimpleName()) { + case "long": + case "Long": _v = (long)(double) v; break; + case "int": + case "Integer": _v = (int)((double) v); break; + case "short": + case "Short": _v = (int)(double) v; break; + default: _v = v; + } + } else if (clazz == String.class){ + _v = String.valueOf(v); + } + method.invoke(obj, _v); + } else if (v.getClass() == String.class && clazz == Date.class) { + Date _v = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse((String) v); + method.invoke(obj, _v); + } else if (v.getClass() == String.class && clazz == Integer.class) { + Object _v = (int)Double.parseDouble((String) v); + method.invoke(obj, _v); + } + + else { + method.invoke(obj, v); + } + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } catch (ParseException e) { + e.printStackTrace(); + } + break; + } + } + } + }); + + return (T) obj; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } +} \ No newline at end of file diff --git a/src/main/java/net/tccn/base/PageBean.java b/src/main/java/net/tccn/base/PageBean.java new file mode 100644 index 0000000..b496375 --- /dev/null +++ b/src/main/java/net/tccn/base/PageBean.java @@ -0,0 +1,39 @@ +package net.tccn.base; + +import java.util.List; + +/** + * Created by JUECHENG at 2018/5/7 11:20. + */ +public class PageBean { + private List rows; + private long total; + + public static PageBean by(List rows, long total) { + return new PageBean(rows, total); + } + + public PageBean() { + } + + public PageBean(List rows, long total) { + this.rows = rows; + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public long getTotal() { + return total; + } + + public void setTotal(long total) { + this.total = total; + } +} diff --git a/src/main/java/net/tccn/base/arango/ArangoSource.java b/src/main/java/net/tccn/base/arango/ArangoSource.java new file mode 100644 index 0000000..45d5242 --- /dev/null +++ b/src/main/java/net/tccn/base/arango/ArangoSource.java @@ -0,0 +1,290 @@ +package net.tccn.base.arango; + +import com.arangodb.*; +import com.arangodb.entity.DocumentCreateEntity; +import com.arangodb.entity.DocumentDeleteEntity; +import com.arangodb.entity.MultiDocumentEntity; + +import javax.persistence.Table; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; + +import static java.util.Arrays.asList; + +/** + * 管理 数据源连接对象 + * @author: liangxianyou at 2018/12/15 11:35. + */ +public class ArangoSource { + + public Logger logger = Logger.getLogger(this.getClass().getSimpleName()); + private ArangoDB arangoDb; + + private static Map sources = new HashMap(); + static { + init(); + } + + public static void init() { + sources.put("main", new ArangoSource(new ArangoDB.Builder().host("120.24.230.60", 8529).user("root").password("abc123").build())); + sources.put("abc", new ArangoSource(new ArangoDB.Builder().host("192.168.199.135", 8529).user("root").password("root").build())); + } + + public ArangoSource(ArangoDB arangoDb) { + this.arangoDb = arangoDb; + } + + public static ArangoSource use() { + return use("main"); + } + public static ArangoSource use(String unit) { + if (unit == null || unit.isEmpty()) { + unit = "main"; + } + return sources.get(unit); + } + + public ArangoDB arangoDB() { + return arangoDb; + } + public ArangoDatabase db(String db) { + return arangoDb.db(db); + } + public ArangoCollection collection(Doc doc) { + return collection(doc.getClass()); + } + public ArangoCollection collection(Class type) { + Table table = type.getAnnotation(Table.class); + //createDb(table.catalog()); + return arangoDb.db(table.catalog()).collection(table.name()); + } + + public boolean createDb(String db) { + ArangoDatabase database = arangoDb.db(db); + if (!database.exists()) { + return database.create(); + } + logger.log(Level.INFO, "arango database exists"); + return true; + } + public ArangoCollection createDocument(Doc doc) { + Class type = doc.getClass(); + Table table = type.getAnnotation(Table.class); + + ArangoDatabase database = arangoDb.db(table.catalog()); + if (!database.exists()) { + database.create(); + } + + ArangoCollection collection = database.collection(table.name()); + if (!collection.exists()) { + collection.create(); + } + + return collection; + } + + // 首字母大写 + private static Function upFirst = (s) -> { + return s.substring(0, 1).toUpperCase() + s.substring(1); + }; + + private static Map clazzMap = new HashMap<>(); + static { + clazzMap.put(ArrayList.class, new Class[]{List.class, ArrayList.class, String.class}); + clazzMap.put(HashMap.class, new Class[]{Map.class, HashMap.class, String.class}); + clazzMap.put(Long.class, new Class[]{Long.class, Integer.class, long.class, int.class, short.class, String.class}); + clazzMap.put(String.class, new Class[]{String.class}); + } + /** + * 还原 Doc对象 + * @param map + * @param type + * @param + * @return + */ + public T toDoc1(Map map, Class type) { + try { + Doc doc = type.newInstance(); + map.forEach((k, v) -> { + + String methodName = "set" + upFirst.apply(k); + Method method = null; + Class[] clazzs = clazzMap.get(v == null ? null : v.getClass()); + if (clazzs == null) { + doc.set(k, v); + } else { + for (Class clazz : clazzs) { + try { + method = type.getDeclaredMethod(methodName, clazz); + } catch (NoSuchMethodException e) { + } + if (method != null) { + try { + if (v.getClass() == Long.class && clazz != Long.class) {//多种数值类型的处理 + Object _v; + switch (clazz.getSimpleName()) { + case "int": + case "Integer": _v = (int)((long) v); break; + case "short": + case "Short": _v = (short)((long) v); break; + default: _v = v; + } + System.out.println(clazz.getSimpleName()); + method.invoke(doc, _v); + } else { + method.invoke(doc, v); + } + } catch (IllegalAccessException e) { + e.printStackTrace(); + doc.set(k, v); + } catch (InvocationTargetException e) { + e.printStackTrace(); + doc.set(k, v); + } + break; + } + } + } + + if (method == null) { + doc.set(k, v); + } + }); + + return (T) doc; + } catch (Exception e) { + + } + + return null; + } + + private Predicate isEmpty = (x) -> { + if (x == null) + return true; + if (x instanceof List) + return ((List) x).isEmpty(); + if (x instanceof String) + return ((String) x).isEmpty(); + if (x instanceof Map) + return ((Map) x).isEmpty(); + if (x instanceof Collection) + return ((Collection) x).isEmpty(); + return false; + }; + /** + * Doc 转为查询对象 + * @param t + * @param + * @return + */ + private Function filterBuilder = (t) -> { + Table table = t.getClass().getAnnotation(Table.class); + StringBuilder buf = new StringBuilder(); + + buf.append("for d in ").append(table.name()); + buf.append(" filter 1==1"); + t.toDoc().forEach((k, v) -> { + if (v != null && (v.getClass() == String.class || v instanceof Number)) { + buf.append(" and d.").append(k).append("=="); + } + + if (v.getClass() == String.class) { + buf.append("'").append(v).append("'"); + } else if (v instanceof Number) { + buf.append(v); + } + }); + return buf; + }; + + private Function orderBuilder = (t) -> { + StringBuilder buf = new StringBuilder(); + Map order = t.getOrder(); + if (isEmpty.test(order)) { + return buf; + } + buf.append(" sort "); + order.forEach((k, v) -> { + buf.append("d.").append(k).append(v == 1 ? " desc," : " asc,"); + }); + buf.deleteCharAt(buf.length() - 1); + return buf; + }; + + private Function returnBuilder = (t) -> { + StringBuilder buf = new StringBuilder(); + + if (isEmpty.test(t.get_Shows())) { + return buf.append(" return d"); + } + + buf.append(" return {"); + t.get_Shows().forEach(x -> { + buf.append(x).append(":d.").append(x).append(","); + }); + buf.deleteCharAt(buf.length() - 1).append("}"); + return buf; + }; + + public String parseAqlCount(T t) { + StringBuilder buf = new StringBuilder(); + buf.append(filterBuilder.apply(t)); + buf.append(" COLLECT WITH COUNT INTO total"); + buf.append(" return total"); + //logger.log(Level.INFO, buf.toString()); + return buf.toString(); + } + public String parseAql(T t, int offset, int ps) { + if (offset < 0) offset = 0; + if (ps <= 0) ps = 1000; + StringBuilder buf = new StringBuilder(); + + buf.append(filterBuilder.apply(t)); + buf.append(orderBuilder.apply(t)); + buf.append(" limit ").append(offset).append(",").append(ps); + buf.append(returnBuilder.apply(t)); + //logger.log(Level.INFO, buf.toString()); + return buf.toString(); + } + //---------------------------------------- + //ok + public T save(T doc) { + DocumentCreateEntity tmap = collection(doc).insertDocument(doc.toDoc()); + doc.setKey(tmap.getKey()); + doc.setId(tmap.getId()); + return doc; + } + + //ok + public void update(T doc) { + collection(doc).updateDocument(doc.getKey(), doc.toDoc()); + } + + //ok + public T getDoc(Object key, Class type) { + return collection(type).getDocument(String.valueOf(key), type); + } + + //ok + public DocumentDeleteEntity delete(String key, Class type) { + return collection(type).deleteDocument(key); + } + + //ok + public MultiDocumentEntity> deleteAll(Doc ... docs) { + return collection(docs[0]).deleteDocuments(asList(docs)); + } + + public MultiDocumentEntity find(Collection keys, Class type) { + return collection(type).getDocuments(keys, type); + } +} diff --git a/src/main/java/net/tccn/base/arango/Doc.java b/src/main/java/net/tccn/base/arango/Doc.java new file mode 100644 index 0000000..eed24b6 --- /dev/null +++ b/src/main/java/net/tccn/base/arango/Doc.java @@ -0,0 +1,251 @@ +package net.tccn.base.arango; + +import com.arangodb.ArangoCollection; +import com.arangodb.ArangoDBException; +import com.arangodb.ArangoDatabase; +import com.arangodb.entity.DocumentCreateEntity; + +import javax.persistence.Table; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Function; + +/** + * @author: liangxianyou at 2018/12/1 22:59. + */ +public abstract class Doc { + private HashMap attr = new HashMap(); + + private String _id; + private String _key; + + private Set _shows; + private Map _order; + + public String getId() { + return _id; + } + + public void setId(String id) { + this._id = id; + } + + public String getKey() { + return _key; + } + + public void setKey(String key) { + this._key = key; + } + + public Doc set(String k, Object v) { + attr.put(k, v); + return this; + } + + public V get(String k) { + return (V)attr.get(k); + } + + public T setShows(String... show) { + if (_shows == null) { + _shows = new HashSet<>(); + } + for (String s : show) { + _shows.add(s); + } + return (T) this; + } + + public Set get_Shows() { + return _shows; + } + + public void set_Shows(Set shows) { + this._shows = shows; + } + + public T setOrder(String col, int desc) { + if (_order == null) { + _order = new LinkedHashMap(); + } + + _order.put(col, desc); + return (T) this; + } + + public Map getOrder() { + return _order; + } + + /*public void setOrder(Map order) { + this._order = order; + }*/ + /*@Override + public String toString() { + //convert. + + String doc = convert.convertTo(this); + if (attr.size() == 0) { + return doc; + } + + StringBuilder builder = new StringBuilder(); + if (attr.size() != 0) { + String attrStr = convert.convertTo(attr); + builder.append("{"); + builder.append(attrStr, 1, attrStr.length() - 1); + builder.append(","); + builder.append(doc, 1, doc.length()); //builder.append(doc.substring(1)); + } + + return builder.toString(); + }*/ + + private Function fieldName = (s) -> { + return s.replace("get", "").substring(0, 1).toLowerCase() + s.substring(4); + }; + + /** + * 提取Doc 属性到 Map,用于存贮到Arango中 + * 提取规则: + * 1、将doc中自带非空( !=null )属性提取都map中, + * 2、将attr中属性覆盖到map中(如果attr中存在同名属性,attr为主) + * @return + */ + public Map toDoc() { + HashMap clone = (HashMap) attr.clone(); + + Class type = this.getClass(); + Method[] methods = type.getDeclaredMethods(); + + for (Method method : methods) { + String name = method.getName(); + if (name.startsWith("get") && method.getParameterCount() == 0) { + //Type mt = method.getAnnotatedReturnType().getType(); + try { + //System.out.println(method.getName()); + Object v = method.invoke(this); + if (v != null) { + clone.put(fieldName.apply(name), v); + } + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } + } + } + return clone; + } + + //--------------------------------------------------------------------------------------------------- + + private ArangoSource arangoSource; + private ArangoDatabase db; + private ArangoCollection collection; + + private static ConcurrentHashMap daos = new ConcurrentHashMap(); + public Doc() { + Table table = this.getClass().getAnnotation(Table.class); + String sourceName = null; + Source source = this.getClass().getAnnotation(Source.class); + if (source != null) { + sourceName = source.name(); + } + + arangoSource = ArangoSource.use(sourceName); + this.db = arangoSource.db(table.catalog()); + this.collection = arangoSource.collection(this); + } + public final static T dao(Class type) { + + if (daos.get(type) == null) { + try { + daos.put(type, type.newInstance()); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + + return (T) daos.get(type); + } + + //ok + public T save() { + DocumentCreateEntity tmap = collection.insertDocument(this.toDoc()); + this.setId(tmap.getId()); + this.setKey(tmap.getKey()); + return (T) this; + } + + //ok + public void update() { + collection.updateDocument(this.getKey(), this.toDoc()); + } + + public T findFirst(T t) { + return findFirst(arangoSource.parseAql(t, 0, 1), (Class) t.getClass()); + } + public List find() { + return find((T) this, 0, 1000); + } + public List find(T t) { + return find(t, 0, 1000); + } + public List find(T t, int offset, int pn) { + return find(arangoSource.parseAql(t, offset, pn), (Class)this.getClass()); + } + + public List find(String aql, Class clazz) { + try { + return db.query(aql, clazz).asListRemaining(); + } catch (ArangoDBException e) { + System.out.println(aql); + e.printStackTrace(); + ArangoSource.init(); + } + return db.query(aql, clazz).asListRemaining(); + } + public T findFirst(String aql, Class clazz) { + try { + return db.query(aql, clazz).first(); + } catch (ArangoDBException e) { + System.out.println(aql); + e.printStackTrace(); + ArangoSource.init(); + } + return db.query(aql, clazz).first(); + } + + public long count() { + return count(this); + } + public long count(T t) { + return db.query(arangoSource.parseAqlCount(t), long.class).first(); + } + //ok + public T findByKey(Object key) { + return (T) collection.getDocument(String.valueOf(key), this.getClass()); + } + + //ok + public void delete() { + collection.deleteDocument(getKey()); + } + + public void delete(Collection key) { + collection.deleteDocuments(key); + } + +} diff --git a/src/main/java/net/tccn/base/arango/Source.java b/src/main/java/net/tccn/base/arango/Source.java new file mode 100644 index 0000000..08fd2dc --- /dev/null +++ b/src/main/java/net/tccn/base/arango/Source.java @@ -0,0 +1,15 @@ +package net.tccn.base.arango; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author: liangxianyou at 2018/12/22 0:32. + */ +@Target({ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +public @interface Source { + String name() default ""; +} diff --git a/src/main/java/net/tccn/dbq/DbPlat.java b/src/main/java/net/tccn/dbq/DbPlat.java new file mode 100644 index 0000000..b3cfa60 --- /dev/null +++ b/src/main/java/net/tccn/dbq/DbPlat.java @@ -0,0 +1,98 @@ +package net.tccn.dbq; + +import net.tccn.base.arango.Doc; +import net.tccn.dbq.jdbc.JdbcAccount; +import org.redkale.convert.json.JsonConvert; + +import javax.persistence.Table; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.List; + +/** + * 数据库平台 + * @author: liangxianyou at 2018/11/14 12:58. + */ +@Table(name = "db_plat", catalog = "db_dev") +public class DbPlat extends Doc { + public static DbPlat dao = dao(DbPlat.class); + + private String name; //名称 + private String cate; //类型 mysql|ArangoDb + private String remark; //备注 + private String url; //数据库连接地址 + private String user; //账号 + private String pwd; //密码 + private List catalogs; //库 + + private JdbcAccount jdbcAccount; + //------------- setter/getter --------------- + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCate() { + return cate; + } + + public void setCate(String cate) { + this.cate = cate; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getUser() { + return user; + } + + public void setUser(String user) { + this.user = user; + } + + public String getPwd() { + return pwd; + } + + public void setPwd(String pwd) { + this.pwd = pwd; + } + + public List getCatalogs() { + return catalogs; + } + + public void setCatalogs(List catalogs) { + this.catalogs = catalogs; + } + + @Override + public String toString() { + return JsonConvert.root().convertTo(this); + } + //------------------------------------------------------------------------- + + protected Connection connection() throws SQLException { + if (jdbcAccount == null) { + jdbcAccount = new JdbcAccount(url, user, pwd); + } + return jdbcAccount.getConnection(); + } +} diff --git a/src/main/java/net/tccn/dbq/Field.java b/src/main/java/net/tccn/dbq/Field.java new file mode 100644 index 0000000..e20ab76 --- /dev/null +++ b/src/main/java/net/tccn/dbq/Field.java @@ -0,0 +1,99 @@ +package net.tccn.dbq; + +/** + * @author: liangxianyou at 2018/10/17 17:24. + */ +public class Field { + private String name; + private String label; + private String remark; + private String type; + private String inType; + private String inExt; + + //============== getter/setter ============= + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getInType() { + return inType; + } + + public void setInType(String inType) { + this.inType = inType; + } + + public String getInExt() { + return inExt; + } + + public void setInExt(String inExt) { + this.inExt = inExt; + } + + + //------------------------------------ + public enum InType { + SELECT_EXT("select_ext"), + INPUT_DT("input_dt"); + + String name; + + InType(String name) { + this.name = name; + } + } + + public enum QueryType { + + } + + public String showField() { + if (InType.SELECT_EXT.name.equalsIgnoreCase(inType)) { + return name + "|" + inExt; + } else if (InType.INPUT_DT.name.equalsIgnoreCase(inType)) { + return name + "=dt"; + } + + return name; + } + + public boolean isDict() { + return InType.SELECT_EXT.name.equalsIgnoreCase(inType); + } + + @Override + public boolean equals(Object name) { + return (this.name == null && name == null) || this.name.equals(name); + } +} diff --git a/src/main/java/net/tccn/dbq/fbean/DbType.java b/src/main/java/net/tccn/dbq/fbean/DbType.java new file mode 100644 index 0000000..dab08cc --- /dev/null +++ b/src/main/java/net/tccn/dbq/fbean/DbType.java @@ -0,0 +1,8 @@ +package net.tccn.dbq.fbean; + +/** + * Created by liangxianyou at 2018/12/14 15:34. + */ //数据库类型 +public enum DbType { + MYSQL, ARANGODB +} diff --git a/src/main/java/net/tccn/dbq/fbean/FBean.java b/src/main/java/net/tccn/dbq/fbean/FBean.java new file mode 100644 index 0000000..b922c9e --- /dev/null +++ b/src/main/java/net/tccn/dbq/fbean/FBean.java @@ -0,0 +1,73 @@ +package net.tccn.dbq.fbean; + +import java.util.List; + +/** + * 查询用实体 + * @author: liangxianyou at 2018/10/25 14:49. + */ +public class FBean { + + private String name; + private List filters;//[{f:xx, v: v, type:t}] -- t, + private List orders;//{f1: 1, f2: -1} + private Limit limit;//{pn: 1, ps: 10} + + //---------- getter/setter ------------ + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public List getFilters() { + return filters; + } + + public void setFilters(List filters) { + this.filters = filters; + } + + public List getOrders() { + return orders; + } + + public void setOrders(List orders) { + this.orders = orders; + } + + public Limit getLimit() { + return limit; + } + + public void setLimit(Limit limit) { + this.limit = limit; + } + + //----------------------------------- + //组装查询sql,[list, count] + public String[] buildSqlFilter() { + //where 1=1 and x=1 and y=1 order by x,y limit 1,3; + String where = Filter.filter(filters); + String order = Order.order(orders, DbType.MYSQL); + if (limit == null) { + limit = new Limit(); + } + String limit = this.limit.limit(); + + String list = where + order + limit; + String count = where; + return new String[]{list, count}; + } + + + public void setLimit(int pn, int ps) { + limit.setPn(pn); + limit.setPs(ps); + } + + +} diff --git a/src/main/java/net/tccn/dbq/fbean/Filter.java b/src/main/java/net/tccn/dbq/fbean/Filter.java new file mode 100644 index 0000000..08b2979 --- /dev/null +++ b/src/main/java/net/tccn/dbq/fbean/Filter.java @@ -0,0 +1,89 @@ +package net.tccn.dbq.fbean; + +import java.util.List; + +/** + * 查询条件实体 + * Created by liangxianyou at 2018/12/14 15:34. + */ +public class Filter { + private String col; + private String value; + private String type; + + public static Filter by(String col, Object value) { + return by(col, "==", value + "");//todo: == 不是mysql 语法,不具备通用性 + } + + public static Filter by(String col, String type, String value) { + Filter filter = new Filter(); + filter.setCol(col); + filter.setType(type); + filter.setValue(value); + return filter; + } + + //mysql 查询组装 + public static String filter(List filters) { + if (filters == null || filters.size() == 0) { + return ""; + } + + StringBuilder buf = new StringBuilder(); + buf.append(" where 1=1"); + filters.forEach(x -> { + buf.append(FilterType.buildSql(x)); + }); + return buf.toString(); + } + + public static String filter(List filters, DbType dbType) { + if (DbType.MYSQL == dbType) { + return filter(filters); + } else if (DbType.ARANGODB == dbType) { + StringBuilder buf = new StringBuilder(); + buf.append(" filter 1==1"); + if (filters == null || filters.size() == 0) { + return ""; + } + + filters.forEach(x -> { + buf.append(" and d.").append(x.col).append(" " + (x.type == null ? "==" : x.type) + " "); + //处理数值型字段查询 + if ("sysPlatId".equals(x.col) || "platId".equals(x.col) || "status".equals(x.col) || false) { + buf.append(x.value); + } else { + buf.append("'" + x.value + "'"); + } + }); + return buf.toString(); + } + + return ""; + } + + //---------- getter/setter ------------ + public String getCol() { + return col; + } + + public void setCol(String col) { + this.col = col; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } +} diff --git a/src/main/java/net/tccn/dbq/fbean/FilterType.java b/src/main/java/net/tccn/dbq/fbean/FilterType.java new file mode 100644 index 0000000..7c7af35 --- /dev/null +++ b/src/main/java/net/tccn/dbq/fbean/FilterType.java @@ -0,0 +1,81 @@ +package net.tccn.dbq.fbean; + +import net.tccn.base.Kv; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * Created by liangxianyou at 2018/12/14 15:34. + */ +public enum FilterType { + EQUAL("=", "等于"), + NOTEQUAL("!=", "不等于"), + GREATERTHANOREQUALTO(">=", ">="), + LESSTHAN("<", "小于"), + LIKE("LIKE", "LIKE"), + IN("IN", "包含"); + + private String expre; + private String remark; + + FilterType(String expre, String remark) { + this.expre = expre; + this.remark = remark; + } + + //不同的条件构建过滤语句 + public static String buildSql(Filter filter) { + if (filter.getValue() == null || filter.getValue().length() == 0) { + return ""; + } + FilterType filterType = getFilterType(filter.getType()); + if (filterType == null) { + return ""; + } + + String _sql; + switch (filterType) { + case IN: + _sql = String.format(" AND `%s` IN (%s)", filter.getCol(), filter.getValue()); + break; + case LIKE: + _sql = String.format(" AND `%s` LIKE '%s'", filter.getCol(), "%" + filter.getValue() + "%"); + break; + default: + _sql = String.format(" AND `%s` %s '%s'", filter.getCol(), filterType.expre, filter.getValue()); + break; + } + + return _sql; + } + + public static FilterType getFilterType(String name) { + for (FilterType t : FilterType.values()) { + if (t.name().equalsIgnoreCase(name)) { + return t; + } + } + + return null; + } + + //获取所有的查询类型 + public static List getAllTypes() { + List list = new ArrayList<>(); + for (FilterType type : FilterType.values()) { + Kv kv = Kv.of("name", type.name())/*.set("expre", type.expre)*/.set("remark", type.remark); + list.add(kv); + } + + return list; + } + + public String getExpre() { + return expre; + } + + public String getRemark() { + return remark; + }} diff --git a/src/main/java/net/tccn/dbq/fbean/Limit.java b/src/main/java/net/tccn/dbq/fbean/Limit.java new file mode 100644 index 0000000..c25f465 --- /dev/null +++ b/src/main/java/net/tccn/dbq/fbean/Limit.java @@ -0,0 +1,44 @@ +package net.tccn.dbq.fbean; + +/** + * Created by liangxianyou at 2018/12/14 15:36. + */ +public class Limit { + private int pn; + private int ps; + + public Limit() { + } + + public Limit(int pn, int ps) { + this.pn = pn; + this.ps = ps; + } + + public String limit() { + if (pn < 1) { + pn = 1; + } + if (ps < 1) { + ps = 10; + } + return String.format(" LIMIT %s, %s", (pn - 1) * ps, ps); + } + + //---- getter/setter ----- + public int getPn() { + return pn; + } + + public void setPn(int pn) { + this.pn = pn; + } + + public int getPs() { + return ps; + } + + public void setPs(int ps) { + this.ps = ps; + } +} diff --git a/src/main/java/net/tccn/dbq/fbean/Order.java b/src/main/java/net/tccn/dbq/fbean/Order.java new file mode 100644 index 0000000..56cd62b --- /dev/null +++ b/src/main/java/net/tccn/dbq/fbean/Order.java @@ -0,0 +1,58 @@ +package net.tccn.dbq.fbean; + +import java.util.List; + +/** + * Created by liangxianyou at 2018/12/14 15:36. + */ +public class Order { + private String col; + private int desc;//1 or -1 + + public Order() { + } + + public Order(String col, int desc) { + this.col = col; + this.desc = desc; + } + + public static String order(List orders, DbType dbType) { + if (orders == null || orders.size() == 0) { + return ""; + } + StringBuilder buf = new StringBuilder(); + switch (dbType) { + case MYSQL: + buf.append(" ORDER BY"); + orders.forEach(x -> { + buf.append(String.format(" %s %s,", x.col, (x.desc == 1 ? "desc" : "asc"))); + }); + buf.deleteCharAt(buf.length() - 1); + break; + + case ARANGODB: + // 待实现 + break; + } + + return buf.toString(); + } + + //--- getter/setter --- + public String getCol() { + return col; + } + + public void setCol(String col) { + this.col = col; + } + + public int getDesc() { + return desc; + } + + public void setDesc(int desc) { + this.desc = desc; + } +} diff --git a/src/main/java/net/tccn/dbq/fbean/ParseArango.java b/src/main/java/net/tccn/dbq/fbean/ParseArango.java new file mode 100644 index 0000000..b3b1739 --- /dev/null +++ b/src/main/java/net/tccn/dbq/fbean/ParseArango.java @@ -0,0 +1,29 @@ +package net.tccn.dbq.fbean; + +import net.tccn.meta.MetaService; + +import java.util.Map; + +/** + * Created by liangxianyou at 2018/12/24 15:49. + */ +public class ParseArango implements Parser { + + @Override + public String parse(FBean fBean) { + + + + return null; + } + + @Override + public String parse(Filter filter) { + return null; + } + + @Override + public String parseSave(MetaService ms, Map data) { + return ""; + } +} diff --git a/src/main/java/net/tccn/dbq/fbean/ParseEs.java b/src/main/java/net/tccn/dbq/fbean/ParseEs.java new file mode 100644 index 0000000..80a4be4 --- /dev/null +++ b/src/main/java/net/tccn/dbq/fbean/ParseEs.java @@ -0,0 +1,26 @@ +package net.tccn.dbq.fbean; + +import net.tccn.meta.MetaService; + +import java.util.Map; + +/** + * Created by liangxianyou at 2018/12/24 15:49. + */ +public class ParseEs implements Parser { + + @Override + public String parse(FBean fBean) { + return null; + } + + @Override + public String parse(Filter filter) { + return null; + } + + @Override + public String parseSave(MetaService ms, Map data) { + return ""; + } +} diff --git a/src/main/java/net/tccn/dbq/fbean/ParseMysql.java b/src/main/java/net/tccn/dbq/fbean/ParseMysql.java new file mode 100644 index 0000000..25d852b --- /dev/null +++ b/src/main/java/net/tccn/dbq/fbean/ParseMysql.java @@ -0,0 +1,118 @@ +package net.tccn.dbq.fbean; + +import net.tccn.meta.MetaKit; +import net.tccn.meta.MetaLink; +import net.tccn.meta.MetaService; +import net.tccn.meta.MetaTable; + +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.function.Predicate; + +/** + * Created by liangxianyou at 2018/12/24 15:49. + */ +public class ParseMysql implements Parser { + + private Predicate isEmpty = (x) -> { + if (x == null) + return true; + if (x instanceof List) + return ((List) x).isEmpty(); + if (x instanceof String) + return ((String) x).isEmpty(); + if (x instanceof Map) + return ((Map) x).isEmpty(); + if (x instanceof Collection) + return ((Collection) x).isEmpty(); + return false; + }; + + @Override + public String parse(FBean fBean) { + MetaService metaService = MetaKit.metaService(fBean.getName()); + + //基础属性 + MetaTable metaTable = metaService.getMetaTable();//基础元数据 + List linkTables = metaService.getMetaLinks();//表关联条件 + Map attachTable = metaService.getTables();//用到的关联表 + List shows = metaService.getShows();//查询的属性 + + //查询条件 + List filters = fBean.getFilters(); + Limit limit = fBean.getLimit(); + List orders = fBean.getOrders(); + + StringBuilder buf = new StringBuilder(); + //select + buf.append("select "); + if (!isEmpty.test(shows)) { + shows.forEach(x -> { + //buf.append("`").append("x").append("`").append(","); + buf.append(x).append(","); + }); + buf.deleteCharAt(buf.length() - 1); + } else { + buf.append("*"); + } + + //from + buf.append(" from ").append("`").append(metaTable.getName()).append("` ").append(metaTable.getAlias()); + + //left join + if (!isEmpty.test(linkTables)) { + linkTables.forEach(x -> { + MetaTable leftTable = attachTable.get(metaTable.getAlias().equals(x.getTables()[0]) ? x.getTables()[1] : x.getTables()[0]); + + buf.append(" left join ").append(leftTable.getName()).append(" ").append(leftTable.getAlias()).append(" on "); + int tag = buf.length(); + x.getLink().forEach((k,v) -> { + if (buf.length() > tag) { + buf.append(" and "); + } + buf.append(k).append("=").append(v); + }); + }); + } + + //where + if (!isEmpty.test(filters)) { + buf.append(Filter.filter(filters, DbType.MYSQL)); + } + + //order by + if (!isEmpty.test(orders)) { + buf.append(" ").append(Order.order(orders, DbType.MYSQL)); + } + + //limit + buf.append(" ").append(limit.limit()); + return buf.toString(); + } + + @Override + public String parse(Filter filter) { + return null; + } + + @Override + public String parseSave(MetaService ms, Map data) { + String sqlTpl = "insert %s (%s) value (%s)"; + StringBuilder bufK = new StringBuilder(); + StringBuilder bufV = new StringBuilder(); + data.forEach((k,v) -> { + if (v != null || !String.valueOf(v).isEmpty()) { + bufK.append("`").append(k).append("`,"); + if (v instanceof Number) { + bufV.append(v).append(","); + } else { + bufV.append("'").append(v).append("',"); + } + } + }); + bufK.deleteCharAt(bufK.length() - 1); + bufV.deleteCharAt(bufV.length() - 1); + return String.format(sqlTpl, ms.getMetaTable().getName(), bufK.toString(), bufV.toString()); + } +} diff --git a/src/main/java/net/tccn/dbq/fbean/Parser.java b/src/main/java/net/tccn/dbq/fbean/Parser.java new file mode 100644 index 0000000..31a1467 --- /dev/null +++ b/src/main/java/net/tccn/dbq/fbean/Parser.java @@ -0,0 +1,31 @@ +package net.tccn.dbq.fbean; + +import net.tccn.meta.MetaService; + +import java.util.Map; + +/** + * Created by liangxianyou at 2018/12/24 15:47. + */ +public interface Parser { + + /** + * 组装完整的查询条件 + * @param fBean + */ + String parse(FBean fBean); + + /** + * 解析一个查询条件 + * @param filter + */ + String parse(Filter filter); + + /** + * 解析入库语句 + * @param data + * @return + */ + String parseSave(MetaService ms, Map data); + +} diff --git a/src/main/java/net/tccn/dbq/jdbc/Column.java b/src/main/java/net/tccn/dbq/jdbc/Column.java new file mode 100644 index 0000000..c13b181 --- /dev/null +++ b/src/main/java/net/tccn/dbq/jdbc/Column.java @@ -0,0 +1,55 @@ +package net.tccn.dbq.jdbc; + +/** + * 数据库表的列 + * @author: liangxianyou at 2018/10/8 10:59. + */ +public class Column { + private String name; //列名称 + private String type; //列类型 + private boolean notNull; //不为null + private String comment; //列说明 + + public Column() { + } + + public Column(String name, String type, boolean notNull, String comment) { + this.name = name; + this.type = type; + this.notNull = notNull; + this.comment = comment; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public boolean getNotNull() { + return notNull; + } + + public void setNotNull(boolean notNull) { + this.notNull = notNull; + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } + +} diff --git a/src/main/java/net/tccn/dbq/jdbc/JdbcAccount.java b/src/main/java/net/tccn/dbq/jdbc/JdbcAccount.java new file mode 100644 index 0000000..a9142d9 --- /dev/null +++ b/src/main/java/net/tccn/dbq/jdbc/JdbcAccount.java @@ -0,0 +1,72 @@ +package net.tccn.dbq.jdbc; + +import java.sql.Connection; + +/** + * @author: liangxianyou at 2018/10/11 17:47. + */ +public class JdbcAccount { + + private String url; + private String user; + private String pwd; + private Integer connectMax = 5;//默认最大连接数5 + + public JdbcAccount() { + } + + public JdbcAccount(String url, String user, String pwd) { + this.url = url; + this.user = user; + this.pwd = pwd; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getUser() { + return user; + } + + public void setUser(String user) { + this.user = user; + } + + public String getPwd() { + return pwd; + } + + public void setPwd(String pwd) { + this.pwd = pwd; + } + + public Integer getConnectMax() { + return connectMax; + } + + public void setConnectMax(Integer connectMax) { + this.connectMax = connectMax; + } + //------------------------------------------------------- + + public String parse() { + int start = url.indexOf("//") + 2; + int end = url.indexOf("/", start); + int endDef = url.indexOf("?", end); + if (endDef == -1) { + endDef = url.length(); + } + String host = url.substring(start, end == -1 ? url.length() : end); + return user + "@" + host; + } + + public Connection getConnection() { + + return null; + } +} diff --git a/src/main/java/net/tccn/dbq/jdbc/JdbcService.java b/src/main/java/net/tccn/dbq/jdbc/JdbcService.java new file mode 100644 index 0000000..6be6aab --- /dev/null +++ b/src/main/java/net/tccn/dbq/jdbc/JdbcService.java @@ -0,0 +1,151 @@ +package net.tccn.dbq.jdbc; + +import org.redkale.util.Comment; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.BiFunction; + +/** + * JdbcService. + * + * @author: liangxianyou at 2018/10/8 10:39. + */ +public class JdbcService { + + private JdbcAccount account; + + private static ConcurrentHashMap jdbcPool = new ConcurrentHashMap<>(); + + public JdbcService(JdbcAccount account) { + this.account = account; + } + //-------------- query ----------------- + private List executeQuery(String sql, Map columns, BiFunction fun) throws SQLException { + try ( + Connection connection = DriverManager.getConnection(account.getUrl(), account.getUser(), account.getPwd()); + PreparedStatement ps = connection.prepareStatement(sql); + ResultSet resultSet = ps.executeQuery()) { + List list = new ArrayList(); + while (resultSet.next()) { + list.add(fun.apply(resultSet, columns)); + } + + return list; + } + } + + public static List getCatalogs(Connection connection) throws SQLException { + List catalogs = new ArrayList<>(); + try ( + PreparedStatement ps = connection.prepareStatement("show databases;"); + ResultSet rs = ps.executeQuery() + ) { + while (rs.next()) { + catalogs.add(rs.getString(1)); + } + } + return catalogs; + } + + public static Connection getConnection(JdbcAccount account) throws SQLException { + Connection connection = jdbcPool.get(account); + if (connection == null) { + connection = DriverManager.getConnection(account.getUrl(), account.getUser(), account.getPwd()); + jdbcPool.put(account, connection); + } + return connection; + } + + @Comment("列表数据查询") + public static List findList(Connection connection, String sql) throws SQLException { + try ( + PreparedStatement ps = connection.prepareStatement(sql); + ResultSet rs = ps.executeQuery()) { + List list = new ArrayList(); + while (rs.next()) { + ResultSetMetaData metaData = rs.getMetaData(); + int count = metaData.getColumnCount(); + + Map row = new HashMap(); + for (int i = 1; i <= count; i++) { + String columnTypeName = metaData.getColumnTypeName(i); + String columnName = metaData.getColumnName(i); + row.put(columnName, null); + + if (rs.getObject(i) != null) { + switch (columnTypeName) { + case "DATETIME": + case "TIMESTAMP": + case "DATE": + row.put(columnName, rs.getTimestamp(i).getTime()); break; + default: + row.put(columnName, rs.getObject(i)); + } + } + } + list.add(row); + } + + return list; + } + } + + @Comment("统计总数") + public static int findNumber(Connection connection, String sql) throws SQLException { + try ( + PreparedStatement ps = connection.prepareStatement(sql); + ResultSet rs = ps.executeQuery()) { + + rs.next(); + return rs.getInt(1); + } + + } + + public static int update(Connection connection, String sql) throws SQLException { + try ( + PreparedStatement ps = connection.prepareStatement(sql); + ){ + return ps.executeUpdate(); + } + } + + // ---------------- DDL --------------------- + public static boolean createTable(Connection connection, Table table) throws SQLException { + if (table.getCatalog() != null && table.getCatalog().length() > 0) { + connection.setCatalog(table.getCatalog()); + } + + String tableDdl = table.getTableDdl(); + System.out.println(tableDdl); + try (PreparedStatement ps = connection.prepareStatement(tableDdl)) { + return ps.execute(); + } + } + + + public static void main(String[] args) throws SQLException { + String url = "jdbc:mysql://192.168.202.11:3306/gxbii_dev"; + String user = "root"; + String pwd = "eversec123098"; + + JdbcAccount account = new JdbcAccount(url, user, pwd); + + Connection connection = account.getConnection(); + + System.out.println(connection); + + String sql = "select * from basic_concat"; + + } +} diff --git a/src/main/java/net/tccn/dbq/jdbc/JdbcSource.java b/src/main/java/net/tccn/dbq/jdbc/JdbcSource.java new file mode 100644 index 0000000..fc35875 --- /dev/null +++ b/src/main/java/net/tccn/dbq/jdbc/JdbcSource.java @@ -0,0 +1,209 @@ +package net.tccn.dbq.jdbc; + +import net.tccn.dbq.qtask.Qtask; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Queue; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.Function; + +/** + * Created by liangxianyou at 2018/12/21 17:42. + */ +public class JdbcSource { + + private JdbcAccount account; + private Queue queue = new LinkedBlockingDeque(); + private static ConcurrentHashMap sources = new ConcurrentHashMap<>(); + private List connections = new ArrayList<>(); + private AtomicInteger connectNum = new AtomicInteger(); + + private JdbcSource() { + } + public JdbcSource(JdbcAccount account) { + String key = account.parse(); + synchronized (sources) { + JdbcSource source = sources.get(key); + if (source == null) { + source = new JdbcSource(); + } + source.account = account; + + do { + try { + Connection connection = DriverManager.getConnection(account.getUrl(), account.getUser(), account.getPwd()); + connections.add(connection); + } catch (SQLException e) { + e.printStackTrace(); + break; + } + } while (connectNum.incrementAndGet() < 2);//默认初始化连接数 2 + } + } + + + /** + * 获取连接 + * @return + */ + private Connection getConnection() { + synchronized (connections) { + //有闲置连接,直接返回 + if (connections.size() > 0) { + return connections.remove(0); + } + + //没有闲置连接,总连接数小于最大连接数,创建新连接 + if (connectNum.get() < account.getConnectMax()) { + try { + return DriverManager.getConnection(account.getUrl(), account.getUser(), account.getPwd()); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + //已达最大连接,且没有闲置,等待 + + } + + return null; + } + + /** + * 释放连接 + * @param connection + */ + private void releaseConnection(Connection connection) { + connections.add(connection); + } + + /** + * 通过Account 获取连接 + * 同一个连接对象同一时刻只能被一个线程所使用, + * 两种方案: + * 1、多个连接对象,每次线程得到对应的连接,用完返还连接, + * 2、一到多个连接,每次数据库操作交给执行队列执行,并返回执行结果 + * @param account + * @return + */ + /*public Connection getConnection(JdbcAccount account) { + String key = account.parse(); + + List conns = sources.get(key); + if (conns == null) { + conns = new ArrayList<>(); + } + if (conns.size() == 0) { + try { + Connection connection = DriverManager.getConnection(account.getUrl(), account.getUser(), account.getPwd()); + + } catch (SQLException e) { + e.printStackTrace(); + } + } + + + return null; + }*/ + + + private Function dataToMap = (rs) -> { + Map row = new HashMap(); + try { + ResultSetMetaData metaData = rs.getMetaData(); + int count = metaData.getColumnCount(); + + for (int i = 1; i <= count; i++) { + String columnTypeName = metaData.getColumnTypeName(i); + String columnName = metaData.getColumnName(i); + row.put(columnName, null); + + if (rs.getObject(i) != null) { + switch (columnTypeName) { + case "DATETIME": + case "TIMESTAMP": + case "DATE": + row.put(columnName, rs.getTimestamp(i).getTime()); break; + default: + row.put(columnName, rs.getObject(i)); + } + } + } + } catch (SQLException e) { + e.printStackTrace(); + } + + return row; + }; + + private Function> dataToList = (rs) -> { + List list = new ArrayList<>(); + try { + while (rs.next()) { + list.add(dataToMap.apply(rs)); + } + } catch (SQLException e) { + e.printStackTrace(); + } + return list; + }; + + /** + * 通过sql查询 数据, + * 将每次查询任务加入到查询队列 + * @param sql + * @return + */ + private Queue finds = new LinkedBlockingQueue<>(); + public CompletableFuture> find(String sql) { + return CompletableFuture.supplyAsync(() -> { + List list = null; + Connection connection = getConnection(); + try ( + PreparedStatement ps = connection.prepareStatement(sql); + ResultSet rs = ps.executeQuery(); + ) { + list = dataToList.apply(rs); + } catch (SQLException e) { + e.printStackTrace(); + } + + releaseConnection(connection); + return list; + }); + + /* + Connection connection = getConnection(null); + + + try ( + PreparedStatement ps = connection.prepareStatement(sql); + ) { + + + } catch (SQLException e) { + e.printStackTrace(); + } + + return null; + */ + } + + private void find(String sql, int cate) { + + } + +} diff --git a/src/main/java/net/tccn/dbq/jdbc/Table.java b/src/main/java/net/tccn/dbq/jdbc/Table.java new file mode 100644 index 0000000..628fc74 --- /dev/null +++ b/src/main/java/net/tccn/dbq/jdbc/Table.java @@ -0,0 +1,72 @@ +package net.tccn.dbq.jdbc; + + +import java.util.List; + +/** + * 数据库表. + * @author: liangxianyou at 2018/10/8 10:58. + */ +public class Table { + private String catalog; //库名称 + private String name; //表名称 + private String comment; //表备注 + private List columns; //表的字段列 + + public Table(String name, String comment) { + this.name = name; + this.comment = comment; + } + + //------------ getter/setter ------------- + + public String getCatalog() { + return catalog; + } + + public void setCatalog(String catalog) { + this.catalog = catalog; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } + + public List getColumns() { + return columns; + } + + public void setColumns(List columns) { + this.columns = columns; + } + + //------------------------------ + + //Dev + public String getTableDdl() { + StringBuilder buf = new StringBuilder(); + + buf.append("CREATE TABLE " + name + "("); + columns.forEach(x -> { + buf.append("\n " + x.getName() + " " + x.getType() + ","); + }); + + buf.deleteCharAt(buf.length() - 1); + buf.append("\n) COMMENT '" + comment + "';"); + return buf.toString(); + } + //---------- + +} diff --git a/src/main/java/net/tccn/dbq/qtask/Qtask.java b/src/main/java/net/tccn/dbq/qtask/Qtask.java new file mode 100644 index 0000000..abc586e --- /dev/null +++ b/src/main/java/net/tccn/dbq/qtask/Qtask.java @@ -0,0 +1,105 @@ +package net.tccn.dbq.qtask; + +import net.tccn.base.arango.Doc; + +import javax.persistence.Table; + +/** + * @author: liangxianyou at 2018/11/13 14:59. + */ +@Table(name = "qtask", catalog = "db_dev") +public class Qtask extends Doc { + public static Qtask dao = dao(Qtask.class); + + private String queryId; //查询id + private String name; //业务名称 + private String remark; //说明 + private String sql; //SQL + private String para; //默认查询参数 + private String cate; //任务类型 find|update + private Integer sysPlatId; //数据平台id + private Integer platId; //数据平台id + private String catalog; //数据库名 + private Integer status; //状态 1启用|0未启用|-1删除 + + //------------- setter/getter ------------------------ + public String getQueryId() { + return queryId; + } + + public void setQueryId(String queryId) { + this.queryId = queryId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getSql() { + return sql; + } + + public void setSql(String sql) { + this.sql = sql; + } + + public String getPara() { + return para; + } + + public void setPara(String para) { + this.para = para; + } + + public String getCate() { + return cate; + } + + public void setCate(String cate) { + this.cate = cate; + } + + public Integer getSysPlatId() { + return sysPlatId; + } + + public void setSysPlatId(Integer sysPlatId) { + this.sysPlatId = sysPlatId; + } + + public Integer getPlatId() { + return platId; + } + + public void setPlatId(Integer platId) { + this.platId = platId; + } + + public String getCatalog() { + return catalog; + } + + public void setCatalog(String catalog) { + this.catalog = catalog; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } +} diff --git a/src/main/java/net/tccn/dbq/qtask/SysPlat.java b/src/main/java/net/tccn/dbq/qtask/SysPlat.java new file mode 100644 index 0000000..655f8cb --- /dev/null +++ b/src/main/java/net/tccn/dbq/qtask/SysPlat.java @@ -0,0 +1,39 @@ +package net.tccn.dbq.qtask; + +import net.tccn.base.arango.Doc; + +import javax.persistence.Table; + +/** + * @author: liangxianyou at 2018/11/26 17:46. + */ +@Table(name = "sys_plat", catalog = "db_dev") +public class SysPlat extends Doc { + public static SysPlat dao = dao(SysPlat.class); + + private String name; + private String token; + + public SysPlat() { + } + + public SysPlat(String token) { + this.token = token; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getToken() { + return token; + } + + public void setToken(String token) { + this.token = token; + } +} diff --git a/src/main/java/net/tccn/meta/MetaKit.java b/src/main/java/net/tccn/meta/MetaKit.java new file mode 100644 index 0000000..9c4aabb --- /dev/null +++ b/src/main/java/net/tccn/meta/MetaKit.java @@ -0,0 +1,236 @@ +package net.tccn.meta; + +import net.tccn.base.Kv; +import net.tccn.dbq.DbPlat; +import net.tccn.dbq.Field; +import net.tccn.dbq.fbean.FilterType; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.function.BiFunction; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * + * Created by liangxianyou at 2019/1/7 13:31. + */ +public class MetaKit { + //基础数据缓存 + private static List metaTables; + private static List metaLinks; + private static List metaServices; + + private static List dbPlats; + + static { + metaTables = MetaTable.dao.find(); + metaLinks = MetaLink.dao.find(); + metaServices = MetaService.dao.find(); + + dbPlats = DbPlat.dao.find(); + } + + //----- get/set ---- + public static List getMetaTables() { + return metaTables; + } + + public static void setMetaTables(List metaTables) { + MetaKit.metaTables = metaTables; + } + + public static List getMetaLinks() { + return metaLinks; + } + + public static void setMetaLinks(List metaLinks) { + MetaKit.metaLinks = metaLinks; + } + + public static List getMetaServices() { + return metaServices; + } + + public static List getDbPlats() { + return dbPlats; + } + + public static void setDbPlats(List dbPlats) { + MetaKit.dbPlats = dbPlats; + } + + //----------------------------------- + public static void setMetaServices(List metaServices) { + MetaKit.metaServices = metaServices; + } + + /** + * 通过 别名 查询 MetaTable + * @param alias + * @return + */ + private static MetaTable metaTableByAlias(String alias) { + Optional table = metaTables.stream().filter(x -> x.getAlias().equals(alias)).findAny(); + return table.orElse(null); + } + + /** + * 通过 MetaLink[] 得到 MetaTable{} + * @param links + * @return {alias:table} + */ + private static Map metaTables(List links) { + Map map = new HashMap(); + List tables = links.stream().map(MetaLink::getTables).flatMap(Arrays::stream).distinct().collect(Collectors.toList());//tables + metaTables.stream().filter(x -> tables.contains(x.getAlias())).forEach(x -> { + map.put(x.getAlias(), x); + }); + return map; + } + + /** + * 通过 link._key 得到 MetaLink[] + * @param links + * @return + */ + private static List metaLinks(List links) { + if (links == null) { + return new ArrayList<>(); + } + return metaLinks.stream().filter(x -> links.contains(x.getKey())).collect(Collectors.toList()); + } + + /** + * 构建完整的 MetaService + * @param name + * @return + */ + public static MetaService metaService(String name) { + Optional service = metaServices.stream().filter(x -> x.getName().equals(name)).findAny(); + //处理业务逻辑 + service.ifPresent(x -> { + x.setMetaTable(metaTableByAlias(x.getTable())); + x.setMetaLinks(metaLinks(x.getLinks())); + x.setTables(metaTables(x.getMetaLinks())); + }); + return service.orElse(null); + } + + //字段特征排序 + public static BiFunction sortItem = (t, arr) -> { + List items = t.getItems(); + + //x 是跨越值 + a:for (int i = 0, x = 0; i < arr.length; i++) { + int inx = i - x; + + if (!items.get(inx).equals(arr[i])) { + Field tmp = items.get(inx); + for (int j = inx + 1; j < items.size(); j++) { + if (items.get(j).equals(arr[i])) { + items.set(inx, items.get(j)); + items.set(j, tmp); + continue a; + } + } + + //运行到这里,说明在 list 中找不到排序标识对应的数据, 让排序角标差值+1 + x ++; + } + } + t.setItems(items); + return t; + }; + + public static Function getField = (n) -> { + String[] arr = n.split("[.]"); + MetaTable metaTable = metaTableByAlias(arr[0]); + return metaTable.getItems().stream().filter(x -> x.getName().equals(arr[1])).findAny().orElse(null); + }; + + //listcfg + public static Function builderCfg = (m) -> { + List shows = m.getShows(); + List filters = m.getFilters(); + + List _filters = new ArrayList<>(); + List _cols = new ArrayList<>(); + + //todo: 优化,批量操作 + //build shows + shows.forEach(x -> { + Field field = getField.apply(x); + if (field != null) { + Kv col = Kv.of(); + col.set("col", x.split("[.]]")[0] + field.showField());//a.createtime=dt + col.set("label", field.getLabel()); + col.set("order", 1);//dev 是否支持排序 + _cols.add(col); + } + }); + + //build filters + filters.forEach(x -> { + Kv filter = Kv.of(); + Field filed = getField.apply(x.get("name") + ""); + + if (filed != null) { + filter.set("name", x.get("name")); + filter.set("label", filed.getLabel()); + } + + filter.set("inType", filed.getInType()); + filter.set("inExt", filed.getInExt()); + + List types = new ArrayList<>(); + List list = (List) x.get("filterType"); + list.forEach(t -> { + FilterType type = FilterType.getFilterType(t); + if (type != null) { + types.add(Kv.of("name", t).set("remark", type.getRemark())); + } + }); + + filter.set("filterType", types); + Object checked = x.getOrDefault("checked", false); + filter.set("checked", checked instanceof Boolean ? checked : false); + _filters.add(filter); + }); + + /*shows.forEach(x -> { + _shows.add(Kv.of("name", x).set("label", getFieldLabel(x))); + });*/ + + Kv cfg = Kv.of(); + cfg.set("title", m.getName())//业务名称 + //.set("url", getUrl()) + .set("cols", _cols)//展示的数据列 + //.set("conditionLabel", "") + .set("filters", _filters);//查询过滤条件 + + return cfg; + }; + + //itemUpdate + public static BiFunction, MetaTable> itemUpdate = (t, fields) -> { + List items = t.getItems(); + for (int i = 0; i < fields.size(); i++) { + for (int j = 0; j < items.size(); j++) { + if (items.get(j).equals(fields.get(i).getName())) { + items.set(j, fields.get(i)); + } + } + } + return t; + }; + + + public static MetaTable getMetaTableByKey(String key) { + return metaTables.stream().filter(x -> x.getKey().equals(key)).findAny().orElse(null); + }; +} diff --git a/src/main/java/net/tccn/meta/MetaLink.java b/src/main/java/net/tccn/meta/MetaLink.java new file mode 100644 index 0000000..c455d37 --- /dev/null +++ b/src/main/java/net/tccn/meta/MetaLink.java @@ -0,0 +1,35 @@ +package net.tccn.meta; + +import net.tccn.base.arango.Doc; + +import javax.persistence.Table; +import java.util.Map; + +/** + * Created by liangxianyou at 2018/12/25 16:22. + */ +@Table(name = "MetaLink", catalog = "db_demo") +public class MetaLink extends Doc { + public static MetaLink dao = Doc.dao(MetaLink.class); + + private String[] tables; + private Map link; + + //------------------------------------------- + + public String[] getTables() { + return tables; + } + + public void setTables(String[] tables) { + this.tables = tables; + } + + public Map getLink() { + return link; + } + + public void setLink(Map link) { + this.link = link; + } +} diff --git a/src/main/java/net/tccn/meta/MetaService.java b/src/main/java/net/tccn/meta/MetaService.java new file mode 100644 index 0000000..fcc458d --- /dev/null +++ b/src/main/java/net/tccn/meta/MetaService.java @@ -0,0 +1,103 @@ +package net.tccn.meta; + +import net.tccn.base.arango.Doc; + +import javax.persistence.Table; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * Created by liangxianyou at 2018/12/24 16:15. + */ +@Table(name = "MetaService", catalog = "db_demo") +public class MetaService extends Doc { + public static MetaService dao = Doc.dao(MetaService.class); + + private String name; //业务标识 + private String table; //主体表别名 + private List links; //["link._key1","link._key2"] + + + private List shows = new ArrayList<>(); + private List edits = new ArrayList<>(); + private List filters = new ArrayList<>(); + + //待组装数据 + private MetaTable metaTable; + private List metaLinks;//[{alias:"b", table:"dept", link:[mk,lk]}, xxxx] + private Map tables; + //------------------------------------------- + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getTable() { + return table; + } + + public void setTable(String table) { + this.table = table; + } + + public List getLinks() { + return links; + } + + public void setLinks(List links) { + this.links = links; + } + + public List getShows() { + return shows; + } + + public void setShows(List shows) { + this.shows = shows; + } + + public List getEdits() { + return edits; + } + + public void setEdits(List edits) { + this.edits = edits; + } + + public List getFilters() { + return filters; + } + + public void setFilters(List filters) { + this.filters = filters; + } + + public MetaTable getMetaTable() { + return metaTable; + } + + public void setMetaTable(MetaTable metaTable) { + this.metaTable = metaTable; + } + + public List getMetaLinks() { + return metaLinks; + } + + public void setMetaLinks(List metaLinks) { + this.metaLinks = metaLinks; + } + + public Map getTables() { + return tables; + } + + public void setTables(Map tables) { + this.tables = tables; + } +} diff --git a/src/main/java/net/tccn/meta/MetaTable.java b/src/main/java/net/tccn/meta/MetaTable.java new file mode 100644 index 0000000..b691663 --- /dev/null +++ b/src/main/java/net/tccn/meta/MetaTable.java @@ -0,0 +1,75 @@ +package net.tccn.meta; + +import net.tccn.base.arango.Doc; +import net.tccn.dbq.Field; + +import javax.persistence.Table; +import java.io.Serializable; +import java.util.List; + +/** + * 元数据 + * + * @author: liangxianyou at 2018/10/17 12:58. + */ +@Table(name = "MetaTable", catalog = "db_demo") +public class MetaTable extends Doc implements Serializable { + public static final MetaTable dao = MetaTable.dao(MetaTable.class); + + private String name; + private String alias; //表别名:全库唯一,程序自动生成 + private String comment; + private List items; + private String dbPlatId; //所属数据平台 + private String catalog; //所在database + + //=============== getter/setter ============ + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getAlias() { + return alias; + } + + public void setAlias(String alias) { + this.alias = alias; + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } + + public List getItems() { + return items; + } + + public void setItems(List items) { + this.items = items; + } + + public String getDbPlatId() { + return dbPlatId; + } + + public void setDbPlatId(String dbPlatId) { + this.dbPlatId = dbPlatId; + } + + public String getCatalog() { + return catalog; + } + + public void setCatalog(String catalog) { + this.catalog = catalog; + } +} diff --git a/qtask/src/main/java/net/tccn/E.java b/src/main/java/net/tccn/qtask/E.java similarity index 97% rename from qtask/src/main/java/net/tccn/E.java rename to src/main/java/net/tccn/qtask/E.java index 3f5bf1d..b76baad 100644 --- a/qtask/src/main/java/net/tccn/E.java +++ b/src/main/java/net/tccn/qtask/E.java @@ -1,4 +1,4 @@ -package net.tccn; +package net.tccn.qtask; import net.tccn.base.Kv; diff --git a/qtask/src/main/java/net/tccn/QRuner.java b/src/main/java/net/tccn/qtask/QRuner.java similarity index 60% rename from qtask/src/main/java/net/tccn/QRuner.java rename to src/main/java/net/tccn/qtask/QRuner.java index b254e7d..5b7be65 100644 --- a/qtask/src/main/java/net/tccn/QRuner.java +++ b/src/main/java/net/tccn/qtask/QRuner.java @@ -1,8 +1,9 @@ -package net.tccn; +package net.tccn.qtask; -import net.tccn.qtask.QTaskHttp; -import net.tccn.qtask.QTaskMethod; -import net.tccn.qtask.QTaskMysql; +import net.tccn.qtask.impl.QTaskEs; +import net.tccn.qtask.impl.QTaskHttp; +import net.tccn.qtask.impl.QTaskMethod; +import net.tccn.qtask.impl.QTaskMysql; public class QRuner { @@ -14,6 +15,8 @@ public class QRuner { return new QTaskMethod(e).execute(); case "http": return new QTaskHttp(e).execute(); + case "es": + return new QTaskEs(e).execute(); } return null; } diff --git a/qtask/src/main/java/net/tccn/qtask/QTask.java b/src/main/java/net/tccn/qtask/QTask.java similarity index 81% rename from qtask/src/main/java/net/tccn/qtask/QTask.java rename to src/main/java/net/tccn/qtask/QTask.java index 6109236..c80dc65 100644 --- a/qtask/src/main/java/net/tccn/qtask/QTask.java +++ b/src/main/java/net/tccn/qtask/QTask.java @@ -1,7 +1,5 @@ package net.tccn.qtask; -import net.tccn.E; - public interface QTask { E getE(); diff --git a/qtask/src/main/java/net/tccn/qtask/QTaskAbs.java b/src/main/java/net/tccn/qtask/impl/QTaskAbs.java similarity index 69% rename from qtask/src/main/java/net/tccn/qtask/QTaskAbs.java rename to src/main/java/net/tccn/qtask/impl/QTaskAbs.java index b228c4a..3d0dafa 100644 --- a/qtask/src/main/java/net/tccn/qtask/QTaskAbs.java +++ b/src/main/java/net/tccn/qtask/impl/QTaskAbs.java @@ -1,6 +1,7 @@ -package net.tccn.qtask; +package net.tccn.qtask.impl; -import net.tccn.E; +import net.tccn.qtask.E; +import net.tccn.qtask.QTask; public abstract class QTaskAbs implements QTask { diff --git a/src/main/java/net/tccn/qtask/impl/QTaskEs.java b/src/main/java/net/tccn/qtask/impl/QTaskEs.java new file mode 100644 index 0000000..61d652f --- /dev/null +++ b/src/main/java/net/tccn/qtask/impl/QTaskEs.java @@ -0,0 +1,24 @@ +package net.tccn.qtask.impl; + +import net.tccn.qtask.E; +import net.tccn.qtask.QRuner; +import net.tccn.base.Kv; + +public class QTaskEs extends QTaskAbs { + + public QTaskEs(E e) { + super(e); + } + + @Override + public Object execute() { + StringBuilder url = new StringBuilder(getE().queryId); + if (!url.toString().contains("?")) url.append("?"); + getE().para.forEach((k, v) -> { + url.append("&" + k + "=" + v); + }); + + String _url = url.toString().replaceAll(" ", "%20"); + return QRuner.query(new E("http", _url, "", Kv.of())); + } +} diff --git a/qtask/src/main/java/net/tccn/qtask/QTaskHttp.java b/src/main/java/net/tccn/qtask/impl/QTaskHttp.java similarity index 63% rename from qtask/src/main/java/net/tccn/qtask/QTaskHttp.java rename to src/main/java/net/tccn/qtask/impl/QTaskHttp.java index 419ffb5..4f85944 100644 --- a/qtask/src/main/java/net/tccn/qtask/QTaskHttp.java +++ b/src/main/java/net/tccn/qtask/impl/QTaskHttp.java @@ -1,9 +1,12 @@ -package net.tccn.qtask; +package net.tccn.qtask.impl; -import net.tccn.E; +import net.tccn.qtask.E; +import net.tccn.qtask.QTask; import java.io.*; import java.net.*; +import java.util.HashMap; +import java.util.Map; /** * @author: liangxianyou at 2019/1/20 11:07. @@ -14,11 +17,12 @@ public class QTaskHttp extends QTaskAbs implements QTask { super(e); } + private static Map connetions = new HashMap(); + private URLConnection getConnection() { try { URI uri = URI.create(getE().queryId); URL url = uri.toURL(); - HttpURLConnection connection = (HttpURLConnection) url.openConnection(); StringBuilder content = new StringBuilder(); @@ -29,14 +33,18 @@ public class QTaskHttp extends QTaskAbs implements QTask { content.deleteCharAt(content.length() - 1); } - connection.setDoOutput(true); - connection.setRequestMethod("POST"); + connection.setRequestMethod("GET"); connection.setRequestProperty("Accept-Charset", "utf-8"); + //connection.setRequestProperty("Connection", "Keep-Alive"); connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); - connection.setRequestProperty("Content-Length", String.valueOf(content.length())); - connection.getOutputStream().write(content.toString().getBytes()); + String encode = content.toString().replaceAll(" ", "%20"); + System.out.println(encode); + //connection.setRequestProperty("Content-Length", String.valueOf(content.length())); + //connection.getOutputStream().write(encode.getBytes()); + + connetions.put(getE().queryId, connection); return connection; } catch (MalformedURLException e) { e.printStackTrace(); @@ -49,10 +57,11 @@ public class QTaskHttp extends QTaskAbs implements QTask { @Override public Object execute() { + URLConnection connection = getConnection(); try ( - InputStream is = getConnection().getInputStream(); - InputStreamReader reader = new InputStreamReader(is); - BufferedReader br = new BufferedReader(reader); + InputStream is = connection.getInputStream(); + InputStreamReader reader = new InputStreamReader(is); + BufferedReader br = new BufferedReader(reader); ){ String content = ""; @@ -65,6 +74,8 @@ public class QTaskHttp extends QTaskAbs implements QTask { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); + } finally { + } return null; } diff --git a/qtask/src/main/java/net/tccn/qtask/QTaskMethod.java b/src/main/java/net/tccn/qtask/impl/QTaskMethod.java similarity index 94% rename from qtask/src/main/java/net/tccn/qtask/QTaskMethod.java rename to src/main/java/net/tccn/qtask/impl/QTaskMethod.java index 59fb8ef..c5c74b7 100644 --- a/qtask/src/main/java/net/tccn/qtask/QTaskMethod.java +++ b/src/main/java/net/tccn/qtask/impl/QTaskMethod.java @@ -1,7 +1,8 @@ -package net.tccn.qtask; +package net.tccn.qtask.impl; -import net.tccn.E; +import net.tccn.qtask.E; import net.tccn.base.Kv; +import net.tccn.qtask.QTask; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; diff --git a/qtask/src/main/java/net/tccn/qtask/QTaskMysql.java b/src/main/java/net/tccn/qtask/impl/QTaskMysql.java similarity index 88% rename from qtask/src/main/java/net/tccn/qtask/QTaskMysql.java rename to src/main/java/net/tccn/qtask/impl/QTaskMysql.java index 1b20718..f2a358e 100644 --- a/qtask/src/main/java/net/tccn/qtask/QTaskMysql.java +++ b/src/main/java/net/tccn/qtask/impl/QTaskMysql.java @@ -1,6 +1,7 @@ -package net.tccn.qtask; +package net.tccn.qtask.impl; -import net.tccn.E; +import net.tccn.qtask.E; +import net.tccn.qtask.QTask; public class QTaskMysql extends QTaskAbs implements QTask { diff --git a/src/main/java/net/tccn/service/BaseService.java b/src/main/java/net/tccn/service/BaseService.java new file mode 100644 index 0000000..76ba392 --- /dev/null +++ b/src/main/java/net/tccn/service/BaseService.java @@ -0,0 +1,88 @@ +package net.tccn.service; + +import com.arangodb.Predicate; +import com.google.gson.Gson; +import org.redkale.net.http.RestMapping; +import org.redkale.service.Service; +import org.redkale.source.CacheSource; +import org.redkale.util.AnyValue; + +import javax.annotation.Resource; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import java.util.function.Supplier; +import java.util.logging.Logger; + +/** + * @author: liangxianyou at 2018/10/22 11:49. + */ +public class BaseService implements Service { + + public static Gson gson = new Gson(); + public Logger logger = Logger.getLogger(this.getClass().getSimpleName()); + + public static Predicate isEmpty = (x) -> { + if (x == null) + return true; + if (x instanceof List) + return ((List) x).isEmpty(); + if (x instanceof String) + return ((String) x).isEmpty(); + if (x instanceof Map) + return ((Map) x).isEmpty(); + if (x instanceof Collection) + return ((Collection) x).isEmpty(); + return false; + }; + + public static boolean isWinos = System.getProperty("os.name").contains("Window"); + + @Resource(name = "cacheSource") + protected CacheSource cacheSource; + + @Resource(name = "APP_HOME") + protected File APP_HOME; + + public static Properties prop = new Properties(); + + @Override + public void init(AnyValue config) { + try { + File file = new File(APP_HOME.toPath() + "/conf/config.txt"); + if (file.exists()) { + prop.load(new FileInputStream(file)); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + @RestMapping(ignore = true) + public T getT(String key, Class clazz, Supplier supplier) { + Object obj = cacheSource.getAndRefresh(key, 1000 * 60 * 3, clazz); + if (obj != null) { + return (T) obj; + } + + T t = supplier.get(); + if (t != null) { + cacheSource.set(1000 * 60 * 3, key, clazz, t); + } + return t; + } + + @RestMapping(ignore = true) + public String getProperty(String k, String defaultValue){ + return prop.getProperty(k, defaultValue).replace("${APP_HOME}", APP_HOME.getPath()); + } + @RestMapping(ignore = true) + public String getProperty(String k){ + return prop.getProperty(k); + } + +} diff --git a/src/main/java/net/tccn/service/BaseServlet.java b/src/main/java/net/tccn/service/BaseServlet.java new file mode 100644 index 0000000..8566fc7 --- /dev/null +++ b/src/main/java/net/tccn/service/BaseServlet.java @@ -0,0 +1,79 @@ +package net.tccn.service; + +import com.arangodb.ArangoDBException; +import com.google.gson.Gson; +import net.tccn.base.Kv; +import net.tccn.base.arango.ArangoSource; +import org.redkale.net.http.HttpRequest; +import org.redkale.net.http.HttpResponse; +import org.redkale.net.http.HttpServlet; + +import java.io.IOException; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * @author: liangxianyou at 2018/11/8 17:05. + */ +public class BaseServlet extends HttpServlet { + + public Logger logger = Logger.getLogger(this.getClass().getSimpleName()); + protected static Gson gson = new Gson(); + + @Override + protected void preExecute(HttpRequest request, HttpResponse response) throws IOException { + String sessionid = request.getParameter("token"); + if (sessionid == null) { + sessionid = request.getHeader("token"); + } + if (sessionid == null) { + sessionid = request.getSessionid(true); + } + + if (sessionid != null) { + //User user = userService.current(sessionid); + //request.setCurrentUser(user); + } + + super.preExecute(request, response); + } + + @Override + protected void authenticate(HttpRequest request, HttpResponse response) throws IOException { + /* fixme: 权限拦截 + if (request.currentUser() == null) { + if ("XMLHttpRequest".equals(request.getHeader("X-Requested-With"))){ + response.finish(JBean.by(-2, "未登陆")); + }else { + response.finish(HttpScope.refer("/user/login.html")); + } + return; + }*/ + super.authenticate(request, response); + } + + @Override + public void execute(HttpRequest request, HttpResponse response) throws IOException { + try { + super.execute(request, response); + } catch (ArangoDBException e) { + logger.log(Level.INFO, "arangodb init!", e); + ArangoSource.init(); + } + } + + public Kv getParams(HttpRequest request, String... key) { + Kv kv = Kv.of(); + for (String k : key) { + if (k.contains("=")) { //如果没有值使用默认值 + kv.put(k.split("=")[0], request.getParameter(k.split("=")[0], k.split("=")[1])); + continue; + } else if (k.contains("<")) { //强制使用"<"右侧的值 + kv.put(k.split("<")[0], k.split("<")[1]); + continue; + } + kv.put(k, request.getParameter(k)); + } + return kv; + } +} diff --git a/src/main/java/net/tccn/service/MetadataService.java b/src/main/java/net/tccn/service/MetadataService.java new file mode 100644 index 0000000..3b531c2 --- /dev/null +++ b/src/main/java/net/tccn/service/MetadataService.java @@ -0,0 +1,181 @@ +package net.tccn.service; + +import net.tccn.base.JBean; +import net.tccn.base.Kv; +import net.tccn.dbq.DbPlat; +import net.tccn.dbq.Field; +import net.tccn.dbq.qtask.SysPlat; +import net.tccn.meta.MetaKit; +import net.tccn.meta.MetaService; +import net.tccn.meta.MetaTable; +import org.redkale.net.http.RestMapping; +import org.redkale.net.http.RestParam; +import org.redkale.net.http.RestService; + +import javax.annotation.Resource; +import java.util.Comparator; +import java.util.List; +import java.util.logging.Level; +import java.util.stream.Collectors; + +/** + * @author: liangxianyou at 2018/10/17 16:59. + */ +@RestService(name = "meta", automapping = true, comment = "元数据服务") +public class MetadataService extends BaseService { //arango + + @Resource + private QtaskService qtaskService; + + + public MetaTable findMetaTable(String name, String token) { + return getT("meta_cols_" + name + token, MetaTable.class, () -> { + SysPlat sysPlat = qtaskService.getSysPlat(token); + if (sysPlat == null) { + logger.log(Level.INFO, "平台信息未知"); + throw new IllegalArgumentException("平台信息未知"); + } + + return MetaKit.getMetaTables() + .stream() + .filter(x -> { + //fixme: 平台过滤 + return x.getName().equals(name); + }) + .findAny() + .get(); + }); + } + + @RestMapping(name = "list_cfg", auth = false, comment = "内容列表配置") + public JBean listCfg(String key, @RestParam(name = "platToken") String token) { + JBean jBean = JBean.by(0, ""); + + MetaService metaService = MetaKit.metaService(key); + fixme: jBean.set(0, "", MetaKit.builderCfg.apply(metaService)); + return jBean; + } + + //----------- 数据平台 --------------- + @RestMapping(name = "db_plat_list", comment = "数据平台") + public List dbPlatList() { + return MetaKit.getDbPlats(); + } + + + + + //----------- 元数据管理 --------------- + @RestMapping(name = "tablelist", comment = "table列表") + public JBean tableList(@RestParam(name = "platToken") String token, + String catalog, + String dbPlatId, + String name) { + JBean jBean = JBean.by(0, ""); + SysPlat sysPlat = qtaskService.getSysPlat(token); + if (sysPlat == null) { + return jBean.set(-1, "平台信息未知"); + } + + List list = MetaKit.getMetaTables() + .stream() + .filter(x -> { + return (isEmpty.test(catalog) || catalog.equals(x.getCatalog())) && + (isEmpty.test(dbPlatId) || dbPlatId.equals(x.getDbPlatId())) && + (isEmpty.test(name) || x.getName().contains(name)); + }) + .sorted(Comparator.comparing(MetaTable::getName)) + .map(x -> { + //组装返回的数据 + Kv kv = Kv.of("name", x.getName()) + .set("comment", x.getComment()) + .set("catalog", x.getCatalog()); + MetaKit.getDbPlats().stream().filter(d -> d.getKey().equals(x.getDbPlatId())).findAny().ifPresent(d -> kv.set("dbPlatName", d.getName())); + return kv; + }) + .collect(Collectors.toList()); + + return jBean.setBody(list); + } + + @RestMapping(name = "tableinfo", comment = "table详情") + public JBean tableInfo(@RestParam(name = "platToken") String token, String name) { + return JBean.by(0, "", findMetaTable(name, token)); + } + + //修改item的排序 + @RestMapping(name = "itemsort", comment = "字段排序") + public String[] itemSortSave(String serviceKey , String[] items, @RestParam(name = "platToken") String token) { + + MetaTable metaTable = findMetaTable(serviceKey, token); + MetaKit.sortItem.apply(metaTable, items); + metaTable.update(); + return items; + } + + @RestMapping(name = "itemupdate", comment = "字段修改") + public List itemUpdate(String serviceKey , List items, @RestParam(name = "platToken") String token) { + MetaTable metaTable = findMetaTable(serviceKey, token); + + MetaKit.itemUpdate.apply(metaTable, items); + metaTable.update(); + return items; + } + + @RestMapping(name = "showsort", comment = "展示字段修改") + public List showSort(String serviceKey , List items, @RestParam(name = "platToken") String token) { + if (items == null || items.size() == 0) return null; + + MetaTable metaTable = findMetaTable(serviceKey, token); + //fixme: metaTable.setShows(items); + metaTable.update(); + return items; + } + + @RestMapping(name = "exportsort", comment = "导出字段排序保存") + public List exportSort(String serviceKey , List items, @RestParam(name = "platToken") String token) { + if (items == null || items.size() == 0) return null; + + MetaTable metaTable = findMetaTable(serviceKey, token); + //fixme: metaTable.setExports(items); + metaTable.update(); + return items; + } + + @RestMapping(name = "importsort", comment = "导入字段保存") + public List importSort(String serviceKey , List items, @RestParam(name = "platToken") String token) { + if (isEmpty.test(items)) return null; + + MetaTable metaTable = findMetaTable(serviceKey, token); + //fixme: metaTable.setImports(items); + metaTable.update(); + return items; + } + + @RestMapping(name = "dbplatupdate", comment = "数据平台修改") + public JBean dbPlatUpdate(MetaTable metaTable, @RestParam(name = "platToken") String token) { + + MetaTable _metaTable = MetaKit.getMetaTableByKey(metaTable.getKey()); + _metaTable.setComment(metaTable.getComment()); + _metaTable.setCatalog(metaTable.getCatalog()); + _metaTable.setDbPlatId(metaTable.getDbPlatId()); + _metaTable.setCatalog(metaTable.getCatalog()); + + _metaTable.update(); + return JBean.by(0, ""); + } + + @RestMapping(name = "filter_update", comment = "查询配置修改") + public JBean filterUpdate(@RestParam(name = "serviceKey") String serviceKey, + @RestParam(name = "filters") String filters, + @RestParam(name = "platToken") String token) { + List _filters = gson.fromJson(filters, List.class); + MetaTable metaTable = findMetaTable(serviceKey, token); + + //fixme: metaTable.setFilters(_filters); + metaTable.update(); + + return JBean.by(0, ""); + } + +} diff --git a/src/main/java/net/tccn/service/QtaskService.java b/src/main/java/net/tccn/service/QtaskService.java new file mode 100644 index 0000000..c4dc378 --- /dev/null +++ b/src/main/java/net/tccn/service/QtaskService.java @@ -0,0 +1,122 @@ +package net.tccn.service; + +import net.tccn.base.JBean; +import net.tccn.base.Kv; +import net.tccn.base.arango.ArangoSource; +import net.tccn.dbq.DbPlat; +import net.tccn.dbq.qtask.Qtask; +import net.tccn.dbq.qtask.SysPlat; +import org.redkale.net.http.RestMapping; +import org.redkale.net.http.RestParam; +import org.redkale.net.http.RestService; + +import javax.annotation.Resource; +import java.sql.SQLException; +import java.util.function.Predicate; + +/** + * @author: liangxianyou at 2018/11/13 18:14. + */ +@RestService(name = "qtask", automapping = true, comment = "qtask查询服务") +public class QtaskService extends BaseService { + + private Predicate checkObj = (s) -> s != null && s.startsWith("{") && s.endsWith("}"); + + public SysPlat getSysPlat(String token) { + return getT(token, SysPlat.class, () -> SysPlat.dao.findFirst(new SysPlat(token))); + } + + ///qtask/query?queryId=platform.list¶={id:211} + @RestMapping(name = "call", comment = "qtask查询") + public JBean call(String queryId, String para, @RestParam(name = "platToken") String token) { + JBean jBean = JBean.by(0, ""); + do { + SysPlat sysPlat = getSysPlat(token); + if (sysPlat == null) { + jBean.set(-1, "平台信息未知"); break; + } + + Qtask qtask = getQTask(queryId, sysPlat.getKey()); + if (qtask == null) { + jBean.set(-1, "未知任务"); break; + } + + if (!checkObj.test(para)) { + para = qtask.getPara(); + } + Kv kv = null; + if (checkObj.test(para)) { + kv = BaseService.gson.fromJson(para, Kv.class); + } + try { + jBean.setBody(run(qtask, kv)); + } catch (SQLException e) { + e.printStackTrace(); + return jBean.set(-1, "数据查询失败", e.getMessage()); + } + } while (false); + return jBean; + } + + + @RestMapping(name = "test", comment = "qtask调试") + public JBean test(Qtask qtask) { + JBean jBean = JBean.by(0, ""); + do { + //check data + if (isEmpty.test(qtask.getSql())) { + jBean.set(-1, "查询失败,请设置正确的【SQL】"); break; + } + if (isEmpty.test(qtask.getPlatId()) || isEmpty.test(qtask.getCatalog())) { + jBean.set(-1, "查询失败,请设置正确的【数据平台】"); break; + } + + DbPlat dbPlat = DbPlat.dao.findByKey(qtask.getPlatId());//arangoSource.findById("db_plat/" + qTask.getPlatId(), DbPlat.class); + if (dbPlat == null) { + jBean.set(-1, "查询失败,请设置正确的【数据平台】"); break; + } + Kv kv = null; + if (checkObj.test(qtask.getPara())) { + try { + kv = BaseService.gson.fromJson(qtask.getPara(), Kv.class); + } catch (Exception e) { + jBean.set(-1, "查询失败,请设置正确的【查询参数】"); break; + } + } + + try { + jBean.setBody(run(qtask, kv)); + } catch (SQLException e) { + e.printStackTrace(); + jBean.set(-1, e.getMessage()); + } + } while (false); + return jBean; + } + + // /qtask/query?queryId=platform.list¶={id:211} + @RestMapping(ignore = true, comment = "qtask查询数据") + private Object run(Qtask qTask, Kv kv) throws SQLException { + + + return null; + } + + //----------- Qtask --------------- + + @RestMapping(name = "qsave", comment = "qtask保存") + public JBean qtaskSave(Qtask qtask) { + JBean jBean = JBean.by(0, ""); + + return jBean; + } + + @RestMapping(ignore = true, comment = "qtask获取") + public Qtask getQTask(String queryId, String sysPlatId) { + Qtask qtask = null; + + return qtask; + } + + //------------------------------------------------------- +} diff --git a/qtask/src/test/java/RunTest.java b/src/test/java/RunTest.java similarity index 62% rename from qtask/src/test/java/RunTest.java rename to src/test/java/RunTest.java index a303465..469ce02 100644 --- a/qtask/src/test/java/RunTest.java +++ b/src/test/java/RunTest.java @@ -1,21 +1,23 @@ -import net.tccn.E; -import net.tccn.QRuner; +import net.tccn.qtask.E; +import net.tccn.qtask.QRuner; import net.tccn.base.Kv; import org.junit.Test; /** * @author: liangxianyou at 2019/1/20 12:43. */ -public class RunTest { +public class RunTest { public static E A = new E("mysql", "select * from user where userid=#(userid)", "查询用户列表", Kv.of("userid", 1)); public static E B = new E("method", "User.say", "user调用", Kv.of("name", "张三").set("age", 13)); public static E C = new E("http", "http://127.0.0.1/meta/db_plat_list?platToken=3421432", "查询数据平台列表", Kv.of("abx", "abx111")); + public static E d = new E("es", "http://192.168.91.5:9200/_sql?", "查询数据平台列表", Kv.of("sql", "select * from basic_iotdevice_all limit 10")); + public static E e = new E("http", "http://192.168.91.5:9200/_sql?sql=select%20*%20from%20basic_iotdevice_all%20limit%2010", "查询数据平台列表", Kv.of()); - @Test + //@Test public void t() { long start = System.currentTimeMillis(); - Object query = QRuner.query(C); + Object query = QRuner.query(d); System.out.printf("耗时:%s MS" ,System.currentTimeMillis() - start); System.out.println(); diff --git a/qtask/src/test/java/User.java b/src/test/java/User.java similarity index 51% rename from qtask/src/test/java/User.java rename to src/test/java/User.java index a5f2356..cbb2a2d 100644 --- a/qtask/src/test/java/User.java +++ b/src/test/java/User.java @@ -4,6 +4,24 @@ import net.tccn.base.Kv; * @author: liangxianyou at 2019/1/20 12:52. */ public class User { + private int id; + private String IP; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getIP() { + return IP; + } + + public void setIP(String IP) { + this.IP = IP; + } public String say(Kv kv) { String s = String.format("我叫:%s, 今年:%s岁", kv.get("name"), kv.get("age"));